Skip to content

Instantly share code, notes, and snippets.

@Leask
Last active December 16, 2015 05:09
Show Gist options
  • Save Leask/5382258 to your computer and use it in GitHub Desktop.
Save Leask/5382258 to your computer and use it in GitHub Desktop.
Pac Binary Search
var list = [
// [2130706433, 4278190080],
// [167772160, 4278190080],
// [2886729728, 4293918720],
// [3232235520, 4294901760],
[16777216, 4294901760],
[16842752, 4294901760],
[16908288, 4294901760],
[16973824, 4294901760],
[17039360, 4294901760],
[17301504, 4294901760],
[17432576, 4294901760],
[17563648, 4294705152],
[18350080, 4294443008],
[19726336, 4294901760],
[19922944, 4294836224],
[20054016, 4294901760],
[20119552, 4294901760],
[20447232, 4294443008],
[21233664, 4294705152],
[22020096, 4294443008],
[22544384, 4294705152],
[22806528, 4294836224],
[22937600, 4294836224],
[24379392, 4294705152],
[28573696, 4294705152],
[28835840, 4294836224],
[29097984, 4294705152],
[29360128, 4294443008],
[30015488, 4294836224],
[30146560, 4294705152],
[234881024, 4294901760],
[234946560, 4294901760],
[235929600, 4293918720],
[241565696, 4294901760],
[241631232, 4294901760],
[241696768, 4294443008],
[242221056, 4293918720],
[243400704, 4294836224],
[243662848, 4294836224],
[244318208, 4293918720],
[247463936, 4294901760],
[247726080, 4294836224],
[248250368, 4294836224],
[248512512, 4293918720],
[453509120, 4294443008],
[454033408, 4293918720],
[455213056, 4294901760],
[455344128, 4294705152],
[455606272, 4294443008],
[456261632, 4294901760],
[456523776, 4294901760],
[459407360, 4294901760],
[459472896, 4294901760],
[459735040, 4294901760],
[459931648, 4294901760],
[460128256, 4294901760],
[460324864, 4294901760],
[460390400, 4294901760],
[460521472, 4294901760],
[460587008, 4294901760],
[460914688, 4294901760],
[461373440, 4294836224],
[461570048, 4294901760],
[462422016, 4294901760],
[462684160, 4294705152],
[462946304, 4294443008],
[465043456, 4294443008],
[465567744, 4292870144],
[467664896, 4294705152],
[603979776, 4294901760],
[604045312, 4294901760],
[604241920, 4294705152],
[605028352, 4293918720],
[606076928, 4294705152],
[606339072, 4294901760],
[606404608, 4294901760],
[606601216, 4294443008],
[607125504, 4294836224],
[607322112, 4294901760],
[607649792, 4294443008],
[610271232, 4292870144],
[612368384, 4290772992],
[616562688, 4292870144],
[620232704, 4294705152],
[620625920, 4294901760],
[654311424, 4294901760],
[658505728, 4292870144],
[662700032, 4290772992],
[704643072, 4294901760],
[704708608, 4294901760],
[704905216, 4294705152],
[707788800, 4294836224],
[707919872, 4294901760],
[707985408, 4294901760],
[708050944, 4294705152],
[708313088, 4294705152],
[708706304, 4294901760],
[708771840, 4294901760],
[709885952, 4294836224],
[710082560, 4294901760],
[710148096, 4294705152],
[710410240, 4294443008],
[710934528, 4294901760],
[711000064, 4294901760],
[711131136, 4294901760],
[711196672, 4294705152],
[712507392, 4294836224],
[712638464, 4294901760],
[712704000, 4294901760],
[713031680, 4293918720],
[714866688, 4294901760],
[714932224, 4294901760],
[714997760, 4294836224],
[715128832, 4293918720],
[716177408, 4294443008],
[716701696, 4294836224],
[716832768, 4294901760],
[716898304, 4294901760],
[717225984, 4294836224],
[717357056, 4294901760],
[717422592, 4294901760],
[717488128, 4294705152],
[717815808, 4294901760],
[717881344, 4294836224],
[718012416, 4294705152],
[718274560, 4293918720],
[719323136, 4293918720],
[720371712, 4294901760],
[720502784, 4294836224],
[720633856, 4294705152],
[720896000, 4294443008],
[822345728, 4294705152],
[825425920, 4294901760],
[825491456, 4294705152],
[826277888, 4292870144],
[829423616, 4294443008],
[829947904, 4294705152],
[830472192, 4294901760],
[831258624, 4294836224],
[832045056, 4294705152],
[835715072, 4294836224],
[835846144, 4294836224],
[836501504, 4294705152],
[837287936, 4294705152],
[837746688, 4294901760],
[838205440, 4294901760],
[973996032, 4294836224],
[974127104, 4294901760],
[974192640, 4294901760],
[974258176, 4294901760],
[974323712, 4294901760],
[974389248, 4294901760],
[974454784, 4294901760],
[974520320, 4294836224],
[974651392, 4294836224],
[975044608, 4294836224],
[975175680, 4294443008],
[975699968, 4294836224],
[975831040, 4294901760],
[975896576, 4294901760],
[975962112, 4294705152],
[976224256, 4294443008],
[976748544, 4294836224],
[976879616, 4294901760],
[976945152, 4294901760],
[977010688, 4294705152],
[977338368, 4294901760],
[977403904, 4294836224],
[977534976, 4294901760],
[978452480, 4294901760],
[978518016, 4294901760],
[978780160, 4294901760],
[979566592, 4294901760],
[979632128, 4294836224],
[980680704, 4294705152],
[981467136, 4294443008],
[982515712, 4294901760],
[983171072, 4294836224],
[985661440, 4294836224],
[985792512, 4294836224],
[985923584, 4294836224],
[986054656, 4294836224],
[986185728, 4294443008],
[986710016, 4293918720],
[988807168, 4294836224],
[988938240, 4294836224],
[989069312, 4294836224],
[989200384, 4294836224],
[989331456, 4294443008],
[991952896, 4294443008],
[992477184, 4294836224],
[992608256, 4294901760],
[992673792, 4294901760],
[992739328, 4294705152],
[993001472, 4294901760],
[993067008, 4294901760],
[993132544, 4294901760],
[993198080, 4294901760],
[993263616, 4294705152],
[993525760, 4294705152],
[993787904, 4294836224],
[993918976, 4294836224],
[994050048, 4294705152],
[994312192, 4294705152],
[994574336, 4294836224],
[994705408, 4294836224],
[994836480, 4294901760],
[994902016, 4294901760],
[994967552, 4294836224],
[995098624, 4294705152],
[996868096, 4294901760],
[996933632, 4294836224],
[997064704, 4294836224],
[999751680, 4294901760],
[1000013824, 4294901760],
[1001127936, 4294836224],
[1001259008, 4294836224],
[1002373120, 4294901760],
[1002438656, 4290772992],
[1006632960, 4294443008],
[1007157248, 4294836224],
[1007288320, 4294901760],
[1007353856, 4294901760],
[1007419392, 4294901760],
[1007484928, 4294901760],
[1007550464, 4294836224],
[1007681536, 4294443008],
[1008205824, 4294705152],
[1008467968, 4294836224],
[1008599040, 4294901760],
[1008664576, 4294901760],
[1010237440, 4294901760],
[1010761728, 4294901760],
[1017118720, 4294836224],
[1017249792, 4294836224],
[1017380864, 4294836224],
[1017511936, 4294836224],
[1017643008, 4294443008],
[1018167296, 4293918720],
[1019346944, 4294836224],
[1019740160, 4294705152],
[1020002304, 4294901760],
[1020067840, 4294901760],
[1020133376, 4294836224],
[1020264448, 4294443008],
[1020788736, 4294836224],
[1020919808, 4294836224],
[1021050880, 4294705152],
[1021837312, 4294836224],
[1022033920, 4294901760],
[1022689280, 4294901760],
[1022820352, 4294901760],
[1023148032, 4294901760],
[1023213568, 4294901760],
[1023344640, 4294901760],
[1023672320, 4294901760],
[1023934464, 4294901760],
[1025245184, 4294901760],
[1025310720, 4294901760],
[1026359296, 4294901760],
[1026490368, 4294901760],
[1026555904, 4294705152],
[1026818048, 4294836224],
[1026949120, 4294901760],
[1027014656, 4294901760],
[1029111808, 4294901760],
[1031798784, 4294836224],
[1031929856, 4294836224],
[1032060928, 4294901760],
[1032126464, 4294901760],
[1032192000, 4294901760],
[1032257536, 4294901760],
[1032323072, 4294901760],
[1032388608, 4294901760],
[1032454144, 4294901760],
[1032519680, 4294901760],
[1032585216, 4294705152],
[1032847360, 4294705152],
[1033109504, 4294836224],
[1033240576, 4294836224],
[1033371648, 4294901760],
[1033437184, 4294901760],
[1033502720, 4294836224],
[1033633792, 4294901760],
[1033699328, 4294901760],
[1033764864, 4294901760],
[1033830400, 4294901760],
[1033895936, 4294901760],
[1033961472, 4294901760],
[1034027008, 4294901760],
[1034092544, 4294901760],
[1034158080, 4294901760],
[1034223616, 4294901760],
[1034289152, 4294901760],
[1034354688, 4294901760],
[1034420224, 4294901760],
[1034485760, 4294901760],
[1034551296, 4294836224],
[1034682368, 4294705152],
[1034944512, 4294901760],
[1035010048, 4294901760],
[1035075584, 4294901760],
[1035141120, 4294901760],
[1035206656, 4294901760],
[1035272192, 4294901760],
[1035337728, 4294901760],
[1035403264, 4294901760],
[1035468800, 4294705152],
[1035730944, 4294901760],
[1035796480, 4294901760],
[1035862016, 4294836224],
[1038614528, 4294705152],
[1038876672, 4294836224],
[1039138816, 4294705152],
[1694498816, 4294901760],
[1694564352, 4294901760],
[1694629888, 4294901760],
[1694760960, 4294705152],
[1695547392, 4293918720],
[1696595968, 4293918720],
[1697644544, 4294836224],
[1697775616, 4294901760],
[1697906688, 4294901760],
[1697972224, 4294901760],
[1698037760, 4294901760],
[1698103296, 4294901760],
[1698693120, 4294443008],
[1699217408, 4294705152],
[1699479552, 4294836224],
[1699610624, 4294901760],
[1699741696, 4293918720],
[1700790272, 4294901760],
[1700986880, 4294901760],
[1701117952, 4294901760],
[1701183488, 4294901760],
[1701314560, 4294705152],
[1701707776, 4294901760],
[1702363136, 4294705152],
[1702625280, 4294836224],
[1702756352, 4294901760],
[1702887424, 4294901760],
[1702952960, 4294901760],
[1703018496, 4294836224],
[1703149568, 4294705152],
[1703936000, 4293918720],
[1707081728, 4294705152],
[1707343872, 4294705152],
[1707606016, 4294836224],
[1707802624, 4294901760],
[1707868160, 4294705152],
[1709178880, 4294443008],
[1709703168, 4294836224],
[1709834240, 4294901760],
[1709965312, 4294705152],
[1710227456, 4294705152],
[1710489600, 4294705152],
[1710751744, 4294836224],
[1710948352, 4294901760],
[1711013888, 4294836224],
[1711144960, 4294901760],
[1728118784, 4294901760],
[1728184320, 4294901760],
[1728249856, 4294901760],
[1728315392, 4294901760],
[1728380928, 4294901760],
[1728446464, 4294901760],
[1728512000, 4294901760],
[1728577536, 4294901760],
[1728643072, 4294901760],
[1728708608, 4294901760],
[1728774144, 4294901760],
[1728839680, 4294901760],
[1728905216, 4294901760],
[1728970752, 4294901760],
[1729036288, 4294901760],
[1729101824, 4294901760],
[1729167360, 4294901760],
[1729232896, 4294901760],
[1729298432, 4294901760],
[1729363968, 4294901760],
[1729429504, 4294901760],
[1729495040, 4294901760],
[1729560576, 4294901760],
[1729888256, 4294901760],
[1729953792, 4294901760],
[1730019328, 4294901760],
[1730084864, 4294901760],
[1744044032, 4294901760],
[1744109568, 4294901760],
[1744175104, 4294901760],
[1744240640, 4294901760],
[1778384896, 4294901760],
[1778515968, 4294836224],
[1778647040, 4294705152],
[1778909184, 4294836224],
[1779105792, 4294901760],
[1779171328, 4294705152],
[1779433472, 4293918720],
[1780482048, 4293918720],
[1781530624, 4294836224],
[1781661696, 4294901760],
[1781792768, 4294705152],
[1782054912, 4294443008],
[1783234560, 4294836224],
[1783627776, 4293918720],
[1785462784, 4294705152],
[1785724928, 4294443008],
[1786249216, 4294443008],
[1793064960, 4293918720],
[1845886976, 4294836224],
[1846542336, 4294705152],
[1848115200, 4294705152],
[1848377344, 4294901760],
[1848639488, 4294901760],
[1848836096, 4294901760],
[1848901632, 4294836224],
[1849163776, 4294443008],
[1849688064, 4294836224],
[1850212352, 4294836224],
[1850408960, 4294901760],
[1850474496, 4294901760],
[1850540032, 4294901760],
[1850736640, 4294443008],
[1851260928, 4294705152],
[1851588608, 4294901760],
[1851654144, 4294836224],
[1851785216, 4292870144],
[1855455232, 4294705152],
[1855717376, 4294836224],
[1856307200, 4294901760],
[1856372736, 4294836224],
[1856765952, 4294901760],
[1856831488, 4294901760],
[1857028096, 4294443008],
[1857552384, 4294443008],
[1858076672, 4292870144],
[1860435968, 4294705152],
[1860698112, 4294901760],
[1860960256, 4294836224],
[1861222400, 4293918720],
[1862270976, 4290772992],
[1866596352, 4294901760],
[1866661888, 4294901760],
[1866727424, 4294901760],
[1866989568, 4294443008],
[1867841536, 4294901760],
[1868234752, 4294901760],
[1869611008, 4294836224],
[1869742080, 4294836224],
[1869873152, 4294836224],
[1870004224, 4294901760],
[1870069760, 4294901760],
[1870135296, 4294705152],
[1870397440, 4294901760],
[1870528512, 4294836224],
[1870659584, 4292870144],
[1872756736, 4294443008],
[1873412096, 4294901760],
[1873543168, 4294705152],
[1873805312, 4294443008],
[1874460672, 4294836224],
[1874853888, 4293918720],
[1875902464, 4294705152],
[1876164608, 4294705152],
[1876754432, 4294901760],
[1876819968, 4294901760],
[1876885504, 4294901760],
[1876951040, 4294705152],
[1877213184, 4294705152],
[1877671936, 4294901760],
[1879048192, 4290772992],
[1883242496, 4294836224],
[1883373568, 4294836224],
[1883832320, 4294901760],
[1883897856, 4294836224],
[1884291072, 4294443008],
[1884815360, 4294443008],
[1885339648, 4294836224],
[1885470720, 4294836224],
[1885601792, 4294705152],
[1886191616, 4294901760],
[1886322688, 4294901760],
[1886388224, 4294705152],
[1886650368, 4294836224],
[1887043584, 4294836224],
[1887174656, 4294705152],
[1887436800, 4294705152],
[1887698944, 4294901760],
[1888026624, 4294901760],
[1891631104, 4294705152],
[1893728256, 4292870144],
[1895825408, 4294443008],
[1896349696, 4294836224],
[1896546304, 4294901760],
[1896611840, 4294705152],
[1896873984, 4294836224],
[1897005056, 4294901760],
[1897398272, 4294705152],
[1897857024, 4294901760],
[1898708992, 4294705152],
[1898971136, 4294705152],
[1899233280, 4294901760],
[1899364352, 4294836224],
[1899495424, 4294836224],
[1899626496, 4294901760],
[1899692032, 4294901760],
[1899888640, 4294836224],
[1900019712, 4292870144],
[1902116864, 4293918720],
[1903165440, 4294443008],
[1903689728, 4294443008],
[1904214016, 4294836224],
[1904345088, 4294901760],
[1904476160, 4294705152],
[1904738304, 4294443008],
[1908539392, 4294836224],
[1908736000, 4294901760],
[1908932608, 4294836224],
[1909063680, 4294901760],
[1909194752, 4294705152],
[1909456896, 4294901760],
[1909522432, 4294901760],
[1909719040, 4294901760],
[1909784576, 4294901760],
[1909850112, 4294836224],
[1910112256, 4294836224],
[1910243328, 4294705152],
[1910505472, 4293918720],
[1911554048, 4294443008],
[1912078336, 4294705152],
[1914437632, 4294901760],
[1916141568, 4294836224],
[1916534784, 4294705152],
[1916796928, 4294705152],
[1917059072, 4294901760],
[1917779968, 4294901760],
[1917845504, 4293918720],
[1918894080, 4294443008],
[1919418368, 4294705152],
[1919811584, 4294901760],
[1919877120, 4294901760],
[1919942656, 4294705152],
[1920204800, 4294836224],
[1920335872, 4294836224],
[1921253376, 4294901760],
[1921449984, 4294901760],
[1921646592, 4294836224],
[1921843200, 4294901760],
[1925447680, 4294836224],
[1925578752, 4294901760],
[1926234112, 4294705152],
[1926496256, 4294836224],
[1926627328, 4294901760],
[1926692864, 4294901760],
[1926758400, 4294443008],
[1927282688, 4293918720],
[1928331264, 4293918720],
[1930952704, 4294705152],
[1931214848, 4294836224],
[1931476992, 4294705152],
[1932263424, 4294836224],
[1932394496, 4294901760],
[1932460032, 4294901760],
[1932525568, 4293918720],
[1933901824, 4294901760],
[1934884864, 4294901760],
[1934950400, 4294901760],
[1935933440, 4294705152],
[1936195584, 4294705152],
[1937244160, 4294705152],
[1937506304, 4294901760],
[1939079168, 4294705152],
[1939341312, 4294836224],
[1939472384, 4294836224],
[1939603456, 4294836224],
[1939734528, 4294901760],
[1939800064, 4294901760],
[1940258816, 4294901760],
[1940389888, 4294705152],
[1940652032, 4294705152],
[1941176320, 4294705152],
[1941831680, 4294836224],
[1941962752, 4292870144],
[1944059904, 4293918720],
[1946157056, 4294901760],
[1946222592, 4294901760],
[1946288128, 4294836224],
[1946419200, 4294705152],
[1946681344, 4294705152],
[1947009024, 4294901760],
[1947205632, 4293918720],
[1949433856, 4294901760],
[1949564928, 4294705152],
[1949827072, 4294836224],
[1949958144, 4294901760],
[1950089216, 4294705152],
[1950482432, 4294901760],
[1950679040, 4294901760],
[1950744576, 4294901760],
[1951137792, 4294836224],
[1951268864, 4294836224],
[1951727616, 4294901760],
[1951989760, 4294901760],
[1952055296, 4294901760],
[1952382976, 4294901760],
[1953497088, 4294705152],
[1953759232, 4294836224],
[1954545664, 4290772992],
[1958739968, 4294901760],
[1958805504, 4294901760],
[1958871040, 4294836224],
[1959002112, 4294901760],
[1959133184, 4294901760],
[1959198720, 4294901760],
[1959526400, 4294836224],
[1959723008, 4294901760],
[1959788544, 4294705152],
[1960050688, 4294901760],
[1960116224, 4294901760],
[1960181760, 4294901760],
[1960247296, 4294901760],
[1960312832, 4294705152],
[1960837120, 4293918720],
[1962016768, 4294836224],
[1962147840, 4294836224],
[1962278912, 4294836224],
[1962409984, 4294836224],
[1962606592, 4294901760],
[1962672128, 4294836224],
[1962803200, 4294901760],
[1962868736, 4294901760],
[1963458560, 4294443008],
[1964310528, 4294901760],
[1964376064, 4294836224],
[1964507136, 4294443008],
[1965031424, 4294443008],
[1965555712, 4294705152],
[1965817856, 4294836224],
[1966080000, 4294705152],
[1966407680, 4294901760],
[1966669824, 4294901760],
[1966735360, 4294901760],
[1966800896, 4294901760],
[1966866432, 4294705152],
[1967128576, 4294443008],
[1967652864, 4294836224],
[1967783936, 4294901760],
[1967849472, 4294901760],
[1967915008, 4294705152],
[1968177152, 4293918720],
[1969487872, 4294836224],
[1969684480, 4294901760],
[1969750016, 4294901760],
[1969881088, 4294836224],
[1970274304, 4294443008],
[1970798592, 4294901760],
[1970864128, 4294901760],
[1970929664, 4294901760],
[1971060736, 4294705152],
[1971322880, 4290772992],
[1981284352, 4294836224],
[1981415424, 4294901760],
[1981546496, 4294836224],
[1981677568, 4294901760],
[1981743104, 4294901760],
[1983905792, 4294836224],
[1984036864, 4294901760],
[1984102400, 4294901760],
[1984430080, 4294443008],
[1984954368, 4294836224],
[1985216512, 4294836224],
[1985478656, 4294901760],
[1985544192, 4294901760],
[1985675264, 4294901760],
[1986396160, 4294901760],
[1987051520, 4294443008],
[1987575808, 4294705152],
[1987837952, 4294836224],
[1987969024, 4294901760],
[1988034560, 4294901760],
[1988362240, 4294705152],
[1989148672, 4294705152],
[1991376896, 4294901760],
[1991507968, 4294705152],
[1991770112, 4294901760],
[1991901184, 4294836224],
[1992032256, 4294901760],
[1992163328, 4294836224],
[1992294400, 4294836224],
[1992425472, 4294901760],
[1992491008, 4294901760],
[1992556544, 4294705152],
[1992949760, 4294836224],
[1993080832, 4294705152],
[1993605120, 4294901760],
[1993670656, 4294901760],
[1994391552, 4294705152],
[1994653696, 4294836224],
[1994784768, 4294901760],
[1995374592, 4294901760],
[1995571200, 4294901760],
[1995702272, 4294705152],
[1995964416, 4294443008],
[1996488704, 4294836224],
[1996619776, 4294901760],
[1996685312, 4294901760],
[1996750848, 4294705152],
[1997012992, 4294901760],
[1997144064, 4294901760],
[1997471744, 4294901760],
[1997537280, 4294901760],
[1997668352, 4294901760],
[1997733888, 4294901760],
[1997799424, 4294705152],
[1998258176, 4294901760],
[1998323712, 4294836224],
[1998454784, 4294901760],
[1998520320, 4294901760],
[1998585856, 4294705152],
[1998848000, 4294901760],
[1998913536, 4294901760],
[1998979072, 4294901760],
[1999044608, 4294901760],
[1999110144, 4294901760],
[1999175680, 4294901760],
[1999241216, 4294901760],
[1999372288, 4294836224],
[1999634432, 4294443008],
[2000224256, 4294901760],
[2000289792, 4294901760],
[2000355328, 4294901760],
[2000420864, 4294901760],
[2000486400, 4294901760],
[2000551936, 4294901760],
[2000617472, 4294901760],
[2001403904, 4294901760],
[2001600512, 4294836224],
[2001731584, 4294901760],
[2001862656, 4294901760],
[2001993728, 4294705152],
[2002255872, 4294705152],
[2002780160, 4294443008],
[2003566592, 4294836224],
[2003828736, 4294443008],
[2004353024, 4294443008],
[2004877312, 4293918720],
[2005925888, 4294705152],
[2006188032, 4294901760],
[2006384640, 4294901760],
[2006974464, 4294901760],
[2007040000, 4294901760],
[2007105536, 4294836224],
[2007236608, 4294705152],
[2008023040, 4293918720],
[2011693056, 4294836224],
[2011889664, 4294901760],
[2012741632, 4294705152],
[2013003776, 4294901760],
[2013069312, 4294901760],
[2013134848, 4294836224],
[2013265920, 4293918720],
[2014838784, 4294705152],
[2015232000, 4294901760],
[2015297536, 4294901760],
[2015363072, 4294443008],
[2015887360, 4294705152],
[2016149504, 4294705152],
[2016411648, 4294836224],
[2016673792, 4294705152],
[2017460224, 4294705152],
[2017722368, 4294705152],
[2017984512, 4294901760],
[2018246656, 4294705152],
[2018508800, 4294443008],
[2019033088, 4294901760],
[2019164160, 4294836224],
[2019295232, 4294901760],
[2019426304, 4294901760],
[2019491840, 4294901760],
[2021654528, 4294705152],
[2021916672, 4294901760],
[2021982208, 4294901760],
[2022047744, 4294836224],
[2022178816, 4294901760],
[2022244352, 4294901760],
[2022637568, 4294901760],
[2025848832, 4290772992],
[2030043136, 4294901760],
[2030305280, 4294836224],
[2030567424, 4294443008],
[2031091712, 4294443008],
[2031616000, 4294705152],
[2031878144, 4294836224],
[2032009216, 4294901760],
[2032074752, 4294901760],
[2032140288, 4294705152],
[2032402432, 4294901760],
[2032467968, 4294901760],
[2032533504, 4294836224],
[2032664576, 4294705152],
[2033057792, 4294901760],
[2033123328, 4294901760],
[2033188864, 4294836224],
[2033319936, 4294901760],
[2033385472, 4294901760],
[2033451008, 4294901760],
[2033582080, 4294901760],
[2033647616, 4294901760],
[2033713152, 4294836224],
[2033844224, 4294901760],
[2033909760, 4294901760],
[2033975296, 4294705152],
[2034499584, 4294705152],
[2035023872, 4294836224],
[2035220480, 4294901760],
[2035875840, 4294901760],
[2036596736, 4294901760],
[2036662272, 4294901760],
[2042626048, 4294901760],
[2042691584, 4294901760],
[2042757120, 4294836224],
[2042888192, 4294705152],
[2043150336, 4294901760],
[2043215872, 4294901760],
[2043412480, 4294705152],
[2044723200, 4293918720],
[2046296064, 4294705152],
[2046754816, 4294901760],
[2046820352, 4294901760],
[2047082496, 4294705152],
[2047344640, 4294901760],
[2047410176, 4294901760],
[2047475712, 4294901760],
[2047541248, 4294901760],
[2047606784, 4294901760],
[2047672320, 4294901760],
[2047737856, 4294901760],
[2049966080, 4294901760],
[2050031616, 4294901760],
[2050162688, 4294901760],
[2051014656, 4292870144],
[2053111808, 4294836224],
[2053505024, 4294901760],
[2054160384, 4294705152],
[2054619136, 4294901760],
[2055208960, 4294901760],
[2055733248, 4294443008],
[2056257536, 4294901760],
[2056781824, 4294901760],
[2057043968, 4294705152],
[2059141120, 4294705152],
[2059403264, 4294705152],
[2059796480, 4294901760],
[2059927552, 4294901760],
[2059993088, 4294901760],
[2060189696, 4294705152],
[2061500416, 4293918720],
[2062548992, 4294443008],
[2063073280, 4294901760],
[2063532032, 4294901760],
[2063597568, 4294901760],
[2063859712, 4294705152],
[2064121856, 4294443008],
[2066808832, 4294901760],
[2066874368, 4294901760],
[2067005440, 4294705152],
[2067267584, 4294836224],
[2067398656, 4294901760],
[2067464192, 4294901760],
[2067529728, 4294836224],
[2067660800, 4294901760],
[2067791872, 4292870144],
[2069889024, 4294836224],
[2070020096, 4294901760],
[2070085632, 4294901760],
[2070151168, 4294901760],
[2070216704, 4294901760],
[2070347776, 4294901760],
[2070675456, 4294901760],
[2070937600, 4293918720],
[2071986176, 4294443008],
[2072510464, 4294901760],
[2072576000, 4294901760],
[2072641536, 4294836224],
[2073034752, 4294705152],
[2073296896, 4294901760],
[2073362432, 4294901760],
[2073427968, 4294836224],
[2073559040, 4294443008],
[2074083328, 4294705152],
[2074345472, 4294705152],
[2074607616, 4294705152],
[2074869760, 4294836224],
[2075000832, 4294836224],
[2075131904, 4294901760],
[2075197440, 4294901760],
[2075262976, 4294836224],
[2075394048, 4294705152],
[2075656192, 4294705152],
[2075918336, 4294705152],
[2076442624, 4294836224],
[2076639232, 4294901760],
[2077097984, 4294836224],
[2078801920, 4294705152],
[2079457280, 4294901760],
[2079588352, 4294705152],
[2079916032, 4294901760],
[2080178176, 4294901760],
[2080768000, 4294901760],
[2081292288, 4294836224],
[2081423360, 4294836224],
[2081685504, 4294901760],
[2081751040, 4294901760],
[2081816576, 4294836224],
[2082209792, 4294901760],
[2082275328, 4294901760],
[2082406400, 4294901760],
[2082996224, 4294901760],
[2083127296, 4294901760],
[2083454976, 4294901760],
[2084569088, 4294836224],
[2084700160, 4294901760],
[2084765696, 4294901760],
[2084831232, 4294705152],
[2085093376, 4294901760],
[2085158912, 4294901760],
[2085224448, 4294836224],
[2085355520, 4294705152],
[2086141952, 4294901760],
[2086207488, 4294901760],
[2086273024, 4294836224],
[2086404096, 4294705152],
[2087452672, 4294901760],
[2087518208, 4294901760],
[2087714816, 4294836224],
[2087845888, 4294836224],
[2087976960, 4294901760],
[2088042496, 4294901760],
[2088108032, 4294836224],
[2088632320, 4294836224],
[2088763392, 4294443008],
[2090008576, 4294901760],
[2090270720, 4294901760],
[2090336256, 4294901760],
[2090598400, 4294901760],
[2090860544, 4294901760],
[2090926080, 4294901760],
[2090991616, 4294901760],
[2091057152, 4294901760],
[2091122688, 4294705152],
[2091646976, 4294836224],
[2091778048, 4294836224],
[2092957696, 4294836224],
[2093219840, 4294901760],
[2093481984, 4294443008],
[2094792704, 4294705152],
[2095054848, 4294901760],
[2095120384, 4294901760],
[2095185920, 4294836224],
[2095316992, 4294705152],
[2095579136, 4294836224],
[2095710208, 4294836224],
[2095841280, 4294705152],
[2096103424, 4294901760],
[2096234496, 4294901760],
[2096300032, 4294901760],
[2096627712, 4294901760],
[2096693248, 4294901760],
[2096758784, 4294836224],
[2097020928, 4294901760],
[2099183616, 4294901760],
[2099249152, 4294901760],
[2099314688, 4294901760],
[2099380224, 4294901760],
[2099445760, 4294901760],
[2099511296, 4294705152],
[2099773440, 4294443008],
[2100953088, 4294901760],
[2101149696, 4294901760],
[2101215232, 4294901760],
[2101346304, 4294443008],
[2101870592, 4294901760],
[2101936128, 4294901760],
[2102001664, 4294836224],
[2102132736, 4294901760],
[2102198272, 4294901760],
[2102263808, 4294836224],
[2102394880, 4294443008],
[2102919168, 4294443008],
[2103443456, 4294836224],
[2103574528, 4294901760],
[2103967744, 4294443008],
[2104492032, 4293918720],
[2108227584, 4294901760],
[2108358656, 4294901760],
[2110783488, 4294901760],
[2110914560, 4294901760],
[2110980096, 4294901760],
[2111111168, 4294901760],
[2111176704, 4294901760],
[2111242240, 4294901760],
[2111307776, 4294836224],
[2111438848, 4294901760],
[2111504384, 4294901760],
[2111569920, 4294836224],
[2111700992, 4294836224],
[2113798144, 4294901760],
[2260992000, 4294901760],
[2332622848, 4294901760],
[2340487168, 4294901760],
[2341732352, 4294901760],
[2342191104, 4294901760],
[2342453248, 4294901760],
[2343174144, 4294901760],
[2343567360, 4294901760],
[2344026112, 4294901760],
[2344222720, 4294901760],
[2344419328, 4294901760],
[2344878080, 4294705152],
[2345140224, 4294443008],
[2345664512, 4294443008],
[2346450944, 4294836224],
[2346713088, 4294901760],
[2346844160, 4294836224],
[2353725440, 4294901760],
[2358181888, 4294901760],
[2362245120, 4294901760],
[2362310656, 4294836224],
[2362572800, 4294901760],
[2363490304, 4294901760],
[2364342272, 4294901760],
[2364538880, 4294901760],
[2364735488, 4294901760],
[2364932096, 4294901760],
[2365128704, 4294901760],
[2365194240, 4294901760],
[2365521920, 4294901760],
[2415919104, 4294901760],
[2416377856, 4294901760],
[2416705536, 4294901760],
[2419326976, 4294901760],
[2423980032, 4294901760],
[2432630784, 4294901760],
[2516582400, 4294901760],
[2524119040, 4294901760],
[2524512256, 4294901760],
[2524577792, 4294901760],
[2525626368, 4294836224],
[2531196928, 4294901760],
[2533294080, 4294901760],
[2566914048, 4294901760],
[2567110656, 4294901760],
[2569142272, 4294836224],
[2569273344, 4294836224],
[2573402112, 4294901760],
[2573533184, 4294901760],
[2574647296, 4294836224],
[2634022912, 4294901760],
[2635202560, 4294901760],
[2638020608, 4294901760],
[2642018304, 4294901760],
[2643722240, 4294901760],
[2644246528, 4294901760],
[2650734592, 4294901760],
[2682388480, 4294901760],
[2714697728, 4294901760],
[2724790272, 4294901760],
[2734686208, 4294901760],
[2742878208, 4294901760],
[2743992320, 4294901760],
[2746286080, 4294901760],
[2746417152, 4294901760],
[2748055552, 4294901760],
[2792292352, 4294901760],
[2810904576, 4294901760],
[2829058048, 4294901760],
[2869428224, 4294443008],
[2871132160, 4294836224],
[2871263232, 4294705152],
[2871525376, 4294443008],
[2874146816, 4294705152],
[2874408960, 4294705152],
[2874671104, 4294443008],
[2875719680, 4294443008],
[2876243968, 4294705152],
[2876506112, 4294705152],
[2876768256, 4294443008],
[2882535424, 4293918720],
[2936012800, 4293918720],
[2937061376, 4294443008],
[2937585664, 4294705152],
[2937978880, 4294836224],
[2938765312, 4294836224],
[2938896384, 4294901760],
[2939027456, 4294836224],
[2939158528, 4293918720],
[2940207104, 4292870144],
[2942697472, 4294901760],
[2942959616, 4294901760],
[2945581056, 4294836224],
[2945712128, 4294705152],
[2945974272, 4294705152],
[2946498560, 4293918720],
[2947678208, 4294901760],
[2948071424, 4294901760],
[2948136960, 4294901760],
[2948202496, 4294836224],
[2948333568, 4294705152],
[3024879616, 4294901760],
[3024945152, 4294901760],
[3025010688, 4294836224],
[3025403904, 4294836224],
[3025534976, 4294901760],
[3025666048, 4294705152],
[3026059264, 4294901760],
[3026124800, 4294901760],
[3026190336, 4292870144],
[3028353024, 4294901760],
[3028418560, 4294901760],
[3028811776, 4294443008],
[3029598208, 4294901760],
[3029663744, 4294901760],
[3029729280, 4294901760],
[3029860352, 4294443008],
[3030384640, 4293918720],
[3031564288, 4294901760],
[3031957504, 4294705152],
[3032219648, 4294901760],
[3032285184, 4294901760],
[3033006080, 4294901760],
[3033071616, 4294901760],
[3033137152, 4294836224],
[3033530368, 4294836224],
[3033661440, 4294901760],
[3033792512, 4294836224],
[3034447872, 4294901760],
[3034513408, 4294901760],
[3035168768, 4294901760],
[3035299840, 4294901760],
[3054501888, 4294901760],
[3054632960, 4294901760],
[3054960640, 4294901760],
[3055550464, 4293918720],
[3056599040, 4294901760],
[3056664576, 4294901760],
[3056730112, 4294901760],
[3056795648, 4294901760],
[3056992256, 4294901760],
[3057451008, 4294901760],
[3058696192, 4294705152],
[3058958336, 4294705152],
[3059220480, 4294705152],
[3059482624, 4294901760],
[3059744768, 4293918720],
[3060793344, 4293918720],
[3061841920, 4293918720],
[3062890496, 4294443008],
[3063742464, 4294901760],
[3063939072, 4294901760],
[3064856576, 4294836224],
[3066560512, 4294443008],
[3068919808, 4294901760],
[3069050880, 4294901760],
[3069116416, 4294901760],
[3069181952, 4294443008],
[3070099456, 4294901760],
[3070230528, 4290772992],
[3074424832, 4294443008],
[3075342336, 4294901760],
[3075538944, 4294901760],
[3075735552, 4294836224],
[3076194304, 4294901760],
[3076259840, 4294705152],
[3078619136, 4292870144],
[3080716288, 4294443008],
[3081240576, 4294836224],
[3081371648, 4294901760],
[3081502720, 4294705152],
[3082158080, 4294901760],
[3082289152, 4294443008],
[3082813440, 4290772992],
[3229351936, 4294901760],
[3233546240, 4294901760],
[3388997632, 4294901760],
[3389194240, 4294901760],
[3389259776, 4294901760],
[3389390848, 4294901760],
[3389521920, 4294901760],
[3389587456, 4294901760],
[3389652992, 4294901760],
[3389784064, 4294901760],
[3389915136, 4294901760],
[3390308352, 4294901760],
[3390373888, 4294901760],
[3390439424, 4294901760],
[3390767104, 4294901760],
[3391488000, 4294901760],
[3391619072, 4294901760],
[3391684608, 4294901760],
[3391815680, 4294901760],
[3391881216, 4294901760],
[3391946752, 4294901760],
[3392012288, 4294901760],
[3392077824, 4294901760],
[3392733184, 4294901760],
[3392798720, 4294901760],
[3392864256, 4294901760],
[3392929792, 4294901760],
[3393060864, 4294901760],
[3393126400, 4294901760],
[3393257472, 4294901760],
[3393388544, 4294901760],
[3393519616, 4294901760],
[3393585152, 4294901760],
[3393716224, 4294901760],
[3393781760, 4294901760],
[3393847296, 4294901760],
[3393912832, 4294901760],
[3393978368, 4294901760],
[3394043904, 4294901760],
[3394109440, 4294901760],
[3394174976, 4294901760],
[3394240512, 4294901760],
[3394306048, 4294901760],
[3394437120, 4294901760],
[3394502656, 4294901760],
[3394568192, 4294901760],
[3394633728, 4294901760],
[3394699264, 4294901760],
[3394830336, 4294901760],
[3394895872, 4294901760],
[3394961408, 4294901760],
[3395026944, 4294901760],
[3395092480, 4294901760],
[3395158016, 4294901760],
[3395223552, 4294901760],
[3395289088, 4294901760],
[3395354624, 4294901760],
[3395420160, 4294901760],
[3395485696, 4294901760],
[3395551232, 4294901760],
[3395616768, 4294901760],
[3395682304, 4294901760],
[3395747840, 4294901760],
[3395813376, 4294836224],
[3395944448, 4294901760],
[3396009984, 4294901760],
[3396075520, 4294901760],
[3396141056, 4294901760],
[3396206592, 4294901760],
[3396272128, 4294901760],
[3396337664, 4294901760],
[3396403200, 4294901760],
[3396468736, 4294901760],
[3396534272, 4294901760],
[3396599808, 4294901760],
[3396665344, 4294901760],
[3396730880, 4294901760],
[3396796416, 4294901760],
[3396861952, 4294901760],
[3396927488, 4294901760],
[3396993024, 4294901760],
[3397058560, 4294901760],
[3397124096, 4294901760],
[3397189632, 4294901760],
[3397320704, 4294901760],
[3397517312, 4294901760],
[3397582848, 4294901760],
[3397713920, 4294901760],
[3397779456, 4294901760],
[3397910528, 4294901760],
[3397976064, 4294901760],
[3398238208, 4294901760],
[3398303744, 4294901760],
[3398369280, 4294901760],
[3398565888, 4294901760],
[3398631424, 4294901760],
[3398696960, 4294901760],
[3398762496, 4294901760],
[3398828032, 4294901760],
[3398893568, 4294901760],
[3398959104, 4294901760],
[3399024640, 4294901760],
[3399286784, 4294901760],
[3399352320, 4294901760],
[3399483392, 4294901760],
[3399614464, 4294901760],
[3399745536, 4294901760],
[3399811072, 4294901760],
[3399876608, 4294901760],
[3400007680, 4294901760],
[3400138752, 4294901760],
[3400204288, 4294901760],
[3400269824, 4294901760],
[3400335360, 4294901760],
[3400400896, 4294901760],
[3400531968, 4294901760],
[3400728576, 4294901760],
[3400794112, 4294901760],
[3400859648, 4294901760],
[3400925184, 4294901760],
[3401383936, 4294901760],
[3401515008, 4294901760],
[3401580544, 4294443008],
[3402104832, 4294705152],
[3402366976, 4294705152],
[3405774848, 4294901760],
[3405840384, 4294901760],
[3405905920, 4294901760],
[3405971456, 4294901760],
[3406036992, 4294901760],
[3406102528, 4294901760],
[3406168064, 4294901760],
[3406233600, 4294901760],
[3406299136, 4294901760],
[3406364672, 4294901760],
[3406430208, 4294901760],
[3406495744, 4294901760],
[3406561280, 4294901760],
[3406626816, 4294901760],
[3406692352, 4294901760],
[3406757888, 4294901760],
[3406823424, 4294901760],
[3406888960, 4294901760],
[3406954496, 4294901760],
[3407020032, 4294901760],
[3407085568, 4294901760],
[3407151104, 4294901760],
[3407216640, 4294901760],
[3407282176, 4294901760],
[3407347712, 4294901760],
[3407413248, 4294901760],
[3407478784, 4294901760],
[3407544320, 4294901760],
[3407609856, 4294901760],
[3407675392, 4294901760],
[3407740928, 4294901760],
[3407806464, 4294901760],
[3407872000, 4294901760],
[3407937536, 4294901760],
[3408003072, 4294901760],
[3409379328, 4294901760],
[3409444864, 4294901760],
[3409510400, 4294901760],
[3409838080, 4294901760],
[3410755584, 4294901760],
[3410821120, 4294901760],
[3410886656, 4294901760],
[3410952192, 4294901760],
[3411017728, 4294901760],
[3411083264, 4294901760],
[3411148800, 4294901760],
[3411214336, 4294901760],
[3411410944, 4294901760],
[3411542016, 4294901760],
[3411607552, 4294901760],
[3411673088, 4294901760],
[3411738624, 4294901760],
[3411804160, 4294901760],
[3411869696, 4294901760],
[3411935232, 4294901760],
[3412000768, 4294901760],
[3412262912, 4294901760],
[3412328448, 4294901760],
[3412590592, 4294901760],
[3412656128, 4294901760],
[3412787200, 4294901760],
[3412983808, 4294901760],
[3413245952, 4294901760],
[3413508096, 4294901760],
[3413573632, 4294901760],
[3414163456, 4294901760],
[3414228992, 4294901760],
[3414294528, 4294901760],
[3414425600, 4294901760],
[3414556672, 4294901760],
[3414622208, 4294901760],
[3415080960, 4294901760],
[3415212032, 4294901760],
[3415277568, 4294901760],
[3415474176, 4294901760],
[3415539712, 4294901760],
[3415736320, 4294901760],
[3415801856, 4294901760],
[3415998464, 4294901760],
[3416129536, 4294901760],
[3416260608, 4294901760],
[3416326144, 4294901760],
[3416653824, 4294901760],
[3416784896, 4294901760],
[3416915968, 4294901760],
[3416981504, 4294901760],
[3417178112, 4294901760],
[3417243648, 4294901760],
[3417309184, 4294901760],
[3417833472, 4294901760],
[3418030080, 4294901760],
[3418161152, 4294901760],
[3418226688, 4294901760],
[3418292224, 4294901760],
[3418357760, 4294901760],
[3418423296, 4294901760],
[3418488832, 4294901760],
[3418554368, 4294901760],
[3418619904, 4294901760],
[3419013120, 4294901760],
[3419209728, 4294901760],
[3419340800, 4294901760],
[3419406336, 4294901760],
[3419471872, 4294901760],
[3419668480, 4294901760],
[3419865088, 4294901760],
[3420323840, 4294901760],
[3420389376, 4294901760],
[3523346432, 4294901760],
[3523543040, 4294901760],
[3524001792, 4294901760],
[3524067328, 4294901760],
[3524132864, 4294901760],
[3524198400, 4294901760],
[3524263936, 4294901760],
[3524591616, 4294901760],
[3524657152, 4294901760],
[3524722688, 4294901760],
[3524853760, 4294901760],
[3524919296, 4294836224],
[3525050368, 4294705152],
[3525312512, 4294705152],
[3525574656, 4294705152],
[3525836800, 4294443008],
[3526361088, 4294901760],
[3526557696, 4294901760],
[3526623232, 4294901760],
[3526688768, 4294901760],
[3526885376, 4294901760],
[3527933952, 4294901760],
[3527999488, 4294901760],
[3528065024, 4294901760],
[3528130560, 4294901760],
[3528196096, 4294901760],
[3528261632, 4294901760],
[3528327168, 4294901760],
[3528392704, 4294901760],
[3528589312, 4294836224],
[3528916992, 4294901760],
[3535339520, 4294901760],
[3535798272, 4294901760],
[3544186880, 4294705152],
[3544449024, 4294836224],
[3544580096, 4294836224],
[3545235456, 4294901760],
[3545300992, 4294901760],
[3545366528, 4294901760],
[3545432064, 4294901760],
[3545497600, 4294836224],
[3545628672, 4294836224],
[3545759744, 4294901760],
[3545825280, 4294901760],
[3545890816, 4294836224],
[3546021888, 4294836224],
[3546152960, 4294836224],
[3546284032, 4294836224],
[3546415104, 4294901760],
[3546480640, 4294901760],
[3546546176, 4294901760],
[3546611712, 4294901760],
[3546677248, 4294901760],
[3546742784, 4294901760],
[3548905472, 4294705152],
[3549167616, 4294836224],
[3549298688, 4294901760],
[3549364224, 4294901760],
[3549429760, 4294836224],
[3549560832, 4294901760],
[3549626368, 4294901760],
[3549691904, 4294705152],
[3549954048, 4294836224],
[3550085120, 4294901760],
[3550150656, 4294901760],
[3550216192, 4294705152],
[3550478336, 4294705152],
[3550740480, 4294705152],
[3657433088, 4294901760],
[3657498624, 4294901760],
[3657564160, 4294836224],
[3657695232, 4294836224],
[3657826304, 4294901760],
[3657891840, 4294901760],
[3657957376, 4294836224],
[3658088448, 4294901760],
[3658153984, 4294901760],
[3658219520, 4294901760],
[3658285056, 4294901760],
[3658350592, 4294836224],
[3658481664, 4294705152],
[3658743808, 4294901760],
[3658809344, 4294901760],
[3658874880, 4294836224],
[3659005952, 4294836224],
[3659137024, 4294901760],
[3659202560, 4294901760],
[3659268096, 4294836224],
[3659399168, 4294836224],
[3661103104, 4294705152],
[3661365248, 4294836224],
[3661496320, 4294901760],
[3661561856, 4294901760],
[3661627392, 4294836224],
[3661758464, 4294901760],
[3661824000, 4294901760],
[3661889536, 4294836224],
[3662020608, 4294836224],
[3662151680, 4294705152],
[3662413824, 4294836224],
[3662544896, 4294836224],
[3662675968, 4294705152],
[3662938112, 4294705152],
[3663200256, 4294443008],
[3663724544, 4294836224],
[3663855616, 4294901760],
[3663921152, 4294901760],
[3663986688, 4294901760],
[3664248832, 4294901760],
[3664314368, 4294901760],
[3664379904, 4294836224],
[3664510976, 4294901760],
[3664576512, 4294901760],
[3669557248, 4294901760],
[3670016000, 4294901760],
[3670081536, 4294901760],
[3670147072, 4294901760],
[3670212608, 4294901760],
[3670278144, 4294705152],
[3670540288, 4294705152],
[3670802432, 4294836224],
[3670933504, 4294836224],
[3673161728, 4294705152],
[3673423872, 4294836224],
[3673554944, 4294836224],
[3673751552, 4294901760],
[3678928896, 4294901760],
[3679584256, 4294901760],
[3679649792, 4294901760],
[3682598912, 4293918720],
[3683647488, 4294705152],
[3683909632, 4294901760],
[3683975168, 4294901760],
[3684040704, 4294901760],
[3684106240, 4294901760],
[3684171776, 4294836224],
[3684302848, 4294836224],
[3684433920, 4294836224],
[3684564992, 4294901760],
[3684630528, 4294901760],
[3688366080, 4294836224],
[3688497152, 4294836224],
[3688628224, 4294901760],
[3688693760, 4294901760],
[3688759296, 4294836224],
[3688890368, 4294836224],
[3689021440, 4294901760],
[3689086976, 4294901760],
[3689152512, 4294836224],
[3689283584, 4294836224],
[3689414656, 4294705152],
[3689676800, 4294836224],
[3689807872, 4294836224],
[3690070016, 4294836224],
[3690201088, 4294705152],
[3697606656, 4294901760],
[3698327552, 4294705152],
[3700948992, 4294901760],
[3701080064, 4294836224],
[3701473280, 4292870144],
[3703570432, 4294836224],
[3703701504, 4294836224],
[3703832576, 4294705152],
[3704094720, 4294443008],
[3706126336, 4294901760],
[3706191872, 4294901760],
[3706322944, 4294901760],
[3706847232, 4294836224],
[3707174912, 4294901760],
[3707240448, 4294705152],
[3707502592, 4294901760],
[3707764736, 4294836224],
[3707895808, 4294901760],
[3707961344, 4294901760],
[3708026880, 4294901760],
[3708092416, 4294901760],
[3708157952, 4294901760],
[3708223488, 4294901760],
[3708289024, 4294836224],
[3708420096, 4294901760],
[3708485632, 4294901760],
[3708551168, 4294901760],
[3708616704, 4294901760],
[3708682240, 4294836224],
[3715760128, 4294836224],
[3716153344, 4294901760],
[3716218880, 4294901760],
[3716284416, 4294836224],
[3716481024, 4294901760],
[3716677632, 4294901760],
[3716743168, 4294901760],
[3719036928, 4294705152],
[3719299072, 4294443008],
[3720347648, 4294836224],
[3720478720, 4294901760],
[3720544256, 4294901760],
[3720609792, 4294836224],
[3720740864, 4294901760],
[3720806400, 4294901760],
[3720871936, 4294705152],
[3721134080, 4294836224],
[3721265152, 4294901760],
[3721330688, 4294901760],
[3721396224, 4294705152],
[3721658368, 4294901760],
[3721723904, 4294901760],
[3721789440, 4294836224],
[3721920512, 4294443008],
[3722444800, 4294443008],
[3722969088, 4294705152],
[3723231232, 4294836224],
[3723362304, 4294901760],
[3723427840, 4294901760],
[3725590528, 4294836224],
[3725721600, 4294836224],
[3725852672, 4294836224],
[3725983744, 4294901760],
[3726049280, 4294901760],
[3726114816, 4294836224],
[3726245888, 4294836224],
[3726376960, 4294705152],
[3726639104, 4292870144],
[3728736256, 4294443008],
[3729260544, 4294836224],
[3729391616, 4294901760],
[3729457152, 4294901760],
[3729522688, 4294705152],
[3729784832, 4294836224],
[3729915904, 4294901760],
[3729981440, 4294901760],
[3730046976, 4294901760],
[3730112512, 4294901760],
[3730178048, 4294836224],
[3730309120, 4294836224],
[3730440192, 4294836224],
[3730571264, 4294705152],
[3732733952, 4294901760],
[3732799488, 4294901760],
[3732930560, 4294705152],
[3733192704, 4294705152],
[3733454848, 4294443008],
[3735027712, 4294836224],
[3735158784, 4294901760],
[3735224320, 4294901760],
[3735552000, 4294836224],
[3735683072, 4294836224],
[3735814144, 4294901760],
[3735879680, 4294901760],
[3735945216, 4294836224],
[3736076288, 4294443008],
[3736600576, 4294443008],
[3737124864, 4294705152],
[3737387008, 4294836224],
[3737518080, 4294901760],
[3737583616, 4294901760],
[3737649152, 4294705152],
[3737911296, 4294836224],
[3738042368, 4294836224],
[3738173440, 4294443008],
[3738697728, 4294836224],
[3738828800, 4294901760],
[3738894336, 4294901760],
[3738959872, 4294836224],
[3739090944, 4294836224],
[3740270592, 4294443008],
[3740794880, 4294901760],
[3740860416, 4294901760],
[3741319168, 4294836224],
[3741450240, 4294836224],
[3741581312, 4294705152],
[3741843456, 4294443008],
[3742629888, 4294836224],
[3743088640, 4294901760],
[3745513472, 4292870144],
[3747610624, 4293918720],
[3748659200, 4294705152],
[3748921344, 4294836224],
[3749183488, 4294443008],
[3749707776, 4294836224],
[3750756352, 4293918720],
[3751804928, 4294705152],
[3752198144, 4294836224],
[3753902080, 4294836224],
[3754295296, 4294836224],
[3754491904, 4294901760],
[3754557440, 4294836224],
[3754950656, 4294705152],
[3755212800, 4294836224],
[3755343872, 4294836224],
[3755737088, 4294836224],
[3755933696, 4294901760],
[3757047808, 4294443008],
[3757572096, 4294705152],
[3757834240, 4294901760],
[3757965312, 4294901760],
[3758030848, 4294901760]
];
function checkList(list) {
for (var i = 1; i < list.length; i++) {
if (list[i-1][0] >= list[i][0]) {
console.log("order error: " + i);
}
}
}
function convertAddr(ipchars) {
var bytes = ipchars.split('.');
var result = ((bytes[0] & 0xff) << 24) |
((bytes[1] & 0xff) << 16) |
((bytes[2] & 0xff) << 8) |
(bytes[3] & 0xff);
return result;
}
function binarySearch(ip, list) {
var b = 0;
var e = list.length;
for (; e >= (b+1);) {
var m = Math.floor((b + e) / 2);
var ipMask = ip & list[m][1];
var tarMask = list[m][0] & list[m][1];
if (ipMask == tarMask) {
return true;
} else if (Math.abs(ipMask) > Math.abs(list[m][0])) {
b = m + 1;
} else {
e = m;
}
}
return false;
}
function fullSearch(ip, list) {
for (var i = 0; i < list.length; i++) {
var target = list[i];
if ((ip & target[1]) == target[0]) {
return true;
}
}
return false;
}
checkList(list);
// challenge from @leaskh {
var ips = [
['www.163.com', '183.136.156.182'],
['www.baidu.com', '220.181.111.147'],
['www.pconline.com.cn', '61.145.113.41']
];
function scanSearch(intIp, list) {
function isInNet(ipaddr, pattern, mask) {
return (ipaddr & mask) === (pattern & mask);
}
for (var i = 0; i < list.length; i++) {
if (isInNet(intIp, list[i][0], list[i][1])) {
return true;
}
}
return false;
}
for (var k in ips) {
var ip = convertAddr(ips[k][1]);
console.log(
'bin ' + (binarySearch(ip, list) ? 'in ' : 'out') + ' | '
+ 'full ' + (fullSearch(ip, list) ? 'in ' : 'out') + ' | '
+ 'scan ' + (scanSearch(ip, list) ? 'in ' : 'out') + ' '+ ips[k][0]
)
}
return;
// }
for (var i = 0; i < 1000000; i++) {
var ip = Math.floor(Math.random() * 4294967295);
if (binarySearch(ip, list) != fullSearch(ip, list)) {
console.log("failed: " + ip)
}
}
var start = Math.floor(new Date().getTime())
for (var i = 0; i < 1000000; i++) {
var ip = Math.floor(Math.random() * 4294967295);
binarySearch(ip, list)
}
var end = Math.floor(new Date().getTime())
console.log("binary:", end - start)
var start = Math.floor(new Date().getTime())
for (var i = 0; i < 1000000; i++) {
var ip = Math.floor(Math.random() * 4294967295);
fullSearch(ip, list)
}
var end = Math.floor(new Date().getTime())
console.log("full:", end - start)
@Leask
Copy link
Author

Leask commented Apr 14, 2013

$ node gistfile1.js 
bin out | full out | scan in     www.163.com
bin out | full out | scan in     www.baidu.com
bin in  | full in  | scan in     www.pconline.com.cn

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment