1 /** 2 Whirlpool hashing algorithm implementation. This module conforms to the APIs defined in std.digest. 3 4 Based on the original Whirlpool implementation by Paulo S.L.M. Barreto and Vincent Rijmen. 5 */ 6 module nxt.digest.whirlpool; 7 8 public import std.digest; 9 import std.range; 10 11 /** 12 * Template API Whirlpool implementation. 13 */ 14 struct Whirlpool 15 { 16 /// Initializes the digest calculation. 17 void start() pure nothrow @safe @nogc 18 { 19 _lenBuf = 0; 20 _bufferPos = 0; 21 _hash[] = 0; 22 _tailBlock = false; 23 _bitLength[] = 0; 24 } 25 26 /// Feed the digest with data. 27 void put(scope const(ubyte)[] data...) @trusted pure nothrow @nogc 28 { 29 bufLength(data.length); 30 31 while (true) { 32 immutable cap = _buffer.length - _bufferPos; 33 if (cap <= data.length) { 34 _buffer[_bufferPos .. $] = data[0 .. cap]; 35 processBuffer(); 36 _bufferPos = 0; 37 38 data = data[cap .. $]; 39 } 40 else 41 { 42 _buffer[_bufferPos .. _bufferPos + data.length] = data; 43 _bufferPos += data.length; 44 45 data = null; 46 break; 47 } 48 } 49 } 50 51 void put(R)(R r) if (isInputRange!R && hasLength!R) { 52 bufLength(r.length); 53 54 foreach (immutable i; r) { 55 _buffer[_bufferPos] = i; 56 _bufferPos++; 57 if (_bufferPos == _buffer.length) { 58 processBuffer(); 59 _bufferPos = 0; 60 } 61 } 62 } 63 64 /// Returns the Whirlpool hash. This also calls start to reset the internal state. 65 ubyte[64] finish() @trusted pure nothrow @nogc 66 { 67 // append a '1'-bit 68 // As the buffer is byte-wise in this implementation, _buffer[_bufferPos] is not used yet. 69 _buffer[_bufferPos] = 0x80; 70 _bufferPos++; 71 72 if (_bufferPos > 32) { 73 _buffer[_bufferPos .. $] = 0; 74 processBuffer(); 75 _bufferPos = 0; 76 } 77 78 if (_bufferPos < 32) 79 _buffer[_bufferPos .. 32] = 0; 80 if (_lenBuf != 0) 81 addLength(_lenBuf); 82 _buffer[32 .. $] = _bitLength; 83 processBuffer(); 84 85 ubyte[64] digest = void; 86 87 for (int i = 0, j = 0; i < 8; i++, j += 8) { 88 immutable h = _hash[i]; 89 digest[j] = cast(ubyte)(h >> 56); 90 digest[j + 1] = cast(ubyte)(h >> 48); 91 digest[j + 2] = cast(ubyte)(h >> 40); 92 digest[j + 3] = cast(ubyte)(h >> 32); 93 digest[j + 4] = cast(ubyte)(h >> 24); 94 digest[j + 5] = cast(ubyte)(h >> 16); 95 digest[j + 6] = cast(ubyte)(h >> 8); 96 digest[j + 7] = cast(ubyte) h; 97 } 98 99 start(); 100 101 return digest; 102 } 103 104 private: 105 106 // buffers sum of data length and add into _bitLength when necessary, 107 // to reduce bignum operation. 108 ulong _lenBuf = void; 109 110 void bufLength(ulong bytes) pure nothrow @safe @nogc 111 { 112 ulong sum = _lenBuf + bytes; 113 if (sum < _lenBuf || sum < bytes) { 114 addLength(_lenBuf); 115 _lenBuf = bytes; 116 } 117 else 118 { 119 _lenBuf = sum; 120 } 121 } 122 123 ubyte[32] _bitLength = void; 124 125 void addLength(ulong bytes) @trusted pure nothrow @nogc 126 { 127 uint carry = _bitLength[31] + ((bytes << 3) & 0xFF); 128 _bitLength[31] = cast(ubyte) carry; 129 carry >>= 8; 130 bytes >>= 5; 131 for (int i = 30; i >= 0; i--) { 132 carry += _bitLength[i] + (bytes & 0xFF); 133 _bitLength[i] = cast(ubyte) carry; 134 carry >>= 8; 135 bytes >>= 8; 136 } 137 } 138 139 ubyte[64] _buffer = void; 140 size_t _bufferPos = void; 141 142 ulong[8] _hash = void; 143 144 bool _tailBlock; 145 146 void processBuffer() @trusted pure nothrow @nogc 147 { 148 ulong[8] block = void; 149 150 // map the buffer to a block 151 for (int i = 0, j = 0; i < 8; i++, j += 8) { 152 block[i] = (cast(ulong) _buffer[j] << 56) ^ (cast(ulong) _buffer[j + 1] << 48) ^ ( 153 cast(ulong) _buffer[j + 2] << 40) ^ (cast(ulong) _buffer[j + 3] << 32) ^ ( 154 cast(ulong) _buffer[j + 4] << 24) ^ (cast(ulong) _buffer[j + 5] << 16) ^ ( 155 cast(ulong) _buffer[j + 6] << 8) ^ (cast(ulong) _buffer[j + 7]); 156 } 157 158 // compute and apply K^0 to the cipher state 159 ulong[8] state = void; 160 state[] = block[] ^ _hash[]; 161 162 // iterate over all rounds 163 if (_tailBlock) // not the first block 164 { 165 ulong[8] K = _hash; 166 167 foreach (immutable rcr; rc) { 168 ulong[8] L = void; 169 170 // compute K^r from K^{r-1} 171 mixin(genTransform("L", "K")); 172 L[0] ^= rcr; 173 174 K = L; 175 176 // apply the r-th round transformation 177 mixin(genTransform("L", "state")); 178 179 state[] = L[] ^ K[]; 180 } 181 } 182 else // use precompiled K[] for first block 183 { 184 foreach (immutable k; pcK) { 185 ulong[8] L = void; 186 mixin(genTransform("L", "state")); 187 state[] = L[] ^ k[]; 188 } 189 190 _tailBlock = true; 191 } 192 193 // apply the Miyaguchi-Preneel compression function: 194 _hash[] ^= state[] ^ block[]; 195 } 196 } 197 198 /// Convenience alias for digest function in std.digest using the Whirlpool implementation. 199 auto whirlpoolOf(T...)(T data) { 200 return digest!(Whirlpool, T)(data); 201 } 202 203 /// OOP API for Whirlpool 204 alias WhirlpoolDigest = WrapperDigest!Whirlpool; 205 206 /// 207 unittest { 208 import nxt.digest.whirlpool; 209 210 ubyte[1024] data; 211 Whirlpool wp; 212 wp.start(); 213 wp.put(data[]); 214 wp.start(); 215 wp.put(data[]); 216 ubyte[64] hash = wp.finish(); 217 218 // Template API 219 220 ubyte[64] hash2 = whirlpoolOf("abc"); 221 assert(digest!Whirlpool("abc") == hash2); 222 assert(hexDigest!Whirlpool("abc") == toHexString(hash2)); 223 224 // OOP API 225 226 Digest wpDigest = new WhirlpoolDigest; 227 ubyte[] hash3 = wpDigest.digest("abc"); 228 assert(toHexString(hash3) == "4E2448A4C6F486BB16B6562C73B4020BF3043E3A731BCE721AE1B303D97E6D4C" 229 ~ "7181EEBDB6C57E277D0E34957114CBD6C797FC9D95D8B582D225292076D4EEF5"); 230 } 231 232 @safe pure nothrow /*@nogc*/ unittest { 233 static assert(isDigest!Whirlpool); 234 235 assert(digest!Whirlpool("The quick brown fox jumps over the lazy dog") 236 == hexString!"B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725F" 237 ~ hexString!"D2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35"); 238 239 // ISO test vectors 240 241 assert(digest!Whirlpool("") == hexString!"19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7" 242 ~ hexString!"3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3"); 243 244 assert(digest!Whirlpool("a") == hexString!"8ACA2602792AEC6F11A67206531FB7D7F0DFF59413145E6973C45001D0087B42" 245 ~ hexString!"D11BC645413AEFF63A42391A39145A591A92200D560195E53B478584FDAE231A"); 246 247 assert(digest!Whirlpool("abc") == hexString!"4E2448A4C6F486BB16B6562C73B4020BF3043E3A731BCE721AE1B303D97E6D4C" 248 ~ hexString!"7181EEBDB6C57E277D0E34957114CBD6C797FC9D95D8B582D225292076D4EEF5"); 249 250 assert(digest!Whirlpool("message digest") == hexString!"378C84A4126E2DC6E56DCC7458377AAC838D00032230F53CE1F5700C0FFB4D3B" 251 ~ hexString!"8421557659EF55C106B4B52AC5A4AAA692ED920052838F3362E86DBD37A8903E"); 252 253 assert(digest!Whirlpool("abcdefghijklmnopqrstuvwxyz") 254 == hexString!"F1D754662636FFE92C82EBB9212A484A8D38631EAD4238F5442EE13B8054E41B" 255 ~ hexString!"08BF2A9251C30B6A0B8AAE86177AB4A6F68F673E7207865D5D9819A3DBA4EB3B"); 256 257 assert(digest!Whirlpool("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") 258 == hexString!"DC37E008CF9EE69BF11F00ED9ABA26901DD7C28CDEC066CC6AF42E40F82F3A1E" 259 ~ hexString!"08EBA26629129D8FB7CB57211B9281A65517CC879D7B962142C65F5A7AF01467"); 260 261 assert(digest!Whirlpool("1234567890123456789012345678901234567890" ~ "1234567890123456789012345678901234567890") 262 == hexString!"466EF18BABB0154D25B9D38A6414F5C08784372BCCB204D6549C4AFADB601429" 263 ~ hexString!"4D5BD8DF2A6C44E538CD047B2681A51A2C60481E88C5A20B2C2A80CF3A9A083B"); 264 265 assert(digest!Whirlpool("abcdbcdecdefdefgefghfghighijhijk") 266 == hexString!"2A987EA40F917061F5D6F0A0E4644F488A7A5A52DEEE656207C562F988E95C69" 267 ~ hexString!"16BDC8031BC5BE1B7B947639FE050B56939BAAA0ADFF9AE6745B7B181C3BE3FD"); 268 } 269 270 pure nothrow /*@nogc*/ unittest { 271 import std.range : repeat; 272 273 assert(digest!Whirlpool(repeat('a', 274 10 ^^ 6)) == hexString!"0C99005BEB57EFF50A7CF005560DDF5D29057FD86B20BFD62DECA0F1CCEA4AF5" 275 ~ hexString!"1FC15490EDDC47AF32BB2B66C34FF9AD8C6008AD677F77126953B226E4ED8B01"); 276 } 277 278 @trusted pure nothrow /*@nogc*/ unittest { 279 Whirlpool wp; 280 wp.put(cast(ubyte[])("abc")); 281 wp.start(); 282 wp.put(cast(ubyte[])("abc")); 283 assert(wp.finish() == hexString!"4E2448A4C6F486BB16B6562C73B4020BF3043E3A731BCE721AE1B303D97E6D4C" 284 ~ hexString!"7181EEBDB6C57E277D0E34957114CBD6C797FC9D95D8B582D225292076D4EEF5"); 285 } 286 287 private: 288 289 string genTransform(string assignTo, string from) { 290 import std.string : format; 291 292 string ret; 293 foreach (i; 0 .. 8) { 294 ret ~= format("%s[%s]=", assignTo, i); 295 for (int t = 0, s = 56; t < 8; t++, s -= 8) { 296 ret ~= format("C[%s][(%s[%s] >> %s) & 0xFF]", t, from, (i - t) & 7, s); 297 if (t != 7) 298 ret ~= "^"; 299 } 300 ret ~= ";\n"; 301 } 302 return ret; 303 } 304 305 // number of rounds 306 enum int numRounds = 10; 307 308 // circulant table 309 immutable ulong[256][8] C = [ 310 [ 311 0x18186018c07830d8UL, 0x23238c2305af4626UL, 0xc6c63fc67ef991b8UL, 312 0xe8e887e8136fcdfbUL, 0x878726874ca113cbUL, 0xb8b8dab8a9626d11UL, 313 0x0101040108050209UL, 0x4f4f214f426e9e0dUL, 0x3636d836adee6c9bUL, 314 0xa6a6a2a6590451ffUL, 315 0xd2d26fd2debdb90cUL, 0xf5f5f3f5fb06f70eUL, 0x7979f979ef80f296UL, 316 0x6f6fa16f5fcede30UL, 0x91917e91fcef3f6dUL, 0x52525552aa07a4f8UL, 317 0x60609d6027fdc047UL, 0xbcbccabc89766535UL, 0x9b9b569baccd2b37UL, 318 0x8e8e028e048c018aUL, 0xa3a3b6a371155bd2UL, 0x0c0c300c603c186cUL, 319 0x7b7bf17bff8af684UL, 320 0x3535d435b5e16a80UL, 321 0x1d1d741de8693af5UL, 0xe0e0a7e05347ddb3UL, 0xd7d77bd7f6acb321UL, 322 0xc2c22fc25eed999cUL, 0x2e2eb82e6d965c43UL, 0x4b4b314b627a9629UL, 323 0xfefedffea321e15dUL, 0x575741578216aed5UL, 0x15155415a8412abdUL, 324 0x7777c1779fb6eee8UL, 0x3737dc37a5eb6e92UL, 0xe5e5b3e57b56d79eUL, 325 0x9f9f469f8cd92313UL, 326 0xf0f0e7f0d317fd23UL, 327 0x4a4a354a6a7f9420UL, 0xdada4fda9e95a944UL, 0x58587d58fa25b0a2UL, 328 0xc9c903c906ca8fcfUL, 0x2929a429558d527cUL, 0x0a0a280a5022145aUL, 329 0xb1b1feb1e14f7f50UL, 0xa0a0baa0691a5dc9UL, 0x6b6bb16b7fdad614UL, 330 0x85852e855cab17d9UL, 0xbdbdcebd8173673cUL, 0x5d5d695dd234ba8fUL, 331 0x1010401080502090UL, 332 0xf4f4f7f4f303f507UL, 333 0xcbcb0bcb16c08bddUL, 0x3e3ef83eedc67cd3UL, 0x0505140528110a2dUL, 334 0x676781671fe6ce78UL, 0xe4e4b7e47353d597UL, 0x27279c2725bb4e02UL, 335 0x4141194132588273UL, 0x8b8b168b2c9d0ba7UL, 0xa7a7a6a7510153f6UL, 336 0x7d7de97dcf94fab2UL, 0x95956e95dcfb3749UL, 0xd8d847d88e9fad56UL, 337 0xfbfbcbfb8b30eb70UL, 338 0xeeee9fee2371c1cdUL, 339 0x7c7ced7cc791f8bbUL, 0x6666856617e3cc71UL, 0xdddd53dda68ea77bUL, 340 0x17175c17b84b2eafUL, 0x4747014702468e45UL, 0x9e9e429e84dc211aUL, 341 0xcaca0fca1ec589d4UL, 0x2d2db42d75995a58UL, 0xbfbfc6bf9179632eUL, 342 0x07071c07381b0e3fUL, 0xadad8ead012347acUL, 0x5a5a755aea2fb4b0UL, 343 0x838336836cb51befUL, 344 0x3333cc3385ff66b6UL, 345 0x636391633ff2c65cUL, 0x02020802100a0412UL, 0xaaaa92aa39384993UL, 346 0x7171d971afa8e2deUL, 0xc8c807c80ecf8dc6UL, 0x19196419c87d32d1UL, 347 0x494939497270923bUL, 0xd9d943d9869aaf5fUL, 0xf2f2eff2c31df931UL, 348 0xe3e3abe34b48dba8UL, 0x5b5b715be22ab6b9UL, 0x88881a8834920dbcUL, 349 0x9a9a529aa4c8293eUL, 350 0x262698262dbe4c0bUL, 351 0x3232c8328dfa64bfUL, 0xb0b0fab0e94a7d59UL, 0xe9e983e91b6acff2UL, 352 0x0f0f3c0f78331e77UL, 0xd5d573d5e6a6b733UL, 0x80803a8074ba1df4UL, 353 0xbebec2be997c6127UL, 0xcdcd13cd26de87ebUL, 0x3434d034bde46889UL, 354 0x48483d487a759032UL, 0xffffdbffab24e354UL, 0x7a7af57af78ff48dUL, 355 0x90907a90f4ea3d64UL, 356 0x5f5f615fc23ebe9dUL, 357 0x202080201da0403dUL, 0x6868bd6867d5d00fUL, 0x1a1a681ad07234caUL, 358 0xaeae82ae192c41b7UL, 0xb4b4eab4c95e757dUL, 0x54544d549a19a8ceUL, 359 0x93937693ece53b7fUL, 0x222288220daa442fUL, 0x64648d6407e9c863UL, 360 0xf1f1e3f1db12ff2aUL, 0x7373d173bfa2e6ccUL, 0x12124812905a2482UL, 361 0x40401d403a5d807aUL, 362 0x0808200840281048UL, 363 0xc3c32bc356e89b95UL, 0xecec97ec337bc5dfUL, 0xdbdb4bdb9690ab4dUL, 364 0xa1a1bea1611f5fc0UL, 0x8d8d0e8d1c830791UL, 0x3d3df43df5c97ac8UL, 365 0x97976697ccf1335bUL, 0x0000000000000000UL, 0xcfcf1bcf36d483f9UL, 366 0x2b2bac2b4587566eUL, 0x7676c57697b3ece1UL, 0x8282328264b019e6UL, 367 0xd6d67fd6fea9b128UL, 368 0x1b1b6c1bd87736c3UL, 369 0xb5b5eeb5c15b7774UL, 0xafaf86af112943beUL, 0x6a6ab56a77dfd41dUL, 370 0x50505d50ba0da0eaUL, 0x45450945124c8a57UL, 0xf3f3ebf3cb18fb38UL, 371 0x3030c0309df060adUL, 0xefef9bef2b74c3c4UL, 0x3f3ffc3fe5c37edaUL, 372 0x55554955921caac7UL, 0xa2a2b2a2791059dbUL, 0xeaea8fea0365c9e9UL, 373 0x656589650fecca6aUL, 374 0xbabad2bab9686903UL, 375 0x2f2fbc2f65935e4aUL, 0xc0c027c04ee79d8eUL, 0xdede5fdebe81a160UL, 376 0x1c1c701ce06c38fcUL, 0xfdfdd3fdbb2ee746UL, 0x4d4d294d52649a1fUL, 377 0x92927292e4e03976UL, 0x7575c9758fbceafaUL, 0x06061806301e0c36UL, 378 0x8a8a128a249809aeUL, 0xb2b2f2b2f940794bUL, 0xe6e6bfe66359d185UL, 379 0x0e0e380e70361c7eUL, 380 0x1f1f7c1ff8633ee7UL, 381 0x6262956237f7c455UL, 0xd4d477d4eea3b53aUL, 0xa8a89aa829324d81UL, 382 0x96966296c4f43152UL, 0xf9f9c3f99b3aef62UL, 0xc5c533c566f697a3UL, 383 0x2525942535b14a10UL, 0x59597959f220b2abUL, 0x84842a8454ae15d0UL, 384 0x7272d572b7a7e4c5UL, 0x3939e439d5dd72ecUL, 0x4c4c2d4c5a619816UL, 385 0x5e5e655eca3bbc94UL, 386 0x7878fd78e785f09fUL, 387 0x3838e038ddd870e5UL, 0x8c8c0a8c14860598UL, 0xd1d163d1c6b2bf17UL, 388 0xa5a5aea5410b57e4UL, 0xe2e2afe2434dd9a1UL, 0x616199612ff8c24eUL, 389 0xb3b3f6b3f1457b42UL, 0x2121842115a54234UL, 0x9c9c4a9c94d62508UL, 390 0x1e1e781ef0663ceeUL, 0x4343114322528661UL, 0xc7c73bc776fc93b1UL, 391 0xfcfcd7fcb32be54fUL, 392 0x0404100420140824UL, 393 0x51515951b208a2e3UL, 0x99995e99bcc72f25UL, 0x6d6da96d4fc4da22UL, 394 0x0d0d340d68391a65UL, 0xfafacffa8335e979UL, 0xdfdf5bdfb684a369UL, 395 0x7e7ee57ed79bfca9UL, 0x242490243db44819UL, 0x3b3bec3bc5d776feUL, 396 0xabab96ab313d4b9aUL, 0xcece1fce3ed181f0UL, 0x1111441188552299UL, 397 0x8f8f068f0c890383UL, 398 0x4e4e254e4a6b9c04UL, 399 0xb7b7e6b7d1517366UL, 0xebeb8beb0b60cbe0UL, 0x3c3cf03cfdcc78c1UL, 400 0x81813e817cbf1ffdUL, 0x94946a94d4fe3540UL, 0xf7f7fbf7eb0cf31cUL, 401 0xb9b9deb9a1676f18UL, 0x13134c13985f268bUL, 0x2c2cb02c7d9c5851UL, 402 0xd3d36bd3d6b8bb05UL, 0xe7e7bbe76b5cd38cUL, 0x6e6ea56e57cbdc39UL, 403 0xc4c437c46ef395aaUL, 404 0x03030c03180f061bUL, 405 0x565645568a13acdcUL, 0x44440d441a49885eUL, 0x7f7fe17fdf9efea0UL, 406 0xa9a99ea921374f88UL, 0x2a2aa82a4d825467UL, 0xbbbbd6bbb16d6b0aUL, 407 0xc1c123c146e29f87UL, 0x53535153a202a6f1UL, 0xdcdc57dcae8ba572UL, 408 0x0b0b2c0b58271653UL, 0x9d9d4e9d9cd32701UL, 0x6c6cad6c47c1d82bUL, 409 0x3131c43195f562a4UL, 410 0x7474cd7487b9e8f3UL, 411 0xf6f6fff6e309f115UL, 0x464605460a438c4cUL, 0xacac8aac092645a5UL, 412 0x89891e893c970fb5UL, 0x14145014a04428b4UL, 0xe1e1a3e15b42dfbaUL, 413 0x16165816b04e2ca6UL, 0x3a3ae83acdd274f7UL, 0x6969b9696fd0d206UL, 414 0x09092409482d1241UL, 0x7070dd70a7ade0d7UL, 0xb6b6e2b6d954716fUL, 415 0xd0d067d0ceb7bd1eUL, 416 0xeded93ed3b7ec7d6UL, 417 0xcccc17cc2edb85e2UL, 0x424215422a578468UL, 0x98985a98b4c22d2cUL, 418 0xa4a4aaa4490e55edUL, 0x2828a0285d885075UL, 0x5c5c6d5cda31b886UL, 419 0xf8f8c7f8933fed6bUL, 0x8686228644a411c2UL, 420 ], [ 421 0xd818186018c07830UL, 0x2623238c2305af46UL, 0xb8c6c63fc67ef991UL, 422 0xfbe8e887e8136fcdUL, 0xcb878726874ca113UL, 0x11b8b8dab8a9626dUL, 423 0x0901010401080502UL, 0x0d4f4f214f426e9eUL, 0x9b3636d836adee6cUL, 424 0xffa6a6a2a6590451UL, 425 0x0cd2d26fd2debdb9UL, 0x0ef5f5f3f5fb06f7UL, 0x967979f979ef80f2UL, 426 0x306f6fa16f5fcedeUL, 0x6d91917e91fcef3fUL, 0xf852525552aa07a4UL, 427 0x4760609d6027fdc0UL, 0x35bcbccabc897665UL, 0x379b9b569baccd2bUL, 428 0x8a8e8e028e048c01UL, 0xd2a3a3b6a371155bUL, 0x6c0c0c300c603c18UL, 429 0x847b7bf17bff8af6UL, 430 0x803535d435b5e16aUL, 431 0xf51d1d741de8693aUL, 0xb3e0e0a7e05347ddUL, 0x21d7d77bd7f6acb3UL, 432 0x9cc2c22fc25eed99UL, 0x432e2eb82e6d965cUL, 0x294b4b314b627a96UL, 433 0x5dfefedffea321e1UL, 0xd5575741578216aeUL, 0xbd15155415a8412aUL, 434 0xe87777c1779fb6eeUL, 0x923737dc37a5eb6eUL, 0x9ee5e5b3e57b56d7UL, 435 0x139f9f469f8cd923UL, 436 0x23f0f0e7f0d317fdUL, 437 0x204a4a354a6a7f94UL, 0x44dada4fda9e95a9UL, 0xa258587d58fa25b0UL, 438 0xcfc9c903c906ca8fUL, 0x7c2929a429558d52UL, 0x5a0a0a280a502214UL, 439 0x50b1b1feb1e14f7fUL, 0xc9a0a0baa0691a5dUL, 0x146b6bb16b7fdad6UL, 440 0xd985852e855cab17UL, 0x3cbdbdcebd817367UL, 0x8f5d5d695dd234baUL, 441 0x9010104010805020UL, 442 0x07f4f4f7f4f303f5UL, 443 0xddcbcb0bcb16c08bUL, 0xd33e3ef83eedc67cUL, 0x2d0505140528110aUL, 444 0x78676781671fe6ceUL, 0x97e4e4b7e47353d5UL, 0x0227279c2725bb4eUL, 445 0x7341411941325882UL, 0xa78b8b168b2c9d0bUL, 0xf6a7a7a6a7510153UL, 446 0xb27d7de97dcf94faUL, 0x4995956e95dcfb37UL, 0x56d8d847d88e9fadUL, 447 0x70fbfbcbfb8b30ebUL, 448 0xcdeeee9fee2371c1UL, 449 0xbb7c7ced7cc791f8UL, 0x716666856617e3ccUL, 0x7bdddd53dda68ea7UL, 450 0xaf17175c17b84b2eUL, 0x454747014702468eUL, 0x1a9e9e429e84dc21UL, 451 0xd4caca0fca1ec589UL, 0x582d2db42d75995aUL, 0x2ebfbfc6bf917963UL, 452 0x3f07071c07381b0eUL, 0xacadad8ead012347UL, 0xb05a5a755aea2fb4UL, 453 0xef838336836cb51bUL, 454 0xb63333cc3385ff66UL, 455 0x5c636391633ff2c6UL, 0x1202020802100a04UL, 0x93aaaa92aa393849UL, 456 0xde7171d971afa8e2UL, 0xc6c8c807c80ecf8dUL, 0xd119196419c87d32UL, 457 0x3b49493949727092UL, 0x5fd9d943d9869aafUL, 0x31f2f2eff2c31df9UL, 458 0xa8e3e3abe34b48dbUL, 0xb95b5b715be22ab6UL, 0xbc88881a8834920dUL, 459 0x3e9a9a529aa4c829UL, 460 0x0b262698262dbe4cUL, 461 0xbf3232c8328dfa64UL, 0x59b0b0fab0e94a7dUL, 0xf2e9e983e91b6acfUL, 462 0x770f0f3c0f78331eUL, 0x33d5d573d5e6a6b7UL, 0xf480803a8074ba1dUL, 463 0x27bebec2be997c61UL, 0xebcdcd13cd26de87UL, 0x893434d034bde468UL, 464 0x3248483d487a7590UL, 0x54ffffdbffab24e3UL, 0x8d7a7af57af78ff4UL, 465 0x6490907a90f4ea3dUL, 466 0x9d5f5f615fc23ebeUL, 467 0x3d202080201da040UL, 0x0f6868bd6867d5d0UL, 0xca1a1a681ad07234UL, 468 0xb7aeae82ae192c41UL, 0x7db4b4eab4c95e75UL, 0xce54544d549a19a8UL, 469 0x7f93937693ece53bUL, 0x2f222288220daa44UL, 0x6364648d6407e9c8UL, 470 0x2af1f1e3f1db12ffUL, 0xcc7373d173bfa2e6UL, 0x8212124812905a24UL, 471 0x7a40401d403a5d80UL, 472 0x4808082008402810UL, 473 0x95c3c32bc356e89bUL, 0xdfecec97ec337bc5UL, 0x4ddbdb4bdb9690abUL, 474 0xc0a1a1bea1611f5fUL, 0x918d8d0e8d1c8307UL, 0xc83d3df43df5c97aUL, 475 0x5b97976697ccf133UL, 0x0000000000000000UL, 0xf9cfcf1bcf36d483UL, 476 0x6e2b2bac2b458756UL, 0xe17676c57697b3ecUL, 0xe68282328264b019UL, 477 0x28d6d67fd6fea9b1UL, 478 0xc31b1b6c1bd87736UL, 479 0x74b5b5eeb5c15b77UL, 0xbeafaf86af112943UL, 0x1d6a6ab56a77dfd4UL, 480 0xea50505d50ba0da0UL, 0x5745450945124c8aUL, 0x38f3f3ebf3cb18fbUL, 481 0xad3030c0309df060UL, 0xc4efef9bef2b74c3UL, 0xda3f3ffc3fe5c37eUL, 482 0xc755554955921caaUL, 0xdba2a2b2a2791059UL, 0xe9eaea8fea0365c9UL, 483 0x6a656589650feccaUL, 484 0x03babad2bab96869UL, 485 0x4a2f2fbc2f65935eUL, 0x8ec0c027c04ee79dUL, 0x60dede5fdebe81a1UL, 486 0xfc1c1c701ce06c38UL, 0x46fdfdd3fdbb2ee7UL, 0x1f4d4d294d52649aUL, 487 0x7692927292e4e039UL, 0xfa7575c9758fbceaUL, 0x3606061806301e0cUL, 488 0xae8a8a128a249809UL, 0x4bb2b2f2b2f94079UL, 0x85e6e6bfe66359d1UL, 489 0x7e0e0e380e70361cUL, 490 0xe71f1f7c1ff8633eUL, 491 0x556262956237f7c4UL, 0x3ad4d477d4eea3b5UL, 0x81a8a89aa829324dUL, 492 0x5296966296c4f431UL, 0x62f9f9c3f99b3aefUL, 0xa3c5c533c566f697UL, 493 0x102525942535b14aUL, 0xab59597959f220b2UL, 0xd084842a8454ae15UL, 494 0xc57272d572b7a7e4UL, 0xec3939e439d5dd72UL, 0x164c4c2d4c5a6198UL, 495 0x945e5e655eca3bbcUL, 496 0x9f7878fd78e785f0UL, 497 0xe53838e038ddd870UL, 0x988c8c0a8c148605UL, 0x17d1d163d1c6b2bfUL, 498 0xe4a5a5aea5410b57UL, 0xa1e2e2afe2434dd9UL, 0x4e616199612ff8c2UL, 499 0x42b3b3f6b3f1457bUL, 0x342121842115a542UL, 0x089c9c4a9c94d625UL, 500 0xee1e1e781ef0663cUL, 0x6143431143225286UL, 0xb1c7c73bc776fc93UL, 501 0x4ffcfcd7fcb32be5UL, 502 0x2404041004201408UL, 503 0xe351515951b208a2UL, 0x2599995e99bcc72fUL, 0x226d6da96d4fc4daUL, 504 0x650d0d340d68391aUL, 0x79fafacffa8335e9UL, 0x69dfdf5bdfb684a3UL, 505 0xa97e7ee57ed79bfcUL, 0x19242490243db448UL, 0xfe3b3bec3bc5d776UL, 506 0x9aabab96ab313d4bUL, 0xf0cece1fce3ed181UL, 0x9911114411885522UL, 507 0x838f8f068f0c8903UL, 508 0x044e4e254e4a6b9cUL, 509 0x66b7b7e6b7d15173UL, 0xe0ebeb8beb0b60cbUL, 0xc13c3cf03cfdcc78UL, 510 0xfd81813e817cbf1fUL, 0x4094946a94d4fe35UL, 0x1cf7f7fbf7eb0cf3UL, 511 0x18b9b9deb9a1676fUL, 0x8b13134c13985f26UL, 0x512c2cb02c7d9c58UL, 512 0x05d3d36bd3d6b8bbUL, 0x8ce7e7bbe76b5cd3UL, 0x396e6ea56e57cbdcUL, 513 0xaac4c437c46ef395UL, 514 0x1b03030c03180f06UL, 515 0xdc565645568a13acUL, 0x5e44440d441a4988UL, 0xa07f7fe17fdf9efeUL, 516 0x88a9a99ea921374fUL, 0x672a2aa82a4d8254UL, 0x0abbbbd6bbb16d6bUL, 517 0x87c1c123c146e29fUL, 0xf153535153a202a6UL, 0x72dcdc57dcae8ba5UL, 518 0x530b0b2c0b582716UL, 0x019d9d4e9d9cd327UL, 0x2b6c6cad6c47c1d8UL, 519 0xa43131c43195f562UL, 520 0xf37474cd7487b9e8UL, 521 0x15f6f6fff6e309f1UL, 0x4c464605460a438cUL, 0xa5acac8aac092645UL, 522 0xb589891e893c970fUL, 0xb414145014a04428UL, 0xbae1e1a3e15b42dfUL, 523 0xa616165816b04e2cUL, 0xf73a3ae83acdd274UL, 0x066969b9696fd0d2UL, 524 0x4109092409482d12UL, 0xd77070dd70a7ade0UL, 0x6fb6b6e2b6d95471UL, 525 0x1ed0d067d0ceb7bdUL, 526 0xd6eded93ed3b7ec7UL, 527 0xe2cccc17cc2edb85UL, 0x68424215422a5784UL, 0x2c98985a98b4c22dUL, 528 0xeda4a4aaa4490e55UL, 0x752828a0285d8850UL, 0x865c5c6d5cda31b8UL, 529 0x6bf8f8c7f8933fedUL, 0xc28686228644a411UL, 530 ], [ 531 0x30d818186018c078UL, 0x462623238c2305afUL, 0x91b8c6c63fc67ef9UL, 532 0xcdfbe8e887e8136fUL, 0x13cb878726874ca1UL, 0x6d11b8b8dab8a962UL, 533 0x0209010104010805UL, 0x9e0d4f4f214f426eUL, 0x6c9b3636d836adeeUL, 534 0x51ffa6a6a2a65904UL, 535 0xb90cd2d26fd2debdUL, 0xf70ef5f5f3f5fb06UL, 0xf2967979f979ef80UL, 536 0xde306f6fa16f5fceUL, 0x3f6d91917e91fcefUL, 0xa4f852525552aa07UL, 537 0xc04760609d6027fdUL, 0x6535bcbccabc8976UL, 0x2b379b9b569baccdUL, 538 0x018a8e8e028e048cUL, 0x5bd2a3a3b6a37115UL, 0x186c0c0c300c603cUL, 539 0xf6847b7bf17bff8aUL, 540 0x6a803535d435b5e1UL, 541 0x3af51d1d741de869UL, 0xddb3e0e0a7e05347UL, 0xb321d7d77bd7f6acUL, 542 0x999cc2c22fc25eedUL, 0x5c432e2eb82e6d96UL, 0x96294b4b314b627aUL, 543 0xe15dfefedffea321UL, 0xaed5575741578216UL, 0x2abd15155415a841UL, 544 0xeee87777c1779fb6UL, 0x6e923737dc37a5ebUL, 0xd79ee5e5b3e57b56UL, 545 0x23139f9f469f8cd9UL, 546 0xfd23f0f0e7f0d317UL, 547 0x94204a4a354a6a7fUL, 0xa944dada4fda9e95UL, 0xb0a258587d58fa25UL, 548 0x8fcfc9c903c906caUL, 0x527c2929a429558dUL, 0x145a0a0a280a5022UL, 549 0x7f50b1b1feb1e14fUL, 0x5dc9a0a0baa0691aUL, 0xd6146b6bb16b7fdaUL, 550 0x17d985852e855cabUL, 0x673cbdbdcebd8173UL, 0xba8f5d5d695dd234UL, 551 0x2090101040108050UL, 552 0xf507f4f4f7f4f303UL, 553 0x8bddcbcb0bcb16c0UL, 0x7cd33e3ef83eedc6UL, 0x0a2d050514052811UL, 554 0xce78676781671fe6UL, 0xd597e4e4b7e47353UL, 0x4e0227279c2725bbUL, 555 0x8273414119413258UL, 0x0ba78b8b168b2c9dUL, 0x53f6a7a7a6a75101UL, 556 0xfab27d7de97dcf94UL, 0x374995956e95dcfbUL, 0xad56d8d847d88e9fUL, 557 0xeb70fbfbcbfb8b30UL, 558 0xc1cdeeee9fee2371UL, 559 0xf8bb7c7ced7cc791UL, 0xcc716666856617e3UL, 0xa77bdddd53dda68eUL, 560 0x2eaf17175c17b84bUL, 0x8e45474701470246UL, 0x211a9e9e429e84dcUL, 561 0x89d4caca0fca1ec5UL, 0x5a582d2db42d7599UL, 0x632ebfbfc6bf9179UL, 562 0x0e3f07071c07381bUL, 0x47acadad8ead0123UL, 0xb4b05a5a755aea2fUL, 563 0x1bef838336836cb5UL, 564 0x66b63333cc3385ffUL, 565 0xc65c636391633ff2UL, 0x041202020802100aUL, 0x4993aaaa92aa3938UL, 566 0xe2de7171d971afa8UL, 0x8dc6c8c807c80ecfUL, 0x32d119196419c87dUL, 567 0x923b494939497270UL, 0xaf5fd9d943d9869aUL, 0xf931f2f2eff2c31dUL, 568 0xdba8e3e3abe34b48UL, 0xb6b95b5b715be22aUL, 0x0dbc88881a883492UL, 569 0x293e9a9a529aa4c8UL, 570 0x4c0b262698262dbeUL, 571 0x64bf3232c8328dfaUL, 0x7d59b0b0fab0e94aUL, 0xcff2e9e983e91b6aUL, 572 0x1e770f0f3c0f7833UL, 0xb733d5d573d5e6a6UL, 0x1df480803a8074baUL, 573 0x6127bebec2be997cUL, 0x87ebcdcd13cd26deUL, 0x68893434d034bde4UL, 574 0x903248483d487a75UL, 0xe354ffffdbffab24UL, 0xf48d7a7af57af78fUL, 575 0x3d6490907a90f4eaUL, 576 0xbe9d5f5f615fc23eUL, 577 0x403d202080201da0UL, 0xd00f6868bd6867d5UL, 0x34ca1a1a681ad072UL, 578 0x41b7aeae82ae192cUL, 0x757db4b4eab4c95eUL, 0xa8ce54544d549a19UL, 579 0x3b7f93937693ece5UL, 0x442f222288220daaUL, 0xc86364648d6407e9UL, 580 0xff2af1f1e3f1db12UL, 0xe6cc7373d173bfa2UL, 0x248212124812905aUL, 581 0x807a40401d403a5dUL, 582 0x1048080820084028UL, 583 0x9b95c3c32bc356e8UL, 0xc5dfecec97ec337bUL, 0xab4ddbdb4bdb9690UL, 584 0x5fc0a1a1bea1611fUL, 0x07918d8d0e8d1c83UL, 0x7ac83d3df43df5c9UL, 585 0x335b97976697ccf1UL, 0x0000000000000000UL, 0x83f9cfcf1bcf36d4UL, 586 0x566e2b2bac2b4587UL, 0xece17676c57697b3UL, 0x19e68282328264b0UL, 587 0xb128d6d67fd6fea9UL, 588 0x36c31b1b6c1bd877UL, 589 0x7774b5b5eeb5c15bUL, 0x43beafaf86af1129UL, 0xd41d6a6ab56a77dfUL, 590 0xa0ea50505d50ba0dUL, 0x8a5745450945124cUL, 0xfb38f3f3ebf3cb18UL, 591 0x60ad3030c0309df0UL, 0xc3c4efef9bef2b74UL, 0x7eda3f3ffc3fe5c3UL, 592 0xaac755554955921cUL, 0x59dba2a2b2a27910UL, 0xc9e9eaea8fea0365UL, 593 0xca6a656589650fecUL, 594 0x6903babad2bab968UL, 595 0x5e4a2f2fbc2f6593UL, 0x9d8ec0c027c04ee7UL, 0xa160dede5fdebe81UL, 596 0x38fc1c1c701ce06cUL, 0xe746fdfdd3fdbb2eUL, 0x9a1f4d4d294d5264UL, 597 0x397692927292e4e0UL, 0xeafa7575c9758fbcUL, 0x0c3606061806301eUL, 598 0x09ae8a8a128a2498UL, 0x794bb2b2f2b2f940UL, 0xd185e6e6bfe66359UL, 599 0x1c7e0e0e380e7036UL, 600 0x3ee71f1f7c1ff863UL, 601 0xc4556262956237f7UL, 0xb53ad4d477d4eea3UL, 0x4d81a8a89aa82932UL, 602 0x315296966296c4f4UL, 0xef62f9f9c3f99b3aUL, 0x97a3c5c533c566f6UL, 603 0x4a102525942535b1UL, 0xb2ab59597959f220UL, 0x15d084842a8454aeUL, 604 0xe4c57272d572b7a7UL, 0x72ec3939e439d5ddUL, 0x98164c4c2d4c5a61UL, 605 0xbc945e5e655eca3bUL, 606 0xf09f7878fd78e785UL, 607 0x70e53838e038ddd8UL, 0x05988c8c0a8c1486UL, 0xbf17d1d163d1c6b2UL, 608 0x57e4a5a5aea5410bUL, 0xd9a1e2e2afe2434dUL, 0xc24e616199612ff8UL, 609 0x7b42b3b3f6b3f145UL, 0x42342121842115a5UL, 0x25089c9c4a9c94d6UL, 610 0x3cee1e1e781ef066UL, 0x8661434311432252UL, 0x93b1c7c73bc776fcUL, 611 0xe54ffcfcd7fcb32bUL, 612 0x0824040410042014UL, 613 0xa2e351515951b208UL, 0x2f2599995e99bcc7UL, 0xda226d6da96d4fc4UL, 614 0x1a650d0d340d6839UL, 0xe979fafacffa8335UL, 0xa369dfdf5bdfb684UL, 615 0xfca97e7ee57ed79bUL, 0x4819242490243db4UL, 0x76fe3b3bec3bc5d7UL, 616 0x4b9aabab96ab313dUL, 0x81f0cece1fce3ed1UL, 0x2299111144118855UL, 617 0x03838f8f068f0c89UL, 618 0x9c044e4e254e4a6bUL, 619 0x7366b7b7e6b7d151UL, 0xcbe0ebeb8beb0b60UL, 0x78c13c3cf03cfdccUL, 620 0x1ffd81813e817cbfUL, 0x354094946a94d4feUL, 0xf31cf7f7fbf7eb0cUL, 621 0x6f18b9b9deb9a167UL, 0x268b13134c13985fUL, 0x58512c2cb02c7d9cUL, 622 0xbb05d3d36bd3d6b8UL, 0xd38ce7e7bbe76b5cUL, 0xdc396e6ea56e57cbUL, 623 0x95aac4c437c46ef3UL, 624 0x061b03030c03180fUL, 625 0xacdc565645568a13UL, 0x885e44440d441a49UL, 0xfea07f7fe17fdf9eUL, 626 0x4f88a9a99ea92137UL, 0x54672a2aa82a4d82UL, 0x6b0abbbbd6bbb16dUL, 627 0x9f87c1c123c146e2UL, 0xa6f153535153a202UL, 0xa572dcdc57dcae8bUL, 628 0x16530b0b2c0b5827UL, 0x27019d9d4e9d9cd3UL, 0xd82b6c6cad6c47c1UL, 629 0x62a43131c43195f5UL, 630 0xe8f37474cd7487b9UL, 631 0xf115f6f6fff6e309UL, 0x8c4c464605460a43UL, 0x45a5acac8aac0926UL, 632 0x0fb589891e893c97UL, 0x28b414145014a044UL, 0xdfbae1e1a3e15b42UL, 633 0x2ca616165816b04eUL, 0x74f73a3ae83acdd2UL, 0xd2066969b9696fd0UL, 634 0x124109092409482dUL, 0xe0d77070dd70a7adUL, 0x716fb6b6e2b6d954UL, 635 0xbd1ed0d067d0ceb7UL, 636 0xc7d6eded93ed3b7eUL, 637 0x85e2cccc17cc2edbUL, 0x8468424215422a57UL, 0x2d2c98985a98b4c2UL, 638 0x55eda4a4aaa4490eUL, 0x50752828a0285d88UL, 0xb8865c5c6d5cda31UL, 639 0xed6bf8f8c7f8933fUL, 0x11c28686228644a4UL, 640 ], [ 641 0x7830d818186018c0UL, 0xaf462623238c2305UL, 0xf991b8c6c63fc67eUL, 642 0x6fcdfbe8e887e813UL, 0xa113cb878726874cUL, 0x626d11b8b8dab8a9UL, 643 0x0502090101040108UL, 0x6e9e0d4f4f214f42UL, 0xee6c9b3636d836adUL, 644 0x0451ffa6a6a2a659UL, 645 0xbdb90cd2d26fd2deUL, 0x06f70ef5f5f3f5fbUL, 0x80f2967979f979efUL, 646 0xcede306f6fa16f5fUL, 0xef3f6d91917e91fcUL, 0x07a4f852525552aaUL, 647 0xfdc04760609d6027UL, 0x766535bcbccabc89UL, 0xcd2b379b9b569bacUL, 648 0x8c018a8e8e028e04UL, 0x155bd2a3a3b6a371UL, 0x3c186c0c0c300c60UL, 649 0x8af6847b7bf17bffUL, 650 0xe16a803535d435b5UL, 651 0x693af51d1d741de8UL, 0x47ddb3e0e0a7e053UL, 0xacb321d7d77bd7f6UL, 652 0xed999cc2c22fc25eUL, 0x965c432e2eb82e6dUL, 0x7a96294b4b314b62UL, 653 0x21e15dfefedffea3UL, 0x16aed55757415782UL, 0x412abd15155415a8UL, 654 0xb6eee87777c1779fUL, 0xeb6e923737dc37a5UL, 0x56d79ee5e5b3e57bUL, 655 0xd923139f9f469f8cUL, 656 0x17fd23f0f0e7f0d3UL, 657 0x7f94204a4a354a6aUL, 0x95a944dada4fda9eUL, 0x25b0a258587d58faUL, 658 0xca8fcfc9c903c906UL, 0x8d527c2929a42955UL, 0x22145a0a0a280a50UL, 659 0x4f7f50b1b1feb1e1UL, 0x1a5dc9a0a0baa069UL, 0xdad6146b6bb16b7fUL, 660 0xab17d985852e855cUL, 0x73673cbdbdcebd81UL, 0x34ba8f5d5d695dd2UL, 661 0x5020901010401080UL, 662 0x03f507f4f4f7f4f3UL, 663 0xc08bddcbcb0bcb16UL, 0xc67cd33e3ef83eedUL, 0x110a2d0505140528UL, 664 0xe6ce78676781671fUL, 0x53d597e4e4b7e473UL, 0xbb4e0227279c2725UL, 665 0x5882734141194132UL, 0x9d0ba78b8b168b2cUL, 0x0153f6a7a7a6a751UL, 666 0x94fab27d7de97dcfUL, 0xfb374995956e95dcUL, 0x9fad56d8d847d88eUL, 667 0x30eb70fbfbcbfb8bUL, 668 0x71c1cdeeee9fee23UL, 669 0x91f8bb7c7ced7cc7UL, 0xe3cc716666856617UL, 0x8ea77bdddd53dda6UL, 670 0x4b2eaf17175c17b8UL, 0x468e454747014702UL, 0xdc211a9e9e429e84UL, 671 0xc589d4caca0fca1eUL, 0x995a582d2db42d75UL, 0x79632ebfbfc6bf91UL, 672 0x1b0e3f07071c0738UL, 0x2347acadad8ead01UL, 0x2fb4b05a5a755aeaUL, 673 0xb51bef838336836cUL, 674 0xff66b63333cc3385UL, 675 0xf2c65c636391633fUL, 0x0a04120202080210UL, 0x384993aaaa92aa39UL, 676 0xa8e2de7171d971afUL, 0xcf8dc6c8c807c80eUL, 0x7d32d119196419c8UL, 677 0x70923b4949394972UL, 0x9aaf5fd9d943d986UL, 0x1df931f2f2eff2c3UL, 678 0x48dba8e3e3abe34bUL, 0x2ab6b95b5b715be2UL, 0x920dbc88881a8834UL, 679 0xc8293e9a9a529aa4UL, 680 0xbe4c0b262698262dUL, 681 0xfa64bf3232c8328dUL, 0x4a7d59b0b0fab0e9UL, 0x6acff2e9e983e91bUL, 682 0x331e770f0f3c0f78UL, 0xa6b733d5d573d5e6UL, 0xba1df480803a8074UL, 683 0x7c6127bebec2be99UL, 0xde87ebcdcd13cd26UL, 0xe468893434d034bdUL, 684 0x75903248483d487aUL, 0x24e354ffffdbffabUL, 0x8ff48d7a7af57af7UL, 685 0xea3d6490907a90f4UL, 686 0x3ebe9d5f5f615fc2UL, 687 0xa0403d202080201dUL, 0xd5d00f6868bd6867UL, 0x7234ca1a1a681ad0UL, 688 0x2c41b7aeae82ae19UL, 0x5e757db4b4eab4c9UL, 0x19a8ce54544d549aUL, 689 0xe53b7f93937693ecUL, 0xaa442f222288220dUL, 0xe9c86364648d6407UL, 690 0x12ff2af1f1e3f1dbUL, 0xa2e6cc7373d173bfUL, 0x5a24821212481290UL, 691 0x5d807a40401d403aUL, 692 0x2810480808200840UL, 693 0xe89b95c3c32bc356UL, 0x7bc5dfecec97ec33UL, 0x90ab4ddbdb4bdb96UL, 694 0x1f5fc0a1a1bea161UL, 0x8307918d8d0e8d1cUL, 0xc97ac83d3df43df5UL, 695 0xf1335b97976697ccUL, 0x0000000000000000UL, 0xd483f9cfcf1bcf36UL, 696 0x87566e2b2bac2b45UL, 0xb3ece17676c57697UL, 0xb019e68282328264UL, 697 0xa9b128d6d67fd6feUL, 698 0x7736c31b1b6c1bd8UL, 699 0x5b7774b5b5eeb5c1UL, 0x2943beafaf86af11UL, 0xdfd41d6a6ab56a77UL, 700 0x0da0ea50505d50baUL, 0x4c8a574545094512UL, 0x18fb38f3f3ebf3cbUL, 701 0xf060ad3030c0309dUL, 0x74c3c4efef9bef2bUL, 0xc37eda3f3ffc3fe5UL, 702 0x1caac75555495592UL, 0x1059dba2a2b2a279UL, 0x65c9e9eaea8fea03UL, 703 0xecca6a656589650fUL, 704 0x686903babad2bab9UL, 705 0x935e4a2f2fbc2f65UL, 0xe79d8ec0c027c04eUL, 0x81a160dede5fdebeUL, 706 0x6c38fc1c1c701ce0UL, 0x2ee746fdfdd3fdbbUL, 0x649a1f4d4d294d52UL, 707 0xe0397692927292e4UL, 0xbceafa7575c9758fUL, 0x1e0c360606180630UL, 708 0x9809ae8a8a128a24UL, 0x40794bb2b2f2b2f9UL, 0x59d185e6e6bfe663UL, 709 0x361c7e0e0e380e70UL, 710 0x633ee71f1f7c1ff8UL, 711 0xf7c4556262956237UL, 0xa3b53ad4d477d4eeUL, 0x324d81a8a89aa829UL, 712 0xf4315296966296c4UL, 0x3aef62f9f9c3f99bUL, 0xf697a3c5c533c566UL, 713 0xb14a102525942535UL, 0x20b2ab59597959f2UL, 0xae15d084842a8454UL, 714 0xa7e4c57272d572b7UL, 0xdd72ec3939e439d5UL, 0x6198164c4c2d4c5aUL, 715 0x3bbc945e5e655ecaUL, 716 0x85f09f7878fd78e7UL, 717 0xd870e53838e038ddUL, 0x8605988c8c0a8c14UL, 0xb2bf17d1d163d1c6UL, 718 0x0b57e4a5a5aea541UL, 0x4dd9a1e2e2afe243UL, 0xf8c24e616199612fUL, 719 0x457b42b3b3f6b3f1UL, 0xa542342121842115UL, 0xd625089c9c4a9c94UL, 720 0x663cee1e1e781ef0UL, 0x5286614343114322UL, 0xfc93b1c7c73bc776UL, 721 0x2be54ffcfcd7fcb3UL, 722 0x1408240404100420UL, 723 0x08a2e351515951b2UL, 0xc72f2599995e99bcUL, 0xc4da226d6da96d4fUL, 724 0x391a650d0d340d68UL, 0x35e979fafacffa83UL, 0x84a369dfdf5bdfb6UL, 725 0x9bfca97e7ee57ed7UL, 0xb44819242490243dUL, 0xd776fe3b3bec3bc5UL, 726 0x3d4b9aabab96ab31UL, 0xd181f0cece1fce3eUL, 0x5522991111441188UL, 727 0x8903838f8f068f0cUL, 728 0x6b9c044e4e254e4aUL, 729 0x517366b7b7e6b7d1UL, 0x60cbe0ebeb8beb0bUL, 0xcc78c13c3cf03cfdUL, 730 0xbf1ffd81813e817cUL, 0xfe354094946a94d4UL, 0x0cf31cf7f7fbf7ebUL, 731 0x676f18b9b9deb9a1UL, 0x5f268b13134c1398UL, 0x9c58512c2cb02c7dUL, 732 0xb8bb05d3d36bd3d6UL, 0x5cd38ce7e7bbe76bUL, 0xcbdc396e6ea56e57UL, 733 0xf395aac4c437c46eUL, 734 0x0f061b03030c0318UL, 735 0x13acdc565645568aUL, 0x49885e44440d441aUL, 0x9efea07f7fe17fdfUL, 736 0x374f88a9a99ea921UL, 0x8254672a2aa82a4dUL, 0x6d6b0abbbbd6bbb1UL, 737 0xe29f87c1c123c146UL, 0x02a6f153535153a2UL, 0x8ba572dcdc57dcaeUL, 738 0x2716530b0b2c0b58UL, 0xd327019d9d4e9d9cUL, 0xc1d82b6c6cad6c47UL, 739 0xf562a43131c43195UL, 740 0xb9e8f37474cd7487UL, 741 0x09f115f6f6fff6e3UL, 0x438c4c464605460aUL, 0x2645a5acac8aac09UL, 742 0x970fb589891e893cUL, 0x4428b414145014a0UL, 0x42dfbae1e1a3e15bUL, 743 0x4e2ca616165816b0UL, 0xd274f73a3ae83acdUL, 0xd0d2066969b9696fUL, 744 0x2d12410909240948UL, 0xade0d77070dd70a7UL, 0x54716fb6b6e2b6d9UL, 745 0xb7bd1ed0d067d0ceUL, 746 0x7ec7d6eded93ed3bUL, 747 0xdb85e2cccc17cc2eUL, 0x578468424215422aUL, 0xc22d2c98985a98b4UL, 748 0x0e55eda4a4aaa449UL, 0x8850752828a0285dUL, 0x31b8865c5c6d5cdaUL, 749 0x3fed6bf8f8c7f893UL, 0xa411c28686228644UL, 750 ], [ 751 0xc07830d818186018UL, 0x05af462623238c23UL, 0x7ef991b8c6c63fc6UL, 752 0x136fcdfbe8e887e8UL, 0x4ca113cb87872687UL, 0xa9626d11b8b8dab8UL, 753 0x0805020901010401UL, 0x426e9e0d4f4f214fUL, 0xadee6c9b3636d836UL, 754 0x590451ffa6a6a2a6UL, 755 0xdebdb90cd2d26fd2UL, 0xfb06f70ef5f5f3f5UL, 0xef80f2967979f979UL, 756 0x5fcede306f6fa16fUL, 0xfcef3f6d91917e91UL, 0xaa07a4f852525552UL, 757 0x27fdc04760609d60UL, 0x89766535bcbccabcUL, 0xaccd2b379b9b569bUL, 758 0x048c018a8e8e028eUL, 0x71155bd2a3a3b6a3UL, 0x603c186c0c0c300cUL, 759 0xff8af6847b7bf17bUL, 760 0xb5e16a803535d435UL, 761 0xe8693af51d1d741dUL, 0x5347ddb3e0e0a7e0UL, 0xf6acb321d7d77bd7UL, 762 0x5eed999cc2c22fc2UL, 0x6d965c432e2eb82eUL, 0x627a96294b4b314bUL, 763 0xa321e15dfefedffeUL, 0x8216aed557574157UL, 0xa8412abd15155415UL, 764 0x9fb6eee87777c177UL, 0xa5eb6e923737dc37UL, 0x7b56d79ee5e5b3e5UL, 765 0x8cd923139f9f469fUL, 766 0xd317fd23f0f0e7f0UL, 767 0x6a7f94204a4a354aUL, 0x9e95a944dada4fdaUL, 0xfa25b0a258587d58UL, 768 0x06ca8fcfc9c903c9UL, 0x558d527c2929a429UL, 0x5022145a0a0a280aUL, 769 0xe14f7f50b1b1feb1UL, 0x691a5dc9a0a0baa0UL, 0x7fdad6146b6bb16bUL, 770 0x5cab17d985852e85UL, 0x8173673cbdbdcebdUL, 0xd234ba8f5d5d695dUL, 771 0x8050209010104010UL, 772 0xf303f507f4f4f7f4UL, 773 0x16c08bddcbcb0bcbUL, 0xedc67cd33e3ef83eUL, 0x28110a2d05051405UL, 774 0x1fe6ce7867678167UL, 0x7353d597e4e4b7e4UL, 0x25bb4e0227279c27UL, 775 0x3258827341411941UL, 0x2c9d0ba78b8b168bUL, 0x510153f6a7a7a6a7UL, 776 0xcf94fab27d7de97dUL, 0xdcfb374995956e95UL, 0x8e9fad56d8d847d8UL, 777 0x8b30eb70fbfbcbfbUL, 778 0x2371c1cdeeee9feeUL, 779 0xc791f8bb7c7ced7cUL, 0x17e3cc7166668566UL, 0xa68ea77bdddd53ddUL, 780 0xb84b2eaf17175c17UL, 0x02468e4547470147UL, 0x84dc211a9e9e429eUL, 781 0x1ec589d4caca0fcaUL, 0x75995a582d2db42dUL, 0x9179632ebfbfc6bfUL, 782 0x381b0e3f07071c07UL, 0x012347acadad8eadUL, 0xea2fb4b05a5a755aUL, 783 0x6cb51bef83833683UL, 784 0x85ff66b63333cc33UL, 785 0x3ff2c65c63639163UL, 0x100a041202020802UL, 0x39384993aaaa92aaUL, 786 0xafa8e2de7171d971UL, 0x0ecf8dc6c8c807c8UL, 0xc87d32d119196419UL, 787 0x7270923b49493949UL, 0x869aaf5fd9d943d9UL, 0xc31df931f2f2eff2UL, 788 0x4b48dba8e3e3abe3UL, 0xe22ab6b95b5b715bUL, 0x34920dbc88881a88UL, 789 0xa4c8293e9a9a529aUL, 790 0x2dbe4c0b26269826UL, 791 0x8dfa64bf3232c832UL, 0xe94a7d59b0b0fab0UL, 0x1b6acff2e9e983e9UL, 792 0x78331e770f0f3c0fUL, 0xe6a6b733d5d573d5UL, 0x74ba1df480803a80UL, 793 0x997c6127bebec2beUL, 0x26de87ebcdcd13cdUL, 0xbde468893434d034UL, 794 0x7a75903248483d48UL, 0xab24e354ffffdbffUL, 0xf78ff48d7a7af57aUL, 795 0xf4ea3d6490907a90UL, 796 0xc23ebe9d5f5f615fUL, 797 0x1da0403d20208020UL, 0x67d5d00f6868bd68UL, 0xd07234ca1a1a681aUL, 798 0x192c41b7aeae82aeUL, 0xc95e757db4b4eab4UL, 0x9a19a8ce54544d54UL, 799 0xece53b7f93937693UL, 0x0daa442f22228822UL, 0x07e9c86364648d64UL, 800 0xdb12ff2af1f1e3f1UL, 0xbfa2e6cc7373d173UL, 0x905a248212124812UL, 801 0x3a5d807a40401d40UL, 802 0x4028104808082008UL, 803 0x56e89b95c3c32bc3UL, 0x337bc5dfecec97ecUL, 0x9690ab4ddbdb4bdbUL, 804 0x611f5fc0a1a1bea1UL, 0x1c8307918d8d0e8dUL, 0xf5c97ac83d3df43dUL, 805 0xccf1335b97976697UL, 0x0000000000000000UL, 0x36d483f9cfcf1bcfUL, 806 0x4587566e2b2bac2bUL, 0x97b3ece17676c576UL, 0x64b019e682823282UL, 807 0xfea9b128d6d67fd6UL, 808 0xd87736c31b1b6c1bUL, 809 0xc15b7774b5b5eeb5UL, 0x112943beafaf86afUL, 0x77dfd41d6a6ab56aUL, 810 0xba0da0ea50505d50UL, 0x124c8a5745450945UL, 0xcb18fb38f3f3ebf3UL, 811 0x9df060ad3030c030UL, 0x2b74c3c4efef9befUL, 0xe5c37eda3f3ffc3fUL, 812 0x921caac755554955UL, 0x791059dba2a2b2a2UL, 0x0365c9e9eaea8feaUL, 813 0x0fecca6a65658965UL, 814 0xb9686903babad2baUL, 815 0x65935e4a2f2fbc2fUL, 0x4ee79d8ec0c027c0UL, 0xbe81a160dede5fdeUL, 816 0xe06c38fc1c1c701cUL, 0xbb2ee746fdfdd3fdUL, 0x52649a1f4d4d294dUL, 817 0xe4e0397692927292UL, 0x8fbceafa7575c975UL, 0x301e0c3606061806UL, 818 0x249809ae8a8a128aUL, 0xf940794bb2b2f2b2UL, 0x6359d185e6e6bfe6UL, 819 0x70361c7e0e0e380eUL, 820 0xf8633ee71f1f7c1fUL, 821 0x37f7c45562629562UL, 0xeea3b53ad4d477d4UL, 0x29324d81a8a89aa8UL, 822 0xc4f4315296966296UL, 0x9b3aef62f9f9c3f9UL, 0x66f697a3c5c533c5UL, 823 0x35b14a1025259425UL, 0xf220b2ab59597959UL, 0x54ae15d084842a84UL, 824 0xb7a7e4c57272d572UL, 0xd5dd72ec3939e439UL, 0x5a6198164c4c2d4cUL, 825 0xca3bbc945e5e655eUL, 826 0xe785f09f7878fd78UL, 827 0xddd870e53838e038UL, 0x148605988c8c0a8cUL, 0xc6b2bf17d1d163d1UL, 828 0x410b57e4a5a5aea5UL, 0x434dd9a1e2e2afe2UL, 0x2ff8c24e61619961UL, 829 0xf1457b42b3b3f6b3UL, 0x15a5423421218421UL, 0x94d625089c9c4a9cUL, 830 0xf0663cee1e1e781eUL, 0x2252866143431143UL, 0x76fc93b1c7c73bc7UL, 831 0xb32be54ffcfcd7fcUL, 832 0x2014082404041004UL, 833 0xb208a2e351515951UL, 0xbcc72f2599995e99UL, 0x4fc4da226d6da96dUL, 834 0x68391a650d0d340dUL, 0x8335e979fafacffaUL, 0xb684a369dfdf5bdfUL, 835 0xd79bfca97e7ee57eUL, 0x3db4481924249024UL, 0xc5d776fe3b3bec3bUL, 836 0x313d4b9aabab96abUL, 0x3ed181f0cece1fceUL, 0x8855229911114411UL, 837 0x0c8903838f8f068fUL, 838 0x4a6b9c044e4e254eUL, 839 0xd1517366b7b7e6b7UL, 0x0b60cbe0ebeb8bebUL, 0xfdcc78c13c3cf03cUL, 840 0x7cbf1ffd81813e81UL, 0xd4fe354094946a94UL, 0xeb0cf31cf7f7fbf7UL, 841 0xa1676f18b9b9deb9UL, 0x985f268b13134c13UL, 0x7d9c58512c2cb02cUL, 842 0xd6b8bb05d3d36bd3UL, 0x6b5cd38ce7e7bbe7UL, 0x57cbdc396e6ea56eUL, 843 0x6ef395aac4c437c4UL, 844 0x180f061b03030c03UL, 845 0x8a13acdc56564556UL, 0x1a49885e44440d44UL, 0xdf9efea07f7fe17fUL, 846 0x21374f88a9a99ea9UL, 0x4d8254672a2aa82aUL, 0xb16d6b0abbbbd6bbUL, 847 0x46e29f87c1c123c1UL, 0xa202a6f153535153UL, 0xae8ba572dcdc57dcUL, 848 0x582716530b0b2c0bUL, 0x9cd327019d9d4e9dUL, 0x47c1d82b6c6cad6cUL, 849 0x95f562a43131c431UL, 850 0x87b9e8f37474cd74UL, 851 0xe309f115f6f6fff6UL, 0x0a438c4c46460546UL, 0x092645a5acac8aacUL, 852 0x3c970fb589891e89UL, 0xa04428b414145014UL, 0x5b42dfbae1e1a3e1UL, 853 0xb04e2ca616165816UL, 0xcdd274f73a3ae83aUL, 0x6fd0d2066969b969UL, 854 0x482d124109092409UL, 0xa7ade0d77070dd70UL, 0xd954716fb6b6e2b6UL, 855 0xceb7bd1ed0d067d0UL, 856 0x3b7ec7d6eded93edUL, 857 0x2edb85e2cccc17ccUL, 0x2a57846842421542UL, 0xb4c22d2c98985a98UL, 858 0x490e55eda4a4aaa4UL, 0x5d8850752828a028UL, 0xda31b8865c5c6d5cUL, 859 0x933fed6bf8f8c7f8UL, 0x44a411c286862286UL, 860 ], [ 861 0x18c07830d8181860UL, 0x2305af462623238cUL, 0xc67ef991b8c6c63fUL, 862 0xe8136fcdfbe8e887UL, 0x874ca113cb878726UL, 0xb8a9626d11b8b8daUL, 863 0x0108050209010104UL, 0x4f426e9e0d4f4f21UL, 0x36adee6c9b3636d8UL, 864 0xa6590451ffa6a6a2UL, 865 0xd2debdb90cd2d26fUL, 0xf5fb06f70ef5f5f3UL, 0x79ef80f2967979f9UL, 866 0x6f5fcede306f6fa1UL, 0x91fcef3f6d91917eUL, 0x52aa07a4f8525255UL, 867 0x6027fdc04760609dUL, 0xbc89766535bcbccaUL, 0x9baccd2b379b9b56UL, 868 0x8e048c018a8e8e02UL, 0xa371155bd2a3a3b6UL, 0x0c603c186c0c0c30UL, 869 0x7bff8af6847b7bf1UL, 870 0x35b5e16a803535d4UL, 871 0x1de8693af51d1d74UL, 0xe05347ddb3e0e0a7UL, 0xd7f6acb321d7d77bUL, 872 0xc25eed999cc2c22fUL, 0x2e6d965c432e2eb8UL, 0x4b627a96294b4b31UL, 873 0xfea321e15dfefedfUL, 0x578216aed5575741UL, 0x15a8412abd151554UL, 874 0x779fb6eee87777c1UL, 0x37a5eb6e923737dcUL, 0xe57b56d79ee5e5b3UL, 875 0x9f8cd923139f9f46UL, 876 0xf0d317fd23f0f0e7UL, 877 0x4a6a7f94204a4a35UL, 0xda9e95a944dada4fUL, 0x58fa25b0a258587dUL, 878 0xc906ca8fcfc9c903UL, 0x29558d527c2929a4UL, 0x0a5022145a0a0a28UL, 879 0xb1e14f7f50b1b1feUL, 0xa0691a5dc9a0a0baUL, 0x6b7fdad6146b6bb1UL, 880 0x855cab17d985852eUL, 0xbd8173673cbdbdceUL, 0x5dd234ba8f5d5d69UL, 881 0x1080502090101040UL, 882 0xf4f303f507f4f4f7UL, 883 0xcb16c08bddcbcb0bUL, 0x3eedc67cd33e3ef8UL, 0x0528110a2d050514UL, 884 0x671fe6ce78676781UL, 0xe47353d597e4e4b7UL, 0x2725bb4e0227279cUL, 885 0x4132588273414119UL, 0x8b2c9d0ba78b8b16UL, 0xa7510153f6a7a7a6UL, 886 0x7dcf94fab27d7de9UL, 0x95dcfb374995956eUL, 0xd88e9fad56d8d847UL, 887 0xfb8b30eb70fbfbcbUL, 888 0xee2371c1cdeeee9fUL, 889 0x7cc791f8bb7c7cedUL, 0x6617e3cc71666685UL, 0xdda68ea77bdddd53UL, 890 0x17b84b2eaf17175cUL, 0x4702468e45474701UL, 0x9e84dc211a9e9e42UL, 891 0xca1ec589d4caca0fUL, 0x2d75995a582d2db4UL, 0xbf9179632ebfbfc6UL, 892 0x07381b0e3f07071cUL, 0xad012347acadad8eUL, 0x5aea2fb4b05a5a75UL, 893 0x836cb51bef838336UL, 894 0x3385ff66b63333ccUL, 895 0x633ff2c65c636391UL, 0x02100a0412020208UL, 0xaa39384993aaaa92UL, 896 0x71afa8e2de7171d9UL, 0xc80ecf8dc6c8c807UL, 0x19c87d32d1191964UL, 897 0x497270923b494939UL, 0xd9869aaf5fd9d943UL, 0xf2c31df931f2f2efUL, 898 0xe34b48dba8e3e3abUL, 0x5be22ab6b95b5b71UL, 0x8834920dbc88881aUL, 899 0x9aa4c8293e9a9a52UL, 900 0x262dbe4c0b262698UL, 901 0x328dfa64bf3232c8UL, 0xb0e94a7d59b0b0faUL, 0xe91b6acff2e9e983UL, 902 0x0f78331e770f0f3cUL, 0xd5e6a6b733d5d573UL, 0x8074ba1df480803aUL, 903 0xbe997c6127bebec2UL, 0xcd26de87ebcdcd13UL, 0x34bde468893434d0UL, 904 0x487a75903248483dUL, 0xffab24e354ffffdbUL, 0x7af78ff48d7a7af5UL, 905 0x90f4ea3d6490907aUL, 906 0x5fc23ebe9d5f5f61UL, 907 0x201da0403d202080UL, 0x6867d5d00f6868bdUL, 0x1ad07234ca1a1a68UL, 908 0xae192c41b7aeae82UL, 0xb4c95e757db4b4eaUL, 0x549a19a8ce54544dUL, 909 0x93ece53b7f939376UL, 0x220daa442f222288UL, 0x6407e9c86364648dUL, 910 0xf1db12ff2af1f1e3UL, 0x73bfa2e6cc7373d1UL, 0x12905a2482121248UL, 911 0x403a5d807a40401dUL, 912 0x0840281048080820UL, 913 0xc356e89b95c3c32bUL, 0xec337bc5dfecec97UL, 0xdb9690ab4ddbdb4bUL, 914 0xa1611f5fc0a1a1beUL, 0x8d1c8307918d8d0eUL, 0x3df5c97ac83d3df4UL, 915 0x97ccf1335b979766UL, 0x0000000000000000UL, 0xcf36d483f9cfcf1bUL, 916 0x2b4587566e2b2bacUL, 0x7697b3ece17676c5UL, 0x8264b019e6828232UL, 917 0xd6fea9b128d6d67fUL, 918 0x1bd87736c31b1b6cUL, 919 0xb5c15b7774b5b5eeUL, 0xaf112943beafaf86UL, 0x6a77dfd41d6a6ab5UL, 920 0x50ba0da0ea50505dUL, 0x45124c8a57454509UL, 0xf3cb18fb38f3f3ebUL, 921 0x309df060ad3030c0UL, 0xef2b74c3c4efef9bUL, 0x3fe5c37eda3f3ffcUL, 922 0x55921caac7555549UL, 0xa2791059dba2a2b2UL, 0xea0365c9e9eaea8fUL, 923 0x650fecca6a656589UL, 924 0xbab9686903babad2UL, 925 0x2f65935e4a2f2fbcUL, 0xc04ee79d8ec0c027UL, 0xdebe81a160dede5fUL, 926 0x1ce06c38fc1c1c70UL, 0xfdbb2ee746fdfdd3UL, 0x4d52649a1f4d4d29UL, 927 0x92e4e03976929272UL, 0x758fbceafa7575c9UL, 0x06301e0c36060618UL, 928 0x8a249809ae8a8a12UL, 0xb2f940794bb2b2f2UL, 0xe66359d185e6e6bfUL, 929 0x0e70361c7e0e0e38UL, 930 0x1ff8633ee71f1f7cUL, 931 0x6237f7c455626295UL, 0xd4eea3b53ad4d477UL, 0xa829324d81a8a89aUL, 932 0x96c4f43152969662UL, 0xf99b3aef62f9f9c3UL, 0xc566f697a3c5c533UL, 933 0x2535b14a10252594UL, 0x59f220b2ab595979UL, 0x8454ae15d084842aUL, 934 0x72b7a7e4c57272d5UL, 0x39d5dd72ec3939e4UL, 0x4c5a6198164c4c2dUL, 935 0x5eca3bbc945e5e65UL, 936 0x78e785f09f7878fdUL, 937 0x38ddd870e53838e0UL, 0x8c148605988c8c0aUL, 0xd1c6b2bf17d1d163UL, 938 0xa5410b57e4a5a5aeUL, 0xe2434dd9a1e2e2afUL, 0x612ff8c24e616199UL, 939 0xb3f1457b42b3b3f6UL, 0x2115a54234212184UL, 0x9c94d625089c9c4aUL, 940 0x1ef0663cee1e1e78UL, 0x4322528661434311UL, 0xc776fc93b1c7c73bUL, 941 0xfcb32be54ffcfcd7UL, 942 0x0420140824040410UL, 943 0x51b208a2e3515159UL, 0x99bcc72f2599995eUL, 0x6d4fc4da226d6da9UL, 944 0x0d68391a650d0d34UL, 0xfa8335e979fafacfUL, 0xdfb684a369dfdf5bUL, 945 0x7ed79bfca97e7ee5UL, 0x243db44819242490UL, 0x3bc5d776fe3b3becUL, 946 0xab313d4b9aabab96UL, 0xce3ed181f0cece1fUL, 0x1188552299111144UL, 947 0x8f0c8903838f8f06UL, 948 0x4e4a6b9c044e4e25UL, 949 0xb7d1517366b7b7e6UL, 0xeb0b60cbe0ebeb8bUL, 0x3cfdcc78c13c3cf0UL, 950 0x817cbf1ffd81813eUL, 0x94d4fe354094946aUL, 0xf7eb0cf31cf7f7fbUL, 951 0xb9a1676f18b9b9deUL, 0x13985f268b13134cUL, 0x2c7d9c58512c2cb0UL, 952 0xd3d6b8bb05d3d36bUL, 0xe76b5cd38ce7e7bbUL, 0x6e57cbdc396e6ea5UL, 953 0xc46ef395aac4c437UL, 954 0x03180f061b03030cUL, 955 0x568a13acdc565645UL, 0x441a49885e44440dUL, 0x7fdf9efea07f7fe1UL, 956 0xa921374f88a9a99eUL, 0x2a4d8254672a2aa8UL, 0xbbb16d6b0abbbbd6UL, 957 0xc146e29f87c1c123UL, 0x53a202a6f1535351UL, 0xdcae8ba572dcdc57UL, 958 0x0b582716530b0b2cUL, 0x9d9cd327019d9d4eUL, 0x6c47c1d82b6c6cadUL, 959 0x3195f562a43131c4UL, 960 0x7487b9e8f37474cdUL, 961 0xf6e309f115f6f6ffUL, 0x460a438c4c464605UL, 0xac092645a5acac8aUL, 962 0x893c970fb589891eUL, 0x14a04428b4141450UL, 0xe15b42dfbae1e1a3UL, 963 0x16b04e2ca6161658UL, 0x3acdd274f73a3ae8UL, 0x696fd0d2066969b9UL, 964 0x09482d1241090924UL, 0x70a7ade0d77070ddUL, 0xb6d954716fb6b6e2UL, 965 0xd0ceb7bd1ed0d067UL, 966 0xed3b7ec7d6eded93UL, 967 0xcc2edb85e2cccc17UL, 0x422a578468424215UL, 0x98b4c22d2c98985aUL, 968 0xa4490e55eda4a4aaUL, 0x285d8850752828a0UL, 0x5cda31b8865c5c6dUL, 969 0xf8933fed6bf8f8c7UL, 0x8644a411c2868622UL, 970 ], [ 971 0x6018c07830d81818UL, 0x8c2305af46262323UL, 0x3fc67ef991b8c6c6UL, 972 0x87e8136fcdfbe8e8UL, 0x26874ca113cb8787UL, 0xdab8a9626d11b8b8UL, 973 0x0401080502090101UL, 0x214f426e9e0d4f4fUL, 0xd836adee6c9b3636UL, 974 0xa2a6590451ffa6a6UL, 975 0x6fd2debdb90cd2d2UL, 0xf3f5fb06f70ef5f5UL, 0xf979ef80f2967979UL, 976 0xa16f5fcede306f6fUL, 0x7e91fcef3f6d9191UL, 0x5552aa07a4f85252UL, 977 0x9d6027fdc0476060UL, 0xcabc89766535bcbcUL, 0x569baccd2b379b9bUL, 978 0x028e048c018a8e8eUL, 0xb6a371155bd2a3a3UL, 0x300c603c186c0c0cUL, 979 0xf17bff8af6847b7bUL, 980 0xd435b5e16a803535UL, 981 0x741de8693af51d1dUL, 0xa7e05347ddb3e0e0UL, 0x7bd7f6acb321d7d7UL, 982 0x2fc25eed999cc2c2UL, 0xb82e6d965c432e2eUL, 0x314b627a96294b4bUL, 983 0xdffea321e15dfefeUL, 0x41578216aed55757UL, 0x5415a8412abd1515UL, 984 0xc1779fb6eee87777UL, 0xdc37a5eb6e923737UL, 0xb3e57b56d79ee5e5UL, 985 0x469f8cd923139f9fUL, 986 0xe7f0d317fd23f0f0UL, 987 0x354a6a7f94204a4aUL, 0x4fda9e95a944dadaUL, 0x7d58fa25b0a25858UL, 988 0x03c906ca8fcfc9c9UL, 0xa429558d527c2929UL, 0x280a5022145a0a0aUL, 989 0xfeb1e14f7f50b1b1UL, 0xbaa0691a5dc9a0a0UL, 0xb16b7fdad6146b6bUL, 990 0x2e855cab17d98585UL, 0xcebd8173673cbdbdUL, 0x695dd234ba8f5d5dUL, 991 0x4010805020901010UL, 992 0xf7f4f303f507f4f4UL, 993 0x0bcb16c08bddcbcbUL, 0xf83eedc67cd33e3eUL, 0x140528110a2d0505UL, 994 0x81671fe6ce786767UL, 0xb7e47353d597e4e4UL, 0x9c2725bb4e022727UL, 995 0x1941325882734141UL, 0x168b2c9d0ba78b8bUL, 0xa6a7510153f6a7a7UL, 996 0xe97dcf94fab27d7dUL, 0x6e95dcfb37499595UL, 0x47d88e9fad56d8d8UL, 997 0xcbfb8b30eb70fbfbUL, 998 0x9fee2371c1cdeeeeUL, 999 0xed7cc791f8bb7c7cUL, 0x856617e3cc716666UL, 0x53dda68ea77bddddUL, 1000 0x5c17b84b2eaf1717UL, 0x014702468e454747UL, 0x429e84dc211a9e9eUL, 1001 0x0fca1ec589d4cacaUL, 0xb42d75995a582d2dUL, 0xc6bf9179632ebfbfUL, 1002 0x1c07381b0e3f0707UL, 0x8ead012347acadadUL, 0x755aea2fb4b05a5aUL, 1003 0x36836cb51bef8383UL, 1004 0xcc3385ff66b63333UL, 1005 0x91633ff2c65c6363UL, 0x0802100a04120202UL, 0x92aa39384993aaaaUL, 1006 0xd971afa8e2de7171UL, 0x07c80ecf8dc6c8c8UL, 0x6419c87d32d11919UL, 1007 0x39497270923b4949UL, 0x43d9869aaf5fd9d9UL, 0xeff2c31df931f2f2UL, 1008 0xabe34b48dba8e3e3UL, 0x715be22ab6b95b5bUL, 0x1a8834920dbc8888UL, 1009 0x529aa4c8293e9a9aUL, 1010 0x98262dbe4c0b2626UL, 1011 0xc8328dfa64bf3232UL, 0xfab0e94a7d59b0b0UL, 0x83e91b6acff2e9e9UL, 1012 0x3c0f78331e770f0fUL, 0x73d5e6a6b733d5d5UL, 0x3a8074ba1df48080UL, 1013 0xc2be997c6127bebeUL, 0x13cd26de87ebcdcdUL, 0xd034bde468893434UL, 1014 0x3d487a7590324848UL, 0xdbffab24e354ffffUL, 0xf57af78ff48d7a7aUL, 1015 0x7a90f4ea3d649090UL, 1016 0x615fc23ebe9d5f5fUL, 1017 0x80201da0403d2020UL, 0xbd6867d5d00f6868UL, 0x681ad07234ca1a1aUL, 1018 0x82ae192c41b7aeaeUL, 0xeab4c95e757db4b4UL, 0x4d549a19a8ce5454UL, 1019 0x7693ece53b7f9393UL, 0x88220daa442f2222UL, 0x8d6407e9c8636464UL, 1020 0xe3f1db12ff2af1f1UL, 0xd173bfa2e6cc7373UL, 0x4812905a24821212UL, 1021 0x1d403a5d807a4040UL, 1022 0x2008402810480808UL, 1023 0x2bc356e89b95c3c3UL, 0x97ec337bc5dfececUL, 0x4bdb9690ab4ddbdbUL, 1024 0xbea1611f5fc0a1a1UL, 0x0e8d1c8307918d8dUL, 0xf43df5c97ac83d3dUL, 1025 0x6697ccf1335b9797UL, 0x0000000000000000UL, 0x1bcf36d483f9cfcfUL, 1026 0xac2b4587566e2b2bUL, 0xc57697b3ece17676UL, 0x328264b019e68282UL, 1027 0x7fd6fea9b128d6d6UL, 1028 0x6c1bd87736c31b1bUL, 1029 0xeeb5c15b7774b5b5UL, 0x86af112943beafafUL, 0xb56a77dfd41d6a6aUL, 1030 0x5d50ba0da0ea5050UL, 0x0945124c8a574545UL, 0xebf3cb18fb38f3f3UL, 1031 0xc0309df060ad3030UL, 0x9bef2b74c3c4efefUL, 0xfc3fe5c37eda3f3fUL, 1032 0x4955921caac75555UL, 0xb2a2791059dba2a2UL, 0x8fea0365c9e9eaeaUL, 1033 0x89650fecca6a6565UL, 1034 0xd2bab9686903babaUL, 1035 0xbc2f65935e4a2f2fUL, 0x27c04ee79d8ec0c0UL, 0x5fdebe81a160dedeUL, 1036 0x701ce06c38fc1c1cUL, 0xd3fdbb2ee746fdfdUL, 0x294d52649a1f4d4dUL, 1037 0x7292e4e039769292UL, 0xc9758fbceafa7575UL, 0x1806301e0c360606UL, 1038 0x128a249809ae8a8aUL, 0xf2b2f940794bb2b2UL, 0xbfe66359d185e6e6UL, 1039 0x380e70361c7e0e0eUL, 1040 0x7c1ff8633ee71f1fUL, 1041 0x956237f7c4556262UL, 0x77d4eea3b53ad4d4UL, 0x9aa829324d81a8a8UL, 1042 0x6296c4f431529696UL, 0xc3f99b3aef62f9f9UL, 0x33c566f697a3c5c5UL, 1043 0x942535b14a102525UL, 0x7959f220b2ab5959UL, 0x2a8454ae15d08484UL, 1044 0xd572b7a7e4c57272UL, 0xe439d5dd72ec3939UL, 0x2d4c5a6198164c4cUL, 1045 0x655eca3bbc945e5eUL, 1046 0xfd78e785f09f7878UL, 1047 0xe038ddd870e53838UL, 0x0a8c148605988c8cUL, 0x63d1c6b2bf17d1d1UL, 1048 0xaea5410b57e4a5a5UL, 0xafe2434dd9a1e2e2UL, 0x99612ff8c24e6161UL, 1049 0xf6b3f1457b42b3b3UL, 0x842115a542342121UL, 0x4a9c94d625089c9cUL, 1050 0x781ef0663cee1e1eUL, 0x1143225286614343UL, 0x3bc776fc93b1c7c7UL, 1051 0xd7fcb32be54ffcfcUL, 1052 0x1004201408240404UL, 1053 0x5951b208a2e35151UL, 0x5e99bcc72f259999UL, 0xa96d4fc4da226d6dUL, 1054 0x340d68391a650d0dUL, 0xcffa8335e979fafaUL, 0x5bdfb684a369dfdfUL, 1055 0xe57ed79bfca97e7eUL, 0x90243db448192424UL, 0xec3bc5d776fe3b3bUL, 1056 0x96ab313d4b9aababUL, 0x1fce3ed181f0ceceUL, 0x4411885522991111UL, 1057 0x068f0c8903838f8fUL, 1058 0x254e4a6b9c044e4eUL, 1059 0xe6b7d1517366b7b7UL, 0x8beb0b60cbe0ebebUL, 0xf03cfdcc78c13c3cUL, 1060 0x3e817cbf1ffd8181UL, 0x6a94d4fe35409494UL, 0xfbf7eb0cf31cf7f7UL, 1061 0xdeb9a1676f18b9b9UL, 0x4c13985f268b1313UL, 0xb02c7d9c58512c2cUL, 1062 0x6bd3d6b8bb05d3d3UL, 0xbbe76b5cd38ce7e7UL, 0xa56e57cbdc396e6eUL, 1063 0x37c46ef395aac4c4UL, 1064 0x0c03180f061b0303UL, 1065 0x45568a13acdc5656UL, 0x0d441a49885e4444UL, 0xe17fdf9efea07f7fUL, 1066 0x9ea921374f88a9a9UL, 0xa82a4d8254672a2aUL, 0xd6bbb16d6b0abbbbUL, 1067 0x23c146e29f87c1c1UL, 0x5153a202a6f15353UL, 0x57dcae8ba572dcdcUL, 1068 0x2c0b582716530b0bUL, 0x4e9d9cd327019d9dUL, 0xad6c47c1d82b6c6cUL, 1069 0xc43195f562a43131UL, 1070 0xcd7487b9e8f37474UL, 1071 0xfff6e309f115f6f6UL, 0x05460a438c4c4646UL, 0x8aac092645a5acacUL, 1072 0x1e893c970fb58989UL, 0x5014a04428b41414UL, 0xa3e15b42dfbae1e1UL, 1073 0x5816b04e2ca61616UL, 0xe83acdd274f73a3aUL, 0xb9696fd0d2066969UL, 1074 0x2409482d12410909UL, 0xdd70a7ade0d77070UL, 0xe2b6d954716fb6b6UL, 1075 0x67d0ceb7bd1ed0d0UL, 1076 0x93ed3b7ec7d6ededUL, 1077 0x17cc2edb85e2ccccUL, 0x15422a5784684242UL, 0x5a98b4c22d2c9898UL, 1078 0xaaa4490e55eda4a4UL, 0xa0285d8850752828UL, 0x6d5cda31b8865c5cUL, 1079 0xc7f8933fed6bf8f8UL, 0x228644a411c28686UL, 1080 ], [ 1081 0x186018c07830d818UL, 0x238c2305af462623UL, 0xc63fc67ef991b8c6UL, 1082 0xe887e8136fcdfbe8UL, 0x8726874ca113cb87UL, 0xb8dab8a9626d11b8UL, 1083 0x0104010805020901UL, 0x4f214f426e9e0d4fUL, 0x36d836adee6c9b36UL, 1084 0xa6a2a6590451ffa6UL, 1085 0xd26fd2debdb90cd2UL, 0xf5f3f5fb06f70ef5UL, 0x79f979ef80f29679UL, 1086 0x6fa16f5fcede306fUL, 0x917e91fcef3f6d91UL, 0x525552aa07a4f852UL, 1087 0x609d6027fdc04760UL, 0xbccabc89766535bcUL, 0x9b569baccd2b379bUL, 1088 0x8e028e048c018a8eUL, 0xa3b6a371155bd2a3UL, 0x0c300c603c186c0cUL, 1089 0x7bf17bff8af6847bUL, 1090 0x35d435b5e16a8035UL, 1091 0x1d741de8693af51dUL, 0xe0a7e05347ddb3e0UL, 0xd77bd7f6acb321d7UL, 1092 0xc22fc25eed999cc2UL, 0x2eb82e6d965c432eUL, 0x4b314b627a96294bUL, 1093 0xfedffea321e15dfeUL, 0x5741578216aed557UL, 0x155415a8412abd15UL, 1094 0x77c1779fb6eee877UL, 0x37dc37a5eb6e9237UL, 0xe5b3e57b56d79ee5UL, 1095 0x9f469f8cd923139fUL, 1096 0xf0e7f0d317fd23f0UL, 1097 0x4a354a6a7f94204aUL, 0xda4fda9e95a944daUL, 0x587d58fa25b0a258UL, 1098 0xc903c906ca8fcfc9UL, 0x29a429558d527c29UL, 0x0a280a5022145a0aUL, 1099 0xb1feb1e14f7f50b1UL, 0xa0baa0691a5dc9a0UL, 0x6bb16b7fdad6146bUL, 1100 0x852e855cab17d985UL, 0xbdcebd8173673cbdUL, 0x5d695dd234ba8f5dUL, 1101 0x1040108050209010UL, 1102 0xf4f7f4f303f507f4UL, 1103 0xcb0bcb16c08bddcbUL, 0x3ef83eedc67cd33eUL, 0x05140528110a2d05UL, 1104 0x6781671fe6ce7867UL, 0xe4b7e47353d597e4UL, 0x279c2725bb4e0227UL, 1105 0x4119413258827341UL, 0x8b168b2c9d0ba78bUL, 0xa7a6a7510153f6a7UL, 1106 0x7de97dcf94fab27dUL, 0x956e95dcfb374995UL, 0xd847d88e9fad56d8UL, 1107 0xfbcbfb8b30eb70fbUL, 1108 0xee9fee2371c1cdeeUL, 1109 0x7ced7cc791f8bb7cUL, 0x66856617e3cc7166UL, 0xdd53dda68ea77bddUL, 1110 0x175c17b84b2eaf17UL, 0x47014702468e4547UL, 0x9e429e84dc211a9eUL, 1111 0xca0fca1ec589d4caUL, 0x2db42d75995a582dUL, 0xbfc6bf9179632ebfUL, 1112 0x071c07381b0e3f07UL, 0xad8ead012347acadUL, 0x5a755aea2fb4b05aUL, 1113 0x8336836cb51bef83UL, 1114 0x33cc3385ff66b633UL, 1115 0x6391633ff2c65c63UL, 0x020802100a041202UL, 0xaa92aa39384993aaUL, 1116 0x71d971afa8e2de71UL, 0xc807c80ecf8dc6c8UL, 0x196419c87d32d119UL, 1117 0x4939497270923b49UL, 0xd943d9869aaf5fd9UL, 0xf2eff2c31df931f2UL, 1118 0xe3abe34b48dba8e3UL, 0x5b715be22ab6b95bUL, 0x881a8834920dbc88UL, 1119 0x9a529aa4c8293e9aUL, 1120 0x2698262dbe4c0b26UL, 1121 0x32c8328dfa64bf32UL, 0xb0fab0e94a7d59b0UL, 0xe983e91b6acff2e9UL, 1122 0x0f3c0f78331e770fUL, 0xd573d5e6a6b733d5UL, 0x803a8074ba1df480UL, 1123 0xbec2be997c6127beUL, 0xcd13cd26de87ebcdUL, 0x34d034bde4688934UL, 1124 0x483d487a75903248UL, 0xffdbffab24e354ffUL, 0x7af57af78ff48d7aUL, 1125 0x907a90f4ea3d6490UL, 1126 0x5f615fc23ebe9d5fUL, 1127 0x2080201da0403d20UL, 0x68bd6867d5d00f68UL, 0x1a681ad07234ca1aUL, 1128 0xae82ae192c41b7aeUL, 0xb4eab4c95e757db4UL, 0x544d549a19a8ce54UL, 1129 0x937693ece53b7f93UL, 0x2288220daa442f22UL, 0x648d6407e9c86364UL, 1130 0xf1e3f1db12ff2af1UL, 0x73d173bfa2e6cc73UL, 0x124812905a248212UL, 1131 0x401d403a5d807a40UL, 1132 0x0820084028104808UL, 1133 0xc32bc356e89b95c3UL, 0xec97ec337bc5dfecUL, 0xdb4bdb9690ab4ddbUL, 1134 0xa1bea1611f5fc0a1UL, 0x8d0e8d1c8307918dUL, 0x3df43df5c97ac83dUL, 1135 0x976697ccf1335b97UL, 0x0000000000000000UL, 0xcf1bcf36d483f9cfUL, 1136 0x2bac2b4587566e2bUL, 0x76c57697b3ece176UL, 0x82328264b019e682UL, 1137 0xd67fd6fea9b128d6UL, 1138 0x1b6c1bd87736c31bUL, 1139 0xb5eeb5c15b7774b5UL, 0xaf86af112943beafUL, 0x6ab56a77dfd41d6aUL, 1140 0x505d50ba0da0ea50UL, 0x450945124c8a5745UL, 0xf3ebf3cb18fb38f3UL, 1141 0x30c0309df060ad30UL, 0xef9bef2b74c3c4efUL, 0x3ffc3fe5c37eda3fUL, 1142 0x554955921caac755UL, 0xa2b2a2791059dba2UL, 0xea8fea0365c9e9eaUL, 1143 0x6589650fecca6a65UL, 1144 0xbad2bab9686903baUL, 1145 0x2fbc2f65935e4a2fUL, 0xc027c04ee79d8ec0UL, 0xde5fdebe81a160deUL, 1146 0x1c701ce06c38fc1cUL, 0xfdd3fdbb2ee746fdUL, 0x4d294d52649a1f4dUL, 1147 0x927292e4e0397692UL, 0x75c9758fbceafa75UL, 0x061806301e0c3606UL, 1148 0x8a128a249809ae8aUL, 0xb2f2b2f940794bb2UL, 0xe6bfe66359d185e6UL, 1149 0x0e380e70361c7e0eUL, 1150 0x1f7c1ff8633ee71fUL, 1151 0x62956237f7c45562UL, 0xd477d4eea3b53ad4UL, 0xa89aa829324d81a8UL, 1152 0x966296c4f4315296UL, 0xf9c3f99b3aef62f9UL, 0xc533c566f697a3c5UL, 1153 0x25942535b14a1025UL, 0x597959f220b2ab59UL, 0x842a8454ae15d084UL, 1154 0x72d572b7a7e4c572UL, 0x39e439d5dd72ec39UL, 0x4c2d4c5a6198164cUL, 1155 0x5e655eca3bbc945eUL, 1156 0x78fd78e785f09f78UL, 1157 0x38e038ddd870e538UL, 0x8c0a8c148605988cUL, 0xd163d1c6b2bf17d1UL, 1158 0xa5aea5410b57e4a5UL, 0xe2afe2434dd9a1e2UL, 0x6199612ff8c24e61UL, 1159 0xb3f6b3f1457b42b3UL, 0x21842115a5423421UL, 0x9c4a9c94d625089cUL, 1160 0x1e781ef0663cee1eUL, 0x4311432252866143UL, 0xc73bc776fc93b1c7UL, 1161 0xfcd7fcb32be54ffcUL, 1162 0x0410042014082404UL, 1163 0x515951b208a2e351UL, 0x995e99bcc72f2599UL, 0x6da96d4fc4da226dUL, 1164 0x0d340d68391a650dUL, 0xfacffa8335e979faUL, 0xdf5bdfb684a369dfUL, 1165 0x7ee57ed79bfca97eUL, 0x2490243db4481924UL, 0x3bec3bc5d776fe3bUL, 1166 0xab96ab313d4b9aabUL, 0xce1fce3ed181f0ceUL, 0x1144118855229911UL, 1167 0x8f068f0c8903838fUL, 1168 0x4e254e4a6b9c044eUL, 1169 0xb7e6b7d1517366b7UL, 0xeb8beb0b60cbe0ebUL, 0x3cf03cfdcc78c13cUL, 1170 0x813e817cbf1ffd81UL, 0x946a94d4fe354094UL, 0xf7fbf7eb0cf31cf7UL, 1171 0xb9deb9a1676f18b9UL, 0x134c13985f268b13UL, 0x2cb02c7d9c58512cUL, 1172 0xd36bd3d6b8bb05d3UL, 0xe7bbe76b5cd38ce7UL, 0x6ea56e57cbdc396eUL, 1173 0xc437c46ef395aac4UL, 1174 0x030c03180f061b03UL, 1175 0x5645568a13acdc56UL, 0x440d441a49885e44UL, 0x7fe17fdf9efea07fUL, 1176 0xa99ea921374f88a9UL, 0x2aa82a4d8254672aUL, 0xbbd6bbb16d6b0abbUL, 1177 0xc123c146e29f87c1UL, 0x535153a202a6f153UL, 0xdc57dcae8ba572dcUL, 1178 0x0b2c0b582716530bUL, 0x9d4e9d9cd327019dUL, 0x6cad6c47c1d82b6cUL, 1179 0x31c43195f562a431UL, 1180 0x74cd7487b9e8f374UL, 1181 0xf6fff6e309f115f6UL, 0x4605460a438c4c46UL, 0xac8aac092645a5acUL, 1182 0x891e893c970fb589UL, 0x145014a04428b414UL, 0xe1a3e15b42dfbae1UL, 1183 0x165816b04e2ca616UL, 0x3ae83acdd274f73aUL, 0x69b9696fd0d20669UL, 1184 0x092409482d124109UL, 0x70dd70a7ade0d770UL, 0xb6e2b6d954716fb6UL, 1185 0xd067d0ceb7bd1ed0UL, 1186 0xed93ed3b7ec7d6edUL, 1187 0xcc17cc2edb85e2ccUL, 0x4215422a57846842UL, 0x985a98b4c22d2c98UL, 1188 0xa4aaa4490e55eda4UL, 0x28a0285d88507528UL, 0x5c6d5cda31b8865cUL, 1189 0xf8c7f8933fed6bf8UL, 0x86228644a411c286UL, 1190 ]]; 1191 1192 immutable ulong[numRounds] rc = [ 1193 0x1823c6e887b8014fUL, 0x36a6d2f5796f9152UL, 0x60bc9b8ea30c7b35UL, 1194 0x1de0d7c22e4bfe57UL, 0x157737e59ff04adaUL, 0x58c9290ab1a06b85UL, 1195 0xbd5d10f4cb3e0567UL, 0xe427418ba77d95d8UL, 0xfbee7c66dd17479eUL, 0xca2dbf07ad5a8333UL, 1196 ]; 1197 1198 // precomputed K[] based on the initial state 1199 immutable ulong[8][numRounds] pcK = [ 1200 [ 1201 0x300BEEC0AF902967, 0x2828282828282828, 0x2828282828282828, 0x2828282828282828, 1202 0x2828282828282828, 0x2828282828282828, 0x2828282828282828, 0x2828282828282828 1203 ], [ 1204 0x3BAB89F8EAD1AE24, 0x4445456645E9CBAF, 0x70FEA4A4C5A4B289, 0xC5FAA9E1E1CCE1A0, 1205 0x48ACC05CFCFCB8FC, 0x8FF70E26908F8F69, 0x96791407D7857979, 0xF8A8F868B8C878F8 1206 ], [ 1207 0xD319BFDB30467058, 0x295B23D1AFCF37DB, 0x12C8AC28B95AC98, 0x81639EB1C0B206A7, 1208 0x445E607AB0B209DB, 0x735B2CCFBC8CBC71, 0xDC670924EFEDDDD3, 0x7B8D3BF0D73B7D19 1209 ], [ 1210 0x38BEAAC1DE116586, 0x687CF3D04A87337F, 0xF337FADB98ADF057, 0xC5E24258EE358DBC, 1211 0x1109F0E8996E247E, 0x1C5D6ED10B03401, 0xFBC952F17B28ECD3, 0x3256DC0CC7F12740 1212 ], [ 1213 0xAF25A520949BCF14, 0xC13626A9E3C4534D, 0xE60F7D867740F9E1, 0x915DE6BBE26A0629, 1214 0x965A54CC4CFE5E8D, 0xBEE931CB62323AA6, 0xB17B591896846A47, 0xD4F0C9362759AF31 1215 ], [ 1216 0xE2F9B5C025370BB0, 0x392BCBA2168494A5, 0x608AF8CEFA348C14, 0x7AA53764418C9219, 1217 0xB3F346A1FA833F89, 0x97493F487802CF7C, 0xDCADE8BA1E008F23, 0x92774F49EDB0323D 1218 ], [ 1219 0x75416382774DFF2F, 0xFFFA38D055034600, 0xBF7D02493E98F361, 0xF4A860C29AE5CE0B, 1220 0xC8DF5A44EE5D9D27, 0x23F45A55047500A4, 0xB016101202F9E28C, 0xAC30CD296833331D 1221 ], [ 1222 0x36BF1826884AD89, 0x9940C662D8467163, 0x4C433E174B19C210, 0xE29CCFD34CFF86C5, 1223 0x21FF11A042DF2653, 0x1B8E00CB6CE44B13, 0xA6123BF7A347B7CE, 0xD918900E3B2833CA 1224 ], [ 1225 0xD01C677A0A9A2CF9, 0x2A942F534A63B6B2, 0x88422246FEACA8B4, 0x474A5CC73D583559, 1226 0x74A6925DA55C6FA1, 0x7717E68CC4735C39, 0x82A3B0B53EC1AC6, 0x2AF658EB814DE762 1227 ], [ 1228 0x489548B601EEBC3A, 0xA50D6BC66BED8E81, 0xE0CE3DCF88265A75, 0xC28C4ADBC0F69CE9, 1229 0x54B79CD57F718513, 0x43414B8A977D0B7B, 0x631935BBDBF6157A, 0x6A7A4EF637018227 1230 ],]; 1231 1232 version (unittest) { 1233 import std.conv : hexString; 1234 }