Compare commits

...
Author SHA1 Message Date
Mounir IDRASSI 7ad75a81ca Windows: Fix compilation error caused by latest MacOSX change. 2016-08-17 22:38:14 +02:00
Mounir IDRASSI f84dc7b78f Windows Boot: update EFI Boot Loader file after correction made to wrong password error message. 2016-08-17 22:18:03 +02:00
Mounir IDRASSI 882525b879 Add reference of new algorithms introduced in version 1.18 (Camellia, Streebog, Kuznyechik and GOST-89) 2016-08-17 22:18:02 +02:00
Mounir IDRASSI 24e233ea2e Update License.txt with additional copyrights. 2016-08-17 22:18:01 +02:00
Mounir IDRASSI c6d5b30704 MacOSX: fix compiler warning about ALIGN macro being already defined 2016-08-17 22:18:01 +02:00
Mounir IDRASSI 0dc3cb7cd1 Add reference to VeraCrypt-DCS EFI Boot loader in Readme. Update copyrights. 2016-08-17 17:06:21 +02:00
Mounir IDRASSI d4192bf863 Windows: Increase text size limit in RichEdit control to avoid truncating Legal Notices text when displayed. 2016-08-17 17:06:20 +02:00
Mounir IDRASSI 8c963356cb Windows Bootloader: Update EFI bootloader files built using the latest source modifications 2016-08-17 17:06:19 +02:00
Mounir IDRASSI 20c723e242 Windows: correct handle failure of TranslateVolumeID function (should not happen anyway). 2016-08-17 17:06:18 +02:00
Mounir IDRASSI 3ddb499280 Update 1.18 release date 2016-08-17 08:55:56 +02:00
Mounir IDRASSI b56e8c5c4b Linux/MacOSX: Add Streebog to the list of supported hash algorithms used for key derivation. 2016-08-17 08:36:33 +02:00
Mounir IDRASSI d8a7de8ffb Linux: Disable Kernel crypto if volume encrypted using Kuznyechik or Magma 2016-08-17 08:36:33 +02:00
Mounir IDRASSI 7695b8ada0 Linux: Add parameter to Makefile for enabling SSSE3 and SSE4.1 support in compiler 2016-08-17 08:36:32 +02:00
Mounir IDRASSI a72c7bcd6a Linux: fix compilation error on Streebog.c if SSE4.1 not enabled in compiler 2016-08-17 08:36:31 +02:00
Mounir IDRASSI 2780ac962e Linux: fix various compilation issues under Linux. 2016-08-17 00:08:18 +02:00
Mounir IDRASSI e47f94cb43 Windows: modification to make Coverity happy! 2016-08-16 19:58:48 +02:00
Mounir IDRASSI 625259d226 Fix compilation error in Streebog code caused by latest changes. 2016-08-16 12:42:44 +02:00
34 changed files with 2596 additions and 2877 deletions
+14 -1
View File
@@ -116,6 +116,14 @@ This is the case for IDRIX's certificate. If yours is issued by another CA,
then you should put the Root and Intermediate certificates in the "Signing"
folder and then modify sign.bat accordingly.
VeraCrypt EFI Boot Loader:
--------------------------
VeraCrypt source code contains pre-built EFI binaries under src\Boot\EFI.
The source code of VeraCrypt EFI Boot Loader is licensed under LGPL and
it is available at https://github.com/veracrypt/VeraCrypt-DCS.
For build instructions, please refer to the file src\Boot\EFI\Readme.txt.
II. Linux and Mac OS X
======================
@@ -240,13 +248,18 @@ Copyright Information
---------------------
This software as a whole:
Copyright (c) 2013-2015 IDRIX. All rights reserved.
Copyright (c) 2013-2016 IDRIX. All rights reserved.
Portions of this software:
Copyright (c) 2013-2016 IDRIX. All rights reserved.
Copyright (c) 2003-2012 TrueCrypt Developers Association. All rights reserved.
Copyright (c) 1998-2000 Paul Le Roux. All rights reserved.
Copyright (c) 1998-2008 Brian Gladman, Worcester, UK. All rights reserved.
Copyright (c) 2002-2004 Mark Adler. All rights reserved.
Copyright (c) 2016 Disk Cryptography Services for EFI (DCS), Alex Kolotnikov
Copyright (c) 1990-2002 Info-ZIP. All rights reserved.
Copyright (c) 2013, Alexey Degtyarev. All rights reserved.
For more information, please see the legal notices attached to parts of the
source code.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+23 -1
View File
@@ -1,4 +1,26 @@
To update secure boot configuration
The source code for VeraCrypt EFI bootloader files is available at: https://github.com/veracrypt/VeraCrypt-DCS
Use tag "VeraCrypt_1.18" to extract the sources that were used when building VeraCrypt 1.18.
VeraCrypt-DCS uses EDK II as its UEFI development environement.
VeraCrypt-DCS is licensed under LGPL: https://github.com/veracrypt/VeraCrypt-DCS/blob/master/LICENSE
Here the steps to build VeraCrypt-DCS (Visual Studio 2010 SP1 should be installed)
* Clone EDK: git clone https://github.com/tianocore/tianocore.github.io.git edk2
* Switch to UDK2015 branche: git checkout UDK2015
* Clone VeraCrypt-DCS as DcsPkg inside edk2 folder: git clone https://github.com/veracrypt/VeraCrypt-DCS.git DcsPkg
* Switch to VeraCrypt_1.18 branche: git checkout VeraCrypt_1.18
* Setup EDK by typing edksetup.bat at the root of folder edk2
* change directoty to DcsPkg and then type setenv.bat.
* change directory to DcsPkg\Library\VeraCryptLib and then type mklinks_src.bat: you will be asked to provide the path to VeraCrypt src folder.
* change directory to DcsPkg and then type dcs_bld.bat X64Rel
* After the build is finished, EFI bootloader files will be present at edk2\Build\DcsPkg\RELEASE_VS2010x86\X64
Secure Boot:
In order to allow VeraCrypt EFI bootloader to run when EFI Secure Boot is enabled, VeraCrypt EFI bootloader files are signed
using a custom key whose public part can be loader into Secure Boot to allow the verification of VeraCrypt EFI files.
below are instruction to update Secure Boot configuration:
1. Enter BIOS configuration
2. Switch Secure boot to setup mode (or custom mode). It deletes PK (platform certificate) and allows to load DCS platform key.
3. Boot Windows
+1 -1
View File
@@ -78,7 +78,7 @@ typedef struct
#define TC_SET_BOOT_ARGUMENTS_SIGNATURE(SG) do { SG[0] = 'T'; SG[1] = 'R'; SG[2] = 'U'; SG[3] = 'E'; SG[4] = 0x11; SG[5] = 0x23; SG[6] = 0x45; SG[7] = 0x66; } while (FALSE)
#define TC_IS_BOOT_ARGUMENTS_SIGNATURE(SG) (SG[0] == 'T' && SG[1] == 'R' && SG[2] == 'U' && SG[3] == 'E' && SG[4] == 0x11 && SG[5] == 0x23 && SG[6] == 0x45 && SG[7] == 0x66)
#if !defined(TC_WINDOWS_BOOT)
#if defined(_MSC_VER) && !defined(TC_WINDOWS_BOOT)
#define DCS_DISK_ENTRY_LIST_HEADER_SIGN SIGNATURE_64 ('D','C','S','D','E','L','S','T')
+1 -1
View File
@@ -760,7 +760,7 @@ int GetMaxPkcs5OutSize (void)
{
int size = 32;
size = max (size, EAGetLargestKeyForMode (XTS) * 2); // Sizes of primary + secondary keys
size = VC_MAX (size, EAGetLargestKeyForMode (XTS) * 2); // Sizes of primary + secondary keys
return size;
}
+2 -2
View File
@@ -171,9 +171,9 @@ typedef struct
#else
#ifdef TC_WINDOWS_BOOT
#define MAX_EXPANDED_KEY max((AES_KS + SERPENT_KS + TWOFISH_KS), CAMELLIA_KS)
#define MAX_EXPANDED_KEY VC_MAX((AES_KS + SERPENT_KS + TWOFISH_KS), CAMELLIA_KS)
#else
#define MAX_EXPANDED_KEY max(max(max((AES_KS + SERPENT_KS + TWOFISH_KS), GOST_KS), CAMELLIA_KS), KUZNYECHIK_KS)
#define MAX_EXPANDED_KEY VC_MAX(VC_MAX(VC_MAX((AES_KS + SERPENT_KS + TWOFISH_KS), GOST_KS), CAMELLIA_KS), KUZNYECHIK_KS)
#endif
#endif
+7 -1
View File
@@ -1214,7 +1214,10 @@ BOOL CALLBACK AboutDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
L"Copyright \xA9 2003-2012 TrueCrypt Developers Association. All Rights Reserved.\r\n"
L"Copyright \xA9 1998-2000 Paul Le Roux. All Rights Reserved.\r\n"
L"Copyright \xA9 1998-2008 Brian Gladman. All Rights Reserved.\r\n"
L"Copyright \xA9 2002-2004 Mark Adler. All Rights Reserved.\r\n\r\n"
L"Copyright \xA9 2002-2004 Mark Adler. All Rights Reserved.\r\n"
L"Copyright \xA9 2016 Disk Cryptography Services for EFI (DCS), Alex Kolotnikov.\r\n"
L"Copyright \xA9 1990-2002 Info-ZIP. All rights reserved.\r\n"
L"Copyright \xA9 2013, Alexey Degtyarev. All rights reserved.\r\n\r\n"
L"This software as a whole:\r\n"
L"Copyright \xA9 2013-2016 IDRIX. All rights reserved.\r\n\r\n"
@@ -3316,6 +3319,9 @@ BOOL CALLBACK TextInfoDialogBoxDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, L
{
nID = (int) lParam;
// increase size limit of rich edit control
SendMessage(GetDlgItem (hwndDlg, IDC_INFO_BOX_TEXT), EM_EXLIMITTEXT, 0, -1);
// Left margin for rich edit text field
SendMessage (GetDlgItem (hwndDlg, IDC_INFO_BOX_TEXT), EM_SETMARGINS, (WPARAM) EC_LEFTMARGIN, (LPARAM) CompensateXDPI (4));
+5 -1
View File
@@ -61,7 +61,7 @@ extern unsigned short _rotl16(unsigned short value, unsigned char shift);
#define VERSION_NUM 0x0118
// Release date
#define TC_STR_RELEASE_DATE L"August 16th, 2016"
#define TC_STR_RELEASE_DATE L"August 17th, 2016"
#define TC_RELEASE_DATE_YEAR 2016
#define TC_RELEASE_DATE_MONTH 8
@@ -75,6 +75,9 @@ extern unsigned short _rotl16(unsigned short value, unsigned char shift);
#define WIDE(x) (LPWSTR)L##x
#define VC_MAX(a,b) ((a)>(b))?(a):(b)
#define VC_MIN(a,b) ((a)<(b))?(a):(b)
#ifdef _MSC_VER
typedef __int8 int8;
@@ -100,6 +103,7 @@ typedef unsigned __int64 uint64;
#include <inttypes.h>
#include <limits.h>
#include <memory.h>
typedef int8_t int8;
typedef int16_t int16;
+2 -2
View File
@@ -511,7 +511,7 @@ unsigned long HexStringToByteArray(const char* hexStr, unsigned char* pbData)
BOOL RunHashTest (HashFunction fn, HashTestVector* vector, BOOL bUseSSE)
{
ALIGN (16) unsigned char input[256];
CRYPTOPP_ALIGN_DATA (16) unsigned char input[256];
unsigned char output[64];
unsigned char digest[64];
unsigned long i = 0, inputLen, outputLen, digestLen;
@@ -1290,7 +1290,7 @@ static const unsigned char gost3411_2012_hmac_r1[] = {
BOOL test_hmac_streebog ()
{
ALIGN(16) char digest[64]; /* large enough to hold digets and test vector inputs */
CRYPTOPP_ALIGN_DATA(16) char digest[64]; /* large enough to hold digets and test vector inputs */
memcpy (digest, gost3411_2012_hmac_m1, sizeof (gost3411_2012_hmac_m1));
hmac_streebog ((char*) gost3411_2012_hmac_k1, sizeof(gost3411_2012_hmac_k1), digest, (int) sizeof (gost3411_2012_hmac_m1));
+3
View File
@@ -303,9 +303,12 @@ namespace VeraCrypt
void CoreLinux::MountVolumeNative (shared_ptr <Volume> volume, MountOptions &options, const DirectoryPath &auxMountPoint) const
{
bool xts = (typeid (*volume->GetEncryptionMode()) == typeid (EncryptionModeXTS));
bool algoNotSupported = (typeid (*volume->GetEncryptionAlgorithm()) == typeid (GOST89))
|| (typeid (*volume->GetEncryptionAlgorithm()) == typeid (Kuznyechik));
if (options.NoKernelCrypto
|| !xts
|| algoNotSupported
|| volume->GetProtectionType() == VolumeProtection::HiddenVolumeReadOnly)
{
throw NotApplicable (SRC_POS);
+258 -258
View File
@@ -14,282 +14,282 @@ and released into public domain.
//#define CPPCRYPTO_DEBUG
static const uint64 S[8][256] = {
static const uint64 S[8][256] = {
{
0x7070700070000070, 0x8282820082000082, 0x2c2c2c002c00002c, 0xececec00ec0000ec, 0xb3b3b300b30000b3, 0x2727270027000027, 0xc0c0c000c00000c0, 0xe5e5e500e50000e5,
0xe4e4e400e40000e4, 0x8585850085000085, 0x5757570057000057, 0x3535350035000035, 0xeaeaea00ea0000ea, 0x0c0c0c000c00000c, 0xaeaeae00ae0000ae, 0x4141410041000041,
0x2323230023000023, 0xefefef00ef0000ef, 0x6b6b6b006b00006b, 0x9393930093000093, 0x4545450045000045, 0x1919190019000019, 0xa5a5a500a50000a5, 0x2121210021000021,
0xededed00ed0000ed, 0x0e0e0e000e00000e, 0x4f4f4f004f00004f, 0x4e4e4e004e00004e, 0x1d1d1d001d00001d, 0x6565650065000065, 0x9292920092000092, 0xbdbdbd00bd0000bd,
0x8686860086000086, 0xb8b8b800b80000b8, 0xafafaf00af0000af, 0x8f8f8f008f00008f, 0x7c7c7c007c00007c, 0xebebeb00eb0000eb, 0x1f1f1f001f00001f, 0xcecece00ce0000ce,
0x3e3e3e003e00003e, 0x3030300030000030, 0xdcdcdc00dc0000dc, 0x5f5f5f005f00005f, 0x5e5e5e005e00005e, 0xc5c5c500c50000c5, 0x0b0b0b000b00000b, 0x1a1a1a001a00001a,
0xa6a6a600a60000a6, 0xe1e1e100e10000e1, 0x3939390039000039, 0xcacaca00ca0000ca, 0xd5d5d500d50000d5, 0x4747470047000047, 0x5d5d5d005d00005d, 0x3d3d3d003d00003d,
0xd9d9d900d90000d9, 0x0101010001000001, 0x5a5a5a005a00005a, 0xd6d6d600d60000d6, 0x5151510051000051, 0x5656560056000056, 0x6c6c6c006c00006c, 0x4d4d4d004d00004d,
0x8b8b8b008b00008b, 0x0d0d0d000d00000d, 0x9a9a9a009a00009a, 0x6666660066000066, 0xfbfbfb00fb0000fb, 0xcccccc00cc0000cc, 0xb0b0b000b00000b0, 0x2d2d2d002d00002d,
0x7474740074000074, 0x1212120012000012, 0x2b2b2b002b00002b, 0x2020200020000020, 0xf0f0f000f00000f0, 0xb1b1b100b10000b1, 0x8484840084000084, 0x9999990099000099,
0xdfdfdf00df0000df, 0x4c4c4c004c00004c, 0xcbcbcb00cb0000cb, 0xc2c2c200c20000c2, 0x3434340034000034, 0x7e7e7e007e00007e, 0x7676760076000076, 0x0505050005000005,
0x6d6d6d006d00006d, 0xb7b7b700b70000b7, 0xa9a9a900a90000a9, 0x3131310031000031, 0xd1d1d100d10000d1, 0x1717170017000017, 0x0404040004000004, 0xd7d7d700d70000d7,
0x1414140014000014, 0x5858580058000058, 0x3a3a3a003a00003a, 0x6161610061000061, 0xdedede00de0000de, 0x1b1b1b001b00001b, 0x1111110011000011, 0x1c1c1c001c00001c,
0x3232320032000032, 0x0f0f0f000f00000f, 0x9c9c9c009c00009c, 0x1616160016000016, 0x5353530053000053, 0x1818180018000018, 0xf2f2f200f20000f2, 0x2222220022000022,
0xfefefe00fe0000fe, 0x4444440044000044, 0xcfcfcf00cf0000cf, 0xb2b2b200b20000b2, 0xc3c3c300c30000c3, 0xb5b5b500b50000b5, 0x7a7a7a007a00007a, 0x9191910091000091,
0x2424240024000024, 0x0808080008000008, 0xe8e8e800e80000e8, 0xa8a8a800a80000a8, 0x6060600060000060, 0xfcfcfc00fc0000fc, 0x6969690069000069, 0x5050500050000050,
0xaaaaaa00aa0000aa, 0xd0d0d000d00000d0, 0xa0a0a000a00000a0, 0x7d7d7d007d00007d, 0xa1a1a100a10000a1, 0x8989890089000089, 0x6262620062000062, 0x9797970097000097,
0x5454540054000054, 0x5b5b5b005b00005b, 0x1e1e1e001e00001e, 0x9595950095000095, 0xe0e0e000e00000e0, 0xffffff00ff0000ff, 0x6464640064000064, 0xd2d2d200d20000d2,
0x1010100010000010, 0xc4c4c400c40000c4, 0x0000000000000000, 0x4848480048000048, 0xa3a3a300a30000a3, 0xf7f7f700f70000f7, 0x7575750075000075, 0xdbdbdb00db0000db,
0x8a8a8a008a00008a, 0x0303030003000003, 0xe6e6e600e60000e6, 0xdadada00da0000da, 0x0909090009000009, 0x3f3f3f003f00003f, 0xdddddd00dd0000dd, 0x9494940094000094,
0x8787870087000087, 0x5c5c5c005c00005c, 0x8383830083000083, 0x0202020002000002, 0xcdcdcd00cd0000cd, 0x4a4a4a004a00004a, 0x9090900090000090, 0x3333330033000033,
0x7373730073000073, 0x6767670067000067, 0xf6f6f600f60000f6, 0xf3f3f300f30000f3, 0x9d9d9d009d00009d, 0x7f7f7f007f00007f, 0xbfbfbf00bf0000bf, 0xe2e2e200e20000e2,
0x5252520052000052, 0x9b9b9b009b00009b, 0xd8d8d800d80000d8, 0x2626260026000026, 0xc8c8c800c80000c8, 0x3737370037000037, 0xc6c6c600c60000c6, 0x3b3b3b003b00003b,
0x8181810081000081, 0x9696960096000096, 0x6f6f6f006f00006f, 0x4b4b4b004b00004b, 0x1313130013000013, 0xbebebe00be0000be, 0x6363630063000063, 0x2e2e2e002e00002e,
0xe9e9e900e90000e9, 0x7979790079000079, 0xa7a7a700a70000a7, 0x8c8c8c008c00008c, 0x9f9f9f009f00009f, 0x6e6e6e006e00006e, 0xbcbcbc00bc0000bc, 0x8e8e8e008e00008e,
0x2929290029000029, 0xf5f5f500f50000f5, 0xf9f9f900f90000f9, 0xb6b6b600b60000b6, 0x2f2f2f002f00002f, 0xfdfdfd00fd0000fd, 0xb4b4b400b40000b4, 0x5959590059000059,
0x7878780078000078, 0x9898980098000098, 0x0606060006000006, 0x6a6a6a006a00006a, 0xe7e7e700e70000e7, 0x4646460046000046, 0x7171710071000071, 0xbababa00ba0000ba,
0xd4d4d400d40000d4, 0x2525250025000025, 0xababab00ab0000ab, 0x4242420042000042, 0x8888880088000088, 0xa2a2a200a20000a2, 0x8d8d8d008d00008d, 0xfafafa00fa0000fa,
0x7272720072000072, 0x0707070007000007, 0xb9b9b900b90000b9, 0x5555550055000055, 0xf8f8f800f80000f8, 0xeeeeee00ee0000ee, 0xacacac00ac0000ac, 0x0a0a0a000a00000a,
0x3636360036000036, 0x4949490049000049, 0x2a2a2a002a00002a, 0x6868680068000068, 0x3c3c3c003c00003c, 0x3838380038000038, 0xf1f1f100f10000f1, 0xa4a4a400a40000a4,
0x4040400040000040, 0x2828280028000028, 0xd3d3d300d30000d3, 0x7b7b7b007b00007b, 0xbbbbbb00bb0000bb, 0xc9c9c900c90000c9, 0x4343430043000043, 0xc1c1c100c10000c1,
0x1515150015000015, 0xe3e3e300e30000e3, 0xadadad00ad0000ad, 0xf4f4f400f40000f4, 0x7777770077000077, 0xc7c7c700c70000c7, 0x8080800080000080, 0x9e9e9e009e00009e
LL(0x7070700070000070), LL(0x8282820082000082), LL(0x2c2c2c002c00002c), LL(0xececec00ec0000ec), LL(0xb3b3b300b30000b3), LL(0x2727270027000027), LL(0xc0c0c000c00000c0), LL(0xe5e5e500e50000e5),
LL(0xe4e4e400e40000e4), LL(0x8585850085000085), LL(0x5757570057000057), LL(0x3535350035000035), LL(0xeaeaea00ea0000ea), LL(0x0c0c0c000c00000c), LL(0xaeaeae00ae0000ae), LL(0x4141410041000041),
LL(0x2323230023000023), LL(0xefefef00ef0000ef), LL(0x6b6b6b006b00006b), LL(0x9393930093000093), LL(0x4545450045000045), LL(0x1919190019000019), LL(0xa5a5a500a50000a5), LL(0x2121210021000021),
LL(0xededed00ed0000ed), LL(0x0e0e0e000e00000e), LL(0x4f4f4f004f00004f), LL(0x4e4e4e004e00004e), LL(0x1d1d1d001d00001d), LL(0x6565650065000065), LL(0x9292920092000092), LL(0xbdbdbd00bd0000bd),
LL(0x8686860086000086), LL(0xb8b8b800b80000b8), LL(0xafafaf00af0000af), LL(0x8f8f8f008f00008f), LL(0x7c7c7c007c00007c), LL(0xebebeb00eb0000eb), LL(0x1f1f1f001f00001f), LL(0xcecece00ce0000ce),
LL(0x3e3e3e003e00003e), LL(0x3030300030000030), LL(0xdcdcdc00dc0000dc), LL(0x5f5f5f005f00005f), LL(0x5e5e5e005e00005e), LL(0xc5c5c500c50000c5), LL(0x0b0b0b000b00000b), LL(0x1a1a1a001a00001a),
LL(0xa6a6a600a60000a6), LL(0xe1e1e100e10000e1), LL(0x3939390039000039), LL(0xcacaca00ca0000ca), LL(0xd5d5d500d50000d5), LL(0x4747470047000047), LL(0x5d5d5d005d00005d), LL(0x3d3d3d003d00003d),
LL(0xd9d9d900d90000d9), LL(0x0101010001000001), LL(0x5a5a5a005a00005a), LL(0xd6d6d600d60000d6), LL(0x5151510051000051), LL(0x5656560056000056), LL(0x6c6c6c006c00006c), LL(0x4d4d4d004d00004d),
LL(0x8b8b8b008b00008b), LL(0x0d0d0d000d00000d), LL(0x9a9a9a009a00009a), LL(0x6666660066000066), LL(0xfbfbfb00fb0000fb), LL(0xcccccc00cc0000cc), LL(0xb0b0b000b00000b0), LL(0x2d2d2d002d00002d),
LL(0x7474740074000074), LL(0x1212120012000012), LL(0x2b2b2b002b00002b), LL(0x2020200020000020), LL(0xf0f0f000f00000f0), LL(0xb1b1b100b10000b1), LL(0x8484840084000084), LL(0x9999990099000099),
LL(0xdfdfdf00df0000df), LL(0x4c4c4c004c00004c), LL(0xcbcbcb00cb0000cb), LL(0xc2c2c200c20000c2), LL(0x3434340034000034), LL(0x7e7e7e007e00007e), LL(0x7676760076000076), LL(0x0505050005000005),
LL(0x6d6d6d006d00006d), LL(0xb7b7b700b70000b7), LL(0xa9a9a900a90000a9), LL(0x3131310031000031), LL(0xd1d1d100d10000d1), LL(0x1717170017000017), LL(0x0404040004000004), LL(0xd7d7d700d70000d7),
LL(0x1414140014000014), LL(0x5858580058000058), LL(0x3a3a3a003a00003a), LL(0x6161610061000061), LL(0xdedede00de0000de), LL(0x1b1b1b001b00001b), LL(0x1111110011000011), LL(0x1c1c1c001c00001c),
LL(0x3232320032000032), LL(0x0f0f0f000f00000f), LL(0x9c9c9c009c00009c), LL(0x1616160016000016), LL(0x5353530053000053), LL(0x1818180018000018), LL(0xf2f2f200f20000f2), LL(0x2222220022000022),
LL(0xfefefe00fe0000fe), LL(0x4444440044000044), LL(0xcfcfcf00cf0000cf), LL(0xb2b2b200b20000b2), LL(0xc3c3c300c30000c3), LL(0xb5b5b500b50000b5), LL(0x7a7a7a007a00007a), LL(0x9191910091000091),
LL(0x2424240024000024), LL(0x0808080008000008), LL(0xe8e8e800e80000e8), LL(0xa8a8a800a80000a8), LL(0x6060600060000060), LL(0xfcfcfc00fc0000fc), LL(0x6969690069000069), LL(0x5050500050000050),
LL(0xaaaaaa00aa0000aa), LL(0xd0d0d000d00000d0), LL(0xa0a0a000a00000a0), LL(0x7d7d7d007d00007d), LL(0xa1a1a100a10000a1), LL(0x8989890089000089), LL(0x6262620062000062), LL(0x9797970097000097),
LL(0x5454540054000054), LL(0x5b5b5b005b00005b), LL(0x1e1e1e001e00001e), LL(0x9595950095000095), LL(0xe0e0e000e00000e0), LL(0xffffff00ff0000ff), LL(0x6464640064000064), LL(0xd2d2d200d20000d2),
LL(0x1010100010000010), LL(0xc4c4c400c40000c4), LL(0x0000000000000000), LL(0x4848480048000048), LL(0xa3a3a300a30000a3), LL(0xf7f7f700f70000f7), LL(0x7575750075000075), LL(0xdbdbdb00db0000db),
LL(0x8a8a8a008a00008a), LL(0x0303030003000003), LL(0xe6e6e600e60000e6), LL(0xdadada00da0000da), LL(0x0909090009000009), LL(0x3f3f3f003f00003f), LL(0xdddddd00dd0000dd), LL(0x9494940094000094),
LL(0x8787870087000087), LL(0x5c5c5c005c00005c), LL(0x8383830083000083), LL(0x0202020002000002), LL(0xcdcdcd00cd0000cd), LL(0x4a4a4a004a00004a), LL(0x9090900090000090), LL(0x3333330033000033),
LL(0x7373730073000073), LL(0x6767670067000067), LL(0xf6f6f600f60000f6), LL(0xf3f3f300f30000f3), LL(0x9d9d9d009d00009d), LL(0x7f7f7f007f00007f), LL(0xbfbfbf00bf0000bf), LL(0xe2e2e200e20000e2),
LL(0x5252520052000052), LL(0x9b9b9b009b00009b), LL(0xd8d8d800d80000d8), LL(0x2626260026000026), LL(0xc8c8c800c80000c8), LL(0x3737370037000037), LL(0xc6c6c600c60000c6), LL(0x3b3b3b003b00003b),
LL(0x8181810081000081), LL(0x9696960096000096), LL(0x6f6f6f006f00006f), LL(0x4b4b4b004b00004b), LL(0x1313130013000013), LL(0xbebebe00be0000be), LL(0x6363630063000063), LL(0x2e2e2e002e00002e),
LL(0xe9e9e900e90000e9), LL(0x7979790079000079), LL(0xa7a7a700a70000a7), LL(0x8c8c8c008c00008c), LL(0x9f9f9f009f00009f), LL(0x6e6e6e006e00006e), LL(0xbcbcbc00bc0000bc), LL(0x8e8e8e008e00008e),
LL(0x2929290029000029), LL(0xf5f5f500f50000f5), LL(0xf9f9f900f90000f9), LL(0xb6b6b600b60000b6), LL(0x2f2f2f002f00002f), LL(0xfdfdfd00fd0000fd), LL(0xb4b4b400b40000b4), LL(0x5959590059000059),
LL(0x7878780078000078), LL(0x9898980098000098), LL(0x0606060006000006), LL(0x6a6a6a006a00006a), LL(0xe7e7e700e70000e7), LL(0x4646460046000046), LL(0x7171710071000071), LL(0xbababa00ba0000ba),
LL(0xd4d4d400d40000d4), LL(0x2525250025000025), LL(0xababab00ab0000ab), LL(0x4242420042000042), LL(0x8888880088000088), LL(0xa2a2a200a20000a2), LL(0x8d8d8d008d00008d), LL(0xfafafa00fa0000fa),
LL(0x7272720072000072), LL(0x0707070007000007), LL(0xb9b9b900b90000b9), LL(0x5555550055000055), LL(0xf8f8f800f80000f8), LL(0xeeeeee00ee0000ee), LL(0xacacac00ac0000ac), LL(0x0a0a0a000a00000a),
LL(0x3636360036000036), LL(0x4949490049000049), LL(0x2a2a2a002a00002a), LL(0x6868680068000068), LL(0x3c3c3c003c00003c), LL(0x3838380038000038), LL(0xf1f1f100f10000f1), LL(0xa4a4a400a40000a4),
LL(0x4040400040000040), LL(0x2828280028000028), LL(0xd3d3d300d30000d3), LL(0x7b7b7b007b00007b), LL(0xbbbbbb00bb0000bb), LL(0xc9c9c900c90000c9), LL(0x4343430043000043), LL(0xc1c1c100c10000c1),
LL(0x1515150015000015), LL(0xe3e3e300e30000e3), LL(0xadadad00ad0000ad), LL(0xf4f4f400f40000f4), LL(0x7777770077000077), LL(0xc7c7c700c70000c7), LL(0x8080800080000080), LL(0x9e9e9e009e00009e)
},
{
0x00e0e0e0e0e00000, 0x0005050505050000, 0x0058585858580000, 0x00d9d9d9d9d90000, 0x0067676767670000, 0x004e4e4e4e4e0000, 0x0081818181810000, 0x00cbcbcbcbcb0000,
0x00c9c9c9c9c90000, 0x000b0b0b0b0b0000, 0x00aeaeaeaeae0000, 0x006a6a6a6a6a0000, 0x00d5d5d5d5d50000, 0x0018181818180000, 0x005d5d5d5d5d0000, 0x0082828282820000,
0x0046464646460000, 0x00dfdfdfdfdf0000, 0x00d6d6d6d6d60000, 0x0027272727270000, 0x008a8a8a8a8a0000, 0x0032323232320000, 0x004b4b4b4b4b0000, 0x0042424242420000,
0x00dbdbdbdbdb0000, 0x001c1c1c1c1c0000, 0x009e9e9e9e9e0000, 0x009c9c9c9c9c0000, 0x003a3a3a3a3a0000, 0x00cacacacaca0000, 0x0025252525250000, 0x007b7b7b7b7b0000,
0x000d0d0d0d0d0000, 0x0071717171710000, 0x005f5f5f5f5f0000, 0x001f1f1f1f1f0000, 0x00f8f8f8f8f80000, 0x00d7d7d7d7d70000, 0x003e3e3e3e3e0000, 0x009d9d9d9d9d0000,
0x007c7c7c7c7c0000, 0x0060606060600000, 0x00b9b9b9b9b90000, 0x00bebebebebe0000, 0x00bcbcbcbcbc0000, 0x008b8b8b8b8b0000, 0x0016161616160000, 0x0034343434340000,
0x004d4d4d4d4d0000, 0x00c3c3c3c3c30000, 0x0072727272720000, 0x0095959595950000, 0x00ababababab0000, 0x008e8e8e8e8e0000, 0x00bababababa0000, 0x007a7a7a7a7a0000,
0x00b3b3b3b3b30000, 0x0002020202020000, 0x00b4b4b4b4b40000, 0x00adadadadad0000, 0x00a2a2a2a2a20000, 0x00acacacacac0000, 0x00d8d8d8d8d80000, 0x009a9a9a9a9a0000,
0x0017171717170000, 0x001a1a1a1a1a0000, 0x0035353535350000, 0x00cccccccccc0000, 0x00f7f7f7f7f70000, 0x0099999999990000, 0x0061616161610000, 0x005a5a5a5a5a0000,
0x00e8e8e8e8e80000, 0x0024242424240000, 0x0056565656560000, 0x0040404040400000, 0x00e1e1e1e1e10000, 0x0063636363630000, 0x0009090909090000, 0x0033333333330000,
0x00bfbfbfbfbf0000, 0x0098989898980000, 0x0097979797970000, 0x0085858585850000, 0x0068686868680000, 0x00fcfcfcfcfc0000, 0x00ececececec0000, 0x000a0a0a0a0a0000,
0x00dadadadada0000, 0x006f6f6f6f6f0000, 0x0053535353530000, 0x0062626262620000, 0x00a3a3a3a3a30000, 0x002e2e2e2e2e0000, 0x0008080808080000, 0x00afafafafaf0000,
0x0028282828280000, 0x00b0b0b0b0b00000, 0x0074747474740000, 0x00c2c2c2c2c20000, 0x00bdbdbdbdbd0000, 0x0036363636360000, 0x0022222222220000, 0x0038383838380000,
0x0064646464640000, 0x001e1e1e1e1e0000, 0x0039393939390000, 0x002c2c2c2c2c0000, 0x00a6a6a6a6a60000, 0x0030303030300000, 0x00e5e5e5e5e50000, 0x0044444444440000,
0x00fdfdfdfdfd0000, 0x0088888888880000, 0x009f9f9f9f9f0000, 0x0065656565650000, 0x0087878787870000, 0x006b6b6b6b6b0000, 0x00f4f4f4f4f40000, 0x0023232323230000,
0x0048484848480000, 0x0010101010100000, 0x00d1d1d1d1d10000, 0x0051515151510000, 0x00c0c0c0c0c00000, 0x00f9f9f9f9f90000, 0x00d2d2d2d2d20000, 0x00a0a0a0a0a00000,
0x0055555555550000, 0x00a1a1a1a1a10000, 0x0041414141410000, 0x00fafafafafa0000, 0x0043434343430000, 0x0013131313130000, 0x00c4c4c4c4c40000, 0x002f2f2f2f2f0000,
0x00a8a8a8a8a80000, 0x00b6b6b6b6b60000, 0x003c3c3c3c3c0000, 0x002b2b2b2b2b0000, 0x00c1c1c1c1c10000, 0x00ffffffffff0000, 0x00c8c8c8c8c80000, 0x00a5a5a5a5a50000,
0x0020202020200000, 0x0089898989890000, 0x0000000000000000, 0x0090909090900000, 0x0047474747470000, 0x00efefefefef0000, 0x00eaeaeaeaea0000, 0x00b7b7b7b7b70000,
0x0015151515150000, 0x0006060606060000, 0x00cdcdcdcdcd0000, 0x00b5b5b5b5b50000, 0x0012121212120000, 0x007e7e7e7e7e0000, 0x00bbbbbbbbbb0000, 0x0029292929290000,
0x000f0f0f0f0f0000, 0x00b8b8b8b8b80000, 0x0007070707070000, 0x0004040404040000, 0x009b9b9b9b9b0000, 0x0094949494940000, 0x0021212121210000, 0x0066666666660000,
0x00e6e6e6e6e60000, 0x00cecececece0000, 0x00ededededed0000, 0x00e7e7e7e7e70000, 0x003b3b3b3b3b0000, 0x00fefefefefe0000, 0x007f7f7f7f7f0000, 0x00c5c5c5c5c50000,
0x00a4a4a4a4a40000, 0x0037373737370000, 0x00b1b1b1b1b10000, 0x004c4c4c4c4c0000, 0x0091919191910000, 0x006e6e6e6e6e0000, 0x008d8d8d8d8d0000, 0x0076767676760000,
0x0003030303030000, 0x002d2d2d2d2d0000, 0x00dedededede0000, 0x0096969696960000, 0x0026262626260000, 0x007d7d7d7d7d0000, 0x00c6c6c6c6c60000, 0x005c5c5c5c5c0000,
0x00d3d3d3d3d30000, 0x00f2f2f2f2f20000, 0x004f4f4f4f4f0000, 0x0019191919190000, 0x003f3f3f3f3f0000, 0x00dcdcdcdcdc0000, 0x0079797979790000, 0x001d1d1d1d1d0000,
0x0052525252520000, 0x00ebebebebeb0000, 0x00f3f3f3f3f30000, 0x006d6d6d6d6d0000, 0x005e5e5e5e5e0000, 0x00fbfbfbfbfb0000, 0x0069696969690000, 0x00b2b2b2b2b20000,
0x00f0f0f0f0f00000, 0x0031313131310000, 0x000c0c0c0c0c0000, 0x00d4d4d4d4d40000, 0x00cfcfcfcfcf0000, 0x008c8c8c8c8c0000, 0x00e2e2e2e2e20000, 0x0075757575750000,
0x00a9a9a9a9a90000, 0x004a4a4a4a4a0000, 0x0057575757570000, 0x0084848484840000, 0x0011111111110000, 0x0045454545450000, 0x001b1b1b1b1b0000, 0x00f5f5f5f5f50000,
0x00e4e4e4e4e40000, 0x000e0e0e0e0e0000, 0x0073737373730000, 0x00aaaaaaaaaa0000, 0x00f1f1f1f1f10000, 0x00dddddddddd0000, 0x0059595959590000, 0x0014141414140000,
0x006c6c6c6c6c0000, 0x0092929292920000, 0x0054545454540000, 0x00d0d0d0d0d00000, 0x0078787878780000, 0x0070707070700000, 0x00e3e3e3e3e30000, 0x0049494949490000,
0x0080808080800000, 0x0050505050500000, 0x00a7a7a7a7a70000, 0x00f6f6f6f6f60000, 0x0077777777770000, 0x0093939393930000, 0x0086868686860000, 0x0083838383830000,
0x002a2a2a2a2a0000, 0x00c7c7c7c7c70000, 0x005b5b5b5b5b0000, 0x00e9e9e9e9e90000, 0x00eeeeeeeeee0000, 0x008f8f8f8f8f0000, 0x0001010101010000, 0x003d3d3d3d3d0000
LL(0x00e0e0e0e0e00000), LL(0x0005050505050000), LL(0x0058585858580000), LL(0x00d9d9d9d9d90000), LL(0x0067676767670000), LL(0x004e4e4e4e4e0000), LL(0x0081818181810000), LL(0x00cbcbcbcbcb0000),
LL(0x00c9c9c9c9c90000), LL(0x000b0b0b0b0b0000), LL(0x00aeaeaeaeae0000), LL(0x006a6a6a6a6a0000), LL(0x00d5d5d5d5d50000), LL(0x0018181818180000), LL(0x005d5d5d5d5d0000), LL(0x0082828282820000),
LL(0x0046464646460000), LL(0x00dfdfdfdfdf0000), LL(0x00d6d6d6d6d60000), LL(0x0027272727270000), LL(0x008a8a8a8a8a0000), LL(0x0032323232320000), LL(0x004b4b4b4b4b0000), LL(0x0042424242420000),
LL(0x00dbdbdbdbdb0000), LL(0x001c1c1c1c1c0000), LL(0x009e9e9e9e9e0000), LL(0x009c9c9c9c9c0000), LL(0x003a3a3a3a3a0000), LL(0x00cacacacaca0000), LL(0x0025252525250000), LL(0x007b7b7b7b7b0000),
LL(0x000d0d0d0d0d0000), LL(0x0071717171710000), LL(0x005f5f5f5f5f0000), LL(0x001f1f1f1f1f0000), LL(0x00f8f8f8f8f80000), LL(0x00d7d7d7d7d70000), LL(0x003e3e3e3e3e0000), LL(0x009d9d9d9d9d0000),
LL(0x007c7c7c7c7c0000), LL(0x0060606060600000), LL(0x00b9b9b9b9b90000), LL(0x00bebebebebe0000), LL(0x00bcbcbcbcbc0000), LL(0x008b8b8b8b8b0000), LL(0x0016161616160000), LL(0x0034343434340000),
LL(0x004d4d4d4d4d0000), LL(0x00c3c3c3c3c30000), LL(0x0072727272720000), LL(0x0095959595950000), LL(0x00ababababab0000), LL(0x008e8e8e8e8e0000), LL(0x00bababababa0000), LL(0x007a7a7a7a7a0000),
LL(0x00b3b3b3b3b30000), LL(0x0002020202020000), LL(0x00b4b4b4b4b40000), LL(0x00adadadadad0000), LL(0x00a2a2a2a2a20000), LL(0x00acacacacac0000), LL(0x00d8d8d8d8d80000), LL(0x009a9a9a9a9a0000),
LL(0x0017171717170000), LL(0x001a1a1a1a1a0000), LL(0x0035353535350000), LL(0x00cccccccccc0000), LL(0x00f7f7f7f7f70000), LL(0x0099999999990000), LL(0x0061616161610000), LL(0x005a5a5a5a5a0000),
LL(0x00e8e8e8e8e80000), LL(0x0024242424240000), LL(0x0056565656560000), LL(0x0040404040400000), LL(0x00e1e1e1e1e10000), LL(0x0063636363630000), LL(0x0009090909090000), LL(0x0033333333330000),
LL(0x00bfbfbfbfbf0000), LL(0x0098989898980000), LL(0x0097979797970000), LL(0x0085858585850000), LL(0x0068686868680000), LL(0x00fcfcfcfcfc0000), LL(0x00ececececec0000), LL(0x000a0a0a0a0a0000),
LL(0x00dadadadada0000), LL(0x006f6f6f6f6f0000), LL(0x0053535353530000), LL(0x0062626262620000), LL(0x00a3a3a3a3a30000), LL(0x002e2e2e2e2e0000), LL(0x0008080808080000), LL(0x00afafafafaf0000),
LL(0x0028282828280000), LL(0x00b0b0b0b0b00000), LL(0x0074747474740000), LL(0x00c2c2c2c2c20000), LL(0x00bdbdbdbdbd0000), LL(0x0036363636360000), LL(0x0022222222220000), LL(0x0038383838380000),
LL(0x0064646464640000), LL(0x001e1e1e1e1e0000), LL(0x0039393939390000), LL(0x002c2c2c2c2c0000), LL(0x00a6a6a6a6a60000), LL(0x0030303030300000), LL(0x00e5e5e5e5e50000), LL(0x0044444444440000),
LL(0x00fdfdfdfdfd0000), LL(0x0088888888880000), LL(0x009f9f9f9f9f0000), LL(0x0065656565650000), LL(0x0087878787870000), LL(0x006b6b6b6b6b0000), LL(0x00f4f4f4f4f40000), LL(0x0023232323230000),
LL(0x0048484848480000), LL(0x0010101010100000), LL(0x00d1d1d1d1d10000), LL(0x0051515151510000), LL(0x00c0c0c0c0c00000), LL(0x00f9f9f9f9f90000), LL(0x00d2d2d2d2d20000), LL(0x00a0a0a0a0a00000),
LL(0x0055555555550000), LL(0x00a1a1a1a1a10000), LL(0x0041414141410000), LL(0x00fafafafafa0000), LL(0x0043434343430000), LL(0x0013131313130000), LL(0x00c4c4c4c4c40000), LL(0x002f2f2f2f2f0000),
LL(0x00a8a8a8a8a80000), LL(0x00b6b6b6b6b60000), LL(0x003c3c3c3c3c0000), LL(0x002b2b2b2b2b0000), LL(0x00c1c1c1c1c10000), LL(0x00ffffffffff0000), LL(0x00c8c8c8c8c80000), LL(0x00a5a5a5a5a50000),
LL(0x0020202020200000), LL(0x0089898989890000), LL(0x0000000000000000), LL(0x0090909090900000), LL(0x0047474747470000), LL(0x00efefefefef0000), LL(0x00eaeaeaeaea0000), LL(0x00b7b7b7b7b70000),
LL(0x0015151515150000), LL(0x0006060606060000), LL(0x00cdcdcdcdcd0000), LL(0x00b5b5b5b5b50000), LL(0x0012121212120000), LL(0x007e7e7e7e7e0000), LL(0x00bbbbbbbbbb0000), LL(0x0029292929290000),
LL(0x000f0f0f0f0f0000), LL(0x00b8b8b8b8b80000), LL(0x0007070707070000), LL(0x0004040404040000), LL(0x009b9b9b9b9b0000), LL(0x0094949494940000), LL(0x0021212121210000), LL(0x0066666666660000),
LL(0x00e6e6e6e6e60000), LL(0x00cecececece0000), LL(0x00ededededed0000), LL(0x00e7e7e7e7e70000), LL(0x003b3b3b3b3b0000), LL(0x00fefefefefe0000), LL(0x007f7f7f7f7f0000), LL(0x00c5c5c5c5c50000),
LL(0x00a4a4a4a4a40000), LL(0x0037373737370000), LL(0x00b1b1b1b1b10000), LL(0x004c4c4c4c4c0000), LL(0x0091919191910000), LL(0x006e6e6e6e6e0000), LL(0x008d8d8d8d8d0000), LL(0x0076767676760000),
LL(0x0003030303030000), LL(0x002d2d2d2d2d0000), LL(0x00dedededede0000), LL(0x0096969696960000), LL(0x0026262626260000), LL(0x007d7d7d7d7d0000), LL(0x00c6c6c6c6c60000), LL(0x005c5c5c5c5c0000),
LL(0x00d3d3d3d3d30000), LL(0x00f2f2f2f2f20000), LL(0x004f4f4f4f4f0000), LL(0x0019191919190000), LL(0x003f3f3f3f3f0000), LL(0x00dcdcdcdcdc0000), LL(0x0079797979790000), LL(0x001d1d1d1d1d0000),
LL(0x0052525252520000), LL(0x00ebebebebeb0000), LL(0x00f3f3f3f3f30000), LL(0x006d6d6d6d6d0000), LL(0x005e5e5e5e5e0000), LL(0x00fbfbfbfbfb0000), LL(0x0069696969690000), LL(0x00b2b2b2b2b20000),
LL(0x00f0f0f0f0f00000), LL(0x0031313131310000), LL(0x000c0c0c0c0c0000), LL(0x00d4d4d4d4d40000), LL(0x00cfcfcfcfcf0000), LL(0x008c8c8c8c8c0000), LL(0x00e2e2e2e2e20000), LL(0x0075757575750000),
LL(0x00a9a9a9a9a90000), LL(0x004a4a4a4a4a0000), LL(0x0057575757570000), LL(0x0084848484840000), LL(0x0011111111110000), LL(0x0045454545450000), LL(0x001b1b1b1b1b0000), LL(0x00f5f5f5f5f50000),
LL(0x00e4e4e4e4e40000), LL(0x000e0e0e0e0e0000), LL(0x0073737373730000), LL(0x00aaaaaaaaaa0000), LL(0x00f1f1f1f1f10000), LL(0x00dddddddddd0000), LL(0x0059595959590000), LL(0x0014141414140000),
LL(0x006c6c6c6c6c0000), LL(0x0092929292920000), LL(0x0054545454540000), LL(0x00d0d0d0d0d00000), LL(0x0078787878780000), LL(0x0070707070700000), LL(0x00e3e3e3e3e30000), LL(0x0049494949490000),
LL(0x0080808080800000), LL(0x0050505050500000), LL(0x00a7a7a7a7a70000), LL(0x00f6f6f6f6f60000), LL(0x0077777777770000), LL(0x0093939393930000), LL(0x0086868686860000), LL(0x0083838383830000),
LL(0x002a2a2a2a2a0000), LL(0x00c7c7c7c7c70000), LL(0x005b5b5b5b5b0000), LL(0x00e9e9e9e9e90000), LL(0x00eeeeeeeeee0000), LL(0x008f8f8f8f8f0000), LL(0x0001010101010000), LL(0x003d3d3d3d3d0000)
},
{
0x3800383800383800, 0x4100414100414100, 0x1600161600161600, 0x7600767600767600, 0xd900d9d900d9d900, 0x9300939300939300, 0x6000606000606000, 0xf200f2f200f2f200,
0x7200727200727200, 0xc200c2c200c2c200, 0xab00abab00abab00, 0x9a009a9a009a9a00, 0x7500757500757500, 0x0600060600060600, 0x5700575700575700, 0xa000a0a000a0a000,
0x9100919100919100, 0xf700f7f700f7f700, 0xb500b5b500b5b500, 0xc900c9c900c9c900, 0xa200a2a200a2a200, 0x8c008c8c008c8c00, 0xd200d2d200d2d200, 0x9000909000909000,
0xf600f6f600f6f600, 0x0700070700070700, 0xa700a7a700a7a700, 0x2700272700272700, 0x8e008e8e008e8e00, 0xb200b2b200b2b200, 0x4900494900494900, 0xde00dede00dede00,
0x4300434300434300, 0x5c005c5c005c5c00, 0xd700d7d700d7d700, 0xc700c7c700c7c700, 0x3e003e3e003e3e00, 0xf500f5f500f5f500, 0x8f008f8f008f8f00, 0x6700676700676700,
0x1f001f1f001f1f00, 0x1800181800181800, 0x6e006e6e006e6e00, 0xaf00afaf00afaf00, 0x2f002f2f002f2f00, 0xe200e2e200e2e200, 0x8500858500858500, 0x0d000d0d000d0d00,
0x5300535300535300, 0xf000f0f000f0f000, 0x9c009c9c009c9c00, 0x6500656500656500, 0xea00eaea00eaea00, 0xa300a3a300a3a300, 0xae00aeae00aeae00, 0x9e009e9e009e9e00,
0xec00ecec00ecec00, 0x8000808000808000, 0x2d002d2d002d2d00, 0x6b006b6b006b6b00, 0xa800a8a800a8a800, 0x2b002b2b002b2b00, 0x3600363600363600, 0xa600a6a600a6a600,
0xc500c5c500c5c500, 0x8600868600868600, 0x4d004d4d004d4d00, 0x3300333300333300, 0xfd00fdfd00fdfd00, 0x6600666600666600, 0x5800585800585800, 0x9600969600969600,
0x3a003a3a003a3a00, 0x0900090900090900, 0x9500959500959500, 0x1000101000101000, 0x7800787800787800, 0xd800d8d800d8d800, 0x4200424200424200, 0xcc00cccc00cccc00,
0xef00efef00efef00, 0x2600262600262600, 0xe500e5e500e5e500, 0x6100616100616100, 0x1a001a1a001a1a00, 0x3f003f3f003f3f00, 0x3b003b3b003b3b00, 0x8200828200828200,
0xb600b6b600b6b600, 0xdb00dbdb00dbdb00, 0xd400d4d400d4d400, 0x9800989800989800, 0xe800e8e800e8e800, 0x8b008b8b008b8b00, 0x0200020200020200, 0xeb00ebeb00ebeb00,
0x0a000a0a000a0a00, 0x2c002c2c002c2c00, 0x1d001d1d001d1d00, 0xb000b0b000b0b000, 0x6f006f6f006f6f00, 0x8d008d8d008d8d00, 0x8800888800888800, 0x0e000e0e000e0e00,
0x1900191900191900, 0x8700878700878700, 0x4e004e4e004e4e00, 0x0b000b0b000b0b00, 0xa900a9a900a9a900, 0x0c000c0c000c0c00, 0x7900797900797900, 0x1100111100111100,
0x7f007f7f007f7f00, 0x2200222200222200, 0xe700e7e700e7e700, 0x5900595900595900, 0xe100e1e100e1e100, 0xda00dada00dada00, 0x3d003d3d003d3d00, 0xc800c8c800c8c800,
0x1200121200121200, 0x0400040400040400, 0x7400747400747400, 0x5400545400545400, 0x3000303000303000, 0x7e007e7e007e7e00, 0xb400b4b400b4b400, 0x2800282800282800,
0x5500555500555500, 0x6800686800686800, 0x5000505000505000, 0xbe00bebe00bebe00, 0xd000d0d000d0d000, 0xc400c4c400c4c400, 0x3100313100313100, 0xcb00cbcb00cbcb00,
0x2a002a2a002a2a00, 0xad00adad00adad00, 0x0f000f0f000f0f00, 0xca00caca00caca00, 0x7000707000707000, 0xff00ffff00ffff00, 0x3200323200323200, 0x6900696900696900,
0x0800080800080800, 0x6200626200626200, 0x0000000000000000, 0x2400242400242400, 0xd100d1d100d1d100, 0xfb00fbfb00fbfb00, 0xba00baba00baba00, 0xed00eded00eded00,
0x4500454500454500, 0x8100818100818100, 0x7300737300737300, 0x6d006d6d006d6d00, 0x8400848400848400, 0x9f009f9f009f9f00, 0xee00eeee00eeee00, 0x4a004a4a004a4a00,
0xc300c3c300c3c300, 0x2e002e2e002e2e00, 0xc100c1c100c1c100, 0x0100010100010100, 0xe600e6e600e6e600, 0x2500252500252500, 0x4800484800484800, 0x9900999900999900,
0xb900b9b900b9b900, 0xb300b3b300b3b300, 0x7b007b7b007b7b00, 0xf900f9f900f9f900, 0xce00cece00cece00, 0xbf00bfbf00bfbf00, 0xdf00dfdf00dfdf00, 0x7100717100717100,
0x2900292900292900, 0xcd00cdcd00cdcd00, 0x6c006c6c006c6c00, 0x1300131300131300, 0x6400646400646400, 0x9b009b9b009b9b00, 0x6300636300636300, 0x9d009d9d009d9d00,
0xc000c0c000c0c000, 0x4b004b4b004b4b00, 0xb700b7b700b7b700, 0xa500a5a500a5a500, 0x8900898900898900, 0x5f005f5f005f5f00, 0xb100b1b100b1b100, 0x1700171700171700,
0xf400f4f400f4f400, 0xbc00bcbc00bcbc00, 0xd300d3d300d3d300, 0x4600464600464600, 0xcf00cfcf00cfcf00, 0x3700373700373700, 0x5e005e5e005e5e00, 0x4700474700474700,
0x9400949400949400, 0xfa00fafa00fafa00, 0xfc00fcfc00fcfc00, 0x5b005b5b005b5b00, 0x9700979700979700, 0xfe00fefe00fefe00, 0x5a005a5a005a5a00, 0xac00acac00acac00,
0x3c003c3c003c3c00, 0x4c004c4c004c4c00, 0x0300030300030300, 0x3500353500353500, 0xf300f3f300f3f300, 0x2300232300232300, 0xb800b8b800b8b800, 0x5d005d5d005d5d00,
0x6a006a6a006a6a00, 0x9200929200929200, 0xd500d5d500d5d500, 0x2100212100212100, 0x4400444400444400, 0x5100515100515100, 0xc600c6c600c6c600, 0x7d007d7d007d7d00,
0x3900393900393900, 0x8300838300838300, 0xdc00dcdc00dcdc00, 0xaa00aaaa00aaaa00, 0x7c007c7c007c7c00, 0x7700777700777700, 0x5600565600565600, 0x0500050500050500,
0x1b001b1b001b1b00, 0xa400a4a400a4a400, 0x1500151500151500, 0x3400343400343400, 0x1e001e1e001e1e00, 0x1c001c1c001c1c00, 0xf800f8f800f8f800, 0x5200525200525200,
0x2000202000202000, 0x1400141400141400, 0xe900e9e900e9e900, 0xbd00bdbd00bdbd00, 0xdd00dddd00dddd00, 0xe400e4e400e4e400, 0xa100a1a100a1a100, 0xe000e0e000e0e000,
0x8a008a8a008a8a00, 0xf100f1f100f1f100, 0xd600d6d600d6d600, 0x7a007a7a007a7a00, 0xbb00bbbb00bbbb00, 0xe300e3e300e3e300, 0x4000404000404000, 0x4f004f4f004f4f00
LL(0x3800383800383800), LL(0x4100414100414100), LL(0x1600161600161600), LL(0x7600767600767600), LL(0xd900d9d900d9d900), LL(0x9300939300939300), LL(0x6000606000606000), LL(0xf200f2f200f2f200),
LL(0x7200727200727200), LL(0xc200c2c200c2c200), LL(0xab00abab00abab00), LL(0x9a009a9a009a9a00), LL(0x7500757500757500), LL(0x0600060600060600), LL(0x5700575700575700), LL(0xa000a0a000a0a000),
LL(0x9100919100919100), LL(0xf700f7f700f7f700), LL(0xb500b5b500b5b500), LL(0xc900c9c900c9c900), LL(0xa200a2a200a2a200), LL(0x8c008c8c008c8c00), LL(0xd200d2d200d2d200), LL(0x9000909000909000),
LL(0xf600f6f600f6f600), LL(0x0700070700070700), LL(0xa700a7a700a7a700), LL(0x2700272700272700), LL(0x8e008e8e008e8e00), LL(0xb200b2b200b2b200), LL(0x4900494900494900), LL(0xde00dede00dede00),
LL(0x4300434300434300), LL(0x5c005c5c005c5c00), LL(0xd700d7d700d7d700), LL(0xc700c7c700c7c700), LL(0x3e003e3e003e3e00), LL(0xf500f5f500f5f500), LL(0x8f008f8f008f8f00), LL(0x6700676700676700),
LL(0x1f001f1f001f1f00), LL(0x1800181800181800), LL(0x6e006e6e006e6e00), LL(0xaf00afaf00afaf00), LL(0x2f002f2f002f2f00), LL(0xe200e2e200e2e200), LL(0x8500858500858500), LL(0x0d000d0d000d0d00),
LL(0x5300535300535300), LL(0xf000f0f000f0f000), LL(0x9c009c9c009c9c00), LL(0x6500656500656500), LL(0xea00eaea00eaea00), LL(0xa300a3a300a3a300), LL(0xae00aeae00aeae00), LL(0x9e009e9e009e9e00),
LL(0xec00ecec00ecec00), LL(0x8000808000808000), LL(0x2d002d2d002d2d00), LL(0x6b006b6b006b6b00), LL(0xa800a8a800a8a800), LL(0x2b002b2b002b2b00), LL(0x3600363600363600), LL(0xa600a6a600a6a600),
LL(0xc500c5c500c5c500), LL(0x8600868600868600), LL(0x4d004d4d004d4d00), LL(0x3300333300333300), LL(0xfd00fdfd00fdfd00), LL(0x6600666600666600), LL(0x5800585800585800), LL(0x9600969600969600),
LL(0x3a003a3a003a3a00), LL(0x0900090900090900), LL(0x9500959500959500), LL(0x1000101000101000), LL(0x7800787800787800), LL(0xd800d8d800d8d800), LL(0x4200424200424200), LL(0xcc00cccc00cccc00),
LL(0xef00efef00efef00), LL(0x2600262600262600), LL(0xe500e5e500e5e500), LL(0x6100616100616100), LL(0x1a001a1a001a1a00), LL(0x3f003f3f003f3f00), LL(0x3b003b3b003b3b00), LL(0x8200828200828200),
LL(0xb600b6b600b6b600), LL(0xdb00dbdb00dbdb00), LL(0xd400d4d400d4d400), LL(0x9800989800989800), LL(0xe800e8e800e8e800), LL(0x8b008b8b008b8b00), LL(0x0200020200020200), LL(0xeb00ebeb00ebeb00),
LL(0x0a000a0a000a0a00), LL(0x2c002c2c002c2c00), LL(0x1d001d1d001d1d00), LL(0xb000b0b000b0b000), LL(0x6f006f6f006f6f00), LL(0x8d008d8d008d8d00), LL(0x8800888800888800), LL(0x0e000e0e000e0e00),
LL(0x1900191900191900), LL(0x8700878700878700), LL(0x4e004e4e004e4e00), LL(0x0b000b0b000b0b00), LL(0xa900a9a900a9a900), LL(0x0c000c0c000c0c00), LL(0x7900797900797900), LL(0x1100111100111100),
LL(0x7f007f7f007f7f00), LL(0x2200222200222200), LL(0xe700e7e700e7e700), LL(0x5900595900595900), LL(0xe100e1e100e1e100), LL(0xda00dada00dada00), LL(0x3d003d3d003d3d00), LL(0xc800c8c800c8c800),
LL(0x1200121200121200), LL(0x0400040400040400), LL(0x7400747400747400), LL(0x5400545400545400), LL(0x3000303000303000), LL(0x7e007e7e007e7e00), LL(0xb400b4b400b4b400), LL(0x2800282800282800),
LL(0x5500555500555500), LL(0x6800686800686800), LL(0x5000505000505000), LL(0xbe00bebe00bebe00), LL(0xd000d0d000d0d000), LL(0xc400c4c400c4c400), LL(0x3100313100313100), LL(0xcb00cbcb00cbcb00),
LL(0x2a002a2a002a2a00), LL(0xad00adad00adad00), LL(0x0f000f0f000f0f00), LL(0xca00caca00caca00), LL(0x7000707000707000), LL(0xff00ffff00ffff00), LL(0x3200323200323200), LL(0x6900696900696900),
LL(0x0800080800080800), LL(0x6200626200626200), LL(0x0000000000000000), LL(0x2400242400242400), LL(0xd100d1d100d1d100), LL(0xfb00fbfb00fbfb00), LL(0xba00baba00baba00), LL(0xed00eded00eded00),
LL(0x4500454500454500), LL(0x8100818100818100), LL(0x7300737300737300), LL(0x6d006d6d006d6d00), LL(0x8400848400848400), LL(0x9f009f9f009f9f00), LL(0xee00eeee00eeee00), LL(0x4a004a4a004a4a00),
LL(0xc300c3c300c3c300), LL(0x2e002e2e002e2e00), LL(0xc100c1c100c1c100), LL(0x0100010100010100), LL(0xe600e6e600e6e600), LL(0x2500252500252500), LL(0x4800484800484800), LL(0x9900999900999900),
LL(0xb900b9b900b9b900), LL(0xb300b3b300b3b300), LL(0x7b007b7b007b7b00), LL(0xf900f9f900f9f900), LL(0xce00cece00cece00), LL(0xbf00bfbf00bfbf00), LL(0xdf00dfdf00dfdf00), LL(0x7100717100717100),
LL(0x2900292900292900), LL(0xcd00cdcd00cdcd00), LL(0x6c006c6c006c6c00), LL(0x1300131300131300), LL(0x6400646400646400), LL(0x9b009b9b009b9b00), LL(0x6300636300636300), LL(0x9d009d9d009d9d00),
LL(0xc000c0c000c0c000), LL(0x4b004b4b004b4b00), LL(0xb700b7b700b7b700), LL(0xa500a5a500a5a500), LL(0x8900898900898900), LL(0x5f005f5f005f5f00), LL(0xb100b1b100b1b100), LL(0x1700171700171700),
LL(0xf400f4f400f4f400), LL(0xbc00bcbc00bcbc00), LL(0xd300d3d300d3d300), LL(0x4600464600464600), LL(0xcf00cfcf00cfcf00), LL(0x3700373700373700), LL(0x5e005e5e005e5e00), LL(0x4700474700474700),
LL(0x9400949400949400), LL(0xfa00fafa00fafa00), LL(0xfc00fcfc00fcfc00), LL(0x5b005b5b005b5b00), LL(0x9700979700979700), LL(0xfe00fefe00fefe00), LL(0x5a005a5a005a5a00), LL(0xac00acac00acac00),
LL(0x3c003c3c003c3c00), LL(0x4c004c4c004c4c00), LL(0x0300030300030300), LL(0x3500353500353500), LL(0xf300f3f300f3f300), LL(0x2300232300232300), LL(0xb800b8b800b8b800), LL(0x5d005d5d005d5d00),
LL(0x6a006a6a006a6a00), LL(0x9200929200929200), LL(0xd500d5d500d5d500), LL(0x2100212100212100), LL(0x4400444400444400), LL(0x5100515100515100), LL(0xc600c6c600c6c600), LL(0x7d007d7d007d7d00),
LL(0x3900393900393900), LL(0x8300838300838300), LL(0xdc00dcdc00dcdc00), LL(0xaa00aaaa00aaaa00), LL(0x7c007c7c007c7c00), LL(0x7700777700777700), LL(0x5600565600565600), LL(0x0500050500050500),
LL(0x1b001b1b001b1b00), LL(0xa400a4a400a4a400), LL(0x1500151500151500), LL(0x3400343400343400), LL(0x1e001e1e001e1e00), LL(0x1c001c1c001c1c00), LL(0xf800f8f800f8f800), LL(0x5200525200525200),
LL(0x2000202000202000), LL(0x1400141400141400), LL(0xe900e9e900e9e900), LL(0xbd00bdbd00bdbd00), LL(0xdd00dddd00dddd00), LL(0xe400e4e400e4e400), LL(0xa100a1a100a1a100), LL(0xe000e0e000e0e000),
LL(0x8a008a8a008a8a00), LL(0xf100f1f100f1f100), LL(0xd600d6d600d6d600), LL(0x7a007a7a007a7a00), LL(0xbb00bbbb00bbbb00), LL(0xe300e3e300e3e300), LL(0x4000404000404000), LL(0x4f004f4f004f4f00)
},
{
0x7070007000007070, 0x2c2c002c00002c2c, 0xb3b300b30000b3b3, 0xc0c000c00000c0c0, 0xe4e400e40000e4e4, 0x5757005700005757, 0xeaea00ea0000eaea, 0xaeae00ae0000aeae,
0x2323002300002323, 0x6b6b006b00006b6b, 0x4545004500004545, 0xa5a500a50000a5a5, 0xeded00ed0000eded, 0x4f4f004f00004f4f, 0x1d1d001d00001d1d, 0x9292009200009292,
0x8686008600008686, 0xafaf00af0000afaf, 0x7c7c007c00007c7c, 0x1f1f001f00001f1f, 0x3e3e003e00003e3e, 0xdcdc00dc0000dcdc, 0x5e5e005e00005e5e, 0x0b0b000b00000b0b,
0xa6a600a60000a6a6, 0x3939003900003939, 0xd5d500d50000d5d5, 0x5d5d005d00005d5d, 0xd9d900d90000d9d9, 0x5a5a005a00005a5a, 0x5151005100005151, 0x6c6c006c00006c6c,
0x8b8b008b00008b8b, 0x9a9a009a00009a9a, 0xfbfb00fb0000fbfb, 0xb0b000b00000b0b0, 0x7474007400007474, 0x2b2b002b00002b2b, 0xf0f000f00000f0f0, 0x8484008400008484,
0xdfdf00df0000dfdf, 0xcbcb00cb0000cbcb, 0x3434003400003434, 0x7676007600007676, 0x6d6d006d00006d6d, 0xa9a900a90000a9a9, 0xd1d100d10000d1d1, 0x0404000400000404,
0x1414001400001414, 0x3a3a003a00003a3a, 0xdede00de0000dede, 0x1111001100001111, 0x3232003200003232, 0x9c9c009c00009c9c, 0x5353005300005353, 0xf2f200f20000f2f2,
0xfefe00fe0000fefe, 0xcfcf00cf0000cfcf, 0xc3c300c30000c3c3, 0x7a7a007a00007a7a, 0x2424002400002424, 0xe8e800e80000e8e8, 0x6060006000006060, 0x6969006900006969,
0xaaaa00aa0000aaaa, 0xa0a000a00000a0a0, 0xa1a100a10000a1a1, 0x6262006200006262, 0x5454005400005454, 0x1e1e001e00001e1e, 0xe0e000e00000e0e0, 0x6464006400006464,
0x1010001000001010, 0x0000000000000000, 0xa3a300a30000a3a3, 0x7575007500007575, 0x8a8a008a00008a8a, 0xe6e600e60000e6e6, 0x0909000900000909, 0xdddd00dd0000dddd,
0x8787008700008787, 0x8383008300008383, 0xcdcd00cd0000cdcd, 0x9090009000009090, 0x7373007300007373, 0xf6f600f60000f6f6, 0x9d9d009d00009d9d, 0xbfbf00bf0000bfbf,
0x5252005200005252, 0xd8d800d80000d8d8, 0xc8c800c80000c8c8, 0xc6c600c60000c6c6, 0x8181008100008181, 0x6f6f006f00006f6f, 0x1313001300001313, 0x6363006300006363,
0xe9e900e90000e9e9, 0xa7a700a70000a7a7, 0x9f9f009f00009f9f, 0xbcbc00bc0000bcbc, 0x2929002900002929, 0xf9f900f90000f9f9, 0x2f2f002f00002f2f, 0xb4b400b40000b4b4,
0x7878007800007878, 0x0606000600000606, 0xe7e700e70000e7e7, 0x7171007100007171, 0xd4d400d40000d4d4, 0xabab00ab0000abab, 0x8888008800008888, 0x8d8d008d00008d8d,
0x7272007200007272, 0xb9b900b90000b9b9, 0xf8f800f80000f8f8, 0xacac00ac0000acac, 0x3636003600003636, 0x2a2a002a00002a2a, 0x3c3c003c00003c3c, 0xf1f100f10000f1f1,
0x4040004000004040, 0xd3d300d30000d3d3, 0xbbbb00bb0000bbbb, 0x4343004300004343, 0x1515001500001515, 0xadad00ad0000adad, 0x7777007700007777, 0x8080008000008080,
0x8282008200008282, 0xecec00ec0000ecec, 0x2727002700002727, 0xe5e500e50000e5e5, 0x8585008500008585, 0x3535003500003535, 0x0c0c000c00000c0c, 0x4141004100004141,
0xefef00ef0000efef, 0x9393009300009393, 0x1919001900001919, 0x2121002100002121, 0x0e0e000e00000e0e, 0x4e4e004e00004e4e, 0x6565006500006565, 0xbdbd00bd0000bdbd,
0xb8b800b80000b8b8, 0x8f8f008f00008f8f, 0xebeb00eb0000ebeb, 0xcece00ce0000cece, 0x3030003000003030, 0x5f5f005f00005f5f, 0xc5c500c50000c5c5, 0x1a1a001a00001a1a,
0xe1e100e10000e1e1, 0xcaca00ca0000caca, 0x4747004700004747, 0x3d3d003d00003d3d, 0x0101000100000101, 0xd6d600d60000d6d6, 0x5656005600005656, 0x4d4d004d00004d4d,
0x0d0d000d00000d0d, 0x6666006600006666, 0xcccc00cc0000cccc, 0x2d2d002d00002d2d, 0x1212001200001212, 0x2020002000002020, 0xb1b100b10000b1b1, 0x9999009900009999,
0x4c4c004c00004c4c, 0xc2c200c20000c2c2, 0x7e7e007e00007e7e, 0x0505000500000505, 0xb7b700b70000b7b7, 0x3131003100003131, 0x1717001700001717, 0xd7d700d70000d7d7,
0x5858005800005858, 0x6161006100006161, 0x1b1b001b00001b1b, 0x1c1c001c00001c1c, 0x0f0f000f00000f0f, 0x1616001600001616, 0x1818001800001818, 0x2222002200002222,
0x4444004400004444, 0xb2b200b20000b2b2, 0xb5b500b50000b5b5, 0x9191009100009191, 0x0808000800000808, 0xa8a800a80000a8a8, 0xfcfc00fc0000fcfc, 0x5050005000005050,
0xd0d000d00000d0d0, 0x7d7d007d00007d7d, 0x8989008900008989, 0x9797009700009797, 0x5b5b005b00005b5b, 0x9595009500009595, 0xffff00ff0000ffff, 0xd2d200d20000d2d2,
0xc4c400c40000c4c4, 0x4848004800004848, 0xf7f700f70000f7f7, 0xdbdb00db0000dbdb, 0x0303000300000303, 0xdada00da0000dada, 0x3f3f003f00003f3f, 0x9494009400009494,
0x5c5c005c00005c5c, 0x0202000200000202, 0x4a4a004a00004a4a, 0x3333003300003333, 0x6767006700006767, 0xf3f300f30000f3f3, 0x7f7f007f00007f7f, 0xe2e200e20000e2e2,
0x9b9b009b00009b9b, 0x2626002600002626, 0x3737003700003737, 0x3b3b003b00003b3b, 0x9696009600009696, 0x4b4b004b00004b4b, 0xbebe00be0000bebe, 0x2e2e002e00002e2e,
0x7979007900007979, 0x8c8c008c00008c8c, 0x6e6e006e00006e6e, 0x8e8e008e00008e8e, 0xf5f500f50000f5f5, 0xb6b600b60000b6b6, 0xfdfd00fd0000fdfd, 0x5959005900005959,
0x9898009800009898, 0x6a6a006a00006a6a, 0x4646004600004646, 0xbaba00ba0000baba, 0x2525002500002525, 0x4242004200004242, 0xa2a200a20000a2a2, 0xfafa00fa0000fafa,
0x0707000700000707, 0x5555005500005555, 0xeeee00ee0000eeee, 0x0a0a000a00000a0a, 0x4949004900004949, 0x6868006800006868, 0x3838003800003838, 0xa4a400a40000a4a4,
0x2828002800002828, 0x7b7b007b00007b7b, 0xc9c900c90000c9c9, 0xc1c100c10000c1c1, 0xe3e300e30000e3e3, 0xf4f400f40000f4f4, 0xc7c700c70000c7c7, 0x9e9e009e00009e9e
LL(0x7070007000007070), LL(0x2c2c002c00002c2c), LL(0xb3b300b30000b3b3), LL(0xc0c000c00000c0c0), LL(0xe4e400e40000e4e4), LL(0x5757005700005757), LL(0xeaea00ea0000eaea), LL(0xaeae00ae0000aeae),
LL(0x2323002300002323), LL(0x6b6b006b00006b6b), LL(0x4545004500004545), LL(0xa5a500a50000a5a5), LL(0xeded00ed0000eded), LL(0x4f4f004f00004f4f), LL(0x1d1d001d00001d1d), LL(0x9292009200009292),
LL(0x8686008600008686), LL(0xafaf00af0000afaf), LL(0x7c7c007c00007c7c), LL(0x1f1f001f00001f1f), LL(0x3e3e003e00003e3e), LL(0xdcdc00dc0000dcdc), LL(0x5e5e005e00005e5e), LL(0x0b0b000b00000b0b),
LL(0xa6a600a60000a6a6), LL(0x3939003900003939), LL(0xd5d500d50000d5d5), LL(0x5d5d005d00005d5d), LL(0xd9d900d90000d9d9), LL(0x5a5a005a00005a5a), LL(0x5151005100005151), LL(0x6c6c006c00006c6c),
LL(0x8b8b008b00008b8b), LL(0x9a9a009a00009a9a), LL(0xfbfb00fb0000fbfb), LL(0xb0b000b00000b0b0), LL(0x7474007400007474), LL(0x2b2b002b00002b2b), LL(0xf0f000f00000f0f0), LL(0x8484008400008484),
LL(0xdfdf00df0000dfdf), LL(0xcbcb00cb0000cbcb), LL(0x3434003400003434), LL(0x7676007600007676), LL(0x6d6d006d00006d6d), LL(0xa9a900a90000a9a9), LL(0xd1d100d10000d1d1), LL(0x0404000400000404),
LL(0x1414001400001414), LL(0x3a3a003a00003a3a), LL(0xdede00de0000dede), LL(0x1111001100001111), LL(0x3232003200003232), LL(0x9c9c009c00009c9c), LL(0x5353005300005353), LL(0xf2f200f20000f2f2),
LL(0xfefe00fe0000fefe), LL(0xcfcf00cf0000cfcf), LL(0xc3c300c30000c3c3), LL(0x7a7a007a00007a7a), LL(0x2424002400002424), LL(0xe8e800e80000e8e8), LL(0x6060006000006060), LL(0x6969006900006969),
LL(0xaaaa00aa0000aaaa), LL(0xa0a000a00000a0a0), LL(0xa1a100a10000a1a1), LL(0x6262006200006262), LL(0x5454005400005454), LL(0x1e1e001e00001e1e), LL(0xe0e000e00000e0e0), LL(0x6464006400006464),
LL(0x1010001000001010), LL(0x0000000000000000), LL(0xa3a300a30000a3a3), LL(0x7575007500007575), LL(0x8a8a008a00008a8a), LL(0xe6e600e60000e6e6), LL(0x0909000900000909), LL(0xdddd00dd0000dddd),
LL(0x8787008700008787), LL(0x8383008300008383), LL(0xcdcd00cd0000cdcd), LL(0x9090009000009090), LL(0x7373007300007373), LL(0xf6f600f60000f6f6), LL(0x9d9d009d00009d9d), LL(0xbfbf00bf0000bfbf),
LL(0x5252005200005252), LL(0xd8d800d80000d8d8), LL(0xc8c800c80000c8c8), LL(0xc6c600c60000c6c6), LL(0x8181008100008181), LL(0x6f6f006f00006f6f), LL(0x1313001300001313), LL(0x6363006300006363),
LL(0xe9e900e90000e9e9), LL(0xa7a700a70000a7a7), LL(0x9f9f009f00009f9f), LL(0xbcbc00bc0000bcbc), LL(0x2929002900002929), LL(0xf9f900f90000f9f9), LL(0x2f2f002f00002f2f), LL(0xb4b400b40000b4b4),
LL(0x7878007800007878), LL(0x0606000600000606), LL(0xe7e700e70000e7e7), LL(0x7171007100007171), LL(0xd4d400d40000d4d4), LL(0xabab00ab0000abab), LL(0x8888008800008888), LL(0x8d8d008d00008d8d),
LL(0x7272007200007272), LL(0xb9b900b90000b9b9), LL(0xf8f800f80000f8f8), LL(0xacac00ac0000acac), LL(0x3636003600003636), LL(0x2a2a002a00002a2a), LL(0x3c3c003c00003c3c), LL(0xf1f100f10000f1f1),
LL(0x4040004000004040), LL(0xd3d300d30000d3d3), LL(0xbbbb00bb0000bbbb), LL(0x4343004300004343), LL(0x1515001500001515), LL(0xadad00ad0000adad), LL(0x7777007700007777), LL(0x8080008000008080),
LL(0x8282008200008282), LL(0xecec00ec0000ecec), LL(0x2727002700002727), LL(0xe5e500e50000e5e5), LL(0x8585008500008585), LL(0x3535003500003535), LL(0x0c0c000c00000c0c), LL(0x4141004100004141),
LL(0xefef00ef0000efef), LL(0x9393009300009393), LL(0x1919001900001919), LL(0x2121002100002121), LL(0x0e0e000e00000e0e), LL(0x4e4e004e00004e4e), LL(0x6565006500006565), LL(0xbdbd00bd0000bdbd),
LL(0xb8b800b80000b8b8), LL(0x8f8f008f00008f8f), LL(0xebeb00eb0000ebeb), LL(0xcece00ce0000cece), LL(0x3030003000003030), LL(0x5f5f005f00005f5f), LL(0xc5c500c50000c5c5), LL(0x1a1a001a00001a1a),
LL(0xe1e100e10000e1e1), LL(0xcaca00ca0000caca), LL(0x4747004700004747), LL(0x3d3d003d00003d3d), LL(0x0101000100000101), LL(0xd6d600d60000d6d6), LL(0x5656005600005656), LL(0x4d4d004d00004d4d),
LL(0x0d0d000d00000d0d), LL(0x6666006600006666), LL(0xcccc00cc0000cccc), LL(0x2d2d002d00002d2d), LL(0x1212001200001212), LL(0x2020002000002020), LL(0xb1b100b10000b1b1), LL(0x9999009900009999),
LL(0x4c4c004c00004c4c), LL(0xc2c200c20000c2c2), LL(0x7e7e007e00007e7e), LL(0x0505000500000505), LL(0xb7b700b70000b7b7), LL(0x3131003100003131), LL(0x1717001700001717), LL(0xd7d700d70000d7d7),
LL(0x5858005800005858), LL(0x6161006100006161), LL(0x1b1b001b00001b1b), LL(0x1c1c001c00001c1c), LL(0x0f0f000f00000f0f), LL(0x1616001600001616), LL(0x1818001800001818), LL(0x2222002200002222),
LL(0x4444004400004444), LL(0xb2b200b20000b2b2), LL(0xb5b500b50000b5b5), LL(0x9191009100009191), LL(0x0808000800000808), LL(0xa8a800a80000a8a8), LL(0xfcfc00fc0000fcfc), LL(0x5050005000005050),
LL(0xd0d000d00000d0d0), LL(0x7d7d007d00007d7d), LL(0x8989008900008989), LL(0x9797009700009797), LL(0x5b5b005b00005b5b), LL(0x9595009500009595), LL(0xffff00ff0000ffff), LL(0xd2d200d20000d2d2),
LL(0xc4c400c40000c4c4), LL(0x4848004800004848), LL(0xf7f700f70000f7f7), LL(0xdbdb00db0000dbdb), LL(0x0303000300000303), LL(0xdada00da0000dada), LL(0x3f3f003f00003f3f), LL(0x9494009400009494),
LL(0x5c5c005c00005c5c), LL(0x0202000200000202), LL(0x4a4a004a00004a4a), LL(0x3333003300003333), LL(0x6767006700006767), LL(0xf3f300f30000f3f3), LL(0x7f7f007f00007f7f), LL(0xe2e200e20000e2e2),
LL(0x9b9b009b00009b9b), LL(0x2626002600002626), LL(0x3737003700003737), LL(0x3b3b003b00003b3b), LL(0x9696009600009696), LL(0x4b4b004b00004b4b), LL(0xbebe00be0000bebe), LL(0x2e2e002e00002e2e),
LL(0x7979007900007979), LL(0x8c8c008c00008c8c), LL(0x6e6e006e00006e6e), LL(0x8e8e008e00008e8e), LL(0xf5f500f50000f5f5), LL(0xb6b600b60000b6b6), LL(0xfdfd00fd0000fdfd), LL(0x5959005900005959),
LL(0x9898009800009898), LL(0x6a6a006a00006a6a), LL(0x4646004600004646), LL(0xbaba00ba0000baba), LL(0x2525002500002525), LL(0x4242004200004242), LL(0xa2a200a20000a2a2), LL(0xfafa00fa0000fafa),
LL(0x0707000700000707), LL(0x5555005500005555), LL(0xeeee00ee0000eeee), LL(0x0a0a000a00000a0a), LL(0x4949004900004949), LL(0x6868006800006868), LL(0x3838003800003838), LL(0xa4a400a40000a4a4),
LL(0x2828002800002828), LL(0x7b7b007b00007b7b), LL(0xc9c900c90000c9c9), LL(0xc1c100c10000c1c1), LL(0xe3e300e30000e3e3), LL(0xf4f400f40000f4f4), LL(0xc7c700c70000c7c7), LL(0x9e9e009e00009e9e)
},
{
0x00e0e0e000e0e0e0, 0x0005050500050505, 0x0058585800585858, 0x00d9d9d900d9d9d9, 0x0067676700676767, 0x004e4e4e004e4e4e, 0x0081818100818181, 0x00cbcbcb00cbcbcb,
0x00c9c9c900c9c9c9, 0x000b0b0b000b0b0b, 0x00aeaeae00aeaeae, 0x006a6a6a006a6a6a, 0x00d5d5d500d5d5d5, 0x0018181800181818, 0x005d5d5d005d5d5d, 0x0082828200828282,
0x0046464600464646, 0x00dfdfdf00dfdfdf, 0x00d6d6d600d6d6d6, 0x0027272700272727, 0x008a8a8a008a8a8a, 0x0032323200323232, 0x004b4b4b004b4b4b, 0x0042424200424242,
0x00dbdbdb00dbdbdb, 0x001c1c1c001c1c1c, 0x009e9e9e009e9e9e, 0x009c9c9c009c9c9c, 0x003a3a3a003a3a3a, 0x00cacaca00cacaca, 0x0025252500252525, 0x007b7b7b007b7b7b,
0x000d0d0d000d0d0d, 0x0071717100717171, 0x005f5f5f005f5f5f, 0x001f1f1f001f1f1f, 0x00f8f8f800f8f8f8, 0x00d7d7d700d7d7d7, 0x003e3e3e003e3e3e, 0x009d9d9d009d9d9d,
0x007c7c7c007c7c7c, 0x0060606000606060, 0x00b9b9b900b9b9b9, 0x00bebebe00bebebe, 0x00bcbcbc00bcbcbc, 0x008b8b8b008b8b8b, 0x0016161600161616, 0x0034343400343434,
0x004d4d4d004d4d4d, 0x00c3c3c300c3c3c3, 0x0072727200727272, 0x0095959500959595, 0x00ababab00ababab, 0x008e8e8e008e8e8e, 0x00bababa00bababa, 0x007a7a7a007a7a7a,
0x00b3b3b300b3b3b3, 0x0002020200020202, 0x00b4b4b400b4b4b4, 0x00adadad00adadad, 0x00a2a2a200a2a2a2, 0x00acacac00acacac, 0x00d8d8d800d8d8d8, 0x009a9a9a009a9a9a,
0x0017171700171717, 0x001a1a1a001a1a1a, 0x0035353500353535, 0x00cccccc00cccccc, 0x00f7f7f700f7f7f7, 0x0099999900999999, 0x0061616100616161, 0x005a5a5a005a5a5a,
0x00e8e8e800e8e8e8, 0x0024242400242424, 0x0056565600565656, 0x0040404000404040, 0x00e1e1e100e1e1e1, 0x0063636300636363, 0x0009090900090909, 0x0033333300333333,
0x00bfbfbf00bfbfbf, 0x0098989800989898, 0x0097979700979797, 0x0085858500858585, 0x0068686800686868, 0x00fcfcfc00fcfcfc, 0x00ececec00ececec, 0x000a0a0a000a0a0a,
0x00dadada00dadada, 0x006f6f6f006f6f6f, 0x0053535300535353, 0x0062626200626262, 0x00a3a3a300a3a3a3, 0x002e2e2e002e2e2e, 0x0008080800080808, 0x00afafaf00afafaf,
0x0028282800282828, 0x00b0b0b000b0b0b0, 0x0074747400747474, 0x00c2c2c200c2c2c2, 0x00bdbdbd00bdbdbd, 0x0036363600363636, 0x0022222200222222, 0x0038383800383838,
0x0064646400646464, 0x001e1e1e001e1e1e, 0x0039393900393939, 0x002c2c2c002c2c2c, 0x00a6a6a600a6a6a6, 0x0030303000303030, 0x00e5e5e500e5e5e5, 0x0044444400444444,
0x00fdfdfd00fdfdfd, 0x0088888800888888, 0x009f9f9f009f9f9f, 0x0065656500656565, 0x0087878700878787, 0x006b6b6b006b6b6b, 0x00f4f4f400f4f4f4, 0x0023232300232323,
0x0048484800484848, 0x0010101000101010, 0x00d1d1d100d1d1d1, 0x0051515100515151, 0x00c0c0c000c0c0c0, 0x00f9f9f900f9f9f9, 0x00d2d2d200d2d2d2, 0x00a0a0a000a0a0a0,
0x0055555500555555, 0x00a1a1a100a1a1a1, 0x0041414100414141, 0x00fafafa00fafafa, 0x0043434300434343, 0x0013131300131313, 0x00c4c4c400c4c4c4, 0x002f2f2f002f2f2f,
0x00a8a8a800a8a8a8, 0x00b6b6b600b6b6b6, 0x003c3c3c003c3c3c, 0x002b2b2b002b2b2b, 0x00c1c1c100c1c1c1, 0x00ffffff00ffffff, 0x00c8c8c800c8c8c8, 0x00a5a5a500a5a5a5,
0x0020202000202020, 0x0089898900898989, 0x0000000000000000, 0x0090909000909090, 0x0047474700474747, 0x00efefef00efefef, 0x00eaeaea00eaeaea, 0x00b7b7b700b7b7b7,
0x0015151500151515, 0x0006060600060606, 0x00cdcdcd00cdcdcd, 0x00b5b5b500b5b5b5, 0x0012121200121212, 0x007e7e7e007e7e7e, 0x00bbbbbb00bbbbbb, 0x0029292900292929,
0x000f0f0f000f0f0f, 0x00b8b8b800b8b8b8, 0x0007070700070707, 0x0004040400040404, 0x009b9b9b009b9b9b, 0x0094949400949494, 0x0021212100212121, 0x0066666600666666,
0x00e6e6e600e6e6e6, 0x00cecece00cecece, 0x00ededed00ededed, 0x00e7e7e700e7e7e7, 0x003b3b3b003b3b3b, 0x00fefefe00fefefe, 0x007f7f7f007f7f7f, 0x00c5c5c500c5c5c5,
0x00a4a4a400a4a4a4, 0x0037373700373737, 0x00b1b1b100b1b1b1, 0x004c4c4c004c4c4c, 0x0091919100919191, 0x006e6e6e006e6e6e, 0x008d8d8d008d8d8d, 0x0076767600767676,
0x0003030300030303, 0x002d2d2d002d2d2d, 0x00dedede00dedede, 0x0096969600969696, 0x0026262600262626, 0x007d7d7d007d7d7d, 0x00c6c6c600c6c6c6, 0x005c5c5c005c5c5c,
0x00d3d3d300d3d3d3, 0x00f2f2f200f2f2f2, 0x004f4f4f004f4f4f, 0x0019191900191919, 0x003f3f3f003f3f3f, 0x00dcdcdc00dcdcdc, 0x0079797900797979, 0x001d1d1d001d1d1d,
0x0052525200525252, 0x00ebebeb00ebebeb, 0x00f3f3f300f3f3f3, 0x006d6d6d006d6d6d, 0x005e5e5e005e5e5e, 0x00fbfbfb00fbfbfb, 0x0069696900696969, 0x00b2b2b200b2b2b2,
0x00f0f0f000f0f0f0, 0x0031313100313131, 0x000c0c0c000c0c0c, 0x00d4d4d400d4d4d4, 0x00cfcfcf00cfcfcf, 0x008c8c8c008c8c8c, 0x00e2e2e200e2e2e2, 0x0075757500757575,
0x00a9a9a900a9a9a9, 0x004a4a4a004a4a4a, 0x0057575700575757, 0x0084848400848484, 0x0011111100111111, 0x0045454500454545, 0x001b1b1b001b1b1b, 0x00f5f5f500f5f5f5,
0x00e4e4e400e4e4e4, 0x000e0e0e000e0e0e, 0x0073737300737373, 0x00aaaaaa00aaaaaa, 0x00f1f1f100f1f1f1, 0x00dddddd00dddddd, 0x0059595900595959, 0x0014141400141414,
0x006c6c6c006c6c6c, 0x0092929200929292, 0x0054545400545454, 0x00d0d0d000d0d0d0, 0x0078787800787878, 0x0070707000707070, 0x00e3e3e300e3e3e3, 0x0049494900494949,
0x0080808000808080, 0x0050505000505050, 0x00a7a7a700a7a7a7, 0x00f6f6f600f6f6f6, 0x0077777700777777, 0x0093939300939393, 0x0086868600868686, 0x0083838300838383,
0x002a2a2a002a2a2a, 0x00c7c7c700c7c7c7, 0x005b5b5b005b5b5b, 0x00e9e9e900e9e9e9, 0x00eeeeee00eeeeee, 0x008f8f8f008f8f8f, 0x0001010100010101, 0x003d3d3d003d3d3d
LL(0x00e0e0e000e0e0e0), LL(0x0005050500050505), LL(0x0058585800585858), LL(0x00d9d9d900d9d9d9), LL(0x0067676700676767), LL(0x004e4e4e004e4e4e), LL(0x0081818100818181), LL(0x00cbcbcb00cbcbcb),
LL(0x00c9c9c900c9c9c9), LL(0x000b0b0b000b0b0b), LL(0x00aeaeae00aeaeae), LL(0x006a6a6a006a6a6a), LL(0x00d5d5d500d5d5d5), LL(0x0018181800181818), LL(0x005d5d5d005d5d5d), LL(0x0082828200828282),
LL(0x0046464600464646), LL(0x00dfdfdf00dfdfdf), LL(0x00d6d6d600d6d6d6), LL(0x0027272700272727), LL(0x008a8a8a008a8a8a), LL(0x0032323200323232), LL(0x004b4b4b004b4b4b), LL(0x0042424200424242),
LL(0x00dbdbdb00dbdbdb), LL(0x001c1c1c001c1c1c), LL(0x009e9e9e009e9e9e), LL(0x009c9c9c009c9c9c), LL(0x003a3a3a003a3a3a), LL(0x00cacaca00cacaca), LL(0x0025252500252525), LL(0x007b7b7b007b7b7b),
LL(0x000d0d0d000d0d0d), LL(0x0071717100717171), LL(0x005f5f5f005f5f5f), LL(0x001f1f1f001f1f1f), LL(0x00f8f8f800f8f8f8), LL(0x00d7d7d700d7d7d7), LL(0x003e3e3e003e3e3e), LL(0x009d9d9d009d9d9d),
LL(0x007c7c7c007c7c7c), LL(0x0060606000606060), LL(0x00b9b9b900b9b9b9), LL(0x00bebebe00bebebe), LL(0x00bcbcbc00bcbcbc), LL(0x008b8b8b008b8b8b), LL(0x0016161600161616), LL(0x0034343400343434),
LL(0x004d4d4d004d4d4d), LL(0x00c3c3c300c3c3c3), LL(0x0072727200727272), LL(0x0095959500959595), LL(0x00ababab00ababab), LL(0x008e8e8e008e8e8e), LL(0x00bababa00bababa), LL(0x007a7a7a007a7a7a),
LL(0x00b3b3b300b3b3b3), LL(0x0002020200020202), LL(0x00b4b4b400b4b4b4), LL(0x00adadad00adadad), LL(0x00a2a2a200a2a2a2), LL(0x00acacac00acacac), LL(0x00d8d8d800d8d8d8), LL(0x009a9a9a009a9a9a),
LL(0x0017171700171717), LL(0x001a1a1a001a1a1a), LL(0x0035353500353535), LL(0x00cccccc00cccccc), LL(0x00f7f7f700f7f7f7), LL(0x0099999900999999), LL(0x0061616100616161), LL(0x005a5a5a005a5a5a),
LL(0x00e8e8e800e8e8e8), LL(0x0024242400242424), LL(0x0056565600565656), LL(0x0040404000404040), LL(0x00e1e1e100e1e1e1), LL(0x0063636300636363), LL(0x0009090900090909), LL(0x0033333300333333),
LL(0x00bfbfbf00bfbfbf), LL(0x0098989800989898), LL(0x0097979700979797), LL(0x0085858500858585), LL(0x0068686800686868), LL(0x00fcfcfc00fcfcfc), LL(0x00ececec00ececec), LL(0x000a0a0a000a0a0a),
LL(0x00dadada00dadada), LL(0x006f6f6f006f6f6f), LL(0x0053535300535353), LL(0x0062626200626262), LL(0x00a3a3a300a3a3a3), LL(0x002e2e2e002e2e2e), LL(0x0008080800080808), LL(0x00afafaf00afafaf),
LL(0x0028282800282828), LL(0x00b0b0b000b0b0b0), LL(0x0074747400747474), LL(0x00c2c2c200c2c2c2), LL(0x00bdbdbd00bdbdbd), LL(0x0036363600363636), LL(0x0022222200222222), LL(0x0038383800383838),
LL(0x0064646400646464), LL(0x001e1e1e001e1e1e), LL(0x0039393900393939), LL(0x002c2c2c002c2c2c), LL(0x00a6a6a600a6a6a6), LL(0x0030303000303030), LL(0x00e5e5e500e5e5e5), LL(0x0044444400444444),
LL(0x00fdfdfd00fdfdfd), LL(0x0088888800888888), LL(0x009f9f9f009f9f9f), LL(0x0065656500656565), LL(0x0087878700878787), LL(0x006b6b6b006b6b6b), LL(0x00f4f4f400f4f4f4), LL(0x0023232300232323),
LL(0x0048484800484848), LL(0x0010101000101010), LL(0x00d1d1d100d1d1d1), LL(0x0051515100515151), LL(0x00c0c0c000c0c0c0), LL(0x00f9f9f900f9f9f9), LL(0x00d2d2d200d2d2d2), LL(0x00a0a0a000a0a0a0),
LL(0x0055555500555555), LL(0x00a1a1a100a1a1a1), LL(0x0041414100414141), LL(0x00fafafa00fafafa), LL(0x0043434300434343), LL(0x0013131300131313), LL(0x00c4c4c400c4c4c4), LL(0x002f2f2f002f2f2f),
LL(0x00a8a8a800a8a8a8), LL(0x00b6b6b600b6b6b6), LL(0x003c3c3c003c3c3c), LL(0x002b2b2b002b2b2b), LL(0x00c1c1c100c1c1c1), LL(0x00ffffff00ffffff), LL(0x00c8c8c800c8c8c8), LL(0x00a5a5a500a5a5a5),
LL(0x0020202000202020), LL(0x0089898900898989), LL(0x0000000000000000), LL(0x0090909000909090), LL(0x0047474700474747), LL(0x00efefef00efefef), LL(0x00eaeaea00eaeaea), LL(0x00b7b7b700b7b7b7),
LL(0x0015151500151515), LL(0x0006060600060606), LL(0x00cdcdcd00cdcdcd), LL(0x00b5b5b500b5b5b5), LL(0x0012121200121212), LL(0x007e7e7e007e7e7e), LL(0x00bbbbbb00bbbbbb), LL(0x0029292900292929),
LL(0x000f0f0f000f0f0f), LL(0x00b8b8b800b8b8b8), LL(0x0007070700070707), LL(0x0004040400040404), LL(0x009b9b9b009b9b9b), LL(0x0094949400949494), LL(0x0021212100212121), LL(0x0066666600666666),
LL(0x00e6e6e600e6e6e6), LL(0x00cecece00cecece), LL(0x00ededed00ededed), LL(0x00e7e7e700e7e7e7), LL(0x003b3b3b003b3b3b), LL(0x00fefefe00fefefe), LL(0x007f7f7f007f7f7f), LL(0x00c5c5c500c5c5c5),
LL(0x00a4a4a400a4a4a4), LL(0x0037373700373737), LL(0x00b1b1b100b1b1b1), LL(0x004c4c4c004c4c4c), LL(0x0091919100919191), LL(0x006e6e6e006e6e6e), LL(0x008d8d8d008d8d8d), LL(0x0076767600767676),
LL(0x0003030300030303), LL(0x002d2d2d002d2d2d), LL(0x00dedede00dedede), LL(0x0096969600969696), LL(0x0026262600262626), LL(0x007d7d7d007d7d7d), LL(0x00c6c6c600c6c6c6), LL(0x005c5c5c005c5c5c),
LL(0x00d3d3d300d3d3d3), LL(0x00f2f2f200f2f2f2), LL(0x004f4f4f004f4f4f), LL(0x0019191900191919), LL(0x003f3f3f003f3f3f), LL(0x00dcdcdc00dcdcdc), LL(0x0079797900797979), LL(0x001d1d1d001d1d1d),
LL(0x0052525200525252), LL(0x00ebebeb00ebebeb), LL(0x00f3f3f300f3f3f3), LL(0x006d6d6d006d6d6d), LL(0x005e5e5e005e5e5e), LL(0x00fbfbfb00fbfbfb), LL(0x0069696900696969), LL(0x00b2b2b200b2b2b2),
LL(0x00f0f0f000f0f0f0), LL(0x0031313100313131), LL(0x000c0c0c000c0c0c), LL(0x00d4d4d400d4d4d4), LL(0x00cfcfcf00cfcfcf), LL(0x008c8c8c008c8c8c), LL(0x00e2e2e200e2e2e2), LL(0x0075757500757575),
LL(0x00a9a9a900a9a9a9), LL(0x004a4a4a004a4a4a), LL(0x0057575700575757), LL(0x0084848400848484), LL(0x0011111100111111), LL(0x0045454500454545), LL(0x001b1b1b001b1b1b), LL(0x00f5f5f500f5f5f5),
LL(0x00e4e4e400e4e4e4), LL(0x000e0e0e000e0e0e), LL(0x0073737300737373), LL(0x00aaaaaa00aaaaaa), LL(0x00f1f1f100f1f1f1), LL(0x00dddddd00dddddd), LL(0x0059595900595959), LL(0x0014141400141414),
LL(0x006c6c6c006c6c6c), LL(0x0092929200929292), LL(0x0054545400545454), LL(0x00d0d0d000d0d0d0), LL(0x0078787800787878), LL(0x0070707000707070), LL(0x00e3e3e300e3e3e3), LL(0x0049494900494949),
LL(0x0080808000808080), LL(0x0050505000505050), LL(0x00a7a7a700a7a7a7), LL(0x00f6f6f600f6f6f6), LL(0x0077777700777777), LL(0x0093939300939393), LL(0x0086868600868686), LL(0x0083838300838383),
LL(0x002a2a2a002a2a2a), LL(0x00c7c7c700c7c7c7), LL(0x005b5b5b005b5b5b), LL(0x00e9e9e900e9e9e9), LL(0x00eeeeee00eeeeee), LL(0x008f8f8f008f8f8f), LL(0x0001010100010101), LL(0x003d3d3d003d3d3d)
},
{
0x3800383838003838, 0x4100414141004141, 0x1600161616001616, 0x7600767676007676, 0xd900d9d9d900d9d9, 0x9300939393009393, 0x6000606060006060, 0xf200f2f2f200f2f2,
0x7200727272007272, 0xc200c2c2c200c2c2, 0xab00ababab00abab, 0x9a009a9a9a009a9a, 0x7500757575007575, 0x0600060606000606, 0x5700575757005757, 0xa000a0a0a000a0a0,
0x9100919191009191, 0xf700f7f7f700f7f7, 0xb500b5b5b500b5b5, 0xc900c9c9c900c9c9, 0xa200a2a2a200a2a2, 0x8c008c8c8c008c8c, 0xd200d2d2d200d2d2, 0x9000909090009090,
0xf600f6f6f600f6f6, 0x0700070707000707, 0xa700a7a7a700a7a7, 0x2700272727002727, 0x8e008e8e8e008e8e, 0xb200b2b2b200b2b2, 0x4900494949004949, 0xde00dedede00dede,
0x4300434343004343, 0x5c005c5c5c005c5c, 0xd700d7d7d700d7d7, 0xc700c7c7c700c7c7, 0x3e003e3e3e003e3e, 0xf500f5f5f500f5f5, 0x8f008f8f8f008f8f, 0x6700676767006767,
0x1f001f1f1f001f1f, 0x1800181818001818, 0x6e006e6e6e006e6e, 0xaf00afafaf00afaf, 0x2f002f2f2f002f2f, 0xe200e2e2e200e2e2, 0x8500858585008585, 0x0d000d0d0d000d0d,
0x5300535353005353, 0xf000f0f0f000f0f0, 0x9c009c9c9c009c9c, 0x6500656565006565, 0xea00eaeaea00eaea, 0xa300a3a3a300a3a3, 0xae00aeaeae00aeae, 0x9e009e9e9e009e9e,
0xec00ececec00ecec, 0x8000808080008080, 0x2d002d2d2d002d2d, 0x6b006b6b6b006b6b, 0xa800a8a8a800a8a8, 0x2b002b2b2b002b2b, 0x3600363636003636, 0xa600a6a6a600a6a6,
0xc500c5c5c500c5c5, 0x8600868686008686, 0x4d004d4d4d004d4d, 0x3300333333003333, 0xfd00fdfdfd00fdfd, 0x6600666666006666, 0x5800585858005858, 0x9600969696009696,
0x3a003a3a3a003a3a, 0x0900090909000909, 0x9500959595009595, 0x1000101010001010, 0x7800787878007878, 0xd800d8d8d800d8d8, 0x4200424242004242, 0xcc00cccccc00cccc,
0xef00efefef00efef, 0x2600262626002626, 0xe500e5e5e500e5e5, 0x6100616161006161, 0x1a001a1a1a001a1a, 0x3f003f3f3f003f3f, 0x3b003b3b3b003b3b, 0x8200828282008282,
0xb600b6b6b600b6b6, 0xdb00dbdbdb00dbdb, 0xd400d4d4d400d4d4, 0x9800989898009898, 0xe800e8e8e800e8e8, 0x8b008b8b8b008b8b, 0x0200020202000202, 0xeb00ebebeb00ebeb,
0x0a000a0a0a000a0a, 0x2c002c2c2c002c2c, 0x1d001d1d1d001d1d, 0xb000b0b0b000b0b0, 0x6f006f6f6f006f6f, 0x8d008d8d8d008d8d, 0x8800888888008888, 0x0e000e0e0e000e0e,
0x1900191919001919, 0x8700878787008787, 0x4e004e4e4e004e4e, 0x0b000b0b0b000b0b, 0xa900a9a9a900a9a9, 0x0c000c0c0c000c0c, 0x7900797979007979, 0x1100111111001111,
0x7f007f7f7f007f7f, 0x2200222222002222, 0xe700e7e7e700e7e7, 0x5900595959005959, 0xe100e1e1e100e1e1, 0xda00dadada00dada, 0x3d003d3d3d003d3d, 0xc800c8c8c800c8c8,
0x1200121212001212, 0x0400040404000404, 0x7400747474007474, 0x5400545454005454, 0x3000303030003030, 0x7e007e7e7e007e7e, 0xb400b4b4b400b4b4, 0x2800282828002828,
0x5500555555005555, 0x6800686868006868, 0x5000505050005050, 0xbe00bebebe00bebe, 0xd000d0d0d000d0d0, 0xc400c4c4c400c4c4, 0x3100313131003131, 0xcb00cbcbcb00cbcb,
0x2a002a2a2a002a2a, 0xad00adadad00adad, 0x0f000f0f0f000f0f, 0xca00cacaca00caca, 0x7000707070007070, 0xff00ffffff00ffff, 0x3200323232003232, 0x6900696969006969,
0x0800080808000808, 0x6200626262006262, 0x0000000000000000, 0x2400242424002424, 0xd100d1d1d100d1d1, 0xfb00fbfbfb00fbfb, 0xba00bababa00baba, 0xed00ededed00eded,
0x4500454545004545, 0x8100818181008181, 0x7300737373007373, 0x6d006d6d6d006d6d, 0x8400848484008484, 0x9f009f9f9f009f9f, 0xee00eeeeee00eeee, 0x4a004a4a4a004a4a,
0xc300c3c3c300c3c3, 0x2e002e2e2e002e2e, 0xc100c1c1c100c1c1, 0x0100010101000101, 0xe600e6e6e600e6e6, 0x2500252525002525, 0x4800484848004848, 0x9900999999009999,
0xb900b9b9b900b9b9, 0xb300b3b3b300b3b3, 0x7b007b7b7b007b7b, 0xf900f9f9f900f9f9, 0xce00cecece00cece, 0xbf00bfbfbf00bfbf, 0xdf00dfdfdf00dfdf, 0x7100717171007171,
0x2900292929002929, 0xcd00cdcdcd00cdcd, 0x6c006c6c6c006c6c, 0x1300131313001313, 0x6400646464006464, 0x9b009b9b9b009b9b, 0x6300636363006363, 0x9d009d9d9d009d9d,
0xc000c0c0c000c0c0, 0x4b004b4b4b004b4b, 0xb700b7b7b700b7b7, 0xa500a5a5a500a5a5, 0x8900898989008989, 0x5f005f5f5f005f5f, 0xb100b1b1b100b1b1, 0x1700171717001717,
0xf400f4f4f400f4f4, 0xbc00bcbcbc00bcbc, 0xd300d3d3d300d3d3, 0x4600464646004646, 0xcf00cfcfcf00cfcf, 0x3700373737003737, 0x5e005e5e5e005e5e, 0x4700474747004747,
0x9400949494009494, 0xfa00fafafa00fafa, 0xfc00fcfcfc00fcfc, 0x5b005b5b5b005b5b, 0x9700979797009797, 0xfe00fefefe00fefe, 0x5a005a5a5a005a5a, 0xac00acacac00acac,
0x3c003c3c3c003c3c, 0x4c004c4c4c004c4c, 0x0300030303000303, 0x3500353535003535, 0xf300f3f3f300f3f3, 0x2300232323002323, 0xb800b8b8b800b8b8, 0x5d005d5d5d005d5d,
0x6a006a6a6a006a6a, 0x9200929292009292, 0xd500d5d5d500d5d5, 0x2100212121002121, 0x4400444444004444, 0x5100515151005151, 0xc600c6c6c600c6c6, 0x7d007d7d7d007d7d,
0x3900393939003939, 0x8300838383008383, 0xdc00dcdcdc00dcdc, 0xaa00aaaaaa00aaaa, 0x7c007c7c7c007c7c, 0x7700777777007777, 0x5600565656005656, 0x0500050505000505,
0x1b001b1b1b001b1b, 0xa400a4a4a400a4a4, 0x1500151515001515, 0x3400343434003434, 0x1e001e1e1e001e1e, 0x1c001c1c1c001c1c, 0xf800f8f8f800f8f8, 0x5200525252005252,
0x2000202020002020, 0x1400141414001414, 0xe900e9e9e900e9e9, 0xbd00bdbdbd00bdbd, 0xdd00dddddd00dddd, 0xe400e4e4e400e4e4, 0xa100a1a1a100a1a1, 0xe000e0e0e000e0e0,
0x8a008a8a8a008a8a, 0xf100f1f1f100f1f1, 0xd600d6d6d600d6d6, 0x7a007a7a7a007a7a, 0xbb00bbbbbb00bbbb, 0xe300e3e3e300e3e3, 0x4000404040004040, 0x4f004f4f4f004f4f
LL(0x3800383838003838), LL(0x4100414141004141), LL(0x1600161616001616), LL(0x7600767676007676), LL(0xd900d9d9d900d9d9), LL(0x9300939393009393), LL(0x6000606060006060), LL(0xf200f2f2f200f2f2),
LL(0x7200727272007272), LL(0xc200c2c2c200c2c2), LL(0xab00ababab00abab), LL(0x9a009a9a9a009a9a), LL(0x7500757575007575), LL(0x0600060606000606), LL(0x5700575757005757), LL(0xa000a0a0a000a0a0),
LL(0x9100919191009191), LL(0xf700f7f7f700f7f7), LL(0xb500b5b5b500b5b5), LL(0xc900c9c9c900c9c9), LL(0xa200a2a2a200a2a2), LL(0x8c008c8c8c008c8c), LL(0xd200d2d2d200d2d2), LL(0x9000909090009090),
LL(0xf600f6f6f600f6f6), LL(0x0700070707000707), LL(0xa700a7a7a700a7a7), LL(0x2700272727002727), LL(0x8e008e8e8e008e8e), LL(0xb200b2b2b200b2b2), LL(0x4900494949004949), LL(0xde00dedede00dede),
LL(0x4300434343004343), LL(0x5c005c5c5c005c5c), LL(0xd700d7d7d700d7d7), LL(0xc700c7c7c700c7c7), LL(0x3e003e3e3e003e3e), LL(0xf500f5f5f500f5f5), LL(0x8f008f8f8f008f8f), LL(0x6700676767006767),
LL(0x1f001f1f1f001f1f), LL(0x1800181818001818), LL(0x6e006e6e6e006e6e), LL(0xaf00afafaf00afaf), LL(0x2f002f2f2f002f2f), LL(0xe200e2e2e200e2e2), LL(0x8500858585008585), LL(0x0d000d0d0d000d0d),
LL(0x5300535353005353), LL(0xf000f0f0f000f0f0), LL(0x9c009c9c9c009c9c), LL(0x6500656565006565), LL(0xea00eaeaea00eaea), LL(0xa300a3a3a300a3a3), LL(0xae00aeaeae00aeae), LL(0x9e009e9e9e009e9e),
LL(0xec00ececec00ecec), LL(0x8000808080008080), LL(0x2d002d2d2d002d2d), LL(0x6b006b6b6b006b6b), LL(0xa800a8a8a800a8a8), LL(0x2b002b2b2b002b2b), LL(0x3600363636003636), LL(0xa600a6a6a600a6a6),
LL(0xc500c5c5c500c5c5), LL(0x8600868686008686), LL(0x4d004d4d4d004d4d), LL(0x3300333333003333), LL(0xfd00fdfdfd00fdfd), LL(0x6600666666006666), LL(0x5800585858005858), LL(0x9600969696009696),
LL(0x3a003a3a3a003a3a), LL(0x0900090909000909), LL(0x9500959595009595), LL(0x1000101010001010), LL(0x7800787878007878), LL(0xd800d8d8d800d8d8), LL(0x4200424242004242), LL(0xcc00cccccc00cccc),
LL(0xef00efefef00efef), LL(0x2600262626002626), LL(0xe500e5e5e500e5e5), LL(0x6100616161006161), LL(0x1a001a1a1a001a1a), LL(0x3f003f3f3f003f3f), LL(0x3b003b3b3b003b3b), LL(0x8200828282008282),
LL(0xb600b6b6b600b6b6), LL(0xdb00dbdbdb00dbdb), LL(0xd400d4d4d400d4d4), LL(0x9800989898009898), LL(0xe800e8e8e800e8e8), LL(0x8b008b8b8b008b8b), LL(0x0200020202000202), LL(0xeb00ebebeb00ebeb),
LL(0x0a000a0a0a000a0a), LL(0x2c002c2c2c002c2c), LL(0x1d001d1d1d001d1d), LL(0xb000b0b0b000b0b0), LL(0x6f006f6f6f006f6f), LL(0x8d008d8d8d008d8d), LL(0x8800888888008888), LL(0x0e000e0e0e000e0e),
LL(0x1900191919001919), LL(0x8700878787008787), LL(0x4e004e4e4e004e4e), LL(0x0b000b0b0b000b0b), LL(0xa900a9a9a900a9a9), LL(0x0c000c0c0c000c0c), LL(0x7900797979007979), LL(0x1100111111001111),
LL(0x7f007f7f7f007f7f), LL(0x2200222222002222), LL(0xe700e7e7e700e7e7), LL(0x5900595959005959), LL(0xe100e1e1e100e1e1), LL(0xda00dadada00dada), LL(0x3d003d3d3d003d3d), LL(0xc800c8c8c800c8c8),
LL(0x1200121212001212), LL(0x0400040404000404), LL(0x7400747474007474), LL(0x5400545454005454), LL(0x3000303030003030), LL(0x7e007e7e7e007e7e), LL(0xb400b4b4b400b4b4), LL(0x2800282828002828),
LL(0x5500555555005555), LL(0x6800686868006868), LL(0x5000505050005050), LL(0xbe00bebebe00bebe), LL(0xd000d0d0d000d0d0), LL(0xc400c4c4c400c4c4), LL(0x3100313131003131), LL(0xcb00cbcbcb00cbcb),
LL(0x2a002a2a2a002a2a), LL(0xad00adadad00adad), LL(0x0f000f0f0f000f0f), LL(0xca00cacaca00caca), LL(0x7000707070007070), LL(0xff00ffffff00ffff), LL(0x3200323232003232), LL(0x6900696969006969),
LL(0x0800080808000808), LL(0x6200626262006262), LL(0x0000000000000000), LL(0x2400242424002424), LL(0xd100d1d1d100d1d1), LL(0xfb00fbfbfb00fbfb), LL(0xba00bababa00baba), LL(0xed00ededed00eded),
LL(0x4500454545004545), LL(0x8100818181008181), LL(0x7300737373007373), LL(0x6d006d6d6d006d6d), LL(0x8400848484008484), LL(0x9f009f9f9f009f9f), LL(0xee00eeeeee00eeee), LL(0x4a004a4a4a004a4a),
LL(0xc300c3c3c300c3c3), LL(0x2e002e2e2e002e2e), LL(0xc100c1c1c100c1c1), LL(0x0100010101000101), LL(0xe600e6e6e600e6e6), LL(0x2500252525002525), LL(0x4800484848004848), LL(0x9900999999009999),
LL(0xb900b9b9b900b9b9), LL(0xb300b3b3b300b3b3), LL(0x7b007b7b7b007b7b), LL(0xf900f9f9f900f9f9), LL(0xce00cecece00cece), LL(0xbf00bfbfbf00bfbf), LL(0xdf00dfdfdf00dfdf), LL(0x7100717171007171),
LL(0x2900292929002929), LL(0xcd00cdcdcd00cdcd), LL(0x6c006c6c6c006c6c), LL(0x1300131313001313), LL(0x6400646464006464), LL(0x9b009b9b9b009b9b), LL(0x6300636363006363), LL(0x9d009d9d9d009d9d),
LL(0xc000c0c0c000c0c0), LL(0x4b004b4b4b004b4b), LL(0xb700b7b7b700b7b7), LL(0xa500a5a5a500a5a5), LL(0x8900898989008989), LL(0x5f005f5f5f005f5f), LL(0xb100b1b1b100b1b1), LL(0x1700171717001717),
LL(0xf400f4f4f400f4f4), LL(0xbc00bcbcbc00bcbc), LL(0xd300d3d3d300d3d3), LL(0x4600464646004646), LL(0xcf00cfcfcf00cfcf), LL(0x3700373737003737), LL(0x5e005e5e5e005e5e), LL(0x4700474747004747),
LL(0x9400949494009494), LL(0xfa00fafafa00fafa), LL(0xfc00fcfcfc00fcfc), LL(0x5b005b5b5b005b5b), LL(0x9700979797009797), LL(0xfe00fefefe00fefe), LL(0x5a005a5a5a005a5a), LL(0xac00acacac00acac),
LL(0x3c003c3c3c003c3c), LL(0x4c004c4c4c004c4c), LL(0x0300030303000303), LL(0x3500353535003535), LL(0xf300f3f3f300f3f3), LL(0x2300232323002323), LL(0xb800b8b8b800b8b8), LL(0x5d005d5d5d005d5d),
LL(0x6a006a6a6a006a6a), LL(0x9200929292009292), LL(0xd500d5d5d500d5d5), LL(0x2100212121002121), LL(0x4400444444004444), LL(0x5100515151005151), LL(0xc600c6c6c600c6c6), LL(0x7d007d7d7d007d7d),
LL(0x3900393939003939), LL(0x8300838383008383), LL(0xdc00dcdcdc00dcdc), LL(0xaa00aaaaaa00aaaa), LL(0x7c007c7c7c007c7c), LL(0x7700777777007777), LL(0x5600565656005656), LL(0x0500050505000505),
LL(0x1b001b1b1b001b1b), LL(0xa400a4a4a400a4a4), LL(0x1500151515001515), LL(0x3400343434003434), LL(0x1e001e1e1e001e1e), LL(0x1c001c1c1c001c1c), LL(0xf800f8f8f800f8f8), LL(0x5200525252005252),
LL(0x2000202020002020), LL(0x1400141414001414), LL(0xe900e9e9e900e9e9), LL(0xbd00bdbdbd00bdbd), LL(0xdd00dddddd00dddd), LL(0xe400e4e4e400e4e4), LL(0xa100a1a1a100a1a1), LL(0xe000e0e0e000e0e0),
LL(0x8a008a8a8a008a8a), LL(0xf100f1f1f100f1f1), LL(0xd600d6d6d600d6d6), LL(0x7a007a7a7a007a7a), LL(0xbb00bbbbbb00bbbb), LL(0xe300e3e3e300e3e3), LL(0x4000404040004040), LL(0x4f004f4f4f004f4f)
},
{
0x7070007070700070, 0x2c2c002c2c2c002c, 0xb3b300b3b3b300b3, 0xc0c000c0c0c000c0, 0xe4e400e4e4e400e4, 0x5757005757570057, 0xeaea00eaeaea00ea, 0xaeae00aeaeae00ae,
0x2323002323230023, 0x6b6b006b6b6b006b, 0x4545004545450045, 0xa5a500a5a5a500a5, 0xeded00ededed00ed, 0x4f4f004f4f4f004f, 0x1d1d001d1d1d001d, 0x9292009292920092,
0x8686008686860086, 0xafaf00afafaf00af, 0x7c7c007c7c7c007c, 0x1f1f001f1f1f001f, 0x3e3e003e3e3e003e, 0xdcdc00dcdcdc00dc, 0x5e5e005e5e5e005e, 0x0b0b000b0b0b000b,
0xa6a600a6a6a600a6, 0x3939003939390039, 0xd5d500d5d5d500d5, 0x5d5d005d5d5d005d, 0xd9d900d9d9d900d9, 0x5a5a005a5a5a005a, 0x5151005151510051, 0x6c6c006c6c6c006c,
0x8b8b008b8b8b008b, 0x9a9a009a9a9a009a, 0xfbfb00fbfbfb00fb, 0xb0b000b0b0b000b0, 0x7474007474740074, 0x2b2b002b2b2b002b, 0xf0f000f0f0f000f0, 0x8484008484840084,
0xdfdf00dfdfdf00df, 0xcbcb00cbcbcb00cb, 0x3434003434340034, 0x7676007676760076, 0x6d6d006d6d6d006d, 0xa9a900a9a9a900a9, 0xd1d100d1d1d100d1, 0x0404000404040004,
0x1414001414140014, 0x3a3a003a3a3a003a, 0xdede00dedede00de, 0x1111001111110011, 0x3232003232320032, 0x9c9c009c9c9c009c, 0x5353005353530053, 0xf2f200f2f2f200f2,
0xfefe00fefefe00fe, 0xcfcf00cfcfcf00cf, 0xc3c300c3c3c300c3, 0x7a7a007a7a7a007a, 0x2424002424240024, 0xe8e800e8e8e800e8, 0x6060006060600060, 0x6969006969690069,
0xaaaa00aaaaaa00aa, 0xa0a000a0a0a000a0, 0xa1a100a1a1a100a1, 0x6262006262620062, 0x5454005454540054, 0x1e1e001e1e1e001e, 0xe0e000e0e0e000e0, 0x6464006464640064,
0x1010001010100010, 0x0000000000000000, 0xa3a300a3a3a300a3, 0x7575007575750075, 0x8a8a008a8a8a008a, 0xe6e600e6e6e600e6, 0x0909000909090009, 0xdddd00dddddd00dd,
0x8787008787870087, 0x8383008383830083, 0xcdcd00cdcdcd00cd, 0x9090009090900090, 0x7373007373730073, 0xf6f600f6f6f600f6, 0x9d9d009d9d9d009d, 0xbfbf00bfbfbf00bf,
0x5252005252520052, 0xd8d800d8d8d800d8, 0xc8c800c8c8c800c8, 0xc6c600c6c6c600c6, 0x8181008181810081, 0x6f6f006f6f6f006f, 0x1313001313130013, 0x6363006363630063,
0xe9e900e9e9e900e9, 0xa7a700a7a7a700a7, 0x9f9f009f9f9f009f, 0xbcbc00bcbcbc00bc, 0x2929002929290029, 0xf9f900f9f9f900f9, 0x2f2f002f2f2f002f, 0xb4b400b4b4b400b4,
0x7878007878780078, 0x0606000606060006, 0xe7e700e7e7e700e7, 0x7171007171710071, 0xd4d400d4d4d400d4, 0xabab00ababab00ab, 0x8888008888880088, 0x8d8d008d8d8d008d,
0x7272007272720072, 0xb9b900b9b9b900b9, 0xf8f800f8f8f800f8, 0xacac00acacac00ac, 0x3636003636360036, 0x2a2a002a2a2a002a, 0x3c3c003c3c3c003c, 0xf1f100f1f1f100f1,
0x4040004040400040, 0xd3d300d3d3d300d3, 0xbbbb00bbbbbb00bb, 0x4343004343430043, 0x1515001515150015, 0xadad00adadad00ad, 0x7777007777770077, 0x8080008080800080,
0x8282008282820082, 0xecec00ececec00ec, 0x2727002727270027, 0xe5e500e5e5e500e5, 0x8585008585850085, 0x3535003535350035, 0x0c0c000c0c0c000c, 0x4141004141410041,
0xefef00efefef00ef, 0x9393009393930093, 0x1919001919190019, 0x2121002121210021, 0x0e0e000e0e0e000e, 0x4e4e004e4e4e004e, 0x6565006565650065, 0xbdbd00bdbdbd00bd,
0xb8b800b8b8b800b8, 0x8f8f008f8f8f008f, 0xebeb00ebebeb00eb, 0xcece00cecece00ce, 0x3030003030300030, 0x5f5f005f5f5f005f, 0xc5c500c5c5c500c5, 0x1a1a001a1a1a001a,
0xe1e100e1e1e100e1, 0xcaca00cacaca00ca, 0x4747004747470047, 0x3d3d003d3d3d003d, 0x0101000101010001, 0xd6d600d6d6d600d6, 0x5656005656560056, 0x4d4d004d4d4d004d,
0x0d0d000d0d0d000d, 0x6666006666660066, 0xcccc00cccccc00cc, 0x2d2d002d2d2d002d, 0x1212001212120012, 0x2020002020200020, 0xb1b100b1b1b100b1, 0x9999009999990099,
0x4c4c004c4c4c004c, 0xc2c200c2c2c200c2, 0x7e7e007e7e7e007e, 0x0505000505050005, 0xb7b700b7b7b700b7, 0x3131003131310031, 0x1717001717170017, 0xd7d700d7d7d700d7,
0x5858005858580058, 0x6161006161610061, 0x1b1b001b1b1b001b, 0x1c1c001c1c1c001c, 0x0f0f000f0f0f000f, 0x1616001616160016, 0x1818001818180018, 0x2222002222220022,
0x4444004444440044, 0xb2b200b2b2b200b2, 0xb5b500b5b5b500b5, 0x9191009191910091, 0x0808000808080008, 0xa8a800a8a8a800a8, 0xfcfc00fcfcfc00fc, 0x5050005050500050,
0xd0d000d0d0d000d0, 0x7d7d007d7d7d007d, 0x8989008989890089, 0x9797009797970097, 0x5b5b005b5b5b005b, 0x9595009595950095, 0xffff00ffffff00ff, 0xd2d200d2d2d200d2,
0xc4c400c4c4c400c4, 0x4848004848480048, 0xf7f700f7f7f700f7, 0xdbdb00dbdbdb00db, 0x0303000303030003, 0xdada00dadada00da, 0x3f3f003f3f3f003f, 0x9494009494940094,
0x5c5c005c5c5c005c, 0x0202000202020002, 0x4a4a004a4a4a004a, 0x3333003333330033, 0x6767006767670067, 0xf3f300f3f3f300f3, 0x7f7f007f7f7f007f, 0xe2e200e2e2e200e2,
0x9b9b009b9b9b009b, 0x2626002626260026, 0x3737003737370037, 0x3b3b003b3b3b003b, 0x9696009696960096, 0x4b4b004b4b4b004b, 0xbebe00bebebe00be, 0x2e2e002e2e2e002e,
0x7979007979790079, 0x8c8c008c8c8c008c, 0x6e6e006e6e6e006e, 0x8e8e008e8e8e008e, 0xf5f500f5f5f500f5, 0xb6b600b6b6b600b6, 0xfdfd00fdfdfd00fd, 0x5959005959590059,
0x9898009898980098, 0x6a6a006a6a6a006a, 0x4646004646460046, 0xbaba00bababa00ba, 0x2525002525250025, 0x4242004242420042, 0xa2a200a2a2a200a2, 0xfafa00fafafa00fa,
0x0707000707070007, 0x5555005555550055, 0xeeee00eeeeee00ee, 0x0a0a000a0a0a000a, 0x4949004949490049, 0x6868006868680068, 0x3838003838380038, 0xa4a400a4a4a400a4,
0x2828002828280028, 0x7b7b007b7b7b007b, 0xc9c900c9c9c900c9, 0xc1c100c1c1c100c1, 0xe3e300e3e3e300e3, 0xf4f400f4f4f400f4, 0xc7c700c7c7c700c7, 0x9e9e009e9e9e009e
LL(0x7070007070700070), LL(0x2c2c002c2c2c002c), LL(0xb3b300b3b3b300b3), LL(0xc0c000c0c0c000c0), LL(0xe4e400e4e4e400e4), LL(0x5757005757570057), LL(0xeaea00eaeaea00ea), LL(0xaeae00aeaeae00ae),
LL(0x2323002323230023), LL(0x6b6b006b6b6b006b), LL(0x4545004545450045), LL(0xa5a500a5a5a500a5), LL(0xeded00ededed00ed), LL(0x4f4f004f4f4f004f), LL(0x1d1d001d1d1d001d), LL(0x9292009292920092),
LL(0x8686008686860086), LL(0xafaf00afafaf00af), LL(0x7c7c007c7c7c007c), LL(0x1f1f001f1f1f001f), LL(0x3e3e003e3e3e003e), LL(0xdcdc00dcdcdc00dc), LL(0x5e5e005e5e5e005e), LL(0x0b0b000b0b0b000b),
LL(0xa6a600a6a6a600a6), LL(0x3939003939390039), LL(0xd5d500d5d5d500d5), LL(0x5d5d005d5d5d005d), LL(0xd9d900d9d9d900d9), LL(0x5a5a005a5a5a005a), LL(0x5151005151510051), LL(0x6c6c006c6c6c006c),
LL(0x8b8b008b8b8b008b), LL(0x9a9a009a9a9a009a), LL(0xfbfb00fbfbfb00fb), LL(0xb0b000b0b0b000b0), LL(0x7474007474740074), LL(0x2b2b002b2b2b002b), LL(0xf0f000f0f0f000f0), LL(0x8484008484840084),
LL(0xdfdf00dfdfdf00df), LL(0xcbcb00cbcbcb00cb), LL(0x3434003434340034), LL(0x7676007676760076), LL(0x6d6d006d6d6d006d), LL(0xa9a900a9a9a900a9), LL(0xd1d100d1d1d100d1), LL(0x0404000404040004),
LL(0x1414001414140014), LL(0x3a3a003a3a3a003a), LL(0xdede00dedede00de), LL(0x1111001111110011), LL(0x3232003232320032), LL(0x9c9c009c9c9c009c), LL(0x5353005353530053), LL(0xf2f200f2f2f200f2),
LL(0xfefe00fefefe00fe), LL(0xcfcf00cfcfcf00cf), LL(0xc3c300c3c3c300c3), LL(0x7a7a007a7a7a007a), LL(0x2424002424240024), LL(0xe8e800e8e8e800e8), LL(0x6060006060600060), LL(0x6969006969690069),
LL(0xaaaa00aaaaaa00aa), LL(0xa0a000a0a0a000a0), LL(0xa1a100a1a1a100a1), LL(0x6262006262620062), LL(0x5454005454540054), LL(0x1e1e001e1e1e001e), LL(0xe0e000e0e0e000e0), LL(0x6464006464640064),
LL(0x1010001010100010), LL(0x0000000000000000), LL(0xa3a300a3a3a300a3), LL(0x7575007575750075), LL(0x8a8a008a8a8a008a), LL(0xe6e600e6e6e600e6), LL(0x0909000909090009), LL(0xdddd00dddddd00dd),
LL(0x8787008787870087), LL(0x8383008383830083), LL(0xcdcd00cdcdcd00cd), LL(0x9090009090900090), LL(0x7373007373730073), LL(0xf6f600f6f6f600f6), LL(0x9d9d009d9d9d009d), LL(0xbfbf00bfbfbf00bf),
LL(0x5252005252520052), LL(0xd8d800d8d8d800d8), LL(0xc8c800c8c8c800c8), LL(0xc6c600c6c6c600c6), LL(0x8181008181810081), LL(0x6f6f006f6f6f006f), LL(0x1313001313130013), LL(0x6363006363630063),
LL(0xe9e900e9e9e900e9), LL(0xa7a700a7a7a700a7), LL(0x9f9f009f9f9f009f), LL(0xbcbc00bcbcbc00bc), LL(0x2929002929290029), LL(0xf9f900f9f9f900f9), LL(0x2f2f002f2f2f002f), LL(0xb4b400b4b4b400b4),
LL(0x7878007878780078), LL(0x0606000606060006), LL(0xe7e700e7e7e700e7), LL(0x7171007171710071), LL(0xd4d400d4d4d400d4), LL(0xabab00ababab00ab), LL(0x8888008888880088), LL(0x8d8d008d8d8d008d),
LL(0x7272007272720072), LL(0xb9b900b9b9b900b9), LL(0xf8f800f8f8f800f8), LL(0xacac00acacac00ac), LL(0x3636003636360036), LL(0x2a2a002a2a2a002a), LL(0x3c3c003c3c3c003c), LL(0xf1f100f1f1f100f1),
LL(0x4040004040400040), LL(0xd3d300d3d3d300d3), LL(0xbbbb00bbbbbb00bb), LL(0x4343004343430043), LL(0x1515001515150015), LL(0xadad00adadad00ad), LL(0x7777007777770077), LL(0x8080008080800080),
LL(0x8282008282820082), LL(0xecec00ececec00ec), LL(0x2727002727270027), LL(0xe5e500e5e5e500e5), LL(0x8585008585850085), LL(0x3535003535350035), LL(0x0c0c000c0c0c000c), LL(0x4141004141410041),
LL(0xefef00efefef00ef), LL(0x9393009393930093), LL(0x1919001919190019), LL(0x2121002121210021), LL(0x0e0e000e0e0e000e), LL(0x4e4e004e4e4e004e), LL(0x6565006565650065), LL(0xbdbd00bdbdbd00bd),
LL(0xb8b800b8b8b800b8), LL(0x8f8f008f8f8f008f), LL(0xebeb00ebebeb00eb), LL(0xcece00cecece00ce), LL(0x3030003030300030), LL(0x5f5f005f5f5f005f), LL(0xc5c500c5c5c500c5), LL(0x1a1a001a1a1a001a),
LL(0xe1e100e1e1e100e1), LL(0xcaca00cacaca00ca), LL(0x4747004747470047), LL(0x3d3d003d3d3d003d), LL(0x0101000101010001), LL(0xd6d600d6d6d600d6), LL(0x5656005656560056), LL(0x4d4d004d4d4d004d),
LL(0x0d0d000d0d0d000d), LL(0x6666006666660066), LL(0xcccc00cccccc00cc), LL(0x2d2d002d2d2d002d), LL(0x1212001212120012), LL(0x2020002020200020), LL(0xb1b100b1b1b100b1), LL(0x9999009999990099),
LL(0x4c4c004c4c4c004c), LL(0xc2c200c2c2c200c2), LL(0x7e7e007e7e7e007e), LL(0x0505000505050005), LL(0xb7b700b7b7b700b7), LL(0x3131003131310031), LL(0x1717001717170017), LL(0xd7d700d7d7d700d7),
LL(0x5858005858580058), LL(0x6161006161610061), LL(0x1b1b001b1b1b001b), LL(0x1c1c001c1c1c001c), LL(0x0f0f000f0f0f000f), LL(0x1616001616160016), LL(0x1818001818180018), LL(0x2222002222220022),
LL(0x4444004444440044), LL(0xb2b200b2b2b200b2), LL(0xb5b500b5b5b500b5), LL(0x9191009191910091), LL(0x0808000808080008), LL(0xa8a800a8a8a800a8), LL(0xfcfc00fcfcfc00fc), LL(0x5050005050500050),
LL(0xd0d000d0d0d000d0), LL(0x7d7d007d7d7d007d), LL(0x8989008989890089), LL(0x9797009797970097), LL(0x5b5b005b5b5b005b), LL(0x9595009595950095), LL(0xffff00ffffff00ff), LL(0xd2d200d2d2d200d2),
LL(0xc4c400c4c4c400c4), LL(0x4848004848480048), LL(0xf7f700f7f7f700f7), LL(0xdbdb00dbdbdb00db), LL(0x0303000303030003), LL(0xdada00dadada00da), LL(0x3f3f003f3f3f003f), LL(0x9494009494940094),
LL(0x5c5c005c5c5c005c), LL(0x0202000202020002), LL(0x4a4a004a4a4a004a), LL(0x3333003333330033), LL(0x6767006767670067), LL(0xf3f300f3f3f300f3), LL(0x7f7f007f7f7f007f), LL(0xe2e200e2e2e200e2),
LL(0x9b9b009b9b9b009b), LL(0x2626002626260026), LL(0x3737003737370037), LL(0x3b3b003b3b3b003b), LL(0x9696009696960096), LL(0x4b4b004b4b4b004b), LL(0xbebe00bebebe00be), LL(0x2e2e002e2e2e002e),
LL(0x7979007979790079), LL(0x8c8c008c8c8c008c), LL(0x6e6e006e6e6e006e), LL(0x8e8e008e8e8e008e), LL(0xf5f500f5f5f500f5), LL(0xb6b600b6b6b600b6), LL(0xfdfd00fdfdfd00fd), LL(0x5959005959590059),
LL(0x9898009898980098), LL(0x6a6a006a6a6a006a), LL(0x4646004646460046), LL(0xbaba00bababa00ba), LL(0x2525002525250025), LL(0x4242004242420042), LL(0xa2a200a2a2a200a2), LL(0xfafa00fafafa00fa),
LL(0x0707000707070007), LL(0x5555005555550055), LL(0xeeee00eeeeee00ee), LL(0x0a0a000a0a0a000a), LL(0x4949004949490049), LL(0x6868006868680068), LL(0x3838003838380038), LL(0xa4a400a4a4a400a4),
LL(0x2828002828280028), LL(0x7b7b007b7b7b007b), LL(0xc9c900c9c9c900c9), LL(0xc1c100c1c1c100c1), LL(0xe3e300e3e3e300e3), LL(0xf4f400f4f4f400f4), LL(0xc7c700c7c7c700c7), LL(0x9e9e009e9e9e009e)
},
{
0x7070700070707000, 0x8282820082828200, 0x2c2c2c002c2c2c00, 0xececec00ececec00, 0xb3b3b300b3b3b300, 0x2727270027272700, 0xc0c0c000c0c0c000, 0xe5e5e500e5e5e500,
0xe4e4e400e4e4e400, 0x8585850085858500, 0x5757570057575700, 0x3535350035353500, 0xeaeaea00eaeaea00, 0x0c0c0c000c0c0c00, 0xaeaeae00aeaeae00, 0x4141410041414100,
0x2323230023232300, 0xefefef00efefef00, 0x6b6b6b006b6b6b00, 0x9393930093939300, 0x4545450045454500, 0x1919190019191900, 0xa5a5a500a5a5a500, 0x2121210021212100,
0xededed00ededed00, 0x0e0e0e000e0e0e00, 0x4f4f4f004f4f4f00, 0x4e4e4e004e4e4e00, 0x1d1d1d001d1d1d00, 0x6565650065656500, 0x9292920092929200, 0xbdbdbd00bdbdbd00,
0x8686860086868600, 0xb8b8b800b8b8b800, 0xafafaf00afafaf00, 0x8f8f8f008f8f8f00, 0x7c7c7c007c7c7c00, 0xebebeb00ebebeb00, 0x1f1f1f001f1f1f00, 0xcecece00cecece00,
0x3e3e3e003e3e3e00, 0x3030300030303000, 0xdcdcdc00dcdcdc00, 0x5f5f5f005f5f5f00, 0x5e5e5e005e5e5e00, 0xc5c5c500c5c5c500, 0x0b0b0b000b0b0b00, 0x1a1a1a001a1a1a00,
0xa6a6a600a6a6a600, 0xe1e1e100e1e1e100, 0x3939390039393900, 0xcacaca00cacaca00, 0xd5d5d500d5d5d500, 0x4747470047474700, 0x5d5d5d005d5d5d00, 0x3d3d3d003d3d3d00,
0xd9d9d900d9d9d900, 0x0101010001010100, 0x5a5a5a005a5a5a00, 0xd6d6d600d6d6d600, 0x5151510051515100, 0x5656560056565600, 0x6c6c6c006c6c6c00, 0x4d4d4d004d4d4d00,
0x8b8b8b008b8b8b00, 0x0d0d0d000d0d0d00, 0x9a9a9a009a9a9a00, 0x6666660066666600, 0xfbfbfb00fbfbfb00, 0xcccccc00cccccc00, 0xb0b0b000b0b0b000, 0x2d2d2d002d2d2d00,
0x7474740074747400, 0x1212120012121200, 0x2b2b2b002b2b2b00, 0x2020200020202000, 0xf0f0f000f0f0f000, 0xb1b1b100b1b1b100, 0x8484840084848400, 0x9999990099999900,
0xdfdfdf00dfdfdf00, 0x4c4c4c004c4c4c00, 0xcbcbcb00cbcbcb00, 0xc2c2c200c2c2c200, 0x3434340034343400, 0x7e7e7e007e7e7e00, 0x7676760076767600, 0x0505050005050500,
0x6d6d6d006d6d6d00, 0xb7b7b700b7b7b700, 0xa9a9a900a9a9a900, 0x3131310031313100, 0xd1d1d100d1d1d100, 0x1717170017171700, 0x0404040004040400, 0xd7d7d700d7d7d700,
0x1414140014141400, 0x5858580058585800, 0x3a3a3a003a3a3a00, 0x6161610061616100, 0xdedede00dedede00, 0x1b1b1b001b1b1b00, 0x1111110011111100, 0x1c1c1c001c1c1c00,
0x3232320032323200, 0x0f0f0f000f0f0f00, 0x9c9c9c009c9c9c00, 0x1616160016161600, 0x5353530053535300, 0x1818180018181800, 0xf2f2f200f2f2f200, 0x2222220022222200,
0xfefefe00fefefe00, 0x4444440044444400, 0xcfcfcf00cfcfcf00, 0xb2b2b200b2b2b200, 0xc3c3c300c3c3c300, 0xb5b5b500b5b5b500, 0x7a7a7a007a7a7a00, 0x9191910091919100,
0x2424240024242400, 0x0808080008080800, 0xe8e8e800e8e8e800, 0xa8a8a800a8a8a800, 0x6060600060606000, 0xfcfcfc00fcfcfc00, 0x6969690069696900, 0x5050500050505000,
0xaaaaaa00aaaaaa00, 0xd0d0d000d0d0d000, 0xa0a0a000a0a0a000, 0x7d7d7d007d7d7d00, 0xa1a1a100a1a1a100, 0x8989890089898900, 0x6262620062626200, 0x9797970097979700,
0x5454540054545400, 0x5b5b5b005b5b5b00, 0x1e1e1e001e1e1e00, 0x9595950095959500, 0xe0e0e000e0e0e000, 0xffffff00ffffff00, 0x6464640064646400, 0xd2d2d200d2d2d200,
0x1010100010101000, 0xc4c4c400c4c4c400, 0x0000000000000000, 0x4848480048484800, 0xa3a3a300a3a3a300, 0xf7f7f700f7f7f700, 0x7575750075757500, 0xdbdbdb00dbdbdb00,
0x8a8a8a008a8a8a00, 0x0303030003030300, 0xe6e6e600e6e6e600, 0xdadada00dadada00, 0x0909090009090900, 0x3f3f3f003f3f3f00, 0xdddddd00dddddd00, 0x9494940094949400,
0x8787870087878700, 0x5c5c5c005c5c5c00, 0x8383830083838300, 0x0202020002020200, 0xcdcdcd00cdcdcd00, 0x4a4a4a004a4a4a00, 0x9090900090909000, 0x3333330033333300,
0x7373730073737300, 0x6767670067676700, 0xf6f6f600f6f6f600, 0xf3f3f300f3f3f300, 0x9d9d9d009d9d9d00, 0x7f7f7f007f7f7f00, 0xbfbfbf00bfbfbf00, 0xe2e2e200e2e2e200,
0x5252520052525200, 0x9b9b9b009b9b9b00, 0xd8d8d800d8d8d800, 0x2626260026262600, 0xc8c8c800c8c8c800, 0x3737370037373700, 0xc6c6c600c6c6c600, 0x3b3b3b003b3b3b00,
0x8181810081818100, 0x9696960096969600, 0x6f6f6f006f6f6f00, 0x4b4b4b004b4b4b00, 0x1313130013131300, 0xbebebe00bebebe00, 0x6363630063636300, 0x2e2e2e002e2e2e00,
0xe9e9e900e9e9e900, 0x7979790079797900, 0xa7a7a700a7a7a700, 0x8c8c8c008c8c8c00, 0x9f9f9f009f9f9f00, 0x6e6e6e006e6e6e00, 0xbcbcbc00bcbcbc00, 0x8e8e8e008e8e8e00,
0x2929290029292900, 0xf5f5f500f5f5f500, 0xf9f9f900f9f9f900, 0xb6b6b600b6b6b600, 0x2f2f2f002f2f2f00, 0xfdfdfd00fdfdfd00, 0xb4b4b400b4b4b400, 0x5959590059595900,
0x7878780078787800, 0x9898980098989800, 0x0606060006060600, 0x6a6a6a006a6a6a00, 0xe7e7e700e7e7e700, 0x4646460046464600, 0x7171710071717100, 0xbababa00bababa00,
0xd4d4d400d4d4d400, 0x2525250025252500, 0xababab00ababab00, 0x4242420042424200, 0x8888880088888800, 0xa2a2a200a2a2a200, 0x8d8d8d008d8d8d00, 0xfafafa00fafafa00,
0x7272720072727200, 0x0707070007070700, 0xb9b9b900b9b9b900, 0x5555550055555500, 0xf8f8f800f8f8f800, 0xeeeeee00eeeeee00, 0xacacac00acacac00, 0x0a0a0a000a0a0a00,
0x3636360036363600, 0x4949490049494900, 0x2a2a2a002a2a2a00, 0x6868680068686800, 0x3c3c3c003c3c3c00, 0x3838380038383800, 0xf1f1f100f1f1f100, 0xa4a4a400a4a4a400,
0x4040400040404000, 0x2828280028282800, 0xd3d3d300d3d3d300, 0x7b7b7b007b7b7b00, 0xbbbbbb00bbbbbb00, 0xc9c9c900c9c9c900, 0x4343430043434300, 0xc1c1c100c1c1c100,
0x1515150015151500, 0xe3e3e300e3e3e300, 0xadadad00adadad00, 0xf4f4f400f4f4f400, 0x7777770077777700, 0xc7c7c700c7c7c700, 0x8080800080808000, 0x9e9e9e009e9e9e00
LL(0x7070700070707000), LL(0x8282820082828200), LL(0x2c2c2c002c2c2c00), LL(0xececec00ececec00), LL(0xb3b3b300b3b3b300), LL(0x2727270027272700), LL(0xc0c0c000c0c0c000), LL(0xe5e5e500e5e5e500),
LL(0xe4e4e400e4e4e400), LL(0x8585850085858500), LL(0x5757570057575700), LL(0x3535350035353500), LL(0xeaeaea00eaeaea00), LL(0x0c0c0c000c0c0c00), LL(0xaeaeae00aeaeae00), LL(0x4141410041414100),
LL(0x2323230023232300), LL(0xefefef00efefef00), LL(0x6b6b6b006b6b6b00), LL(0x9393930093939300), LL(0x4545450045454500), LL(0x1919190019191900), LL(0xa5a5a500a5a5a500), LL(0x2121210021212100),
LL(0xededed00ededed00), LL(0x0e0e0e000e0e0e00), LL(0x4f4f4f004f4f4f00), LL(0x4e4e4e004e4e4e00), LL(0x1d1d1d001d1d1d00), LL(0x6565650065656500), LL(0x9292920092929200), LL(0xbdbdbd00bdbdbd00),
LL(0x8686860086868600), LL(0xb8b8b800b8b8b800), LL(0xafafaf00afafaf00), LL(0x8f8f8f008f8f8f00), LL(0x7c7c7c007c7c7c00), LL(0xebebeb00ebebeb00), LL(0x1f1f1f001f1f1f00), LL(0xcecece00cecece00),
LL(0x3e3e3e003e3e3e00), LL(0x3030300030303000), LL(0xdcdcdc00dcdcdc00), LL(0x5f5f5f005f5f5f00), LL(0x5e5e5e005e5e5e00), LL(0xc5c5c500c5c5c500), LL(0x0b0b0b000b0b0b00), LL(0x1a1a1a001a1a1a00),
LL(0xa6a6a600a6a6a600), LL(0xe1e1e100e1e1e100), LL(0x3939390039393900), LL(0xcacaca00cacaca00), LL(0xd5d5d500d5d5d500), LL(0x4747470047474700), LL(0x5d5d5d005d5d5d00), LL(0x3d3d3d003d3d3d00),
LL(0xd9d9d900d9d9d900), LL(0x0101010001010100), LL(0x5a5a5a005a5a5a00), LL(0xd6d6d600d6d6d600), LL(0x5151510051515100), LL(0x5656560056565600), LL(0x6c6c6c006c6c6c00), LL(0x4d4d4d004d4d4d00),
LL(0x8b8b8b008b8b8b00), LL(0x0d0d0d000d0d0d00), LL(0x9a9a9a009a9a9a00), LL(0x6666660066666600), LL(0xfbfbfb00fbfbfb00), LL(0xcccccc00cccccc00), LL(0xb0b0b000b0b0b000), LL(0x2d2d2d002d2d2d00),
LL(0x7474740074747400), LL(0x1212120012121200), LL(0x2b2b2b002b2b2b00), LL(0x2020200020202000), LL(0xf0f0f000f0f0f000), LL(0xb1b1b100b1b1b100), LL(0x8484840084848400), LL(0x9999990099999900),
LL(0xdfdfdf00dfdfdf00), LL(0x4c4c4c004c4c4c00), LL(0xcbcbcb00cbcbcb00), LL(0xc2c2c200c2c2c200), LL(0x3434340034343400), LL(0x7e7e7e007e7e7e00), LL(0x7676760076767600), LL(0x0505050005050500),
LL(0x6d6d6d006d6d6d00), LL(0xb7b7b700b7b7b700), LL(0xa9a9a900a9a9a900), LL(0x3131310031313100), LL(0xd1d1d100d1d1d100), LL(0x1717170017171700), LL(0x0404040004040400), LL(0xd7d7d700d7d7d700),
LL(0x1414140014141400), LL(0x5858580058585800), LL(0x3a3a3a003a3a3a00), LL(0x6161610061616100), LL(0xdedede00dedede00), LL(0x1b1b1b001b1b1b00), LL(0x1111110011111100), LL(0x1c1c1c001c1c1c00),
LL(0x3232320032323200), LL(0x0f0f0f000f0f0f00), LL(0x9c9c9c009c9c9c00), LL(0x1616160016161600), LL(0x5353530053535300), LL(0x1818180018181800), LL(0xf2f2f200f2f2f200), LL(0x2222220022222200),
LL(0xfefefe00fefefe00), LL(0x4444440044444400), LL(0xcfcfcf00cfcfcf00), LL(0xb2b2b200b2b2b200), LL(0xc3c3c300c3c3c300), LL(0xb5b5b500b5b5b500), LL(0x7a7a7a007a7a7a00), LL(0x9191910091919100),
LL(0x2424240024242400), LL(0x0808080008080800), LL(0xe8e8e800e8e8e800), LL(0xa8a8a800a8a8a800), LL(0x6060600060606000), LL(0xfcfcfc00fcfcfc00), LL(0x6969690069696900), LL(0x5050500050505000),
LL(0xaaaaaa00aaaaaa00), LL(0xd0d0d000d0d0d000), LL(0xa0a0a000a0a0a000), LL(0x7d7d7d007d7d7d00), LL(0xa1a1a100a1a1a100), LL(0x8989890089898900), LL(0x6262620062626200), LL(0x9797970097979700),
LL(0x5454540054545400), LL(0x5b5b5b005b5b5b00), LL(0x1e1e1e001e1e1e00), LL(0x9595950095959500), LL(0xe0e0e000e0e0e000), LL(0xffffff00ffffff00), LL(0x6464640064646400), LL(0xd2d2d200d2d2d200),
LL(0x1010100010101000), LL(0xc4c4c400c4c4c400), LL(0x0000000000000000), LL(0x4848480048484800), LL(0xa3a3a300a3a3a300), LL(0xf7f7f700f7f7f700), LL(0x7575750075757500), LL(0xdbdbdb00dbdbdb00),
LL(0x8a8a8a008a8a8a00), LL(0x0303030003030300), LL(0xe6e6e600e6e6e600), LL(0xdadada00dadada00), LL(0x0909090009090900), LL(0x3f3f3f003f3f3f00), LL(0xdddddd00dddddd00), LL(0x9494940094949400),
LL(0x8787870087878700), LL(0x5c5c5c005c5c5c00), LL(0x8383830083838300), LL(0x0202020002020200), LL(0xcdcdcd00cdcdcd00), LL(0x4a4a4a004a4a4a00), LL(0x9090900090909000), LL(0x3333330033333300),
LL(0x7373730073737300), LL(0x6767670067676700), LL(0xf6f6f600f6f6f600), LL(0xf3f3f300f3f3f300), LL(0x9d9d9d009d9d9d00), LL(0x7f7f7f007f7f7f00), LL(0xbfbfbf00bfbfbf00), LL(0xe2e2e200e2e2e200),
LL(0x5252520052525200), LL(0x9b9b9b009b9b9b00), LL(0xd8d8d800d8d8d800), LL(0x2626260026262600), LL(0xc8c8c800c8c8c800), LL(0x3737370037373700), LL(0xc6c6c600c6c6c600), LL(0x3b3b3b003b3b3b00),
LL(0x8181810081818100), LL(0x9696960096969600), LL(0x6f6f6f006f6f6f00), LL(0x4b4b4b004b4b4b00), LL(0x1313130013131300), LL(0xbebebe00bebebe00), LL(0x6363630063636300), LL(0x2e2e2e002e2e2e00),
LL(0xe9e9e900e9e9e900), LL(0x7979790079797900), LL(0xa7a7a700a7a7a700), LL(0x8c8c8c008c8c8c00), LL(0x9f9f9f009f9f9f00), LL(0x6e6e6e006e6e6e00), LL(0xbcbcbc00bcbcbc00), LL(0x8e8e8e008e8e8e00),
LL(0x2929290029292900), LL(0xf5f5f500f5f5f500), LL(0xf9f9f900f9f9f900), LL(0xb6b6b600b6b6b600), LL(0x2f2f2f002f2f2f00), LL(0xfdfdfd00fdfdfd00), LL(0xb4b4b400b4b4b400), LL(0x5959590059595900),
LL(0x7878780078787800), LL(0x9898980098989800), LL(0x0606060006060600), LL(0x6a6a6a006a6a6a00), LL(0xe7e7e700e7e7e700), LL(0x4646460046464600), LL(0x7171710071717100), LL(0xbababa00bababa00),
LL(0xd4d4d400d4d4d400), LL(0x2525250025252500), LL(0xababab00ababab00), LL(0x4242420042424200), LL(0x8888880088888800), LL(0xa2a2a200a2a2a200), LL(0x8d8d8d008d8d8d00), LL(0xfafafa00fafafa00),
LL(0x7272720072727200), LL(0x0707070007070700), LL(0xb9b9b900b9b9b900), LL(0x5555550055555500), LL(0xf8f8f800f8f8f800), LL(0xeeeeee00eeeeee00), LL(0xacacac00acacac00), LL(0x0a0a0a000a0a0a00),
LL(0x3636360036363600), LL(0x4949490049494900), LL(0x2a2a2a002a2a2a00), LL(0x6868680068686800), LL(0x3c3c3c003c3c3c00), LL(0x3838380038383800), LL(0xf1f1f100f1f1f100), LL(0xa4a4a400a4a4a400),
LL(0x4040400040404000), LL(0x2828280028282800), LL(0xd3d3d300d3d3d300), LL(0x7b7b7b007b7b7b00), LL(0xbbbbbb00bbbbbb00), LL(0xc9c9c900c9c9c900), LL(0x4343430043434300), LL(0xc1c1c100c1c1c100),
LL(0x1515150015151500), LL(0xe3e3e300e3e3e300), LL(0xadadad00adadad00), LL(0xf4f4f400f4f4f400), LL(0x7777770077777700), LL(0xc7c7c700c7c7c700), LL(0x8080800080808000), LL(0x9e9e9e009e9e9e00)
}
};
const uint64 KS[] = { 0xA09E667F3BCC908B, 0xB67AE8584CAA73B2, 0xC6EF372FE94F82BE, 0x54FF53A5F1D36F1C, 0x10E527FADE682D1D, 0xB05688C2B3E6C1FD };
const uint64 KS[] = { LL(0xA09E667F3BCC908B), LL(0xB67AE8584CAA73B2), LL(0xC6EF372FE94F82BE), LL(0x54FF53A5F1D36F1C), LL(0x10E527FADE682D1D), LL(0xB05688C2B3E6C1FD) };
VC_INLINE uint64 F(uint64 x, uint64 k)
{
+1 -2
View File
@@ -15,7 +15,6 @@ Dynamic SBOX idea is from GostCrypt project. Copyright (c) 2008-2011 TrueCrypt D
#include "GostCipher.h"
#include "Streebog.h"
#include "common\Tcdefs.h"
#include "cpu.h"
#if defined(CIPHER_GOST89)
@@ -266,4 +265,4 @@ void gost_decrypt(const byte *in, byte *out, gost_kds *ks, int count) {
#endif
}
#endif
#endif
+10 -1
View File
@@ -12,6 +12,12 @@
#ifndef GOST_CIPHER_H
#define GOST_CIPHER_H
#include "Common/Tcdefs.h"
#ifdef __cplusplus
extern "C" {
#endif
//In unsigned chars
#define GOST_KEYSIZE 32
#define GOST_BLOCKSIZE 8
@@ -27,7 +33,6 @@
#define rotl32(b, shift) ((b << shift) | (b >> (32 - shift)))
#endif
typedef unsigned char byte;
#ifdef GST_WINDOWS_BOOT
typedef int gst_word;
typedef long gst_dword;
@@ -57,5 +62,9 @@ void gost_set_key(const byte *key, gost_kds *ks);
#define GOST_KS (0)
#endif
#ifdef __cplusplus
}
#endif
#endif
+1 -1
View File
@@ -11,7 +11,7 @@
/* Adapted for VeraCrypt */
#if !defined(_UEFI)
#include <memory.h>
#endif !defined(_UEFI)
#endif // !defined(_UEFI)
#include "Common/Tcdefs.h"
#include "Common/Endian.h"
+1 -1
View File
@@ -21,7 +21,7 @@
#if !defined(_UEFI)
#include <memory.h>
#endif !defined(_UEFI)
#endif // !defined(_UEFI)
// linear transformation
#define LT(i,a,b,c,d,e) {\
+1 -1
View File
@@ -81,7 +81,7 @@
#if !defined(_UEFI)
#include <string.h> /* for memcpy() etc. */
#endif !defined(_UEFI)
#endif // !defined(_UEFI)
#include "Sha2.h"
+14 -12
View File
@@ -17,19 +17,19 @@
/*
* Iteration constants defined in standard.
*/
ALIGN(16) static const unsigned long long buffer0[8] = { 0x0ULL, 0x0ULL, 0x0ULL,
STREEBOG_ALIGN(16) static const unsigned long long buffer0[8] = { 0x0ULL, 0x0ULL, 0x0ULL,
0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL };
#ifndef __GOST3411_BIG_ENDIAN__
ALIGN(16) static const unsigned long long buffer512[8] = {0x0000000000000200ULL,
STREEBOG_ALIGN(16) static const unsigned long long buffer512[8] = {0x0000000000000200ULL,
0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL };
#else
ALIGN(16) static const unsigned long long buffer512[8] = {{ 0x0002000000000000ULL,
STREEBOG_ALIGN(16) static const unsigned long long buffer512[8] = {{ 0x0002000000000000ULL,
0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL }};
#endif
#ifndef __GOST3411_BIG_ENDIAN__
ALIGN(16) static const unsigned long long C[12][8] = {
STREEBOG_ALIGN(16) static const unsigned long long C[12][8] = {
{
0xdd806559f2a64507ULL,
0x05767436cc744d23ULL,
@@ -152,7 +152,7 @@ ALIGN(16) static const unsigned long long C[12][8] = {
}
};
#else
ALIGN(16) static const unsigned long long C[12][8] = {
STREEBOG_ALIGN(16) static const unsigned long long C[12][8] = {
{
0x0745a6f2596580ddULL,
0x234d74cc36747605ULL,
@@ -380,7 +380,7 @@ static const unsigned char Pi[256] = {
/*
* Precalculation of matrix A multiplication.
*/
ALIGN(16) static const unsigned long long Ax[8][256] =
STREEBOG_ALIGN(16) static const unsigned long long Ax[8][256] =
{
{
0xd01f715b5c7ef8e6ULL, 0x16fa240980778325ULL, 0xa8a42e857ee049c8ULL,
@@ -1088,7 +1088,7 @@ ALIGN(16) static const unsigned long long Ax[8][256] =
}
};
#else
ALIGN(16) static const unsigned long long Ax[8][256] =
STREEBOG_ALIGN(16) static const unsigned long long Ax[8][256] =
{
{
0xe6f87e5c5b711fd0ULL, 0x258377800924fa16ULL, 0xc849e07e852ea4a8ULL,
@@ -2229,6 +2229,7 @@ static void
g(unsigned long long *h, const unsigned long long *N, const unsigned char *m)
{
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE
#if CRYPTOPP_BOOL_SSE41_INTRINSICS_AVAILABLE
if (HasSSE41()) {
__m128i xmm0, xmm2, xmm4, xmm6; /* XMMR0-quadruple */
__m128i xmm1, xmm3, xmm5, xmm7; /* XMMR1-quadruple */
@@ -2255,8 +2256,9 @@ g(unsigned long long *h, const unsigned long long *N, const unsigned char *m)
#if CRYPTOPP_BOOL_X86
_mm_empty();
#endif
}
else if (HasSSE2()) {
} else
#endif
if (HasSSE2()) {
__m128i xmm0, xmm2, xmm4, xmm6; /* XMMR0-quadruple */
__m128i xmm1, xmm3, xmm5, xmm7; /* XMMR1-quadruple */
unsigned int i;
@@ -2285,7 +2287,7 @@ g(unsigned long long *h, const unsigned long long *N, const unsigned char *m)
} else
#endif
{
ALIGN(16) unsigned long long Ki[8], data[8];
STREEBOG_ALIGN(16) unsigned long long Ki[8], data[8];
unsigned int i;
XLPS(h, N, (data));
@@ -2320,7 +2322,7 @@ stage2(STREEBOG_CTX *CTX, const unsigned char *data)
static void
stage3(STREEBOG_CTX *CTX)
{
ALIGN(16) unsigned long long buf[8];
STREEBOG_ALIGN(16) unsigned long long buf[8];
memset(buf, 0x00, sizeof buf);
memcpy(buf, (CTX->buffer), CTX->bufsize);
@@ -2347,7 +2349,7 @@ stage3(STREEBOG_CTX *CTX)
memcpy((CTX->hash), (CTX->h), 8 * sizeof(unsigned long long));
}
void STREEBOG_add(STREEBOG_CTX *CTX, byte *data, size_t len)
void STREEBOG_add(STREEBOG_CTX *CTX, const byte *data, size_t len)
{
size_t chunksize;
+16 -8
View File
@@ -12,22 +12,30 @@
#include "Common/Tcdefs.h"
#include "config.h"
#define ALIGN(a) CRYPTOPP_ALIGN_DATA(a)
#ifdef __cplusplus
extern "C" {
#endif
typedef ALIGN(16) struct _STREEBOG_CTX
#define STREEBOG_ALIGN(a) CRYPTOPP_ALIGN_DATA(a)
typedef STREEBOG_ALIGN(16) struct _STREEBOG_CTX
{
ALIGN(16) unsigned char buffer[64];
ALIGN(16) unsigned long long hash[8];
ALIGN(16) unsigned long long h[8];
ALIGN(16) unsigned long long N[8];
ALIGN(16) unsigned long long Sigma[8];
STREEBOG_ALIGN(16) unsigned char buffer[64];
STREEBOG_ALIGN(16) unsigned long long hash[8];
STREEBOG_ALIGN(16) unsigned long long h[8];
STREEBOG_ALIGN(16) unsigned long long N[8];
STREEBOG_ALIGN(16) unsigned long long Sigma[8];
size_t bufsize;
unsigned int digest_size;
} STREEBOG_CTX;
void STREEBOG_init(STREEBOG_CTX *ctx);
void STREEBOG_init256(STREEBOG_CTX *ctx);
void STREEBOG_add(STREEBOG_CTX *ctx, byte *msg, size_t len);
void STREEBOG_add(STREEBOG_CTX *ctx, const byte *msg, size_t len);
void STREEBOG_finalize(STREEBOG_CTX *ctx, byte *out);
#ifdef __cplusplus
}
#endif
#endif
+6
View File
@@ -123,6 +123,12 @@
#define CRYPTOPP_BOOL_ALIGN16 0
#endif
#if CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE && (defined(__SSE4_1__) || defined(__INTEL_COMPILER) || defined(_MSC_VER))
#define CRYPTOPP_BOOL_SSE41_INTRINSICS_AVAILABLE 1
#else
#define CRYPTOPP_BOOL_SSE41_INTRINSICS_AVAILABLE 0
#endif
// how to allocate 16-byte aligned memory (for SSE2)
#if defined(_MSC_VER)
#define CRYPTOPP_MM_MALLOC_AVAILABLE
+4
View File
@@ -38,12 +38,16 @@ static void SigIllHandlerCPUID(int p)
longjmp(s_jmpNoCPUID, 1);
}
#if !defined (_UEFI) && ((defined(__AES__) && defined(__PCLMUL__)) || defined(__INTEL_COMPILER) || CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE)
static jmp_buf s_jmpNoAESNI;
static void SigIllHandlerAESNI(int p)
{
longjmp(s_jmpNoAESNI, 1);
}
#endif
#if CRYPTOPP_BOOL_X64 == 0
static jmp_buf s_jmpNoSSE2;
static void SigIllHandlerSSE2(int p)
+2058 -2057
View File
File diff suppressed because it is too large Load Diff
+7
View File
@@ -10,6 +10,10 @@ and released into public domain.
#include "Common/Tcdefs.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _kuznyechik_kds
{
uint64 rke[10][2];
@@ -22,5 +26,8 @@ void kuznyechik_encrypt_block(byte* out, const byte* in, kuznyechik_kds* kds);
void kuznyechik_decrypt_block(byte* out, const byte* in, kuznyechik_kds* kds);
void kuznyechik_set_key(const byte* key, kuznyechik_kds *kds);
#ifdef __cplusplus
}
#endif
#endif
+60
View File
@@ -700,3 +700,63 @@ redistribute it freely, subject to the following restrictions:
3. This notice may not be removed or altered from any source
distribution.
____________________________________________________________
Copyright (c) 1990-2002 Info-ZIP. All rights reserved.
For the purposes of this copyright and license, "Info-ZIP" is defined as
the following set of individuals:
Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois,
Jean-loup Gailly, Hunter Goatley, Ian Gorman, Chris Herborth, Dirk Haase,
Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz,
David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko,
Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs,
Kai Uwe Rommel, Steve Salisbury, Dave Smith, Christian Spieler,
Antoine Verheijen, Paul von Behren, Rich Wales, Mike White
This software is provided "as is", without warranty of any kind, express
or implied. In no event shall Info-ZIP or its contributors be held liable
for any direct, indirect, incidental, special or consequential damages
arising out of the use of or inability to use this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright notice,
definition, disclaimer, and this list of conditions.
2. Redistributions in binary form (compiled executables) must reproduce
the above copyright notice, definition, disclaimer, and this list of
conditions in documentation and/or other materials provided with the
distribution. The sole exception to this condition is redistribution
of a standard UnZipSFX binary as part of a self-extracting archive;
that is permitted without inclusion of this license, as long as the
normal UnZipSFX banner has not been removed from the binary or disabled.
3. Altered versions--including, but not limited to, ports to new
operating systems, existing ports with new graphical interfaces, and
dynamic, shared, or static library versions--must be plainly marked
as such and must not be misrepresented as being the original source.
Such altered versions also must not be misrepresented as being
Info-ZIP releases--including, but not limited to, labeling of the
altered versions with the names "Info-ZIP" (or any variation thereof,
including, but not limited to, different capitalizations),
"Pocket UnZip", "WiZ" or "MacZip" without the explicit permission of
Info-ZIP. Such altered versions are further prohibited from
misrepresentative use of the Zip-Bugs or Info-ZIP e-mail addresses or
of the Info-ZIP URL(s).
4. Info-ZIP retains the right to use the names "Info-ZIP", "Zip", "UnZip",
"UnZipSFX", "WiZ", "Pocket UnZip", "Pocket Zip", and "MacZip" for its
own source and binary releases.
____________________________________________________________
Copyright (c) 2013, Alexey Degtyarev. All rights reserved.
____________________________________________________________
Copyright (c) 2016. Disk Cryptography Services for EFI (DCS), Alex Kolotnikov
This program and the accompanying materials are licensed and made available
under the terms and conditions of the GNU Lesser General Public License,
version 3.0 (LGPL-3.0).
The full text of the license may be found at https://opensource.org/licenses/LGPL-3.0
____________________________________________________________
+1 -1
View File
@@ -640,7 +640,7 @@ namespace VeraCrypt
}
else if (sizeStr.find (L"T") != string::npos)
{
multiplier = 1024 * 1024 * 1024 * 1024;
multiplier = (uint64) 1024 * 1024 * 1024 * 1024;
sizeStr.resize (sizeStr.size() - 1);
}
+16
View File
@@ -20,6 +20,8 @@
# RESOURCEDIR: Run-time resource directory
# VERBOSE: Enable verbose messages
# WXSTATIC: Use static wxWidgets library
# SSSE3: Enable SSSE3 support in compiler
# SSE41: Enable SSE4.1 support in compiler
#------ Targets ------
# all
@@ -161,12 +163,26 @@ ifeq "$(shell uname -s)" "Linux"
PLATFORM := Linux
C_CXX_FLAGS += -DTC_UNIX -DTC_LINUX
CFLAGS += -msse2
CXXFLAGS += -msse2
GCC_GTEQ_440 := $(shell expr `gcc -dumpversion | sed -e 's/\.\([0-9][0-9]\)/\1/g' -e 's/\.\([0-9]\)/0\1/g' -e 's/^[0-9]\{3,4\}$$/&00/'` \>= 40400)
GCC_GTEQ_430 := $(shell expr `gcc -dumpversion | sed -e 's/\.\([0-9][0-9]\)/\1/g' -e 's/\.\([0-9]\)/0\1/g' -e 's/^[0-9]\{3,4\}$$/&00/'` \>= 40300)
ifeq "$(GCC_GTEQ_440)" "1"
CFLAGS += -maes
CXXFLAGS += -maes
endif
ifeq "$(GCC_GTEQ_430)" "1"
ifeq "$(origin SSSE3)" "command line"
CFLAGS += -mssse3 -msse4.1
endif
ifeq "$(origin SSE41)" "command line"
CXXFLAGS += -mssse3 -msse4.1
endif
endif
ifeq "$(TC_BUILD_CONFIG)" "Release"
C_CXX_FLAGS += -fdata-sections -ffunction-sections
LFLAGS += -Wl,--gc-sections
+3 -3
View File
@@ -4641,8 +4641,7 @@ static BOOL Mount (HWND hwndDlg, int nDosDriveNo, wchar_t *szFileName, int pim)
// If keyfiles are enabled, test empty password first
if (!mounted && KeyFilesEnable && FirstKeyFile && bEffectiveTryEmptyPasswordWhenKeyfileUsed)
{
Password emptyPassword;
emptyPassword.Length = 0;
Password emptyPassword = {0};
KeyFilesApply (hwndDlg, &emptyPassword, FirstKeyFile, szFileName);
// try TrueCrypt mode first since it is quick, only if no custom pim specified
@@ -7981,7 +7980,8 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
if (VolumeSelected (hwndDlg)
&& IsMountedVolume (volPathLower))
{
TranslateVolumeID (hwndDlg, volPathLower, ARRAYSIZE (volPathLower));
if (!TranslateVolumeID (hwndDlg, volPathLower, ARRAYSIZE (volPathLower)))
return 1;
if (LOWORD (selectedDrive) != TC_MLIST_ITEM_NONSYS_VOL)
{
+14 -1
View File
@@ -116,6 +116,14 @@ This is the case for IDRIX's certificate. If yours is issued by another CA,
then you should put the Root and Intermediate certificates in the "Signing"
folder and then modify sign.bat accordingly.
VeraCrypt EFI Boot Loader:
--------------------------
VeraCrypt source code contains pre-built EFI binaries under src\Boot\EFI.
The source code of VeraCrypt EFI Boot Loader is licensed under LGPL and
it is available at https://github.com/veracrypt/VeraCrypt-DCS.
For build instructions, please refer to the file src\Boot\EFI\Readme.txt.
II. Linux and Mac OS X
======================
@@ -240,13 +248,18 @@ Copyright Information
---------------------
This software as a whole:
Copyright (c) 2013-2015 IDRIX. All rights reserved.
Copyright (c) 2013-2016 IDRIX. All rights reserved.
Portions of this software:
Copyright (c) 2013-2016 IDRIX. All rights reserved.
Copyright (c) 2003-2012 TrueCrypt Developers Association. All rights reserved.
Copyright (c) 1998-2000 Paul Le Roux. All rights reserved.
Copyright (c) 1998-2008 Brian Gladman, Worcester, UK. All rights reserved.
Copyright (c) 2002-2004 Mark Adler. All rights reserved.
Copyright (c) 2016 Disk Cryptography Services for EFI (DCS), Alex Kolotnikov
Copyright (c) 1990-2002 Info-ZIP. All rights reserved.
Copyright (c) 2013, Alexey Degtyarev. All rights reserved.
For more information, please see the legal notices attached to parts of the
source code.
Binary file not shown.
File diff suppressed because one or more lines are too long
+2 -1
View File
@@ -26,6 +26,7 @@ namespace VeraCrypt
l.push_back (shared_ptr <Hash> (new Sha512 ()));
l.push_back (shared_ptr <Hash> (new Whirlpool ()));
l.push_back (shared_ptr <Hash> (new Sha256 ()));
l.push_back (shared_ptr <Hash> (new Streebog ()));
l.push_back (shared_ptr <Hash> (new Ripemd160 ()));
return l;
@@ -161,6 +162,6 @@ namespace VeraCrypt
void Streebog::ProcessData (const ConstBufferPtr &data)
{
if_debug (ValidateDataParameters (data));
STREEBOG_add (data.Get(), (int) data.Size(), (STREEBOG_CTX *) Context.Ptr());
STREEBOG_add ((STREEBOG_CTX *) Context.Ptr(), data.Get(), (int) data.Size());
}
}
+2 -2
View File
@@ -163,7 +163,7 @@ namespace VeraCrypt
virtual shared_ptr <Hash> GetHash () const { return shared_ptr <Hash> (new Streebog); }
virtual int GetIterationCount (int pim) const { return pim <= 0 ? 500000 : (15000 + (pim * 1000)); }
virtual wstring GetName () const { return L"HMAC-Streebog"; }
virtual Pkcs5Kdf* Clone () const { return new Pkcs5HmacStreebog(m_truecryptMode); }
virtual Pkcs5Kdf* Clone () const { return new Pkcs5HmacStreebog(); }
private:
Pkcs5HmacStreebog (const Pkcs5HmacStreebog &);
@@ -180,7 +180,7 @@ namespace VeraCrypt
virtual shared_ptr <Hash> GetHash () const { return shared_ptr <Hash> (new Streebog); }
virtual int GetIterationCount (int pim) const { return pim <= 0 ? 200000 : pim * 2048; }
virtual wstring GetName () const { return L"HMAC-Streebog"; }
virtual Pkcs5Kdf* Clone () const { return new Pkcs5HmacStreebog_Boot(m_truecryptMode); }
virtual Pkcs5Kdf* Clone () const { return new Pkcs5HmacStreebog_Boot(); }
private:
Pkcs5HmacStreebog_Boot (const Pkcs5HmacStreebog_Boot &);