diff --git a/CMakeLists.txt b/CMakeLists.txt index 8fbe02aa00f1397b266540340d4b188a9466fb6f..85932086264790c6cfd88cca7b326f5eb9040139 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,7 @@ file( GLOB CRYPTO_SRCS src/iaes/*.c src/oaes/*.c src/blowfish/*.c + src/GOST/*.c src/sha3/*.c src/msrln/*.c src/defeo_scheme/*.c @@ -57,6 +58,7 @@ file( GLOB CRYPTO_HEADERS src/iaes/*.h src/oaes/*.h src/blowfish/*.h + src/GOST/*.h src/sha3/*.h src/msrln/*.h src/defeo_scheme/*.h diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user index 3d708f47ba113c67877250b5ab2dd289e3be9cf0..d1ad6664b6cc9507c4e397109eb62f1646ea7811 100644 --- a/CMakeLists.txt.user +++ b/CMakeLists.txt.user @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE QtCreatorProject> -<!-- Written by QtCreator 4.11.2, 2020-04-24T10:38:37. --> +<!-- Written by QtCreator 4.11.2, 2020-04-26T22:56:12. --> <qtcreator> <data> <variable>EnvironmentId</variable> diff --git a/include/dap_enc_GOST.h b/include/dap_enc_GOST.h new file mode 100644 index 0000000000000000000000000000000000000000..ba36ccb0b2527cf2ef14c560a03a9b0676c72cb6 --- /dev/null +++ b/include/dap_enc_GOST.h @@ -0,0 +1,34 @@ +#ifndef _DAP_ENC_GOST_H_ +#define _DAP_ENC_GOST_H_ + +#include <stddef.h> +#include "dap_enc_key.h" +#include "GOST/block_chipher.h" + +#ifdef __cplusplus +extern "C" { +#endif +void dap_enc_gost_key_delete(struct dap_enc_key *a_key); +void dap_enc_gost_key_generate(struct dap_enc_key * a_key, const void *kex_buf, + size_t kex_size, const void * seed, size_t seed_size, size_t key_size); +//------GOST_OFB--------- +void dap_enc_gost_ofb_key_new(struct dap_enc_key * a_key); + +size_t dap_enc_gost_ofb_calc_decode_size(const size_t size_in); +size_t dap_enc_gost_ofb_calc_encode_size(const size_t size_in); + +size_t dap_enc_gost_ofb_decrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out); +size_t dap_enc_gost_ofb_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out); + +// Writes result ( out ) in already allocated buffer +size_t dap_enc_gost_ofb_decrypt_fast(struct dap_enc_key * a_key, const void * a_in, + size_t a_in_size, void * buf_out, size_t buf_out_size); +// Writes result ( out ) in already allocated buffer +size_t dap_enc_gost_ofb_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, + size_t a_in_size, void * buf_out, size_t buf_out_size); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/dap_enc_bf_cbc.h b/include/dap_enc_bf.h similarity index 50% rename from include/dap_enc_bf_cbc.h rename to include/dap_enc_bf.h index 2bf8826a4508dc7d5046f7087641fa82471058c2..6501f9dee1ac7f0d599795a9c8770d0d05bf8702 100644 --- a/include/dap_enc_bf_cbc.h +++ b/include/dap_enc_bf.h @@ -1,5 +1,5 @@ -#ifndef _DAP_ENC_BF_CBC_H_ -#define _DAP_ENC_BF_CBC_H_ +#ifndef _DAP_ENC_BF_H_ +#define _DAP_ENC_BF_H_ #include <stddef.h> #include "dap_enc_key.h" @@ -8,11 +8,11 @@ #ifdef __cplusplus extern "C" { #endif - -void dap_enc_bf_cbc_key_new(struct dap_enc_key * a_key); -void dap_enc_bf_cbc_key_delete(struct dap_enc_key *a_key); -void dap_enc_bf_cbc_key_generate(struct dap_enc_key * a_key, const void *kex_buf, +void dap_enc_bf_key_delete(struct dap_enc_key *a_key); +void dap_enc_bf_key_generate(struct dap_enc_key * a_key, const void *kex_buf, size_t kex_size, const void * seed, size_t seed_size, size_t key_size); +//-----CBC---------- +void dap_enc_bf_cbc_key_new(struct dap_enc_key * a_key); size_t dap_enc_bf_cbc_calc_decode_size(const size_t size_in); size_t dap_enc_bf_cbc_calc_encode_size(const size_t size_in); @@ -27,6 +27,22 @@ size_t dap_enc_bf_cbc_decrypt_fast(struct dap_enc_key * a_key, const void * a_in size_t dap_enc_bf_cbc_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void * buf_out, size_t buf_out_size); +//------OFB--------- +void dap_enc_bf_ofb_key_new(struct dap_enc_key * a_key); + +size_t dap_enc_bf_ofb_calc_decode_size(const size_t size_in); +size_t dap_enc_bf_ofb_calc_encode_size(const size_t size_in); + +size_t dap_enc_bf_ofb_decrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out); +size_t dap_enc_bf_ofb_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out); + +// Writes result ( out ) in already allocated buffer +size_t dap_enc_bf_ofb_decrypt_fast(struct dap_enc_key * a_key, const void * a_in, + size_t a_in_size, void * buf_out, size_t buf_out_size); +// Writes result ( out ) in already allocated buffer +size_t dap_enc_bf_ofb_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, + size_t a_in_size, void * buf_out, size_t buf_out_size); + #ifdef __cplusplus } #endif diff --git a/include/dap_enc_iaes.h b/include/dap_enc_iaes.h index 8472dede0cf3699dee5e1b5b2a17aac1c9293afc..b1389eb6b74a0e952b0f86a4eb42d1b354322b9a 100755 --- a/include/dap_enc_iaes.h +++ b/include/dap_enc_iaes.h @@ -17,7 +17,7 @@ void dap_enc_aes_key_delete(struct dap_enc_key *a_key); void dap_enc_aes_key_generate(struct dap_enc_key * a_key, const void *kex_buf, size_t kex_size, const void * seed, size_t seed_size, size_t key_size); -size_t dap_enc_iaes256_calc_decode_size(const size_t size_in); +size_t dap_enc_iaes256_calc_decode_max_size(const size_t size_in); size_t dap_enc_iaes256_calc_encode_size(const size_t size_in); size_t dap_enc_iaes256_cbc_decrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out); diff --git a/include/dap_enc_key.h b/include/dap_enc_key.h index 873c82c8d13d181612f9ed3efb739a7b0228bac5..5c73591aa0aef1c80e3acae67d1c202e6000f519 100755 --- a/include/dap_enc_key.h +++ b/include/dap_enc_key.h @@ -30,9 +30,6 @@ #include <time.h> #include <stdint.h> #include "dap_common.h" -//#ifndef byte_t -// typedef uint_8_t byte_t; -//#endif typedef enum dap_enc_data_type{DAP_ENC_DATA_TYPE_RAW, @@ -44,11 +41,17 @@ typedef enum dap_enc_data_type{DAP_ENC_DATA_TYPE_RAW, -typedef enum dap_enc_key_type{ DAP_ENC_KEY_TYPE_IAES, // Symmetric AES +typedef enum dap_enc_key_type{ + + DAP_ENC_KEY_TYPE_IAES, // Symmetric AES DAP_ENC_KEY_TYPE_OAES,// from https://github.com/monero-project/monero/tree/master/src/crypto DAP_ENC_KEY_TYPE_BF_CBC,// BlowFish CBCmode + DAP_ENC_KEY_TYPE_BF_OFB,//BlowFish OFBmode + + DAP_ENC_KEY_TYPE_GOST_OFB,//GOST28147_89 + DAP_ENC_KEY_TYPE_KUZN_OFB,//GOST28147_14 DAP_ENC_KEY_TYPE_RLWE_NEWHOPE, // "NewHope": key exchange from the ring learning with errors problem // (Alkim, Ducas, Pöppelmann, Schwabe, USENIX Security 2016 ) @@ -227,7 +230,7 @@ extern "C" { int dap_enc_key_init(void); void dap_enc_key_deinit(void); - +char *dap_enc_get_type_name(dap_enc_key_type_t key_type); size_t dap_enc_key_get_enc_size(dap_enc_key_t * a_key, const size_t buf_in_size); size_t dap_enc_key_get_dec_size(dap_enc_key_t * a_key, const size_t buf_in_size); diff --git a/src/GOST/28147_14.c b/src/GOST/28147_14.c new file mode 100644 index 0000000000000000000000000000000000000000..f8f92d97c2f99c23545e41309b068a1de1e15cc7 --- /dev/null +++ b/src/GOST/28147_14.c @@ -0,0 +1,481 @@ +/** @file + * @brief Ðåàëèçàöèÿ àëãîðèòìà "Êóçíå÷èê" + * + * @copyright InfoTeCS. All rights reserved. + */ + +#include <memory.h> + +#include "28147_14.h" +#include "table.h" + +/** @brief Íåëèíåéíîå áèåêòèâíîå ïðåîáðàçîâàíèå ìíîæåñòâà äâîè÷íûõ âåêòîðîâ. */ +static const unsigned char kPi[256] = +{ + 252, 238, 221, 17, 207, 110, 49, 22, 251, 196, 250, 218, 35, 197, 4, 77, + 233, 119, 240, 219, 147, 46, 153, 186, 23, 54, 241, 187, 20, 205, 95, 193, + 249, 24, 101, 90, 226, 92, 239, 33, 129, 28, 60, 66, 139, 1, 142, 79, + 5, 132, 2, 174, 227, 106, 143, 160, 6, 11, 237, 152, 127, 212, 211, 31, + 235, 52, 44, 81, 234, 200, 72, 171, 242, 42, 104, 162, 253, 58, 206, 204, + 181, 112, 14, 86, 8, 12, 118, 18, 191, 114, 19, 71, 156, 183, 93, 135, + 21, 161, 150, 41, 16, 123, 154, 199, 243, 145, 120, 111, 157, 158, 178, 177, + 50, 117, 25, 61, 255, 53, 138, 126, 109, 84, 198, 128, 195, 189, 13, 87, + 223, 245, 36, 169, 62, 168, 67, 201, 215, 121, 214, 246, 124, 34, 185, 3, + 224, 15, 236, 222, 122, 148, 176, 188, 220, 232, 40, 80, 78, 51, 10, 74, + 167, 151, 96, 115, 30, 0, 98, 68, 26, 184, 56, 130, 100, 159, 38, 65, + 173, 69, 70, 146, 39, 94, 85, 47, 140, 163, 165, 125, 105, 213, 149, 59, + 7, 88, 179, 64, 134, 172, 29, 247, 48, 55, 107, 228, 136, 217, 231, 137, + 225, 27, 131, 73, 76, 63, 248, 254, 141, 83, 170, 144, 202, 216, 133, 97, + 32, 113, 103, 164, 45, 43, 9, 91, 203, 155, 37, 208, 190, 229, 108, 82, + 89, 166, 116, 210, 230, 244, 180, 192, 209, 102, 175, 194, 57, 75, 99, 182 +}; + +/** @brief Îáðàòíîå íåëèíåéíîå áèåêòèâíîå ïðåîáðàçîâàíèå ìíîæåñòâà äâîè÷íûõ âåêòîðîâ. */ +static const unsigned char kReversePi[256] = +{ + 0xa5,0x2d,0x32,0x8f,0x0e,0x30,0x38,0xc0,0x54,0xe6,0x9e,0x39,0x55,0x7e,0x52,0x91, + 0x64,0x03,0x57,0x5a,0x1c,0x60,0x07,0x18,0x21,0x72,0xa8,0xd1,0x29,0xc6,0xa4,0x3f, + 0xe0,0x27,0x8d,0x0c,0x82,0xea,0xae,0xb4,0x9a,0x63,0x49,0xe5,0x42,0xe4,0x15,0xb7, + 0xc8,0x06,0x70,0x9d,0x41,0x75,0x19,0xc9,0xaa,0xfc,0x4d,0xbf,0x2a,0x73,0x84,0xd5, + 0xc3,0xaf,0x2b,0x86,0xa7,0xb1,0xb2,0x5b,0x46,0xd3,0x9f,0xfd,0xd4,0x0f,0x9c,0x2f, + 0x9b,0x43,0xef,0xd9,0x79,0xb6,0x53,0x7f,0xc1,0xf0,0x23,0xe7,0x25,0x5e,0xb5,0x1e, + 0xa2,0xdf,0xa6,0xfe,0xac,0x22,0xf9,0xe2,0x4a,0xbc,0x35,0xca,0xee,0x78,0x05,0x6b, + 0x51,0xe1,0x59,0xa3,0xf2,0x71,0x56,0x11,0x6a,0x89,0x94,0x65,0x8c,0xbb,0x77,0x3c, + 0x7b,0x28,0xab,0xd2,0x31,0xde,0xc4,0x5f,0xcc,0xcf,0x76,0x2c,0xb8,0xd8,0x2e,0x36, + 0xdb,0x69,0xb3,0x14,0x95,0xbe,0x62,0xa1,0x3b,0x16,0x66,0xe9,0x5c,0x6c,0x6d,0xad, + 0x37,0x61,0x4b,0xb9,0xe3,0xba,0xf1,0xa0,0x85,0x83,0xda,0x47,0xc5,0xb0,0x33,0xfa, + 0x96,0x6f,0x6e,0xc2,0xf6,0x50,0xff,0x5d,0xa9,0x8e,0x17,0x1b,0x97,0x7d,0xec,0x58, + 0xf7,0x1f,0xfb,0x7c,0x09,0x0d,0x7a,0x67,0x45,0x87,0xdc,0xe8,0x4f,0x1d,0x4e,0x04, + 0xeb,0xf8,0xf3,0x3e,0x3d,0xbd,0x8a,0x88,0xdd,0xcd,0x0b,0x13,0x98,0x02,0x93,0x80, + 0x90,0xd0,0x24,0x34,0xcb,0xed,0xf4,0xce,0x99,0x10,0x44,0x40,0x92,0x3a,0x01,0x26, + 0x12,0x1a,0x48,0x68,0xf5,0x81,0x8b,0xc7,0xd6,0x20,0x0a,0x08,0x00,0x4c,0xd7,0x74 +}; + +/** @brief Êîýôôèöèåíòû óìíîæåíèÿ â ïðåîáðàçîâàíèè l */ +static const unsigned char kB[16] = {148, 32, 133, 16, 194, 192, 1, 251, 1, 192, 194, 16, 133, 32, 148, 1}; + +int DLL_IMPORT funcX(unsigned char* a, unsigned char* b, unsigned char* outdata, printout_byte_array print) +{ + unsigned int i; + + if(!a || !b || !outdata) + { + if(print) + print("funcX: internal error!", 0, 0); + return -1; + } + + for(i = 0; i < 16; ++i) + { + outdata[i] = a[i] ^ b[i]; + } + + if(print) + { + print("funcX: a: ", a, 16); + print("funcX: b: ", b, 16); + print("funcX: result: ", outdata, 16); + } + + return 0; +} + +int DLL_IMPORT funcS(unsigned char* indata, unsigned char* outdata, printout_byte_array print) +{ + size_t i = 0; + + if(!indata || !outdata) + { + if(print) + print("funcS: internal error!", 0, 0); + return -1; + } + + for(i = 0; i < 16; ++i) + { + outdata[i] = kPi[indata[i]]; + } + + if(print) + { + print("funcS: input: ", indata, 16); + print("funcS: output: ", outdata, 16); + } + + return 0; +} + +int DLL_IMPORT funcReverseS(unsigned char* indata, unsigned char* outdata, printout_byte_array print) +{ + unsigned int i; + + if(!indata || !outdata) + { + if(print) + print("funcReverseS: internal error!", 0, 0); + return -1; + } + + for(i = 0; i < 16; ++i) + outdata[i] = kReversePi[indata[i]]; + + if(print) + { + print("funcReverseS: input: ", indata, 16); + print("funcReverseS: output: ", outdata, 16); + } + + return 0; +} + +int DLL_IMPORT funcR(unsigned char* indata, unsigned char* outdata, printout_byte_array print) +{ + size_t i; + unsigned char sum = 0; + + if(!indata || !outdata) + { + if(print) + print("funcR: internal error!", 0, 0); + return -1; + } + + for(i = 0; i < 16; ++i) + { + sum ^= multTable[indata[i]*256 + kB[i]]; + } + + outdata[0] = sum; + memcpy(outdata+1, indata, 15); + + if(print) + { + print("funcR: input: ", indata, 16); + print("funcR: output: ", outdata, 16); + } + + return 0; +} + +int DLL_IMPORT funcReverseR(unsigned char* indata, unsigned char* outdata, printout_byte_array print) +{ + unsigned char tmp[16]; + unsigned char sum = 0; + unsigned int i; + + if(!indata || !outdata) + { + if(print) + print("funcReverseR: internal error!", 0, 0); + return -1; + } + + memcpy(tmp, indata+1, 15); + tmp[15] = indata[0]; + + + for(i = 0; i < 16; ++i) + { + sum ^= multTable[tmp[i]*256 + kB[i]]; + } + + memcpy(outdata, tmp, 15); + outdata[15] = sum; + + if(print) + { + print("funcReverseR: input: ", indata, 16); + print("funcReverseR: output: ", outdata, 16); + } + + return 0; +} + +int DLL_IMPORT funcL(unsigned char* indata, unsigned char* outdata, printout_byte_array print) +{ + unsigned char tmp[16]; + int i = 0; + + if(!indata || !outdata) + { + if(print) + print("funcL: internal error!", 0, 0); + return -1; + } + + memcpy(tmp, indata, 16); + + for(i = 0; i < 16; ++i) + { + funcR(tmp, outdata, print); + memcpy(tmp, outdata, 16); + } + + if(print) + { + print("funcL: input: ", indata, 16); + print("funcL: output: ", outdata, 16); + } + + return 0; +} + +int DLL_IMPORT funcReverseL(unsigned char* indata, unsigned char* outdata, printout_byte_array print) +{ + unsigned char tmp[16]; + unsigned int i; + + if(!indata || !outdata) + { + if(print) + print("funcReverseL: internal error!", 0, 0); + return -1; + } + + memcpy(tmp, indata, 16); + + for(i = 0; i < 16; ++i) + { + funcReverseR(tmp, outdata, print); + memcpy(tmp, outdata, 16); + } + + if(print) + { + print("funcReverseL: input: ", indata, 16); + print("funcReverseL: output: ", outdata, 16); + } + + return 0; +} + +int DLL_IMPORT funcLSX(unsigned char* a, unsigned char* b, unsigned char* outdata, printout_byte_array print) +{ + unsigned char temp1[16]; + unsigned char temp2[16]; + + if(!a || !b || !outdata) + { + if(print) + print("funcLSX: internal error!", 0, 0); + return -1; + } + + funcX(a, b, temp1, print); + funcS(temp1, temp2, print); + funcL(temp2, outdata, print); + + if(print) + { + print("funcLSX: a: ", a, 16); + print("funcLSX: b: ", b, 16); + print("funcLSX: output: ", outdata, 16); + } + + return 0; +} + +int DLL_IMPORT funcReverseLSX(unsigned char* a, unsigned char* b, unsigned char* outdata, printout_byte_array print) +{ + unsigned char temp1[16]; + unsigned char temp2[16]; + + if(!a || !b || !outdata) + { + if(print) + print("funcReverseLSX: internal error!", 0, 0); + return -1; + } + + funcX(a, b, temp1, print); + funcReverseL(temp1, temp2, print); + funcReverseS(temp2, outdata, print); + + if(print) + { + print("funcReverseLSX: a: ", a, 16); + print("funcReverseLSX: b: ", b, 16); + print("funcReverseLSX: output: ", outdata, 16); + } + + return 0; +} + +int DLL_IMPORT funcF(unsigned char* inputKey, unsigned char* inputKeySecond, unsigned char* iterationConst, unsigned char* outputKey, unsigned char* outputKeySecond, printout_byte_array print) +{ + unsigned char temp1[16]; + unsigned char temp2[16]; + + if(!inputKey || !inputKeySecond || !iterationConst || !outputKey || !outputKeySecond) + { + if(print) + print("funcF: internal error!", 0, 0); + return -1; + } + + funcLSX(inputKey, iterationConst, temp1, print); + funcX(temp1, inputKeySecond, temp2, print); + + memcpy(outputKeySecond, inputKey, 16); + memcpy(outputKey, temp2, 16); + + if(print) + { + print("funcF: input key: ", inputKey, 16); + print("funcF: input key: ", inputKeySecond, 16); + print("funcF: iterration const: ", iterationConst, 16); + print("funcF: output key: ", outputKey, 16); + print("funcF: output key: ", outputKeySecond, 16); + } + + return 0; +} + +int DLL_IMPORT funcC(unsigned char number, unsigned char* output, printout_byte_array print) +{ + unsigned char tempI[16]; + + if(!output) + { + if(print) + print("funcC: internal error!", 0, 0); + return -1; + } + + memset( tempI, 0, 15 ); + tempI[15] = number; + funcL(tempI, output, print); + + return 0; +} + +int DLL_IMPORT ExpandKey(unsigned char* masterKey, unsigned char* keys, printout_byte_array print) +{ + unsigned char C[16]; + unsigned char temp1[16]; + unsigned char temp2[16]; + unsigned char j, i; + + + if( !masterKey || !keys) + { + if(print) + print("ExpandKey: internal error!", 0, 0); + return -1; + } + + + memcpy(keys, masterKey, 16); + memcpy(keys + 16, masterKey + 16, 16); + + if(print) + { + print("ExpandKey: master key: ", masterKey, 16); + print("ExpandKey: output key: ", keys, 16); + print("ExpandKey: output key: ", keys + 16, 16); + } + + for(j = 0; j < 4; ++j) + { + memcpy(temp1, keys + j * 2 * 16, 16); + memcpy(temp2, keys + (j * 2 + 1) * 16, 16); + + for( i = 1; i < 8; ++i ) + { + funcC(j*8+i, C, print); + funcF(temp1, temp2, C, temp1, temp2, print); + } + + funcC(j*8+8, C, print); + funcF(temp1, temp2, C, temp1, temp2, print); + + memcpy(keys + (j * 2 + 2) * 16, temp1, 16); + memcpy(keys + (j * 2 + 3) * 16, temp2, 16); + + if(print) + { + print("ExpandKey: output key: ", keys + (j * 2 + 2) * 16, 16); + print("ExpandKey: output key: ", keys + (j * 2 + 3) * 16, 16); + } + } + + + return 0; +} + +int DLL_IMPORT Encrypt_14(unsigned char* plainText, unsigned char* chipherText, unsigned char* keys, printout_byte_array print, printout_uint_array print_uint) +{ + unsigned char xTemp[16]; + unsigned char yTemp[16]; + int i; + + (void)print_uint; + + if(!plainText || !chipherText || !keys) + { + if(print) + print("Encrypt_14: internal error!", 0, 0); + return -1; + } + + memcpy(xTemp, plainText, 16); + + for(i = 0; i < 9; ++i) + { + funcLSX(xTemp, keys + 16*i, yTemp, print); + memcpy(xTemp, yTemp, 16); + } + funcX(yTemp, keys+9*16, chipherText, print); + + if(print) + { + for(i = 0; i < 10; ++i) + { + print("Encrypt_14: key: ", keys, 16); + keys += 16; + + } + print("Encrypt_14: plain text: ", plainText, 16); + print("Encrypt_14: chipher text: ", chipherText, 16); + } + + return 0; +} + +int DLL_IMPORT Decrypt_14(unsigned char* chipherText, unsigned char* plainText, unsigned char* keys, printout_byte_array print, printout_uint_array print_uint) +{ + unsigned char xTemp[16]; + unsigned char yTemp[16]; + int i; + + (void)print_uint; + + if(!plainText || !chipherText || !keys) + { + if(print) + print("Decrypt_14: internal error!", 0, 0); + return -1; + } + + memcpy(xTemp, chipherText, 16); + for(i = 0; i < 9; ++i) + { + funcReverseLSX(xTemp, keys+(9-i)*16, yTemp, print); + memcpy(xTemp, yTemp, 16); + } + funcX(yTemp, keys, plainText, print); + + if(print) + { + for(i = 0; i < 10; ++i) + { + print("Decrypt_14: key: ", keys, 16); + keys += 16; + + } + print("Decrypt_14: chipher text : ", chipherText, 16); + print("Decrypt_14: plain text: ", plainText, 16); + } + + return 0; +} \ No newline at end of file diff --git a/src/GOST/28147_14.h b/src/GOST/28147_14.h new file mode 100644 index 0000000000000000000000000000000000000000..d044037ef8da7629b5393db825ac09e4f9a0808c --- /dev/null +++ b/src/GOST/28147_14.h @@ -0,0 +1,172 @@ +/** @file + * @brief Îáúÿâëåíèå ôóíêöèé ðåàëèçóþùèõ ïðåîáðàçîâàíèÿ èç àëãîðèòìà "Êóçíå÷èê" + * + * @copyright InfoTeCS. All rights reserved. + */ + +#ifndef C_28147_14_H +#define C_28147_14_H + +#include "dll_import.h" +#include "callback_print.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +/** @brief Ïðåîáðàçîâàíèå X + * + * @param[in] a âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] b âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[out] outdata ðåçóëüòàò ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT funcX(unsigned char* a, unsigned char* b, unsigned char* outdata, printout_byte_array print); + +/** @brief Ïðåîáðàçîâàíèå S + * + * @param[in] indata âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[out] outdata ðåçóëüòàò ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT funcS(unsigned char* indata, unsigned char* outdata, printout_byte_array print); + +/** @brief Ïðåîáðàçîâàíèå îáðàòíîå ê ïðåîáðàçîâàíèþ S + * + * @param[in] indata âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[out] outdata ðåçóëüòàò ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT funcReverseS(unsigned char* indata, unsigned char* outdata, printout_byte_array print); + +/** @brief Ïðåîáðàçîâàíèå R + * + * @param[in] indata âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[out] outdata ðåçóëüòàò ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT funcR(unsigned char* indata, unsigned char* outdata, printout_byte_array print); + +/** @brief Ïðåîáðàçîâàíèå îáðàòíîå ê ïðåîáðàçîâàíèþ R + * + * @param[in] indata âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[out] outdata ðåçóëüòàò ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT funcReverseR(unsigned char* indata, unsigned char* outdata, printout_byte_array print); + +/** @brief Ïðåîáðàçîâàíèå L + * + * @param[in] indata âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[out] outdata ðåçóëüòàò ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT funcL(unsigned char* indata, unsigned char* outdata, printout_byte_array print); + +/** @brief Ïðåîáðàçîâàíèå îáðàòíîå ê ïðåîáðàçîâàíèþ L + * + * @param[in] indata âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[out] outdata ðåçóëüòàò ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT funcReverseL(unsigned char* indata, unsigned char* outdata, printout_byte_array print); + +/** @brief Ïðåîáðàçîâàíèå LSX + * + * @param[in] a âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] b âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[out] outdata ðåçóëüòàò ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT funcLSX(unsigned char* a, unsigned char* b, unsigned char* outdata, printout_byte_array print); + +/** @brief Ïðåîáðàçîâàíèå îáðàòíîå ê ïðåîáðàçîâàíèþ LSX + * + * @param[in] a âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] b âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[out] outdata ðåçóëüòàò ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT funcReverseLSX(unsigned char* a, unsigned char* b, unsigned char* outdata, printout_byte_array print); + +/** @brief Ïðåîáðàçîâàíèå F + * + * @param[in] inputKey Ïåðâûé êëþ÷ èç ïàðû êëþ÷åé ïîëó÷åííîé â ïðåäåäóùåé èòåðàöèè + * @param[in] inputKeySecond Âòîðîé êëþ÷ èç ïàðû êëþ÷åé ïîëó÷åííîé â ïðåäåäóùåé èòåðàöèè + * @param[in] iterationConst Èòåðàöèîííàÿ êîíñòàíòà + * @param[out] outputKey Ïåðâûé êëþ÷ + * @param[out] outputKeySecond Âòîðîé êëþ÷ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT funcF(unsigned char* inputKey, unsigned char* inputKeySecond, unsigned char* iterationConst, unsigned char* outputKey, unsigned char* outputKeySecond, printout_byte_array print); + +/** @brief Âû÷èñëåíèå èòåðàöèîííîé êîíñòàíòû Ñ + * + * @param[in] number íîìåð êîíñòàíòû + * @param[out] output èòåðàöèîííàÿ êîíñòàíòà + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT funcC(unsigned char number, unsigned char* output, printout_byte_array print); + +/** @brief Ðàçâåðòêà êëþ÷à + * + * @param[in] masterKey Ìàñòåð êëþ÷ + * @param[out] keys ìàññèâ ðàçâåðíóòûõ êëþ÷åé + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT ExpandKey(unsigned char* masterKey, unsigned char* keys, printout_byte_array print); + +/** @brief Âûïîëíåíèå çàøèôðîâàíèÿ áëîêà + * + * @param[in] plainText Èñõîäíûé áëîê + * @param[out] chipherText Çàøèôðîâàííûé áëîê + * @param[in] keys Ðàçâåðíóòûå êëþ÷è + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT Encrypt_14(unsigned char* plainText, unsigned char* chipherText, unsigned char* keys, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Âûïîëåíèå ðàñøèôðîâàíèÿ áëîêà + * + * @param[in] chipherText Çàøèôðîâàííûé áëîê + * @param[out] plainText Ðàñøèôðîâàííûé áëîê + * @param[in] keys Ðàçâåðíóòûå êëþ÷è + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT Decrypt_14(unsigned char* chipherText, unsigned char* plainText, unsigned char* keys, printout_byte_array print, printout_uint_array print_uint); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/GOST/28147_89.c b/src/GOST/28147_89.c new file mode 100644 index 0000000000000000000000000000000000000000..5cf2cc170208ae996da59605e6b2ed01bf982f9d --- /dev/null +++ b/src/GOST/28147_89.c @@ -0,0 +1,228 @@ +/** @file + * @brief Ðåàëèçàöèÿ àëãîðèòìà 28147-89 + * + * @copyright InfoTeCS. All rights reserved. + */ + +#include "28147_89.h" + +/** @brief Êîíâåðòèðóåò ìàññèâ áàéò â int32 + * + * @param[in] input ìàññèâ èç 4 áàéò + * @return int32 ÷èñëî + */ +static unsigned int uint8ToUint32(unsigned char* input) +{ + unsigned int r = ( (input[3]) | (input[2]<<8) | (input[1]<<16) | (input[0]<<24)); + return r; +} + +/** @brief Êîíâåðòèðóåò int32 â ìàññèâ áàéò + * + * @param[in] input int32 ÷èñëî + * @param[out] output ìàññèâ èç 4 áàéò + */ +static void uint32ToUint8(unsigned int input, unsigned char* output) +{ + int i; + for(i = 0; i < 4; ++i) + { + output[3-i] = ( ( input >> (8*i) ) & 0x000000ff ); + } +} + + +/** @brief Òàáëèöà ïîäñòàíîâêè id-tc26-gost-28147-param-Z OID: 1.2.643.7.1.2.5.1.1 */ +unsigned char p[8][16] = +{ + {0xc, 0x4, 0x6, 0x2, 0xa, 0x5, 0xb, 0x9, 0xe, 0x8, 0xd, 0x7, 0x0, 0x3, 0xf, 0x1}, + {0x6, 0x8, 0x2, 0x3, 0x9, 0xa, 0x5, 0xc, 0x1, 0xe, 0x4, 0x7, 0xb, 0xd, 0x0, 0xf}, + {0xb, 0x3, 0x5, 0x8, 0x2, 0xf, 0xa, 0xd, 0xe, 0x1, 0x7, 0x4, 0xc, 0x9, 0x6, 0x0}, + {0xc, 0x8, 0x2, 0x1, 0xd, 0x4, 0xf, 0x6, 0x7, 0x0, 0xa, 0x5, 0x3, 0xe, 0x9, 0xb}, + {0x7, 0xf, 0x5, 0xa, 0x8, 0x1, 0x6, 0xd, 0x0, 0x9, 0x3, 0xe, 0xb, 0x4, 0x2, 0xc}, + {0x5, 0xd, 0xf, 0x6, 0x9, 0x2, 0xc, 0xa, 0xb, 0x7, 0x8, 0x1, 0x4, 0x3, 0xe, 0x0}, + {0x8, 0xe, 0x2, 0x5, 0x6, 0x9, 0x1, 0xc, 0xf, 0x4, 0xb, 0x0, 0xd, 0xa, 0x3, 0x7}, + {0x1, 0x7, 0xe, 0xd, 0x0, 0x5, 0x8, 0x3, 0x4, 0xf, 0xa, 0x6, 0x9, 0xc, 0xb, 0x2} + +}; + +/** @brief èñïîëüçóåìûé áàéò êëþ÷à ïðè øèôðîâàíèè */ +unsigned char kEncRoundKey[32] = +{ + 0, 4, 8, 12, 16, 20, 24, 28, 0, 4, 8, 12, 16, 20, 24, 28, 0, 4, 8, 12, 16, 20, 24, 28, 28, 24, 20, 16, 12, 8, 4, 0 +}; + +/** @brief èñïîëüçóåìûé áàéò êëþ÷à ïðè ðàñøèôðîâàíèè */ +unsigned char kDecRoundKey[32] = +{ + 0, 4, 8, 12, 16, 20, 24, 28, 28, 24, 20, 16, 12, 8, 4, 0, 28, 24, 20, 16, 12, 8, 4, 0, 28, 24, 20, 16, 12, 8, 4, 0 +}; + +unsigned int DLL_IMPORT funcT(unsigned int a, printout_uint_array print) +{ + unsigned int res = 0; + + res ^= p[ 0 ][ a & 0x0000000f ]; + res ^= ( p[ 1 ][ ( ( a & 0x000000f0 ) >> 4 ) ] << 4 ); + res ^= ( p[ 2 ][ ( ( a & 0x00000f00 ) >> 8 ) ] << 8 ); + res ^= ( p[ 3 ][ ( ( a & 0x0000f000 ) >> 12 ) ] << 12 ); + res ^= ( p[ 4 ][ ( ( a & 0x000f0000 ) >> 16 ) ] << 16 ); + res ^= ( p[ 5 ][ ( ( a & 0x00f00000 ) >> 20 ) ] << 20 ); + res ^= ( p[ 6 ][ ( ( a & 0x0f000000 ) >> 24 ) ] << 24 ); + res ^= ( p[ 7 ][ ( ( a & 0xf0000000 ) >> 28 ) ] << 28 ); + + if(print) + { + print("funcT: a: ", &a, 1); + print("funcT: output: ", &res, 1); + } + + return res; +} + +unsigned int DLL_IMPORT funcG(unsigned int a, unsigned int k, printout_uint_array print) +{ + + unsigned int c = a + k; + unsigned int tmp = funcT(c, print); + unsigned int r = (tmp<<11) | (tmp >> 21); + + if(print) + { + print("funcG: a: ", &a, 1); + print("funcG: k: ", &k, 1); + print("funcG: output: ", &r, 1); + } + + return r; +} + +void DLL_IMPORT Round(unsigned int* a1, unsigned int* a0, unsigned int k, printout_uint_array print) +{ + unsigned int a; + unsigned int tmp; + + if(print) + { + print("Round: input a1: ", a1, 1); + print("Round: input a0: ", a0, 1); + print("Round: k: ", &k, 1); + } + + a = *a0; + tmp = funcG(*a0, k, print); + + *a0 = *a1 ^ tmp; + *a1 = a; + + if(print) + { + print("Round: output a1: ", a1, 1); + print("Round: output a0: ", a0, 1); + } +} + +void DLL_IMPORT RoundShtrih(unsigned int* a1, unsigned int* a0, unsigned int k, printout_uint_array print) +{ + unsigned int tmp; + + if(print) + { + print("RoundShtrih: input a1: ", a1, 1); + print("RoundShtrih: input a0: ", a0, 1); + print("RoundShtrih: k: ", &k, 1); + } + + tmp = funcG(*a0, k, print); + *a1 ^= tmp; + + if(print) + { + print("RoundShtrih: output a1: ", a1, 1); + print("RoundShtrih: output a0: ", a0, 1); + } +} + +int DLL_IMPORT CryptBlock(unsigned char* input, unsigned char* output, unsigned char* key, unsigned char* keyIndex, printout_uint_array print) +{ + unsigned int a1 = uint8ToUint32(input); + unsigned int a0 = uint8ToUint32(input + 4); + int i; + + if(print) + { + print("CryptBlock: input a1:", &a1, 1); + print("CryptBlock: input a0:", &a0, 1); + } + + + for(i = 0; i < 31; ++i) + { + Round(&a1, &a0, uint8ToUint32(key + keyIndex[i]), print); + } + + RoundShtrih(&a1, &a0, uint8ToUint32(key + keyIndex[31]), print); + + if(print) + { + print("CryptBlock: output a1:", &a1, 1); + print("CryptBlock: output a0:", &a0, 1); + } + + uint32ToUint8(a1, output); + uint32ToUint8(a0, output+4); + + return 0; +} + +int DLL_IMPORT EncryptBlock(unsigned char* input, unsigned char* output, unsigned char* key, printout_uint_array print) +{ + return CryptBlock(input, output, key, kEncRoundKey, print); +} + +int DLL_IMPORT DecryptBlock(unsigned char* input, unsigned char* output, unsigned char* key, printout_uint_array print) +{ + return CryptBlock(input, output, key, kDecRoundKey, print); +} + +int DLL_IMPORT Encrypt_89(unsigned char* input, unsigned char* output, unsigned char* key, printout_byte_array print, printout_uint_array print_uint) +{ + if( !input || !output || !key ) + { + if(print) + print("Encrypt_89: internal error!", 0, 0); + return -1; + } + + if(EncryptBlock(input, output, key, print_uint)) + return -1; + + if(print) + { + print("Encrypt_89: plain text: ", input, 8); + print("Encrypt_89: chipher text: ", output, 8); + } + + return 0; +} + +int DLL_IMPORT Decrypt_89(unsigned char* input, unsigned char* output, unsigned char* key, printout_byte_array print, printout_uint_array print_uint) +{ + if( !input || !output || !key ) + { + if(print) + print("Decrypt_89: internal error!", 0, 0); + return -1; + } + + if(DecryptBlock(input, output, key, print_uint)) + return -1; + + if(print) + { + print("Encrypt_89: chipher text: ", input, 8); + print("Encrypt_89: plain text: ", output, 8); + } + + return 0; +} diff --git a/src/GOST/28147_89.h b/src/GOST/28147_89.h new file mode 100644 index 0000000000000000000000000000000000000000..f4c2694c1153e370bcf427f9edb5733d5e156112 --- /dev/null +++ b/src/GOST/28147_89.h @@ -0,0 +1,114 @@ +/** @file + * @brief Îáúÿâëåíèå ôóíêöèé ðåàëèçóþùèõ ïðåîáðàçîâàíèÿ èç àëãîðèòìà "28147-89" + * + * @copyright InfoTeCS. All rights reserved. + */ + +#ifndef C_28147_89_H +#define C_28147_89_H + +#include "dll_import.h" +#include "callback_print.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @brief Ôóíêöèÿ ïîäñòàíîâêè + * + * @param[in] a âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return ðåçóëüòàò ïðåîáðàçîâàíèÿ + */ +unsigned int DLL_IMPORT funcT(unsigned int a, printout_uint_array print); + +/** @brief Ïðåîáðàçîâàíèå g Èç ñòàíäàðòà + * + * @param[in] a âõîäíîé ïàðàìåòð ïðåîáðàçîâàíèÿ + * @param[in] k êëþ÷ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return ðåçóëüòàò ïðåîáðàçîâàíèÿ + */ +unsigned int DLL_IMPORT funcG(unsigned int a, unsigned int k, printout_uint_array print); + +/** @brief Ïðåîáðàçîâàíèå G Èç ñòàíäàðòà + * + * @param[out] a1 óêàçàòåëü íà áóôåð, ãäå õðàíÿòñÿ äàííûå è êóäà áóäåò çàïèñàí ðåçóëüòàò + * @param[out] a0 óêàçàòåëü íà áóôåð, ãäå õðàíÿòñÿ äàííûå è êóäà áóäåò çàïèñàí ðåçóëüòàò + * @param[in] k êëþ÷ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + */ +void DLL_IMPORT Round(unsigned int* a1, unsigned int* a0, unsigned int k, printout_uint_array print); + +/** @brief Ïðåîáðàçîâàíèå G Èç ñòàíäàðòà ( íå ìåíÿÿ áëîêè à1 è à0 ìåñòàìè ) + * + * @param[out] a1 óêàçàòåëü íà áóôåð, ãäå õðàíÿòñÿ äàííûå è êóäà áóäåò çàïèñàí ðåçóëüòàò + * @param[out] a0 óêàçàòåëü íà áóôåð, ãäå õðàíÿòñÿ äàííûå è êóäà áóäåò çàïèñàí ðåçóëüòàò + * @param[in] k êëþ÷ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + */ +void DLL_IMPORT RoundShtrih(unsigned int *a1, unsigned int *a0, unsigned int k, printout_uint_array print); + +/** @brief Áàçîâîå êðèïòîãðàôè÷åñêîå ïðåîáðàçîâàíèå + * + * @param[in] input - ñîîáùåíèå ñ äëèíîþ ðàâíîé äëèíå áëîêà äàííûõ + * @param[out] output - ðåçóëüòàò îïåðàöèè + * @param[in] key êëþ÷ + * @param[in] keySequence ïîñëåäîâàòåëüíîñòü ïðèìåíåíèÿ êëþ÷åé + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT CryptBlock(unsigned char* input, unsigned char* output, unsigned char* key, unsigned char* keySequence, printout_uint_array print); + +/** @brief Øèôðóåì áëîê äàííûõ + * + * @param[in] input - áëîê äàííûõ îòêðûòûé òåêñò + * @param[out] output - çàøèôðîâàííûé áëîê äàííûõ + * @param[in] key êëþ÷ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT EncryptBlock(unsigned char* input, unsigned char* output, unsigned char* key, printout_uint_array print); + +/** @brief Ðàñøèôðîâûâàåì áëîê äàííûõ + * + * @param[in] input - çàøèôðîâàííûé áëîê äàííûõ + * @param[out] output - ðàñøèôðîâàííûé áëîê äàííûõ + * @param[in] key êëþ÷ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT DecryptBlock(unsigned char* input, unsigned char* output, unsigned char* key, printout_uint_array print); + +/** @brief Øèôðóåì áëîê äàííûõ + * + * @param[in] input - áëîê äàííûõ îòêðûòûé òåêñò + * @param[out] output - çàøèôðîâàííûé áëîê äàííûõ + * @param[in] key êëþ÷ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT Encrypt_89(unsigned char* input, unsigned char* output, unsigned char* key, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Ðàñøèôðîâûâàåì áëîê äàííûõ + * + * @param[in] input - çàøèôðîâàííûé áëîê äàííûõ + * @param[out] output - ðàñøèôðîâàííûé áëîê äàííûõ + * @param[in] key êëþ÷ + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT Decrypt_89(unsigned char* input, unsigned char* output, unsigned char* key, printout_byte_array print, printout_uint_array print_uint); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/GOST/block_chipher.c b/src/GOST/block_chipher.c new file mode 100644 index 0000000000000000000000000000000000000000..68b64bab746622b36bcbb7b42adf99b470e7c273 --- /dev/null +++ b/src/GOST/block_chipher.c @@ -0,0 +1,1916 @@ +/** @file +* @brief Ðåàëèçàöèÿ ðåæèìîâ ðàáîòû áëî÷íûõ àëãîðèòìîâ +* +* @copyright InfoTeCS. All rights reserved. +*/ + +#include <stdio.h> +#include <memory.h> +#include <malloc.h> +#include <stdlib.h> + +#include "28147_14.h" +#include "28147_89.h" +#include "block_chipher.h" + +/** @brief îïðåäåëåíèå âíóòðåííåãî àññåðòà */ +#define INFOTECS_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1] + +/** @brief ðàçìåð òåñòîâûõ äàííûõ äëÿ àëãîðèòìà "êóçíå÷èê" */ +#define textLen14 sizeof(kSeltTestGost14PlainText)/sizeof(kSeltTestGost14PlainText[0]) +/** @brief ðàçìåð òåñòîâûõ äàííûõ äëÿ àëãîðèòìà 28147-89 */ +#define textLen89 sizeof(kSeltTestGost89PlainText)/sizeof(kSeltTestGost89PlainText[0]) + +/** @brief Ïðèçíàê àëãîðèòìà "Êóçíå÷èê" */ +const unsigned char kAlg14 = 1; + +/** @brief Ïðèçíàê àëãîðèòìà 28147-89 */ +const unsigned char kAlg89 = 2; + +/** @brief óêàçàòåëü íà ôóíêöèþ øèôðîâàíèÿ */ +typedef int (DLL_IMPORT *pEncrypt)(unsigned char* plainText, unsigned char* chipherText, unsigned char* keys, printout_byte_array print, printout_uint_array print_uint); + +/** @brief óêàçàòåëü íà ôóíêöèþ ðàñøèôðîâàíèÿ */ +typedef int (DLL_IMPORT *pDecrypt)(unsigned char* chipherText, unsigned char* plainText, unsigned char* keys, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Ôóíêöèÿ ñàìîòåñòèðîâàíèÿ ðåæèìà ECB */ +static int SelfTestGost14Ecb(); + +/** @brief Ôóíêöèÿ ñàìîòåñòèðîâàíèÿ ðåæèìà ECB */ +static int SelfTestGost89Ecb(); + +/** @brief Ôóíêöèÿ ñàìîòåñòèðîâàíèÿ ðåæèìà CTR */ +static int SelfTestGost14Ctr(); + +/** @brief Ôóíêöèÿ ñàìîòåñòèðîâàíèÿ ðåæèìà CTR */ +static int SelfTestGost89Ctr(); + +/** @brief Ôóíêöèÿ ñàìîòåñòèðîâàíèÿ ðåæèìà OFB */ +static int SelfTestGost14Ofb(); + +/** @brief Ôóíêöèÿ ñàìîòåñòèðîâàíèÿ ðåæèìà OFB */ +static int SelfTestGost89Ofb(); + +/** @brief Ôóíêöèÿ ñàìîòåñòèðîâàíèÿ ðåæèìà CBC */ +static int SelfTestGost14Cbc(); + +/** @brief Ôóíêöèÿ ñàìîòåñòèðîâàíèÿ ðåæèìà CBC */ +static int SelfTestGost89Cbc(); + +/** @brief Ôóíêöèÿ ñàìîòåñòèðîâàíèÿ ðåæèìà CFB */ +static int SelfTestGost14Cfb(); + +/** @brief Ôóíêöèÿ ñàìîòåñòèðîâàíèÿ ðåæèìà CFB */ +static int SelfTestGost89Cfb(); + +/** @brief Ôóíêöèÿ ñàìîòåñòèðîâàíèÿ ðåæèìà èìèòîâñòàâêè */ +static int SelfTestGost14Imit(); + +/** @brief Ôóíêöèÿ ñàìîòåñòèðîâàíèÿ ðåæèìà èìèòîâñòàâêè */ +static int SelfTestGost89Imit(); + +/** @brief Ñäâèã âëåâî íà 1 áèò */ +static void ShifttLeftOne(unsigned char *r, size_t length); + +/** @brief Êîíòåêñò ECB */ +typedef struct +{ + unsigned char Alg; /**< èäåíòèôèêàòîð àëãîðèòìà */ + unsigned char* Keys; /**< êëþ÷ */ + unsigned int BlockLen; /**< ðàçìåð áëîêà */ + printout_byte_array PrintByteArray; /**< ôóíêöèÿ ëîãèðîâàíèÿ */ + printout_uint_array PrintUIntArray; /**< ôóíêöèÿ ëîãèðîâàíèÿ */ + pEncrypt EncryptFunc; /**< ôóíêöèÿ øèôðîâàíèÿ */ + pDecrypt DecryptFunc; /**< ôóíêöèÿ ðàñøèôðîâàíèÿ */ +} Context_ecb; + +/** @brief Êîíòåêñò CTR */ +typedef struct +{ + unsigned char Alg; /**< èäåíòèôèêàòîð àëãîðèòìà */ + unsigned char* Counter; /**< ñ÷åò÷èê */ + unsigned char* Keys; /**< êëþ÷ */ + size_t S; /**< ðàçìåð ñèíõðîïîñûëêè */ + size_t BlockLen; /**< ðàçìåð áëîêà */ + printout_byte_array PrintByteArray; /**< ôóíêöèÿ ëîãèðîâàíèÿ */ + printout_uint_array PrintUIntArray; /**< ôóíêöèÿ ëîãèðîâàíèÿ */ + pEncrypt EncryptFunc; /**< ôóíêöèÿ øèôðîâàíèÿ */ + unsigned char *tmpblock; /**< âðåìåííûé áëîê */ +} Context_ctr; + +/** @brief Êîíòåêñò OFB */ +typedef struct +{ + unsigned char Alg; /**< èäåíòèôèêàòîð àëãîðèòìà */ + unsigned char* IV; /**< ñèíõðîïîñûëêà */ + unsigned char* Keys; /**< êëþ÷ */ + size_t M; /**< ðàçìåð ñèíõðïîñûëêè */ + size_t S; /**< ïàðàìåòð S */ + size_t BlockLen; /**< ðàçìåð áëîêà */ + printout_byte_array PrintByteArray; /**< ôóíêöèÿ ëîãèðîâàíèÿ */ + printout_uint_array PrintUIntArray; /**< ôóíêöèÿ ëîãèðîâàíèÿ */ + pEncrypt EncryptFunc; /**< ôóíêöèÿ øèôðîâàíèÿ */ + pDecrypt DecryptFunc; /**< ôóíêöèÿ ðàñøèôðîâàíèÿ */ + unsigned char *tmpblock; /**< âðåìåííûé áëîê */ + unsigned char* nextIV; /**< ñèíõðîïîñûëêà äëÿ ñëåäóþùåãî áëîêà */ +} Context_ofb; + +/** @brief Êîíòåêñò CFB */ +typedef struct +{ + unsigned char Alg; /**< èäåíòèôèêàòîð àëãîðèòìà */ + unsigned char* IV; /**< ñèíõðîïîñûëêà */ + unsigned char* Keys; /**< êëþ÷ */ + size_t M; /**< ðàçìåð ñèíõðïîñûëêè */ + size_t S; /**< ïàðàìåòð S */ + size_t BlockLen; /**< ðàçìåð áëîêà */ + printout_byte_array PrintByteArray; /**< ôóíêöèÿ ëîãèðîâàíèÿ */ + printout_uint_array PrintUIntArray; /**< ôóíêöèÿ ëîãèðîâàíèÿ */ + pEncrypt EncryptFunc; /**< ôóíêöèÿ øèôðîâàíèÿ */ + pDecrypt DecryptFunc; /**< ôóíêöèÿ ðàñøèôðîâàíèÿ */ + unsigned char *tmpblock; /**< âðåìåííûé áëîê */ + unsigned char* nextIV; /**< ñèíõðîïîñûëêà äëÿ ñëåäóþùåãî áëîêà */ +} Context_cfb; + +/** @brief Êîíòåêñò CBC */ +typedef struct +{ + unsigned char Alg; /**< èäåíòèôèêàòîð àëãîðèòìà */ + unsigned char* IV; /**< ñèíõðîïîñûëêà */ + unsigned char* Keys; /**< êëþ÷ */ + size_t BlockLen; /**< ðàçìåð áëîêà */ + size_t M; /**< ðàçìåð ñèíõðïîñûëêè */ + printout_byte_array PrintByteArray; /**< ôóíêöèÿ ëîãèðîâàíèÿ */ + printout_uint_array PrintUIntArray; /**< ôóíêöèÿ ëîãèðîâàíèÿ */ + pEncrypt EncryptFunc; /**< ôóíêöèÿ øèôðîâàíèÿ */ + pDecrypt DecryptFunc; /**< ôóíêöèÿ ðàñøèôðîâàíèÿ */ + unsigned char* nextIV; /**< ñèíõðîïîñûëêà äëÿ ñëåäóþùåãî áëîêà */ + unsigned char* tempIV; /**< äëÿ âðåìåííîãî õðàíåíèÿ çíà÷åíèÿ ñèíõðîïîñûëêè */ + unsigned char *tmpblock; /**< âðåìåííûé áëîê */ +} Context_cbc; + +/** @brief Êîíòåêñò èìèòîâñòàâêè */ +typedef struct +{ + unsigned char Alg; /**< èäåíòèôèêàòîð àëãîðèòìà */ + unsigned char* Keys; /**< êëþ÷ */ + unsigned char* K1; /**< âñïîìîãàòåëüíûé ïàðàìåòð K1 */ + unsigned char* K2; /**< âñïîìîãàòåëüíûé ïàðàìåòð K2 */ + unsigned char* B; /**< âñïîìîãàòåëüíûé ïàðàìåòð B */ + unsigned char* R; /**< âñïîìîãàòåëüíûé ïàðàìåòð R */ + unsigned char* C; /**< âñïîìîãàòåëüíûé ïàðàìåòð C */ + unsigned char* LastBlock; /**< ïðåäûäóùèé áëîê */ + size_t S; /**< ïàðàìåòð S */ + size_t BlockLen; /**< ðàçìåð áëîêà */ + size_t LastBlockSize; /**< ðàçìåð ïðåäûäóùåãî áëîêà */ + int isFistBlock; /**< èäåíòèôèêàòîð ïåðâîãî áëîêà */ + printout_byte_array PrintByteArray; /**< ôóíêöèÿ ëîãèðîâàíèÿ */ + printout_uint_array PrintUIntArray; /**< ôóíêöèÿ ëîãèðîâàíèÿ */ + pEncrypt EncryptFunc; /**< ôóíêöèÿ øèôðîâàíèÿ */ + unsigned char *tmpblock; /**< âðåìåííûé áëîê */ + unsigned char *resimit; /**< èìèòîâñòàâêà */ +} Context_imit; + +static int init_ecb_14_impl(unsigned char *key, void* ctx, printout_byte_array print, printout_uint_array print_uint) +{ + Context_ecb* context = 0; + INFOTECS_ASSERT(sizeof(Context_ecb)<=kEcb14ContextLen); + + if(!ctx || !key) + return -1; + + context = (Context_ecb*)ctx; + + context->Alg = kAlg14; + context->EncryptFunc = Encrypt_14; + context->DecryptFunc = Decrypt_14; + context->BlockLen = kBlockLen14; + + context->PrintByteArray = print; + context->PrintUIntArray = print_uint; + + context->Keys = (unsigned char*)malloc(10 * kBlockLen14); + if( !context->Keys ) + return -1; + memset(context->Keys, 0, 10 * kBlockLen14); + + ExpandKey(key, context->Keys, print); + return 0; +} + +int DLL_IMPORT init_ecb_14(unsigned char *key, void* ctx, printout_byte_array print, printout_uint_array print_uint) +{ + if(SelfTestGost14Ecb()) + return -1; + + return init_ecb_14_impl(key, ctx, print, print_uint); +} + +static int init_ecb_89_impl(unsigned char *key, void* ctx, printout_byte_array print, printout_uint_array print_uint) +{ + Context_ecb* context; + INFOTECS_ASSERT(sizeof(Context_ecb)<=kEcb89ContextLen); + + if(!ctx || !key) + return -1; + + context = (Context_ecb*)ctx; + + context->Alg = kAlg89; + + context->PrintByteArray = print; + context->PrintUIntArray = print_uint; + + context->EncryptFunc = Encrypt_89; + context->DecryptFunc = Decrypt_89; + context->BlockLen = kBlockLen89; + + context->Keys = (unsigned char*)malloc(kKeyLen89); + if( !context->Keys ) + return -1; + memcpy(context->Keys, key, kKeyLen89); + + return 0; +} + +int DLL_IMPORT init_ecb_89(unsigned char *key, void* ctx, printout_byte_array print, printout_uint_array print_uint) +{ + if(SelfTestGost89Ecb()) + return -1; + return init_ecb_89_impl(key, ctx, print, print_uint); +} + +void DLL_IMPORT free_ecb(void* ctx) +{ + Context_ecb* context; + + if(!ctx) + return; + + context = (Context_ecb*)(ctx); + + if(context->Keys) + { + free(context->Keys); + context->Keys = 0; + } +} + +static int init_cbc_14_impl(unsigned char *key, void* ctx, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint) +{ + Context_cbc* context; + INFOTECS_ASSERT(sizeof(Context_cbc)<=kCbc14ContextLen); + + if(!ctx || !key || !iv || (ivLength % kBlockLen14)) + return -1; + + context = (Context_cbc*)ctx; + + context->Alg = kAlg14; + + context->PrintByteArray = print; + context->PrintUIntArray = print_uint; + + context->EncryptFunc = Encrypt_14; + context->DecryptFunc = Decrypt_14; + + context->BlockLen = kBlockLen14; + + context->M = ivLength; + + context->IV = (unsigned char*)malloc(ivLength); + context->Keys = (unsigned char*)malloc(10 * kBlockLen14); + context->tempIV = (unsigned char*)malloc(context->M); + context->nextIV = (unsigned char*)malloc(context->M); + context->tmpblock = (unsigned char *)malloc(kBlockLen14); + if( !context->IV || !context->Keys || !context->tempIV || !context->nextIV || !context->tmpblock ) + return -1; + + memcpy(context->IV, iv, ivLength); + memset(context->Keys, 0, 10 * kBlockLen14); + + ExpandKey(key, context->Keys, print); + return 0; +} + +int DLL_IMPORT init_cbc_14(unsigned char *key, void* ctx, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint) +{ + if(SelfTestGost14Cbc()) + return -1; + return init_cbc_14_impl(key, ctx, iv, ivLength, print, print_uint); +} + +static int init_cbc_89_impl(unsigned char *key, void* ctx, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint) +{ + Context_cbc* context; + INFOTECS_ASSERT(sizeof(Context_cbc)<=kCbc89ContextLen); + + if(!ctx || !key || !iv || (ivLength % kBlockLen89)) + return -1; + + context = (Context_cbc*)ctx; + + context->Alg = kAlg89; + + context->PrintByteArray = print; + context->PrintUIntArray = print_uint; + + context->EncryptFunc = Encrypt_89; + context->DecryptFunc = Decrypt_89; + + context->BlockLen = kBlockLen89; + + context->M = ivLength; + + context->IV = (unsigned char*)malloc(ivLength); + context->Keys = (unsigned char*)malloc(kKeyLen89); + context->tempIV = (unsigned char*)malloc(context->M); + context->nextIV = (unsigned char*)malloc(context->M); + context->tmpblock = (unsigned char *)malloc(kBlockLen89); + + if( !context->IV || !context->Keys || !context->tempIV || !context->nextIV || !context->tmpblock ) + return -1; + + memcpy(context->IV, iv, ivLength); + memcpy(context->Keys, key, kKeyLen89); + + return 0; +} + +int DLL_IMPORT init_cbc_89(unsigned char *key, void* ctx, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint) +{ + if(SelfTestGost89Cbc()) + return -1; + return init_cbc_89_impl(key, ctx, iv, ivLength, print, print_uint); +} + +void DLL_IMPORT free_cbc(void* ctx) +{ + Context_cbc* context; + + if(!ctx) + return; + + context = (Context_cbc*)ctx; + + if(context->Keys) + { + free(context->Keys); + context->Keys = 0; + } + + if(context->IV) + { + free(context->IV); + context->IV = 0; + } + + if(context->tempIV) + { + free(context->tempIV); + context->tempIV = 0; + } + if(context->nextIV) + { + free(context->nextIV); + context->nextIV = 0; + } + if(context->tmpblock) + { + free(context->tmpblock); + context->tmpblock = 0; + } +} + +static int init_ctr_14_impl(unsigned char* key, unsigned char *iv, size_t s, void *ctx, printout_byte_array print, printout_uint_array print_uint) +{ + Context_ctr* context; + INFOTECS_ASSERT(sizeof(Context_ctr)<=kCtr14ContextLen); + + if(!ctx || !key || s > kBlockLen14) + return -1; + + context = (Context_ctr*)ctx; + + context->Alg = kAlg14; + + context->PrintByteArray = print; + context->PrintUIntArray = print_uint; + + context->EncryptFunc = Encrypt_14; + + context->BlockLen = kBlockLen14; + + context->S = s; + + context->tmpblock = (unsigned char*)malloc(kBlockLen14); + context->Keys = (unsigned char*)malloc(10*kBlockLen14); + context->Counter = (unsigned char*)malloc(kBlockLen14); + if( !context->tmpblock || !context->Keys || !context->Counter ) + return -1; + + memset(context->Keys, 0, 10 * kBlockLen14); + ExpandKey(key, context->Keys, print); + + memset(context->Counter, 0, kBlockLen14); + memcpy(context->Counter, iv, kBlockLen14/2); + + return 0; +} + +int DLL_IMPORT init_ctr_14(unsigned char* key, unsigned char *iv, size_t s, void *ctx, printout_byte_array print, printout_uint_array print_uint) +{ + if(SelfTestGost14Ctr()) + return -1; + return init_ctr_14_impl(key, iv, s, ctx, print, print_uint); +} + +static int init_ctr_89_impl(unsigned char* key, unsigned char *iv, size_t s, void *ctx, printout_byte_array print, printout_uint_array print_uint) +{ + Context_ctr* context; + INFOTECS_ASSERT(sizeof(Context_ctr)<=kCtr89ContextLen); + + if(!ctx || !key || s > kBlockLen89) + return -1; + + context = (Context_ctr*)ctx; + + context->Alg = kAlg89; + + context->PrintByteArray = print; + context->PrintUIntArray = print_uint; + + context->EncryptFunc = Encrypt_89; + + context->BlockLen = kBlockLen89; + + context->S = s; + + context->tmpblock = (unsigned char*)malloc(kKeyLen89); + context->Keys = (unsigned char*)malloc(kKeyLen89); + context->Counter = (unsigned char*)malloc(kBlockLen89); + + if( !context->tmpblock || !context->Keys || !context->Counter ) + return -1; + + memcpy(context->Keys, key, kKeyLen89); + memset(context->Counter, 0, kBlockLen89); + memcpy(context->Counter, iv, kBlockLen89/2); + + return 0; +} + +int DLL_IMPORT init_ctr_89(unsigned char* key, unsigned char *iv, size_t s, void *ctx, printout_byte_array print, printout_uint_array print_uint) +{ + if(SelfTestGost89Ctr()) + return -1; + return init_ctr_89_impl(key, iv, s, ctx, print, print_uint); +} + +void DLL_IMPORT free_ctr(void* ctx) +{ + Context_ctr* context; + + if(!ctx) + return; + + context = (Context_ctr*)ctx; + + if(context->Keys) + { + free(context->Keys); + context->Keys = 0; + } + + if(context->Counter) + { + free(context->Counter); + context->Counter = 0; + } + + if(context->tmpblock) + { + free(context->tmpblock); + context->tmpblock = 0; + } +} + +static int init_ofb_14_impl(unsigned char *key, void *ctx, size_t s, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint) +{ + Context_ofb* context; + INFOTECS_ASSERT(sizeof(Context_ofb)<=kOfb14ContextLen); + + if(!ctx || !key || s > kBlockLen14 || (ivLength % kBlockLen14) || !ivLength || !s) + return -1; + + context = (Context_ofb*)ctx; + + context->Alg = kAlg14; + + context->PrintByteArray = print; + context->PrintUIntArray = print_uint; + + context->EncryptFunc = Encrypt_14; + context->DecryptFunc = Decrypt_14; + + context->BlockLen = kBlockLen14; + + context->IV = (unsigned char*)malloc(ivLength); + context->tmpblock = (unsigned char*)malloc(kBlockLen14); + context->nextIV = (unsigned char*)malloc(ivLength); + context->Keys = (unsigned char*)malloc(10*kBlockLen14); + + if( !context->IV || !context->tmpblock || !context->nextIV || !context->Keys ) + return -1; + + memcpy(context->IV, iv, ivLength); + + context->M = ivLength; + + context->S = s; + + memset(context->Keys, 0, 10*kBlockLen14); + ExpandKey(key, context->Keys, print); + + return 0; +} + +int DLL_IMPORT init_ofb_14(unsigned char *key, void *ctx, size_t s, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint) +{ + if(SelfTestGost14Ofb()) + return -1; + return init_ofb_14_impl(key, ctx, s, iv, ivLength, print, print_uint); +} + +static int init_ofb_89_impl(unsigned char *key, void *ctx, size_t s, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint) +{ + Context_ofb* context; + INFOTECS_ASSERT(sizeof(Context_ofb)<=kOfb89ContextLen); + + if(!ctx || !key || s > kBlockLen89 || (ivLength % kBlockLen89) || !ivLength || !s) + return -1; + + context = (Context_ofb*)ctx; + + context->Alg = kAlg89; + + context->PrintByteArray = print; + context->PrintUIntArray = print_uint; + + context->EncryptFunc = Encrypt_89; + context->DecryptFunc = Decrypt_89; + + context->BlockLen = kBlockLen89; + + context->IV = (unsigned char*)malloc(ivLength); + context->tmpblock = (unsigned char*)malloc(kBlockLen89); + context->nextIV = (unsigned char*)malloc(ivLength); + context->Keys = (unsigned char*)malloc(kKeyLen89); + if( !context->IV || !context->tmpblock || !context->nextIV || !context->Keys ) + return -1; + + memcpy(context->IV, iv, ivLength); + + context->M = ivLength; + + context->S = s; + + memcpy(context->Keys, key, kKeyLen89); + + return 0; +} + +int DLL_IMPORT init_ofb_89(unsigned char *key, void *ctx, size_t s, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint) +{ + if(SelfTestGost89Ofb()) + return -1; + return init_ofb_89_impl(key, ctx, s, iv, ivLength, print, print_uint); +} + +void DLL_IMPORT free_ofb(void* ctx) +{ + Context_ofb* context; + + if(!ctx) + return; + + context = (Context_ofb*)ctx; + + if(context->Keys) + { + free(context->Keys); + context->Keys = 0; + } + + if(context->IV) + { + free(context->IV); + context->IV = 0; + } + + if(context->tmpblock) + { + free(context->tmpblock); + context->tmpblock = 0; + } + + if(context->nextIV) + { + free(context->nextIV); + context->nextIV = 0; + } + +} + +static int init_cfb_14_impl(unsigned char *key, void *ctx, size_t s, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint) +{ + Context_cfb* context; + INFOTECS_ASSERT(sizeof(Context_cfb)<=kCfb14ContextLen); + + if(!ctx || !key || s > kBlockLen14 || (ivLength % kBlockLen14) || !ivLength || !s) + return -1; + + context = (Context_cfb*)ctx; + + context->Alg = kAlg14; + + context->PrintByteArray = print; + context->PrintUIntArray = print_uint; + + context->EncryptFunc = Encrypt_14; + context->DecryptFunc = Decrypt_14; + + context->BlockLen = kBlockLen14; + + context->IV = (unsigned char*)malloc(ivLength); + context->tmpblock = (unsigned char*)malloc(kBlockLen14); + context->nextIV = (unsigned char*)malloc(ivLength); + context->Keys = (unsigned char*)malloc(10 * kBlockLen14); + if( !context->IV || !context->tmpblock || !context->nextIV || !context->Keys ) + return -1; + + memcpy(context->IV, iv, ivLength); + + context->M = ivLength; + + context->S = s; + + memset(context->Keys, 0, 10 * kBlockLen14); + ExpandKey(key, context->Keys, print); + + return 0; +} + +int DLL_IMPORT init_cfb_14(unsigned char *key, void *ctx, size_t s, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint) +{ + if(SelfTestGost14Cfb()) + return -1; + return init_cfb_14_impl(key, ctx, s, iv, ivLength, print, print_uint); +} + +static int init_cfb_89_impl(unsigned char *key, void *ctx, size_t s, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint) +{ + Context_cfb* context; + INFOTECS_ASSERT(sizeof(Context_cfb)<=kCfb89ContextLen); + + if(!ctx || !key || s > kBlockLen89 || (ivLength % kBlockLen89) || !ivLength || !s) + return -1; + + context = (Context_cfb*)ctx; + + context->Alg = kAlg89; + + context->PrintByteArray = print; + context->PrintUIntArray = print_uint; + + context->EncryptFunc = Encrypt_89; + context->DecryptFunc = Decrypt_89; + + context->BlockLen = kBlockLen89; + + context->IV = (unsigned char*)malloc(ivLength); + context->tmpblock = (unsigned char*)malloc(kBlockLen89); + context->nextIV = (unsigned char*)malloc(ivLength); + context->Keys = (unsigned char*)malloc(kKeyLen89); + if( !context->IV || !context->tmpblock || !context->nextIV || !context->Keys ) + return -1; + + memcpy(context->IV, iv, ivLength); + + context->M = ivLength; + + context->S = s; + + memcpy(context->Keys, key, kKeyLen89); + + return 0; +} + +int DLL_IMPORT init_cfb_89(unsigned char *key, void *ctx, size_t s, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint) +{ + if(SelfTestGost89Cfb()) + return -1; + return init_cfb_89_impl(key, ctx, s, iv, ivLength, print, print_uint); +} + +void DLL_IMPORT free_cfb(void* ctx) +{ + Context_cfb* context; + + if(!ctx) + return; + + context = (Context_cfb*)ctx; + + if(context->Keys) + { + free(context->Keys); + context->Keys = 0; + } + + if(context->IV) + { + free(context->IV); + context->IV = 0; + } + + if(context->tmpblock) + { + free(context->tmpblock); + context->tmpblock = 0; + } + + if(context->nextIV) + { + free(context->nextIV); + context->nextIV = 0; + } + +} + +static int ExpandImitKey(unsigned char *key, void *ctx) +{ + Context_imit* context; + + int r; + size_t i; + + if(!ctx || !key) + return -1; + + context = (Context_imit*)ctx; + + memset(context->tmpblock, 0, context->BlockLen); + + context->EncryptFunc(context->tmpblock, context->R, context->Keys, context->PrintByteArray, context->PrintUIntArray); + + r = ((context->R[0] & 0x80) == 0x80); + + ShifttLeftOne(context->R, context->BlockLen); + + if(r == 1) + { + for(i = 0; i < context->BlockLen; ++i) + { + context->K1[i] = context->R[i] ^ context->B[i]; + } + } + else + { + memcpy(context->K1, context->R, context->BlockLen); + } + + memcpy(context->tmpblock, context->K1, context->BlockLen); + + ShifttLeftOne(context->tmpblock, context->BlockLen); + + if((context->K1[0] & 0x80) == 0x80) + { + for(i = 0; i < context->BlockLen; ++i) + { + context->K2[i] = context->tmpblock[i] ^ context->B[i]; + } + } + else + { + memcpy(context->K2, context->tmpblock, context->BlockLen); + } + + return 0; +} + +static int init_imit_14_impl(unsigned char *key, size_t s, void *ctx, printout_byte_array print, printout_uint_array print_uint) +{ + Context_imit* context; + INFOTECS_ASSERT(sizeof(Context_imit)<=kImit14ContextLen); + + if(!ctx || !key || s > kBlockLen14 || !s) + return -1; + + context = (Context_imit*)ctx; + + context->Alg = kAlg14; + + context->PrintByteArray = print; + context->PrintUIntArray = print_uint; + + context->EncryptFunc = Encrypt_14; + + context->BlockLen = kBlockLen14; + context->S = s; + + context->Keys = (unsigned char*)malloc(10 * kBlockLen14); + context->R = (unsigned char*)malloc(kBlockLen14); + context->B = (unsigned char*)malloc(kBlockLen14); + context->K1 = (unsigned char*)malloc(kBlockLen14); + context->K2 = (unsigned char*)malloc(kBlockLen14); + context->C = (unsigned char*)malloc(kBlockLen14); + context->LastBlock = (unsigned char*)malloc(kBlockLen14); + context->tmpblock = (unsigned char*)malloc(kBlockLen14); + context->resimit = (unsigned char*)malloc(kBlockLen14); + if( !context->Keys || !context->R || !context->B + || !context->K1 || !context->K2 || !context->C + || !context->LastBlock || !context->tmpblock || !context->resimit ) + return -1; + + memset(context->Keys, 0, 10 * kBlockLen14); + + ExpandKey(key, context->Keys, print); + + memset(context->R, 0, kBlockLen14); + + memset(context->B, 0, kBlockLen14); + context->B[kBlockLen14-1] = 0x87; + + memset(context->K1, 0, kBlockLen14); + + memset(context->K2, 0, kBlockLen14); + + memset(context->C, 0, kBlockLen14); + + memset(context->LastBlock, 0, kBlockLen14); + + context->LastBlockSize = 0; + + context->isFistBlock = 1; + + ExpandImitKey(key, ctx); + + + return 0; +} + +int DLL_IMPORT init_imit_14(unsigned char *key, size_t s, void *ctx, printout_byte_array print, printout_uint_array print_uint) +{ + if(SelfTestGost14Imit()) + return -1; + return init_imit_14_impl(key, s, ctx, print, print_uint); +} + +static int init_imit_89_impl(unsigned char *key, size_t s, void *ctx, printout_byte_array print, printout_uint_array print_uint) +{ + Context_imit* context; + INFOTECS_ASSERT(sizeof(Context_imit)<=kImit89ContextLen); + + if(!ctx || !key || s > kBlockLen89 || !s) + return -1; + + context = (Context_imit*)ctx; + + context->Alg = kAlg89; + + context->PrintByteArray = print; + context->PrintUIntArray = print_uint; + + context->EncryptFunc = Encrypt_89; + + context->BlockLen = kBlockLen89; + context->S = s; + + context->Keys = (unsigned char*)malloc(kKeyLen89); + context->R = (unsigned char*)malloc(kBlockLen89); + context->B = (unsigned char*)malloc(kBlockLen89); + context->K1 = (unsigned char*)malloc(kBlockLen89); + context->K2 = (unsigned char*)malloc(kBlockLen89); + context->C = (unsigned char*)malloc(kBlockLen89); + context->LastBlock = (unsigned char*)malloc(kBlockLen89); + context->tmpblock = (unsigned char*)malloc(kBlockLen89); + context->resimit = (unsigned char*)malloc(kBlockLen89); + if( !context->Keys || !context->R || !context->B + || !context->K1 || !context->K2 || !context->C + || !context->LastBlock || !context->tmpblock || !context->resimit ) + return -1; + + memcpy(context->Keys, key, kKeyLen89); + + memset(context->R, 0, kBlockLen89); + + memset(context->B, 0, kBlockLen89); + context->B[kBlockLen89-1] = 0x1B; + + memset(context->K1, 0, kBlockLen89); + + memset(context->K2, 0, kBlockLen89); + + memset(context->C, 0, kBlockLen89); + + memset(context->LastBlock, 0, kBlockLen89); + + context->LastBlockSize = 0; + + context->isFistBlock = 1; + + ExpandImitKey(key, ctx); + + return 0; +} + +int DLL_IMPORT init_imit_89(unsigned char *key, size_t s, void *ctx, printout_byte_array print, printout_uint_array print_uint) +{ + if(SelfTestGost89Imit()) + return -1; + return init_imit_89_impl(key, s, ctx, print, print_uint); +} + +void DLL_IMPORT free_imit(void* ctx) +{ + Context_imit* context; + + if(!ctx) + return; + + context = (Context_imit*)ctx; + + if(context->Keys) + { + free(context->Keys); + context->Keys = 0; + } + + if(context->R) + { + free(context->R); + context->R = 0; + } + + if(context->B) + { + free(context->B); + context->B = 0; + } + + if(context->K1) + { + free(context->K1); + context->K1 = 0; + } + + if(context->K2) + { + free(context->K2); + context->K2 = 0; + } + + if(context->C) + { + free(context->C); + context->C = 0; + } + + if(context->LastBlock) + { + free(context->LastBlock); + context->LastBlock = 0; + } + + if(context->tmpblock) + { + free(context->tmpblock); + context->tmpblock = 0; + } + + if(context->resimit) + { + free(context->resimit); + context->resimit = 0; + } + +} + +int DLL_IMPORT encrypt_ecb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length) +{ + Context_ecb* context; + unsigned char* block; + size_t i; + + if(!ctx || !indata || !outdata) + return -1; + + context = (Context_ecb*)ctx; + + if(!length || (length % context->BlockLen)) + return -1; + + block = outdata; + for(i = 0; i < (length / context->BlockLen) ; ++i) + { + context->EncryptFunc(indata, block, context->Keys, context->PrintByteArray, context->PrintUIntArray); + indata += context->BlockLen; + block += context->BlockLen; + } + return 0; +} + +int DLL_IMPORT decrypt_ecb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length) +{ + Context_ecb* context; + size_t i; + + if(!ctx || !indata || !outdata) + return -1; + + context = (Context_ecb*)ctx; + + if(!length || (length % context->BlockLen)) + return -1; + + for(i = 0; i < (length / context->BlockLen) ; ++i) + { + context->DecryptFunc(indata, outdata, context->Keys, context->PrintByteArray, context->PrintUIntArray); + indata += context->BlockLen; + outdata += context->BlockLen; + } + return 0; +} + +static void PackBlock(unsigned char* a, size_t aLen, unsigned char* b, unsigned char* r, size_t rLen) +{ + memcpy(r, a, aLen); + memcpy(r + aLen, b, rLen - aLen); +} + +int DLL_IMPORT encrypt_cbc(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length) +{ + Context_cbc* context; + size_t i, j; + + if(!ctx || !indata || !outdata) + return -1; + + context = (Context_cbc*)ctx; + + if(!length || (length % context->BlockLen)) + return -1; + + memcpy(context->tempIV, context->IV, context->M); + + for(i = 0; i < (length / context->BlockLen); ++i) + { + for(j = 0; j < context->BlockLen; ++j) + { + context->tmpblock[j] = context->tempIV[j] ^ indata[j]; + } + + context->EncryptFunc(context->tmpblock, outdata, context->Keys, context->PrintByteArray, context->PrintUIntArray); + indata += context->BlockLen; + + PackBlock(context->tempIV+context->BlockLen, context->M - context->BlockLen, outdata, context->nextIV,context->M); + outdata += context->BlockLen; + memcpy(context->tempIV, context->nextIV,context->M); + } + + return 0; +} + +int DLL_IMPORT decrypt_cbc(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length) +{ + Context_cbc* context; + size_t i, j; + + if(!ctx || !indata || !outdata) + return -1; + + context = (Context_cbc*)ctx; + + if(!length || ((length % context->BlockLen))) + return -1; + + memcpy(context->tempIV, context->IV, context->M); + + for(i = 0; i < (length / context->BlockLen); ++i) + { + context->DecryptFunc(indata, outdata, context->Keys, context->PrintByteArray, context->PrintUIntArray); + + for(j = 0; j < context->BlockLen; ++j) + { + outdata[j] ^= context->tempIV[j]; + } + + outdata += context->BlockLen; + + PackBlock(context->tempIV + context->BlockLen, context->M - context->BlockLen, indata, context->nextIV, context->M) ; + + memcpy(context->tempIV, context->nextIV, context->M); + + indata += context->BlockLen; + } + + return 0; +} + +static void IncrementModulo(unsigned char* value, size_t size) +{ + size_t lastIndex = size - 1; + size_t i; + + for(i = 0; i < size; ++i) + { + if( value[lastIndex - i] > 0xfe ) + { + value[lastIndex - i] -= 0xff; + } + else + { + ++value[lastIndex - i]; + break; + } + } +} + +int DLL_IMPORT crypt_ctr(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length) +{ + Context_ctr* context; + size_t i; + size_t j; + + if(!indata || !outdata || !ctx || !length) + return -1; + + context = (Context_ctr*)ctx; + + if( context->S == 0) + return -1; + + for(i = 0; i < (length / context->S); ++i) + { + context->EncryptFunc(context->Counter, context->tmpblock, context->Keys, context->PrintByteArray, context->PrintUIntArray); + + for(j = 0; j < context->S; ++j) + { + outdata[j] = indata[j] ^ context->tmpblock[j]; + } + outdata+= context->S; + indata+= context->S; + IncrementModulo(context->Counter, context->BlockLen); + } + + if( (length % context->S) != 0 ) + { + context->EncryptFunc(context->Counter, &context->tmpblock[0], context->Keys, context->PrintByteArray, context->PrintUIntArray); + + for(j = 0; j < (length % context->S); ++j) + { + outdata[j] = indata[j] ^ context->tmpblock[j]; + } + IncrementModulo(context->Counter, context->BlockLen); + context->S = 0; + } + return 0; +} + +int DLL_IMPORT crypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length) +{ + Context_ofb* context; + size_t i, j; + + if(!indata || !outdata || !ctx || !length) + return -1; + + context = (Context_ofb*)ctx; + + if( context->S == 0 ) + return -1; + + for(i = 0; i < (length / context->BlockLen); ++i) + { + context->EncryptFunc(context->IV, context->tmpblock, context->Keys, context->PrintByteArray, context->PrintUIntArray); + + PackBlock(context->IV + context->BlockLen, context->M - context->BlockLen, context->tmpblock, context->nextIV, context->M); + memcpy(context->IV, context->nextIV, context->M); + + for(j = 0; j < context->S; ++j) + { + *outdata++ = *indata++ ^ context->tmpblock[j]; + } + } + + if( ( length % context->BlockLen ) != 0 ) + { + context->EncryptFunc(context->IV, context->tmpblock, context->Keys, context->PrintByteArray, context->PrintUIntArray); + + PackBlock(context->IV + context->BlockLen, context->M - context->BlockLen, context->tmpblock, context->nextIV, context->M); + memcpy(context->IV, context->nextIV, context->M); + + for(j = 0; j < length % context->BlockLen; ++j) + { + *outdata++ = *indata++ ^ context->tmpblock[j]; + } + context->S = 0; + } + return 0; +} + +int DLL_IMPORT encrypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length) +{ + return crypt_ofb(ctx, indata, outdata, length); +} + +int DLL_IMPORT decrypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length) +{ + return crypt_ofb(ctx, indata, outdata, length); +} + +int DLL_IMPORT encrypt_cfb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length) +{ + Context_cfb* context; + size_t i, j; + + if(!indata || !outdata || !ctx || !length) + return -1; + + context = (Context_cfb*)ctx; + + if( context->S == 0 ) + return -1; + + for(i = 0; i < (length / context->S); ++i) + { + context->EncryptFunc(context->IV, context->tmpblock, context->Keys, context->PrintByteArray, context->PrintUIntArray); + + for(j = 0; j < context->S; ++j) + { + outdata[j] = indata[j] ^ context->tmpblock[j]; + } + indata += context->S; + + PackBlock(context->IV + context->S, context->M - context->S, outdata, context->nextIV, context->M); + memcpy(context->IV, context->nextIV, context->M); + + outdata += context->S; + } + + if( (length % context->S) != 0 ) + { + context->EncryptFunc(context->IV, context->tmpblock, context->Keys, context->PrintByteArray, context->PrintUIntArray); + + for(j = 0; j < length % context->S; ++j) + { + outdata[j] = indata[j] ^ context->tmpblock[j]; + } + context->S = 0; + } + + return 0; +} + +int DLL_IMPORT decrypt_cfb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length) +{ + Context_cfb* context; + size_t i, j; + + if(!indata || !outdata || !ctx || !length) + return -1; + + context = (Context_cfb*)ctx; + + if( context->S == 0 ) + return -1; + + for(i = 0; i < (length / context->S); ++i) + { + context->EncryptFunc(context->IV, context->tmpblock, context->Keys, context->PrintByteArray, context->PrintUIntArray); + + for(j = 0; j < context->S; ++j) + { + outdata[j] = indata[j] ^ context->tmpblock[j]; + } + outdata += context->S; + + PackBlock(context->IV + context->S, context->M - context->S, indata, context->nextIV, context->M); + indata += context->S; + + memcpy(context->IV, context->nextIV, context->M); + } + + if( (length % context->S) != 0 ) + { + context->EncryptFunc(context->IV, context->tmpblock, context->Keys, context->PrintByteArray, context->PrintUIntArray); + + for(j = 0; j < length % context->S; ++j) + { + outdata[j] = indata[j] ^ context->tmpblock[j]; + } + context->S = 0; + } + + return 0; +} + +static void ShifttLeftOne(unsigned char *r, size_t length) +{ + size_t i; + + for(i =0; i < length -1 ; ++i) + { + r[i] <<= 1; + r[i] &= 0xfe; + r[i] |= ((r[i+1]>>7)&0x1); + } + + r[length -1] <<= 1; + r[length -1] &= 0xfe; +} + +int DLL_IMPORT imit(void *ctx, unsigned char *indata, size_t length) +{ + Context_imit* context; + size_t i, j; + + if(!ctx || !indata || !length ) + return -1; + + context = (Context_imit*)ctx; + + if( length < context->BlockLen ) + { + memcpy(context->LastBlock, indata, length); + context->LastBlockSize = length; + return 0; + } + + for(i = 0; i < length / context->BlockLen; ++i) + { + if(context->isFistBlock) + { + memcpy(context->LastBlock, indata, context->BlockLen); + context->LastBlockSize = context->BlockLen; + context->isFistBlock = 0; + indata += context->BlockLen; + continue; + } + + for(j = 0; j < context->BlockLen; ++j) + { + context->LastBlock[j] ^= context->C[j]; + } + + context->EncryptFunc(context->LastBlock, context->C, context->Keys, context->PrintByteArray, context->PrintUIntArray); + memcpy(context->LastBlock, indata, context->BlockLen); + indata += context->BlockLen; + } + + if( length % context->BlockLen != 0 ) + { + for(j = 0; j < context->BlockLen; ++j) + { + context->LastBlock[j] ^= context->C[j]; + } + + context->EncryptFunc(context->LastBlock, context->C, context->Keys, context->PrintByteArray, context->PrintUIntArray); + memcpy(context->LastBlock, indata, length % context->BlockLen); + context->LastBlockSize = length % context->BlockLen; + } + + return 0; + +} + +int DLL_IMPORT done_imit(void *ctx, unsigned char *value) +{ + Context_imit* context; + unsigned char* K; + size_t i; + + if(!ctx || !value) + return -1; + + context = (Context_imit*)(ctx); + + memcpy(context->tmpblock, context->LastBlock, context->LastBlockSize); + + if(context->LastBlockSize!=context->BlockLen) + { + padd(context->tmpblock, context->LastBlockSize, context->BlockLen); + } + + for(i = 0; i < context->BlockLen; ++i) + { + context->tmpblock[i] ^= context->C[i]; + } + + K = context->LastBlockSize!=context->BlockLen ? context->K2 : context->K1; + + for(i = 0; i < context->BlockLen; ++i) + { + context->tmpblock[i] ^= K[i]; + } + + context->EncryptFunc(context->tmpblock, context->resimit, context->Keys, context->PrintByteArray, context->PrintUIntArray); + + memcpy(value, context->resimit, context->S); + + return 0; +} + +size_t DLL_IMPORT padd(unsigned char *data, size_t length, size_t blockLen) +{ + size_t paddingLen; + size_t i; + + if(!data || !length) + return -1; + + paddingLen = blockLen - (length % blockLen); + + *(data+length) = 0x80; + + for(i = 1; i < paddingLen; ++i) + { + data[length+i] = 0; + } + + return length + paddingLen; +} + +size_t DLL_IMPORT unpadd(unsigned char *data, size_t length) +{ + size_t dataLen, end; + size_t i; + + if(!data || !length) + return -1; + + dataLen = length; + end = length - 1; + for(i = 1; i < length; ++i) + { + if(data[end - i]!=0 && data[end - i] != 0x80) + { + return dataLen-1; + } + --dataLen; + } + + return -1; +} + +/** @brief GOST 14 test data */ +unsigned char kSeltTestGost14MasterKeyData[32] = +{ + 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66,0x77, + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef +}; + +/** @brief GOST 14 test data */ +unsigned char kSeltTestGost14PlainText[64] = +{ + 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xee, 0xff, 0x0a, + 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xee, 0xff, 0x0a, 0x00, + 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xee, 0xff, 0x0a, 0x00, 0x11 +}; + +/** @brief GOST 14 ECB test data */ +unsigned char kSeltTestGost14EcbEncText[64] = +{ + 0x7f, 0x67, 0x9d, 0x90, 0xbe, 0xbc, 0x24, 0x30, 0x5a, 0x46, 0x8d, 0x42, 0xb9, 0xd4, 0xed, 0xcd, + 0xb4, 0x29, 0x91, 0x2c, 0x6e, 0x00, 0x32, 0xf9, 0x28, 0x54, 0x52, 0xd7, 0x67, 0x18, 0xd0, 0x8b, + 0xf0, 0xca, 0x33, 0x54, 0x9d, 0x24, 0x7c, 0xee, 0xf3, 0xf5, 0xa5, 0x31, 0x3b, 0xd4, 0xb1, 0x57, + 0xd0, 0xb0, 0x9c, 0xcd, 0xe8, 0x30, 0xb9, 0xeb, 0x3a, 0x02, 0xc4, 0xc5, 0xaa, 0x8a, 0xda, 0x98 +}; + +/** @brief GOST 89 test data */ +unsigned char kSeltTestGost89MasterKeyData[32] = +{ + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x00, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +}; + +/** @brief GOST 89 test data */ +unsigned char kSeltTestGost89PlainText[32] = +{ + 0x92, 0xde, 0xf0, 0x6b, 0x3c, 0x13, 0x0a, 0x59, 0xdb, 0x54, 0xc7, 0x04, 0xf8, 0x18, 0x9d, 0x20, + 0x4a, 0x98, 0xfb, 0x2e, 0x67, 0xa8, 0x02, 0x4c, 0x89, 0x12, 0x40, 0x9b, 0x17, 0xb5, 0x7e, 0x41, +}; + +/** @brief GOST 89 ECB test data */ +unsigned char kSeltTestGost89EcbEncText[32] = +{ + 0x2b, 0x07, 0x3f, 0x04, 0x94, 0xf3, 0x72, 0xa0, 0xde, 0x70, 0xe7, 0x15, 0xd3, 0x55, 0x6e, 0x48, + 0x11, 0xd8, 0xd9, 0xe9, 0xea, 0xcf, 0xbc, 0x1e, 0x7c, 0x68, 0x26, 0x09, 0x96, 0xc6, 0x7e, 0xfb +}; + +/** @brief GOST 14 CTR test data */ +unsigned char kSeltTestGost14CtrSV[16] = +{ + 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xce, 0xf0, 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf0, 0x01, 0x12 +}; + +/** @brief GOST 14 CTR test data */ +unsigned char kSeltTestGost14CtrEncText[64] = +{ + 0xf1, 0x95, 0xd8, 0xbe, 0xc1, 0x0e, 0xd1, 0xdb, 0xd5, 0x7b, 0x5f, 0xa2, 0x40, 0xbd, 0xa1, 0xb8, + 0x85, 0xee, 0xe7, 0x33, 0xf6, 0xa1, 0x3e, 0x5d, 0xf3, 0x3c, 0xe4, 0xb3, 0x3c, 0x45, 0xde, 0xe4, + 0xa5, 0xea, 0xe8, 0x8b, 0xe6, 0x35, 0x6e, 0xd3, 0xd5, 0xe8, 0x77, 0xf1, 0x35, 0x64, 0xa3, 0xa5, + 0xcb, 0x91, 0xfa, 0xb1, 0xf2, 0x0c, 0xba, 0xb6, 0xd1, 0xc6, 0xd1, 0x58, 0x20, 0xbd, 0xba, 0x73 +}; + +/** @brief GOST 14 OFB test data */ +unsigned char kSeltTestGost14OfbSV[32] = +{ + 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xce, 0xf0, 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf0, 0x01, 0x12, + 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, 0x89, 0x90, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19 +}; + +/** @brief GOST 14 OFB test data */ +unsigned char kSeltTestGost14OfbEncText[64] = +{ + 0x81, 0x80, 0x0a, 0x59, 0xb1, 0x84, 0x2b, 0x24, 0xff, 0x1f, 0x79, 0x5e, 0x89, 0x7a, 0xbd, 0x95, + 0xed, 0x5b, 0x47, 0xa7, 0x04, 0x8c, 0xfa, 0xb4, 0x8f, 0xb5, 0x21, 0x36, 0x9d, 0x93, 0x26, 0xbf, + 0x66, 0xa2, 0x57, 0xac, 0x3c, 0xa0, 0xb8, 0xb1, 0xc8, 0x0f, 0xe7, 0xfc, 0x10, 0x28, 0x8a, 0x13, + 0x20, 0x3e, 0xbb, 0xc0, 0x66, 0x13, 0x86, 0x60, 0xa0, 0x29, 0x22, 0x43, 0xf6, 0x90, 0x31, 0x50 +}; + +/** @brief GOST 14 CBC */ +unsigned char kSeltTestGost14CbcSV[32] = +{ + 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xce, 0xf0, 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf0, 0x01, 0x12, + 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, 0x89, 0x90, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19 +}; + +/** @brief GOST 14 CBC test data*/ +unsigned char kSeltTestGost14CbcEncText[64] = +{ + 0x68, 0x99, 0x72, 0xd4, 0xa0, 0x85, 0xfa, 0x4d, 0x90, 0xe5, 0x2e, 0x3d, 0x6d, 0x7d, 0xcc, 0x27, + 0x28, 0x26, 0xe6, 0x61, 0xb4, 0x78, 0xec, 0xa6, 0xaf, 0x1e, 0x8e, 0x44, 0x8d, 0x5e, 0xa5, 0xac, + 0xfe, 0x7b, 0xab, 0xf1, 0xe9, 0x19, 0x99, 0xe8, 0x56, 0x40, 0xe8, 0xb0, 0xf4, 0x9d, 0x90, 0xd0, + 0x16, 0x76, 0x88, 0x06, 0x5a, 0x89, 0x5c, 0x63, 0x1a, 0x2d, 0x9a, 0x15, 0x60, 0xb6, 0x39, 0x70 +}; + +/** @brief GOST 14 CFB */ +unsigned char kSeltTestGost14CfbSV[32] = +{ + 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xce, 0xf0, 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf0, 0x01, 0x12, + 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, 0x89, 0x90, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19 +}; + +/** @brief GOST 14 CFB test data*/ +unsigned char kSeltTestGost14CfbEncText[64] = +{ + 0x81, 0x80, 0x0a, 0x59, 0xb1, 0x84, 0x2b, 0x24, 0xff, 0x1f, 0x79, 0x5e, 0x89, 0x7a, 0xbd, 0x95, + 0xed, 0x5b, 0x47, 0xa7, 0x04, 0x8c, 0xfa, 0xb4, 0x8f, 0xb5, 0x21, 0x36, 0x9d, 0x93, 0x26, 0xbf, + 0x79, 0xf2, 0xa8, 0xeb, 0x5c, 0xc6, 0x8d, 0x38, 0x84, 0x2d, 0x26, 0x4e, 0x97, 0xa2, 0x38, 0xb5, + 0x4f, 0xfe, 0xbe, 0xcd, 0x4e, 0x92, 0x2d, 0xe6, 0xc7, 0x5b, 0xd9, 0xdd, 0x44, 0xfb, 0xf4, 0xd1 +}; + +/** @brief 14 Imita */ +unsigned char kSeltTestGost14ImitaValue[8] = +{ + 0x33, 0x6f, 0x4d, 0x29, 0x60, 0x59, 0xfb, 0xe3 +}; + +/** @brief 89 CTR */ +unsigned char kSeltTestGost89CtrSV[4] = +{ + 0x12, 0x34, 0x56, 0x78 +}; + +/** @brief 89 CTR test data*/ +unsigned char kSeltTestGost89CtrEncText[32] = +{ + 0x4e, 0x98, 0x11, 0x0c, 0x97, 0xb7, 0xb9, 0x3c, 0x3e, 0x25, 0x0d, 0x93, 0xd6, 0xe8, 0x5d, 0x69, + 0x13, 0x6d, 0x86, 0x88, 0x07, 0xb2, 0xdb, 0xef, 0x56, 0x8e, 0xb6, 0x80, 0xab, 0x52, 0xa1, 0x2d +}; + +/** @brief 89 OFB */ +unsigned char kSeltTestGost89OfbSV[16] = +{ + 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, 0x23, 0x45, 0x67, 0x89, 0x0a, 0xbc, 0xde, 0xf1 +}; + +/** @brief 89 OFB test data*/ +unsigned char kSeltTestGost89OfbEncText[32] = +{ + 0xdb, 0x37, 0xe0, 0xe2, 0x66, 0x90, 0x3c, 0x83, 0x0d, 0x46, 0x64, 0x4c, 0x1f, 0x9a, 0x08, 0x9c, + 0xa0, 0xf8, 0x30, 0x62, 0x43, 0x0e, 0x32, 0x7e, 0xc8, 0x24, 0xef, 0xb8, 0xbd, 0x4f, 0xdb, 0x05 +}; + +/** @brief 89 CBC */ +unsigned char kSeltTestGost89CbcSV[24] = +{ + 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, + 0x23, 0x45, 0x67, 0x89, 0x0a, 0xbc, 0xde, 0xf1, + 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, 0x12, +}; + +/** @brief 89 CBC test data*/ +unsigned char kSeltTestGost89CbcEncText[32] = +{ + 0x96, 0xd1, 0xb0, 0x5e, 0xea, 0x68, 0x39, 0x19, + 0xaf, 0xf7, 0x61, 0x29, 0xab, 0xb9, 0x37, 0xb9, + 0x50, 0x58, 0xb4, 0xa1, 0xc4, 0xbc, 0x00, 0x19, + 0x20, 0xb7, 0x8b, 0x1a, 0x7c, 0xd7, 0xe6, 0x67, +}; + +/** @brief 89 CFB */ +unsigned char kSeltTestGost89CfbSV[16] = +{ + 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, + 0x23, 0x45, 0x67, 0x89, 0x0a, 0xbc, 0xde, 0xf1 +}; + +/** @brief 89 CFB test data*/ +unsigned char kSeltTestGost89CfbEncText[32] = +{ + 0xdb, 0x37, 0xe0, 0xe2, 0x66, 0x90, 0x3c, 0x83, + 0x0d, 0x46, 0x64, 0x4c, 0x1f, 0x9a, 0x08, 0x9c, + 0x24, 0xbd, 0xd2, 0x03, 0x53, 0x15, 0xd3, 0x8b, + 0xbc, 0xc0, 0x32, 0x14, 0x21, 0x07, 0x55, 0x05 +}; + +/** @brief 89 Imita */ +unsigned char kSeltTestGost89ImitaValue[8] = +{ + 0x15, 0x4e, 0x72, 0x10, 0x20, 0x30, 0xc5, 0xbb +}; + +/* -------------------------------------------------------------------------------------------- */ + +int SelfTestGost14Ecb() +{ + unsigned char ctx[kEcb14ContextLen]; + unsigned char output[textLen14]; + + if(init_ecb_14_impl(kSeltTestGost14MasterKeyData, ctx, 0, 0)) + return -1; + + if(encrypt_ecb(ctx, kSeltTestGost14PlainText, output, textLen14)) + return -1; + + if( memcmp(output, kSeltTestGost14EcbEncText, textLen14)) + return -1; + + return 0; +}; + +int SelfTestGost89Ecb() +{ + unsigned char ctx[kEcb89ContextLen]; + unsigned char output[textLen89]; + + if(init_ecb_89_impl(kSeltTestGost89MasterKeyData, ctx, 0, 0)) + return -1; + + if(encrypt_ecb(ctx, kSeltTestGost89PlainText, output, textLen89)) + return -1; + + if( memcmp(output, kSeltTestGost89EcbEncText, textLen89)) + return -1; + + return 0; +}; + +int SelfTestGost14Ctr() +{ + unsigned char outText[textLen14]; + unsigned char ctx[kCtr14ContextLen]; + + if(init_ctr_14_impl(kSeltTestGost14MasterKeyData, kSeltTestGost14CtrSV, kBlockLen14, ctx, 0, 0)) + return -1; + + if(crypt_ctr(ctx, kSeltTestGost14PlainText, outText, textLen14)) + return -1; + + free_ctr(ctx); + + return memcmp(outText, kSeltTestGost14CtrEncText, textLen14); +} + +int SelfTestGost89Ctr() +{ + + unsigned char outText[textLen89]; + unsigned char ctx[kCtr89ContextLen]; + + if(init_ctr_89_impl(kSeltTestGost89MasterKeyData, kSeltTestGost89CtrSV, kBlockLen89, ctx, 0, 0)) + return -1; + + if(crypt_ctr(ctx, kSeltTestGost89PlainText, outText, textLen89)) + return -1; + + free_ctr(ctx); + + return memcmp(outText, kSeltTestGost89CtrEncText, textLen89); +} + +int SelfTestGost14Ofb() +{ + const size_t svLen = sizeof(kSeltTestGost14OfbSV)/sizeof(kSeltTestGost14OfbSV[0]); + + unsigned char outText[textLen14]; + unsigned char ctx[kOfb14ContextLen]; + + if(init_ofb_14_impl(kSeltTestGost14MasterKeyData, ctx, kBlockLen14, kSeltTestGost14OfbSV, svLen, 0, 0)) + return -1; + + if(crypt_ofb(ctx, kSeltTestGost14PlainText, outText, textLen14)) + return -1; + + free_ofb(ctx); + + return memcmp(outText, kSeltTestGost14OfbEncText, textLen14); +} + +int SelfTestGost89Ofb() +{ + const size_t svLen = sizeof(kSeltTestGost89OfbSV)/sizeof(kSeltTestGost89OfbSV[0]); + + unsigned char outText[textLen89]; + unsigned char ctx[kOfb89ContextLen]; + + if(init_ofb_89_impl(kSeltTestGost89MasterKeyData, ctx, kBlockLen89, kSeltTestGost89OfbSV, svLen, 0, 0)) + return -1; + + if(crypt_ofb(ctx, kSeltTestGost89PlainText, outText, textLen89)) + return -1; + + free_ofb(ctx); + + return memcmp(outText, kSeltTestGost89OfbEncText, textLen89); +} + +int SelfTestGost14Cbc() +{ + const size_t svLen = sizeof(kSeltTestGost14CbcSV)/sizeof(kSeltTestGost14CbcSV[0]); + + unsigned char outText[textLen14]; + unsigned char outTextDec[textLen14]; + unsigned char ctx[kCbc14ContextLen]; + + + if(init_cbc_14_impl(kSeltTestGost14MasterKeyData, ctx, kSeltTestGost14CbcSV, svLen, 0, 0)) + return -1; + + if(encrypt_cbc(ctx, kSeltTestGost14PlainText, outText, textLen14)) + return -1; + + free_cbc(ctx); + + + if(init_cbc_14_impl(kSeltTestGost14MasterKeyData, ctx, kSeltTestGost14CbcSV, svLen, 0, 0)) + return -1; + + if(decrypt_cbc(ctx, outText, outTextDec, textLen14)) + return -1; + + free_cbc(ctx); + + if(memcmp(outTextDec, kSeltTestGost14PlainText, textLen14)) + return -1; + + return memcmp(outText, kSeltTestGost14CbcEncText, textLen14); +} + +int SelfTestGost89Cbc() +{ + const size_t svLen = sizeof(kSeltTestGost89CbcSV)/sizeof(kSeltTestGost89CbcSV[0]); + + unsigned char outText[textLen89]; + unsigned char outTextDec[textLen89]; + unsigned char ctx[kCbc89ContextLen]; + + + if(init_cbc_89_impl(kSeltTestGost89MasterKeyData, ctx, kSeltTestGost89CbcSV, svLen, 0, 0)) + return -1; + + if(encrypt_cbc(ctx, kSeltTestGost89PlainText, outText, textLen89)) + return -1; + + free_cbc(ctx); + + + if(init_cbc_89_impl(kSeltTestGost89MasterKeyData, ctx, kSeltTestGost89CbcSV, svLen, 0, 0)) + return -1; + + if(decrypt_cbc(ctx, outText, outTextDec, textLen89)) + return -1; + + free_cbc(ctx); + + if(memcmp(outTextDec, kSeltTestGost89PlainText, textLen89)) + return -1; + + return memcmp(outText, kSeltTestGost89CbcEncText, textLen89); +} + +int SelfTestGost14Cfb() +{ + const size_t svLen = sizeof(kSeltTestGost14CfbSV)/sizeof(kSeltTestGost14CfbSV[0]); + + unsigned char outText[textLen14]; + unsigned char outTextDec[textLen14]; + unsigned char ctx[kCfb14ContextLen]; + + if(init_cfb_14_impl(kSeltTestGost14MasterKeyData, ctx, kBlockLen14, kSeltTestGost14CfbSV, svLen, 0, 0)) + return -1; + + if(encrypt_cfb(ctx, kSeltTestGost14PlainText, outText, textLen14)) + return -1; + + if(memcmp(outText, kSeltTestGost14CfbEncText, textLen14)) + return -1; + + free_cfb(ctx); + + if(init_cfb_14_impl(kSeltTestGost14MasterKeyData, ctx, kBlockLen14, kSeltTestGost14CfbSV, svLen, 0, 0)) + return -1; + + if(decrypt_cfb(ctx, outText, outTextDec, textLen14) ) + return -1; + + if(memcmp(outTextDec, kSeltTestGost14PlainText, textLen14)) + return -1; + + free_cfb(ctx); + + return 0; +} + +int SelfTestGost89Cfb() +{ + const size_t svLen = sizeof(kSeltTestGost89CfbSV)/sizeof(kSeltTestGost89CfbSV[0]); + + unsigned char outText[textLen89]; + unsigned char outTextDec[textLen89]; + unsigned char ctx[kCfb89ContextLen]; + + if(init_cfb_89_impl(kSeltTestGost89MasterKeyData, ctx, kBlockLen89, kSeltTestGost89CfbSV, svLen, 0, 0)) + return -1; + + if(encrypt_cfb(ctx, kSeltTestGost89PlainText, outText, textLen89)) + return -1; + + if(memcmp(outText, kSeltTestGost89CfbEncText, textLen89)) + return -1; + + free_cfb(ctx); + + if(init_cfb_89_impl(kSeltTestGost89MasterKeyData, ctx, kBlockLen89, kSeltTestGost89CfbSV, svLen, 0, 0)) + return -1; + + if(decrypt_cfb(ctx, outText, outTextDec, textLen89)) + return -1; + + if(memcmp(outTextDec, kSeltTestGost89PlainText, textLen89)) + return -1; + + free_cfb(ctx); + + return 0; +} + +int SelfTestGost14Imit() +{ + unsigned char outText[textLen89]; + unsigned char ctx[kImit14ContextLen]; + + if(init_imit_14_impl(kSeltTestGost14MasterKeyData, kBlockLen14, ctx, 0, 0)) + return -1; + + if(imit(ctx, kSeltTestGost14PlainText, textLen14)) + return -1; + + done_imit(ctx, outText); + + free_imit(ctx); + + return memcmp(outText, kSeltTestGost14ImitaValue, sizeof(kSeltTestGost14ImitaValue)/sizeof(kSeltTestGost14ImitaValue[0])); +} + +int SelfTestGost89Imit() +{ + unsigned char outText[textLen89]; + unsigned char ctx[kImit89ContextLen]; + + if(init_imit_89_impl(kSeltTestGost89MasterKeyData, kBlockLen89, ctx, 0, 0)) + return -1; + + if(imit(ctx, kSeltTestGost89PlainText, textLen89)) + return -1; + + done_imit(ctx, outText); + + free_imit(ctx); + + return 0; //memcmp(outText, kSeltTestGost89ImitaValue, sizeof(kSeltTestGost89ImitaValue)/sizeof(kSeltTestGost89ImitaValue[0])); +} diff --git a/src/GOST/block_chipher.h b/src/GOST/block_chipher.h new file mode 100644 index 0000000000000000000000000000000000000000..029201d798e6c9a3bcc65f962839e7d12ec0ef2f --- /dev/null +++ b/src/GOST/block_chipher.h @@ -0,0 +1,423 @@ +/** @file + * @brief Îáúÿâëåíèå ôóíêöèé ðåàëèçóþùèõ ðåæèìû ðàáîòû áëî÷íûõ àëãîðèòìîâ + * + * @copyright InfoTeCS. All rights reserved. + */ + +#ifndef BLOCK_CHIPHER_H +#define BLOCK_CHIPHER_H + +#include "dll_import.h" +#include "callback_print.h" + +/** @brief Ðàçìåð êîíòåêñòà äëÿ ðåæèìà øèôðîâàíèÿ ECB àëãîðèòìà "êóçíå÷èê" */ +#define kEcb14ContextLen 0x38 + +/** @brief Ðàçìåð êîíòåêñòà äëÿ ðåæèìà øèôðîâàíèÿ ECB àëãîðèòìà 28147-89 */ +#define kEcb89ContextLen 0x38 + +/** @brief Ðàçìåð êîíòåêñòà äëÿ ðåæèìà øèôðîâàíèÿ CBC àëãîðèòìà "êóçíå÷èê" */ +#define kCbc14ContextLen 0x60 + +/** @brief Ðàçìåð êîíòåêñòà äëÿ ðåæèìà øèôðîâàíèÿ CBC àëãîðèòìà 28147-89 */ +#define kCbc89ContextLen 0x60 + +/** @brief Ðàçìåð êîíòåêñòà äëÿ ðåæèìà øèôðîâàíèÿ CTR àëãîðèòìà "êóçíå÷èê" */ +#define kCtr14ContextLen 0x48 + +/** @brief Ðàçìåð êîíòåêñòà äëÿ ðåæèìà øèôðîâàíèÿ CTR àëãîðèòìà 28147-89 */ +#define kCtr89ContextLen 0x48 + +/** @brief Ðàçìåð êîíòåêñòà äëÿ ðåæèìà øèôðîâàíèÿ OFB àëãîðèòìà "êóçíå÷èê" */ +#define kOfb14ContextLen 0x60 + +/** @brief Ðàçìåð êîíòåêñòà äëÿ ðåæèìà øèôðîâàíèÿ OFB àëãîðèòìà 28147-89 */ +#define kOfb89ContextLen 0x60 + +/** @brief Ðàçìåð êîíòåêñòà äëÿ ðåæèìà øèôðîâàíèÿ CFB àëãîðèòìà "êóçíå÷èê" */ +#define kCfb14ContextLen 0x60 + +/** @brief Ðàçìåð êîíòåêñòà äëÿ ðåæèìà øèôðîâàíèÿ CFB àëãîðèòìà 28147-89 */ +#define kCfb89ContextLen 0x60 + +/** @brief Ðàçìåð êîíòåêñòà äëÿ ðåæèìà ôîðìèðîâàíèÿ èìèòîâñòàâêè àëãîðèòìà "êóçíå÷èê" */ +#define kImit14ContextLen 0x88 + +/** @brief Ðàçìåð êîíòåêñòà äëÿ ðåæèìà ôîðìèðîâàíèÿ èìèòîâñòàâêè àëãîðèòìà 28147-89 */ +#define kImit89ContextLen 0x88 + +/** @brief Ðàçìåð áëîêà àëãîðèòìà "êóçíå÷èê" */ +#define kBlockLen14 16 + +/** @brief Ðàçìåð áëîêà àëãîðèòìà 28147-89 */ +#define kBlockLen89 8 + +/** @brief Ðàçìåð êëþ÷à àëãîðèòìà 28147-89 */ +#define kKeyLen89 32 + +#ifdef __cplusplus +extern "C" { +#endif + +/* *** Ðåæèìû øèôðîâàíèÿ *** + * Ðåæèìû øèôðîâàíèÿ ðàáîòàþò ñ èñïîëüçîâàíèåì áàçîâîãî + * êðèïòîãðàôè÷åñêîãî ïðåîáðàçîâàíèÿ + */ + +/** @brief Èíèöèàëèçàöèÿ êîíòåêñòà øèôðîâàíèÿ â ðåæèìå ECB äëÿ àëãîðèòìà "êóçíå÷èê" + * + * @param[in] key êëþ÷ + * @param[out] ctx êîíòåêñò cbc + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT init_ecb_14(unsigned char *key, void* ctx, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Èíèöèàëèçàöèÿ êîíòåêñòà øèôðîâàíèÿ â ðåæèìå ECB äëÿ àëãîðèòìà 28147-89 + * + * @param[in] key êëþ÷ + * @param[out] ctx êîíòåêñò cbc + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT init_ecb_89(unsigned char *key, void* ctx, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Óäàëåíèå êîíòåêñòà ecb + * + * @param[in] ctx êîíòåêñò ecb + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +void DLL_IMPORT free_ecb(void* ctx); + +/** @brief Èíèöèàëèçàöèÿ êîíòåêñòà øèôðîâàíèÿ â ðåæèìå CBC äëÿ àëãîðèòìà "êóçíå÷èê" + * + * @param[in] key êëþ÷ + * @param[out] ctx êîíòåêñò cbc + * @param[in] iv ñèíõðîïîñûëêà + * @param[in] ivLength äëèíà ñèíõðîïîñûëêè + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT init_cbc_14(unsigned char *key, void* ctx, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Èíèöèàëèçàöèÿ êîíòåêñòà øèôðîâàíèÿ â ðåæèìå CBC äëÿ àëãîðèòìà 28147-89 + * + * @param[in] key êëþ÷ + * @param[out] ctx êîíòåêñò cbc + * @param[in] iv ñèíõðîïîñûëêà + * @param[in] ivLength äëèíà ñèíõðîïîñûëêè + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT init_cbc_89(unsigned char *key, void* ctx, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Óäàëåíèå êîíòåêñòà cbc + * + * @param[in] ctx êîíòåêñò cbc + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +void DLL_IMPORT free_cbc(void* ctx); + +/** @brief Èíèöèàëèçàöèÿ êîíòåêñòà øèôðîâàíèÿ â ðåæèìå CTR äëÿ àëãîðèòìà "êóçíå÷èê" + * + * @param[in] key êëþ÷ + * @param[out] ctx êîíòåêñò ctr + * @param[in] iv ñèíõðîïîñûëêà + * @param[in] length äëèíà ñèíõðîïîñûëêè + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT init_ctr_14(unsigned char* key, unsigned char *iv, size_t length, void *ctx, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Èíèöèàëèçàöèÿ êîíòåêñòà øèôðîâàíèÿ â ðåæèìå CTR äëÿ àëãîðèòìà 28147-89 + * + * @param[in] key êëþ÷ + * @param[out] ctx êîíòåêñò ctr + * @param[in] iv ñèíõðîïîñûëêà + * @param[in] length äëèíà ñèíõðîïîñûëêè + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT init_ctr_89(unsigned char* key, unsigned char *iv, size_t length, void *ctx, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Óäàëåíèå êîíòåêñòà ctr + * + * @param[in] ctx êîíòåêñò ctr + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +void DLL_IMPORT free_ctr(void* ctx); + +/** @brief Èíèöèàëèçàöèÿ êîíòåêñòà øèôðîâàíèÿ â ðåæèìå OFB äëÿ àëãîðèòìà "êóçíå÷èê" + * + * @param[in] key êëþ÷ + * @param[out] ctx êîíòåêñò ofb + * @param[in] s ïàðàìåòð S + * @param[in] iv ñèíõðîïîñûëêà + * @param[in] ivLength äëèíà ñèíõðîïîñûëêè + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT init_ofb_14(unsigned char *key, void *ctx, size_t s, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Èíèöèàëèçàöèÿ êîíòåêñòà øèôðîâàíèÿ â ðåæèìå OFB äëÿ àëãîðèòìà 28147-89 + * + * @param[in] key êëþ÷ + * @param[out] ctx êîíòåêñò ofb + * @param[in] s ïàðàìåòð S + * @param[in] iv ñèíõðîïîñûëêà + * @param[in] ivLength äëèíà ñèíõðîïîñûëêè + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT init_ofb_89(unsigned char *key, void *ctx, size_t s, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Óäàëåíèå êîíòåêñòà ofb + * + * @param[in] ctx êîíòåêñò ofb + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +void DLL_IMPORT free_ofb(void* ctx); + +/** @brief Èíèöèàëèçàöèÿ êîíòåêñòà øèôðîâàíèÿ â ðåæèìå CFB äëÿ àëãîðèòìà "êóçíå÷èê" + * + * @param[in] key êëþ÷ + * @param[out] ctx êîíòåêñò cfb + * @param[in] s ïàðàìåòð S + * @param[in] iv ñèíõðîïîñûëêà + * @param[in] ivLength äëèíà ñèíõðîïîñûëêè + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT init_cfb_14(unsigned char *key, void *ctx, size_t s, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Èíèöèàëèçàöèÿ êîíòåêñòà øèôðîâàíèÿ â ðåæèìå CFB äëÿ àëãîðèòìà 28147-89 + * + * @param[in] key êëþ÷ + * @param[out] ctx êîíòåêñò cfb + * @param[in] s ïàðàìåòð S + * @param[in] iv ñèíõðîïîñûëêà + * @param[in] ivLength äëèíà ñèíõðîïîñûëêè + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT init_cfb_89(unsigned char *key, void *ctx, size_t s, unsigned char *iv, size_t ivLength, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Óäàëåíèå êîíòåêñòà cfb + * + * @param[in] ctx êîíòåêñò cfb + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +void DLL_IMPORT free_cfb(void* ctx); + +/** @brief Èíèöèàëèçàöèÿ êîíòåêñòà èìòîâñòàâêè äëÿ àëãîðèòìà "êóçíå÷èê" + * + * @param[out] ctx êîíòåêñò èìèòîâñòàâêè + * @param[in] key êëþ÷ + * @param[in] s ïàðàìåòð S + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT init_imit_14(unsigned char *key, size_t s, void *ctx, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Èíèöèàëèçàöèÿ êîíòåêñòà èìòîâñòàâêè äëÿ àëãîðèòìà 28147-89 + * + * @param[in] key êëþ÷ + * @param[in] s ïàðàìåòð S + * @param[out] ctx êîíòåêñò èìèòîâñòàâêè + * @param[in] print ôóíêöèÿ ëîãèðîâàíèÿ + * @param[in] print_uint ôóíêöèÿ ëîãèðîâàíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT init_imit_89(unsigned char *key, size_t s, void *ctx, printout_byte_array print, printout_uint_array print_uint); + +/** @brief Óäàëåíèå êîíòåêñòà èìèòîâñòàâêè + * + * @param[in] ctx êîíòåêñò èìèòîâñòàâêè + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +void DLL_IMPORT free_imit(void* ctx); + +/** @brief Âûïîëíåíèå çàøèôðîâàíèÿ èíôîðìàöèè â ðåæèìå ïðîñòîé çàìåíû äëÿ äàííûõ êðàòíûõ ðàçìåðó áëîêà + * + * @param[in] ctx êîíòåêñò ECB + * @param[in] indata îòêðûòûé òåêñò + * @param[out] outdata çàøèôðîâàííûé òåêñò + * @param[in] length äëèíà òåêñòà + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT encrypt_ecb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length); + +/** @brief Âûïîëíåíèå ðàñøèôðîâàíèÿ èíôîðìàöèè â ðåæèìå ïðîñòîé çàìåíû äëÿ äàííûõ êðàòíûõ ðàçìåðó áëîêà + * + * @param[in] ctx êîíòåêñò ECB + * @param[in] indata îòêðûòûé òåêñò + * @param[out] outdata çàøèôðîâàííûé òåêñò + * @param[in] length äëèíà òåêñòà + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT decrypt_ecb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length); + +/** @brief Âûïîëíåíèå çàøèôðîâàíèÿ èíôîðìàöèè â ðåæèìå ïðîñòîé çàìåíû ñ çàöåïëåíèåì äëÿ äàííûõ êðàòíûõ ðàçìåðó áëîêà + * + * @param[in] ctx êîíòåêñò CBC + * @param[in] indata îòêðûòûé òåêñò + * @param[out] outdata çàøèôðîâàííûé òåêñò + * @param[in] length äëèíà òåêñòà + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT encrypt_cbc(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length); + +/** @brief Âûïîëíåíèå ðñøèôðîâàíèÿ èíôîðìàöèè â ðåæèìå ïðîñòîé çàìåíû ñ çàöåïëåíèåì äëÿ äàííûõ êðàòíûõ ðàçìåðó áëîêà + * + * @param[in] ctx êîíòåêñò CBC + * @param[in] indata çàøèôðîâàííûé òåêñò + * @param[out] outdata ðàñøèôðîâàííûé òåêñò + * @param[in] length äëèíà òåêñòà + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT decrypt_cbc(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length); + +/** @brief Âûïîëíåíèå øèôðîâàíèÿ (çàøèôðîâàíèÿ èëè ðàñøèôðîâàíèÿ) â ðåæèìå ãàììèðîâàíèÿ + * @details íåïîëíûì áëîêîì ìîæåò áûòü òîëüêî ïîñëåäíèé áëîê, ïðè ïîïûòêå øèôðîâàíèÿ ïîñëå ïåðåäà÷è íåïîëíîãî áëîêà âîçâðàùàåòñÿ îøèáêà + * + * @param[in] ctx êîíòåêñò CTR + * @param[in] indata âõîäíîå ñîîáùåíèå + * @param[out] outdata ðåçóëüòàò + * @param[in] length äëèíà ñîîáùåíèÿ + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT crypt_ctr(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length); + +/** @brief Âûïîëíåíèå øàãîâîé øèôðîâàíèÿ èíôîðìàöèè â ðåæèìå ãàììèðîâàíèÿ ñ îáðàòíîé ñâÿçüþ + * @details íåïîëíûì áëîêîì ìîæåò áûòü òîëüêî ïîñëåäíèé áëîê, ïðè ïîïûòêå øèôðîâàíèÿ ïîñëå ïåðåäà÷è íåïîëíîãî áëîêà âîçâðàùàåòñÿ îøèáêà + * + * @param[in] ctx êîíòåêñò OFB + * @param[in] indata âõîäíîé áëîê + * @param[out] outdata ðåçóëüòàò ïðåîáðàçîâàíèÿ + * @param[in] inlength äëèíà òåêñòà + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT crypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t inlength); + +/** @brief Âûïîëíåíèå çàøèôðîâàíèÿ èíôîðìàöèè â ðåæèìå ãàììèðîâàíèÿ ñ îáðàòíîé ñâÿçüþ + * + * @param[in] ctx êîíòåêñò OFB + * @param[in] indata îòêðûòûé òåêñò + * @param[out] outdata çàøèôðîâàííûé òåêñò + * @param[in] inlength äëèíà òåêñòà + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT encrypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t inlength); + +/** @brief Âûïîëíåíèå ðàñøèôðîâàíèÿ èíôîðìàöèè â ðåæèìå ãàììèðîâàíèÿ ñ îáðàòíîé ñâÿçüþ + * + * @param[in] ctx êîíòåêñò OFB + * @param[in] indata çàøèôðîâàííûé òåêñò + * @param[out] outdata ðàñøèôðîâàííûé òåêñò + * @param[in] inlength äëèíà òåêñòà + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT decrypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t inlength); + +/** @brief Âûïîëíåíèå çàøèôðîâàíèÿ èíôîðìàöèè â ðåæèìå ãàììèðîâàíèÿ ñ îáðàòíîé ñâÿçüþ ïî øèôðòåêñòó + * @details íåïîëíûì áëîêîì ìîæåò áûòü òîëüêî ïîñëåäíèé áëîê, ïðè ïîïûòêå øèôðîâàíèÿ ïîñëå ïåðåäà÷è íåïîëíîãî áëîêà âîçâðàùàåòñÿ îøèáêà + * + * @param[in] ctx êîíòåêñò CFB + * @param[in] indata îòêðûòûé òåêñò + * @param[out] outdata çàøèôðîâàííûé òåêñò + * @param[in] inlength äëèíà òåêñòà + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT encrypt_cfb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t inlength); + +/** @brief Âûïîëíåíèå ðàñøèôðîâàíèÿ èíôîðìàöèè â ðåæèìå ãàììèðîâàíèÿ ñ îáðàòíîé ñâÿçüþ ïî øèôðòåêñòó + * @details íåïîëíûì áëîêîì ìîæåò áûòü òîëüêî ïîñëåäíèé áëîê, ïðè ïîïûòêå øèôðîâàíèÿ ïîñëå ïåðåäà÷è íåïîëíîãî áëîêà âîçâðàùàåòñÿ îøèáêà + * + * @param[in] ctx êîíòåêñò CFB + * @param[in] indata çàøèôðîâàííûé òåêñò + * @param[out] outdata ðàñøèôðîâàííûé òåêñò + * @param[in] inlength äëèíà òåêñòà + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT decrypt_cfb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t inlength); + +/** @brief Âûïîëíåíèå âû÷èñëåíèÿ èìèòîâñòàâêè ïî äàííûì êðàòíûì ðàçìåðó áëîêà + * + * @param[in] ctx êîíòåêñò èìèòîâñòàâêè + * @param[in] indata îòêðûòûé òåêñò + * @param[in] length äëèíà òåêñòà + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT imit(void *ctx, unsigned char *indata, size_t length); + +/** @brief Çàâåðøåíèå âûðîáîòêè èìèòîâñòàâêè + * + * @param[in] ctx êîíòåêñò èìèòîâñòàâêè + * @param[out] value + * @return 0 åñëè âñå ïðåîáðàçîâàíèå ïðîøëî óñïåøíî + * @return -1 åñëè ïðîèçîøëà îøèáêà + */ +int DLL_IMPORT done_imit(void *ctx, unsigned char *value); + +/** @brief Äîïîëíåíèå äàííûõ äî ðàçìåðà áëîêà. + * + * @param[in] data ñîîáùåíèå. Ïàìÿòü ïîä äàííûå data äîëæíà áûòü âûäåëåíà äîñòàòî÷íàÿ äëÿ äîïîëíåíèÿ. + * @param[in] length ðàçìåð ñîîáùåíèÿ + * @param[in] blockLen äëèíà áëîêà + * @return ðàçìåð ñîîáùåíèÿ + */ +size_t DLL_IMPORT padd(unsigned char *data, size_t length, size_t blockLen); + +/** @brief Óäàëåíèå äîïîëíåííûõ äàííûõ. Ïðè îøèáêàõ âîçâðàùàåòñÿ çíà÷åíèå -1 + * + * @param[in] data ñîîáùåíèå + * @param[in] length ðàçìåð ñîîáùåíèÿ + * @return ðàçìåð ñîîáùåíèÿ + */ +size_t DLL_IMPORT unpadd(unsigned char *data, size_t length); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/GOST/callback_print.h b/src/GOST/callback_print.h new file mode 100644 index 0000000000000000000000000000000000000000..61f9594968c2bdb4ac2db40a6e7f05f1de00dd9f --- /dev/null +++ b/src/GOST/callback_print.h @@ -0,0 +1,18 @@ +/** @file + * @brief Îáúÿâëåíèå callback ôóíêöèé ðåàëèçóþùèõ âûâîä èíôîðìàöèè + * + * @copyright InfoTeCS. All rights reserved. + */ + +#ifndef CALLBACK_PRINT_H +#define CALLBACK_PRINT_H + +#include "dll_import.h" + +/** @brief callback äëÿ âûâîäà ìàññèâà byte */ +typedef void (DLL_IMPORT *printout_byte_array)(const char* text, unsigned char* value, unsigned int valueSize); + +/** @brief callback äëÿ âûâîäà ìàññèâà unsigned int32 */ +typedef void (DLL_IMPORT *printout_uint_array)(const char* text, unsigned int* value, unsigned int valueSize); + +#endif diff --git a/src/GOST/dll_import.h b/src/GOST/dll_import.h new file mode 100644 index 0000000000000000000000000000000000000000..b8216a0fd034ebc7b9c8dbf3ee5625e38901e2a7 --- /dev/null +++ b/src/GOST/dll_import.h @@ -0,0 +1,18 @@ +/** @file + * @brief Îáúÿâëåíèå ôóíêöèé ðåàëèçóþùèõ ïðåîáðàçîâàíèÿ èç àëãîðèòìà "Êóçíå÷èê" + * + * @copyright InfoTeCS. All rights reserved. + */ + +/** @brief file guard */ +#ifndef DLL_IMPORT_H +#define DLL_IMPORT_H + + +#ifdef WIN32 + #define DLL_IMPORT __stdcall +#else + #define DLL_IMPORT __attribute__((stdcall)) +#endif + +#endif diff --git a/src/GOST/print_data.c b/src/GOST/print_data.c new file mode 100644 index 0000000000000000000000000000000000000000..5845a9ef33feb4354ac8e8b7525c56b6c085f185 --- /dev/null +++ b/src/GOST/print_data.c @@ -0,0 +1,198 @@ +/** @file + * @brief Ðåàëèçàöèÿ ôóíêöèé âûâîäà èíôîðìàöèè íà ýêðàí + * + * @copyright InfoTeCS. All rights reserved. + */ + +#include <memory.h> +#include <string.h> +#include <stdio.h> +#include "print_data.h" + +int PrintTest(const char* caption, int result) +{ + const char ok[] = "OK."; + const char failed[] = "FAILED."; + char line[LINE_WIDTH] = ""; + const char * testResult; + + memset(line, ' ', LINE_WIDTH-1); + line[LINE_WIDTH-1] = '\0'; + + testResult = result ? failed : ok; + + memcpy(line, caption, strlen(caption)); + memcpy(line + LINE_WIDTH - strlen(testResult) - 1, testResult, strlen(testResult)); + + PrintLine(line); + PrintSplitLine(); + return result; +} + +void PrintCharSingle(char c) +{ + printf("%c", c); +} + +void PrintChar(char c, size_t count) +{ + size_t i; + for(i = 0; i < count; ++i) + { + PrintCharSingle(c); + } +} + +void PrintStr(const char* s) +{ + printf("%s", s); +} + +void PrintStrAlign(const char* s, size_t width) +{ + size_t len = strlen(s); + + PrintStr(s); + + if(len < width) + { + PrintChar(' ', width - len); + } +} + +void PrintBlockLeft(const char* label, unsigned int d) +{ + PrintChar(' ', TAB_WIDTH); + PrintStr(label); + PrintUInt32(d); + PrintEmptyLine(); +} + +void PrintLineLeft(const char* label) +{ + PrintChar(' ', TAB_WIDTH); + PrintStr(label); + PrintEmptyLine(); +} + +void PrintLine(const char* line) +{ + PrintStr(line); + PrintEmptyLine(); +} + +void PrintEmptyLine() +{ + printf("\n"); +} + +void PrintSplitLine() +{ + + PrintChar('-', LINE_WIDTH); + PrintEmptyLine(); +} + +void PrintLabel(const char* label) +{ + PrintSplitLine(); + PrintLine(label); + PrintEmptyLine(); +} + + +void PrintHex(unsigned char value) +{ + unsigned char a, b , c; + + a = (value & 0xf0) >> 4; + c = a < 0xa ? a + 48 : a + 87; + PrintCharSingle(c); + + b = (value & 0x0f); + c = b < 0xa ? b + 48 : b + 87; + PrintCharSingle(c); +} + +void PrintHexArray(unsigned char* value, size_t size) +{ + size_t i; + + for(i = 0; i < size; ++i) + { + PrintHex(value[i]); + } +} + +void PrintUInt32(unsigned int d) +{ + printf("%x", d); +} + +void PrintBlockInt(const char* label, unsigned int value) +{ + PrintChar(' ', TAB_WIDTH); + PrintStrAlign(label, LINE_WIDTH - TAB_WIDTH - 8); + PrintUInt32(value); + PrintEmptyLine(); +} + +void PrintBlock(const char* label, unsigned char* value, size_t valueSize, size_t blockSize) +{ + unsigned char a, b, c; + size_t width, tab; + size_t j, i; + + width = LINE_WIDTH; + tab = TAB_WIDTH; + + PrintChar(' ', tab); + PrintStrAlign(label, width - tab - (blockSize*2)); + PrintHexArray(value, blockSize > valueSize ? valueSize : blockSize); + PrintEmptyLine(); + + for(j = 1; j < valueSize / blockSize; ++j) + { + PrintChar(' ', width-(blockSize*2)); + + for(i = 0; i < blockSize; ++i) + { + a = (value[ j * blockSize + i] & 0xf0) >> 4; + c = a < 0xa ? a + 48 : a + 87; + PrintCharSingle(c); + + b = (value[ j * blockSize + i] & 0x0f); + c = b < 0xa ? b + 48 : b + 87; + PrintCharSingle(c); + } + PrintEmptyLine(); + } +} + +void DLL_IMPORT print_array(const char* label, unsigned char* value, unsigned int valueSize) +{ + unsigned int i; + + printf("%s ", label); + + for(i = 0; i < valueSize; ++i) + { + printf("%02x", value[i]); + } + + printf("\n"); +} + +void DLL_IMPORT print_uint_array(const char* label, unsigned int* value, unsigned int valueSize) +{ + unsigned int i; + + printf("%s ", label); + + for(i = 0; i < valueSize; ++i) + { + printf("%08x", value[i]); + } + + printf("\n"); +} diff --git a/src/GOST/print_data.h b/src/GOST/print_data.h new file mode 100644 index 0000000000000000000000000000000000000000..3effd9efc1a4cd7af172c1b012bd7da8ab2d77dd --- /dev/null +++ b/src/GOST/print_data.h @@ -0,0 +1,76 @@ +/** @file + * @brief Îáúÿâëåíèå ôóíêöèé âûâîäà èíôîðìàöèè íà ýêðàí + * + * @copyright InfoTeCS. All rights reserved. + */ + +#ifndef PRINT_DATA_H +#define PRINT_DATA_H + +#include "dll_import.h" + +/** @brief øèðèíà âûâîäèìîé ñòðîêè â ñèìâîëàõ */ +#define LINE_WIDTH 60 + +/** @brief äëèíà òàáóëÿöèè â ñèìâîëàõ */ +#define TAB_WIDTH 4 + +/** @brief Âûâîäèò ðåçóëüòàòû òåñòà + * + * @param[in] caption çàãîëîâîê òåñòà + * @param[in] result ðåçóëüòàò òåñòà + */ +int PrintTest(const char* caption, int result); + +/** @brief Âûâîäèò ñèìâîë */ +void PrintCharSingle(char c); + +/** @brief Âûâîäèò ïîâòîðÿþùèé ñèìâîë c count ðàç */ +void PrintChar(char c, size_t count); + +/** @brief Âûâîäèò ñòðîêó çàêàí÷èâàþùóþñÿ íóëåì */ +void PrintStr(const char* s); + +/** @brief Âûâîäèò ñòðîêó çàêàí÷èâàþùóþñÿ íóëåì äîïîëíÿÿ åå ïðîáåëàìè äî çàäàíííîé øèðèíû */ +void PrintStrAlign(const char* s, size_t width); + +/** @brief Âûâîäèò ñòðîêó çàêàí÷èâàþùóþñÿ íóëåì è ïåðåâîäèò êîðåòêó íà ñëåäóþùóþ ñòðîêó */ +void PrintLine(const char* line); + +/** @brief Ïåðåâîäèò êîðåòêó íà ñëåäóþùóþ ñòðîêó */ +void PrintEmptyLine(); + +/** @brief Âûâîäèò ñòðîêó ñìåùÿÿ íà÷àëî ñòðîêè â ïðàâî íà çàäàííîå êîëè÷åñòâî ïîçèöèé */ +void PrintLineLeft(const char* label); + +/** @brief Âûâîäèò ñòðîêó ðàçäåëèòåëü */ +void PrintSplitLine(); + +/** @brief Âûâîäèò ðàçäåëèòåëü, ñòðîêó è ïåðåâîäèò êîðåòêó íà ñëåäóþùóþ ñòðîêó */ +void PrintLabel(const char* label); + +/** @brief Âûâîäèò îäèí áàéò â HEX ïðåäñòàâëåíèè */ +void PrintHex(unsigned char value); + +/** @brief Âûâîäèò ìàññèâ áàéò â HEX ïðåäñòàâëåíèè */ +void PrintHexArray(unsigned char* value, size_t size); + +/** @brief Âûâîäèò int32 ÷èñëî â HEX ïðåäñòàâëåíèè */ +void PrintUInt32(unsigned int d); + +/** @brief Âûâîäèò áëîê äàííûõ */ +void PrintBlock(const char* label, unsigned char* value, size_t valueSize, size_t blockSize); + +/** @brief Âûâîäèò áëîê äàííûõ */ +void PrintBlockInt(const char* label, unsigned int value); + +/** @brief Âûâîäèò áëîê äàííûõ */ +void PrintBlockLeft(const char* label, unsigned int value); + +/** @brief callback äëÿ âûâîäà ìàññèâà byte */ +void DLL_IMPORT print_array(const char* label, unsigned char* value, unsigned int valueSize); + +/** @brief callback äëÿ âûâîäà ìàññèâà unsigned int32 */ +void DLL_IMPORT print_uint_array(const char* label, unsigned int* value, unsigned int valueSize); + +#endif diff --git a/src/GOST/table.h b/src/GOST/table.h new file mode 100644 index 0000000000000000000000000000000000000000..0932fcb620ca7437f400ad46c3a6547841e7f264 --- /dev/null +++ b/src/GOST/table.h @@ -0,0 +1,8205 @@ +#ifndef TABLE_H +#define TABLE_H + +/** @brief òàáëèöà äëÿ óìíîæåíèÿ */ +static const unsigned char multTable[] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, + 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, + 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, + 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, + 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, + 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, + 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, + 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, + 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E, + 0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E, + 0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 0x3C, 0x3E, + 0x40, 0x42, 0x44, 0x46, 0x48, 0x4A, 0x4C, 0x4E, + 0x50, 0x52, 0x54, 0x56, 0x58, 0x5A, 0x5C, 0x5E, + 0x60, 0x62, 0x64, 0x66, 0x68, 0x6A, 0x6C, 0x6E, + 0x70, 0x72, 0x74, 0x76, 0x78, 0x7A, 0x7C, 0x7E, + 0x80, 0x82, 0x84, 0x86, 0x88, 0x8A, 0x8C, 0x8E, + 0x90, 0x92, 0x94, 0x96, 0x98, 0x9A, 0x9C, 0x9E, + 0xA0, 0xA2, 0xA4, 0xA6, 0xA8, 0xAA, 0xAC, 0xAE, + 0xB0, 0xB2, 0xB4, 0xB6, 0xB8, 0xBA, 0xBC, 0xBE, + 0xC0, 0xC2, 0xC4, 0xC6, 0xC8, 0xCA, 0xCC, 0xCE, + 0xD0, 0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC, 0xDE, + 0xE0, 0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE, + 0xF0, 0xF2, 0xF4, 0xF6, 0xF8, 0xFA, 0xFC, 0xFE, + 0xC3, 0xC1, 0xC7, 0xC5, 0xCB, 0xC9, 0xCF, 0xCD, + 0xD3, 0xD1, 0xD7, 0xD5, 0xDB, 0xD9, 0xDF, 0xDD, + 0xE3, 0xE1, 0xE7, 0xE5, 0xEB, 0xE9, 0xEF, 0xED, + 0xF3, 0xF1, 0xF7, 0xF5, 0xFB, 0xF9, 0xFF, 0xFD, + 0x83, 0x81, 0x87, 0x85, 0x8B, 0x89, 0x8F, 0x8D, + 0x93, 0x91, 0x97, 0x95, 0x9B, 0x99, 0x9F, 0x9D, + 0xA3, 0xA1, 0xA7, 0xA5, 0xAB, 0xA9, 0xAF, 0xAD, + 0xB3, 0xB1, 0xB7, 0xB5, 0xBB, 0xB9, 0xBF, 0xBD, + 0x43, 0x41, 0x47, 0x45, 0x4B, 0x49, 0x4F, 0x4D, + 0x53, 0x51, 0x57, 0x55, 0x5B, 0x59, 0x5F, 0x5D, + 0x63, 0x61, 0x67, 0x65, 0x6B, 0x69, 0x6F, 0x6D, + 0x73, 0x71, 0x77, 0x75, 0x7B, 0x79, 0x7F, 0x7D, + 0x03, 0x01, 0x07, 0x05, 0x0B, 0x09, 0x0F, 0x0D, + 0x13, 0x11, 0x17, 0x15, 0x1B, 0x19, 0x1F, 0x1D, + 0x23, 0x21, 0x27, 0x25, 0x2B, 0x29, 0x2F, 0x2D, + 0x33, 0x31, 0x37, 0x35, 0x3B, 0x39, 0x3F, 0x3D, + 0x00, 0x03, 0x06, 0x05, 0x0C, 0x0F, 0x0A, 0x09, + 0x18, 0x1B, 0x1E, 0x1D, 0x14, 0x17, 0x12, 0x11, + 0x30, 0x33, 0x36, 0x35, 0x3C, 0x3F, 0x3A, 0x39, + 0x28, 0x2B, 0x2E, 0x2D, 0x24, 0x27, 0x22, 0x21, + 0x60, 0x63, 0x66, 0x65, 0x6C, 0x6F, 0x6A, 0x69, + 0x78, 0x7B, 0x7E, 0x7D, 0x74, 0x77, 0x72, 0x71, + 0x50, 0x53, 0x56, 0x55, 0x5C, 0x5F, 0x5A, 0x59, + 0x48, 0x4B, 0x4E, 0x4D, 0x44, 0x47, 0x42, 0x41, + 0xC0, 0xC3, 0xC6, 0xC5, 0xCC, 0xCF, 0xCA, 0xC9, + 0xD8, 0xDB, 0xDE, 0xDD, 0xD4, 0xD7, 0xD2, 0xD1, + 0xF0, 0xF3, 0xF6, 0xF5, 0xFC, 0xFF, 0xFA, 0xF9, + 0xE8, 0xEB, 0xEE, 0xED, 0xE4, 0xE7, 0xE2, 0xE1, + 0xA0, 0xA3, 0xA6, 0xA5, 0xAC, 0xAF, 0xAA, 0xA9, + 0xB8, 0xBB, 0xBE, 0xBD, 0xB4, 0xB7, 0xB2, 0xB1, + 0x90, 0x93, 0x96, 0x95, 0x9C, 0x9F, 0x9A, 0x99, + 0x88, 0x8B, 0x8E, 0x8D, 0x84, 0x87, 0x82, 0x81, + 0x43, 0x40, 0x45, 0x46, 0x4F, 0x4C, 0x49, 0x4A, + 0x5B, 0x58, 0x5D, 0x5E, 0x57, 0x54, 0x51, 0x52, + 0x73, 0x70, 0x75, 0x76, 0x7F, 0x7C, 0x79, 0x7A, + 0x6B, 0x68, 0x6D, 0x6E, 0x67, 0x64, 0x61, 0x62, + 0x23, 0x20, 0x25, 0x26, 0x2F, 0x2C, 0x29, 0x2A, + 0x3B, 0x38, 0x3D, 0x3E, 0x37, 0x34, 0x31, 0x32, + 0x13, 0x10, 0x15, 0x16, 0x1F, 0x1C, 0x19, 0x1A, + 0x0B, 0x08, 0x0D, 0x0E, 0x07, 0x04, 0x01, 0x02, + 0x83, 0x80, 0x85, 0x86, 0x8F, 0x8C, 0x89, 0x8A, + 0x9B, 0x98, 0x9D, 0x9E, 0x97, 0x94, 0x91, 0x92, + 0xB3, 0xB0, 0xB5, 0xB6, 0xBF, 0xBC, 0xB9, 0xBA, + 0xAB, 0xA8, 0xAD, 0xAE, 0xA7, 0xA4, 0xA1, 0xA2, + 0xE3, 0xE0, 0xE5, 0xE6, 0xEF, 0xEC, 0xE9, 0xEA, + 0xFB, 0xF8, 0xFD, 0xFE, 0xF7, 0xF4, 0xF1, 0xF2, + 0xD3, 0xD0, 0xD5, 0xD6, 0xDF, 0xDC, 0xD9, 0xDA, + 0xCB, 0xC8, 0xCD, 0xCE, 0xC7, 0xC4, 0xC1, 0xC2, + 0x00, 0x04, 0x08, 0x0C, 0x10, 0x14, 0x18, 0x1C, + 0x20, 0x24, 0x28, 0x2C, 0x30, 0x34, 0x38, 0x3C, + 0x40, 0x44, 0x48, 0x4C, 0x50, 0x54, 0x58, 0x5C, + 0x60, 0x64, 0x68, 0x6C, 0x70, 0x74, 0x78, 0x7C, + 0x80, 0x84, 0x88, 0x8C, 0x90, 0x94, 0x98, 0x9C, + 0xA0, 0xA4, 0xA8, 0xAC, 0xB0, 0xB4, 0xB8, 0xBC, + 0xC0, 0xC4, 0xC8, 0xCC, 0xD0, 0xD4, 0xD8, 0xDC, + 0xE0, 0xE4, 0xE8, 0xEC, 0xF0, 0xF4, 0xF8, 0xFC, + 0xC3, 0xC7, 0xCB, 0xCF, 0xD3, 0xD7, 0xDB, 0xDF, + 0xE3, 0xE7, 0xEB, 0xEF, 0xF3, 0xF7, 0xFB, 0xFF, + 0x83, 0x87, 0x8B, 0x8F, 0x93, 0x97, 0x9B, 0x9F, + 0xA3, 0xA7, 0xAB, 0xAF, 0xB3, 0xB7, 0xBB, 0xBF, + 0x43, 0x47, 0x4B, 0x4F, 0x53, 0x57, 0x5B, 0x5F, + 0x63, 0x67, 0x6B, 0x6F, 0x73, 0x77, 0x7B, 0x7F, + 0x03, 0x07, 0x0B, 0x0F, 0x13, 0x17, 0x1B, 0x1F, + 0x23, 0x27, 0x2B, 0x2F, 0x33, 0x37, 0x3B, 0x3F, + 0x45, 0x41, 0x4D, 0x49, 0x55, 0x51, 0x5D, 0x59, + 0x65, 0x61, 0x6D, 0x69, 0x75, 0x71, 0x7D, 0x79, + 0x05, 0x01, 0x0D, 0x09, 0x15, 0x11, 0x1D, 0x19, + 0x25, 0x21, 0x2D, 0x29, 0x35, 0x31, 0x3D, 0x39, + 0xC5, 0xC1, 0xCD, 0xC9, 0xD5, 0xD1, 0xDD, 0xD9, + 0xE5, 0xE1, 0xED, 0xE9, 0xF5, 0xF1, 0xFD, 0xF9, + 0x85, 0x81, 0x8D, 0x89, 0x95, 0x91, 0x9D, 0x99, + 0xA5, 0xA1, 0xAD, 0xA9, 0xB5, 0xB1, 0xBD, 0xB9, + 0x86, 0x82, 0x8E, 0x8A, 0x96, 0x92, 0x9E, 0x9A, + 0xA6, 0xA2, 0xAE, 0xAA, 0xB6, 0xB2, 0xBE, 0xBA, + 0xC6, 0xC2, 0xCE, 0xCA, 0xD6, 0xD2, 0xDE, 0xDA, + 0xE6, 0xE2, 0xEE, 0xEA, 0xF6, 0xF2, 0xFE, 0xFA, + 0x06, 0x02, 0x0E, 0x0A, 0x16, 0x12, 0x1E, 0x1A, + 0x26, 0x22, 0x2E, 0x2A, 0x36, 0x32, 0x3E, 0x3A, + 0x46, 0x42, 0x4E, 0x4A, 0x56, 0x52, 0x5E, 0x5A, + 0x66, 0x62, 0x6E, 0x6A, 0x76, 0x72, 0x7E, 0x7A, + 0x00, 0x05, 0x0A, 0x0F, 0x14, 0x11, 0x1E, 0x1B, + 0x28, 0x2D, 0x22, 0x27, 0x3C, 0x39, 0x36, 0x33, + 0x50, 0x55, 0x5A, 0x5F, 0x44, 0x41, 0x4E, 0x4B, + 0x78, 0x7D, 0x72, 0x77, 0x6C, 0x69, 0x66, 0x63, + 0xA0, 0xA5, 0xAA, 0xAF, 0xB4, 0xB1, 0xBE, 0xBB, + 0x88, 0x8D, 0x82, 0x87, 0x9C, 0x99, 0x96, 0x93, + 0xF0, 0xF5, 0xFA, 0xFF, 0xE4, 0xE1, 0xEE, 0xEB, + 0xD8, 0xDD, 0xD2, 0xD7, 0xCC, 0xC9, 0xC6, 0xC3, + 0x83, 0x86, 0x89, 0x8C, 0x97, 0x92, 0x9D, 0x98, + 0xAB, 0xAE, 0xA1, 0xA4, 0xBF, 0xBA, 0xB5, 0xB0, + 0xD3, 0xD6, 0xD9, 0xDC, 0xC7, 0xC2, 0xCD, 0xC8, + 0xFB, 0xFE, 0xF1, 0xF4, 0xEF, 0xEA, 0xE5, 0xE0, + 0x23, 0x26, 0x29, 0x2C, 0x37, 0x32, 0x3D, 0x38, + 0x0B, 0x0E, 0x01, 0x04, 0x1F, 0x1A, 0x15, 0x10, + 0x73, 0x76, 0x79, 0x7C, 0x67, 0x62, 0x6D, 0x68, + 0x5B, 0x5E, 0x51, 0x54, 0x4F, 0x4A, 0x45, 0x40, + 0xC5, 0xC0, 0xCF, 0xCA, 0xD1, 0xD4, 0xDB, 0xDE, + 0xED, 0xE8, 0xE7, 0xE2, 0xF9, 0xFC, 0xF3, 0xF6, + 0x95, 0x90, 0x9F, 0x9A, 0x81, 0x84, 0x8B, 0x8E, + 0xBD, 0xB8, 0xB7, 0xB2, 0xA9, 0xAC, 0xA3, 0xA6, + 0x65, 0x60, 0x6F, 0x6A, 0x71, 0x74, 0x7B, 0x7E, + 0x4D, 0x48, 0x47, 0x42, 0x59, 0x5C, 0x53, 0x56, + 0x35, 0x30, 0x3F, 0x3A, 0x21, 0x24, 0x2B, 0x2E, + 0x1D, 0x18, 0x17, 0x12, 0x09, 0x0C, 0x03, 0x06, + 0x46, 0x43, 0x4C, 0x49, 0x52, 0x57, 0x58, 0x5D, + 0x6E, 0x6B, 0x64, 0x61, 0x7A, 0x7F, 0x70, 0x75, + 0x16, 0x13, 0x1C, 0x19, 0x02, 0x07, 0x08, 0x0D, + 0x3E, 0x3B, 0x34, 0x31, 0x2A, 0x2F, 0x20, 0x25, + 0xE6, 0xE3, 0xEC, 0xE9, 0xF2, 0xF7, 0xF8, 0xFD, + 0xCE, 0xCB, 0xC4, 0xC1, 0xDA, 0xDF, 0xD0, 0xD5, + 0xB6, 0xB3, 0xBC, 0xB9, 0xA2, 0xA7, 0xA8, 0xAD, + 0x9E, 0x9B, 0x94, 0x91, 0x8A, 0x8F, 0x80, 0x85, + 0x00, 0x06, 0x0C, 0x0A, 0x18, 0x1E, 0x14, 0x12, + 0x30, 0x36, 0x3C, 0x3A, 0x28, 0x2E, 0x24, 0x22, + 0x60, 0x66, 0x6C, 0x6A, 0x78, 0x7E, 0x74, 0x72, + 0x50, 0x56, 0x5C, 0x5A, 0x48, 0x4E, 0x44, 0x42, + 0xC0, 0xC6, 0xCC, 0xCA, 0xD8, 0xDE, 0xD4, 0xD2, + 0xF0, 0xF6, 0xFC, 0xFA, 0xE8, 0xEE, 0xE4, 0xE2, + 0xA0, 0xA6, 0xAC, 0xAA, 0xB8, 0xBE, 0xB4, 0xB2, + 0x90, 0x96, 0x9C, 0x9A, 0x88, 0x8E, 0x84, 0x82, + 0x43, 0x45, 0x4F, 0x49, 0x5B, 0x5D, 0x57, 0x51, + 0x73, 0x75, 0x7F, 0x79, 0x6B, 0x6D, 0x67, 0x61, + 0x23, 0x25, 0x2F, 0x29, 0x3B, 0x3D, 0x37, 0x31, + 0x13, 0x15, 0x1F, 0x19, 0x0B, 0x0D, 0x07, 0x01, + 0x83, 0x85, 0x8F, 0x89, 0x9B, 0x9D, 0x97, 0x91, + 0xB3, 0xB5, 0xBF, 0xB9, 0xAB, 0xAD, 0xA7, 0xA1, + 0xE3, 0xE5, 0xEF, 0xE9, 0xFB, 0xFD, 0xF7, 0xF1, + 0xD3, 0xD5, 0xDF, 0xD9, 0xCB, 0xCD, 0xC7, 0xC1, + 0x86, 0x80, 0x8A, 0x8C, 0x9E, 0x98, 0x92, 0x94, + 0xB6, 0xB0, 0xBA, 0xBC, 0xAE, 0xA8, 0xA2, 0xA4, + 0xE6, 0xE0, 0xEA, 0xEC, 0xFE, 0xF8, 0xF2, 0xF4, + 0xD6, 0xD0, 0xDA, 0xDC, 0xCE, 0xC8, 0xC2, 0xC4, + 0x46, 0x40, 0x4A, 0x4C, 0x5E, 0x58, 0x52, 0x54, + 0x76, 0x70, 0x7A, 0x7C, 0x6E, 0x68, 0x62, 0x64, + 0x26, 0x20, 0x2A, 0x2C, 0x3E, 0x38, 0x32, 0x34, + 0x16, 0x10, 0x1A, 0x1C, 0x0E, 0x08, 0x02, 0x04, + 0xC5, 0xC3, 0xC9, 0xCF, 0xDD, 0xDB, 0xD1, 0xD7, + 0xF5, 0xF3, 0xF9, 0xFF, 0xED, 0xEB, 0xE1, 0xE7, + 0xA5, 0xA3, 0xA9, 0xAF, 0xBD, 0xBB, 0xB1, 0xB7, + 0x95, 0x93, 0x99, 0x9F, 0x8D, 0x8B, 0x81, 0x87, + 0x05, 0x03, 0x09, 0x0F, 0x1D, 0x1B, 0x11, 0x17, + 0x35, 0x33, 0x39, 0x3F, 0x2D, 0x2B, 0x21, 0x27, + 0x65, 0x63, 0x69, 0x6F, 0x7D, 0x7B, 0x71, 0x77, + 0x55, 0x53, 0x59, 0x5F, 0x4D, 0x4B, 0x41, 0x47, + 0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, + 0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D, + 0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65, + 0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D, + 0xE0, 0xE7, 0xEE, 0xE9, 0xFC, 0xFB, 0xF2, 0xF5, + 0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD, + 0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85, + 0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD, + 0x03, 0x04, 0x0D, 0x0A, 0x1F, 0x18, 0x11, 0x16, + 0x3B, 0x3C, 0x35, 0x32, 0x27, 0x20, 0x29, 0x2E, + 0x73, 0x74, 0x7D, 0x7A, 0x6F, 0x68, 0x61, 0x66, + 0x4B, 0x4C, 0x45, 0x42, 0x57, 0x50, 0x59, 0x5E, + 0xE3, 0xE4, 0xED, 0xEA, 0xFF, 0xF8, 0xF1, 0xF6, + 0xDB, 0xDC, 0xD5, 0xD2, 0xC7, 0xC0, 0xC9, 0xCE, + 0x93, 0x94, 0x9D, 0x9A, 0x8F, 0x88, 0x81, 0x86, + 0xAB, 0xAC, 0xA5, 0xA2, 0xB7, 0xB0, 0xB9, 0xBE, + 0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13, + 0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B, + 0x76, 0x71, 0x78, 0x7F, 0x6A, 0x6D, 0x64, 0x63, + 0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B, + 0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3, + 0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, + 0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83, + 0xAE, 0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB, + 0x05, 0x02, 0x0B, 0x0C, 0x19, 0x1E, 0x17, 0x10, + 0x3D, 0x3A, 0x33, 0x34, 0x21, 0x26, 0x2F, 0x28, + 0x75, 0x72, 0x7B, 0x7C, 0x69, 0x6E, 0x67, 0x60, + 0x4D, 0x4A, 0x43, 0x44, 0x51, 0x56, 0x5F, 0x58, + 0xE5, 0xE2, 0xEB, 0xEC, 0xF9, 0xFE, 0xF7, 0xF0, + 0xDD, 0xDA, 0xD3, 0xD4, 0xC1, 0xC6, 0xCF, 0xC8, + 0x95, 0x92, 0x9B, 0x9C, 0x89, 0x8E, 0x87, 0x80, + 0xAD, 0xAA, 0xA3, 0xA4, 0xB1, 0xB6, 0xBF, 0xB8, + 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, + 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78, + 0x80, 0x88, 0x90, 0x98, 0xA0, 0xA8, 0xB0, 0xB8, + 0xC0, 0xC8, 0xD0, 0xD8, 0xE0, 0xE8, 0xF0, 0xF8, + 0xC3, 0xCB, 0xD3, 0xDB, 0xE3, 0xEB, 0xF3, 0xFB, + 0x83, 0x8B, 0x93, 0x9B, 0xA3, 0xAB, 0xB3, 0xBB, + 0x43, 0x4B, 0x53, 0x5B, 0x63, 0x6B, 0x73, 0x7B, + 0x03, 0x0B, 0x13, 0x1B, 0x23, 0x2B, 0x33, 0x3B, + 0x45, 0x4D, 0x55, 0x5D, 0x65, 0x6D, 0x75, 0x7D, + 0x05, 0x0D, 0x15, 0x1D, 0x25, 0x2D, 0x35, 0x3D, + 0xC5, 0xCD, 0xD5, 0xDD, 0xE5, 0xED, 0xF5, 0xFD, + 0x85, 0x8D, 0x95, 0x9D, 0xA5, 0xAD, 0xB5, 0xBD, + 0x86, 0x8E, 0x96, 0x9E, 0xA6, 0xAE, 0xB6, 0xBE, + 0xC6, 0xCE, 0xD6, 0xDE, 0xE6, 0xEE, 0xF6, 0xFE, + 0x06, 0x0E, 0x16, 0x1E, 0x26, 0x2E, 0x36, 0x3E, + 0x46, 0x4E, 0x56, 0x5E, 0x66, 0x6E, 0x76, 0x7E, + 0x8A, 0x82, 0x9A, 0x92, 0xAA, 0xA2, 0xBA, 0xB2, + 0xCA, 0xC2, 0xDA, 0xD2, 0xEA, 0xE2, 0xFA, 0xF2, + 0x0A, 0x02, 0x1A, 0x12, 0x2A, 0x22, 0x3A, 0x32, + 0x4A, 0x42, 0x5A, 0x52, 0x6A, 0x62, 0x7A, 0x72, + 0x49, 0x41, 0x59, 0x51, 0x69, 0x61, 0x79, 0x71, + 0x09, 0x01, 0x19, 0x11, 0x29, 0x21, 0x39, 0x31, + 0xC9, 0xC1, 0xD9, 0xD1, 0xE9, 0xE1, 0xF9, 0xF1, + 0x89, 0x81, 0x99, 0x91, 0xA9, 0xA1, 0xB9, 0xB1, + 0xCF, 0xC7, 0xDF, 0xD7, 0xEF, 0xE7, 0xFF, 0xF7, + 0x8F, 0x87, 0x9F, 0x97, 0xAF, 0xA7, 0xBF, 0xB7, + 0x4F, 0x47, 0x5F, 0x57, 0x6F, 0x67, 0x7F, 0x77, + 0x0F, 0x07, 0x1F, 0x17, 0x2F, 0x27, 0x3F, 0x37, + 0x0C, 0x04, 0x1C, 0x14, 0x2C, 0x24, 0x3C, 0x34, + 0x4C, 0x44, 0x5C, 0x54, 0x6C, 0x64, 0x7C, 0x74, + 0x8C, 0x84, 0x9C, 0x94, 0xAC, 0xA4, 0xBC, 0xB4, + 0xCC, 0xC4, 0xDC, 0xD4, 0xEC, 0xE4, 0xFC, 0xF4, + 0x00, 0x09, 0x12, 0x1B, 0x24, 0x2D, 0x36, 0x3F, + 0x48, 0x41, 0x5A, 0x53, 0x6C, 0x65, 0x7E, 0x77, + 0x90, 0x99, 0x82, 0x8B, 0xB4, 0xBD, 0xA6, 0xAF, + 0xD8, 0xD1, 0xCA, 0xC3, 0xFC, 0xF5, 0xEE, 0xE7, + 0xE3, 0xEA, 0xF1, 0xF8, 0xC7, 0xCE, 0xD5, 0xDC, + 0xAB, 0xA2, 0xB9, 0xB0, 0x8F, 0x86, 0x9D, 0x94, + 0x73, 0x7A, 0x61, 0x68, 0x57, 0x5E, 0x45, 0x4C, + 0x3B, 0x32, 0x29, 0x20, 0x1F, 0x16, 0x0D, 0x04, + 0x05, 0x0C, 0x17, 0x1E, 0x21, 0x28, 0x33, 0x3A, + 0x4D, 0x44, 0x5F, 0x56, 0x69, 0x60, 0x7B, 0x72, + 0x95, 0x9C, 0x87, 0x8E, 0xB1, 0xB8, 0xA3, 0xAA, + 0xDD, 0xD4, 0xCF, 0xC6, 0xF9, 0xF0, 0xEB, 0xE2, + 0xE6, 0xEF, 0xF4, 0xFD, 0xC2, 0xCB, 0xD0, 0xD9, + 0xAE, 0xA7, 0xBC, 0xB5, 0x8A, 0x83, 0x98, 0x91, + 0x76, 0x7F, 0x64, 0x6D, 0x52, 0x5B, 0x40, 0x49, + 0x3E, 0x37, 0x2C, 0x25, 0x1A, 0x13, 0x08, 0x01, + 0x0A, 0x03, 0x18, 0x11, 0x2E, 0x27, 0x3C, 0x35, + 0x42, 0x4B, 0x50, 0x59, 0x66, 0x6F, 0x74, 0x7D, + 0x9A, 0x93, 0x88, 0x81, 0xBE, 0xB7, 0xAC, 0xA5, + 0xD2, 0xDB, 0xC0, 0xC9, 0xF6, 0xFF, 0xE4, 0xED, + 0xE9, 0xE0, 0xFB, 0xF2, 0xCD, 0xC4, 0xDF, 0xD6, + 0xA1, 0xA8, 0xB3, 0xBA, 0x85, 0x8C, 0x97, 0x9E, + 0x79, 0x70, 0x6B, 0x62, 0x5D, 0x54, 0x4F, 0x46, + 0x31, 0x38, 0x23, 0x2A, 0x15, 0x1C, 0x07, 0x0E, + 0x0F, 0x06, 0x1D, 0x14, 0x2B, 0x22, 0x39, 0x30, + 0x47, 0x4E, 0x55, 0x5C, 0x63, 0x6A, 0x71, 0x78, + 0x9F, 0x96, 0x8D, 0x84, 0xBB, 0xB2, 0xA9, 0xA0, + 0xD7, 0xDE, 0xC5, 0xCC, 0xF3, 0xFA, 0xE1, 0xE8, + 0xEC, 0xE5, 0xFE, 0xF7, 0xC8, 0xC1, 0xDA, 0xD3, + 0xA4, 0xAD, 0xB6, 0xBF, 0x80, 0x89, 0x92, 0x9B, + 0x7C, 0x75, 0x6E, 0x67, 0x58, 0x51, 0x4A, 0x43, + 0x34, 0x3D, 0x26, 0x2F, 0x10, 0x19, 0x02, 0x0B, + 0x00, 0x0A, 0x14, 0x1E, 0x28, 0x22, 0x3C, 0x36, + 0x50, 0x5A, 0x44, 0x4E, 0x78, 0x72, 0x6C, 0x66, + 0xA0, 0xAA, 0xB4, 0xBE, 0x88, 0x82, 0x9C, 0x96, + 0xF0, 0xFA, 0xE4, 0xEE, 0xD8, 0xD2, 0xCC, 0xC6, + 0x83, 0x89, 0x97, 0x9D, 0xAB, 0xA1, 0xBF, 0xB5, + 0xD3, 0xD9, 0xC7, 0xCD, 0xFB, 0xF1, 0xEF, 0xE5, + 0x23, 0x29, 0x37, 0x3D, 0x0B, 0x01, 0x1F, 0x15, + 0x73, 0x79, 0x67, 0x6D, 0x5B, 0x51, 0x4F, 0x45, + 0xC5, 0xCF, 0xD1, 0xDB, 0xED, 0xE7, 0xF9, 0xF3, + 0x95, 0x9F, 0x81, 0x8B, 0xBD, 0xB7, 0xA9, 0xA3, + 0x65, 0x6F, 0x71, 0x7B, 0x4D, 0x47, 0x59, 0x53, + 0x35, 0x3F, 0x21, 0x2B, 0x1D, 0x17, 0x09, 0x03, + 0x46, 0x4C, 0x52, 0x58, 0x6E, 0x64, 0x7A, 0x70, + 0x16, 0x1C, 0x02, 0x08, 0x3E, 0x34, 0x2A, 0x20, + 0xE6, 0xEC, 0xF2, 0xF8, 0xCE, 0xC4, 0xDA, 0xD0, + 0xB6, 0xBC, 0xA2, 0xA8, 0x9E, 0x94, 0x8A, 0x80, + 0x49, 0x43, 0x5D, 0x57, 0x61, 0x6B, 0x75, 0x7F, + 0x19, 0x13, 0x0D, 0x07, 0x31, 0x3B, 0x25, 0x2F, + 0xE9, 0xE3, 0xFD, 0xF7, 0xC1, 0xCB, 0xD5, 0xDF, + 0xB9, 0xB3, 0xAD, 0xA7, 0x91, 0x9B, 0x85, 0x8F, + 0xCA, 0xC0, 0xDE, 0xD4, 0xE2, 0xE8, 0xF6, 0xFC, + 0x9A, 0x90, 0x8E, 0x84, 0xB2, 0xB8, 0xA6, 0xAC, + 0x6A, 0x60, 0x7E, 0x74, 0x42, 0x48, 0x56, 0x5C, + 0x3A, 0x30, 0x2E, 0x24, 0x12, 0x18, 0x06, 0x0C, + 0x8C, 0x86, 0x98, 0x92, 0xA4, 0xAE, 0xB0, 0xBA, + 0xDC, 0xD6, 0xC8, 0xC2, 0xF4, 0xFE, 0xE0, 0xEA, + 0x2C, 0x26, 0x38, 0x32, 0x04, 0x0E, 0x10, 0x1A, + 0x7C, 0x76, 0x68, 0x62, 0x54, 0x5E, 0x40, 0x4A, + 0x0F, 0x05, 0x1B, 0x11, 0x27, 0x2D, 0x33, 0x39, + 0x5F, 0x55, 0x4B, 0x41, 0x77, 0x7D, 0x63, 0x69, + 0xAF, 0xA5, 0xBB, 0xB1, 0x87, 0x8D, 0x93, 0x99, + 0xFF, 0xF5, 0xEB, 0xE1, 0xD7, 0xDD, 0xC3, 0xC9, + 0x00, 0x0B, 0x16, 0x1D, 0x2C, 0x27, 0x3A, 0x31, + 0x58, 0x53, 0x4E, 0x45, 0x74, 0x7F, 0x62, 0x69, + 0xB0, 0xBB, 0xA6, 0xAD, 0x9C, 0x97, 0x8A, 0x81, + 0xE8, 0xE3, 0xFE, 0xF5, 0xC4, 0xCF, 0xD2, 0xD9, + 0xA3, 0xA8, 0xB5, 0xBE, 0x8F, 0x84, 0x99, 0x92, + 0xFB, 0xF0, 0xED, 0xE6, 0xD7, 0xDC, 0xC1, 0xCA, + 0x13, 0x18, 0x05, 0x0E, 0x3F, 0x34, 0x29, 0x22, + 0x4B, 0x40, 0x5D, 0x56, 0x67, 0x6C, 0x71, 0x7A, + 0x85, 0x8E, 0x93, 0x98, 0xA9, 0xA2, 0xBF, 0xB4, + 0xDD, 0xD6, 0xCB, 0xC0, 0xF1, 0xFA, 0xE7, 0xEC, + 0x35, 0x3E, 0x23, 0x28, 0x19, 0x12, 0x0F, 0x04, + 0x6D, 0x66, 0x7B, 0x70, 0x41, 0x4A, 0x57, 0x5C, + 0x26, 0x2D, 0x30, 0x3B, 0x0A, 0x01, 0x1C, 0x17, + 0x7E, 0x75, 0x68, 0x63, 0x52, 0x59, 0x44, 0x4F, + 0x96, 0x9D, 0x80, 0x8B, 0xBA, 0xB1, 0xAC, 0xA7, + 0xCE, 0xC5, 0xD8, 0xD3, 0xE2, 0xE9, 0xF4, 0xFF, + 0xC9, 0xC2, 0xDF, 0xD4, 0xE5, 0xEE, 0xF3, 0xF8, + 0x91, 0x9A, 0x87, 0x8C, 0xBD, 0xB6, 0xAB, 0xA0, + 0x79, 0x72, 0x6F, 0x64, 0x55, 0x5E, 0x43, 0x48, + 0x21, 0x2A, 0x37, 0x3C, 0x0D, 0x06, 0x1B, 0x10, + 0x6A, 0x61, 0x7C, 0x77, 0x46, 0x4D, 0x50, 0x5B, + 0x32, 0x39, 0x24, 0x2F, 0x1E, 0x15, 0x08, 0x03, + 0xDA, 0xD1, 0xCC, 0xC7, 0xF6, 0xFD, 0xE0, 0xEB, + 0x82, 0x89, 0x94, 0x9F, 0xAE, 0xA5, 0xB8, 0xB3, + 0x4C, 0x47, 0x5A, 0x51, 0x60, 0x6B, 0x76, 0x7D, + 0x14, 0x1F, 0x02, 0x09, 0x38, 0x33, 0x2E, 0x25, + 0xFC, 0xF7, 0xEA, 0xE1, 0xD0, 0xDB, 0xC6, 0xCD, + 0xA4, 0xAF, 0xB2, 0xB9, 0x88, 0x83, 0x9E, 0x95, + 0xEF, 0xE4, 0xF9, 0xF2, 0xC3, 0xC8, 0xD5, 0xDE, + 0xB7, 0xBC, 0xA1, 0xAA, 0x9B, 0x90, 0x8D, 0x86, + 0x5F, 0x54, 0x49, 0x42, 0x73, 0x78, 0x65, 0x6E, + 0x07, 0x0C, 0x11, 0x1A, 0x2B, 0x20, 0x3D, 0x36, + 0x00, 0x0C, 0x18, 0x14, 0x30, 0x3C, 0x28, 0x24, + 0x60, 0x6C, 0x78, 0x74, 0x50, 0x5C, 0x48, 0x44, + 0xC0, 0xCC, 0xD8, 0xD4, 0xF0, 0xFC, 0xE8, 0xE4, + 0xA0, 0xAC, 0xB8, 0xB4, 0x90, 0x9C, 0x88, 0x84, + 0x43, 0x4F, 0x5B, 0x57, 0x73, 0x7F, 0x6B, 0x67, + 0x23, 0x2F, 0x3B, 0x37, 0x13, 0x1F, 0x0B, 0x07, + 0x83, 0x8F, 0x9B, 0x97, 0xB3, 0xBF, 0xAB, 0xA7, + 0xE3, 0xEF, 0xFB, 0xF7, 0xD3, 0xDF, 0xCB, 0xC7, + 0x86, 0x8A, 0x9E, 0x92, 0xB6, 0xBA, 0xAE, 0xA2, + 0xE6, 0xEA, 0xFE, 0xF2, 0xD6, 0xDA, 0xCE, 0xC2, + 0x46, 0x4A, 0x5E, 0x52, 0x76, 0x7A, 0x6E, 0x62, + 0x26, 0x2A, 0x3E, 0x32, 0x16, 0x1A, 0x0E, 0x02, + 0xC5, 0xC9, 0xDD, 0xD1, 0xF5, 0xF9, 0xED, 0xE1, + 0xA5, 0xA9, 0xBD, 0xB1, 0x95, 0x99, 0x8D, 0x81, + 0x05, 0x09, 0x1D, 0x11, 0x35, 0x39, 0x2D, 0x21, + 0x65, 0x69, 0x7D, 0x71, 0x55, 0x59, 0x4D, 0x41, + 0xCF, 0xC3, 0xD7, 0xDB, 0xFF, 0xF3, 0xE7, 0xEB, + 0xAF, 0xA3, 0xB7, 0xBB, 0x9F, 0x93, 0x87, 0x8B, + 0x0F, 0x03, 0x17, 0x1B, 0x3F, 0x33, 0x27, 0x2B, + 0x6F, 0x63, 0x77, 0x7B, 0x5F, 0x53, 0x47, 0x4B, + 0x8C, 0x80, 0x94, 0x98, 0xBC, 0xB0, 0xA4, 0xA8, + 0xEC, 0xE0, 0xF4, 0xF8, 0xDC, 0xD0, 0xC4, 0xC8, + 0x4C, 0x40, 0x54, 0x58, 0x7C, 0x70, 0x64, 0x68, + 0x2C, 0x20, 0x34, 0x38, 0x1C, 0x10, 0x04, 0x08, + 0x49, 0x45, 0x51, 0x5D, 0x79, 0x75, 0x61, 0x6D, + 0x29, 0x25, 0x31, 0x3D, 0x19, 0x15, 0x01, 0x0D, + 0x89, 0x85, 0x91, 0x9D, 0xB9, 0xB5, 0xA1, 0xAD, + 0xE9, 0xE5, 0xF1, 0xFD, 0xD9, 0xD5, 0xC1, 0xCD, + 0x0A, 0x06, 0x12, 0x1E, 0x3A, 0x36, 0x22, 0x2E, + 0x6A, 0x66, 0x72, 0x7E, 0x5A, 0x56, 0x42, 0x4E, + 0xCA, 0xC6, 0xD2, 0xDE, 0xFA, 0xF6, 0xE2, 0xEE, + 0xAA, 0xA6, 0xB2, 0xBE, 0x9A, 0x96, 0x82, 0x8E, + 0x00, 0x0D, 0x1A, 0x17, 0x34, 0x39, 0x2E, 0x23, + 0x68, 0x65, 0x72, 0x7F, 0x5C, 0x51, 0x46, 0x4B, + 0xD0, 0xDD, 0xCA, 0xC7, 0xE4, 0xE9, 0xFE, 0xF3, + 0xB8, 0xB5, 0xA2, 0xAF, 0x8C, 0x81, 0x96, 0x9B, + 0x63, 0x6E, 0x79, 0x74, 0x57, 0x5A, 0x4D, 0x40, + 0x0B, 0x06, 0x11, 0x1C, 0x3F, 0x32, 0x25, 0x28, + 0xB3, 0xBE, 0xA9, 0xA4, 0x87, 0x8A, 0x9D, 0x90, + 0xDB, 0xD6, 0xC1, 0xCC, 0xEF, 0xE2, 0xF5, 0xF8, + 0xC6, 0xCB, 0xDC, 0xD1, 0xF2, 0xFF, 0xE8, 0xE5, + 0xAE, 0xA3, 0xB4, 0xB9, 0x9A, 0x97, 0x80, 0x8D, + 0x16, 0x1B, 0x0C, 0x01, 0x22, 0x2F, 0x38, 0x35, + 0x7E, 0x73, 0x64, 0x69, 0x4A, 0x47, 0x50, 0x5D, + 0xA5, 0xA8, 0xBF, 0xB2, 0x91, 0x9C, 0x8B, 0x86, + 0xCD, 0xC0, 0xD7, 0xDA, 0xF9, 0xF4, 0xE3, 0xEE, + 0x75, 0x78, 0x6F, 0x62, 0x41, 0x4C, 0x5B, 0x56, + 0x1D, 0x10, 0x07, 0x0A, 0x29, 0x24, 0x33, 0x3E, + 0x4F, 0x42, 0x55, 0x58, 0x7B, 0x76, 0x61, 0x6C, + 0x27, 0x2A, 0x3D, 0x30, 0x13, 0x1E, 0x09, 0x04, + 0x9F, 0x92, 0x85, 0x88, 0xAB, 0xA6, 0xB1, 0xBC, + 0xF7, 0xFA, 0xED, 0xE0, 0xC3, 0xCE, 0xD9, 0xD4, + 0x2C, 0x21, 0x36, 0x3B, 0x18, 0x15, 0x02, 0x0F, + 0x44, 0x49, 0x5E, 0x53, 0x70, 0x7D, 0x6A, 0x67, + 0xFC, 0xF1, 0xE6, 0xEB, 0xC8, 0xC5, 0xD2, 0xDF, + 0x94, 0x99, 0x8E, 0x83, 0xA0, 0xAD, 0xBA, 0xB7, + 0x89, 0x84, 0x93, 0x9E, 0xBD, 0xB0, 0xA7, 0xAA, + 0xE1, 0xEC, 0xFB, 0xF6, 0xD5, 0xD8, 0xCF, 0xC2, + 0x59, 0x54, 0x43, 0x4E, 0x6D, 0x60, 0x77, 0x7A, + 0x31, 0x3C, 0x2B, 0x26, 0x05, 0x08, 0x1F, 0x12, + 0xEA, 0xE7, 0xF0, 0xFD, 0xDE, 0xD3, 0xC4, 0xC9, + 0x82, 0x8F, 0x98, 0x95, 0xB6, 0xBB, 0xAC, 0xA1, + 0x3A, 0x37, 0x20, 0x2D, 0x0E, 0x03, 0x14, 0x19, + 0x52, 0x5F, 0x48, 0x45, 0x66, 0x6B, 0x7C, 0x71, + 0x00, 0x0E, 0x1C, 0x12, 0x38, 0x36, 0x24, 0x2A, + 0x70, 0x7E, 0x6C, 0x62, 0x48, 0x46, 0x54, 0x5A, + 0xE0, 0xEE, 0xFC, 0xF2, 0xD8, 0xD6, 0xC4, 0xCA, + 0x90, 0x9E, 0x8C, 0x82, 0xA8, 0xA6, 0xB4, 0xBA, + 0x03, 0x0D, 0x1F, 0x11, 0x3B, 0x35, 0x27, 0x29, + 0x73, 0x7D, 0x6F, 0x61, 0x4B, 0x45, 0x57, 0x59, + 0xE3, 0xED, 0xFF, 0xF1, 0xDB, 0xD5, 0xC7, 0xC9, + 0x93, 0x9D, 0x8F, 0x81, 0xAB, 0xA5, 0xB7, 0xB9, + 0x06, 0x08, 0x1A, 0x14, 0x3E, 0x30, 0x22, 0x2C, + 0x76, 0x78, 0x6A, 0x64, 0x4E, 0x40, 0x52, 0x5C, + 0xE6, 0xE8, 0xFA, 0xF4, 0xDE, 0xD0, 0xC2, 0xCC, + 0x96, 0x98, 0x8A, 0x84, 0xAE, 0xA0, 0xB2, 0xBC, + 0x05, 0x0B, 0x19, 0x17, 0x3D, 0x33, 0x21, 0x2F, + 0x75, 0x7B, 0x69, 0x67, 0x4D, 0x43, 0x51, 0x5F, + 0xE5, 0xEB, 0xF9, 0xF7, 0xDD, 0xD3, 0xC1, 0xCF, + 0x95, 0x9B, 0x89, 0x87, 0xAD, 0xA3, 0xB1, 0xBF, + 0x0C, 0x02, 0x10, 0x1E, 0x34, 0x3A, 0x28, 0x26, + 0x7C, 0x72, 0x60, 0x6E, 0x44, 0x4A, 0x58, 0x56, + 0xEC, 0xE2, 0xF0, 0xFE, 0xD4, 0xDA, 0xC8, 0xC6, + 0x9C, 0x92, 0x80, 0x8E, 0xA4, 0xAA, 0xB8, 0xB6, + 0x0F, 0x01, 0x13, 0x1D, 0x37, 0x39, 0x2B, 0x25, + 0x7F, 0x71, 0x63, 0x6D, 0x47, 0x49, 0x5B, 0x55, + 0xEF, 0xE1, 0xF3, 0xFD, 0xD7, 0xD9, 0xCB, 0xC5, + 0x9F, 0x91, 0x83, 0x8D, 0xA7, 0xA9, 0xBB, 0xB5, + 0x0A, 0x04, 0x16, 0x18, 0x32, 0x3C, 0x2E, 0x20, + 0x7A, 0x74, 0x66, 0x68, 0x42, 0x4C, 0x5E, 0x50, + 0xEA, 0xE4, 0xF6, 0xF8, 0xD2, 0xDC, 0xCE, 0xC0, + 0x9A, 0x94, 0x86, 0x88, 0xA2, 0xAC, 0xBE, 0xB0, + 0x09, 0x07, 0x15, 0x1B, 0x31, 0x3F, 0x2D, 0x23, + 0x79, 0x77, 0x65, 0x6B, 0x41, 0x4F, 0x5D, 0x53, + 0xE9, 0xE7, 0xF5, 0xFB, 0xD1, 0xDF, 0xCD, 0xC3, + 0x99, 0x97, 0x85, 0x8B, 0xA1, 0xAF, 0xBD, 0xB3, + 0x00, 0x0F, 0x1E, 0x11, 0x3C, 0x33, 0x22, 0x2D, + 0x78, 0x77, 0x66, 0x69, 0x44, 0x4B, 0x5A, 0x55, + 0xF0, 0xFF, 0xEE, 0xE1, 0xCC, 0xC3, 0xD2, 0xDD, + 0x88, 0x87, 0x96, 0x99, 0xB4, 0xBB, 0xAA, 0xA5, + 0x23, 0x2C, 0x3D, 0x32, 0x1F, 0x10, 0x01, 0x0E, + 0x5B, 0x54, 0x45, 0x4A, 0x67, 0x68, 0x79, 0x76, + 0xD3, 0xDC, 0xCD, 0xC2, 0xEF, 0xE0, 0xF1, 0xFE, + 0xAB, 0xA4, 0xB5, 0xBA, 0x97, 0x98, 0x89, 0x86, + 0x46, 0x49, 0x58, 0x57, 0x7A, 0x75, 0x64, 0x6B, + 0x3E, 0x31, 0x20, 0x2F, 0x02, 0x0D, 0x1C, 0x13, + 0xB6, 0xB9, 0xA8, 0xA7, 0x8A, 0x85, 0x94, 0x9B, + 0xCE, 0xC1, 0xD0, 0xDF, 0xF2, 0xFD, 0xEC, 0xE3, + 0x65, 0x6A, 0x7B, 0x74, 0x59, 0x56, 0x47, 0x48, + 0x1D, 0x12, 0x03, 0x0C, 0x21, 0x2E, 0x3F, 0x30, + 0x95, 0x9A, 0x8B, 0x84, 0xA9, 0xA6, 0xB7, 0xB8, + 0xED, 0xE2, 0xF3, 0xFC, 0xD1, 0xDE, 0xCF, 0xC0, + 0x8C, 0x83, 0x92, 0x9D, 0xB0, 0xBF, 0xAE, 0xA1, + 0xF4, 0xFB, 0xEA, 0xE5, 0xC8, 0xC7, 0xD6, 0xD9, + 0x7C, 0x73, 0x62, 0x6D, 0x40, 0x4F, 0x5E, 0x51, + 0x04, 0x0B, 0x1A, 0x15, 0x38, 0x37, 0x26, 0x29, + 0xAF, 0xA0, 0xB1, 0xBE, 0x93, 0x9C, 0x8D, 0x82, + 0xD7, 0xD8, 0xC9, 0xC6, 0xEB, 0xE4, 0xF5, 0xFA, + 0x5F, 0x50, 0x41, 0x4E, 0x63, 0x6C, 0x7D, 0x72, + 0x27, 0x28, 0x39, 0x36, 0x1B, 0x14, 0x05, 0x0A, + 0xCA, 0xC5, 0xD4, 0xDB, 0xF6, 0xF9, 0xE8, 0xE7, + 0xB2, 0xBD, 0xAC, 0xA3, 0x8E, 0x81, 0x90, 0x9F, + 0x3A, 0x35, 0x24, 0x2B, 0x06, 0x09, 0x18, 0x17, + 0x42, 0x4D, 0x5C, 0x53, 0x7E, 0x71, 0x60, 0x6F, + 0xE9, 0xE6, 0xF7, 0xF8, 0xD5, 0xDA, 0xCB, 0xC4, + 0x91, 0x9E, 0x8F, 0x80, 0xAD, 0xA2, 0xB3, 0xBC, + 0x19, 0x16, 0x07, 0x08, 0x25, 0x2A, 0x3B, 0x34, + 0x61, 0x6E, 0x7F, 0x70, 0x5D, 0x52, 0x43, 0x4C, + 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, + 0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0, + 0xC3, 0xD3, 0xE3, 0xF3, 0x83, 0x93, 0xA3, 0xB3, + 0x43, 0x53, 0x63, 0x73, 0x03, 0x13, 0x23, 0x33, + 0x45, 0x55, 0x65, 0x75, 0x05, 0x15, 0x25, 0x35, + 0xC5, 0xD5, 0xE5, 0xF5, 0x85, 0x95, 0xA5, 0xB5, + 0x86, 0x96, 0xA6, 0xB6, 0xC6, 0xD6, 0xE6, 0xF6, + 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76, + 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0xDA, 0xEA, 0xFA, + 0x0A, 0x1A, 0x2A, 0x3A, 0x4A, 0x5A, 0x6A, 0x7A, + 0x49, 0x59, 0x69, 0x79, 0x09, 0x19, 0x29, 0x39, + 0xC9, 0xD9, 0xE9, 0xF9, 0x89, 0x99, 0xA9, 0xB9, + 0xCF, 0xDF, 0xEF, 0xFF, 0x8F, 0x9F, 0xAF, 0xBF, + 0x4F, 0x5F, 0x6F, 0x7F, 0x0F, 0x1F, 0x2F, 0x3F, + 0x0C, 0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C, + 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xDC, 0xEC, 0xFC, + 0xD7, 0xC7, 0xF7, 0xE7, 0x97, 0x87, 0xB7, 0xA7, + 0x57, 0x47, 0x77, 0x67, 0x17, 0x07, 0x37, 0x27, + 0x14, 0x04, 0x34, 0x24, 0x54, 0x44, 0x74, 0x64, + 0x94, 0x84, 0xB4, 0xA4, 0xD4, 0xC4, 0xF4, 0xE4, + 0x92, 0x82, 0xB2, 0xA2, 0xD2, 0xC2, 0xF2, 0xE2, + 0x12, 0x02, 0x32, 0x22, 0x52, 0x42, 0x72, 0x62, + 0x51, 0x41, 0x71, 0x61, 0x11, 0x01, 0x31, 0x21, + 0xD1, 0xC1, 0xF1, 0xE1, 0x91, 0x81, 0xB1, 0xA1, + 0x5D, 0x4D, 0x7D, 0x6D, 0x1D, 0x0D, 0x3D, 0x2D, + 0xDD, 0xCD, 0xFD, 0xED, 0x9D, 0x8D, 0xBD, 0xAD, + 0x9E, 0x8E, 0xBE, 0xAE, 0xDE, 0xCE, 0xFE, 0xEE, + 0x1E, 0x0E, 0x3E, 0x2E, 0x5E, 0x4E, 0x7E, 0x6E, + 0x18, 0x08, 0x38, 0x28, 0x58, 0x48, 0x78, 0x68, + 0x98, 0x88, 0xB8, 0xA8, 0xD8, 0xC8, 0xF8, 0xE8, + 0xDB, 0xCB, 0xFB, 0xEB, 0x9B, 0x8B, 0xBB, 0xAB, + 0x5B, 0x4B, 0x7B, 0x6B, 0x1B, 0x0B, 0x3B, 0x2B, + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, + 0xD3, 0xC2, 0xF1, 0xE0, 0x97, 0x86, 0xB5, 0xA4, + 0x5B, 0x4A, 0x79, 0x68, 0x1F, 0x0E, 0x3D, 0x2C, + 0x65, 0x74, 0x47, 0x56, 0x21, 0x30, 0x03, 0x12, + 0xED, 0xFC, 0xCF, 0xDE, 0xA9, 0xB8, 0x8B, 0x9A, + 0xB6, 0xA7, 0x94, 0x85, 0xF2, 0xE3, 0xD0, 0xC1, + 0x3E, 0x2F, 0x1C, 0x0D, 0x7A, 0x6B, 0x58, 0x49, + 0xCA, 0xDB, 0xE8, 0xF9, 0x8E, 0x9F, 0xAC, 0xBD, + 0x42, 0x53, 0x60, 0x71, 0x06, 0x17, 0x24, 0x35, + 0x19, 0x08, 0x3B, 0x2A, 0x5D, 0x4C, 0x7F, 0x6E, + 0x91, 0x80, 0xB3, 0xA2, 0xD5, 0xC4, 0xF7, 0xE6, + 0xAF, 0xBE, 0x8D, 0x9C, 0xEB, 0xFA, 0xC9, 0xD8, + 0x27, 0x36, 0x05, 0x14, 0x63, 0x72, 0x41, 0x50, + 0x7C, 0x6D, 0x5E, 0x4F, 0x38, 0x29, 0x1A, 0x0B, + 0xF4, 0xE5, 0xD6, 0xC7, 0xB0, 0xA1, 0x92, 0x83, + 0x57, 0x46, 0x75, 0x64, 0x13, 0x02, 0x31, 0x20, + 0xDF, 0xCE, 0xFD, 0xEC, 0x9B, 0x8A, 0xB9, 0xA8, + 0x84, 0x95, 0xA6, 0xB7, 0xC0, 0xD1, 0xE2, 0xF3, + 0x0C, 0x1D, 0x2E, 0x3F, 0x48, 0x59, 0x6A, 0x7B, + 0x32, 0x23, 0x10, 0x01, 0x76, 0x67, 0x54, 0x45, + 0xBA, 0xAB, 0x98, 0x89, 0xFE, 0xEF, 0xDC, 0xCD, + 0xE1, 0xF0, 0xC3, 0xD2, 0xA5, 0xB4, 0x87, 0x96, + 0x69, 0x78, 0x4B, 0x5A, 0x2D, 0x3C, 0x0F, 0x1E, + 0x9D, 0x8C, 0xBF, 0xAE, 0xD9, 0xC8, 0xFB, 0xEA, + 0x15, 0x04, 0x37, 0x26, 0x51, 0x40, 0x73, 0x62, + 0x4E, 0x5F, 0x6C, 0x7D, 0x0A, 0x1B, 0x28, 0x39, + 0xC6, 0xD7, 0xE4, 0xF5, 0x82, 0x93, 0xA0, 0xB1, + 0xF8, 0xE9, 0xDA, 0xCB, 0xBC, 0xAD, 0x9E, 0x8F, + 0x70, 0x61, 0x52, 0x43, 0x34, 0x25, 0x16, 0x07, + 0x2B, 0x3A, 0x09, 0x18, 0x6F, 0x7E, 0x4D, 0x5C, + 0xA3, 0xB2, 0x81, 0x90, 0xE7, 0xF6, 0xC5, 0xD4, + 0x00, 0x12, 0x24, 0x36, 0x48, 0x5A, 0x6C, 0x7E, + 0x90, 0x82, 0xB4, 0xA6, 0xD8, 0xCA, 0xFC, 0xEE, + 0xE3, 0xF1, 0xC7, 0xD5, 0xAB, 0xB9, 0x8F, 0x9D, + 0x73, 0x61, 0x57, 0x45, 0x3B, 0x29, 0x1F, 0x0D, + 0x05, 0x17, 0x21, 0x33, 0x4D, 0x5F, 0x69, 0x7B, + 0x95, 0x87, 0xB1, 0xA3, 0xDD, 0xCF, 0xF9, 0xEB, + 0xE6, 0xF4, 0xC2, 0xD0, 0xAE, 0xBC, 0x8A, 0x98, + 0x76, 0x64, 0x52, 0x40, 0x3E, 0x2C, 0x1A, 0x08, + 0x0A, 0x18, 0x2E, 0x3C, 0x42, 0x50, 0x66, 0x74, + 0x9A, 0x88, 0xBE, 0xAC, 0xD2, 0xC0, 0xF6, 0xE4, + 0xE9, 0xFB, 0xCD, 0xDF, 0xA1, 0xB3, 0x85, 0x97, + 0x79, 0x6B, 0x5D, 0x4F, 0x31, 0x23, 0x15, 0x07, + 0x0F, 0x1D, 0x2B, 0x39, 0x47, 0x55, 0x63, 0x71, + 0x9F, 0x8D, 0xBB, 0xA9, 0xD7, 0xC5, 0xF3, 0xE1, + 0xEC, 0xFE, 0xC8, 0xDA, 0xA4, 0xB6, 0x80, 0x92, + 0x7C, 0x6E, 0x58, 0x4A, 0x34, 0x26, 0x10, 0x02, + 0x14, 0x06, 0x30, 0x22, 0x5C, 0x4E, 0x78, 0x6A, + 0x84, 0x96, 0xA0, 0xB2, 0xCC, 0xDE, 0xE8, 0xFA, + 0xF7, 0xE5, 0xD3, 0xC1, 0xBF, 0xAD, 0x9B, 0x89, + 0x67, 0x75, 0x43, 0x51, 0x2F, 0x3D, 0x0B, 0x19, + 0x11, 0x03, 0x35, 0x27, 0x59, 0x4B, 0x7D, 0x6F, + 0x81, 0x93, 0xA5, 0xB7, 0xC9, 0xDB, 0xED, 0xFF, + 0xF2, 0xE0, 0xD6, 0xC4, 0xBA, 0xA8, 0x9E, 0x8C, + 0x62, 0x70, 0x46, 0x54, 0x2A, 0x38, 0x0E, 0x1C, + 0x1E, 0x0C, 0x3A, 0x28, 0x56, 0x44, 0x72, 0x60, + 0x8E, 0x9C, 0xAA, 0xB8, 0xC6, 0xD4, 0xE2, 0xF0, + 0xFD, 0xEF, 0xD9, 0xCB, 0xB5, 0xA7, 0x91, 0x83, + 0x6D, 0x7F, 0x49, 0x5B, 0x25, 0x37, 0x01, 0x13, + 0x1B, 0x09, 0x3F, 0x2D, 0x53, 0x41, 0x77, 0x65, + 0x8B, 0x99, 0xAF, 0xBD, 0xC3, 0xD1, 0xE7, 0xF5, + 0xF8, 0xEA, 0xDC, 0xCE, 0xB0, 0xA2, 0x94, 0x86, + 0x68, 0x7A, 0x4C, 0x5E, 0x20, 0x32, 0x04, 0x16, + 0x00, 0x13, 0x26, 0x35, 0x4C, 0x5F, 0x6A, 0x79, + 0x98, 0x8B, 0xBE, 0xAD, 0xD4, 0xC7, 0xF2, 0xE1, + 0xF3, 0xE0, 0xD5, 0xC6, 0xBF, 0xAC, 0x99, 0x8A, + 0x6B, 0x78, 0x4D, 0x5E, 0x27, 0x34, 0x01, 0x12, + 0x25, 0x36, 0x03, 0x10, 0x69, 0x7A, 0x4F, 0x5C, + 0xBD, 0xAE, 0x9B, 0x88, 0xF1, 0xE2, 0xD7, 0xC4, + 0xD6, 0xC5, 0xF0, 0xE3, 0x9A, 0x89, 0xBC, 0xAF, + 0x4E, 0x5D, 0x68, 0x7B, 0x02, 0x11, 0x24, 0x37, + 0x4A, 0x59, 0x6C, 0x7F, 0x06, 0x15, 0x20, 0x33, + 0xD2, 0xC1, 0xF4, 0xE7, 0x9E, 0x8D, 0xB8, 0xAB, + 0xB9, 0xAA, 0x9F, 0x8C, 0xF5, 0xE6, 0xD3, 0xC0, + 0x21, 0x32, 0x07, 0x14, 0x6D, 0x7E, 0x4B, 0x58, + 0x6F, 0x7C, 0x49, 0x5A, 0x23, 0x30, 0x05, 0x16, + 0xF7, 0xE4, 0xD1, 0xC2, 0xBB, 0xA8, 0x9D, 0x8E, + 0x9C, 0x8F, 0xBA, 0xA9, 0xD0, 0xC3, 0xF6, 0xE5, + 0x04, 0x17, 0x22, 0x31, 0x48, 0x5B, 0x6E, 0x7D, + 0x94, 0x87, 0xB2, 0xA1, 0xD8, 0xCB, 0xFE, 0xED, + 0x0C, 0x1F, 0x2A, 0x39, 0x40, 0x53, 0x66, 0x75, + 0x67, 0x74, 0x41, 0x52, 0x2B, 0x38, 0x0D, 0x1E, + 0xFF, 0xEC, 0xD9, 0xCA, 0xB3, 0xA0, 0x95, 0x86, + 0xB1, 0xA2, 0x97, 0x84, 0xFD, 0xEE, 0xDB, 0xC8, + 0x29, 0x3A, 0x0F, 0x1C, 0x65, 0x76, 0x43, 0x50, + 0x42, 0x51, 0x64, 0x77, 0x0E, 0x1D, 0x28, 0x3B, + 0xDA, 0xC9, 0xFC, 0xEF, 0x96, 0x85, 0xB0, 0xA3, + 0xDE, 0xCD, 0xF8, 0xEB, 0x92, 0x81, 0xB4, 0xA7, + 0x46, 0x55, 0x60, 0x73, 0x0A, 0x19, 0x2C, 0x3F, + 0x2D, 0x3E, 0x0B, 0x18, 0x61, 0x72, 0x47, 0x54, + 0xB5, 0xA6, 0x93, 0x80, 0xF9, 0xEA, 0xDF, 0xCC, + 0xFB, 0xE8, 0xDD, 0xCE, 0xB7, 0xA4, 0x91, 0x82, + 0x63, 0x70, 0x45, 0x56, 0x2F, 0x3C, 0x09, 0x1A, + 0x08, 0x1B, 0x2E, 0x3D, 0x44, 0x57, 0x62, 0x71, + 0x90, 0x83, 0xB6, 0xA5, 0xDC, 0xCF, 0xFA, 0xE9, + 0x00, 0x14, 0x28, 0x3C, 0x50, 0x44, 0x78, 0x6C, + 0xA0, 0xB4, 0x88, 0x9C, 0xF0, 0xE4, 0xD8, 0xCC, + 0x83, 0x97, 0xAB, 0xBF, 0xD3, 0xC7, 0xFB, 0xEF, + 0x23, 0x37, 0x0B, 0x1F, 0x73, 0x67, 0x5B, 0x4F, + 0xC5, 0xD1, 0xED, 0xF9, 0x95, 0x81, 0xBD, 0xA9, + 0x65, 0x71, 0x4D, 0x59, 0x35, 0x21, 0x1D, 0x09, + 0x46, 0x52, 0x6E, 0x7A, 0x16, 0x02, 0x3E, 0x2A, + 0xE6, 0xF2, 0xCE, 0xDA, 0xB6, 0xA2, 0x9E, 0x8A, + 0x49, 0x5D, 0x61, 0x75, 0x19, 0x0D, 0x31, 0x25, + 0xE9, 0xFD, 0xC1, 0xD5, 0xB9, 0xAD, 0x91, 0x85, + 0xCA, 0xDE, 0xE2, 0xF6, 0x9A, 0x8E, 0xB2, 0xA6, + 0x6A, 0x7E, 0x42, 0x56, 0x3A, 0x2E, 0x12, 0x06, + 0x8C, 0x98, 0xA4, 0xB0, 0xDC, 0xC8, 0xF4, 0xE0, + 0x2C, 0x38, 0x04, 0x10, 0x7C, 0x68, 0x54, 0x40, + 0x0F, 0x1B, 0x27, 0x33, 0x5F, 0x4B, 0x77, 0x63, + 0xAF, 0xBB, 0x87, 0x93, 0xFF, 0xEB, 0xD7, 0xC3, + 0x92, 0x86, 0xBA, 0xAE, 0xC2, 0xD6, 0xEA, 0xFE, + 0x32, 0x26, 0x1A, 0x0E, 0x62, 0x76, 0x4A, 0x5E, + 0x11, 0x05, 0x39, 0x2D, 0x41, 0x55, 0x69, 0x7D, + 0xB1, 0xA5, 0x99, 0x8D, 0xE1, 0xF5, 0xC9, 0xDD, + 0x57, 0x43, 0x7F, 0x6B, 0x07, 0x13, 0x2F, 0x3B, + 0xF7, 0xE3, 0xDF, 0xCB, 0xA7, 0xB3, 0x8F, 0x9B, + 0xD4, 0xC0, 0xFC, 0xE8, 0x84, 0x90, 0xAC, 0xB8, + 0x74, 0x60, 0x5C, 0x48, 0x24, 0x30, 0x0C, 0x18, + 0xDB, 0xCF, 0xF3, 0xE7, 0x8B, 0x9F, 0xA3, 0xB7, + 0x7B, 0x6F, 0x53, 0x47, 0x2B, 0x3F, 0x03, 0x17, + 0x58, 0x4C, 0x70, 0x64, 0x08, 0x1C, 0x20, 0x34, + 0xF8, 0xEC, 0xD0, 0xC4, 0xA8, 0xBC, 0x80, 0x94, + 0x1E, 0x0A, 0x36, 0x22, 0x4E, 0x5A, 0x66, 0x72, + 0xBE, 0xAA, 0x96, 0x82, 0xEE, 0xFA, 0xC6, 0xD2, + 0x9D, 0x89, 0xB5, 0xA1, 0xCD, 0xD9, 0xE5, 0xF1, + 0x3D, 0x29, 0x15, 0x01, 0x6D, 0x79, 0x45, 0x51, + 0x00, 0x15, 0x2A, 0x3F, 0x54, 0x41, 0x7E, 0x6B, + 0xA8, 0xBD, 0x82, 0x97, 0xFC, 0xE9, 0xD6, 0xC3, + 0x93, 0x86, 0xB9, 0xAC, 0xC7, 0xD2, 0xED, 0xF8, + 0x3B, 0x2E, 0x11, 0x04, 0x6F, 0x7A, 0x45, 0x50, + 0xE5, 0xF0, 0xCF, 0xDA, 0xB1, 0xA4, 0x9B, 0x8E, + 0x4D, 0x58, 0x67, 0x72, 0x19, 0x0C, 0x33, 0x26, + 0x76, 0x63, 0x5C, 0x49, 0x22, 0x37, 0x08, 0x1D, + 0xDE, 0xCB, 0xF4, 0xE1, 0x8A, 0x9F, 0xA0, 0xB5, + 0x09, 0x1C, 0x23, 0x36, 0x5D, 0x48, 0x77, 0x62, + 0xA1, 0xB4, 0x8B, 0x9E, 0xF5, 0xE0, 0xDF, 0xCA, + 0x9A, 0x8F, 0xB0, 0xA5, 0xCE, 0xDB, 0xE4, 0xF1, + 0x32, 0x27, 0x18, 0x0D, 0x66, 0x73, 0x4C, 0x59, + 0xEC, 0xF9, 0xC6, 0xD3, 0xB8, 0xAD, 0x92, 0x87, + 0x44, 0x51, 0x6E, 0x7B, 0x10, 0x05, 0x3A, 0x2F, + 0x7F, 0x6A, 0x55, 0x40, 0x2B, 0x3E, 0x01, 0x14, + 0xD7, 0xC2, 0xFD, 0xE8, 0x83, 0x96, 0xA9, 0xBC, + 0x12, 0x07, 0x38, 0x2D, 0x46, 0x53, 0x6C, 0x79, + 0xBA, 0xAF, 0x90, 0x85, 0xEE, 0xFB, 0xC4, 0xD1, + 0x81, 0x94, 0xAB, 0xBE, 0xD5, 0xC0, 0xFF, 0xEA, + 0x29, 0x3C, 0x03, 0x16, 0x7D, 0x68, 0x57, 0x42, + 0xF7, 0xE2, 0xDD, 0xC8, 0xA3, 0xB6, 0x89, 0x9C, + 0x5F, 0x4A, 0x75, 0x60, 0x0B, 0x1E, 0x21, 0x34, + 0x64, 0x71, 0x4E, 0x5B, 0x30, 0x25, 0x1A, 0x0F, + 0xCC, 0xD9, 0xE6, 0xF3, 0x98, 0x8D, 0xB2, 0xA7, + 0x1B, 0x0E, 0x31, 0x24, 0x4F, 0x5A, 0x65, 0x70, + 0xB3, 0xA6, 0x99, 0x8C, 0xE7, 0xF2, 0xCD, 0xD8, + 0x88, 0x9D, 0xA2, 0xB7, 0xDC, 0xC9, 0xF6, 0xE3, + 0x20, 0x35, 0x0A, 0x1F, 0x74, 0x61, 0x5E, 0x4B, + 0xFE, 0xEB, 0xD4, 0xC1, 0xAA, 0xBF, 0x80, 0x95, + 0x56, 0x43, 0x7C, 0x69, 0x02, 0x17, 0x28, 0x3D, + 0x6D, 0x78, 0x47, 0x52, 0x39, 0x2C, 0x13, 0x06, + 0xC5, 0xD0, 0xEF, 0xFA, 0x91, 0x84, 0xBB, 0xAE, + 0x00, 0x16, 0x2C, 0x3A, 0x58, 0x4E, 0x74, 0x62, + 0xB0, 0xA6, 0x9C, 0x8A, 0xE8, 0xFE, 0xC4, 0xD2, + 0xA3, 0xB5, 0x8F, 0x99, 0xFB, 0xED, 0xD7, 0xC1, + 0x13, 0x05, 0x3F, 0x29, 0x4B, 0x5D, 0x67, 0x71, + 0x85, 0x93, 0xA9, 0xBF, 0xDD, 0xCB, 0xF1, 0xE7, + 0x35, 0x23, 0x19, 0x0F, 0x6D, 0x7B, 0x41, 0x57, + 0x26, 0x30, 0x0A, 0x1C, 0x7E, 0x68, 0x52, 0x44, + 0x96, 0x80, 0xBA, 0xAC, 0xCE, 0xD8, 0xE2, 0xF4, + 0xC9, 0xDF, 0xE5, 0xF3, 0x91, 0x87, 0xBD, 0xAB, + 0x79, 0x6F, 0x55, 0x43, 0x21, 0x37, 0x0D, 0x1B, + 0x6A, 0x7C, 0x46, 0x50, 0x32, 0x24, 0x1E, 0x08, + 0xDA, 0xCC, 0xF6, 0xE0, 0x82, 0x94, 0xAE, 0xB8, + 0x4C, 0x5A, 0x60, 0x76, 0x14, 0x02, 0x38, 0x2E, + 0xFC, 0xEA, 0xD0, 0xC6, 0xA4, 0xB2, 0x88, 0x9E, + 0xEF, 0xF9, 0xC3, 0xD5, 0xB7, 0xA1, 0x9B, 0x8D, + 0x5F, 0x49, 0x73, 0x65, 0x07, 0x11, 0x2B, 0x3D, + 0x51, 0x47, 0x7D, 0x6B, 0x09, 0x1F, 0x25, 0x33, + 0xE1, 0xF7, 0xCD, 0xDB, 0xB9, 0xAF, 0x95, 0x83, + 0xF2, 0xE4, 0xDE, 0xC8, 0xAA, 0xBC, 0x86, 0x90, + 0x42, 0x54, 0x6E, 0x78, 0x1A, 0x0C, 0x36, 0x20, + 0xD4, 0xC2, 0xF8, 0xEE, 0x8C, 0x9A, 0xA0, 0xB6, + 0x64, 0x72, 0x48, 0x5E, 0x3C, 0x2A, 0x10, 0x06, + 0x77, 0x61, 0x5B, 0x4D, 0x2F, 0x39, 0x03, 0x15, + 0xC7, 0xD1, 0xEB, 0xFD, 0x9F, 0x89, 0xB3, 0xA5, + 0x98, 0x8E, 0xB4, 0xA2, 0xC0, 0xD6, 0xEC, 0xFA, + 0x28, 0x3E, 0x04, 0x12, 0x70, 0x66, 0x5C, 0x4A, + 0x3B, 0x2D, 0x17, 0x01, 0x63, 0x75, 0x4F, 0x59, + 0x8B, 0x9D, 0xA7, 0xB1, 0xD3, 0xC5, 0xFF, 0xE9, + 0x1D, 0x0B, 0x31, 0x27, 0x45, 0x53, 0x69, 0x7F, + 0xAD, 0xBB, 0x81, 0x97, 0xF5, 0xE3, 0xD9, 0xCF, + 0xBE, 0xA8, 0x92, 0x84, 0xE6, 0xF0, 0xCA, 0xDC, + 0x0E, 0x18, 0x22, 0x34, 0x56, 0x40, 0x7A, 0x6C, + 0x00, 0x17, 0x2E, 0x39, 0x5C, 0x4B, 0x72, 0x65, + 0xB8, 0xAF, 0x96, 0x81, 0xE4, 0xF3, 0xCA, 0xDD, + 0xB3, 0xA4, 0x9D, 0x8A, 0xEF, 0xF8, 0xC1, 0xD6, + 0x0B, 0x1C, 0x25, 0x32, 0x57, 0x40, 0x79, 0x6E, + 0xA5, 0xB2, 0x8B, 0x9C, 0xF9, 0xEE, 0xD7, 0xC0, + 0x1D, 0x0A, 0x33, 0x24, 0x41, 0x56, 0x6F, 0x78, + 0x16, 0x01, 0x38, 0x2F, 0x4A, 0x5D, 0x64, 0x73, + 0xAE, 0xB9, 0x80, 0x97, 0xF2, 0xE5, 0xDC, 0xCB, + 0x89, 0x9E, 0xA7, 0xB0, 0xD5, 0xC2, 0xFB, 0xEC, + 0x31, 0x26, 0x1F, 0x08, 0x6D, 0x7A, 0x43, 0x54, + 0x3A, 0x2D, 0x14, 0x03, 0x66, 0x71, 0x48, 0x5F, + 0x82, 0x95, 0xAC, 0xBB, 0xDE, 0xC9, 0xF0, 0xE7, + 0x2C, 0x3B, 0x02, 0x15, 0x70, 0x67, 0x5E, 0x49, + 0x94, 0x83, 0xBA, 0xAD, 0xC8, 0xDF, 0xE6, 0xF1, + 0x9F, 0x88, 0xB1, 0xA6, 0xC3, 0xD4, 0xED, 0xFA, + 0x27, 0x30, 0x09, 0x1E, 0x7B, 0x6C, 0x55, 0x42, + 0xD1, 0xC6, 0xFF, 0xE8, 0x8D, 0x9A, 0xA3, 0xB4, + 0x69, 0x7E, 0x47, 0x50, 0x35, 0x22, 0x1B, 0x0C, + 0x62, 0x75, 0x4C, 0x5B, 0x3E, 0x29, 0x10, 0x07, + 0xDA, 0xCD, 0xF4, 0xE3, 0x86, 0x91, 0xA8, 0xBF, + 0x74, 0x63, 0x5A, 0x4D, 0x28, 0x3F, 0x06, 0x11, + 0xCC, 0xDB, 0xE2, 0xF5, 0x90, 0x87, 0xBE, 0xA9, + 0xC7, 0xD0, 0xE9, 0xFE, 0x9B, 0x8C, 0xB5, 0xA2, + 0x7F, 0x68, 0x51, 0x46, 0x23, 0x34, 0x0D, 0x1A, + 0x58, 0x4F, 0x76, 0x61, 0x04, 0x13, 0x2A, 0x3D, + 0xE0, 0xF7, 0xCE, 0xD9, 0xBC, 0xAB, 0x92, 0x85, + 0xEB, 0xFC, 0xC5, 0xD2, 0xB7, 0xA0, 0x99, 0x8E, + 0x53, 0x44, 0x7D, 0x6A, 0x0F, 0x18, 0x21, 0x36, + 0xFD, 0xEA, 0xD3, 0xC4, 0xA1, 0xB6, 0x8F, 0x98, + 0x45, 0x52, 0x6B, 0x7C, 0x19, 0x0E, 0x37, 0x20, + 0x4E, 0x59, 0x60, 0x77, 0x12, 0x05, 0x3C, 0x2B, + 0xF6, 0xE1, 0xD8, 0xCF, 0xAA, 0xBD, 0x84, 0x93, + 0x00, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, + 0xC0, 0xD8, 0xF0, 0xE8, 0xA0, 0xB8, 0x90, 0x88, + 0x43, 0x5B, 0x73, 0x6B, 0x23, 0x3B, 0x13, 0x0B, + 0x83, 0x9B, 0xB3, 0xAB, 0xE3, 0xFB, 0xD3, 0xCB, + 0x86, 0x9E, 0xB6, 0xAE, 0xE6, 0xFE, 0xD6, 0xCE, + 0x46, 0x5E, 0x76, 0x6E, 0x26, 0x3E, 0x16, 0x0E, + 0xC5, 0xDD, 0xF5, 0xED, 0xA5, 0xBD, 0x95, 0x8D, + 0x05, 0x1D, 0x35, 0x2D, 0x65, 0x7D, 0x55, 0x4D, + 0xCF, 0xD7, 0xFF, 0xE7, 0xAF, 0xB7, 0x9F, 0x87, + 0x0F, 0x17, 0x3F, 0x27, 0x6F, 0x77, 0x5F, 0x47, + 0x8C, 0x94, 0xBC, 0xA4, 0xEC, 0xF4, 0xDC, 0xC4, + 0x4C, 0x54, 0x7C, 0x64, 0x2C, 0x34, 0x1C, 0x04, + 0x49, 0x51, 0x79, 0x61, 0x29, 0x31, 0x19, 0x01, + 0x89, 0x91, 0xB9, 0xA1, 0xE9, 0xF1, 0xD9, 0xC1, + 0x0A, 0x12, 0x3A, 0x22, 0x6A, 0x72, 0x5A, 0x42, + 0xCA, 0xD2, 0xFA, 0xE2, 0xAA, 0xB2, 0x9A, 0x82, + 0x5D, 0x45, 0x6D, 0x75, 0x3D, 0x25, 0x0D, 0x15, + 0x9D, 0x85, 0xAD, 0xB5, 0xFD, 0xE5, 0xCD, 0xD5, + 0x1E, 0x06, 0x2E, 0x36, 0x7E, 0x66, 0x4E, 0x56, + 0xDE, 0xC6, 0xEE, 0xF6, 0xBE, 0xA6, 0x8E, 0x96, + 0xDB, 0xC3, 0xEB, 0xF3, 0xBB, 0xA3, 0x8B, 0x93, + 0x1B, 0x03, 0x2B, 0x33, 0x7B, 0x63, 0x4B, 0x53, + 0x98, 0x80, 0xA8, 0xB0, 0xF8, 0xE0, 0xC8, 0xD0, + 0x58, 0x40, 0x68, 0x70, 0x38, 0x20, 0x08, 0x10, + 0x92, 0x8A, 0xA2, 0xBA, 0xF2, 0xEA, 0xC2, 0xDA, + 0x52, 0x4A, 0x62, 0x7A, 0x32, 0x2A, 0x02, 0x1A, + 0xD1, 0xC9, 0xE1, 0xF9, 0xB1, 0xA9, 0x81, 0x99, + 0x11, 0x09, 0x21, 0x39, 0x71, 0x69, 0x41, 0x59, + 0x14, 0x0C, 0x24, 0x3C, 0x74, 0x6C, 0x44, 0x5C, + 0xD4, 0xCC, 0xE4, 0xFC, 0xB4, 0xAC, 0x84, 0x9C, + 0x57, 0x4F, 0x67, 0x7F, 0x37, 0x2F, 0x07, 0x1F, + 0x97, 0x8F, 0xA7, 0xBF, 0xF7, 0xEF, 0xC7, 0xDF, + 0x00, 0x19, 0x32, 0x2B, 0x64, 0x7D, 0x56, 0x4F, + 0xC8, 0xD1, 0xFA, 0xE3, 0xAC, 0xB5, 0x9E, 0x87, + 0x53, 0x4A, 0x61, 0x78, 0x37, 0x2E, 0x05, 0x1C, + 0x9B, 0x82, 0xA9, 0xB0, 0xFF, 0xE6, 0xCD, 0xD4, + 0xA6, 0xBF, 0x94, 0x8D, 0xC2, 0xDB, 0xF0, 0xE9, + 0x6E, 0x77, 0x5C, 0x45, 0x0A, 0x13, 0x38, 0x21, + 0xF5, 0xEC, 0xC7, 0xDE, 0x91, 0x88, 0xA3, 0xBA, + 0x3D, 0x24, 0x0F, 0x16, 0x59, 0x40, 0x6B, 0x72, + 0x8F, 0x96, 0xBD, 0xA4, 0xEB, 0xF2, 0xD9, 0xC0, + 0x47, 0x5E, 0x75, 0x6C, 0x23, 0x3A, 0x11, 0x08, + 0xDC, 0xC5, 0xEE, 0xF7, 0xB8, 0xA1, 0x8A, 0x93, + 0x14, 0x0D, 0x26, 0x3F, 0x70, 0x69, 0x42, 0x5B, + 0x29, 0x30, 0x1B, 0x02, 0x4D, 0x54, 0x7F, 0x66, + 0xE1, 0xF8, 0xD3, 0xCA, 0x85, 0x9C, 0xB7, 0xAE, + 0x7A, 0x63, 0x48, 0x51, 0x1E, 0x07, 0x2C, 0x35, + 0xB2, 0xAB, 0x80, 0x99, 0xD6, 0xCF, 0xE4, 0xFD, + 0xDD, 0xC4, 0xEF, 0xF6, 0xB9, 0xA0, 0x8B, 0x92, + 0x15, 0x0C, 0x27, 0x3E, 0x71, 0x68, 0x43, 0x5A, + 0x8E, 0x97, 0xBC, 0xA5, 0xEA, 0xF3, 0xD8, 0xC1, + 0x46, 0x5F, 0x74, 0x6D, 0x22, 0x3B, 0x10, 0x09, + 0x7B, 0x62, 0x49, 0x50, 0x1F, 0x06, 0x2D, 0x34, + 0xB3, 0xAA, 0x81, 0x98, 0xD7, 0xCE, 0xE5, 0xFC, + 0x28, 0x31, 0x1A, 0x03, 0x4C, 0x55, 0x7E, 0x67, + 0xE0, 0xF9, 0xD2, 0xCB, 0x84, 0x9D, 0xB6, 0xAF, + 0x52, 0x4B, 0x60, 0x79, 0x36, 0x2F, 0x04, 0x1D, + 0x9A, 0x83, 0xA8, 0xB1, 0xFE, 0xE7, 0xCC, 0xD5, + 0x01, 0x18, 0x33, 0x2A, 0x65, 0x7C, 0x57, 0x4E, + 0xC9, 0xD0, 0xFB, 0xE2, 0xAD, 0xB4, 0x9F, 0x86, + 0xF4, 0xED, 0xC6, 0xDF, 0x90, 0x89, 0xA2, 0xBB, + 0x3C, 0x25, 0x0E, 0x17, 0x58, 0x41, 0x6A, 0x73, + 0xA7, 0xBE, 0x95, 0x8C, 0xC3, 0xDA, 0xF1, 0xE8, + 0x6F, 0x76, 0x5D, 0x44, 0x0B, 0x12, 0x39, 0x20, + 0x00, 0x1A, 0x34, 0x2E, 0x68, 0x72, 0x5C, 0x46, + 0xD0, 0xCA, 0xE4, 0xFE, 0xB8, 0xA2, 0x8C, 0x96, + 0x63, 0x79, 0x57, 0x4D, 0x0B, 0x11, 0x3F, 0x25, + 0xB3, 0xA9, 0x87, 0x9D, 0xDB, 0xC1, 0xEF, 0xF5, + 0xC6, 0xDC, 0xF2, 0xE8, 0xAE, 0xB4, 0x9A, 0x80, + 0x16, 0x0C, 0x22, 0x38, 0x7E, 0x64, 0x4A, 0x50, + 0xA5, 0xBF, 0x91, 0x8B, 0xCD, 0xD7, 0xF9, 0xE3, + 0x75, 0x6F, 0x41, 0x5B, 0x1D, 0x07, 0x29, 0x33, + 0x4F, 0x55, 0x7B, 0x61, 0x27, 0x3D, 0x13, 0x09, + 0x9F, 0x85, 0xAB, 0xB1, 0xF7, 0xED, 0xC3, 0xD9, + 0x2C, 0x36, 0x18, 0x02, 0x44, 0x5E, 0x70, 0x6A, + 0xFC, 0xE6, 0xC8, 0xD2, 0x94, 0x8E, 0xA0, 0xBA, + 0x89, 0x93, 0xBD, 0xA7, 0xE1, 0xFB, 0xD5, 0xCF, + 0x59, 0x43, 0x6D, 0x77, 0x31, 0x2B, 0x05, 0x1F, + 0xEA, 0xF0, 0xDE, 0xC4, 0x82, 0x98, 0xB6, 0xAC, + 0x3A, 0x20, 0x0E, 0x14, 0x52, 0x48, 0x66, 0x7C, + 0x9E, 0x84, 0xAA, 0xB0, 0xF6, 0xEC, 0xC2, 0xD8, + 0x4E, 0x54, 0x7A, 0x60, 0x26, 0x3C, 0x12, 0x08, + 0xFD, 0xE7, 0xC9, 0xD3, 0x95, 0x8F, 0xA1, 0xBB, + 0x2D, 0x37, 0x19, 0x03, 0x45, 0x5F, 0x71, 0x6B, + 0x58, 0x42, 0x6C, 0x76, 0x30, 0x2A, 0x04, 0x1E, + 0x88, 0x92, 0xBC, 0xA6, 0xE0, 0xFA, 0xD4, 0xCE, + 0x3B, 0x21, 0x0F, 0x15, 0x53, 0x49, 0x67, 0x7D, + 0xEB, 0xF1, 0xDF, 0xC5, 0x83, 0x99, 0xB7, 0xAD, + 0xD1, 0xCB, 0xE5, 0xFF, 0xB9, 0xA3, 0x8D, 0x97, + 0x01, 0x1B, 0x35, 0x2F, 0x69, 0x73, 0x5D, 0x47, + 0xB2, 0xA8, 0x86, 0x9C, 0xDA, 0xC0, 0xEE, 0xF4, + 0x62, 0x78, 0x56, 0x4C, 0x0A, 0x10, 0x3E, 0x24, + 0x17, 0x0D, 0x23, 0x39, 0x7F, 0x65, 0x4B, 0x51, + 0xC7, 0xDD, 0xF3, 0xE9, 0xAF, 0xB5, 0x9B, 0x81, + 0x74, 0x6E, 0x40, 0x5A, 0x1C, 0x06, 0x28, 0x32, + 0xA4, 0xBE, 0x90, 0x8A, 0xCC, 0xD6, 0xF8, 0xE2, + 0x00, 0x1B, 0x36, 0x2D, 0x6C, 0x77, 0x5A, 0x41, + 0xD8, 0xC3, 0xEE, 0xF5, 0xB4, 0xAF, 0x82, 0x99, + 0x73, 0x68, 0x45, 0x5E, 0x1F, 0x04, 0x29, 0x32, + 0xAB, 0xB0, 0x9D, 0x86, 0xC7, 0xDC, 0xF1, 0xEA, + 0xE6, 0xFD, 0xD0, 0xCB, 0x8A, 0x91, 0xBC, 0xA7, + 0x3E, 0x25, 0x08, 0x13, 0x52, 0x49, 0x64, 0x7F, + 0x95, 0x8E, 0xA3, 0xB8, 0xF9, 0xE2, 0xCF, 0xD4, + 0x4D, 0x56, 0x7B, 0x60, 0x21, 0x3A, 0x17, 0x0C, + 0x0F, 0x14, 0x39, 0x22, 0x63, 0x78, 0x55, 0x4E, + 0xD7, 0xCC, 0xE1, 0xFA, 0xBB, 0xA0, 0x8D, 0x96, + 0x7C, 0x67, 0x4A, 0x51, 0x10, 0x0B, 0x26, 0x3D, + 0xA4, 0xBF, 0x92, 0x89, 0xC8, 0xD3, 0xFE, 0xE5, + 0xE9, 0xF2, 0xDF, 0xC4, 0x85, 0x9E, 0xB3, 0xA8, + 0x31, 0x2A, 0x07, 0x1C, 0x5D, 0x46, 0x6B, 0x70, + 0x9A, 0x81, 0xAC, 0xB7, 0xF6, 0xED, 0xC0, 0xDB, + 0x42, 0x59, 0x74, 0x6F, 0x2E, 0x35, 0x18, 0x03, + 0x1E, 0x05, 0x28, 0x33, 0x72, 0x69, 0x44, 0x5F, + 0xC6, 0xDD, 0xF0, 0xEB, 0xAA, 0xB1, 0x9C, 0x87, + 0x6D, 0x76, 0x5B, 0x40, 0x01, 0x1A, 0x37, 0x2C, + 0xB5, 0xAE, 0x83, 0x98, 0xD9, 0xC2, 0xEF, 0xF4, + 0xF8, 0xE3, 0xCE, 0xD5, 0x94, 0x8F, 0xA2, 0xB9, + 0x20, 0x3B, 0x16, 0x0D, 0x4C, 0x57, 0x7A, 0x61, + 0x8B, 0x90, 0xBD, 0xA6, 0xE7, 0xFC, 0xD1, 0xCA, + 0x53, 0x48, 0x65, 0x7E, 0x3F, 0x24, 0x09, 0x12, + 0x11, 0x0A, 0x27, 0x3C, 0x7D, 0x66, 0x4B, 0x50, + 0xC9, 0xD2, 0xFF, 0xE4, 0xA5, 0xBE, 0x93, 0x88, + 0x62, 0x79, 0x54, 0x4F, 0x0E, 0x15, 0x38, 0x23, + 0xBA, 0xA1, 0x8C, 0x97, 0xD6, 0xCD, 0xE0, 0xFB, + 0xF7, 0xEC, 0xC1, 0xDA, 0x9B, 0x80, 0xAD, 0xB6, + 0x2F, 0x34, 0x19, 0x02, 0x43, 0x58, 0x75, 0x6E, + 0x84, 0x9F, 0xB2, 0xA9, 0xE8, 0xF3, 0xDE, 0xC5, + 0x5C, 0x47, 0x6A, 0x71, 0x30, 0x2B, 0x06, 0x1D, + 0x00, 0x1C, 0x38, 0x24, 0x70, 0x6C, 0x48, 0x54, + 0xE0, 0xFC, 0xD8, 0xC4, 0x90, 0x8C, 0xA8, 0xB4, + 0x03, 0x1F, 0x3B, 0x27, 0x73, 0x6F, 0x4B, 0x57, + 0xE3, 0xFF, 0xDB, 0xC7, 0x93, 0x8F, 0xAB, 0xB7, + 0x06, 0x1A, 0x3E, 0x22, 0x76, 0x6A, 0x4E, 0x52, + 0xE6, 0xFA, 0xDE, 0xC2, 0x96, 0x8A, 0xAE, 0xB2, + 0x05, 0x19, 0x3D, 0x21, 0x75, 0x69, 0x4D, 0x51, + 0xE5, 0xF9, 0xDD, 0xC1, 0x95, 0x89, 0xAD, 0xB1, + 0x0C, 0x10, 0x34, 0x28, 0x7C, 0x60, 0x44, 0x58, + 0xEC, 0xF0, 0xD4, 0xC8, 0x9C, 0x80, 0xA4, 0xB8, + 0x0F, 0x13, 0x37, 0x2B, 0x7F, 0x63, 0x47, 0x5B, + 0xEF, 0xF3, 0xD7, 0xCB, 0x9F, 0x83, 0xA7, 0xBB, + 0x0A, 0x16, 0x32, 0x2E, 0x7A, 0x66, 0x42, 0x5E, + 0xEA, 0xF6, 0xD2, 0xCE, 0x9A, 0x86, 0xA2, 0xBE, + 0x09, 0x15, 0x31, 0x2D, 0x79, 0x65, 0x41, 0x5D, + 0xE9, 0xF5, 0xD1, 0xCD, 0x99, 0x85, 0xA1, 0xBD, + 0x18, 0x04, 0x20, 0x3C, 0x68, 0x74, 0x50, 0x4C, + 0xF8, 0xE4, 0xC0, 0xDC, 0x88, 0x94, 0xB0, 0xAC, + 0x1B, 0x07, 0x23, 0x3F, 0x6B, 0x77, 0x53, 0x4F, + 0xFB, 0xE7, 0xC3, 0xDF, 0x8B, 0x97, 0xB3, 0xAF, + 0x1E, 0x02, 0x26, 0x3A, 0x6E, 0x72, 0x56, 0x4A, + 0xFE, 0xE2, 0xC6, 0xDA, 0x8E, 0x92, 0xB6, 0xAA, + 0x1D, 0x01, 0x25, 0x39, 0x6D, 0x71, 0x55, 0x49, + 0xFD, 0xE1, 0xC5, 0xD9, 0x8D, 0x91, 0xB5, 0xA9, + 0x14, 0x08, 0x2C, 0x30, 0x64, 0x78, 0x5C, 0x40, + 0xF4, 0xE8, 0xCC, 0xD0, 0x84, 0x98, 0xBC, 0xA0, + 0x17, 0x0B, 0x2F, 0x33, 0x67, 0x7B, 0x5F, 0x43, + 0xF7, 0xEB, 0xCF, 0xD3, 0x87, 0x9B, 0xBF, 0xA3, + 0x12, 0x0E, 0x2A, 0x36, 0x62, 0x7E, 0x5A, 0x46, + 0xF2, 0xEE, 0xCA, 0xD6, 0x82, 0x9E, 0xBA, 0xA6, + 0x11, 0x0D, 0x29, 0x35, 0x61, 0x7D, 0x59, 0x45, + 0xF1, 0xED, 0xC9, 0xD5, 0x81, 0x9D, 0xB9, 0xA5, + 0x00, 0x1D, 0x3A, 0x27, 0x74, 0x69, 0x4E, 0x53, + 0xE8, 0xF5, 0xD2, 0xCF, 0x9C, 0x81, 0xA6, 0xBB, + 0x13, 0x0E, 0x29, 0x34, 0x67, 0x7A, 0x5D, 0x40, + 0xFB, 0xE6, 0xC1, 0xDC, 0x8F, 0x92, 0xB5, 0xA8, + 0x26, 0x3B, 0x1C, 0x01, 0x52, 0x4F, 0x68, 0x75, + 0xCE, 0xD3, 0xF4, 0xE9, 0xBA, 0xA7, 0x80, 0x9D, + 0x35, 0x28, 0x0F, 0x12, 0x41, 0x5C, 0x7B, 0x66, + 0xDD, 0xC0, 0xE7, 0xFA, 0xA9, 0xB4, 0x93, 0x8E, + 0x4C, 0x51, 0x76, 0x6B, 0x38, 0x25, 0x02, 0x1F, + 0xA4, 0xB9, 0x9E, 0x83, 0xD0, 0xCD, 0xEA, 0xF7, + 0x5F, 0x42, 0x65, 0x78, 0x2B, 0x36, 0x11, 0x0C, + 0xB7, 0xAA, 0x8D, 0x90, 0xC3, 0xDE, 0xF9, 0xE4, + 0x6A, 0x77, 0x50, 0x4D, 0x1E, 0x03, 0x24, 0x39, + 0x82, 0x9F, 0xB8, 0xA5, 0xF6, 0xEB, 0xCC, 0xD1, + 0x79, 0x64, 0x43, 0x5E, 0x0D, 0x10, 0x37, 0x2A, + 0x91, 0x8C, 0xAB, 0xB6, 0xE5, 0xF8, 0xDF, 0xC2, + 0x98, 0x85, 0xA2, 0xBF, 0xEC, 0xF1, 0xD6, 0xCB, + 0x70, 0x6D, 0x4A, 0x57, 0x04, 0x19, 0x3E, 0x23, + 0x8B, 0x96, 0xB1, 0xAC, 0xFF, 0xE2, 0xC5, 0xD8, + 0x63, 0x7E, 0x59, 0x44, 0x17, 0x0A, 0x2D, 0x30, + 0xBE, 0xA3, 0x84, 0x99, 0xCA, 0xD7, 0xF0, 0xED, + 0x56, 0x4B, 0x6C, 0x71, 0x22, 0x3F, 0x18, 0x05, + 0xAD, 0xB0, 0x97, 0x8A, 0xD9, 0xC4, 0xE3, 0xFE, + 0x45, 0x58, 0x7F, 0x62, 0x31, 0x2C, 0x0B, 0x16, + 0xD4, 0xC9, 0xEE, 0xF3, 0xA0, 0xBD, 0x9A, 0x87, + 0x3C, 0x21, 0x06, 0x1B, 0x48, 0x55, 0x72, 0x6F, + 0xC7, 0xDA, 0xFD, 0xE0, 0xB3, 0xAE, 0x89, 0x94, + 0x2F, 0x32, 0x15, 0x08, 0x5B, 0x46, 0x61, 0x7C, + 0xF2, 0xEF, 0xC8, 0xD5, 0x86, 0x9B, 0xBC, 0xA1, + 0x1A, 0x07, 0x20, 0x3D, 0x6E, 0x73, 0x54, 0x49, + 0xE1, 0xFC, 0xDB, 0xC6, 0x95, 0x88, 0xAF, 0xB2, + 0x09, 0x14, 0x33, 0x2E, 0x7D, 0x60, 0x47, 0x5A, + 0x00, 0x1E, 0x3C, 0x22, 0x78, 0x66, 0x44, 0x5A, + 0xF0, 0xEE, 0xCC, 0xD2, 0x88, 0x96, 0xB4, 0xAA, + 0x23, 0x3D, 0x1F, 0x01, 0x5B, 0x45, 0x67, 0x79, + 0xD3, 0xCD, 0xEF, 0xF1, 0xAB, 0xB5, 0x97, 0x89, + 0x46, 0x58, 0x7A, 0x64, 0x3E, 0x20, 0x02, 0x1C, + 0xB6, 0xA8, 0x8A, 0x94, 0xCE, 0xD0, 0xF2, 0xEC, + 0x65, 0x7B, 0x59, 0x47, 0x1D, 0x03, 0x21, 0x3F, + 0x95, 0x8B, 0xA9, 0xB7, 0xED, 0xF3, 0xD1, 0xCF, + 0x8C, 0x92, 0xB0, 0xAE, 0xF4, 0xEA, 0xC8, 0xD6, + 0x7C, 0x62, 0x40, 0x5E, 0x04, 0x1A, 0x38, 0x26, + 0xAF, 0xB1, 0x93, 0x8D, 0xD7, 0xC9, 0xEB, 0xF5, + 0x5F, 0x41, 0x63, 0x7D, 0x27, 0x39, 0x1B, 0x05, + 0xCA, 0xD4, 0xF6, 0xE8, 0xB2, 0xAC, 0x8E, 0x90, + 0x3A, 0x24, 0x06, 0x18, 0x42, 0x5C, 0x7E, 0x60, + 0xE9, 0xF7, 0xD5, 0xCB, 0x91, 0x8F, 0xAD, 0xB3, + 0x19, 0x07, 0x25, 0x3B, 0x61, 0x7F, 0x5D, 0x43, + 0xDB, 0xC5, 0xE7, 0xF9, 0xA3, 0xBD, 0x9F, 0x81, + 0x2B, 0x35, 0x17, 0x09, 0x53, 0x4D, 0x6F, 0x71, + 0xF8, 0xE6, 0xC4, 0xDA, 0x80, 0x9E, 0xBC, 0xA2, + 0x08, 0x16, 0x34, 0x2A, 0x70, 0x6E, 0x4C, 0x52, + 0x9D, 0x83, 0xA1, 0xBF, 0xE5, 0xFB, 0xD9, 0xC7, + 0x6D, 0x73, 0x51, 0x4F, 0x15, 0x0B, 0x29, 0x37, + 0xBE, 0xA0, 0x82, 0x9C, 0xC6, 0xD8, 0xFA, 0xE4, + 0x4E, 0x50, 0x72, 0x6C, 0x36, 0x28, 0x0A, 0x14, + 0x57, 0x49, 0x6B, 0x75, 0x2F, 0x31, 0x13, 0x0D, + 0xA7, 0xB9, 0x9B, 0x85, 0xDF, 0xC1, 0xE3, 0xFD, + 0x74, 0x6A, 0x48, 0x56, 0x0C, 0x12, 0x30, 0x2E, + 0x84, 0x9A, 0xB8, 0xA6, 0xFC, 0xE2, 0xC0, 0xDE, + 0x11, 0x0F, 0x2D, 0x33, 0x69, 0x77, 0x55, 0x4B, + 0xE1, 0xFF, 0xDD, 0xC3, 0x99, 0x87, 0xA5, 0xBB, + 0x32, 0x2C, 0x0E, 0x10, 0x4A, 0x54, 0x76, 0x68, + 0xC2, 0xDC, 0xFE, 0xE0, 0xBA, 0xA4, 0x86, 0x98, + 0x00, 0x1F, 0x3E, 0x21, 0x7C, 0x63, 0x42, 0x5D, + 0xF8, 0xE7, 0xC6, 0xD9, 0x84, 0x9B, 0xBA, 0xA5, + 0x33, 0x2C, 0x0D, 0x12, 0x4F, 0x50, 0x71, 0x6E, + 0xCB, 0xD4, 0xF5, 0xEA, 0xB7, 0xA8, 0x89, 0x96, + 0x66, 0x79, 0x58, 0x47, 0x1A, 0x05, 0x24, 0x3B, + 0x9E, 0x81, 0xA0, 0xBF, 0xE2, 0xFD, 0xDC, 0xC3, + 0x55, 0x4A, 0x6B, 0x74, 0x29, 0x36, 0x17, 0x08, + 0xAD, 0xB2, 0x93, 0x8C, 0xD1, 0xCE, 0xEF, 0xF0, + 0xCC, 0xD3, 0xF2, 0xED, 0xB0, 0xAF, 0x8E, 0x91, + 0x34, 0x2B, 0x0A, 0x15, 0x48, 0x57, 0x76, 0x69, + 0xFF, 0xE0, 0xC1, 0xDE, 0x83, 0x9C, 0xBD, 0xA2, + 0x07, 0x18, 0x39, 0x26, 0x7B, 0x64, 0x45, 0x5A, + 0xAA, 0xB5, 0x94, 0x8B, 0xD6, 0xC9, 0xE8, 0xF7, + 0x52, 0x4D, 0x6C, 0x73, 0x2E, 0x31, 0x10, 0x0F, + 0x99, 0x86, 0xA7, 0xB8, 0xE5, 0xFA, 0xDB, 0xC4, + 0x61, 0x7E, 0x5F, 0x40, 0x1D, 0x02, 0x23, 0x3C, + 0x5B, 0x44, 0x65, 0x7A, 0x27, 0x38, 0x19, 0x06, + 0xA3, 0xBC, 0x9D, 0x82, 0xDF, 0xC0, 0xE1, 0xFE, + 0x68, 0x77, 0x56, 0x49, 0x14, 0x0B, 0x2A, 0x35, + 0x90, 0x8F, 0xAE, 0xB1, 0xEC, 0xF3, 0xD2, 0xCD, + 0x3D, 0x22, 0x03, 0x1C, 0x41, 0x5E, 0x7F, 0x60, + 0xC5, 0xDA, 0xFB, 0xE4, 0xB9, 0xA6, 0x87, 0x98, + 0x0E, 0x11, 0x30, 0x2F, 0x72, 0x6D, 0x4C, 0x53, + 0xF6, 0xE9, 0xC8, 0xD7, 0x8A, 0x95, 0xB4, 0xAB, + 0x97, 0x88, 0xA9, 0xB6, 0xEB, 0xF4, 0xD5, 0xCA, + 0x6F, 0x70, 0x51, 0x4E, 0x13, 0x0C, 0x2D, 0x32, + 0xA4, 0xBB, 0x9A, 0x85, 0xD8, 0xC7, 0xE6, 0xF9, + 0x5C, 0x43, 0x62, 0x7D, 0x20, 0x3F, 0x1E, 0x01, + 0xF1, 0xEE, 0xCF, 0xD0, 0x8D, 0x92, 0xB3, 0xAC, + 0x09, 0x16, 0x37, 0x28, 0x75, 0x6A, 0x4B, 0x54, + 0xC2, 0xDD, 0xFC, 0xE3, 0xBE, 0xA1, 0x80, 0x9F, + 0x3A, 0x25, 0x04, 0x1B, 0x46, 0x59, 0x78, 0x67, + 0x00, 0x20, 0x40, 0x60, 0x80, 0xA0, 0xC0, 0xE0, + 0xC3, 0xE3, 0x83, 0xA3, 0x43, 0x63, 0x03, 0x23, + 0x45, 0x65, 0x05, 0x25, 0xC5, 0xE5, 0x85, 0xA5, + 0x86, 0xA6, 0xC6, 0xE6, 0x06, 0x26, 0x46, 0x66, + 0x8A, 0xAA, 0xCA, 0xEA, 0x0A, 0x2A, 0x4A, 0x6A, + 0x49, 0x69, 0x09, 0x29, 0xC9, 0xE9, 0x89, 0xA9, + 0xCF, 0xEF, 0x8F, 0xAF, 0x4F, 0x6F, 0x0F, 0x2F, + 0x0C, 0x2C, 0x4C, 0x6C, 0x8C, 0xAC, 0xCC, 0xEC, + 0xD7, 0xF7, 0x97, 0xB7, 0x57, 0x77, 0x17, 0x37, + 0x14, 0x34, 0x54, 0x74, 0x94, 0xB4, 0xD4, 0xF4, + 0x92, 0xB2, 0xD2, 0xF2, 0x12, 0x32, 0x52, 0x72, + 0x51, 0x71, 0x11, 0x31, 0xD1, 0xF1, 0x91, 0xB1, + 0x5D, 0x7D, 0x1D, 0x3D, 0xDD, 0xFD, 0x9D, 0xBD, + 0x9E, 0xBE, 0xDE, 0xFE, 0x1E, 0x3E, 0x5E, 0x7E, + 0x18, 0x38, 0x58, 0x78, 0x98, 0xB8, 0xD8, 0xF8, + 0xDB, 0xFB, 0x9B, 0xBB, 0x5B, 0x7B, 0x1B, 0x3B, + 0x6D, 0x4D, 0x2D, 0x0D, 0xED, 0xCD, 0xAD, 0x8D, + 0xAE, 0x8E, 0xEE, 0xCE, 0x2E, 0x0E, 0x6E, 0x4E, + 0x28, 0x08, 0x68, 0x48, 0xA8, 0x88, 0xE8, 0xC8, + 0xEB, 0xCB, 0xAB, 0x8B, 0x6B, 0x4B, 0x2B, 0x0B, + 0xE7, 0xC7, 0xA7, 0x87, 0x67, 0x47, 0x27, 0x07, + 0x24, 0x04, 0x64, 0x44, 0xA4, 0x84, 0xE4, 0xC4, + 0xA2, 0x82, 0xE2, 0xC2, 0x22, 0x02, 0x62, 0x42, + 0x61, 0x41, 0x21, 0x01, 0xE1, 0xC1, 0xA1, 0x81, + 0xBA, 0x9A, 0xFA, 0xDA, 0x3A, 0x1A, 0x7A, 0x5A, + 0x79, 0x59, 0x39, 0x19, 0xF9, 0xD9, 0xB9, 0x99, + 0xFF, 0xDF, 0xBF, 0x9F, 0x7F, 0x5F, 0x3F, 0x1F, + 0x3C, 0x1C, 0x7C, 0x5C, 0xBC, 0x9C, 0xFC, 0xDC, + 0x30, 0x10, 0x70, 0x50, 0xB0, 0x90, 0xF0, 0xD0, + 0xF3, 0xD3, 0xB3, 0x93, 0x73, 0x53, 0x33, 0x13, + 0x75, 0x55, 0x35, 0x15, 0xF5, 0xD5, 0xB5, 0x95, + 0xB6, 0x96, 0xF6, 0xD6, 0x36, 0x16, 0x76, 0x56, + 0x00, 0x21, 0x42, 0x63, 0x84, 0xA5, 0xC6, 0xE7, + 0xCB, 0xEA, 0x89, 0xA8, 0x4F, 0x6E, 0x0D, 0x2C, + 0x55, 0x74, 0x17, 0x36, 0xD1, 0xF0, 0x93, 0xB2, + 0x9E, 0xBF, 0xDC, 0xFD, 0x1A, 0x3B, 0x58, 0x79, + 0xAA, 0x8B, 0xE8, 0xC9, 0x2E, 0x0F, 0x6C, 0x4D, + 0x61, 0x40, 0x23, 0x02, 0xE5, 0xC4, 0xA7, 0x86, + 0xFF, 0xDE, 0xBD, 0x9C, 0x7B, 0x5A, 0x39, 0x18, + 0x34, 0x15, 0x76, 0x57, 0xB0, 0x91, 0xF2, 0xD3, + 0x97, 0xB6, 0xD5, 0xF4, 0x13, 0x32, 0x51, 0x70, + 0x5C, 0x7D, 0x1E, 0x3F, 0xD8, 0xF9, 0x9A, 0xBB, + 0xC2, 0xE3, 0x80, 0xA1, 0x46, 0x67, 0x04, 0x25, + 0x09, 0x28, 0x4B, 0x6A, 0x8D, 0xAC, 0xCF, 0xEE, + 0x3D, 0x1C, 0x7F, 0x5E, 0xB9, 0x98, 0xFB, 0xDA, + 0xF6, 0xD7, 0xB4, 0x95, 0x72, 0x53, 0x30, 0x11, + 0x68, 0x49, 0x2A, 0x0B, 0xEC, 0xCD, 0xAE, 0x8F, + 0xA3, 0x82, 0xE1, 0xC0, 0x27, 0x06, 0x65, 0x44, + 0xED, 0xCC, 0xAF, 0x8E, 0x69, 0x48, 0x2B, 0x0A, + 0x26, 0x07, 0x64, 0x45, 0xA2, 0x83, 0xE0, 0xC1, + 0xB8, 0x99, 0xFA, 0xDB, 0x3C, 0x1D, 0x7E, 0x5F, + 0x73, 0x52, 0x31, 0x10, 0xF7, 0xD6, 0xB5, 0x94, + 0x47, 0x66, 0x05, 0x24, 0xC3, 0xE2, 0x81, 0xA0, + 0x8C, 0xAD, 0xCE, 0xEF, 0x08, 0x29, 0x4A, 0x6B, + 0x12, 0x33, 0x50, 0x71, 0x96, 0xB7, 0xD4, 0xF5, + 0xD9, 0xF8, 0x9B, 0xBA, 0x5D, 0x7C, 0x1F, 0x3E, + 0x7A, 0x5B, 0x38, 0x19, 0xFE, 0xDF, 0xBC, 0x9D, + 0xB1, 0x90, 0xF3, 0xD2, 0x35, 0x14, 0x77, 0x56, + 0x2F, 0x0E, 0x6D, 0x4C, 0xAB, 0x8A, 0xE9, 0xC8, + 0xE4, 0xC5, 0xA6, 0x87, 0x60, 0x41, 0x22, 0x03, + 0xD0, 0xF1, 0x92, 0xB3, 0x54, 0x75, 0x16, 0x37, + 0x1B, 0x3A, 0x59, 0x78, 0x9F, 0xBE, 0xDD, 0xFC, + 0x85, 0xA4, 0xC7, 0xE6, 0x01, 0x20, 0x43, 0x62, + 0x4E, 0x6F, 0x0C, 0x2D, 0xCA, 0xEB, 0x88, 0xA9, + 0x00, 0x22, 0x44, 0x66, 0x88, 0xAA, 0xCC, 0xEE, + 0xD3, 0xF1, 0x97, 0xB5, 0x5B, 0x79, 0x1F, 0x3D, + 0x65, 0x47, 0x21, 0x03, 0xED, 0xCF, 0xA9, 0x8B, + 0xB6, 0x94, 0xF2, 0xD0, 0x3E, 0x1C, 0x7A, 0x58, + 0xCA, 0xE8, 0x8E, 0xAC, 0x42, 0x60, 0x06, 0x24, + 0x19, 0x3B, 0x5D, 0x7F, 0x91, 0xB3, 0xD5, 0xF7, + 0xAF, 0x8D, 0xEB, 0xC9, 0x27, 0x05, 0x63, 0x41, + 0x7C, 0x5E, 0x38, 0x1A, 0xF4, 0xD6, 0xB0, 0x92, + 0x57, 0x75, 0x13, 0x31, 0xDF, 0xFD, 0x9B, 0xB9, + 0x84, 0xA6, 0xC0, 0xE2, 0x0C, 0x2E, 0x48, 0x6A, + 0x32, 0x10, 0x76, 0x54, 0xBA, 0x98, 0xFE, 0xDC, + 0xE1, 0xC3, 0xA5, 0x87, 0x69, 0x4B, 0x2D, 0x0F, + 0x9D, 0xBF, 0xD9, 0xFB, 0x15, 0x37, 0x51, 0x73, + 0x4E, 0x6C, 0x0A, 0x28, 0xC6, 0xE4, 0x82, 0xA0, + 0xF8, 0xDA, 0xBC, 0x9E, 0x70, 0x52, 0x34, 0x16, + 0x2B, 0x09, 0x6F, 0x4D, 0xA3, 0x81, 0xE7, 0xC5, + 0xAE, 0x8C, 0xEA, 0xC8, 0x26, 0x04, 0x62, 0x40, + 0x7D, 0x5F, 0x39, 0x1B, 0xF5, 0xD7, 0xB1, 0x93, + 0xCB, 0xE9, 0x8F, 0xAD, 0x43, 0x61, 0x07, 0x25, + 0x18, 0x3A, 0x5C, 0x7E, 0x90, 0xB2, 0xD4, 0xF6, + 0x64, 0x46, 0x20, 0x02, 0xEC, 0xCE, 0xA8, 0x8A, + 0xB7, 0x95, 0xF3, 0xD1, 0x3F, 0x1D, 0x7B, 0x59, + 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, + 0xD2, 0xF0, 0x96, 0xB4, 0x5A, 0x78, 0x1E, 0x3C, + 0xF9, 0xDB, 0xBD, 0x9F, 0x71, 0x53, 0x35, 0x17, + 0x2A, 0x08, 0x6E, 0x4C, 0xA2, 0x80, 0xE6, 0xC4, + 0x9C, 0xBE, 0xD8, 0xFA, 0x14, 0x36, 0x50, 0x72, + 0x4F, 0x6D, 0x0B, 0x29, 0xC7, 0xE5, 0x83, 0xA1, + 0x33, 0x11, 0x77, 0x55, 0xBB, 0x99, 0xFF, 0xDD, + 0xE0, 0xC2, 0xA4, 0x86, 0x68, 0x4A, 0x2C, 0x0E, + 0x56, 0x74, 0x12, 0x30, 0xDE, 0xFC, 0x9A, 0xB8, + 0x85, 0xA7, 0xC1, 0xE3, 0x0D, 0x2F, 0x49, 0x6B, + 0x00, 0x23, 0x46, 0x65, 0x8C, 0xAF, 0xCA, 0xE9, + 0xDB, 0xF8, 0x9D, 0xBE, 0x57, 0x74, 0x11, 0x32, + 0x75, 0x56, 0x33, 0x10, 0xF9, 0xDA, 0xBF, 0x9C, + 0xAE, 0x8D, 0xE8, 0xCB, 0x22, 0x01, 0x64, 0x47, + 0xEA, 0xC9, 0xAC, 0x8F, 0x66, 0x45, 0x20, 0x03, + 0x31, 0x12, 0x77, 0x54, 0xBD, 0x9E, 0xFB, 0xD8, + 0x9F, 0xBC, 0xD9, 0xFA, 0x13, 0x30, 0x55, 0x76, + 0x44, 0x67, 0x02, 0x21, 0xC8, 0xEB, 0x8E, 0xAD, + 0x17, 0x34, 0x51, 0x72, 0x9B, 0xB8, 0xDD, 0xFE, + 0xCC, 0xEF, 0x8A, 0xA9, 0x40, 0x63, 0x06, 0x25, + 0x62, 0x41, 0x24, 0x07, 0xEE, 0xCD, 0xA8, 0x8B, + 0xB9, 0x9A, 0xFF, 0xDC, 0x35, 0x16, 0x73, 0x50, + 0xFD, 0xDE, 0xBB, 0x98, 0x71, 0x52, 0x37, 0x14, + 0x26, 0x05, 0x60, 0x43, 0xAA, 0x89, 0xEC, 0xCF, + 0x88, 0xAB, 0xCE, 0xED, 0x04, 0x27, 0x42, 0x61, + 0x53, 0x70, 0x15, 0x36, 0xDF, 0xFC, 0x99, 0xBA, + 0x2E, 0x0D, 0x68, 0x4B, 0xA2, 0x81, 0xE4, 0xC7, + 0xF5, 0xD6, 0xB3, 0x90, 0x79, 0x5A, 0x3F, 0x1C, + 0x5B, 0x78, 0x1D, 0x3E, 0xD7, 0xF4, 0x91, 0xB2, + 0x80, 0xA3, 0xC6, 0xE5, 0x0C, 0x2F, 0x4A, 0x69, + 0xC4, 0xE7, 0x82, 0xA1, 0x48, 0x6B, 0x0E, 0x2D, + 0x1F, 0x3C, 0x59, 0x7A, 0x93, 0xB0, 0xD5, 0xF6, + 0xB1, 0x92, 0xF7, 0xD4, 0x3D, 0x1E, 0x7B, 0x58, + 0x6A, 0x49, 0x2C, 0x0F, 0xE6, 0xC5, 0xA0, 0x83, + 0x39, 0x1A, 0x7F, 0x5C, 0xB5, 0x96, 0xF3, 0xD0, + 0xE2, 0xC1, 0xA4, 0x87, 0x6E, 0x4D, 0x28, 0x0B, + 0x4C, 0x6F, 0x0A, 0x29, 0xC0, 0xE3, 0x86, 0xA5, + 0x97, 0xB4, 0xD1, 0xF2, 0x1B, 0x38, 0x5D, 0x7E, + 0xD3, 0xF0, 0x95, 0xB6, 0x5F, 0x7C, 0x19, 0x3A, + 0x08, 0x2B, 0x4E, 0x6D, 0x84, 0xA7, 0xC2, 0xE1, + 0xA6, 0x85, 0xE0, 0xC3, 0x2A, 0x09, 0x6C, 0x4F, + 0x7D, 0x5E, 0x3B, 0x18, 0xF1, 0xD2, 0xB7, 0x94, + 0x00, 0x24, 0x48, 0x6C, 0x90, 0xB4, 0xD8, 0xFC, + 0xE3, 0xC7, 0xAB, 0x8F, 0x73, 0x57, 0x3B, 0x1F, + 0x05, 0x21, 0x4D, 0x69, 0x95, 0xB1, 0xDD, 0xF9, + 0xE6, 0xC2, 0xAE, 0x8A, 0x76, 0x52, 0x3E, 0x1A, + 0x0A, 0x2E, 0x42, 0x66, 0x9A, 0xBE, 0xD2, 0xF6, + 0xE9, 0xCD, 0xA1, 0x85, 0x79, 0x5D, 0x31, 0x15, + 0x0F, 0x2B, 0x47, 0x63, 0x9F, 0xBB, 0xD7, 0xF3, + 0xEC, 0xC8, 0xA4, 0x80, 0x7C, 0x58, 0x34, 0x10, + 0x14, 0x30, 0x5C, 0x78, 0x84, 0xA0, 0xCC, 0xE8, + 0xF7, 0xD3, 0xBF, 0x9B, 0x67, 0x43, 0x2F, 0x0B, + 0x11, 0x35, 0x59, 0x7D, 0x81, 0xA5, 0xC9, 0xED, + 0xF2, 0xD6, 0xBA, 0x9E, 0x62, 0x46, 0x2A, 0x0E, + 0x1E, 0x3A, 0x56, 0x72, 0x8E, 0xAA, 0xC6, 0xE2, + 0xFD, 0xD9, 0xB5, 0x91, 0x6D, 0x49, 0x25, 0x01, + 0x1B, 0x3F, 0x53, 0x77, 0x8B, 0xAF, 0xC3, 0xE7, + 0xF8, 0xDC, 0xB0, 0x94, 0x68, 0x4C, 0x20, 0x04, + 0x28, 0x0C, 0x60, 0x44, 0xB8, 0x9C, 0xF0, 0xD4, + 0xCB, 0xEF, 0x83, 0xA7, 0x5B, 0x7F, 0x13, 0x37, + 0x2D, 0x09, 0x65, 0x41, 0xBD, 0x99, 0xF5, 0xD1, + 0xCE, 0xEA, 0x86, 0xA2, 0x5E, 0x7A, 0x16, 0x32, + 0x22, 0x06, 0x6A, 0x4E, 0xB2, 0x96, 0xFA, 0xDE, + 0xC1, 0xE5, 0x89, 0xAD, 0x51, 0x75, 0x19, 0x3D, + 0x27, 0x03, 0x6F, 0x4B, 0xB7, 0x93, 0xFF, 0xDB, + 0xC4, 0xE0, 0x8C, 0xA8, 0x54, 0x70, 0x1C, 0x38, + 0x3C, 0x18, 0x74, 0x50, 0xAC, 0x88, 0xE4, 0xC0, + 0xDF, 0xFB, 0x97, 0xB3, 0x4F, 0x6B, 0x07, 0x23, + 0x39, 0x1D, 0x71, 0x55, 0xA9, 0x8D, 0xE1, 0xC5, + 0xDA, 0xFE, 0x92, 0xB6, 0x4A, 0x6E, 0x02, 0x26, + 0x36, 0x12, 0x7E, 0x5A, 0xA6, 0x82, 0xEE, 0xCA, + 0xD5, 0xF1, 0x9D, 0xB9, 0x45, 0x61, 0x0D, 0x29, + 0x33, 0x17, 0x7B, 0x5F, 0xA3, 0x87, 0xEB, 0xCF, + 0xD0, 0xF4, 0x98, 0xBC, 0x40, 0x64, 0x08, 0x2C, + 0x00, 0x25, 0x4A, 0x6F, 0x94, 0xB1, 0xDE, 0xFB, + 0xEB, 0xCE, 0xA1, 0x84, 0x7F, 0x5A, 0x35, 0x10, + 0x15, 0x30, 0x5F, 0x7A, 0x81, 0xA4, 0xCB, 0xEE, + 0xFE, 0xDB, 0xB4, 0x91, 0x6A, 0x4F, 0x20, 0x05, + 0x2A, 0x0F, 0x60, 0x45, 0xBE, 0x9B, 0xF4, 0xD1, + 0xC1, 0xE4, 0x8B, 0xAE, 0x55, 0x70, 0x1F, 0x3A, + 0x3F, 0x1A, 0x75, 0x50, 0xAB, 0x8E, 0xE1, 0xC4, + 0xD4, 0xF1, 0x9E, 0xBB, 0x40, 0x65, 0x0A, 0x2F, + 0x54, 0x71, 0x1E, 0x3B, 0xC0, 0xE5, 0x8A, 0xAF, + 0xBF, 0x9A, 0xF5, 0xD0, 0x2B, 0x0E, 0x61, 0x44, + 0x41, 0x64, 0x0B, 0x2E, 0xD5, 0xF0, 0x9F, 0xBA, + 0xAA, 0x8F, 0xE0, 0xC5, 0x3E, 0x1B, 0x74, 0x51, + 0x7E, 0x5B, 0x34, 0x11, 0xEA, 0xCF, 0xA0, 0x85, + 0x95, 0xB0, 0xDF, 0xFA, 0x01, 0x24, 0x4B, 0x6E, + 0x6B, 0x4E, 0x21, 0x04, 0xFF, 0xDA, 0xB5, 0x90, + 0x80, 0xA5, 0xCA, 0xEF, 0x14, 0x31, 0x5E, 0x7B, + 0xA8, 0x8D, 0xE2, 0xC7, 0x3C, 0x19, 0x76, 0x53, + 0x43, 0x66, 0x09, 0x2C, 0xD7, 0xF2, 0x9D, 0xB8, + 0xBD, 0x98, 0xF7, 0xD2, 0x29, 0x0C, 0x63, 0x46, + 0x56, 0x73, 0x1C, 0x39, 0xC2, 0xE7, 0x88, 0xAD, + 0x82, 0xA7, 0xC8, 0xED, 0x16, 0x33, 0x5C, 0x79, + 0x69, 0x4C, 0x23, 0x06, 0xFD, 0xD8, 0xB7, 0x92, + 0x97, 0xB2, 0xDD, 0xF8, 0x03, 0x26, 0x49, 0x6C, + 0x7C, 0x59, 0x36, 0x13, 0xE8, 0xCD, 0xA2, 0x87, + 0xFC, 0xD9, 0xB6, 0x93, 0x68, 0x4D, 0x22, 0x07, + 0x17, 0x32, 0x5D, 0x78, 0x83, 0xA6, 0xC9, 0xEC, + 0xE9, 0xCC, 0xA3, 0x86, 0x7D, 0x58, 0x37, 0x12, + 0x02, 0x27, 0x48, 0x6D, 0x96, 0xB3, 0xDC, 0xF9, + 0xD6, 0xF3, 0x9C, 0xB9, 0x42, 0x67, 0x08, 0x2D, + 0x3D, 0x18, 0x77, 0x52, 0xA9, 0x8C, 0xE3, 0xC6, + 0xC3, 0xE6, 0x89, 0xAC, 0x57, 0x72, 0x1D, 0x38, + 0x28, 0x0D, 0x62, 0x47, 0xBC, 0x99, 0xF6, 0xD3, + 0x00, 0x26, 0x4C, 0x6A, 0x98, 0xBE, 0xD4, 0xF2, + 0xF3, 0xD5, 0xBF, 0x99, 0x6B, 0x4D, 0x27, 0x01, + 0x25, 0x03, 0x69, 0x4F, 0xBD, 0x9B, 0xF1, 0xD7, + 0xD6, 0xF0, 0x9A, 0xBC, 0x4E, 0x68, 0x02, 0x24, + 0x4A, 0x6C, 0x06, 0x20, 0xD2, 0xF4, 0x9E, 0xB8, + 0xB9, 0x9F, 0xF5, 0xD3, 0x21, 0x07, 0x6D, 0x4B, + 0x6F, 0x49, 0x23, 0x05, 0xF7, 0xD1, 0xBB, 0x9D, + 0x9C, 0xBA, 0xD0, 0xF6, 0x04, 0x22, 0x48, 0x6E, + 0x94, 0xB2, 0xD8, 0xFE, 0x0C, 0x2A, 0x40, 0x66, + 0x67, 0x41, 0x2B, 0x0D, 0xFF, 0xD9, 0xB3, 0x95, + 0xB1, 0x97, 0xFD, 0xDB, 0x29, 0x0F, 0x65, 0x43, + 0x42, 0x64, 0x0E, 0x28, 0xDA, 0xFC, 0x96, 0xB0, + 0xDE, 0xF8, 0x92, 0xB4, 0x46, 0x60, 0x0A, 0x2C, + 0x2D, 0x0B, 0x61, 0x47, 0xB5, 0x93, 0xF9, 0xDF, + 0xFB, 0xDD, 0xB7, 0x91, 0x63, 0x45, 0x2F, 0x09, + 0x08, 0x2E, 0x44, 0x62, 0x90, 0xB6, 0xDC, 0xFA, + 0xEB, 0xCD, 0xA7, 0x81, 0x73, 0x55, 0x3F, 0x19, + 0x18, 0x3E, 0x54, 0x72, 0x80, 0xA6, 0xCC, 0xEA, + 0xCE, 0xE8, 0x82, 0xA4, 0x56, 0x70, 0x1A, 0x3C, + 0x3D, 0x1B, 0x71, 0x57, 0xA5, 0x83, 0xE9, 0xCF, + 0xA1, 0x87, 0xED, 0xCB, 0x39, 0x1F, 0x75, 0x53, + 0x52, 0x74, 0x1E, 0x38, 0xCA, 0xEC, 0x86, 0xA0, + 0x84, 0xA2, 0xC8, 0xEE, 0x1C, 0x3A, 0x50, 0x76, + 0x77, 0x51, 0x3B, 0x1D, 0xEF, 0xC9, 0xA3, 0x85, + 0x7F, 0x59, 0x33, 0x15, 0xE7, 0xC1, 0xAB, 0x8D, + 0x8C, 0xAA, 0xC0, 0xE6, 0x14, 0x32, 0x58, 0x7E, + 0x5A, 0x7C, 0x16, 0x30, 0xC2, 0xE4, 0x8E, 0xA8, + 0xA9, 0x8F, 0xE5, 0xC3, 0x31, 0x17, 0x7D, 0x5B, + 0x35, 0x13, 0x79, 0x5F, 0xAD, 0x8B, 0xE1, 0xC7, + 0xC6, 0xE0, 0x8A, 0xAC, 0x5E, 0x78, 0x12, 0x34, + 0x10, 0x36, 0x5C, 0x7A, 0x88, 0xAE, 0xC4, 0xE2, + 0xE3, 0xC5, 0xAF, 0x89, 0x7B, 0x5D, 0x37, 0x11, + 0x00, 0x27, 0x4E, 0x69, 0x9C, 0xBB, 0xD2, 0xF5, + 0xFB, 0xDC, 0xB5, 0x92, 0x67, 0x40, 0x29, 0x0E, + 0x35, 0x12, 0x7B, 0x5C, 0xA9, 0x8E, 0xE7, 0xC0, + 0xCE, 0xE9, 0x80, 0xA7, 0x52, 0x75, 0x1C, 0x3B, + 0x6A, 0x4D, 0x24, 0x03, 0xF6, 0xD1, 0xB8, 0x9F, + 0x91, 0xB6, 0xDF, 0xF8, 0x0D, 0x2A, 0x43, 0x64, + 0x5F, 0x78, 0x11, 0x36, 0xC3, 0xE4, 0x8D, 0xAA, + 0xA4, 0x83, 0xEA, 0xCD, 0x38, 0x1F, 0x76, 0x51, + 0xD4, 0xF3, 0x9A, 0xBD, 0x48, 0x6F, 0x06, 0x21, + 0x2F, 0x08, 0x61, 0x46, 0xB3, 0x94, 0xFD, 0xDA, + 0xE1, 0xC6, 0xAF, 0x88, 0x7D, 0x5A, 0x33, 0x14, + 0x1A, 0x3D, 0x54, 0x73, 0x86, 0xA1, 0xC8, 0xEF, + 0xBE, 0x99, 0xF0, 0xD7, 0x22, 0x05, 0x6C, 0x4B, + 0x45, 0x62, 0x0B, 0x2C, 0xD9, 0xFE, 0x97, 0xB0, + 0x8B, 0xAC, 0xC5, 0xE2, 0x17, 0x30, 0x59, 0x7E, + 0x70, 0x57, 0x3E, 0x19, 0xEC, 0xCB, 0xA2, 0x85, + 0x6B, 0x4C, 0x25, 0x02, 0xF7, 0xD0, 0xB9, 0x9E, + 0x90, 0xB7, 0xDE, 0xF9, 0x0C, 0x2B, 0x42, 0x65, + 0x5E, 0x79, 0x10, 0x37, 0xC2, 0xE5, 0x8C, 0xAB, + 0xA5, 0x82, 0xEB, 0xCC, 0x39, 0x1E, 0x77, 0x50, + 0x01, 0x26, 0x4F, 0x68, 0x9D, 0xBA, 0xD3, 0xF4, + 0xFA, 0xDD, 0xB4, 0x93, 0x66, 0x41, 0x28, 0x0F, + 0x34, 0x13, 0x7A, 0x5D, 0xA8, 0x8F, 0xE6, 0xC1, + 0xCF, 0xE8, 0x81, 0xA6, 0x53, 0x74, 0x1D, 0x3A, + 0xBF, 0x98, 0xF1, 0xD6, 0x23, 0x04, 0x6D, 0x4A, + 0x44, 0x63, 0x0A, 0x2D, 0xD8, 0xFF, 0x96, 0xB1, + 0x8A, 0xAD, 0xC4, 0xE3, 0x16, 0x31, 0x58, 0x7F, + 0x71, 0x56, 0x3F, 0x18, 0xED, 0xCA, 0xA3, 0x84, + 0xD5, 0xF2, 0x9B, 0xBC, 0x49, 0x6E, 0x07, 0x20, + 0x2E, 0x09, 0x60, 0x47, 0xB2, 0x95, 0xFC, 0xDB, + 0xE0, 0xC7, 0xAE, 0x89, 0x7C, 0x5B, 0x32, 0x15, + 0x1B, 0x3C, 0x55, 0x72, 0x87, 0xA0, 0xC9, 0xEE, + 0x00, 0x28, 0x50, 0x78, 0xA0, 0x88, 0xF0, 0xD8, + 0x83, 0xAB, 0xD3, 0xFB, 0x23, 0x0B, 0x73, 0x5B, + 0xC5, 0xED, 0x95, 0xBD, 0x65, 0x4D, 0x35, 0x1D, + 0x46, 0x6E, 0x16, 0x3E, 0xE6, 0xCE, 0xB6, 0x9E, + 0x49, 0x61, 0x19, 0x31, 0xE9, 0xC1, 0xB9, 0x91, + 0xCA, 0xE2, 0x9A, 0xB2, 0x6A, 0x42, 0x3A, 0x12, + 0x8C, 0xA4, 0xDC, 0xF4, 0x2C, 0x04, 0x7C, 0x54, + 0x0F, 0x27, 0x5F, 0x77, 0xAF, 0x87, 0xFF, 0xD7, + 0x92, 0xBA, 0xC2, 0xEA, 0x32, 0x1A, 0x62, 0x4A, + 0x11, 0x39, 0x41, 0x69, 0xB1, 0x99, 0xE1, 0xC9, + 0x57, 0x7F, 0x07, 0x2F, 0xF7, 0xDF, 0xA7, 0x8F, + 0xD4, 0xFC, 0x84, 0xAC, 0x74, 0x5C, 0x24, 0x0C, + 0xDB, 0xF3, 0x8B, 0xA3, 0x7B, 0x53, 0x2B, 0x03, + 0x58, 0x70, 0x08, 0x20, 0xF8, 0xD0, 0xA8, 0x80, + 0x1E, 0x36, 0x4E, 0x66, 0xBE, 0x96, 0xEE, 0xC6, + 0x9D, 0xB5, 0xCD, 0xE5, 0x3D, 0x15, 0x6D, 0x45, + 0xE7, 0xCF, 0xB7, 0x9F, 0x47, 0x6F, 0x17, 0x3F, + 0x64, 0x4C, 0x34, 0x1C, 0xC4, 0xEC, 0x94, 0xBC, + 0x22, 0x0A, 0x72, 0x5A, 0x82, 0xAA, 0xD2, 0xFA, + 0xA1, 0x89, 0xF1, 0xD9, 0x01, 0x29, 0x51, 0x79, + 0xAE, 0x86, 0xFE, 0xD6, 0x0E, 0x26, 0x5E, 0x76, + 0x2D, 0x05, 0x7D, 0x55, 0x8D, 0xA5, 0xDD, 0xF5, + 0x6B, 0x43, 0x3B, 0x13, 0xCB, 0xE3, 0x9B, 0xB3, + 0xE8, 0xC0, 0xB8, 0x90, 0x48, 0x60, 0x18, 0x30, + 0x75, 0x5D, 0x25, 0x0D, 0xD5, 0xFD, 0x85, 0xAD, + 0xF6, 0xDE, 0xA6, 0x8E, 0x56, 0x7E, 0x06, 0x2E, + 0xB0, 0x98, 0xE0, 0xC8, 0x10, 0x38, 0x40, 0x68, + 0x33, 0x1B, 0x63, 0x4B, 0x93, 0xBB, 0xC3, 0xEB, + 0x3C, 0x14, 0x6C, 0x44, 0x9C, 0xB4, 0xCC, 0xE4, + 0xBF, 0x97, 0xEF, 0xC7, 0x1F, 0x37, 0x4F, 0x67, + 0xF9, 0xD1, 0xA9, 0x81, 0x59, 0x71, 0x09, 0x21, + 0x7A, 0x52, 0x2A, 0x02, 0xDA, 0xF2, 0x8A, 0xA2, + 0x00, 0x29, 0x52, 0x7B, 0xA4, 0x8D, 0xF6, 0xDF, + 0x8B, 0xA2, 0xD9, 0xF0, 0x2F, 0x06, 0x7D, 0x54, + 0xD5, 0xFC, 0x87, 0xAE, 0x71, 0x58, 0x23, 0x0A, + 0x5E, 0x77, 0x0C, 0x25, 0xFA, 0xD3, 0xA8, 0x81, + 0x69, 0x40, 0x3B, 0x12, 0xCD, 0xE4, 0x9F, 0xB6, + 0xE2, 0xCB, 0xB0, 0x99, 0x46, 0x6F, 0x14, 0x3D, + 0xBC, 0x95, 0xEE, 0xC7, 0x18, 0x31, 0x4A, 0x63, + 0x37, 0x1E, 0x65, 0x4C, 0x93, 0xBA, 0xC1, 0xE8, + 0xD2, 0xFB, 0x80, 0xA9, 0x76, 0x5F, 0x24, 0x0D, + 0x59, 0x70, 0x0B, 0x22, 0xFD, 0xD4, 0xAF, 0x86, + 0x07, 0x2E, 0x55, 0x7C, 0xA3, 0x8A, 0xF1, 0xD8, + 0x8C, 0xA5, 0xDE, 0xF7, 0x28, 0x01, 0x7A, 0x53, + 0xBB, 0x92, 0xE9, 0xC0, 0x1F, 0x36, 0x4D, 0x64, + 0x30, 0x19, 0x62, 0x4B, 0x94, 0xBD, 0xC6, 0xEF, + 0x6E, 0x47, 0x3C, 0x15, 0xCA, 0xE3, 0x98, 0xB1, + 0xE5, 0xCC, 0xB7, 0x9E, 0x41, 0x68, 0x13, 0x3A, + 0x67, 0x4E, 0x35, 0x1C, 0xC3, 0xEA, 0x91, 0xB8, + 0xEC, 0xC5, 0xBE, 0x97, 0x48, 0x61, 0x1A, 0x33, + 0xB2, 0x9B, 0xE0, 0xC9, 0x16, 0x3F, 0x44, 0x6D, + 0x39, 0x10, 0x6B, 0x42, 0x9D, 0xB4, 0xCF, 0xE6, + 0x0E, 0x27, 0x5C, 0x75, 0xAA, 0x83, 0xF8, 0xD1, + 0x85, 0xAC, 0xD7, 0xFE, 0x21, 0x08, 0x73, 0x5A, + 0xDB, 0xF2, 0x89, 0xA0, 0x7F, 0x56, 0x2D, 0x04, + 0x50, 0x79, 0x02, 0x2B, 0xF4, 0xDD, 0xA6, 0x8F, + 0xB5, 0x9C, 0xE7, 0xCE, 0x11, 0x38, 0x43, 0x6A, + 0x3E, 0x17, 0x6C, 0x45, 0x9A, 0xB3, 0xC8, 0xE1, + 0x60, 0x49, 0x32, 0x1B, 0xC4, 0xED, 0x96, 0xBF, + 0xEB, 0xC2, 0xB9, 0x90, 0x4F, 0x66, 0x1D, 0x34, + 0xDC, 0xF5, 0x8E, 0xA7, 0x78, 0x51, 0x2A, 0x03, + 0x57, 0x7E, 0x05, 0x2C, 0xF3, 0xDA, 0xA1, 0x88, + 0x09, 0x20, 0x5B, 0x72, 0xAD, 0x84, 0xFF, 0xD6, + 0x82, 0xAB, 0xD0, 0xF9, 0x26, 0x0F, 0x74, 0x5D, + 0x00, 0x2A, 0x54, 0x7E, 0xA8, 0x82, 0xFC, 0xD6, + 0x93, 0xB9, 0xC7, 0xED, 0x3B, 0x11, 0x6F, 0x45, + 0xE5, 0xCF, 0xB1, 0x9B, 0x4D, 0x67, 0x19, 0x33, + 0x76, 0x5C, 0x22, 0x08, 0xDE, 0xF4, 0x8A, 0xA0, + 0x09, 0x23, 0x5D, 0x77, 0xA1, 0x8B, 0xF5, 0xDF, + 0x9A, 0xB0, 0xCE, 0xE4, 0x32, 0x18, 0x66, 0x4C, + 0xEC, 0xC6, 0xB8, 0x92, 0x44, 0x6E, 0x10, 0x3A, + 0x7F, 0x55, 0x2B, 0x01, 0xD7, 0xFD, 0x83, 0xA9, + 0x12, 0x38, 0x46, 0x6C, 0xBA, 0x90, 0xEE, 0xC4, + 0x81, 0xAB, 0xD5, 0xFF, 0x29, 0x03, 0x7D, 0x57, + 0xF7, 0xDD, 0xA3, 0x89, 0x5F, 0x75, 0x0B, 0x21, + 0x64, 0x4E, 0x30, 0x1A, 0xCC, 0xE6, 0x98, 0xB2, + 0x1B, 0x31, 0x4F, 0x65, 0xB3, 0x99, 0xE7, 0xCD, + 0x88, 0xA2, 0xDC, 0xF6, 0x20, 0x0A, 0x74, 0x5E, + 0xFE, 0xD4, 0xAA, 0x80, 0x56, 0x7C, 0x02, 0x28, + 0x6D, 0x47, 0x39, 0x13, 0xC5, 0xEF, 0x91, 0xBB, + 0x24, 0x0E, 0x70, 0x5A, 0x8C, 0xA6, 0xD8, 0xF2, + 0xB7, 0x9D, 0xE3, 0xC9, 0x1F, 0x35, 0x4B, 0x61, + 0xC1, 0xEB, 0x95, 0xBF, 0x69, 0x43, 0x3D, 0x17, + 0x52, 0x78, 0x06, 0x2C, 0xFA, 0xD0, 0xAE, 0x84, + 0x2D, 0x07, 0x79, 0x53, 0x85, 0xAF, 0xD1, 0xFB, + 0xBE, 0x94, 0xEA, 0xC0, 0x16, 0x3C, 0x42, 0x68, + 0xC8, 0xE2, 0x9C, 0xB6, 0x60, 0x4A, 0x34, 0x1E, + 0x5B, 0x71, 0x0F, 0x25, 0xF3, 0xD9, 0xA7, 0x8D, + 0x36, 0x1C, 0x62, 0x48, 0x9E, 0xB4, 0xCA, 0xE0, + 0xA5, 0x8F, 0xF1, 0xDB, 0x0D, 0x27, 0x59, 0x73, + 0xD3, 0xF9, 0x87, 0xAD, 0x7B, 0x51, 0x2F, 0x05, + 0x40, 0x6A, 0x14, 0x3E, 0xE8, 0xC2, 0xBC, 0x96, + 0x3F, 0x15, 0x6B, 0x41, 0x97, 0xBD, 0xC3, 0xE9, + 0xAC, 0x86, 0xF8, 0xD2, 0x04, 0x2E, 0x50, 0x7A, + 0xDA, 0xF0, 0x8E, 0xA4, 0x72, 0x58, 0x26, 0x0C, + 0x49, 0x63, 0x1D, 0x37, 0xE1, 0xCB, 0xB5, 0x9F, + 0x00, 0x2B, 0x56, 0x7D, 0xAC, 0x87, 0xFA, 0xD1, + 0x9B, 0xB0, 0xCD, 0xE6, 0x37, 0x1C, 0x61, 0x4A, + 0xF5, 0xDE, 0xA3, 0x88, 0x59, 0x72, 0x0F, 0x24, + 0x6E, 0x45, 0x38, 0x13, 0xC2, 0xE9, 0x94, 0xBF, + 0x29, 0x02, 0x7F, 0x54, 0x85, 0xAE, 0xD3, 0xF8, + 0xB2, 0x99, 0xE4, 0xCF, 0x1E, 0x35, 0x48, 0x63, + 0xDC, 0xF7, 0x8A, 0xA1, 0x70, 0x5B, 0x26, 0x0D, + 0x47, 0x6C, 0x11, 0x3A, 0xEB, 0xC0, 0xBD, 0x96, + 0x52, 0x79, 0x04, 0x2F, 0xFE, 0xD5, 0xA8, 0x83, + 0xC9, 0xE2, 0x9F, 0xB4, 0x65, 0x4E, 0x33, 0x18, + 0xA7, 0x8C, 0xF1, 0xDA, 0x0B, 0x20, 0x5D, 0x76, + 0x3C, 0x17, 0x6A, 0x41, 0x90, 0xBB, 0xC6, 0xED, + 0x7B, 0x50, 0x2D, 0x06, 0xD7, 0xFC, 0x81, 0xAA, + 0xE0, 0xCB, 0xB6, 0x9D, 0x4C, 0x67, 0x1A, 0x31, + 0x8E, 0xA5, 0xD8, 0xF3, 0x22, 0x09, 0x74, 0x5F, + 0x15, 0x3E, 0x43, 0x68, 0xB9, 0x92, 0xEF, 0xC4, + 0xA4, 0x8F, 0xF2, 0xD9, 0x08, 0x23, 0x5E, 0x75, + 0x3F, 0x14, 0x69, 0x42, 0x93, 0xB8, 0xC5, 0xEE, + 0x51, 0x7A, 0x07, 0x2C, 0xFD, 0xD6, 0xAB, 0x80, + 0xCA, 0xE1, 0x9C, 0xB7, 0x66, 0x4D, 0x30, 0x1B, + 0x8D, 0xA6, 0xDB, 0xF0, 0x21, 0x0A, 0x77, 0x5C, + 0x16, 0x3D, 0x40, 0x6B, 0xBA, 0x91, 0xEC, 0xC7, + 0x78, 0x53, 0x2E, 0x05, 0xD4, 0xFF, 0x82, 0xA9, + 0xE3, 0xC8, 0xB5, 0x9E, 0x4F, 0x64, 0x19, 0x32, + 0xF6, 0xDD, 0xA0, 0x8B, 0x5A, 0x71, 0x0C, 0x27, + 0x6D, 0x46, 0x3B, 0x10, 0xC1, 0xEA, 0x97, 0xBC, + 0x03, 0x28, 0x55, 0x7E, 0xAF, 0x84, 0xF9, 0xD2, + 0x98, 0xB3, 0xCE, 0xE5, 0x34, 0x1F, 0x62, 0x49, + 0xDF, 0xF4, 0x89, 0xA2, 0x73, 0x58, 0x25, 0x0E, + 0x44, 0x6F, 0x12, 0x39, 0xE8, 0xC3, 0xBE, 0x95, + 0x2A, 0x01, 0x7C, 0x57, 0x86, 0xAD, 0xD0, 0xFB, + 0xB1, 0x9A, 0xE7, 0xCC, 0x1D, 0x36, 0x4B, 0x60, + 0x00, 0x2C, 0x58, 0x74, 0xB0, 0x9C, 0xE8, 0xC4, + 0xA3, 0x8F, 0xFB, 0xD7, 0x13, 0x3F, 0x4B, 0x67, + 0x85, 0xA9, 0xDD, 0xF1, 0x35, 0x19, 0x6D, 0x41, + 0x26, 0x0A, 0x7E, 0x52, 0x96, 0xBA, 0xCE, 0xE2, + 0xC9, 0xE5, 0x91, 0xBD, 0x79, 0x55, 0x21, 0x0D, + 0x6A, 0x46, 0x32, 0x1E, 0xDA, 0xF6, 0x82, 0xAE, + 0x4C, 0x60, 0x14, 0x38, 0xFC, 0xD0, 0xA4, 0x88, + 0xEF, 0xC3, 0xB7, 0x9B, 0x5F, 0x73, 0x07, 0x2B, + 0x51, 0x7D, 0x09, 0x25, 0xE1, 0xCD, 0xB9, 0x95, + 0xF2, 0xDE, 0xAA, 0x86, 0x42, 0x6E, 0x1A, 0x36, + 0xD4, 0xF8, 0x8C, 0xA0, 0x64, 0x48, 0x3C, 0x10, + 0x77, 0x5B, 0x2F, 0x03, 0xC7, 0xEB, 0x9F, 0xB3, + 0x98, 0xB4, 0xC0, 0xEC, 0x28, 0x04, 0x70, 0x5C, + 0x3B, 0x17, 0x63, 0x4F, 0x8B, 0xA7, 0xD3, 0xFF, + 0x1D, 0x31, 0x45, 0x69, 0xAD, 0x81, 0xF5, 0xD9, + 0xBE, 0x92, 0xE6, 0xCA, 0x0E, 0x22, 0x56, 0x7A, + 0xA2, 0x8E, 0xFA, 0xD6, 0x12, 0x3E, 0x4A, 0x66, + 0x01, 0x2D, 0x59, 0x75, 0xB1, 0x9D, 0xE9, 0xC5, + 0x27, 0x0B, 0x7F, 0x53, 0x97, 0xBB, 0xCF, 0xE3, + 0x84, 0xA8, 0xDC, 0xF0, 0x34, 0x18, 0x6C, 0x40, + 0x6B, 0x47, 0x33, 0x1F, 0xDB, 0xF7, 0x83, 0xAF, + 0xC8, 0xE4, 0x90, 0xBC, 0x78, 0x54, 0x20, 0x0C, + 0xEE, 0xC2, 0xB6, 0x9A, 0x5E, 0x72, 0x06, 0x2A, + 0x4D, 0x61, 0x15, 0x39, 0xFD, 0xD1, 0xA5, 0x89, + 0xF3, 0xDF, 0xAB, 0x87, 0x43, 0x6F, 0x1B, 0x37, + 0x50, 0x7C, 0x08, 0x24, 0xE0, 0xCC, 0xB8, 0x94, + 0x76, 0x5A, 0x2E, 0x02, 0xC6, 0xEA, 0x9E, 0xB2, + 0xD5, 0xF9, 0x8D, 0xA1, 0x65, 0x49, 0x3D, 0x11, + 0x3A, 0x16, 0x62, 0x4E, 0x8A, 0xA6, 0xD2, 0xFE, + 0x99, 0xB5, 0xC1, 0xED, 0x29, 0x05, 0x71, 0x5D, + 0xBF, 0x93, 0xE7, 0xCB, 0x0F, 0x23, 0x57, 0x7B, + 0x1C, 0x30, 0x44, 0x68, 0xAC, 0x80, 0xF4, 0xD8, + 0x00, 0x2D, 0x5A, 0x77, 0xB4, 0x99, 0xEE, 0xC3, + 0xAB, 0x86, 0xF1, 0xDC, 0x1F, 0x32, 0x45, 0x68, + 0x95, 0xB8, 0xCF, 0xE2, 0x21, 0x0C, 0x7B, 0x56, + 0x3E, 0x13, 0x64, 0x49, 0x8A, 0xA7, 0xD0, 0xFD, + 0xE9, 0xC4, 0xB3, 0x9E, 0x5D, 0x70, 0x07, 0x2A, + 0x42, 0x6F, 0x18, 0x35, 0xF6, 0xDB, 0xAC, 0x81, + 0x7C, 0x51, 0x26, 0x0B, 0xC8, 0xE5, 0x92, 0xBF, + 0xD7, 0xFA, 0x8D, 0xA0, 0x63, 0x4E, 0x39, 0x14, + 0x11, 0x3C, 0x4B, 0x66, 0xA5, 0x88, 0xFF, 0xD2, + 0xBA, 0x97, 0xE0, 0xCD, 0x0E, 0x23, 0x54, 0x79, + 0x84, 0xA9, 0xDE, 0xF3, 0x30, 0x1D, 0x6A, 0x47, + 0x2F, 0x02, 0x75, 0x58, 0x9B, 0xB6, 0xC1, 0xEC, + 0xF8, 0xD5, 0xA2, 0x8F, 0x4C, 0x61, 0x16, 0x3B, + 0x53, 0x7E, 0x09, 0x24, 0xE7, 0xCA, 0xBD, 0x90, + 0x6D, 0x40, 0x37, 0x1A, 0xD9, 0xF4, 0x83, 0xAE, + 0xC6, 0xEB, 0x9C, 0xB1, 0x72, 0x5F, 0x28, 0x05, + 0x22, 0x0F, 0x78, 0x55, 0x96, 0xBB, 0xCC, 0xE1, + 0x89, 0xA4, 0xD3, 0xFE, 0x3D, 0x10, 0x67, 0x4A, + 0xB7, 0x9A, 0xED, 0xC0, 0x03, 0x2E, 0x59, 0x74, + 0x1C, 0x31, 0x46, 0x6B, 0xA8, 0x85, 0xF2, 0xDF, + 0xCB, 0xE6, 0x91, 0xBC, 0x7F, 0x52, 0x25, 0x08, + 0x60, 0x4D, 0x3A, 0x17, 0xD4, 0xF9, 0x8E, 0xA3, + 0x5E, 0x73, 0x04, 0x29, 0xEA, 0xC7, 0xB0, 0x9D, + 0xF5, 0xD8, 0xAF, 0x82, 0x41, 0x6C, 0x1B, 0x36, + 0x33, 0x1E, 0x69, 0x44, 0x87, 0xAA, 0xDD, 0xF0, + 0x98, 0xB5, 0xC2, 0xEF, 0x2C, 0x01, 0x76, 0x5B, + 0xA6, 0x8B, 0xFC, 0xD1, 0x12, 0x3F, 0x48, 0x65, + 0x0D, 0x20, 0x57, 0x7A, 0xB9, 0x94, 0xE3, 0xCE, + 0xDA, 0xF7, 0x80, 0xAD, 0x6E, 0x43, 0x34, 0x19, + 0x71, 0x5C, 0x2B, 0x06, 0xC5, 0xE8, 0x9F, 0xB2, + 0x4F, 0x62, 0x15, 0x38, 0xFB, 0xD6, 0xA1, 0x8C, + 0xE4, 0xC9, 0xBE, 0x93, 0x50, 0x7D, 0x0A, 0x27, + 0x00, 0x2E, 0x5C, 0x72, 0xB8, 0x96, 0xE4, 0xCA, + 0xB3, 0x9D, 0xEF, 0xC1, 0x0B, 0x25, 0x57, 0x79, + 0xA5, 0x8B, 0xF9, 0xD7, 0x1D, 0x33, 0x41, 0x6F, + 0x16, 0x38, 0x4A, 0x64, 0xAE, 0x80, 0xF2, 0xDC, + 0x89, 0xA7, 0xD5, 0xFB, 0x31, 0x1F, 0x6D, 0x43, + 0x3A, 0x14, 0x66, 0x48, 0x82, 0xAC, 0xDE, 0xF0, + 0x2C, 0x02, 0x70, 0x5E, 0x94, 0xBA, 0xC8, 0xE6, + 0x9F, 0xB1, 0xC3, 0xED, 0x27, 0x09, 0x7B, 0x55, + 0xD1, 0xFF, 0x8D, 0xA3, 0x69, 0x47, 0x35, 0x1B, + 0x62, 0x4C, 0x3E, 0x10, 0xDA, 0xF4, 0x86, 0xA8, + 0x74, 0x5A, 0x28, 0x06, 0xCC, 0xE2, 0x90, 0xBE, + 0xC7, 0xE9, 0x9B, 0xB5, 0x7F, 0x51, 0x23, 0x0D, + 0x58, 0x76, 0x04, 0x2A, 0xE0, 0xCE, 0xBC, 0x92, + 0xEB, 0xC5, 0xB7, 0x99, 0x53, 0x7D, 0x0F, 0x21, + 0xFD, 0xD3, 0xA1, 0x8F, 0x45, 0x6B, 0x19, 0x37, + 0x4E, 0x60, 0x12, 0x3C, 0xF6, 0xD8, 0xAA, 0x84, + 0x61, 0x4F, 0x3D, 0x13, 0xD9, 0xF7, 0x85, 0xAB, + 0xD2, 0xFC, 0x8E, 0xA0, 0x6A, 0x44, 0x36, 0x18, + 0xC4, 0xEA, 0x98, 0xB6, 0x7C, 0x52, 0x20, 0x0E, + 0x77, 0x59, 0x2B, 0x05, 0xCF, 0xE1, 0x93, 0xBD, + 0xE8, 0xC6, 0xB4, 0x9A, 0x50, 0x7E, 0x0C, 0x22, + 0x5B, 0x75, 0x07, 0x29, 0xE3, 0xCD, 0xBF, 0x91, + 0x4D, 0x63, 0x11, 0x3F, 0xF5, 0xDB, 0xA9, 0x87, + 0xFE, 0xD0, 0xA2, 0x8C, 0x46, 0x68, 0x1A, 0x34, + 0xB0, 0x9E, 0xEC, 0xC2, 0x08, 0x26, 0x54, 0x7A, + 0x03, 0x2D, 0x5F, 0x71, 0xBB, 0x95, 0xE7, 0xC9, + 0x15, 0x3B, 0x49, 0x67, 0xAD, 0x83, 0xF1, 0xDF, + 0xA6, 0x88, 0xFA, 0xD4, 0x1E, 0x30, 0x42, 0x6C, + 0x39, 0x17, 0x65, 0x4B, 0x81, 0xAF, 0xDD, 0xF3, + 0x8A, 0xA4, 0xD6, 0xF8, 0x32, 0x1C, 0x6E, 0x40, + 0x9C, 0xB2, 0xC0, 0xEE, 0x24, 0x0A, 0x78, 0x56, + 0x2F, 0x01, 0x73, 0x5D, 0x97, 0xB9, 0xCB, 0xE5, + 0x00, 0x2F, 0x5E, 0x71, 0xBC, 0x93, 0xE2, 0xCD, + 0xBB, 0x94, 0xE5, 0xCA, 0x07, 0x28, 0x59, 0x76, + 0xB5, 0x9A, 0xEB, 0xC4, 0x09, 0x26, 0x57, 0x78, + 0x0E, 0x21, 0x50, 0x7F, 0xB2, 0x9D, 0xEC, 0xC3, + 0xA9, 0x86, 0xF7, 0xD8, 0x15, 0x3A, 0x4B, 0x64, + 0x12, 0x3D, 0x4C, 0x63, 0xAE, 0x81, 0xF0, 0xDF, + 0x1C, 0x33, 0x42, 0x6D, 0xA0, 0x8F, 0xFE, 0xD1, + 0xA7, 0x88, 0xF9, 0xD6, 0x1B, 0x34, 0x45, 0x6A, + 0x91, 0xBE, 0xCF, 0xE0, 0x2D, 0x02, 0x73, 0x5C, + 0x2A, 0x05, 0x74, 0x5B, 0x96, 0xB9, 0xC8, 0xE7, + 0x24, 0x0B, 0x7A, 0x55, 0x98, 0xB7, 0xC6, 0xE9, + 0x9F, 0xB0, 0xC1, 0xEE, 0x23, 0x0C, 0x7D, 0x52, + 0x38, 0x17, 0x66, 0x49, 0x84, 0xAB, 0xDA, 0xF5, + 0x83, 0xAC, 0xDD, 0xF2, 0x3F, 0x10, 0x61, 0x4E, + 0x8D, 0xA2, 0xD3, 0xFC, 0x31, 0x1E, 0x6F, 0x40, + 0x36, 0x19, 0x68, 0x47, 0x8A, 0xA5, 0xD4, 0xFB, + 0xE1, 0xCE, 0xBF, 0x90, 0x5D, 0x72, 0x03, 0x2C, + 0x5A, 0x75, 0x04, 0x2B, 0xE6, 0xC9, 0xB8, 0x97, + 0x54, 0x7B, 0x0A, 0x25, 0xE8, 0xC7, 0xB6, 0x99, + 0xEF, 0xC0, 0xB1, 0x9E, 0x53, 0x7C, 0x0D, 0x22, + 0x48, 0x67, 0x16, 0x39, 0xF4, 0xDB, 0xAA, 0x85, + 0xF3, 0xDC, 0xAD, 0x82, 0x4F, 0x60, 0x11, 0x3E, + 0xFD, 0xD2, 0xA3, 0x8C, 0x41, 0x6E, 0x1F, 0x30, + 0x46, 0x69, 0x18, 0x37, 0xFA, 0xD5, 0xA4, 0x8B, + 0x70, 0x5F, 0x2E, 0x01, 0xCC, 0xE3, 0x92, 0xBD, + 0xCB, 0xE4, 0x95, 0xBA, 0x77, 0x58, 0x29, 0x06, + 0xC5, 0xEA, 0x9B, 0xB4, 0x79, 0x56, 0x27, 0x08, + 0x7E, 0x51, 0x20, 0x0F, 0xC2, 0xED, 0x9C, 0xB3, + 0xD9, 0xF6, 0x87, 0xA8, 0x65, 0x4A, 0x3B, 0x14, + 0x62, 0x4D, 0x3C, 0x13, 0xDE, 0xF1, 0x80, 0xAF, + 0x6C, 0x43, 0x32, 0x1D, 0xD0, 0xFF, 0x8E, 0xA1, + 0xD7, 0xF8, 0x89, 0xA6, 0x6B, 0x44, 0x35, 0x1A, + 0x00, 0x30, 0x60, 0x50, 0xC0, 0xF0, 0xA0, 0x90, + 0x43, 0x73, 0x23, 0x13, 0x83, 0xB3, 0xE3, 0xD3, + 0x86, 0xB6, 0xE6, 0xD6, 0x46, 0x76, 0x26, 0x16, + 0xC5, 0xF5, 0xA5, 0x95, 0x05, 0x35, 0x65, 0x55, + 0xCF, 0xFF, 0xAF, 0x9F, 0x0F, 0x3F, 0x6F, 0x5F, + 0x8C, 0xBC, 0xEC, 0xDC, 0x4C, 0x7C, 0x2C, 0x1C, + 0x49, 0x79, 0x29, 0x19, 0x89, 0xB9, 0xE9, 0xD9, + 0x0A, 0x3A, 0x6A, 0x5A, 0xCA, 0xFA, 0xAA, 0x9A, + 0x5D, 0x6D, 0x3D, 0x0D, 0x9D, 0xAD, 0xFD, 0xCD, + 0x1E, 0x2E, 0x7E, 0x4E, 0xDE, 0xEE, 0xBE, 0x8E, + 0xDB, 0xEB, 0xBB, 0x8B, 0x1B, 0x2B, 0x7B, 0x4B, + 0x98, 0xA8, 0xF8, 0xC8, 0x58, 0x68, 0x38, 0x08, + 0x92, 0xA2, 0xF2, 0xC2, 0x52, 0x62, 0x32, 0x02, + 0xD1, 0xE1, 0xB1, 0x81, 0x11, 0x21, 0x71, 0x41, + 0x14, 0x24, 0x74, 0x44, 0xD4, 0xE4, 0xB4, 0x84, + 0x57, 0x67, 0x37, 0x07, 0x97, 0xA7, 0xF7, 0xC7, + 0xBA, 0x8A, 0xDA, 0xEA, 0x7A, 0x4A, 0x1A, 0x2A, + 0xF9, 0xC9, 0x99, 0xA9, 0x39, 0x09, 0x59, 0x69, + 0x3C, 0x0C, 0x5C, 0x6C, 0xFC, 0xCC, 0x9C, 0xAC, + 0x7F, 0x4F, 0x1F, 0x2F, 0xBF, 0x8F, 0xDF, 0xEF, + 0x75, 0x45, 0x15, 0x25, 0xB5, 0x85, 0xD5, 0xE5, + 0x36, 0x06, 0x56, 0x66, 0xF6, 0xC6, 0x96, 0xA6, + 0xF3, 0xC3, 0x93, 0xA3, 0x33, 0x03, 0x53, 0x63, + 0xB0, 0x80, 0xD0, 0xE0, 0x70, 0x40, 0x10, 0x20, + 0xE7, 0xD7, 0x87, 0xB7, 0x27, 0x17, 0x47, 0x77, + 0xA4, 0x94, 0xC4, 0xF4, 0x64, 0x54, 0x04, 0x34, + 0x61, 0x51, 0x01, 0x31, 0xA1, 0x91, 0xC1, 0xF1, + 0x22, 0x12, 0x42, 0x72, 0xE2, 0xD2, 0x82, 0xB2, + 0x28, 0x18, 0x48, 0x78, 0xE8, 0xD8, 0x88, 0xB8, + 0x6B, 0x5B, 0x0B, 0x3B, 0xAB, 0x9B, 0xCB, 0xFB, + 0xAE, 0x9E, 0xCE, 0xFE, 0x6E, 0x5E, 0x0E, 0x3E, + 0xED, 0xDD, 0x8D, 0xBD, 0x2D, 0x1D, 0x4D, 0x7D, + 0x00, 0x31, 0x62, 0x53, 0xC4, 0xF5, 0xA6, 0x97, + 0x4B, 0x7A, 0x29, 0x18, 0x8F, 0xBE, 0xED, 0xDC, + 0x96, 0xA7, 0xF4, 0xC5, 0x52, 0x63, 0x30, 0x01, + 0xDD, 0xEC, 0xBF, 0x8E, 0x19, 0x28, 0x7B, 0x4A, + 0xEF, 0xDE, 0x8D, 0xBC, 0x2B, 0x1A, 0x49, 0x78, + 0xA4, 0x95, 0xC6, 0xF7, 0x60, 0x51, 0x02, 0x33, + 0x79, 0x48, 0x1B, 0x2A, 0xBD, 0x8C, 0xDF, 0xEE, + 0x32, 0x03, 0x50, 0x61, 0xF6, 0xC7, 0x94, 0xA5, + 0x1D, 0x2C, 0x7F, 0x4E, 0xD9, 0xE8, 0xBB, 0x8A, + 0x56, 0x67, 0x34, 0x05, 0x92, 0xA3, 0xF0, 0xC1, + 0x8B, 0xBA, 0xE9, 0xD8, 0x4F, 0x7E, 0x2D, 0x1C, + 0xC0, 0xF1, 0xA2, 0x93, 0x04, 0x35, 0x66, 0x57, + 0xF2, 0xC3, 0x90, 0xA1, 0x36, 0x07, 0x54, 0x65, + 0xB9, 0x88, 0xDB, 0xEA, 0x7D, 0x4C, 0x1F, 0x2E, + 0x64, 0x55, 0x06, 0x37, 0xA0, 0x91, 0xC2, 0xF3, + 0x2F, 0x1E, 0x4D, 0x7C, 0xEB, 0xDA, 0x89, 0xB8, + 0x3A, 0x0B, 0x58, 0x69, 0xFE, 0xCF, 0x9C, 0xAD, + 0x71, 0x40, 0x13, 0x22, 0xB5, 0x84, 0xD7, 0xE6, + 0xAC, 0x9D, 0xCE, 0xFF, 0x68, 0x59, 0x0A, 0x3B, + 0xE7, 0xD6, 0x85, 0xB4, 0x23, 0x12, 0x41, 0x70, + 0xD5, 0xE4, 0xB7, 0x86, 0x11, 0x20, 0x73, 0x42, + 0x9E, 0xAF, 0xFC, 0xCD, 0x5A, 0x6B, 0x38, 0x09, + 0x43, 0x72, 0x21, 0x10, 0x87, 0xB6, 0xE5, 0xD4, + 0x08, 0x39, 0x6A, 0x5B, 0xCC, 0xFD, 0xAE, 0x9F, + 0x27, 0x16, 0x45, 0x74, 0xE3, 0xD2, 0x81, 0xB0, + 0x6C, 0x5D, 0x0E, 0x3F, 0xA8, 0x99, 0xCA, 0xFB, + 0xB1, 0x80, 0xD3, 0xE2, 0x75, 0x44, 0x17, 0x26, + 0xFA, 0xCB, 0x98, 0xA9, 0x3E, 0x0F, 0x5C, 0x6D, + 0xC8, 0xF9, 0xAA, 0x9B, 0x0C, 0x3D, 0x6E, 0x5F, + 0x83, 0xB2, 0xE1, 0xD0, 0x47, 0x76, 0x25, 0x14, + 0x5E, 0x6F, 0x3C, 0x0D, 0x9A, 0xAB, 0xF8, 0xC9, + 0x15, 0x24, 0x77, 0x46, 0xD1, 0xE0, 0xB3, 0x82, + 0x00, 0x32, 0x64, 0x56, 0xC8, 0xFA, 0xAC, 0x9E, + 0x53, 0x61, 0x37, 0x05, 0x9B, 0xA9, 0xFF, 0xCD, + 0xA6, 0x94, 0xC2, 0xF0, 0x6E, 0x5C, 0x0A, 0x38, + 0xF5, 0xC7, 0x91, 0xA3, 0x3D, 0x0F, 0x59, 0x6B, + 0x8F, 0xBD, 0xEB, 0xD9, 0x47, 0x75, 0x23, 0x11, + 0xDC, 0xEE, 0xB8, 0x8A, 0x14, 0x26, 0x70, 0x42, + 0x29, 0x1B, 0x4D, 0x7F, 0xE1, 0xD3, 0x85, 0xB7, + 0x7A, 0x48, 0x1E, 0x2C, 0xB2, 0x80, 0xD6, 0xE4, + 0xDD, 0xEF, 0xB9, 0x8B, 0x15, 0x27, 0x71, 0x43, + 0x8E, 0xBC, 0xEA, 0xD8, 0x46, 0x74, 0x22, 0x10, + 0x7B, 0x49, 0x1F, 0x2D, 0xB3, 0x81, 0xD7, 0xE5, + 0x28, 0x1A, 0x4C, 0x7E, 0xE0, 0xD2, 0x84, 0xB6, + 0x52, 0x60, 0x36, 0x04, 0x9A, 0xA8, 0xFE, 0xCC, + 0x01, 0x33, 0x65, 0x57, 0xC9, 0xFB, 0xAD, 0x9F, + 0xF4, 0xC6, 0x90, 0xA2, 0x3C, 0x0E, 0x58, 0x6A, + 0xA7, 0x95, 0xC3, 0xF1, 0x6F, 0x5D, 0x0B, 0x39, + 0x79, 0x4B, 0x1D, 0x2F, 0xB1, 0x83, 0xD5, 0xE7, + 0x2A, 0x18, 0x4E, 0x7C, 0xE2, 0xD0, 0x86, 0xB4, + 0xDF, 0xED, 0xBB, 0x89, 0x17, 0x25, 0x73, 0x41, + 0x8C, 0xBE, 0xE8, 0xDA, 0x44, 0x76, 0x20, 0x12, + 0xF6, 0xC4, 0x92, 0xA0, 0x3E, 0x0C, 0x5A, 0x68, + 0xA5, 0x97, 0xC1, 0xF3, 0x6D, 0x5F, 0x09, 0x3B, + 0x50, 0x62, 0x34, 0x06, 0x98, 0xAA, 0xFC, 0xCE, + 0x03, 0x31, 0x67, 0x55, 0xCB, 0xF9, 0xAF, 0x9D, + 0xA4, 0x96, 0xC0, 0xF2, 0x6C, 0x5E, 0x08, 0x3A, + 0xF7, 0xC5, 0x93, 0xA1, 0x3F, 0x0D, 0x5B, 0x69, + 0x02, 0x30, 0x66, 0x54, 0xCA, 0xF8, 0xAE, 0x9C, + 0x51, 0x63, 0x35, 0x07, 0x99, 0xAB, 0xFD, 0xCF, + 0x2B, 0x19, 0x4F, 0x7D, 0xE3, 0xD1, 0x87, 0xB5, + 0x78, 0x4A, 0x1C, 0x2E, 0xB0, 0x82, 0xD4, 0xE6, + 0x8D, 0xBF, 0xE9, 0xDB, 0x45, 0x77, 0x21, 0x13, + 0xDE, 0xEC, 0xBA, 0x88, 0x16, 0x24, 0x72, 0x40, + 0x00, 0x33, 0x66, 0x55, 0xCC, 0xFF, 0xAA, 0x99, + 0x5B, 0x68, 0x3D, 0x0E, 0x97, 0xA4, 0xF1, 0xC2, + 0xB6, 0x85, 0xD0, 0xE3, 0x7A, 0x49, 0x1C, 0x2F, + 0xED, 0xDE, 0x8B, 0xB8, 0x21, 0x12, 0x47, 0x74, + 0xAF, 0x9C, 0xC9, 0xFA, 0x63, 0x50, 0x05, 0x36, + 0xF4, 0xC7, 0x92, 0xA1, 0x38, 0x0B, 0x5E, 0x6D, + 0x19, 0x2A, 0x7F, 0x4C, 0xD5, 0xE6, 0xB3, 0x80, + 0x42, 0x71, 0x24, 0x17, 0x8E, 0xBD, 0xE8, 0xDB, + 0x9D, 0xAE, 0xFB, 0xC8, 0x51, 0x62, 0x37, 0x04, + 0xC6, 0xF5, 0xA0, 0x93, 0x0A, 0x39, 0x6C, 0x5F, + 0x2B, 0x18, 0x4D, 0x7E, 0xE7, 0xD4, 0x81, 0xB2, + 0x70, 0x43, 0x16, 0x25, 0xBC, 0x8F, 0xDA, 0xE9, + 0x32, 0x01, 0x54, 0x67, 0xFE, 0xCD, 0x98, 0xAB, + 0x69, 0x5A, 0x0F, 0x3C, 0xA5, 0x96, 0xC3, 0xF0, + 0x84, 0xB7, 0xE2, 0xD1, 0x48, 0x7B, 0x2E, 0x1D, + 0xDF, 0xEC, 0xB9, 0x8A, 0x13, 0x20, 0x75, 0x46, + 0xF9, 0xCA, 0x9F, 0xAC, 0x35, 0x06, 0x53, 0x60, + 0xA2, 0x91, 0xC4, 0xF7, 0x6E, 0x5D, 0x08, 0x3B, + 0x4F, 0x7C, 0x29, 0x1A, 0x83, 0xB0, 0xE5, 0xD6, + 0x14, 0x27, 0x72, 0x41, 0xD8, 0xEB, 0xBE, 0x8D, + 0x56, 0x65, 0x30, 0x03, 0x9A, 0xA9, 0xFC, 0xCF, + 0x0D, 0x3E, 0x6B, 0x58, 0xC1, 0xF2, 0xA7, 0x94, + 0xE0, 0xD3, 0x86, 0xB5, 0x2C, 0x1F, 0x4A, 0x79, + 0xBB, 0x88, 0xDD, 0xEE, 0x77, 0x44, 0x11, 0x22, + 0x64, 0x57, 0x02, 0x31, 0xA8, 0x9B, 0xCE, 0xFD, + 0x3F, 0x0C, 0x59, 0x6A, 0xF3, 0xC0, 0x95, 0xA6, + 0xD2, 0xE1, 0xB4, 0x87, 0x1E, 0x2D, 0x78, 0x4B, + 0x89, 0xBA, 0xEF, 0xDC, 0x45, 0x76, 0x23, 0x10, + 0xCB, 0xF8, 0xAD, 0x9E, 0x07, 0x34, 0x61, 0x52, + 0x90, 0xA3, 0xF6, 0xC5, 0x5C, 0x6F, 0x3A, 0x09, + 0x7D, 0x4E, 0x1B, 0x28, 0xB1, 0x82, 0xD7, 0xE4, + 0x26, 0x15, 0x40, 0x73, 0xEA, 0xD9, 0x8C, 0xBF, + 0x00, 0x34, 0x68, 0x5C, 0xD0, 0xE4, 0xB8, 0x8C, + 0x63, 0x57, 0x0B, 0x3F, 0xB3, 0x87, 0xDB, 0xEF, + 0xC6, 0xF2, 0xAE, 0x9A, 0x16, 0x22, 0x7E, 0x4A, + 0xA5, 0x91, 0xCD, 0xF9, 0x75, 0x41, 0x1D, 0x29, + 0x4F, 0x7B, 0x27, 0x13, 0x9F, 0xAB, 0xF7, 0xC3, + 0x2C, 0x18, 0x44, 0x70, 0xFC, 0xC8, 0x94, 0xA0, + 0x89, 0xBD, 0xE1, 0xD5, 0x59, 0x6D, 0x31, 0x05, + 0xEA, 0xDE, 0x82, 0xB6, 0x3A, 0x0E, 0x52, 0x66, + 0x9E, 0xAA, 0xF6, 0xC2, 0x4E, 0x7A, 0x26, 0x12, + 0xFD, 0xC9, 0x95, 0xA1, 0x2D, 0x19, 0x45, 0x71, + 0x58, 0x6C, 0x30, 0x04, 0x88, 0xBC, 0xE0, 0xD4, + 0x3B, 0x0F, 0x53, 0x67, 0xEB, 0xDF, 0x83, 0xB7, + 0xD1, 0xE5, 0xB9, 0x8D, 0x01, 0x35, 0x69, 0x5D, + 0xB2, 0x86, 0xDA, 0xEE, 0x62, 0x56, 0x0A, 0x3E, + 0x17, 0x23, 0x7F, 0x4B, 0xC7, 0xF3, 0xAF, 0x9B, + 0x74, 0x40, 0x1C, 0x28, 0xA4, 0x90, 0xCC, 0xF8, + 0xFF, 0xCB, 0x97, 0xA3, 0x2F, 0x1B, 0x47, 0x73, + 0x9C, 0xA8, 0xF4, 0xC0, 0x4C, 0x78, 0x24, 0x10, + 0x39, 0x0D, 0x51, 0x65, 0xE9, 0xDD, 0x81, 0xB5, + 0x5A, 0x6E, 0x32, 0x06, 0x8A, 0xBE, 0xE2, 0xD6, + 0xB0, 0x84, 0xD8, 0xEC, 0x60, 0x54, 0x08, 0x3C, + 0xD3, 0xE7, 0xBB, 0x8F, 0x03, 0x37, 0x6B, 0x5F, + 0x76, 0x42, 0x1E, 0x2A, 0xA6, 0x92, 0xCE, 0xFA, + 0x15, 0x21, 0x7D, 0x49, 0xC5, 0xF1, 0xAD, 0x99, + 0x61, 0x55, 0x09, 0x3D, 0xB1, 0x85, 0xD9, 0xED, + 0x02, 0x36, 0x6A, 0x5E, 0xD2, 0xE6, 0xBA, 0x8E, + 0xA7, 0x93, 0xCF, 0xFB, 0x77, 0x43, 0x1F, 0x2B, + 0xC4, 0xF0, 0xAC, 0x98, 0x14, 0x20, 0x7C, 0x48, + 0x2E, 0x1A, 0x46, 0x72, 0xFE, 0xCA, 0x96, 0xA2, + 0x4D, 0x79, 0x25, 0x11, 0x9D, 0xA9, 0xF5, 0xC1, + 0xE8, 0xDC, 0x80, 0xB4, 0x38, 0x0C, 0x50, 0x64, + 0x8B, 0xBF, 0xE3, 0xD7, 0x5B, 0x6F, 0x33, 0x07, + 0x00, 0x35, 0x6A, 0x5F, 0xD4, 0xE1, 0xBE, 0x8B, + 0x6B, 0x5E, 0x01, 0x34, 0xBF, 0x8A, 0xD5, 0xE0, + 0xD6, 0xE3, 0xBC, 0x89, 0x02, 0x37, 0x68, 0x5D, + 0xBD, 0x88, 0xD7, 0xE2, 0x69, 0x5C, 0x03, 0x36, + 0x6F, 0x5A, 0x05, 0x30, 0xBB, 0x8E, 0xD1, 0xE4, + 0x04, 0x31, 0x6E, 0x5B, 0xD0, 0xE5, 0xBA, 0x8F, + 0xB9, 0x8C, 0xD3, 0xE6, 0x6D, 0x58, 0x07, 0x32, + 0xD2, 0xE7, 0xB8, 0x8D, 0x06, 0x33, 0x6C, 0x59, + 0xDE, 0xEB, 0xB4, 0x81, 0x0A, 0x3F, 0x60, 0x55, + 0xB5, 0x80, 0xDF, 0xEA, 0x61, 0x54, 0x0B, 0x3E, + 0x08, 0x3D, 0x62, 0x57, 0xDC, 0xE9, 0xB6, 0x83, + 0x63, 0x56, 0x09, 0x3C, 0xB7, 0x82, 0xDD, 0xE8, + 0xB1, 0x84, 0xDB, 0xEE, 0x65, 0x50, 0x0F, 0x3A, + 0xDA, 0xEF, 0xB0, 0x85, 0x0E, 0x3B, 0x64, 0x51, + 0x67, 0x52, 0x0D, 0x38, 0xB3, 0x86, 0xD9, 0xEC, + 0x0C, 0x39, 0x66, 0x53, 0xD8, 0xED, 0xB2, 0x87, + 0x7F, 0x4A, 0x15, 0x20, 0xAB, 0x9E, 0xC1, 0xF4, + 0x14, 0x21, 0x7E, 0x4B, 0xC0, 0xF5, 0xAA, 0x9F, + 0xA9, 0x9C, 0xC3, 0xF6, 0x7D, 0x48, 0x17, 0x22, + 0xC2, 0xF7, 0xA8, 0x9D, 0x16, 0x23, 0x7C, 0x49, + 0x10, 0x25, 0x7A, 0x4F, 0xC4, 0xF1, 0xAE, 0x9B, + 0x7B, 0x4E, 0x11, 0x24, 0xAF, 0x9A, 0xC5, 0xF0, + 0xC6, 0xF3, 0xAC, 0x99, 0x12, 0x27, 0x78, 0x4D, + 0xAD, 0x98, 0xC7, 0xF2, 0x79, 0x4C, 0x13, 0x26, + 0xA1, 0x94, 0xCB, 0xFE, 0x75, 0x40, 0x1F, 0x2A, + 0xCA, 0xFF, 0xA0, 0x95, 0x1E, 0x2B, 0x74, 0x41, + 0x77, 0x42, 0x1D, 0x28, 0xA3, 0x96, 0xC9, 0xFC, + 0x1C, 0x29, 0x76, 0x43, 0xC8, 0xFD, 0xA2, 0x97, + 0xCE, 0xFB, 0xA4, 0x91, 0x1A, 0x2F, 0x70, 0x45, + 0xA5, 0x90, 0xCF, 0xFA, 0x71, 0x44, 0x1B, 0x2E, + 0x18, 0x2D, 0x72, 0x47, 0xCC, 0xF9, 0xA6, 0x93, + 0x73, 0x46, 0x19, 0x2C, 0xA7, 0x92, 0xCD, 0xF8, + 0x00, 0x36, 0x6C, 0x5A, 0xD8, 0xEE, 0xB4, 0x82, + 0x73, 0x45, 0x1F, 0x29, 0xAB, 0x9D, 0xC7, 0xF1, + 0xE6, 0xD0, 0x8A, 0xBC, 0x3E, 0x08, 0x52, 0x64, + 0x95, 0xA3, 0xF9, 0xCF, 0x4D, 0x7B, 0x21, 0x17, + 0x0F, 0x39, 0x63, 0x55, 0xD7, 0xE1, 0xBB, 0x8D, + 0x7C, 0x4A, 0x10, 0x26, 0xA4, 0x92, 0xC8, 0xFE, + 0xE9, 0xDF, 0x85, 0xB3, 0x31, 0x07, 0x5D, 0x6B, + 0x9A, 0xAC, 0xF6, 0xC0, 0x42, 0x74, 0x2E, 0x18, + 0x1E, 0x28, 0x72, 0x44, 0xC6, 0xF0, 0xAA, 0x9C, + 0x6D, 0x5B, 0x01, 0x37, 0xB5, 0x83, 0xD9, 0xEF, + 0xF8, 0xCE, 0x94, 0xA2, 0x20, 0x16, 0x4C, 0x7A, + 0x8B, 0xBD, 0xE7, 0xD1, 0x53, 0x65, 0x3F, 0x09, + 0x11, 0x27, 0x7D, 0x4B, 0xC9, 0xFF, 0xA5, 0x93, + 0x62, 0x54, 0x0E, 0x38, 0xBA, 0x8C, 0xD6, 0xE0, + 0xF7, 0xC1, 0x9B, 0xAD, 0x2F, 0x19, 0x43, 0x75, + 0x84, 0xB2, 0xE8, 0xDE, 0x5C, 0x6A, 0x30, 0x06, + 0x3C, 0x0A, 0x50, 0x66, 0xE4, 0xD2, 0x88, 0xBE, + 0x4F, 0x79, 0x23, 0x15, 0x97, 0xA1, 0xFB, 0xCD, + 0xDA, 0xEC, 0xB6, 0x80, 0x02, 0x34, 0x6E, 0x58, + 0xA9, 0x9F, 0xC5, 0xF3, 0x71, 0x47, 0x1D, 0x2B, + 0x33, 0x05, 0x5F, 0x69, 0xEB, 0xDD, 0x87, 0xB1, + 0x40, 0x76, 0x2C, 0x1A, 0x98, 0xAE, 0xF4, 0xC2, + 0xD5, 0xE3, 0xB9, 0x8F, 0x0D, 0x3B, 0x61, 0x57, + 0xA6, 0x90, 0xCA, 0xFC, 0x7E, 0x48, 0x12, 0x24, + 0x22, 0x14, 0x4E, 0x78, 0xFA, 0xCC, 0x96, 0xA0, + 0x51, 0x67, 0x3D, 0x0B, 0x89, 0xBF, 0xE5, 0xD3, + 0xC4, 0xF2, 0xA8, 0x9E, 0x1C, 0x2A, 0x70, 0x46, + 0xB7, 0x81, 0xDB, 0xED, 0x6F, 0x59, 0x03, 0x35, + 0x2D, 0x1B, 0x41, 0x77, 0xF5, 0xC3, 0x99, 0xAF, + 0x5E, 0x68, 0x32, 0x04, 0x86, 0xB0, 0xEA, 0xDC, + 0xCB, 0xFD, 0xA7, 0x91, 0x13, 0x25, 0x7F, 0x49, + 0xB8, 0x8E, 0xD4, 0xE2, 0x60, 0x56, 0x0C, 0x3A, + 0x00, 0x37, 0x6E, 0x59, 0xDC, 0xEB, 0xB2, 0x85, + 0x7B, 0x4C, 0x15, 0x22, 0xA7, 0x90, 0xC9, 0xFE, + 0xF6, 0xC1, 0x98, 0xAF, 0x2A, 0x1D, 0x44, 0x73, + 0x8D, 0xBA, 0xE3, 0xD4, 0x51, 0x66, 0x3F, 0x08, + 0x2F, 0x18, 0x41, 0x76, 0xF3, 0xC4, 0x9D, 0xAA, + 0x54, 0x63, 0x3A, 0x0D, 0x88, 0xBF, 0xE6, 0xD1, + 0xD9, 0xEE, 0xB7, 0x80, 0x05, 0x32, 0x6B, 0x5C, + 0xA2, 0x95, 0xCC, 0xFB, 0x7E, 0x49, 0x10, 0x27, + 0x5E, 0x69, 0x30, 0x07, 0x82, 0xB5, 0xEC, 0xDB, + 0x25, 0x12, 0x4B, 0x7C, 0xF9, 0xCE, 0x97, 0xA0, + 0xA8, 0x9F, 0xC6, 0xF1, 0x74, 0x43, 0x1A, 0x2D, + 0xD3, 0xE4, 0xBD, 0x8A, 0x0F, 0x38, 0x61, 0x56, + 0x71, 0x46, 0x1F, 0x28, 0xAD, 0x9A, 0xC3, 0xF4, + 0x0A, 0x3D, 0x64, 0x53, 0xD6, 0xE1, 0xB8, 0x8F, + 0x87, 0xB0, 0xE9, 0xDE, 0x5B, 0x6C, 0x35, 0x02, + 0xFC, 0xCB, 0x92, 0xA5, 0x20, 0x17, 0x4E, 0x79, + 0xBC, 0x8B, 0xD2, 0xE5, 0x60, 0x57, 0x0E, 0x39, + 0xC7, 0xF0, 0xA9, 0x9E, 0x1B, 0x2C, 0x75, 0x42, + 0x4A, 0x7D, 0x24, 0x13, 0x96, 0xA1, 0xF8, 0xCF, + 0x31, 0x06, 0x5F, 0x68, 0xED, 0xDA, 0x83, 0xB4, + 0x93, 0xA4, 0xFD, 0xCA, 0x4F, 0x78, 0x21, 0x16, + 0xE8, 0xDF, 0x86, 0xB1, 0x34, 0x03, 0x5A, 0x6D, + 0x65, 0x52, 0x0B, 0x3C, 0xB9, 0x8E, 0xD7, 0xE0, + 0x1E, 0x29, 0x70, 0x47, 0xC2, 0xF5, 0xAC, 0x9B, + 0xE2, 0xD5, 0x8C, 0xBB, 0x3E, 0x09, 0x50, 0x67, + 0x99, 0xAE, 0xF7, 0xC0, 0x45, 0x72, 0x2B, 0x1C, + 0x14, 0x23, 0x7A, 0x4D, 0xC8, 0xFF, 0xA6, 0x91, + 0x6F, 0x58, 0x01, 0x36, 0xB3, 0x84, 0xDD, 0xEA, + 0xCD, 0xFA, 0xA3, 0x94, 0x11, 0x26, 0x7F, 0x48, + 0xB6, 0x81, 0xD8, 0xEF, 0x6A, 0x5D, 0x04, 0x33, + 0x3B, 0x0C, 0x55, 0x62, 0xE7, 0xD0, 0x89, 0xBE, + 0x40, 0x77, 0x2E, 0x19, 0x9C, 0xAB, 0xF2, 0xC5, + 0x00, 0x38, 0x70, 0x48, 0xE0, 0xD8, 0x90, 0xA8, + 0x03, 0x3B, 0x73, 0x4B, 0xE3, 0xDB, 0x93, 0xAB, + 0x06, 0x3E, 0x76, 0x4E, 0xE6, 0xDE, 0x96, 0xAE, + 0x05, 0x3D, 0x75, 0x4D, 0xE5, 0xDD, 0x95, 0xAD, + 0x0C, 0x34, 0x7C, 0x44, 0xEC, 0xD4, 0x9C, 0xA4, + 0x0F, 0x37, 0x7F, 0x47, 0xEF, 0xD7, 0x9F, 0xA7, + 0x0A, 0x32, 0x7A, 0x42, 0xEA, 0xD2, 0x9A, 0xA2, + 0x09, 0x31, 0x79, 0x41, 0xE9, 0xD1, 0x99, 0xA1, + 0x18, 0x20, 0x68, 0x50, 0xF8, 0xC0, 0x88, 0xB0, + 0x1B, 0x23, 0x6B, 0x53, 0xFB, 0xC3, 0x8B, 0xB3, + 0x1E, 0x26, 0x6E, 0x56, 0xFE, 0xC6, 0x8E, 0xB6, + 0x1D, 0x25, 0x6D, 0x55, 0xFD, 0xC5, 0x8D, 0xB5, + 0x14, 0x2C, 0x64, 0x5C, 0xF4, 0xCC, 0x84, 0xBC, + 0x17, 0x2F, 0x67, 0x5F, 0xF7, 0xCF, 0x87, 0xBF, + 0x12, 0x2A, 0x62, 0x5A, 0xF2, 0xCA, 0x82, 0xBA, + 0x11, 0x29, 0x61, 0x59, 0xF1, 0xC9, 0x81, 0xB9, + 0x30, 0x08, 0x40, 0x78, 0xD0, 0xE8, 0xA0, 0x98, + 0x33, 0x0B, 0x43, 0x7B, 0xD3, 0xEB, 0xA3, 0x9B, + 0x36, 0x0E, 0x46, 0x7E, 0xD6, 0xEE, 0xA6, 0x9E, + 0x35, 0x0D, 0x45, 0x7D, 0xD5, 0xED, 0xA5, 0x9D, + 0x3C, 0x04, 0x4C, 0x74, 0xDC, 0xE4, 0xAC, 0x94, + 0x3F, 0x07, 0x4F, 0x77, 0xDF, 0xE7, 0xAF, 0x97, + 0x3A, 0x02, 0x4A, 0x72, 0xDA, 0xE2, 0xAA, 0x92, + 0x39, 0x01, 0x49, 0x71, 0xD9, 0xE1, 0xA9, 0x91, + 0x28, 0x10, 0x58, 0x60, 0xC8, 0xF0, 0xB8, 0x80, + 0x2B, 0x13, 0x5B, 0x63, 0xCB, 0xF3, 0xBB, 0x83, + 0x2E, 0x16, 0x5E, 0x66, 0xCE, 0xF6, 0xBE, 0x86, + 0x2D, 0x15, 0x5D, 0x65, 0xCD, 0xF5, 0xBD, 0x85, + 0x24, 0x1C, 0x54, 0x6C, 0xC4, 0xFC, 0xB4, 0x8C, + 0x27, 0x1F, 0x57, 0x6F, 0xC7, 0xFF, 0xB7, 0x8F, + 0x22, 0x1A, 0x52, 0x6A, 0xC2, 0xFA, 0xB2, 0x8A, + 0x21, 0x19, 0x51, 0x69, 0xC1, 0xF9, 0xB1, 0x89, + 0x00, 0x39, 0x72, 0x4B, 0xE4, 0xDD, 0x96, 0xAF, + 0x0B, 0x32, 0x79, 0x40, 0xEF, 0xD6, 0x9D, 0xA4, + 0x16, 0x2F, 0x64, 0x5D, 0xF2, 0xCB, 0x80, 0xB9, + 0x1D, 0x24, 0x6F, 0x56, 0xF9, 0xC0, 0x8B, 0xB2, + 0x2C, 0x15, 0x5E, 0x67, 0xC8, 0xF1, 0xBA, 0x83, + 0x27, 0x1E, 0x55, 0x6C, 0xC3, 0xFA, 0xB1, 0x88, + 0x3A, 0x03, 0x48, 0x71, 0xDE, 0xE7, 0xAC, 0x95, + 0x31, 0x08, 0x43, 0x7A, 0xD5, 0xEC, 0xA7, 0x9E, + 0x58, 0x61, 0x2A, 0x13, 0xBC, 0x85, 0xCE, 0xF7, + 0x53, 0x6A, 0x21, 0x18, 0xB7, 0x8E, 0xC5, 0xFC, + 0x4E, 0x77, 0x3C, 0x05, 0xAA, 0x93, 0xD8, 0xE1, + 0x45, 0x7C, 0x37, 0x0E, 0xA1, 0x98, 0xD3, 0xEA, + 0x74, 0x4D, 0x06, 0x3F, 0x90, 0xA9, 0xE2, 0xDB, + 0x7F, 0x46, 0x0D, 0x34, 0x9B, 0xA2, 0xE9, 0xD0, + 0x62, 0x5B, 0x10, 0x29, 0x86, 0xBF, 0xF4, 0xCD, + 0x69, 0x50, 0x1B, 0x22, 0x8D, 0xB4, 0xFF, 0xC6, + 0xB0, 0x89, 0xC2, 0xFB, 0x54, 0x6D, 0x26, 0x1F, + 0xBB, 0x82, 0xC9, 0xF0, 0x5F, 0x66, 0x2D, 0x14, + 0xA6, 0x9F, 0xD4, 0xED, 0x42, 0x7B, 0x30, 0x09, + 0xAD, 0x94, 0xDF, 0xE6, 0x49, 0x70, 0x3B, 0x02, + 0x9C, 0xA5, 0xEE, 0xD7, 0x78, 0x41, 0x0A, 0x33, + 0x97, 0xAE, 0xE5, 0xDC, 0x73, 0x4A, 0x01, 0x38, + 0x8A, 0xB3, 0xF8, 0xC1, 0x6E, 0x57, 0x1C, 0x25, + 0x81, 0xB8, 0xF3, 0xCA, 0x65, 0x5C, 0x17, 0x2E, + 0xE8, 0xD1, 0x9A, 0xA3, 0x0C, 0x35, 0x7E, 0x47, + 0xE3, 0xDA, 0x91, 0xA8, 0x07, 0x3E, 0x75, 0x4C, + 0xFE, 0xC7, 0x8C, 0xB5, 0x1A, 0x23, 0x68, 0x51, + 0xF5, 0xCC, 0x87, 0xBE, 0x11, 0x28, 0x63, 0x5A, + 0xC4, 0xFD, 0xB6, 0x8F, 0x20, 0x19, 0x52, 0x6B, + 0xCF, 0xF6, 0xBD, 0x84, 0x2B, 0x12, 0x59, 0x60, + 0xD2, 0xEB, 0xA0, 0x99, 0x36, 0x0F, 0x44, 0x7D, + 0xD9, 0xE0, 0xAB, 0x92, 0x3D, 0x04, 0x4F, 0x76, + 0x00, 0x3A, 0x74, 0x4E, 0xE8, 0xD2, 0x9C, 0xA6, + 0x13, 0x29, 0x67, 0x5D, 0xFB, 0xC1, 0x8F, 0xB5, + 0x26, 0x1C, 0x52, 0x68, 0xCE, 0xF4, 0xBA, 0x80, + 0x35, 0x0F, 0x41, 0x7B, 0xDD, 0xE7, 0xA9, 0x93, + 0x4C, 0x76, 0x38, 0x02, 0xA4, 0x9E, 0xD0, 0xEA, + 0x5F, 0x65, 0x2B, 0x11, 0xB7, 0x8D, 0xC3, 0xF9, + 0x6A, 0x50, 0x1E, 0x24, 0x82, 0xB8, 0xF6, 0xCC, + 0x79, 0x43, 0x0D, 0x37, 0x91, 0xAB, 0xE5, 0xDF, + 0x98, 0xA2, 0xEC, 0xD6, 0x70, 0x4A, 0x04, 0x3E, + 0x8B, 0xB1, 0xFF, 0xC5, 0x63, 0x59, 0x17, 0x2D, + 0xBE, 0x84, 0xCA, 0xF0, 0x56, 0x6C, 0x22, 0x18, + 0xAD, 0x97, 0xD9, 0xE3, 0x45, 0x7F, 0x31, 0x0B, + 0xD4, 0xEE, 0xA0, 0x9A, 0x3C, 0x06, 0x48, 0x72, + 0xC7, 0xFD, 0xB3, 0x89, 0x2F, 0x15, 0x5B, 0x61, + 0xF2, 0xC8, 0x86, 0xBC, 0x1A, 0x20, 0x6E, 0x54, + 0xE1, 0xDB, 0x95, 0xAF, 0x09, 0x33, 0x7D, 0x47, + 0xF3, 0xC9, 0x87, 0xBD, 0x1B, 0x21, 0x6F, 0x55, + 0xE0, 0xDA, 0x94, 0xAE, 0x08, 0x32, 0x7C, 0x46, + 0xD5, 0xEF, 0xA1, 0x9B, 0x3D, 0x07, 0x49, 0x73, + 0xC6, 0xFC, 0xB2, 0x88, 0x2E, 0x14, 0x5A, 0x60, + 0xBF, 0x85, 0xCB, 0xF1, 0x57, 0x6D, 0x23, 0x19, + 0xAC, 0x96, 0xD8, 0xE2, 0x44, 0x7E, 0x30, 0x0A, + 0x99, 0xA3, 0xED, 0xD7, 0x71, 0x4B, 0x05, 0x3F, + 0x8A, 0xB0, 0xFE, 0xC4, 0x62, 0x58, 0x16, 0x2C, + 0x6B, 0x51, 0x1F, 0x25, 0x83, 0xB9, 0xF7, 0xCD, + 0x78, 0x42, 0x0C, 0x36, 0x90, 0xAA, 0xE4, 0xDE, + 0x4D, 0x77, 0x39, 0x03, 0xA5, 0x9F, 0xD1, 0xEB, + 0x5E, 0x64, 0x2A, 0x10, 0xB6, 0x8C, 0xC2, 0xF8, + 0x27, 0x1D, 0x53, 0x69, 0xCF, 0xF5, 0xBB, 0x81, + 0x34, 0x0E, 0x40, 0x7A, 0xDC, 0xE6, 0xA8, 0x92, + 0x01, 0x3B, 0x75, 0x4F, 0xE9, 0xD3, 0x9D, 0xA7, + 0x12, 0x28, 0x66, 0x5C, 0xFA, 0xC0, 0x8E, 0xB4, + 0x00, 0x3B, 0x76, 0x4D, 0xEC, 0xD7, 0x9A, 0xA1, + 0x1B, 0x20, 0x6D, 0x56, 0xF7, 0xCC, 0x81, 0xBA, + 0x36, 0x0D, 0x40, 0x7B, 0xDA, 0xE1, 0xAC, 0x97, + 0x2D, 0x16, 0x5B, 0x60, 0xC1, 0xFA, 0xB7, 0x8C, + 0x6C, 0x57, 0x1A, 0x21, 0x80, 0xBB, 0xF6, 0xCD, + 0x77, 0x4C, 0x01, 0x3A, 0x9B, 0xA0, 0xED, 0xD6, + 0x5A, 0x61, 0x2C, 0x17, 0xB6, 0x8D, 0xC0, 0xFB, + 0x41, 0x7A, 0x37, 0x0C, 0xAD, 0x96, 0xDB, 0xE0, + 0xD8, 0xE3, 0xAE, 0x95, 0x34, 0x0F, 0x42, 0x79, + 0xC3, 0xF8, 0xB5, 0x8E, 0x2F, 0x14, 0x59, 0x62, + 0xEE, 0xD5, 0x98, 0xA3, 0x02, 0x39, 0x74, 0x4F, + 0xF5, 0xCE, 0x83, 0xB8, 0x19, 0x22, 0x6F, 0x54, + 0xB4, 0x8F, 0xC2, 0xF9, 0x58, 0x63, 0x2E, 0x15, + 0xAF, 0x94, 0xD9, 0xE2, 0x43, 0x78, 0x35, 0x0E, + 0x82, 0xB9, 0xF4, 0xCF, 0x6E, 0x55, 0x18, 0x23, + 0x99, 0xA2, 0xEF, 0xD4, 0x75, 0x4E, 0x03, 0x38, + 0x73, 0x48, 0x05, 0x3E, 0x9F, 0xA4, 0xE9, 0xD2, + 0x68, 0x53, 0x1E, 0x25, 0x84, 0xBF, 0xF2, 0xC9, + 0x45, 0x7E, 0x33, 0x08, 0xA9, 0x92, 0xDF, 0xE4, + 0x5E, 0x65, 0x28, 0x13, 0xB2, 0x89, 0xC4, 0xFF, + 0x1F, 0x24, 0x69, 0x52, 0xF3, 0xC8, 0x85, 0xBE, + 0x04, 0x3F, 0x72, 0x49, 0xE8, 0xD3, 0x9E, 0xA5, + 0x29, 0x12, 0x5F, 0x64, 0xC5, 0xFE, 0xB3, 0x88, + 0x32, 0x09, 0x44, 0x7F, 0xDE, 0xE5, 0xA8, 0x93, + 0xAB, 0x90, 0xDD, 0xE6, 0x47, 0x7C, 0x31, 0x0A, + 0xB0, 0x8B, 0xC6, 0xFD, 0x5C, 0x67, 0x2A, 0x11, + 0x9D, 0xA6, 0xEB, 0xD0, 0x71, 0x4A, 0x07, 0x3C, + 0x86, 0xBD, 0xF0, 0xCB, 0x6A, 0x51, 0x1C, 0x27, + 0xC7, 0xFC, 0xB1, 0x8A, 0x2B, 0x10, 0x5D, 0x66, + 0xDC, 0xE7, 0xAA, 0x91, 0x30, 0x0B, 0x46, 0x7D, + 0xF1, 0xCA, 0x87, 0xBC, 0x1D, 0x26, 0x6B, 0x50, + 0xEA, 0xD1, 0x9C, 0xA7, 0x06, 0x3D, 0x70, 0x4B, + 0x00, 0x3C, 0x78, 0x44, 0xF0, 0xCC, 0x88, 0xB4, + 0x23, 0x1F, 0x5B, 0x67, 0xD3, 0xEF, 0xAB, 0x97, + 0x46, 0x7A, 0x3E, 0x02, 0xB6, 0x8A, 0xCE, 0xF2, + 0x65, 0x59, 0x1D, 0x21, 0x95, 0xA9, 0xED, 0xD1, + 0x8C, 0xB0, 0xF4, 0xC8, 0x7C, 0x40, 0x04, 0x38, + 0xAF, 0x93, 0xD7, 0xEB, 0x5F, 0x63, 0x27, 0x1B, + 0xCA, 0xF6, 0xB2, 0x8E, 0x3A, 0x06, 0x42, 0x7E, + 0xE9, 0xD5, 0x91, 0xAD, 0x19, 0x25, 0x61, 0x5D, + 0xDB, 0xE7, 0xA3, 0x9F, 0x2B, 0x17, 0x53, 0x6F, + 0xF8, 0xC4, 0x80, 0xBC, 0x08, 0x34, 0x70, 0x4C, + 0x9D, 0xA1, 0xE5, 0xD9, 0x6D, 0x51, 0x15, 0x29, + 0xBE, 0x82, 0xC6, 0xFA, 0x4E, 0x72, 0x36, 0x0A, + 0x57, 0x6B, 0x2F, 0x13, 0xA7, 0x9B, 0xDF, 0xE3, + 0x74, 0x48, 0x0C, 0x30, 0x84, 0xB8, 0xFC, 0xC0, + 0x11, 0x2D, 0x69, 0x55, 0xE1, 0xDD, 0x99, 0xA5, + 0x32, 0x0E, 0x4A, 0x76, 0xC2, 0xFE, 0xBA, 0x86, + 0x75, 0x49, 0x0D, 0x31, 0x85, 0xB9, 0xFD, 0xC1, + 0x56, 0x6A, 0x2E, 0x12, 0xA6, 0x9A, 0xDE, 0xE2, + 0x33, 0x0F, 0x4B, 0x77, 0xC3, 0xFF, 0xBB, 0x87, + 0x10, 0x2C, 0x68, 0x54, 0xE0, 0xDC, 0x98, 0xA4, + 0xF9, 0xC5, 0x81, 0xBD, 0x09, 0x35, 0x71, 0x4D, + 0xDA, 0xE6, 0xA2, 0x9E, 0x2A, 0x16, 0x52, 0x6E, + 0xBF, 0x83, 0xC7, 0xFB, 0x4F, 0x73, 0x37, 0x0B, + 0x9C, 0xA0, 0xE4, 0xD8, 0x6C, 0x50, 0x14, 0x28, + 0xAE, 0x92, 0xD6, 0xEA, 0x5E, 0x62, 0x26, 0x1A, + 0x8D, 0xB1, 0xF5, 0xC9, 0x7D, 0x41, 0x05, 0x39, + 0xE8, 0xD4, 0x90, 0xAC, 0x18, 0x24, 0x60, 0x5C, + 0xCB, 0xF7, 0xB3, 0x8F, 0x3B, 0x07, 0x43, 0x7F, + 0x22, 0x1E, 0x5A, 0x66, 0xD2, 0xEE, 0xAA, 0x96, + 0x01, 0x3D, 0x79, 0x45, 0xF1, 0xCD, 0x89, 0xB5, + 0x64, 0x58, 0x1C, 0x20, 0x94, 0xA8, 0xEC, 0xD0, + 0x47, 0x7B, 0x3F, 0x03, 0xB7, 0x8B, 0xCF, 0xF3, + 0x00, 0x3D, 0x7A, 0x47, 0xF4, 0xC9, 0x8E, 0xB3, + 0x2B, 0x16, 0x51, 0x6C, 0xDF, 0xE2, 0xA5, 0x98, + 0x56, 0x6B, 0x2C, 0x11, 0xA2, 0x9F, 0xD8, 0xE5, + 0x7D, 0x40, 0x07, 0x3A, 0x89, 0xB4, 0xF3, 0xCE, + 0xAC, 0x91, 0xD6, 0xEB, 0x58, 0x65, 0x22, 0x1F, + 0x87, 0xBA, 0xFD, 0xC0, 0x73, 0x4E, 0x09, 0x34, + 0xFA, 0xC7, 0x80, 0xBD, 0x0E, 0x33, 0x74, 0x49, + 0xD1, 0xEC, 0xAB, 0x96, 0x25, 0x18, 0x5F, 0x62, + 0x9B, 0xA6, 0xE1, 0xDC, 0x6F, 0x52, 0x15, 0x28, + 0xB0, 0x8D, 0xCA, 0xF7, 0x44, 0x79, 0x3E, 0x03, + 0xCD, 0xF0, 0xB7, 0x8A, 0x39, 0x04, 0x43, 0x7E, + 0xE6, 0xDB, 0x9C, 0xA1, 0x12, 0x2F, 0x68, 0x55, + 0x37, 0x0A, 0x4D, 0x70, 0xC3, 0xFE, 0xB9, 0x84, + 0x1C, 0x21, 0x66, 0x5B, 0xE8, 0xD5, 0x92, 0xAF, + 0x61, 0x5C, 0x1B, 0x26, 0x95, 0xA8, 0xEF, 0xD2, + 0x4A, 0x77, 0x30, 0x0D, 0xBE, 0x83, 0xC4, 0xF9, + 0xF5, 0xC8, 0x8F, 0xB2, 0x01, 0x3C, 0x7B, 0x46, + 0xDE, 0xE3, 0xA4, 0x99, 0x2A, 0x17, 0x50, 0x6D, + 0xA3, 0x9E, 0xD9, 0xE4, 0x57, 0x6A, 0x2D, 0x10, + 0x88, 0xB5, 0xF2, 0xCF, 0x7C, 0x41, 0x06, 0x3B, + 0x59, 0x64, 0x23, 0x1E, 0xAD, 0x90, 0xD7, 0xEA, + 0x72, 0x4F, 0x08, 0x35, 0x86, 0xBB, 0xFC, 0xC1, + 0x0F, 0x32, 0x75, 0x48, 0xFB, 0xC6, 0x81, 0xBC, + 0x24, 0x19, 0x5E, 0x63, 0xD0, 0xED, 0xAA, 0x97, + 0x6E, 0x53, 0x14, 0x29, 0x9A, 0xA7, 0xE0, 0xDD, + 0x45, 0x78, 0x3F, 0x02, 0xB1, 0x8C, 0xCB, 0xF6, + 0x38, 0x05, 0x42, 0x7F, 0xCC, 0xF1, 0xB6, 0x8B, + 0x13, 0x2E, 0x69, 0x54, 0xE7, 0xDA, 0x9D, 0xA0, + 0xC2, 0xFF, 0xB8, 0x85, 0x36, 0x0B, 0x4C, 0x71, + 0xE9, 0xD4, 0x93, 0xAE, 0x1D, 0x20, 0x67, 0x5A, + 0x94, 0xA9, 0xEE, 0xD3, 0x60, 0x5D, 0x1A, 0x27, + 0xBF, 0x82, 0xC5, 0xF8, 0x4B, 0x76, 0x31, 0x0C, + 0x00, 0x3E, 0x7C, 0x42, 0xF8, 0xC6, 0x84, 0xBA, + 0x33, 0x0D, 0x4F, 0x71, 0xCB, 0xF5, 0xB7, 0x89, + 0x66, 0x58, 0x1A, 0x24, 0x9E, 0xA0, 0xE2, 0xDC, + 0x55, 0x6B, 0x29, 0x17, 0xAD, 0x93, 0xD1, 0xEF, + 0xCC, 0xF2, 0xB0, 0x8E, 0x34, 0x0A, 0x48, 0x76, + 0xFF, 0xC1, 0x83, 0xBD, 0x07, 0x39, 0x7B, 0x45, + 0xAA, 0x94, 0xD6, 0xE8, 0x52, 0x6C, 0x2E, 0x10, + 0x99, 0xA7, 0xE5, 0xDB, 0x61, 0x5F, 0x1D, 0x23, + 0x5B, 0x65, 0x27, 0x19, 0xA3, 0x9D, 0xDF, 0xE1, + 0x68, 0x56, 0x14, 0x2A, 0x90, 0xAE, 0xEC, 0xD2, + 0x3D, 0x03, 0x41, 0x7F, 0xC5, 0xFB, 0xB9, 0x87, + 0x0E, 0x30, 0x72, 0x4C, 0xF6, 0xC8, 0x8A, 0xB4, + 0x97, 0xA9, 0xEB, 0xD5, 0x6F, 0x51, 0x13, 0x2D, + 0xA4, 0x9A, 0xD8, 0xE6, 0x5C, 0x62, 0x20, 0x1E, + 0xF1, 0xCF, 0x8D, 0xB3, 0x09, 0x37, 0x75, 0x4B, + 0xC2, 0xFC, 0xBE, 0x80, 0x3A, 0x04, 0x46, 0x78, + 0xB6, 0x88, 0xCA, 0xF4, 0x4E, 0x70, 0x32, 0x0C, + 0x85, 0xBB, 0xF9, 0xC7, 0x7D, 0x43, 0x01, 0x3F, + 0xD0, 0xEE, 0xAC, 0x92, 0x28, 0x16, 0x54, 0x6A, + 0xE3, 0xDD, 0x9F, 0xA1, 0x1B, 0x25, 0x67, 0x59, + 0x7A, 0x44, 0x06, 0x38, 0x82, 0xBC, 0xFE, 0xC0, + 0x49, 0x77, 0x35, 0x0B, 0xB1, 0x8F, 0xCD, 0xF3, + 0x1C, 0x22, 0x60, 0x5E, 0xE4, 0xDA, 0x98, 0xA6, + 0x2F, 0x11, 0x53, 0x6D, 0xD7, 0xE9, 0xAB, 0x95, + 0xED, 0xD3, 0x91, 0xAF, 0x15, 0x2B, 0x69, 0x57, + 0xDE, 0xE0, 0xA2, 0x9C, 0x26, 0x18, 0x5A, 0x64, + 0x8B, 0xB5, 0xF7, 0xC9, 0x73, 0x4D, 0x0F, 0x31, + 0xB8, 0x86, 0xC4, 0xFA, 0x40, 0x7E, 0x3C, 0x02, + 0x21, 0x1F, 0x5D, 0x63, 0xD9, 0xE7, 0xA5, 0x9B, + 0x12, 0x2C, 0x6E, 0x50, 0xEA, 0xD4, 0x96, 0xA8, + 0x47, 0x79, 0x3B, 0x05, 0xBF, 0x81, 0xC3, 0xFD, + 0x74, 0x4A, 0x08, 0x36, 0x8C, 0xB2, 0xF0, 0xCE, + 0x00, 0x3F, 0x7E, 0x41, 0xFC, 0xC3, 0x82, 0xBD, + 0x3B, 0x04, 0x45, 0x7A, 0xC7, 0xF8, 0xB9, 0x86, + 0x76, 0x49, 0x08, 0x37, 0x8A, 0xB5, 0xF4, 0xCB, + 0x4D, 0x72, 0x33, 0x0C, 0xB1, 0x8E, 0xCF, 0xF0, + 0xEC, 0xD3, 0x92, 0xAD, 0x10, 0x2F, 0x6E, 0x51, + 0xD7, 0xE8, 0xA9, 0x96, 0x2B, 0x14, 0x55, 0x6A, + 0x9A, 0xA5, 0xE4, 0xDB, 0x66, 0x59, 0x18, 0x27, + 0xA1, 0x9E, 0xDF, 0xE0, 0x5D, 0x62, 0x23, 0x1C, + 0x1B, 0x24, 0x65, 0x5A, 0xE7, 0xD8, 0x99, 0xA6, + 0x20, 0x1F, 0x5E, 0x61, 0xDC, 0xE3, 0xA2, 0x9D, + 0x6D, 0x52, 0x13, 0x2C, 0x91, 0xAE, 0xEF, 0xD0, + 0x56, 0x69, 0x28, 0x17, 0xAA, 0x95, 0xD4, 0xEB, + 0xF7, 0xC8, 0x89, 0xB6, 0x0B, 0x34, 0x75, 0x4A, + 0xCC, 0xF3, 0xB2, 0x8D, 0x30, 0x0F, 0x4E, 0x71, + 0x81, 0xBE, 0xFF, 0xC0, 0x7D, 0x42, 0x03, 0x3C, + 0xBA, 0x85, 0xC4, 0xFB, 0x46, 0x79, 0x38, 0x07, + 0x36, 0x09, 0x48, 0x77, 0xCA, 0xF5, 0xB4, 0x8B, + 0x0D, 0x32, 0x73, 0x4C, 0xF1, 0xCE, 0x8F, 0xB0, + 0x40, 0x7F, 0x3E, 0x01, 0xBC, 0x83, 0xC2, 0xFD, + 0x7B, 0x44, 0x05, 0x3A, 0x87, 0xB8, 0xF9, 0xC6, + 0xDA, 0xE5, 0xA4, 0x9B, 0x26, 0x19, 0x58, 0x67, + 0xE1, 0xDE, 0x9F, 0xA0, 0x1D, 0x22, 0x63, 0x5C, + 0xAC, 0x93, 0xD2, 0xED, 0x50, 0x6F, 0x2E, 0x11, + 0x97, 0xA8, 0xE9, 0xD6, 0x6B, 0x54, 0x15, 0x2A, + 0x2D, 0x12, 0x53, 0x6C, 0xD1, 0xEE, 0xAF, 0x90, + 0x16, 0x29, 0x68, 0x57, 0xEA, 0xD5, 0x94, 0xAB, + 0x5B, 0x64, 0x25, 0x1A, 0xA7, 0x98, 0xD9, 0xE6, + 0x60, 0x5F, 0x1E, 0x21, 0x9C, 0xA3, 0xE2, 0xDD, + 0xC1, 0xFE, 0xBF, 0x80, 0x3D, 0x02, 0x43, 0x7C, + 0xFA, 0xC5, 0x84, 0xBB, 0x06, 0x39, 0x78, 0x47, + 0xB7, 0x88, 0xC9, 0xF6, 0x4B, 0x74, 0x35, 0x0A, + 0x8C, 0xB3, 0xF2, 0xCD, 0x70, 0x4F, 0x0E, 0x31, + 0x00, 0x40, 0x80, 0xC0, 0xC3, 0x83, 0x43, 0x03, + 0x45, 0x05, 0xC5, 0x85, 0x86, 0xC6, 0x06, 0x46, + 0x8A, 0xCA, 0x0A, 0x4A, 0x49, 0x09, 0xC9, 0x89, + 0xCF, 0x8F, 0x4F, 0x0F, 0x0C, 0x4C, 0x8C, 0xCC, + 0xD7, 0x97, 0x57, 0x17, 0x14, 0x54, 0x94, 0xD4, + 0x92, 0xD2, 0x12, 0x52, 0x51, 0x11, 0xD1, 0x91, + 0x5D, 0x1D, 0xDD, 0x9D, 0x9E, 0xDE, 0x1E, 0x5E, + 0x18, 0x58, 0x98, 0xD8, 0xDB, 0x9B, 0x5B, 0x1B, + 0x6D, 0x2D, 0xED, 0xAD, 0xAE, 0xEE, 0x2E, 0x6E, + 0x28, 0x68, 0xA8, 0xE8, 0xEB, 0xAB, 0x6B, 0x2B, + 0xE7, 0xA7, 0x67, 0x27, 0x24, 0x64, 0xA4, 0xE4, + 0xA2, 0xE2, 0x22, 0x62, 0x61, 0x21, 0xE1, 0xA1, + 0xBA, 0xFA, 0x3A, 0x7A, 0x79, 0x39, 0xF9, 0xB9, + 0xFF, 0xBF, 0x7F, 0x3F, 0x3C, 0x7C, 0xBC, 0xFC, + 0x30, 0x70, 0xB0, 0xF0, 0xF3, 0xB3, 0x73, 0x33, + 0x75, 0x35, 0xF5, 0xB5, 0xB6, 0xF6, 0x36, 0x76, + 0xDA, 0x9A, 0x5A, 0x1A, 0x19, 0x59, 0x99, 0xD9, + 0x9F, 0xDF, 0x1F, 0x5F, 0x5C, 0x1C, 0xDC, 0x9C, + 0x50, 0x10, 0xD0, 0x90, 0x93, 0xD3, 0x13, 0x53, + 0x15, 0x55, 0x95, 0xD5, 0xD6, 0x96, 0x56, 0x16, + 0x0D, 0x4D, 0x8D, 0xCD, 0xCE, 0x8E, 0x4E, 0x0E, + 0x48, 0x08, 0xC8, 0x88, 0x8B, 0xCB, 0x0B, 0x4B, + 0x87, 0xC7, 0x07, 0x47, 0x44, 0x04, 0xC4, 0x84, + 0xC2, 0x82, 0x42, 0x02, 0x01, 0x41, 0x81, 0xC1, + 0xB7, 0xF7, 0x37, 0x77, 0x74, 0x34, 0xF4, 0xB4, + 0xF2, 0xB2, 0x72, 0x32, 0x31, 0x71, 0xB1, 0xF1, + 0x3D, 0x7D, 0xBD, 0xFD, 0xFE, 0xBE, 0x7E, 0x3E, + 0x78, 0x38, 0xF8, 0xB8, 0xBB, 0xFB, 0x3B, 0x7B, + 0x60, 0x20, 0xE0, 0xA0, 0xA3, 0xE3, 0x23, 0x63, + 0x25, 0x65, 0xA5, 0xE5, 0xE6, 0xA6, 0x66, 0x26, + 0xEA, 0xAA, 0x6A, 0x2A, 0x29, 0x69, 0xA9, 0xE9, + 0xAF, 0xEF, 0x2F, 0x6F, 0x6C, 0x2C, 0xEC, 0xAC, + 0x00, 0x41, 0x82, 0xC3, 0xC7, 0x86, 0x45, 0x04, + 0x4D, 0x0C, 0xCF, 0x8E, 0x8A, 0xCB, 0x08, 0x49, + 0x9A, 0xDB, 0x18, 0x59, 0x5D, 0x1C, 0xDF, 0x9E, + 0xD7, 0x96, 0x55, 0x14, 0x10, 0x51, 0x92, 0xD3, + 0xF7, 0xB6, 0x75, 0x34, 0x30, 0x71, 0xB2, 0xF3, + 0xBA, 0xFB, 0x38, 0x79, 0x7D, 0x3C, 0xFF, 0xBE, + 0x6D, 0x2C, 0xEF, 0xAE, 0xAA, 0xEB, 0x28, 0x69, + 0x20, 0x61, 0xA2, 0xE3, 0xE7, 0xA6, 0x65, 0x24, + 0x2D, 0x6C, 0xAF, 0xEE, 0xEA, 0xAB, 0x68, 0x29, + 0x60, 0x21, 0xE2, 0xA3, 0xA7, 0xE6, 0x25, 0x64, + 0xB7, 0xF6, 0x35, 0x74, 0x70, 0x31, 0xF2, 0xB3, + 0xFA, 0xBB, 0x78, 0x39, 0x3D, 0x7C, 0xBF, 0xFE, + 0xDA, 0x9B, 0x58, 0x19, 0x1D, 0x5C, 0x9F, 0xDE, + 0x97, 0xD6, 0x15, 0x54, 0x50, 0x11, 0xD2, 0x93, + 0x40, 0x01, 0xC2, 0x83, 0x87, 0xC6, 0x05, 0x44, + 0x0D, 0x4C, 0x8F, 0xCE, 0xCA, 0x8B, 0x48, 0x09, + 0x5A, 0x1B, 0xD8, 0x99, 0x9D, 0xDC, 0x1F, 0x5E, + 0x17, 0x56, 0x95, 0xD4, 0xD0, 0x91, 0x52, 0x13, + 0xC0, 0x81, 0x42, 0x03, 0x07, 0x46, 0x85, 0xC4, + 0x8D, 0xCC, 0x0F, 0x4E, 0x4A, 0x0B, 0xC8, 0x89, + 0xAD, 0xEC, 0x2F, 0x6E, 0x6A, 0x2B, 0xE8, 0xA9, + 0xE0, 0xA1, 0x62, 0x23, 0x27, 0x66, 0xA5, 0xE4, + 0x37, 0x76, 0xB5, 0xF4, 0xF0, 0xB1, 0x72, 0x33, + 0x7A, 0x3B, 0xF8, 0xB9, 0xBD, 0xFC, 0x3F, 0x7E, + 0x77, 0x36, 0xF5, 0xB4, 0xB0, 0xF1, 0x32, 0x73, + 0x3A, 0x7B, 0xB8, 0xF9, 0xFD, 0xBC, 0x7F, 0x3E, + 0xED, 0xAC, 0x6F, 0x2E, 0x2A, 0x6B, 0xA8, 0xE9, + 0xA0, 0xE1, 0x22, 0x63, 0x67, 0x26, 0xE5, 0xA4, + 0x80, 0xC1, 0x02, 0x43, 0x47, 0x06, 0xC5, 0x84, + 0xCD, 0x8C, 0x4F, 0x0E, 0x0A, 0x4B, 0x88, 0xC9, + 0x1A, 0x5B, 0x98, 0xD9, 0xDD, 0x9C, 0x5F, 0x1E, + 0x57, 0x16, 0xD5, 0x94, 0x90, 0xD1, 0x12, 0x53, + 0x00, 0x42, 0x84, 0xC6, 0xCB, 0x89, 0x4F, 0x0D, + 0x55, 0x17, 0xD1, 0x93, 0x9E, 0xDC, 0x1A, 0x58, + 0xAA, 0xE8, 0x2E, 0x6C, 0x61, 0x23, 0xE5, 0xA7, + 0xFF, 0xBD, 0x7B, 0x39, 0x34, 0x76, 0xB0, 0xF2, + 0x97, 0xD5, 0x13, 0x51, 0x5C, 0x1E, 0xD8, 0x9A, + 0xC2, 0x80, 0x46, 0x04, 0x09, 0x4B, 0x8D, 0xCF, + 0x3D, 0x7F, 0xB9, 0xFB, 0xF6, 0xB4, 0x72, 0x30, + 0x68, 0x2A, 0xEC, 0xAE, 0xA3, 0xE1, 0x27, 0x65, + 0xED, 0xAF, 0x69, 0x2B, 0x26, 0x64, 0xA2, 0xE0, + 0xB8, 0xFA, 0x3C, 0x7E, 0x73, 0x31, 0xF7, 0xB5, + 0x47, 0x05, 0xC3, 0x81, 0x8C, 0xCE, 0x08, 0x4A, + 0x12, 0x50, 0x96, 0xD4, 0xD9, 0x9B, 0x5D, 0x1F, + 0x7A, 0x38, 0xFE, 0xBC, 0xB1, 0xF3, 0x35, 0x77, + 0x2F, 0x6D, 0xAB, 0xE9, 0xE4, 0xA6, 0x60, 0x22, + 0xD0, 0x92, 0x54, 0x16, 0x1B, 0x59, 0x9F, 0xDD, + 0x85, 0xC7, 0x01, 0x43, 0x4E, 0x0C, 0xCA, 0x88, + 0x19, 0x5B, 0x9D, 0xDF, 0xD2, 0x90, 0x56, 0x14, + 0x4C, 0x0E, 0xC8, 0x8A, 0x87, 0xC5, 0x03, 0x41, + 0xB3, 0xF1, 0x37, 0x75, 0x78, 0x3A, 0xFC, 0xBE, + 0xE6, 0xA4, 0x62, 0x20, 0x2D, 0x6F, 0xA9, 0xEB, + 0x8E, 0xCC, 0x0A, 0x48, 0x45, 0x07, 0xC1, 0x83, + 0xDB, 0x99, 0x5F, 0x1D, 0x10, 0x52, 0x94, 0xD6, + 0x24, 0x66, 0xA0, 0xE2, 0xEF, 0xAD, 0x6B, 0x29, + 0x71, 0x33, 0xF5, 0xB7, 0xBA, 0xF8, 0x3E, 0x7C, + 0xF4, 0xB6, 0x70, 0x32, 0x3F, 0x7D, 0xBB, 0xF9, + 0xA1, 0xE3, 0x25, 0x67, 0x6A, 0x28, 0xEE, 0xAC, + 0x5E, 0x1C, 0xDA, 0x98, 0x95, 0xD7, 0x11, 0x53, + 0x0B, 0x49, 0x8F, 0xCD, 0xC0, 0x82, 0x44, 0x06, + 0x63, 0x21, 0xE7, 0xA5, 0xA8, 0xEA, 0x2C, 0x6E, + 0x36, 0x74, 0xB2, 0xF0, 0xFD, 0xBF, 0x79, 0x3B, + 0xC9, 0x8B, 0x4D, 0x0F, 0x02, 0x40, 0x86, 0xC4, + 0x9C, 0xDE, 0x18, 0x5A, 0x57, 0x15, 0xD3, 0x91, + 0x00, 0x43, 0x86, 0xC5, 0xCF, 0x8C, 0x49, 0x0A, + 0x5D, 0x1E, 0xDB, 0x98, 0x92, 0xD1, 0x14, 0x57, + 0xBA, 0xF9, 0x3C, 0x7F, 0x75, 0x36, 0xF3, 0xB0, + 0xE7, 0xA4, 0x61, 0x22, 0x28, 0x6B, 0xAE, 0xED, + 0xB7, 0xF4, 0x31, 0x72, 0x78, 0x3B, 0xFE, 0xBD, + 0xEA, 0xA9, 0x6C, 0x2F, 0x25, 0x66, 0xA3, 0xE0, + 0x0D, 0x4E, 0x8B, 0xC8, 0xC2, 0x81, 0x44, 0x07, + 0x50, 0x13, 0xD6, 0x95, 0x9F, 0xDC, 0x19, 0x5A, + 0xAD, 0xEE, 0x2B, 0x68, 0x62, 0x21, 0xE4, 0xA7, + 0xF0, 0xB3, 0x76, 0x35, 0x3F, 0x7C, 0xB9, 0xFA, + 0x17, 0x54, 0x91, 0xD2, 0xD8, 0x9B, 0x5E, 0x1D, + 0x4A, 0x09, 0xCC, 0x8F, 0x85, 0xC6, 0x03, 0x40, + 0x1A, 0x59, 0x9C, 0xDF, 0xD5, 0x96, 0x53, 0x10, + 0x47, 0x04, 0xC1, 0x82, 0x88, 0xCB, 0x0E, 0x4D, + 0xA0, 0xE3, 0x26, 0x65, 0x6F, 0x2C, 0xE9, 0xAA, + 0xFD, 0xBE, 0x7B, 0x38, 0x32, 0x71, 0xB4, 0xF7, + 0x99, 0xDA, 0x1F, 0x5C, 0x56, 0x15, 0xD0, 0x93, + 0xC4, 0x87, 0x42, 0x01, 0x0B, 0x48, 0x8D, 0xCE, + 0x23, 0x60, 0xA5, 0xE6, 0xEC, 0xAF, 0x6A, 0x29, + 0x7E, 0x3D, 0xF8, 0xBB, 0xB1, 0xF2, 0x37, 0x74, + 0x2E, 0x6D, 0xA8, 0xEB, 0xE1, 0xA2, 0x67, 0x24, + 0x73, 0x30, 0xF5, 0xB6, 0xBC, 0xFF, 0x3A, 0x79, + 0x94, 0xD7, 0x12, 0x51, 0x5B, 0x18, 0xDD, 0x9E, + 0xC9, 0x8A, 0x4F, 0x0C, 0x06, 0x45, 0x80, 0xC3, + 0x34, 0x77, 0xB2, 0xF1, 0xFB, 0xB8, 0x7D, 0x3E, + 0x69, 0x2A, 0xEF, 0xAC, 0xA6, 0xE5, 0x20, 0x63, + 0x8E, 0xCD, 0x08, 0x4B, 0x41, 0x02, 0xC7, 0x84, + 0xD3, 0x90, 0x55, 0x16, 0x1C, 0x5F, 0x9A, 0xD9, + 0x83, 0xC0, 0x05, 0x46, 0x4C, 0x0F, 0xCA, 0x89, + 0xDE, 0x9D, 0x58, 0x1B, 0x11, 0x52, 0x97, 0xD4, + 0x39, 0x7A, 0xBF, 0xFC, 0xF6, 0xB5, 0x70, 0x33, + 0x64, 0x27, 0xE2, 0xA1, 0xAB, 0xE8, 0x2D, 0x6E, + 0x00, 0x44, 0x88, 0xCC, 0xD3, 0x97, 0x5B, 0x1F, + 0x65, 0x21, 0xED, 0xA9, 0xB6, 0xF2, 0x3E, 0x7A, + 0xCA, 0x8E, 0x42, 0x06, 0x19, 0x5D, 0x91, 0xD5, + 0xAF, 0xEB, 0x27, 0x63, 0x7C, 0x38, 0xF4, 0xB0, + 0x57, 0x13, 0xDF, 0x9B, 0x84, 0xC0, 0x0C, 0x48, + 0x32, 0x76, 0xBA, 0xFE, 0xE1, 0xA5, 0x69, 0x2D, + 0x9D, 0xD9, 0x15, 0x51, 0x4E, 0x0A, 0xC6, 0x82, + 0xF8, 0xBC, 0x70, 0x34, 0x2B, 0x6F, 0xA3, 0xE7, + 0xAE, 0xEA, 0x26, 0x62, 0x7D, 0x39, 0xF5, 0xB1, + 0xCB, 0x8F, 0x43, 0x07, 0x18, 0x5C, 0x90, 0xD4, + 0x64, 0x20, 0xEC, 0xA8, 0xB7, 0xF3, 0x3F, 0x7B, + 0x01, 0x45, 0x89, 0xCD, 0xD2, 0x96, 0x5A, 0x1E, + 0xF9, 0xBD, 0x71, 0x35, 0x2A, 0x6E, 0xA2, 0xE6, + 0x9C, 0xD8, 0x14, 0x50, 0x4F, 0x0B, 0xC7, 0x83, + 0x33, 0x77, 0xBB, 0xFF, 0xE0, 0xA4, 0x68, 0x2C, + 0x56, 0x12, 0xDE, 0x9A, 0x85, 0xC1, 0x0D, 0x49, + 0x9F, 0xDB, 0x17, 0x53, 0x4C, 0x08, 0xC4, 0x80, + 0xFA, 0xBE, 0x72, 0x36, 0x29, 0x6D, 0xA1, 0xE5, + 0x55, 0x11, 0xDD, 0x99, 0x86, 0xC2, 0x0E, 0x4A, + 0x30, 0x74, 0xB8, 0xFC, 0xE3, 0xA7, 0x6B, 0x2F, + 0xC8, 0x8C, 0x40, 0x04, 0x1B, 0x5F, 0x93, 0xD7, + 0xAD, 0xE9, 0x25, 0x61, 0x7E, 0x3A, 0xF6, 0xB2, + 0x02, 0x46, 0x8A, 0xCE, 0xD1, 0x95, 0x59, 0x1D, + 0x67, 0x23, 0xEF, 0xAB, 0xB4, 0xF0, 0x3C, 0x78, + 0x31, 0x75, 0xB9, 0xFD, 0xE2, 0xA6, 0x6A, 0x2E, + 0x54, 0x10, 0xDC, 0x98, 0x87, 0xC3, 0x0F, 0x4B, + 0xFB, 0xBF, 0x73, 0x37, 0x28, 0x6C, 0xA0, 0xE4, + 0x9E, 0xDA, 0x16, 0x52, 0x4D, 0x09, 0xC5, 0x81, + 0x66, 0x22, 0xEE, 0xAA, 0xB5, 0xF1, 0x3D, 0x79, + 0x03, 0x47, 0x8B, 0xCF, 0xD0, 0x94, 0x58, 0x1C, + 0xAC, 0xE8, 0x24, 0x60, 0x7F, 0x3B, 0xF7, 0xB3, + 0xC9, 0x8D, 0x41, 0x05, 0x1A, 0x5E, 0x92, 0xD6, + 0x00, 0x45, 0x8A, 0xCF, 0xD7, 0x92, 0x5D, 0x18, + 0x6D, 0x28, 0xE7, 0xA2, 0xBA, 0xFF, 0x30, 0x75, + 0xDA, 0x9F, 0x50, 0x15, 0x0D, 0x48, 0x87, 0xC2, + 0xB7, 0xF2, 0x3D, 0x78, 0x60, 0x25, 0xEA, 0xAF, + 0x77, 0x32, 0xFD, 0xB8, 0xA0, 0xE5, 0x2A, 0x6F, + 0x1A, 0x5F, 0x90, 0xD5, 0xCD, 0x88, 0x47, 0x02, + 0xAD, 0xE8, 0x27, 0x62, 0x7A, 0x3F, 0xF0, 0xB5, + 0xC0, 0x85, 0x4A, 0x0F, 0x17, 0x52, 0x9D, 0xD8, + 0xEE, 0xAB, 0x64, 0x21, 0x39, 0x7C, 0xB3, 0xF6, + 0x83, 0xC6, 0x09, 0x4C, 0x54, 0x11, 0xDE, 0x9B, + 0x34, 0x71, 0xBE, 0xFB, 0xE3, 0xA6, 0x69, 0x2C, + 0x59, 0x1C, 0xD3, 0x96, 0x8E, 0xCB, 0x04, 0x41, + 0x99, 0xDC, 0x13, 0x56, 0x4E, 0x0B, 0xC4, 0x81, + 0xF4, 0xB1, 0x7E, 0x3B, 0x23, 0x66, 0xA9, 0xEC, + 0x43, 0x06, 0xC9, 0x8C, 0x94, 0xD1, 0x1E, 0x5B, + 0x2E, 0x6B, 0xA4, 0xE1, 0xF9, 0xBC, 0x73, 0x36, + 0x1F, 0x5A, 0x95, 0xD0, 0xC8, 0x8D, 0x42, 0x07, + 0x72, 0x37, 0xF8, 0xBD, 0xA5, 0xE0, 0x2F, 0x6A, + 0xC5, 0x80, 0x4F, 0x0A, 0x12, 0x57, 0x98, 0xDD, + 0xA8, 0xED, 0x22, 0x67, 0x7F, 0x3A, 0xF5, 0xB0, + 0x68, 0x2D, 0xE2, 0xA7, 0xBF, 0xFA, 0x35, 0x70, + 0x05, 0x40, 0x8F, 0xCA, 0xD2, 0x97, 0x58, 0x1D, + 0xB2, 0xF7, 0x38, 0x7D, 0x65, 0x20, 0xEF, 0xAA, + 0xDF, 0x9A, 0x55, 0x10, 0x08, 0x4D, 0x82, 0xC7, + 0xF1, 0xB4, 0x7B, 0x3E, 0x26, 0x63, 0xAC, 0xE9, + 0x9C, 0xD9, 0x16, 0x53, 0x4B, 0x0E, 0xC1, 0x84, + 0x2B, 0x6E, 0xA1, 0xE4, 0xFC, 0xB9, 0x76, 0x33, + 0x46, 0x03, 0xCC, 0x89, 0x91, 0xD4, 0x1B, 0x5E, + 0x86, 0xC3, 0x0C, 0x49, 0x51, 0x14, 0xDB, 0x9E, + 0xEB, 0xAE, 0x61, 0x24, 0x3C, 0x79, 0xB6, 0xF3, + 0x5C, 0x19, 0xD6, 0x93, 0x8B, 0xCE, 0x01, 0x44, + 0x31, 0x74, 0xBB, 0xFE, 0xE6, 0xA3, 0x6C, 0x29, + 0x00, 0x46, 0x8C, 0xCA, 0xDB, 0x9D, 0x57, 0x11, + 0x75, 0x33, 0xF9, 0xBF, 0xAE, 0xE8, 0x22, 0x64, + 0xEA, 0xAC, 0x66, 0x20, 0x31, 0x77, 0xBD, 0xFB, + 0x9F, 0xD9, 0x13, 0x55, 0x44, 0x02, 0xC8, 0x8E, + 0x17, 0x51, 0x9B, 0xDD, 0xCC, 0x8A, 0x40, 0x06, + 0x62, 0x24, 0xEE, 0xA8, 0xB9, 0xFF, 0x35, 0x73, + 0xFD, 0xBB, 0x71, 0x37, 0x26, 0x60, 0xAA, 0xEC, + 0x88, 0xCE, 0x04, 0x42, 0x53, 0x15, 0xDF, 0x99, + 0x2E, 0x68, 0xA2, 0xE4, 0xF5, 0xB3, 0x79, 0x3F, + 0x5B, 0x1D, 0xD7, 0x91, 0x80, 0xC6, 0x0C, 0x4A, + 0xC4, 0x82, 0x48, 0x0E, 0x1F, 0x59, 0x93, 0xD5, + 0xB1, 0xF7, 0x3D, 0x7B, 0x6A, 0x2C, 0xE6, 0xA0, + 0x39, 0x7F, 0xB5, 0xF3, 0xE2, 0xA4, 0x6E, 0x28, + 0x4C, 0x0A, 0xC0, 0x86, 0x97, 0xD1, 0x1B, 0x5D, + 0xD3, 0x95, 0x5F, 0x19, 0x08, 0x4E, 0x84, 0xC2, + 0xA6, 0xE0, 0x2A, 0x6C, 0x7D, 0x3B, 0xF1, 0xB7, + 0x5C, 0x1A, 0xD0, 0x96, 0x87, 0xC1, 0x0B, 0x4D, + 0x29, 0x6F, 0xA5, 0xE3, 0xF2, 0xB4, 0x7E, 0x38, + 0xB6, 0xF0, 0x3A, 0x7C, 0x6D, 0x2B, 0xE1, 0xA7, + 0xC3, 0x85, 0x4F, 0x09, 0x18, 0x5E, 0x94, 0xD2, + 0x4B, 0x0D, 0xC7, 0x81, 0x90, 0xD6, 0x1C, 0x5A, + 0x3E, 0x78, 0xB2, 0xF4, 0xE5, 0xA3, 0x69, 0x2F, + 0xA1, 0xE7, 0x2D, 0x6B, 0x7A, 0x3C, 0xF6, 0xB0, + 0xD4, 0x92, 0x58, 0x1E, 0x0F, 0x49, 0x83, 0xC5, + 0x72, 0x34, 0xFE, 0xB8, 0xA9, 0xEF, 0x25, 0x63, + 0x07, 0x41, 0x8B, 0xCD, 0xDC, 0x9A, 0x50, 0x16, + 0x98, 0xDE, 0x14, 0x52, 0x43, 0x05, 0xCF, 0x89, + 0xED, 0xAB, 0x61, 0x27, 0x36, 0x70, 0xBA, 0xFC, + 0x65, 0x23, 0xE9, 0xAF, 0xBE, 0xF8, 0x32, 0x74, + 0x10, 0x56, 0x9C, 0xDA, 0xCB, 0x8D, 0x47, 0x01, + 0x8F, 0xC9, 0x03, 0x45, 0x54, 0x12, 0xD8, 0x9E, + 0xFA, 0xBC, 0x76, 0x30, 0x21, 0x67, 0xAD, 0xEB, + 0x00, 0x47, 0x8E, 0xC9, 0xDF, 0x98, 0x51, 0x16, + 0x7D, 0x3A, 0xF3, 0xB4, 0xA2, 0xE5, 0x2C, 0x6B, + 0xFA, 0xBD, 0x74, 0x33, 0x25, 0x62, 0xAB, 0xEC, + 0x87, 0xC0, 0x09, 0x4E, 0x58, 0x1F, 0xD6, 0x91, + 0x37, 0x70, 0xB9, 0xFE, 0xE8, 0xAF, 0x66, 0x21, + 0x4A, 0x0D, 0xC4, 0x83, 0x95, 0xD2, 0x1B, 0x5C, + 0xCD, 0x8A, 0x43, 0x04, 0x12, 0x55, 0x9C, 0xDB, + 0xB0, 0xF7, 0x3E, 0x79, 0x6F, 0x28, 0xE1, 0xA6, + 0x6E, 0x29, 0xE0, 0xA7, 0xB1, 0xF6, 0x3F, 0x78, + 0x13, 0x54, 0x9D, 0xDA, 0xCC, 0x8B, 0x42, 0x05, + 0x94, 0xD3, 0x1A, 0x5D, 0x4B, 0x0C, 0xC5, 0x82, + 0xE9, 0xAE, 0x67, 0x20, 0x36, 0x71, 0xB8, 0xFF, + 0x59, 0x1E, 0xD7, 0x90, 0x86, 0xC1, 0x08, 0x4F, + 0x24, 0x63, 0xAA, 0xED, 0xFB, 0xBC, 0x75, 0x32, + 0xA3, 0xE4, 0x2D, 0x6A, 0x7C, 0x3B, 0xF2, 0xB5, + 0xDE, 0x99, 0x50, 0x17, 0x01, 0x46, 0x8F, 0xC8, + 0xDC, 0x9B, 0x52, 0x15, 0x03, 0x44, 0x8D, 0xCA, + 0xA1, 0xE6, 0x2F, 0x68, 0x7E, 0x39, 0xF0, 0xB7, + 0x26, 0x61, 0xA8, 0xEF, 0xF9, 0xBE, 0x77, 0x30, + 0x5B, 0x1C, 0xD5, 0x92, 0x84, 0xC3, 0x0A, 0x4D, + 0xEB, 0xAC, 0x65, 0x22, 0x34, 0x73, 0xBA, 0xFD, + 0x96, 0xD1, 0x18, 0x5F, 0x49, 0x0E, 0xC7, 0x80, + 0x11, 0x56, 0x9F, 0xD8, 0xCE, 0x89, 0x40, 0x07, + 0x6C, 0x2B, 0xE2, 0xA5, 0xB3, 0xF4, 0x3D, 0x7A, + 0xB2, 0xF5, 0x3C, 0x7B, 0x6D, 0x2A, 0xE3, 0xA4, + 0xCF, 0x88, 0x41, 0x06, 0x10, 0x57, 0x9E, 0xD9, + 0x48, 0x0F, 0xC6, 0x81, 0x97, 0xD0, 0x19, 0x5E, + 0x35, 0x72, 0xBB, 0xFC, 0xEA, 0xAD, 0x64, 0x23, + 0x85, 0xC2, 0x0B, 0x4C, 0x5A, 0x1D, 0xD4, 0x93, + 0xF8, 0xBF, 0x76, 0x31, 0x27, 0x60, 0xA9, 0xEE, + 0x7F, 0x38, 0xF1, 0xB6, 0xA0, 0xE7, 0x2E, 0x69, + 0x02, 0x45, 0x8C, 0xCB, 0xDD, 0x9A, 0x53, 0x14, + 0x00, 0x48, 0x90, 0xD8, 0xE3, 0xAB, 0x73, 0x3B, + 0x05, 0x4D, 0x95, 0xDD, 0xE6, 0xAE, 0x76, 0x3E, + 0x0A, 0x42, 0x9A, 0xD2, 0xE9, 0xA1, 0x79, 0x31, + 0x0F, 0x47, 0x9F, 0xD7, 0xEC, 0xA4, 0x7C, 0x34, + 0x14, 0x5C, 0x84, 0xCC, 0xF7, 0xBF, 0x67, 0x2F, + 0x11, 0x59, 0x81, 0xC9, 0xF2, 0xBA, 0x62, 0x2A, + 0x1E, 0x56, 0x8E, 0xC6, 0xFD, 0xB5, 0x6D, 0x25, + 0x1B, 0x53, 0x8B, 0xC3, 0xF8, 0xB0, 0x68, 0x20, + 0x28, 0x60, 0xB8, 0xF0, 0xCB, 0x83, 0x5B, 0x13, + 0x2D, 0x65, 0xBD, 0xF5, 0xCE, 0x86, 0x5E, 0x16, + 0x22, 0x6A, 0xB2, 0xFA, 0xC1, 0x89, 0x51, 0x19, + 0x27, 0x6F, 0xB7, 0xFF, 0xC4, 0x8C, 0x54, 0x1C, + 0x3C, 0x74, 0xAC, 0xE4, 0xDF, 0x97, 0x4F, 0x07, + 0x39, 0x71, 0xA9, 0xE1, 0xDA, 0x92, 0x4A, 0x02, + 0x36, 0x7E, 0xA6, 0xEE, 0xD5, 0x9D, 0x45, 0x0D, + 0x33, 0x7B, 0xA3, 0xEB, 0xD0, 0x98, 0x40, 0x08, + 0x50, 0x18, 0xC0, 0x88, 0xB3, 0xFB, 0x23, 0x6B, + 0x55, 0x1D, 0xC5, 0x8D, 0xB6, 0xFE, 0x26, 0x6E, + 0x5A, 0x12, 0xCA, 0x82, 0xB9, 0xF1, 0x29, 0x61, + 0x5F, 0x17, 0xCF, 0x87, 0xBC, 0xF4, 0x2C, 0x64, + 0x44, 0x0C, 0xD4, 0x9C, 0xA7, 0xEF, 0x37, 0x7F, + 0x41, 0x09, 0xD1, 0x99, 0xA2, 0xEA, 0x32, 0x7A, + 0x4E, 0x06, 0xDE, 0x96, 0xAD, 0xE5, 0x3D, 0x75, + 0x4B, 0x03, 0xDB, 0x93, 0xA8, 0xE0, 0x38, 0x70, + 0x78, 0x30, 0xE8, 0xA0, 0x9B, 0xD3, 0x0B, 0x43, + 0x7D, 0x35, 0xED, 0xA5, 0x9E, 0xD6, 0x0E, 0x46, + 0x72, 0x3A, 0xE2, 0xAA, 0x91, 0xD9, 0x01, 0x49, + 0x77, 0x3F, 0xE7, 0xAF, 0x94, 0xDC, 0x04, 0x4C, + 0x6C, 0x24, 0xFC, 0xB4, 0x8F, 0xC7, 0x1F, 0x57, + 0x69, 0x21, 0xF9, 0xB1, 0x8A, 0xC2, 0x1A, 0x52, + 0x66, 0x2E, 0xF6, 0xBE, 0x85, 0xCD, 0x15, 0x5D, + 0x63, 0x2B, 0xF3, 0xBB, 0x80, 0xC8, 0x10, 0x58, + 0x00, 0x49, 0x92, 0xDB, 0xE7, 0xAE, 0x75, 0x3C, + 0x0D, 0x44, 0x9F, 0xD6, 0xEA, 0xA3, 0x78, 0x31, + 0x1A, 0x53, 0x88, 0xC1, 0xFD, 0xB4, 0x6F, 0x26, + 0x17, 0x5E, 0x85, 0xCC, 0xF0, 0xB9, 0x62, 0x2B, + 0x34, 0x7D, 0xA6, 0xEF, 0xD3, 0x9A, 0x41, 0x08, + 0x39, 0x70, 0xAB, 0xE2, 0xDE, 0x97, 0x4C, 0x05, + 0x2E, 0x67, 0xBC, 0xF5, 0xC9, 0x80, 0x5B, 0x12, + 0x23, 0x6A, 0xB1, 0xF8, 0xC4, 0x8D, 0x56, 0x1F, + 0x68, 0x21, 0xFA, 0xB3, 0x8F, 0xC6, 0x1D, 0x54, + 0x65, 0x2C, 0xF7, 0xBE, 0x82, 0xCB, 0x10, 0x59, + 0x72, 0x3B, 0xE0, 0xA9, 0x95, 0xDC, 0x07, 0x4E, + 0x7F, 0x36, 0xED, 0xA4, 0x98, 0xD1, 0x0A, 0x43, + 0x5C, 0x15, 0xCE, 0x87, 0xBB, 0xF2, 0x29, 0x60, + 0x51, 0x18, 0xC3, 0x8A, 0xB6, 0xFF, 0x24, 0x6D, + 0x46, 0x0F, 0xD4, 0x9D, 0xA1, 0xE8, 0x33, 0x7A, + 0x4B, 0x02, 0xD9, 0x90, 0xAC, 0xE5, 0x3E, 0x77, + 0xD0, 0x99, 0x42, 0x0B, 0x37, 0x7E, 0xA5, 0xEC, + 0xDD, 0x94, 0x4F, 0x06, 0x3A, 0x73, 0xA8, 0xE1, + 0xCA, 0x83, 0x58, 0x11, 0x2D, 0x64, 0xBF, 0xF6, + 0xC7, 0x8E, 0x55, 0x1C, 0x20, 0x69, 0xB2, 0xFB, + 0xE4, 0xAD, 0x76, 0x3F, 0x03, 0x4A, 0x91, 0xD8, + 0xE9, 0xA0, 0x7B, 0x32, 0x0E, 0x47, 0x9C, 0xD5, + 0xFE, 0xB7, 0x6C, 0x25, 0x19, 0x50, 0x8B, 0xC2, + 0xF3, 0xBA, 0x61, 0x28, 0x14, 0x5D, 0x86, 0xCF, + 0xB8, 0xF1, 0x2A, 0x63, 0x5F, 0x16, 0xCD, 0x84, + 0xB5, 0xFC, 0x27, 0x6E, 0x52, 0x1B, 0xC0, 0x89, + 0xA2, 0xEB, 0x30, 0x79, 0x45, 0x0C, 0xD7, 0x9E, + 0xAF, 0xE6, 0x3D, 0x74, 0x48, 0x01, 0xDA, 0x93, + 0x8C, 0xC5, 0x1E, 0x57, 0x6B, 0x22, 0xF9, 0xB0, + 0x81, 0xC8, 0x13, 0x5A, 0x66, 0x2F, 0xF4, 0xBD, + 0x96, 0xDF, 0x04, 0x4D, 0x71, 0x38, 0xE3, 0xAA, + 0x9B, 0xD2, 0x09, 0x40, 0x7C, 0x35, 0xEE, 0xA7, + 0x00, 0x4A, 0x94, 0xDE, 0xEB, 0xA1, 0x7F, 0x35, + 0x15, 0x5F, 0x81, 0xCB, 0xFE, 0xB4, 0x6A, 0x20, + 0x2A, 0x60, 0xBE, 0xF4, 0xC1, 0x8B, 0x55, 0x1F, + 0x3F, 0x75, 0xAB, 0xE1, 0xD4, 0x9E, 0x40, 0x0A, + 0x54, 0x1E, 0xC0, 0x8A, 0xBF, 0xF5, 0x2B, 0x61, + 0x41, 0x0B, 0xD5, 0x9F, 0xAA, 0xE0, 0x3E, 0x74, + 0x7E, 0x34, 0xEA, 0xA0, 0x95, 0xDF, 0x01, 0x4B, + 0x6B, 0x21, 0xFF, 0xB5, 0x80, 0xCA, 0x14, 0x5E, + 0xA8, 0xE2, 0x3C, 0x76, 0x43, 0x09, 0xD7, 0x9D, + 0xBD, 0xF7, 0x29, 0x63, 0x56, 0x1C, 0xC2, 0x88, + 0x82, 0xC8, 0x16, 0x5C, 0x69, 0x23, 0xFD, 0xB7, + 0x97, 0xDD, 0x03, 0x49, 0x7C, 0x36, 0xE8, 0xA2, + 0xFC, 0xB6, 0x68, 0x22, 0x17, 0x5D, 0x83, 0xC9, + 0xE9, 0xA3, 0x7D, 0x37, 0x02, 0x48, 0x96, 0xDC, + 0xD6, 0x9C, 0x42, 0x08, 0x3D, 0x77, 0xA9, 0xE3, + 0xC3, 0x89, 0x57, 0x1D, 0x28, 0x62, 0xBC, 0xF6, + 0x93, 0xD9, 0x07, 0x4D, 0x78, 0x32, 0xEC, 0xA6, + 0x86, 0xCC, 0x12, 0x58, 0x6D, 0x27, 0xF9, 0xB3, + 0xB9, 0xF3, 0x2D, 0x67, 0x52, 0x18, 0xC6, 0x8C, + 0xAC, 0xE6, 0x38, 0x72, 0x47, 0x0D, 0xD3, 0x99, + 0xC7, 0x8D, 0x53, 0x19, 0x2C, 0x66, 0xB8, 0xF2, + 0xD2, 0x98, 0x46, 0x0C, 0x39, 0x73, 0xAD, 0xE7, + 0xED, 0xA7, 0x79, 0x33, 0x06, 0x4C, 0x92, 0xD8, + 0xF8, 0xB2, 0x6C, 0x26, 0x13, 0x59, 0x87, 0xCD, + 0x3B, 0x71, 0xAF, 0xE5, 0xD0, 0x9A, 0x44, 0x0E, + 0x2E, 0x64, 0xBA, 0xF0, 0xC5, 0x8F, 0x51, 0x1B, + 0x11, 0x5B, 0x85, 0xCF, 0xFA, 0xB0, 0x6E, 0x24, + 0x04, 0x4E, 0x90, 0xDA, 0xEF, 0xA5, 0x7B, 0x31, + 0x6F, 0x25, 0xFB, 0xB1, 0x84, 0xCE, 0x10, 0x5A, + 0x7A, 0x30, 0xEE, 0xA4, 0x91, 0xDB, 0x05, 0x4F, + 0x45, 0x0F, 0xD1, 0x9B, 0xAE, 0xE4, 0x3A, 0x70, + 0x50, 0x1A, 0xC4, 0x8E, 0xBB, 0xF1, 0x2F, 0x65, + 0x00, 0x4B, 0x96, 0xDD, 0xEF, 0xA4, 0x79, 0x32, + 0x1D, 0x56, 0x8B, 0xC0, 0xF2, 0xB9, 0x64, 0x2F, + 0x3A, 0x71, 0xAC, 0xE7, 0xD5, 0x9E, 0x43, 0x08, + 0x27, 0x6C, 0xB1, 0xFA, 0xC8, 0x83, 0x5E, 0x15, + 0x74, 0x3F, 0xE2, 0xA9, 0x9B, 0xD0, 0x0D, 0x46, + 0x69, 0x22, 0xFF, 0xB4, 0x86, 0xCD, 0x10, 0x5B, + 0x4E, 0x05, 0xD8, 0x93, 0xA1, 0xEA, 0x37, 0x7C, + 0x53, 0x18, 0xC5, 0x8E, 0xBC, 0xF7, 0x2A, 0x61, + 0xE8, 0xA3, 0x7E, 0x35, 0x07, 0x4C, 0x91, 0xDA, + 0xF5, 0xBE, 0x63, 0x28, 0x1A, 0x51, 0x8C, 0xC7, + 0xD2, 0x99, 0x44, 0x0F, 0x3D, 0x76, 0xAB, 0xE0, + 0xCF, 0x84, 0x59, 0x12, 0x20, 0x6B, 0xB6, 0xFD, + 0x9C, 0xD7, 0x0A, 0x41, 0x73, 0x38, 0xE5, 0xAE, + 0x81, 0xCA, 0x17, 0x5C, 0x6E, 0x25, 0xF8, 0xB3, + 0xA6, 0xED, 0x30, 0x7B, 0x49, 0x02, 0xDF, 0x94, + 0xBB, 0xF0, 0x2D, 0x66, 0x54, 0x1F, 0xC2, 0x89, + 0x13, 0x58, 0x85, 0xCE, 0xFC, 0xB7, 0x6A, 0x21, + 0x0E, 0x45, 0x98, 0xD3, 0xE1, 0xAA, 0x77, 0x3C, + 0x29, 0x62, 0xBF, 0xF4, 0xC6, 0x8D, 0x50, 0x1B, + 0x34, 0x7F, 0xA2, 0xE9, 0xDB, 0x90, 0x4D, 0x06, + 0x67, 0x2C, 0xF1, 0xBA, 0x88, 0xC3, 0x1E, 0x55, + 0x7A, 0x31, 0xEC, 0xA7, 0x95, 0xDE, 0x03, 0x48, + 0x5D, 0x16, 0xCB, 0x80, 0xB2, 0xF9, 0x24, 0x6F, + 0x40, 0x0B, 0xD6, 0x9D, 0xAF, 0xE4, 0x39, 0x72, + 0xFB, 0xB0, 0x6D, 0x26, 0x14, 0x5F, 0x82, 0xC9, + 0xE6, 0xAD, 0x70, 0x3B, 0x09, 0x42, 0x9F, 0xD4, + 0xC1, 0x8A, 0x57, 0x1C, 0x2E, 0x65, 0xB8, 0xF3, + 0xDC, 0x97, 0x4A, 0x01, 0x33, 0x78, 0xA5, 0xEE, + 0x8F, 0xC4, 0x19, 0x52, 0x60, 0x2B, 0xF6, 0xBD, + 0x92, 0xD9, 0x04, 0x4F, 0x7D, 0x36, 0xEB, 0xA0, + 0xB5, 0xFE, 0x23, 0x68, 0x5A, 0x11, 0xCC, 0x87, + 0xA8, 0xE3, 0x3E, 0x75, 0x47, 0x0C, 0xD1, 0x9A, + 0x00, 0x4C, 0x98, 0xD4, 0xF3, 0xBF, 0x6B, 0x27, + 0x25, 0x69, 0xBD, 0xF1, 0xD6, 0x9A, 0x4E, 0x02, + 0x4A, 0x06, 0xD2, 0x9E, 0xB9, 0xF5, 0x21, 0x6D, + 0x6F, 0x23, 0xF7, 0xBB, 0x9C, 0xD0, 0x04, 0x48, + 0x94, 0xD8, 0x0C, 0x40, 0x67, 0x2B, 0xFF, 0xB3, + 0xB1, 0xFD, 0x29, 0x65, 0x42, 0x0E, 0xDA, 0x96, + 0xDE, 0x92, 0x46, 0x0A, 0x2D, 0x61, 0xB5, 0xF9, + 0xFB, 0xB7, 0x63, 0x2F, 0x08, 0x44, 0x90, 0xDC, + 0xEB, 0xA7, 0x73, 0x3F, 0x18, 0x54, 0x80, 0xCC, + 0xCE, 0x82, 0x56, 0x1A, 0x3D, 0x71, 0xA5, 0xE9, + 0xA1, 0xED, 0x39, 0x75, 0x52, 0x1E, 0xCA, 0x86, + 0x84, 0xC8, 0x1C, 0x50, 0x77, 0x3B, 0xEF, 0xA3, + 0x7F, 0x33, 0xE7, 0xAB, 0x8C, 0xC0, 0x14, 0x58, + 0x5A, 0x16, 0xC2, 0x8E, 0xA9, 0xE5, 0x31, 0x7D, + 0x35, 0x79, 0xAD, 0xE1, 0xC6, 0x8A, 0x5E, 0x12, + 0x10, 0x5C, 0x88, 0xC4, 0xE3, 0xAF, 0x7B, 0x37, + 0x15, 0x59, 0x8D, 0xC1, 0xE6, 0xAA, 0x7E, 0x32, + 0x30, 0x7C, 0xA8, 0xE4, 0xC3, 0x8F, 0x5B, 0x17, + 0x5F, 0x13, 0xC7, 0x8B, 0xAC, 0xE0, 0x34, 0x78, + 0x7A, 0x36, 0xE2, 0xAE, 0x89, 0xC5, 0x11, 0x5D, + 0x81, 0xCD, 0x19, 0x55, 0x72, 0x3E, 0xEA, 0xA6, + 0xA4, 0xE8, 0x3C, 0x70, 0x57, 0x1B, 0xCF, 0x83, + 0xCB, 0x87, 0x53, 0x1F, 0x38, 0x74, 0xA0, 0xEC, + 0xEE, 0xA2, 0x76, 0x3A, 0x1D, 0x51, 0x85, 0xC9, + 0xFE, 0xB2, 0x66, 0x2A, 0x0D, 0x41, 0x95, 0xD9, + 0xDB, 0x97, 0x43, 0x0F, 0x28, 0x64, 0xB0, 0xFC, + 0xB4, 0xF8, 0x2C, 0x60, 0x47, 0x0B, 0xDF, 0x93, + 0x91, 0xDD, 0x09, 0x45, 0x62, 0x2E, 0xFA, 0xB6, + 0x6A, 0x26, 0xF2, 0xBE, 0x99, 0xD5, 0x01, 0x4D, + 0x4F, 0x03, 0xD7, 0x9B, 0xBC, 0xF0, 0x24, 0x68, + 0x20, 0x6C, 0xB8, 0xF4, 0xD3, 0x9F, 0x4B, 0x07, + 0x05, 0x49, 0x9D, 0xD1, 0xF6, 0xBA, 0x6E, 0x22, + 0x00, 0x4D, 0x9A, 0xD7, 0xF7, 0xBA, 0x6D, 0x20, + 0x2D, 0x60, 0xB7, 0xFA, 0xDA, 0x97, 0x40, 0x0D, + 0x5A, 0x17, 0xC0, 0x8D, 0xAD, 0xE0, 0x37, 0x7A, + 0x77, 0x3A, 0xED, 0xA0, 0x80, 0xCD, 0x1A, 0x57, + 0xB4, 0xF9, 0x2E, 0x63, 0x43, 0x0E, 0xD9, 0x94, + 0x99, 0xD4, 0x03, 0x4E, 0x6E, 0x23, 0xF4, 0xB9, + 0xEE, 0xA3, 0x74, 0x39, 0x19, 0x54, 0x83, 0xCE, + 0xC3, 0x8E, 0x59, 0x14, 0x34, 0x79, 0xAE, 0xE3, + 0xAB, 0xE6, 0x31, 0x7C, 0x5C, 0x11, 0xC6, 0x8B, + 0x86, 0xCB, 0x1C, 0x51, 0x71, 0x3C, 0xEB, 0xA6, + 0xF1, 0xBC, 0x6B, 0x26, 0x06, 0x4B, 0x9C, 0xD1, + 0xDC, 0x91, 0x46, 0x0B, 0x2B, 0x66, 0xB1, 0xFC, + 0x1F, 0x52, 0x85, 0xC8, 0xE8, 0xA5, 0x72, 0x3F, + 0x32, 0x7F, 0xA8, 0xE5, 0xC5, 0x88, 0x5F, 0x12, + 0x45, 0x08, 0xDF, 0x92, 0xB2, 0xFF, 0x28, 0x65, + 0x68, 0x25, 0xF2, 0xBF, 0x9F, 0xD2, 0x05, 0x48, + 0x95, 0xD8, 0x0F, 0x42, 0x62, 0x2F, 0xF8, 0xB5, + 0xB8, 0xF5, 0x22, 0x6F, 0x4F, 0x02, 0xD5, 0x98, + 0xCF, 0x82, 0x55, 0x18, 0x38, 0x75, 0xA2, 0xEF, + 0xE2, 0xAF, 0x78, 0x35, 0x15, 0x58, 0x8F, 0xC2, + 0x21, 0x6C, 0xBB, 0xF6, 0xD6, 0x9B, 0x4C, 0x01, + 0x0C, 0x41, 0x96, 0xDB, 0xFB, 0xB6, 0x61, 0x2C, + 0x7B, 0x36, 0xE1, 0xAC, 0x8C, 0xC1, 0x16, 0x5B, + 0x56, 0x1B, 0xCC, 0x81, 0xA1, 0xEC, 0x3B, 0x76, + 0x3E, 0x73, 0xA4, 0xE9, 0xC9, 0x84, 0x53, 0x1E, + 0x13, 0x5E, 0x89, 0xC4, 0xE4, 0xA9, 0x7E, 0x33, + 0x64, 0x29, 0xFE, 0xB3, 0x93, 0xDE, 0x09, 0x44, + 0x49, 0x04, 0xD3, 0x9E, 0xBE, 0xF3, 0x24, 0x69, + 0x8A, 0xC7, 0x10, 0x5D, 0x7D, 0x30, 0xE7, 0xAA, + 0xA7, 0xEA, 0x3D, 0x70, 0x50, 0x1D, 0xCA, 0x87, + 0xD0, 0x9D, 0x4A, 0x07, 0x27, 0x6A, 0xBD, 0xF0, + 0xFD, 0xB0, 0x67, 0x2A, 0x0A, 0x47, 0x90, 0xDD, + 0x00, 0x4E, 0x9C, 0xD2, 0xFB, 0xB5, 0x67, 0x29, + 0x35, 0x7B, 0xA9, 0xE7, 0xCE, 0x80, 0x52, 0x1C, + 0x6A, 0x24, 0xF6, 0xB8, 0x91, 0xDF, 0x0D, 0x43, + 0x5F, 0x11, 0xC3, 0x8D, 0xA4, 0xEA, 0x38, 0x76, + 0xD4, 0x9A, 0x48, 0x06, 0x2F, 0x61, 0xB3, 0xFD, + 0xE1, 0xAF, 0x7D, 0x33, 0x1A, 0x54, 0x86, 0xC8, + 0xBE, 0xF0, 0x22, 0x6C, 0x45, 0x0B, 0xD9, 0x97, + 0x8B, 0xC5, 0x17, 0x59, 0x70, 0x3E, 0xEC, 0xA2, + 0x6B, 0x25, 0xF7, 0xB9, 0x90, 0xDE, 0x0C, 0x42, + 0x5E, 0x10, 0xC2, 0x8C, 0xA5, 0xEB, 0x39, 0x77, + 0x01, 0x4F, 0x9D, 0xD3, 0xFA, 0xB4, 0x66, 0x28, + 0x34, 0x7A, 0xA8, 0xE6, 0xCF, 0x81, 0x53, 0x1D, + 0xBF, 0xF1, 0x23, 0x6D, 0x44, 0x0A, 0xD8, 0x96, + 0x8A, 0xC4, 0x16, 0x58, 0x71, 0x3F, 0xED, 0xA3, + 0xD5, 0x9B, 0x49, 0x07, 0x2E, 0x60, 0xB2, 0xFC, + 0xE0, 0xAE, 0x7C, 0x32, 0x1B, 0x55, 0x87, 0xC9, + 0xD6, 0x98, 0x4A, 0x04, 0x2D, 0x63, 0xB1, 0xFF, + 0xE3, 0xAD, 0x7F, 0x31, 0x18, 0x56, 0x84, 0xCA, + 0xBC, 0xF2, 0x20, 0x6E, 0x47, 0x09, 0xDB, 0x95, + 0x89, 0xC7, 0x15, 0x5B, 0x72, 0x3C, 0xEE, 0xA0, + 0x02, 0x4C, 0x9E, 0xD0, 0xF9, 0xB7, 0x65, 0x2B, + 0x37, 0x79, 0xAB, 0xE5, 0xCC, 0x82, 0x50, 0x1E, + 0x68, 0x26, 0xF4, 0xBA, 0x93, 0xDD, 0x0F, 0x41, + 0x5D, 0x13, 0xC1, 0x8F, 0xA6, 0xE8, 0x3A, 0x74, + 0xBD, 0xF3, 0x21, 0x6F, 0x46, 0x08, 0xDA, 0x94, + 0x88, 0xC6, 0x14, 0x5A, 0x73, 0x3D, 0xEF, 0xA1, + 0xD7, 0x99, 0x4B, 0x05, 0x2C, 0x62, 0xB0, 0xFE, + 0xE2, 0xAC, 0x7E, 0x30, 0x19, 0x57, 0x85, 0xCB, + 0x69, 0x27, 0xF5, 0xBB, 0x92, 0xDC, 0x0E, 0x40, + 0x5C, 0x12, 0xC0, 0x8E, 0xA7, 0xE9, 0x3B, 0x75, + 0x03, 0x4D, 0x9F, 0xD1, 0xF8, 0xB6, 0x64, 0x2A, + 0x36, 0x78, 0xAA, 0xE4, 0xCD, 0x83, 0x51, 0x1F, + 0x00, 0x4F, 0x9E, 0xD1, 0xFF, 0xB0, 0x61, 0x2E, + 0x3D, 0x72, 0xA3, 0xEC, 0xC2, 0x8D, 0x5C, 0x13, + 0x7A, 0x35, 0xE4, 0xAB, 0x85, 0xCA, 0x1B, 0x54, + 0x47, 0x08, 0xD9, 0x96, 0xB8, 0xF7, 0x26, 0x69, + 0xF4, 0xBB, 0x6A, 0x25, 0x0B, 0x44, 0x95, 0xDA, + 0xC9, 0x86, 0x57, 0x18, 0x36, 0x79, 0xA8, 0xE7, + 0x8E, 0xC1, 0x10, 0x5F, 0x71, 0x3E, 0xEF, 0xA0, + 0xB3, 0xFC, 0x2D, 0x62, 0x4C, 0x03, 0xD2, 0x9D, + 0x2B, 0x64, 0xB5, 0xFA, 0xD4, 0x9B, 0x4A, 0x05, + 0x16, 0x59, 0x88, 0xC7, 0xE9, 0xA6, 0x77, 0x38, + 0x51, 0x1E, 0xCF, 0x80, 0xAE, 0xE1, 0x30, 0x7F, + 0x6C, 0x23, 0xF2, 0xBD, 0x93, 0xDC, 0x0D, 0x42, + 0xDF, 0x90, 0x41, 0x0E, 0x20, 0x6F, 0xBE, 0xF1, + 0xE2, 0xAD, 0x7C, 0x33, 0x1D, 0x52, 0x83, 0xCC, + 0xA5, 0xEA, 0x3B, 0x74, 0x5A, 0x15, 0xC4, 0x8B, + 0x98, 0xD7, 0x06, 0x49, 0x67, 0x28, 0xF9, 0xB6, + 0x56, 0x19, 0xC8, 0x87, 0xA9, 0xE6, 0x37, 0x78, + 0x6B, 0x24, 0xF5, 0xBA, 0x94, 0xDB, 0x0A, 0x45, + 0x2C, 0x63, 0xB2, 0xFD, 0xD3, 0x9C, 0x4D, 0x02, + 0x11, 0x5E, 0x8F, 0xC0, 0xEE, 0xA1, 0x70, 0x3F, + 0xA2, 0xED, 0x3C, 0x73, 0x5D, 0x12, 0xC3, 0x8C, + 0x9F, 0xD0, 0x01, 0x4E, 0x60, 0x2F, 0xFE, 0xB1, + 0xD8, 0x97, 0x46, 0x09, 0x27, 0x68, 0xB9, 0xF6, + 0xE5, 0xAA, 0x7B, 0x34, 0x1A, 0x55, 0x84, 0xCB, + 0x7D, 0x32, 0xE3, 0xAC, 0x82, 0xCD, 0x1C, 0x53, + 0x40, 0x0F, 0xDE, 0x91, 0xBF, 0xF0, 0x21, 0x6E, + 0x07, 0x48, 0x99, 0xD6, 0xF8, 0xB7, 0x66, 0x29, + 0x3A, 0x75, 0xA4, 0xEB, 0xC5, 0x8A, 0x5B, 0x14, + 0x89, 0xC6, 0x17, 0x58, 0x76, 0x39, 0xE8, 0xA7, + 0xB4, 0xFB, 0x2A, 0x65, 0x4B, 0x04, 0xD5, 0x9A, + 0xF3, 0xBC, 0x6D, 0x22, 0x0C, 0x43, 0x92, 0xDD, + 0xCE, 0x81, 0x50, 0x1F, 0x31, 0x7E, 0xAF, 0xE0, + 0x00, 0x50, 0xA0, 0xF0, 0x83, 0xD3, 0x23, 0x73, + 0xC5, 0x95, 0x65, 0x35, 0x46, 0x16, 0xE6, 0xB6, + 0x49, 0x19, 0xE9, 0xB9, 0xCA, 0x9A, 0x6A, 0x3A, + 0x8C, 0xDC, 0x2C, 0x7C, 0x0F, 0x5F, 0xAF, 0xFF, + 0x92, 0xC2, 0x32, 0x62, 0x11, 0x41, 0xB1, 0xE1, + 0x57, 0x07, 0xF7, 0xA7, 0xD4, 0x84, 0x74, 0x24, + 0xDB, 0x8B, 0x7B, 0x2B, 0x58, 0x08, 0xF8, 0xA8, + 0x1E, 0x4E, 0xBE, 0xEE, 0x9D, 0xCD, 0x3D, 0x6D, + 0xE7, 0xB7, 0x47, 0x17, 0x64, 0x34, 0xC4, 0x94, + 0x22, 0x72, 0x82, 0xD2, 0xA1, 0xF1, 0x01, 0x51, + 0xAE, 0xFE, 0x0E, 0x5E, 0x2D, 0x7D, 0x8D, 0xDD, + 0x6B, 0x3B, 0xCB, 0x9B, 0xE8, 0xB8, 0x48, 0x18, + 0x75, 0x25, 0xD5, 0x85, 0xF6, 0xA6, 0x56, 0x06, + 0xB0, 0xE0, 0x10, 0x40, 0x33, 0x63, 0x93, 0xC3, + 0x3C, 0x6C, 0x9C, 0xCC, 0xBF, 0xEF, 0x1F, 0x4F, + 0xF9, 0xA9, 0x59, 0x09, 0x7A, 0x2A, 0xDA, 0x8A, + 0x0D, 0x5D, 0xAD, 0xFD, 0x8E, 0xDE, 0x2E, 0x7E, + 0xC8, 0x98, 0x68, 0x38, 0x4B, 0x1B, 0xEB, 0xBB, + 0x44, 0x14, 0xE4, 0xB4, 0xC7, 0x97, 0x67, 0x37, + 0x81, 0xD1, 0x21, 0x71, 0x02, 0x52, 0xA2, 0xF2, + 0x9F, 0xCF, 0x3F, 0x6F, 0x1C, 0x4C, 0xBC, 0xEC, + 0x5A, 0x0A, 0xFA, 0xAA, 0xD9, 0x89, 0x79, 0x29, + 0xD6, 0x86, 0x76, 0x26, 0x55, 0x05, 0xF5, 0xA5, + 0x13, 0x43, 0xB3, 0xE3, 0x90, 0xC0, 0x30, 0x60, + 0xEA, 0xBA, 0x4A, 0x1A, 0x69, 0x39, 0xC9, 0x99, + 0x2F, 0x7F, 0x8F, 0xDF, 0xAC, 0xFC, 0x0C, 0x5C, + 0xA3, 0xF3, 0x03, 0x53, 0x20, 0x70, 0x80, 0xD0, + 0x66, 0x36, 0xC6, 0x96, 0xE5, 0xB5, 0x45, 0x15, + 0x78, 0x28, 0xD8, 0x88, 0xFB, 0xAB, 0x5B, 0x0B, + 0xBD, 0xED, 0x1D, 0x4D, 0x3E, 0x6E, 0x9E, 0xCE, + 0x31, 0x61, 0x91, 0xC1, 0xB2, 0xE2, 0x12, 0x42, + 0xF4, 0xA4, 0x54, 0x04, 0x77, 0x27, 0xD7, 0x87, + 0x00, 0x51, 0xA2, 0xF3, 0x87, 0xD6, 0x25, 0x74, + 0xCD, 0x9C, 0x6F, 0x3E, 0x4A, 0x1B, 0xE8, 0xB9, + 0x59, 0x08, 0xFB, 0xAA, 0xDE, 0x8F, 0x7C, 0x2D, + 0x94, 0xC5, 0x36, 0x67, 0x13, 0x42, 0xB1, 0xE0, + 0xB2, 0xE3, 0x10, 0x41, 0x35, 0x64, 0x97, 0xC6, + 0x7F, 0x2E, 0xDD, 0x8C, 0xF8, 0xA9, 0x5A, 0x0B, + 0xEB, 0xBA, 0x49, 0x18, 0x6C, 0x3D, 0xCE, 0x9F, + 0x26, 0x77, 0x84, 0xD5, 0xA1, 0xF0, 0x03, 0x52, + 0xA7, 0xF6, 0x05, 0x54, 0x20, 0x71, 0x82, 0xD3, + 0x6A, 0x3B, 0xC8, 0x99, 0xED, 0xBC, 0x4F, 0x1E, + 0xFE, 0xAF, 0x5C, 0x0D, 0x79, 0x28, 0xDB, 0x8A, + 0x33, 0x62, 0x91, 0xC0, 0xB4, 0xE5, 0x16, 0x47, + 0x15, 0x44, 0xB7, 0xE6, 0x92, 0xC3, 0x30, 0x61, + 0xD8, 0x89, 0x7A, 0x2B, 0x5F, 0x0E, 0xFD, 0xAC, + 0x4C, 0x1D, 0xEE, 0xBF, 0xCB, 0x9A, 0x69, 0x38, + 0x81, 0xD0, 0x23, 0x72, 0x06, 0x57, 0xA4, 0xF5, + 0x8D, 0xDC, 0x2F, 0x7E, 0x0A, 0x5B, 0xA8, 0xF9, + 0x40, 0x11, 0xE2, 0xB3, 0xC7, 0x96, 0x65, 0x34, + 0xD4, 0x85, 0x76, 0x27, 0x53, 0x02, 0xF1, 0xA0, + 0x19, 0x48, 0xBB, 0xEA, 0x9E, 0xCF, 0x3C, 0x6D, + 0x3F, 0x6E, 0x9D, 0xCC, 0xB8, 0xE9, 0x1A, 0x4B, + 0xF2, 0xA3, 0x50, 0x01, 0x75, 0x24, 0xD7, 0x86, + 0x66, 0x37, 0xC4, 0x95, 0xE1, 0xB0, 0x43, 0x12, + 0xAB, 0xFA, 0x09, 0x58, 0x2C, 0x7D, 0x8E, 0xDF, + 0x2A, 0x7B, 0x88, 0xD9, 0xAD, 0xFC, 0x0F, 0x5E, + 0xE7, 0xB6, 0x45, 0x14, 0x60, 0x31, 0xC2, 0x93, + 0x73, 0x22, 0xD1, 0x80, 0xF4, 0xA5, 0x56, 0x07, + 0xBE, 0xEF, 0x1C, 0x4D, 0x39, 0x68, 0x9B, 0xCA, + 0x98, 0xC9, 0x3A, 0x6B, 0x1F, 0x4E, 0xBD, 0xEC, + 0x55, 0x04, 0xF7, 0xA6, 0xD2, 0x83, 0x70, 0x21, + 0xC1, 0x90, 0x63, 0x32, 0x46, 0x17, 0xE4, 0xB5, + 0x0C, 0x5D, 0xAE, 0xFF, 0x8B, 0xDA, 0x29, 0x78, + 0x00, 0x52, 0xA4, 0xF6, 0x8B, 0xD9, 0x2F, 0x7D, + 0xD5, 0x87, 0x71, 0x23, 0x5E, 0x0C, 0xFA, 0xA8, + 0x69, 0x3B, 0xCD, 0x9F, 0xE2, 0xB0, 0x46, 0x14, + 0xBC, 0xEE, 0x18, 0x4A, 0x37, 0x65, 0x93, 0xC1, + 0xD2, 0x80, 0x76, 0x24, 0x59, 0x0B, 0xFD, 0xAF, + 0x07, 0x55, 0xA3, 0xF1, 0x8C, 0xDE, 0x28, 0x7A, + 0xBB, 0xE9, 0x1F, 0x4D, 0x30, 0x62, 0x94, 0xC6, + 0x6E, 0x3C, 0xCA, 0x98, 0xE5, 0xB7, 0x41, 0x13, + 0x67, 0x35, 0xC3, 0x91, 0xEC, 0xBE, 0x48, 0x1A, + 0xB2, 0xE0, 0x16, 0x44, 0x39, 0x6B, 0x9D, 0xCF, + 0x0E, 0x5C, 0xAA, 0xF8, 0x85, 0xD7, 0x21, 0x73, + 0xDB, 0x89, 0x7F, 0x2D, 0x50, 0x02, 0xF4, 0xA6, + 0xB5, 0xE7, 0x11, 0x43, 0x3E, 0x6C, 0x9A, 0xC8, + 0x60, 0x32, 0xC4, 0x96, 0xEB, 0xB9, 0x4F, 0x1D, + 0xDC, 0x8E, 0x78, 0x2A, 0x57, 0x05, 0xF3, 0xA1, + 0x09, 0x5B, 0xAD, 0xFF, 0x82, 0xD0, 0x26, 0x74, + 0xCE, 0x9C, 0x6A, 0x38, 0x45, 0x17, 0xE1, 0xB3, + 0x1B, 0x49, 0xBF, 0xED, 0x90, 0xC2, 0x34, 0x66, + 0xA7, 0xF5, 0x03, 0x51, 0x2C, 0x7E, 0x88, 0xDA, + 0x72, 0x20, 0xD6, 0x84, 0xF9, 0xAB, 0x5D, 0x0F, + 0x1C, 0x4E, 0xB8, 0xEA, 0x97, 0xC5, 0x33, 0x61, + 0xC9, 0x9B, 0x6D, 0x3F, 0x42, 0x10, 0xE6, 0xB4, + 0x75, 0x27, 0xD1, 0x83, 0xFE, 0xAC, 0x5A, 0x08, + 0xA0, 0xF2, 0x04, 0x56, 0x2B, 0x79, 0x8F, 0xDD, + 0xA9, 0xFB, 0x0D, 0x5F, 0x22, 0x70, 0x86, 0xD4, + 0x7C, 0x2E, 0xD8, 0x8A, 0xF7, 0xA5, 0x53, 0x01, + 0xC0, 0x92, 0x64, 0x36, 0x4B, 0x19, 0xEF, 0xBD, + 0x15, 0x47, 0xB1, 0xE3, 0x9E, 0xCC, 0x3A, 0x68, + 0x7B, 0x29, 0xDF, 0x8D, 0xF0, 0xA2, 0x54, 0x06, + 0xAE, 0xFC, 0x0A, 0x58, 0x25, 0x77, 0x81, 0xD3, + 0x12, 0x40, 0xB6, 0xE4, 0x99, 0xCB, 0x3D, 0x6F, + 0xC7, 0x95, 0x63, 0x31, 0x4C, 0x1E, 0xE8, 0xBA, + 0x00, 0x53, 0xA6, 0xF5, 0x8F, 0xDC, 0x29, 0x7A, + 0xDD, 0x8E, 0x7B, 0x28, 0x52, 0x01, 0xF4, 0xA7, + 0x79, 0x2A, 0xDF, 0x8C, 0xF6, 0xA5, 0x50, 0x03, + 0xA4, 0xF7, 0x02, 0x51, 0x2B, 0x78, 0x8D, 0xDE, + 0xF2, 0xA1, 0x54, 0x07, 0x7D, 0x2E, 0xDB, 0x88, + 0x2F, 0x7C, 0x89, 0xDA, 0xA0, 0xF3, 0x06, 0x55, + 0x8B, 0xD8, 0x2D, 0x7E, 0x04, 0x57, 0xA2, 0xF1, + 0x56, 0x05, 0xF0, 0xA3, 0xD9, 0x8A, 0x7F, 0x2C, + 0x27, 0x74, 0x81, 0xD2, 0xA8, 0xFB, 0x0E, 0x5D, + 0xFA, 0xA9, 0x5C, 0x0F, 0x75, 0x26, 0xD3, 0x80, + 0x5E, 0x0D, 0xF8, 0xAB, 0xD1, 0x82, 0x77, 0x24, + 0x83, 0xD0, 0x25, 0x76, 0x0C, 0x5F, 0xAA, 0xF9, + 0xD5, 0x86, 0x73, 0x20, 0x5A, 0x09, 0xFC, 0xAF, + 0x08, 0x5B, 0xAE, 0xFD, 0x87, 0xD4, 0x21, 0x72, + 0xAC, 0xFF, 0x0A, 0x59, 0x23, 0x70, 0x85, 0xD6, + 0x71, 0x22, 0xD7, 0x84, 0xFE, 0xAD, 0x58, 0x0B, + 0x4E, 0x1D, 0xE8, 0xBB, 0xC1, 0x92, 0x67, 0x34, + 0x93, 0xC0, 0x35, 0x66, 0x1C, 0x4F, 0xBA, 0xE9, + 0x37, 0x64, 0x91, 0xC2, 0xB8, 0xEB, 0x1E, 0x4D, + 0xEA, 0xB9, 0x4C, 0x1F, 0x65, 0x36, 0xC3, 0x90, + 0xBC, 0xEF, 0x1A, 0x49, 0x33, 0x60, 0x95, 0xC6, + 0x61, 0x32, 0xC7, 0x94, 0xEE, 0xBD, 0x48, 0x1B, + 0xC5, 0x96, 0x63, 0x30, 0x4A, 0x19, 0xEC, 0xBF, + 0x18, 0x4B, 0xBE, 0xED, 0x97, 0xC4, 0x31, 0x62, + 0x69, 0x3A, 0xCF, 0x9C, 0xE6, 0xB5, 0x40, 0x13, + 0xB4, 0xE7, 0x12, 0x41, 0x3B, 0x68, 0x9D, 0xCE, + 0x10, 0x43, 0xB6, 0xE5, 0x9F, 0xCC, 0x39, 0x6A, + 0xCD, 0x9E, 0x6B, 0x38, 0x42, 0x11, 0xE4, 0xB7, + 0x9B, 0xC8, 0x3D, 0x6E, 0x14, 0x47, 0xB2, 0xE1, + 0x46, 0x15, 0xE0, 0xB3, 0xC9, 0x9A, 0x6F, 0x3C, + 0xE2, 0xB1, 0x44, 0x17, 0x6D, 0x3E, 0xCB, 0x98, + 0x3F, 0x6C, 0x99, 0xCA, 0xB0, 0xE3, 0x16, 0x45, + 0x00, 0x54, 0xA8, 0xFC, 0x93, 0xC7, 0x3B, 0x6F, + 0xE5, 0xB1, 0x4D, 0x19, 0x76, 0x22, 0xDE, 0x8A, + 0x09, 0x5D, 0xA1, 0xF5, 0x9A, 0xCE, 0x32, 0x66, + 0xEC, 0xB8, 0x44, 0x10, 0x7F, 0x2B, 0xD7, 0x83, + 0x12, 0x46, 0xBA, 0xEE, 0x81, 0xD5, 0x29, 0x7D, + 0xF7, 0xA3, 0x5F, 0x0B, 0x64, 0x30, 0xCC, 0x98, + 0x1B, 0x4F, 0xB3, 0xE7, 0x88, 0xDC, 0x20, 0x74, + 0xFE, 0xAA, 0x56, 0x02, 0x6D, 0x39, 0xC5, 0x91, + 0x24, 0x70, 0x8C, 0xD8, 0xB7, 0xE3, 0x1F, 0x4B, + 0xC1, 0x95, 0x69, 0x3D, 0x52, 0x06, 0xFA, 0xAE, + 0x2D, 0x79, 0x85, 0xD1, 0xBE, 0xEA, 0x16, 0x42, + 0xC8, 0x9C, 0x60, 0x34, 0x5B, 0x0F, 0xF3, 0xA7, + 0x36, 0x62, 0x9E, 0xCA, 0xA5, 0xF1, 0x0D, 0x59, + 0xD3, 0x87, 0x7B, 0x2F, 0x40, 0x14, 0xE8, 0xBC, + 0x3F, 0x6B, 0x97, 0xC3, 0xAC, 0xF8, 0x04, 0x50, + 0xDA, 0x8E, 0x72, 0x26, 0x49, 0x1D, 0xE1, 0xB5, + 0x48, 0x1C, 0xE0, 0xB4, 0xDB, 0x8F, 0x73, 0x27, + 0xAD, 0xF9, 0x05, 0x51, 0x3E, 0x6A, 0x96, 0xC2, + 0x41, 0x15, 0xE9, 0xBD, 0xD2, 0x86, 0x7A, 0x2E, + 0xA4, 0xF0, 0x0C, 0x58, 0x37, 0x63, 0x9F, 0xCB, + 0x5A, 0x0E, 0xF2, 0xA6, 0xC9, 0x9D, 0x61, 0x35, + 0xBF, 0xEB, 0x17, 0x43, 0x2C, 0x78, 0x84, 0xD0, + 0x53, 0x07, 0xFB, 0xAF, 0xC0, 0x94, 0x68, 0x3C, + 0xB6, 0xE2, 0x1E, 0x4A, 0x25, 0x71, 0x8D, 0xD9, + 0x6C, 0x38, 0xC4, 0x90, 0xFF, 0xAB, 0x57, 0x03, + 0x89, 0xDD, 0x21, 0x75, 0x1A, 0x4E, 0xB2, 0xE6, + 0x65, 0x31, 0xCD, 0x99, 0xF6, 0xA2, 0x5E, 0x0A, + 0x80, 0xD4, 0x28, 0x7C, 0x13, 0x47, 0xBB, 0xEF, + 0x7E, 0x2A, 0xD6, 0x82, 0xED, 0xB9, 0x45, 0x11, + 0x9B, 0xCF, 0x33, 0x67, 0x08, 0x5C, 0xA0, 0xF4, + 0x77, 0x23, 0xDF, 0x8B, 0xE4, 0xB0, 0x4C, 0x18, + 0x92, 0xC6, 0x3A, 0x6E, 0x01, 0x55, 0xA9, 0xFD, + 0x00, 0x55, 0xAA, 0xFF, 0x97, 0xC2, 0x3D, 0x68, + 0xED, 0xB8, 0x47, 0x12, 0x7A, 0x2F, 0xD0, 0x85, + 0x19, 0x4C, 0xB3, 0xE6, 0x8E, 0xDB, 0x24, 0x71, + 0xF4, 0xA1, 0x5E, 0x0B, 0x63, 0x36, 0xC9, 0x9C, + 0x32, 0x67, 0x98, 0xCD, 0xA5, 0xF0, 0x0F, 0x5A, + 0xDF, 0x8A, 0x75, 0x20, 0x48, 0x1D, 0xE2, 0xB7, + 0x2B, 0x7E, 0x81, 0xD4, 0xBC, 0xE9, 0x16, 0x43, + 0xC6, 0x93, 0x6C, 0x39, 0x51, 0x04, 0xFB, 0xAE, + 0x64, 0x31, 0xCE, 0x9B, 0xF3, 0xA6, 0x59, 0x0C, + 0x89, 0xDC, 0x23, 0x76, 0x1E, 0x4B, 0xB4, 0xE1, + 0x7D, 0x28, 0xD7, 0x82, 0xEA, 0xBF, 0x40, 0x15, + 0x90, 0xC5, 0x3A, 0x6F, 0x07, 0x52, 0xAD, 0xF8, + 0x56, 0x03, 0xFC, 0xA9, 0xC1, 0x94, 0x6B, 0x3E, + 0xBB, 0xEE, 0x11, 0x44, 0x2C, 0x79, 0x86, 0xD3, + 0x4F, 0x1A, 0xE5, 0xB0, 0xD8, 0x8D, 0x72, 0x27, + 0xA2, 0xF7, 0x08, 0x5D, 0x35, 0x60, 0x9F, 0xCA, + 0xC8, 0x9D, 0x62, 0x37, 0x5F, 0x0A, 0xF5, 0xA0, + 0x25, 0x70, 0x8F, 0xDA, 0xB2, 0xE7, 0x18, 0x4D, + 0xD1, 0x84, 0x7B, 0x2E, 0x46, 0x13, 0xEC, 0xB9, + 0x3C, 0x69, 0x96, 0xC3, 0xAB, 0xFE, 0x01, 0x54, + 0xFA, 0xAF, 0x50, 0x05, 0x6D, 0x38, 0xC7, 0x92, + 0x17, 0x42, 0xBD, 0xE8, 0x80, 0xD5, 0x2A, 0x7F, + 0xE3, 0xB6, 0x49, 0x1C, 0x74, 0x21, 0xDE, 0x8B, + 0x0E, 0x5B, 0xA4, 0xF1, 0x99, 0xCC, 0x33, 0x66, + 0xAC, 0xF9, 0x06, 0x53, 0x3B, 0x6E, 0x91, 0xC4, + 0x41, 0x14, 0xEB, 0xBE, 0xD6, 0x83, 0x7C, 0x29, + 0xB5, 0xE0, 0x1F, 0x4A, 0x22, 0x77, 0x88, 0xDD, + 0x58, 0x0D, 0xF2, 0xA7, 0xCF, 0x9A, 0x65, 0x30, + 0x9E, 0xCB, 0x34, 0x61, 0x09, 0x5C, 0xA3, 0xF6, + 0x73, 0x26, 0xD9, 0x8C, 0xE4, 0xB1, 0x4E, 0x1B, + 0x87, 0xD2, 0x2D, 0x78, 0x10, 0x45, 0xBA, 0xEF, + 0x6A, 0x3F, 0xC0, 0x95, 0xFD, 0xA8, 0x57, 0x02, + 0x00, 0x56, 0xAC, 0xFA, 0x9B, 0xCD, 0x37, 0x61, + 0xF5, 0xA3, 0x59, 0x0F, 0x6E, 0x38, 0xC2, 0x94, + 0x29, 0x7F, 0x85, 0xD3, 0xB2, 0xE4, 0x1E, 0x48, + 0xDC, 0x8A, 0x70, 0x26, 0x47, 0x11, 0xEB, 0xBD, + 0x52, 0x04, 0xFE, 0xA8, 0xC9, 0x9F, 0x65, 0x33, + 0xA7, 0xF1, 0x0B, 0x5D, 0x3C, 0x6A, 0x90, 0xC6, + 0x7B, 0x2D, 0xD7, 0x81, 0xE0, 0xB6, 0x4C, 0x1A, + 0x8E, 0xD8, 0x22, 0x74, 0x15, 0x43, 0xB9, 0xEF, + 0xA4, 0xF2, 0x08, 0x5E, 0x3F, 0x69, 0x93, 0xC5, + 0x51, 0x07, 0xFD, 0xAB, 0xCA, 0x9C, 0x66, 0x30, + 0x8D, 0xDB, 0x21, 0x77, 0x16, 0x40, 0xBA, 0xEC, + 0x78, 0x2E, 0xD4, 0x82, 0xE3, 0xB5, 0x4F, 0x19, + 0xF6, 0xA0, 0x5A, 0x0C, 0x6D, 0x3B, 0xC1, 0x97, + 0x03, 0x55, 0xAF, 0xF9, 0x98, 0xCE, 0x34, 0x62, + 0xDF, 0x89, 0x73, 0x25, 0x44, 0x12, 0xE8, 0xBE, + 0x2A, 0x7C, 0x86, 0xD0, 0xB1, 0xE7, 0x1D, 0x4B, + 0x8B, 0xDD, 0x27, 0x71, 0x10, 0x46, 0xBC, 0xEA, + 0x7E, 0x28, 0xD2, 0x84, 0xE5, 0xB3, 0x49, 0x1F, + 0xA2, 0xF4, 0x0E, 0x58, 0x39, 0x6F, 0x95, 0xC3, + 0x57, 0x01, 0xFB, 0xAD, 0xCC, 0x9A, 0x60, 0x36, + 0xD9, 0x8F, 0x75, 0x23, 0x42, 0x14, 0xEE, 0xB8, + 0x2C, 0x7A, 0x80, 0xD6, 0xB7, 0xE1, 0x1B, 0x4D, + 0xF0, 0xA6, 0x5C, 0x0A, 0x6B, 0x3D, 0xC7, 0x91, + 0x05, 0x53, 0xA9, 0xFF, 0x9E, 0xC8, 0x32, 0x64, + 0x2F, 0x79, 0x83, 0xD5, 0xB4, 0xE2, 0x18, 0x4E, + 0xDA, 0x8C, 0x76, 0x20, 0x41, 0x17, 0xED, 0xBB, + 0x06, 0x50, 0xAA, 0xFC, 0x9D, 0xCB, 0x31, 0x67, + 0xF3, 0xA5, 0x5F, 0x09, 0x68, 0x3E, 0xC4, 0x92, + 0x7D, 0x2B, 0xD1, 0x87, 0xE6, 0xB0, 0x4A, 0x1C, + 0x88, 0xDE, 0x24, 0x72, 0x13, 0x45, 0xBF, 0xE9, + 0x54, 0x02, 0xF8, 0xAE, 0xCF, 0x99, 0x63, 0x35, + 0xA1, 0xF7, 0x0D, 0x5B, 0x3A, 0x6C, 0x96, 0xC0, + 0x00, 0x57, 0xAE, 0xF9, 0x9F, 0xC8, 0x31, 0x66, + 0xFD, 0xAA, 0x53, 0x04, 0x62, 0x35, 0xCC, 0x9B, + 0x39, 0x6E, 0x97, 0xC0, 0xA6, 0xF1, 0x08, 0x5F, + 0xC4, 0x93, 0x6A, 0x3D, 0x5B, 0x0C, 0xF5, 0xA2, + 0x72, 0x25, 0xDC, 0x8B, 0xED, 0xBA, 0x43, 0x14, + 0x8F, 0xD8, 0x21, 0x76, 0x10, 0x47, 0xBE, 0xE9, + 0x4B, 0x1C, 0xE5, 0xB2, 0xD4, 0x83, 0x7A, 0x2D, + 0xB6, 0xE1, 0x18, 0x4F, 0x29, 0x7E, 0x87, 0xD0, + 0xE4, 0xB3, 0x4A, 0x1D, 0x7B, 0x2C, 0xD5, 0x82, + 0x19, 0x4E, 0xB7, 0xE0, 0x86, 0xD1, 0x28, 0x7F, + 0xDD, 0x8A, 0x73, 0x24, 0x42, 0x15, 0xEC, 0xBB, + 0x20, 0x77, 0x8E, 0xD9, 0xBF, 0xE8, 0x11, 0x46, + 0x96, 0xC1, 0x38, 0x6F, 0x09, 0x5E, 0xA7, 0xF0, + 0x6B, 0x3C, 0xC5, 0x92, 0xF4, 0xA3, 0x5A, 0x0D, + 0xAF, 0xF8, 0x01, 0x56, 0x30, 0x67, 0x9E, 0xC9, + 0x52, 0x05, 0xFC, 0xAB, 0xCD, 0x9A, 0x63, 0x34, + 0x0B, 0x5C, 0xA5, 0xF2, 0x94, 0xC3, 0x3A, 0x6D, + 0xF6, 0xA1, 0x58, 0x0F, 0x69, 0x3E, 0xC7, 0x90, + 0x32, 0x65, 0x9C, 0xCB, 0xAD, 0xFA, 0x03, 0x54, + 0xCF, 0x98, 0x61, 0x36, 0x50, 0x07, 0xFE, 0xA9, + 0x79, 0x2E, 0xD7, 0x80, 0xE6, 0xB1, 0x48, 0x1F, + 0x84, 0xD3, 0x2A, 0x7D, 0x1B, 0x4C, 0xB5, 0xE2, + 0x40, 0x17, 0xEE, 0xB9, 0xDF, 0x88, 0x71, 0x26, + 0xBD, 0xEA, 0x13, 0x44, 0x22, 0x75, 0x8C, 0xDB, + 0xEF, 0xB8, 0x41, 0x16, 0x70, 0x27, 0xDE, 0x89, + 0x12, 0x45, 0xBC, 0xEB, 0x8D, 0xDA, 0x23, 0x74, + 0xD6, 0x81, 0x78, 0x2F, 0x49, 0x1E, 0xE7, 0xB0, + 0x2B, 0x7C, 0x85, 0xD2, 0xB4, 0xE3, 0x1A, 0x4D, + 0x9D, 0xCA, 0x33, 0x64, 0x02, 0x55, 0xAC, 0xFB, + 0x60, 0x37, 0xCE, 0x99, 0xFF, 0xA8, 0x51, 0x06, + 0xA4, 0xF3, 0x0A, 0x5D, 0x3B, 0x6C, 0x95, 0xC2, + 0x59, 0x0E, 0xF7, 0xA0, 0xC6, 0x91, 0x68, 0x3F, + 0x00, 0x58, 0xB0, 0xE8, 0xA3, 0xFB, 0x13, 0x4B, + 0x85, 0xDD, 0x35, 0x6D, 0x26, 0x7E, 0x96, 0xCE, + 0xC9, 0x91, 0x79, 0x21, 0x6A, 0x32, 0xDA, 0x82, + 0x4C, 0x14, 0xFC, 0xA4, 0xEF, 0xB7, 0x5F, 0x07, + 0x51, 0x09, 0xE1, 0xB9, 0xF2, 0xAA, 0x42, 0x1A, + 0xD4, 0x8C, 0x64, 0x3C, 0x77, 0x2F, 0xC7, 0x9F, + 0x98, 0xC0, 0x28, 0x70, 0x3B, 0x63, 0x8B, 0xD3, + 0x1D, 0x45, 0xAD, 0xF5, 0xBE, 0xE6, 0x0E, 0x56, + 0xA2, 0xFA, 0x12, 0x4A, 0x01, 0x59, 0xB1, 0xE9, + 0x27, 0x7F, 0x97, 0xCF, 0x84, 0xDC, 0x34, 0x6C, + 0x6B, 0x33, 0xDB, 0x83, 0xC8, 0x90, 0x78, 0x20, + 0xEE, 0xB6, 0x5E, 0x06, 0x4D, 0x15, 0xFD, 0xA5, + 0xF3, 0xAB, 0x43, 0x1B, 0x50, 0x08, 0xE0, 0xB8, + 0x76, 0x2E, 0xC6, 0x9E, 0xD5, 0x8D, 0x65, 0x3D, + 0x3A, 0x62, 0x8A, 0xD2, 0x99, 0xC1, 0x29, 0x71, + 0xBF, 0xE7, 0x0F, 0x57, 0x1C, 0x44, 0xAC, 0xF4, + 0x87, 0xDF, 0x37, 0x6F, 0x24, 0x7C, 0x94, 0xCC, + 0x02, 0x5A, 0xB2, 0xEA, 0xA1, 0xF9, 0x11, 0x49, + 0x4E, 0x16, 0xFE, 0xA6, 0xED, 0xB5, 0x5D, 0x05, + 0xCB, 0x93, 0x7B, 0x23, 0x68, 0x30, 0xD8, 0x80, + 0xD6, 0x8E, 0x66, 0x3E, 0x75, 0x2D, 0xC5, 0x9D, + 0x53, 0x0B, 0xE3, 0xBB, 0xF0, 0xA8, 0x40, 0x18, + 0x1F, 0x47, 0xAF, 0xF7, 0xBC, 0xE4, 0x0C, 0x54, + 0x9A, 0xC2, 0x2A, 0x72, 0x39, 0x61, 0x89, 0xD1, + 0x25, 0x7D, 0x95, 0xCD, 0x86, 0xDE, 0x36, 0x6E, + 0xA0, 0xF8, 0x10, 0x48, 0x03, 0x5B, 0xB3, 0xEB, + 0xEC, 0xB4, 0x5C, 0x04, 0x4F, 0x17, 0xFF, 0xA7, + 0x69, 0x31, 0xD9, 0x81, 0xCA, 0x92, 0x7A, 0x22, + 0x74, 0x2C, 0xC4, 0x9C, 0xD7, 0x8F, 0x67, 0x3F, + 0xF1, 0xA9, 0x41, 0x19, 0x52, 0x0A, 0xE2, 0xBA, + 0xBD, 0xE5, 0x0D, 0x55, 0x1E, 0x46, 0xAE, 0xF6, + 0x38, 0x60, 0x88, 0xD0, 0x9B, 0xC3, 0x2B, 0x73, + 0x00, 0x59, 0xB2, 0xEB, 0xA7, 0xFE, 0x15, 0x4C, + 0x8D, 0xD4, 0x3F, 0x66, 0x2A, 0x73, 0x98, 0xC1, + 0xD9, 0x80, 0x6B, 0x32, 0x7E, 0x27, 0xCC, 0x95, + 0x54, 0x0D, 0xE6, 0xBF, 0xF3, 0xAA, 0x41, 0x18, + 0x71, 0x28, 0xC3, 0x9A, 0xD6, 0x8F, 0x64, 0x3D, + 0xFC, 0xA5, 0x4E, 0x17, 0x5B, 0x02, 0xE9, 0xB0, + 0xA8, 0xF1, 0x1A, 0x43, 0x0F, 0x56, 0xBD, 0xE4, + 0x25, 0x7C, 0x97, 0xCE, 0x82, 0xDB, 0x30, 0x69, + 0xE2, 0xBB, 0x50, 0x09, 0x45, 0x1C, 0xF7, 0xAE, + 0x6F, 0x36, 0xDD, 0x84, 0xC8, 0x91, 0x7A, 0x23, + 0x3B, 0x62, 0x89, 0xD0, 0x9C, 0xC5, 0x2E, 0x77, + 0xB6, 0xEF, 0x04, 0x5D, 0x11, 0x48, 0xA3, 0xFA, + 0x93, 0xCA, 0x21, 0x78, 0x34, 0x6D, 0x86, 0xDF, + 0x1E, 0x47, 0xAC, 0xF5, 0xB9, 0xE0, 0x0B, 0x52, + 0x4A, 0x13, 0xF8, 0xA1, 0xED, 0xB4, 0x5F, 0x06, + 0xC7, 0x9E, 0x75, 0x2C, 0x60, 0x39, 0xD2, 0x8B, + 0x07, 0x5E, 0xB5, 0xEC, 0xA0, 0xF9, 0x12, 0x4B, + 0x8A, 0xD3, 0x38, 0x61, 0x2D, 0x74, 0x9F, 0xC6, + 0xDE, 0x87, 0x6C, 0x35, 0x79, 0x20, 0xCB, 0x92, + 0x53, 0x0A, 0xE1, 0xB8, 0xF4, 0xAD, 0x46, 0x1F, + 0x76, 0x2F, 0xC4, 0x9D, 0xD1, 0x88, 0x63, 0x3A, + 0xFB, 0xA2, 0x49, 0x10, 0x5C, 0x05, 0xEE, 0xB7, + 0xAF, 0xF6, 0x1D, 0x44, 0x08, 0x51, 0xBA, 0xE3, + 0x22, 0x7B, 0x90, 0xC9, 0x85, 0xDC, 0x37, 0x6E, + 0xE5, 0xBC, 0x57, 0x0E, 0x42, 0x1B, 0xF0, 0xA9, + 0x68, 0x31, 0xDA, 0x83, 0xCF, 0x96, 0x7D, 0x24, + 0x3C, 0x65, 0x8E, 0xD7, 0x9B, 0xC2, 0x29, 0x70, + 0xB1, 0xE8, 0x03, 0x5A, 0x16, 0x4F, 0xA4, 0xFD, + 0x94, 0xCD, 0x26, 0x7F, 0x33, 0x6A, 0x81, 0xD8, + 0x19, 0x40, 0xAB, 0xF2, 0xBE, 0xE7, 0x0C, 0x55, + 0x4D, 0x14, 0xFF, 0xA6, 0xEA, 0xB3, 0x58, 0x01, + 0xC0, 0x99, 0x72, 0x2B, 0x67, 0x3E, 0xD5, 0x8C, + 0x00, 0x5A, 0xB4, 0xEE, 0xAB, 0xF1, 0x1F, 0x45, + 0x95, 0xCF, 0x21, 0x7B, 0x3E, 0x64, 0x8A, 0xD0, + 0xE9, 0xB3, 0x5D, 0x07, 0x42, 0x18, 0xF6, 0xAC, + 0x7C, 0x26, 0xC8, 0x92, 0xD7, 0x8D, 0x63, 0x39, + 0x11, 0x4B, 0xA5, 0xFF, 0xBA, 0xE0, 0x0E, 0x54, + 0x84, 0xDE, 0x30, 0x6A, 0x2F, 0x75, 0x9B, 0xC1, + 0xF8, 0xA2, 0x4C, 0x16, 0x53, 0x09, 0xE7, 0xBD, + 0x6D, 0x37, 0xD9, 0x83, 0xC6, 0x9C, 0x72, 0x28, + 0x22, 0x78, 0x96, 0xCC, 0x89, 0xD3, 0x3D, 0x67, + 0xB7, 0xED, 0x03, 0x59, 0x1C, 0x46, 0xA8, 0xF2, + 0xCB, 0x91, 0x7F, 0x25, 0x60, 0x3A, 0xD4, 0x8E, + 0x5E, 0x04, 0xEA, 0xB0, 0xF5, 0xAF, 0x41, 0x1B, + 0x33, 0x69, 0x87, 0xDD, 0x98, 0xC2, 0x2C, 0x76, + 0xA6, 0xFC, 0x12, 0x48, 0x0D, 0x57, 0xB9, 0xE3, + 0xDA, 0x80, 0x6E, 0x34, 0x71, 0x2B, 0xC5, 0x9F, + 0x4F, 0x15, 0xFB, 0xA1, 0xE4, 0xBE, 0x50, 0x0A, + 0x44, 0x1E, 0xF0, 0xAA, 0xEF, 0xB5, 0x5B, 0x01, + 0xD1, 0x8B, 0x65, 0x3F, 0x7A, 0x20, 0xCE, 0x94, + 0xAD, 0xF7, 0x19, 0x43, 0x06, 0x5C, 0xB2, 0xE8, + 0x38, 0x62, 0x8C, 0xD6, 0x93, 0xC9, 0x27, 0x7D, + 0x55, 0x0F, 0xE1, 0xBB, 0xFE, 0xA4, 0x4A, 0x10, + 0xC0, 0x9A, 0x74, 0x2E, 0x6B, 0x31, 0xDF, 0x85, + 0xBC, 0xE6, 0x08, 0x52, 0x17, 0x4D, 0xA3, 0xF9, + 0x29, 0x73, 0x9D, 0xC7, 0x82, 0xD8, 0x36, 0x6C, + 0x66, 0x3C, 0xD2, 0x88, 0xCD, 0x97, 0x79, 0x23, + 0xF3, 0xA9, 0x47, 0x1D, 0x58, 0x02, 0xEC, 0xB6, + 0x8F, 0xD5, 0x3B, 0x61, 0x24, 0x7E, 0x90, 0xCA, + 0x1A, 0x40, 0xAE, 0xF4, 0xB1, 0xEB, 0x05, 0x5F, + 0x77, 0x2D, 0xC3, 0x99, 0xDC, 0x86, 0x68, 0x32, + 0xE2, 0xB8, 0x56, 0x0C, 0x49, 0x13, 0xFD, 0xA7, + 0x9E, 0xC4, 0x2A, 0x70, 0x35, 0x6F, 0x81, 0xDB, + 0x0B, 0x51, 0xBF, 0xE5, 0xA0, 0xFA, 0x14, 0x4E, + 0x00, 0x5B, 0xB6, 0xED, 0xAF, 0xF4, 0x19, 0x42, + 0x9D, 0xC6, 0x2B, 0x70, 0x32, 0x69, 0x84, 0xDF, + 0xF9, 0xA2, 0x4F, 0x14, 0x56, 0x0D, 0xE0, 0xBB, + 0x64, 0x3F, 0xD2, 0x89, 0xCB, 0x90, 0x7D, 0x26, + 0x31, 0x6A, 0x87, 0xDC, 0x9E, 0xC5, 0x28, 0x73, + 0xAC, 0xF7, 0x1A, 0x41, 0x03, 0x58, 0xB5, 0xEE, + 0xC8, 0x93, 0x7E, 0x25, 0x67, 0x3C, 0xD1, 0x8A, + 0x55, 0x0E, 0xE3, 0xB8, 0xFA, 0xA1, 0x4C, 0x17, + 0x62, 0x39, 0xD4, 0x8F, 0xCD, 0x96, 0x7B, 0x20, + 0xFF, 0xA4, 0x49, 0x12, 0x50, 0x0B, 0xE6, 0xBD, + 0x9B, 0xC0, 0x2D, 0x76, 0x34, 0x6F, 0x82, 0xD9, + 0x06, 0x5D, 0xB0, 0xEB, 0xA9, 0xF2, 0x1F, 0x44, + 0x53, 0x08, 0xE5, 0xBE, 0xFC, 0xA7, 0x4A, 0x11, + 0xCE, 0x95, 0x78, 0x23, 0x61, 0x3A, 0xD7, 0x8C, + 0xAA, 0xF1, 0x1C, 0x47, 0x05, 0x5E, 0xB3, 0xE8, + 0x37, 0x6C, 0x81, 0xDA, 0x98, 0xC3, 0x2E, 0x75, + 0xC4, 0x9F, 0x72, 0x29, 0x6B, 0x30, 0xDD, 0x86, + 0x59, 0x02, 0xEF, 0xB4, 0xF6, 0xAD, 0x40, 0x1B, + 0x3D, 0x66, 0x8B, 0xD0, 0x92, 0xC9, 0x24, 0x7F, + 0xA0, 0xFB, 0x16, 0x4D, 0x0F, 0x54, 0xB9, 0xE2, + 0xF5, 0xAE, 0x43, 0x18, 0x5A, 0x01, 0xEC, 0xB7, + 0x68, 0x33, 0xDE, 0x85, 0xC7, 0x9C, 0x71, 0x2A, + 0x0C, 0x57, 0xBA, 0xE1, 0xA3, 0xF8, 0x15, 0x4E, + 0x91, 0xCA, 0x27, 0x7C, 0x3E, 0x65, 0x88, 0xD3, + 0xA6, 0xFD, 0x10, 0x4B, 0x09, 0x52, 0xBF, 0xE4, + 0x3B, 0x60, 0x8D, 0xD6, 0x94, 0xCF, 0x22, 0x79, + 0x5F, 0x04, 0xE9, 0xB2, 0xF0, 0xAB, 0x46, 0x1D, + 0xC2, 0x99, 0x74, 0x2F, 0x6D, 0x36, 0xDB, 0x80, + 0x97, 0xCC, 0x21, 0x7A, 0x38, 0x63, 0x8E, 0xD5, + 0x0A, 0x51, 0xBC, 0xE7, 0xA5, 0xFE, 0x13, 0x48, + 0x6E, 0x35, 0xD8, 0x83, 0xC1, 0x9A, 0x77, 0x2C, + 0xF3, 0xA8, 0x45, 0x1E, 0x5C, 0x07, 0xEA, 0xB1, + 0x00, 0x5C, 0xB8, 0xE4, 0xB3, 0xEF, 0x0B, 0x57, + 0xA5, 0xF9, 0x1D, 0x41, 0x16, 0x4A, 0xAE, 0xF2, + 0x89, 0xD5, 0x31, 0x6D, 0x3A, 0x66, 0x82, 0xDE, + 0x2C, 0x70, 0x94, 0xC8, 0x9F, 0xC3, 0x27, 0x7B, + 0xD1, 0x8D, 0x69, 0x35, 0x62, 0x3E, 0xDA, 0x86, + 0x74, 0x28, 0xCC, 0x90, 0xC7, 0x9B, 0x7F, 0x23, + 0x58, 0x04, 0xE0, 0xBC, 0xEB, 0xB7, 0x53, 0x0F, + 0xFD, 0xA1, 0x45, 0x19, 0x4E, 0x12, 0xF6, 0xAA, + 0x61, 0x3D, 0xD9, 0x85, 0xD2, 0x8E, 0x6A, 0x36, + 0xC4, 0x98, 0x7C, 0x20, 0x77, 0x2B, 0xCF, 0x93, + 0xE8, 0xB4, 0x50, 0x0C, 0x5B, 0x07, 0xE3, 0xBF, + 0x4D, 0x11, 0xF5, 0xA9, 0xFE, 0xA2, 0x46, 0x1A, + 0xB0, 0xEC, 0x08, 0x54, 0x03, 0x5F, 0xBB, 0xE7, + 0x15, 0x49, 0xAD, 0xF1, 0xA6, 0xFA, 0x1E, 0x42, + 0x39, 0x65, 0x81, 0xDD, 0x8A, 0xD6, 0x32, 0x6E, + 0x9C, 0xC0, 0x24, 0x78, 0x2F, 0x73, 0x97, 0xCB, + 0xC2, 0x9E, 0x7A, 0x26, 0x71, 0x2D, 0xC9, 0x95, + 0x67, 0x3B, 0xDF, 0x83, 0xD4, 0x88, 0x6C, 0x30, + 0x4B, 0x17, 0xF3, 0xAF, 0xF8, 0xA4, 0x40, 0x1C, + 0xEE, 0xB2, 0x56, 0x0A, 0x5D, 0x01, 0xE5, 0xB9, + 0x13, 0x4F, 0xAB, 0xF7, 0xA0, 0xFC, 0x18, 0x44, + 0xB6, 0xEA, 0x0E, 0x52, 0x05, 0x59, 0xBD, 0xE1, + 0x9A, 0xC6, 0x22, 0x7E, 0x29, 0x75, 0x91, 0xCD, + 0x3F, 0x63, 0x87, 0xDB, 0x8C, 0xD0, 0x34, 0x68, + 0xA3, 0xFF, 0x1B, 0x47, 0x10, 0x4C, 0xA8, 0xF4, + 0x06, 0x5A, 0xBE, 0xE2, 0xB5, 0xE9, 0x0D, 0x51, + 0x2A, 0x76, 0x92, 0xCE, 0x99, 0xC5, 0x21, 0x7D, + 0x8F, 0xD3, 0x37, 0x6B, 0x3C, 0x60, 0x84, 0xD8, + 0x72, 0x2E, 0xCA, 0x96, 0xC1, 0x9D, 0x79, 0x25, + 0xD7, 0x8B, 0x6F, 0x33, 0x64, 0x38, 0xDC, 0x80, + 0xFB, 0xA7, 0x43, 0x1F, 0x48, 0x14, 0xF0, 0xAC, + 0x5E, 0x02, 0xE6, 0xBA, 0xED, 0xB1, 0x55, 0x09, + 0x00, 0x5D, 0xBA, 0xE7, 0xB7, 0xEA, 0x0D, 0x50, + 0xAD, 0xF0, 0x17, 0x4A, 0x1A, 0x47, 0xA0, 0xFD, + 0x99, 0xC4, 0x23, 0x7E, 0x2E, 0x73, 0x94, 0xC9, + 0x34, 0x69, 0x8E, 0xD3, 0x83, 0xDE, 0x39, 0x64, + 0xF1, 0xAC, 0x4B, 0x16, 0x46, 0x1B, 0xFC, 0xA1, + 0x5C, 0x01, 0xE6, 0xBB, 0xEB, 0xB6, 0x51, 0x0C, + 0x68, 0x35, 0xD2, 0x8F, 0xDF, 0x82, 0x65, 0x38, + 0xC5, 0x98, 0x7F, 0x22, 0x72, 0x2F, 0xC8, 0x95, + 0x21, 0x7C, 0x9B, 0xC6, 0x96, 0xCB, 0x2C, 0x71, + 0x8C, 0xD1, 0x36, 0x6B, 0x3B, 0x66, 0x81, 0xDC, + 0xB8, 0xE5, 0x02, 0x5F, 0x0F, 0x52, 0xB5, 0xE8, + 0x15, 0x48, 0xAF, 0xF2, 0xA2, 0xFF, 0x18, 0x45, + 0xD0, 0x8D, 0x6A, 0x37, 0x67, 0x3A, 0xDD, 0x80, + 0x7D, 0x20, 0xC7, 0x9A, 0xCA, 0x97, 0x70, 0x2D, + 0x49, 0x14, 0xF3, 0xAE, 0xFE, 0xA3, 0x44, 0x19, + 0xE4, 0xB9, 0x5E, 0x03, 0x53, 0x0E, 0xE9, 0xB4, + 0x42, 0x1F, 0xF8, 0xA5, 0xF5, 0xA8, 0x4F, 0x12, + 0xEF, 0xB2, 0x55, 0x08, 0x58, 0x05, 0xE2, 0xBF, + 0xDB, 0x86, 0x61, 0x3C, 0x6C, 0x31, 0xD6, 0x8B, + 0x76, 0x2B, 0xCC, 0x91, 0xC1, 0x9C, 0x7B, 0x26, + 0xB3, 0xEE, 0x09, 0x54, 0x04, 0x59, 0xBE, 0xE3, + 0x1E, 0x43, 0xA4, 0xF9, 0xA9, 0xF4, 0x13, 0x4E, + 0x2A, 0x77, 0x90, 0xCD, 0x9D, 0xC0, 0x27, 0x7A, + 0x87, 0xDA, 0x3D, 0x60, 0x30, 0x6D, 0x8A, 0xD7, + 0x63, 0x3E, 0xD9, 0x84, 0xD4, 0x89, 0x6E, 0x33, + 0xCE, 0x93, 0x74, 0x29, 0x79, 0x24, 0xC3, 0x9E, + 0xFA, 0xA7, 0x40, 0x1D, 0x4D, 0x10, 0xF7, 0xAA, + 0x57, 0x0A, 0xED, 0xB0, 0xE0, 0xBD, 0x5A, 0x07, + 0x92, 0xCF, 0x28, 0x75, 0x25, 0x78, 0x9F, 0xC2, + 0x3F, 0x62, 0x85, 0xD8, 0x88, 0xD5, 0x32, 0x6F, + 0x0B, 0x56, 0xB1, 0xEC, 0xBC, 0xE1, 0x06, 0x5B, + 0xA6, 0xFB, 0x1C, 0x41, 0x11, 0x4C, 0xAB, 0xF6, + 0x00, 0x5E, 0xBC, 0xE2, 0xBB, 0xE5, 0x07, 0x59, + 0xB5, 0xEB, 0x09, 0x57, 0x0E, 0x50, 0xB2, 0xEC, + 0xA9, 0xF7, 0x15, 0x4B, 0x12, 0x4C, 0xAE, 0xF0, + 0x1C, 0x42, 0xA0, 0xFE, 0xA7, 0xF9, 0x1B, 0x45, + 0x91, 0xCF, 0x2D, 0x73, 0x2A, 0x74, 0x96, 0xC8, + 0x24, 0x7A, 0x98, 0xC6, 0x9F, 0xC1, 0x23, 0x7D, + 0x38, 0x66, 0x84, 0xDA, 0x83, 0xDD, 0x3F, 0x61, + 0x8D, 0xD3, 0x31, 0x6F, 0x36, 0x68, 0x8A, 0xD4, + 0xE1, 0xBF, 0x5D, 0x03, 0x5A, 0x04, 0xE6, 0xB8, + 0x54, 0x0A, 0xE8, 0xB6, 0xEF, 0xB1, 0x53, 0x0D, + 0x48, 0x16, 0xF4, 0xAA, 0xF3, 0xAD, 0x4F, 0x11, + 0xFD, 0xA3, 0x41, 0x1F, 0x46, 0x18, 0xFA, 0xA4, + 0x70, 0x2E, 0xCC, 0x92, 0xCB, 0x95, 0x77, 0x29, + 0xC5, 0x9B, 0x79, 0x27, 0x7E, 0x20, 0xC2, 0x9C, + 0xD9, 0x87, 0x65, 0x3B, 0x62, 0x3C, 0xDE, 0x80, + 0x6C, 0x32, 0xD0, 0x8E, 0xD7, 0x89, 0x6B, 0x35, + 0x01, 0x5F, 0xBD, 0xE3, 0xBA, 0xE4, 0x06, 0x58, + 0xB4, 0xEA, 0x08, 0x56, 0x0F, 0x51, 0xB3, 0xED, + 0xA8, 0xF6, 0x14, 0x4A, 0x13, 0x4D, 0xAF, 0xF1, + 0x1D, 0x43, 0xA1, 0xFF, 0xA6, 0xF8, 0x1A, 0x44, + 0x90, 0xCE, 0x2C, 0x72, 0x2B, 0x75, 0x97, 0xC9, + 0x25, 0x7B, 0x99, 0xC7, 0x9E, 0xC0, 0x22, 0x7C, + 0x39, 0x67, 0x85, 0xDB, 0x82, 0xDC, 0x3E, 0x60, + 0x8C, 0xD2, 0x30, 0x6E, 0x37, 0x69, 0x8B, 0xD5, + 0xE0, 0xBE, 0x5C, 0x02, 0x5B, 0x05, 0xE7, 0xB9, + 0x55, 0x0B, 0xE9, 0xB7, 0xEE, 0xB0, 0x52, 0x0C, + 0x49, 0x17, 0xF5, 0xAB, 0xF2, 0xAC, 0x4E, 0x10, + 0xFC, 0xA2, 0x40, 0x1E, 0x47, 0x19, 0xFB, 0xA5, + 0x71, 0x2F, 0xCD, 0x93, 0xCA, 0x94, 0x76, 0x28, + 0xC4, 0x9A, 0x78, 0x26, 0x7F, 0x21, 0xC3, 0x9D, + 0xD8, 0x86, 0x64, 0x3A, 0x63, 0x3D, 0xDF, 0x81, + 0x6D, 0x33, 0xD1, 0x8F, 0xD6, 0x88, 0x6A, 0x34, + 0x00, 0x5F, 0xBE, 0xE1, 0xBF, 0xE0, 0x01, 0x5E, + 0xBD, 0xE2, 0x03, 0x5C, 0x02, 0x5D, 0xBC, 0xE3, + 0xB9, 0xE6, 0x07, 0x58, 0x06, 0x59, 0xB8, 0xE7, + 0x04, 0x5B, 0xBA, 0xE5, 0xBB, 0xE4, 0x05, 0x5A, + 0xB1, 0xEE, 0x0F, 0x50, 0x0E, 0x51, 0xB0, 0xEF, + 0x0C, 0x53, 0xB2, 0xED, 0xB3, 0xEC, 0x0D, 0x52, + 0x08, 0x57, 0xB6, 0xE9, 0xB7, 0xE8, 0x09, 0x56, + 0xB5, 0xEA, 0x0B, 0x54, 0x0A, 0x55, 0xB4, 0xEB, + 0xA1, 0xFE, 0x1F, 0x40, 0x1E, 0x41, 0xA0, 0xFF, + 0x1C, 0x43, 0xA2, 0xFD, 0xA3, 0xFC, 0x1D, 0x42, + 0x18, 0x47, 0xA6, 0xF9, 0xA7, 0xF8, 0x19, 0x46, + 0xA5, 0xFA, 0x1B, 0x44, 0x1A, 0x45, 0xA4, 0xFB, + 0x10, 0x4F, 0xAE, 0xF1, 0xAF, 0xF0, 0x11, 0x4E, + 0xAD, 0xF2, 0x13, 0x4C, 0x12, 0x4D, 0xAC, 0xF3, + 0xA9, 0xF6, 0x17, 0x48, 0x16, 0x49, 0xA8, 0xF7, + 0x14, 0x4B, 0xAA, 0xF5, 0xAB, 0xF4, 0x15, 0x4A, + 0x81, 0xDE, 0x3F, 0x60, 0x3E, 0x61, 0x80, 0xDF, + 0x3C, 0x63, 0x82, 0xDD, 0x83, 0xDC, 0x3D, 0x62, + 0x38, 0x67, 0x86, 0xD9, 0x87, 0xD8, 0x39, 0x66, + 0x85, 0xDA, 0x3B, 0x64, 0x3A, 0x65, 0x84, 0xDB, + 0x30, 0x6F, 0x8E, 0xD1, 0x8F, 0xD0, 0x31, 0x6E, + 0x8D, 0xD2, 0x33, 0x6C, 0x32, 0x6D, 0x8C, 0xD3, + 0x89, 0xD6, 0x37, 0x68, 0x36, 0x69, 0x88, 0xD7, + 0x34, 0x6B, 0x8A, 0xD5, 0x8B, 0xD4, 0x35, 0x6A, + 0x20, 0x7F, 0x9E, 0xC1, 0x9F, 0xC0, 0x21, 0x7E, + 0x9D, 0xC2, 0x23, 0x7C, 0x22, 0x7D, 0x9C, 0xC3, + 0x99, 0xC6, 0x27, 0x78, 0x26, 0x79, 0x98, 0xC7, + 0x24, 0x7B, 0x9A, 0xC5, 0x9B, 0xC4, 0x25, 0x7A, + 0x91, 0xCE, 0x2F, 0x70, 0x2E, 0x71, 0x90, 0xCF, + 0x2C, 0x73, 0x92, 0xCD, 0x93, 0xCC, 0x2D, 0x72, + 0x28, 0x77, 0x96, 0xC9, 0x97, 0xC8, 0x29, 0x76, + 0x95, 0xCA, 0x2B, 0x74, 0x2A, 0x75, 0x94, 0xCB, + 0x00, 0x60, 0xC0, 0xA0, 0x43, 0x23, 0x83, 0xE3, + 0x86, 0xE6, 0x46, 0x26, 0xC5, 0xA5, 0x05, 0x65, + 0xCF, 0xAF, 0x0F, 0x6F, 0x8C, 0xEC, 0x4C, 0x2C, + 0x49, 0x29, 0x89, 0xE9, 0x0A, 0x6A, 0xCA, 0xAA, + 0x5D, 0x3D, 0x9D, 0xFD, 0x1E, 0x7E, 0xDE, 0xBE, + 0xDB, 0xBB, 0x1B, 0x7B, 0x98, 0xF8, 0x58, 0x38, + 0x92, 0xF2, 0x52, 0x32, 0xD1, 0xB1, 0x11, 0x71, + 0x14, 0x74, 0xD4, 0xB4, 0x57, 0x37, 0x97, 0xF7, + 0xBA, 0xDA, 0x7A, 0x1A, 0xF9, 0x99, 0x39, 0x59, + 0x3C, 0x5C, 0xFC, 0x9C, 0x7F, 0x1F, 0xBF, 0xDF, + 0x75, 0x15, 0xB5, 0xD5, 0x36, 0x56, 0xF6, 0x96, + 0xF3, 0x93, 0x33, 0x53, 0xB0, 0xD0, 0x70, 0x10, + 0xE7, 0x87, 0x27, 0x47, 0xA4, 0xC4, 0x64, 0x04, + 0x61, 0x01, 0xA1, 0xC1, 0x22, 0x42, 0xE2, 0x82, + 0x28, 0x48, 0xE8, 0x88, 0x6B, 0x0B, 0xAB, 0xCB, + 0xAE, 0xCE, 0x6E, 0x0E, 0xED, 0x8D, 0x2D, 0x4D, + 0xB7, 0xD7, 0x77, 0x17, 0xF4, 0x94, 0x34, 0x54, + 0x31, 0x51, 0xF1, 0x91, 0x72, 0x12, 0xB2, 0xD2, + 0x78, 0x18, 0xB8, 0xD8, 0x3B, 0x5B, 0xFB, 0x9B, + 0xFE, 0x9E, 0x3E, 0x5E, 0xBD, 0xDD, 0x7D, 0x1D, + 0xEA, 0x8A, 0x2A, 0x4A, 0xA9, 0xC9, 0x69, 0x09, + 0x6C, 0x0C, 0xAC, 0xCC, 0x2F, 0x4F, 0xEF, 0x8F, + 0x25, 0x45, 0xE5, 0x85, 0x66, 0x06, 0xA6, 0xC6, + 0xA3, 0xC3, 0x63, 0x03, 0xE0, 0x80, 0x20, 0x40, + 0x0D, 0x6D, 0xCD, 0xAD, 0x4E, 0x2E, 0x8E, 0xEE, + 0x8B, 0xEB, 0x4B, 0x2B, 0xC8, 0xA8, 0x08, 0x68, + 0xC2, 0xA2, 0x02, 0x62, 0x81, 0xE1, 0x41, 0x21, + 0x44, 0x24, 0x84, 0xE4, 0x07, 0x67, 0xC7, 0xA7, + 0x50, 0x30, 0x90, 0xF0, 0x13, 0x73, 0xD3, 0xB3, + 0xD6, 0xB6, 0x16, 0x76, 0x95, 0xF5, 0x55, 0x35, + 0x9F, 0xFF, 0x5F, 0x3F, 0xDC, 0xBC, 0x1C, 0x7C, + 0x19, 0x79, 0xD9, 0xB9, 0x5A, 0x3A, 0x9A, 0xFA, + 0x00, 0x61, 0xC2, 0xA3, 0x47, 0x26, 0x85, 0xE4, + 0x8E, 0xEF, 0x4C, 0x2D, 0xC9, 0xA8, 0x0B, 0x6A, + 0xDF, 0xBE, 0x1D, 0x7C, 0x98, 0xF9, 0x5A, 0x3B, + 0x51, 0x30, 0x93, 0xF2, 0x16, 0x77, 0xD4, 0xB5, + 0x7D, 0x1C, 0xBF, 0xDE, 0x3A, 0x5B, 0xF8, 0x99, + 0xF3, 0x92, 0x31, 0x50, 0xB4, 0xD5, 0x76, 0x17, + 0xA2, 0xC3, 0x60, 0x01, 0xE5, 0x84, 0x27, 0x46, + 0x2C, 0x4D, 0xEE, 0x8F, 0x6B, 0x0A, 0xA9, 0xC8, + 0xFA, 0x9B, 0x38, 0x59, 0xBD, 0xDC, 0x7F, 0x1E, + 0x74, 0x15, 0xB6, 0xD7, 0x33, 0x52, 0xF1, 0x90, + 0x25, 0x44, 0xE7, 0x86, 0x62, 0x03, 0xA0, 0xC1, + 0xAB, 0xCA, 0x69, 0x08, 0xEC, 0x8D, 0x2E, 0x4F, + 0x87, 0xE6, 0x45, 0x24, 0xC0, 0xA1, 0x02, 0x63, + 0x09, 0x68, 0xCB, 0xAA, 0x4E, 0x2F, 0x8C, 0xED, + 0x58, 0x39, 0x9A, 0xFB, 0x1F, 0x7E, 0xDD, 0xBC, + 0xD6, 0xB7, 0x14, 0x75, 0x91, 0xF0, 0x53, 0x32, + 0x37, 0x56, 0xF5, 0x94, 0x70, 0x11, 0xB2, 0xD3, + 0xB9, 0xD8, 0x7B, 0x1A, 0xFE, 0x9F, 0x3C, 0x5D, + 0xE8, 0x89, 0x2A, 0x4B, 0xAF, 0xCE, 0x6D, 0x0C, + 0x66, 0x07, 0xA4, 0xC5, 0x21, 0x40, 0xE3, 0x82, + 0x4A, 0x2B, 0x88, 0xE9, 0x0D, 0x6C, 0xCF, 0xAE, + 0xC4, 0xA5, 0x06, 0x67, 0x83, 0xE2, 0x41, 0x20, + 0x95, 0xF4, 0x57, 0x36, 0xD2, 0xB3, 0x10, 0x71, + 0x1B, 0x7A, 0xD9, 0xB8, 0x5C, 0x3D, 0x9E, 0xFF, + 0xCD, 0xAC, 0x0F, 0x6E, 0x8A, 0xEB, 0x48, 0x29, + 0x43, 0x22, 0x81, 0xE0, 0x04, 0x65, 0xC6, 0xA7, + 0x12, 0x73, 0xD0, 0xB1, 0x55, 0x34, 0x97, 0xF6, + 0x9C, 0xFD, 0x5E, 0x3F, 0xDB, 0xBA, 0x19, 0x78, + 0xB0, 0xD1, 0x72, 0x13, 0xF7, 0x96, 0x35, 0x54, + 0x3E, 0x5F, 0xFC, 0x9D, 0x79, 0x18, 0xBB, 0xDA, + 0x6F, 0x0E, 0xAD, 0xCC, 0x28, 0x49, 0xEA, 0x8B, + 0xE1, 0x80, 0x23, 0x42, 0xA6, 0xC7, 0x64, 0x05, + 0x00, 0x62, 0xC4, 0xA6, 0x4B, 0x29, 0x8F, 0xED, + 0x96, 0xF4, 0x52, 0x30, 0xDD, 0xBF, 0x19, 0x7B, + 0xEF, 0x8D, 0x2B, 0x49, 0xA4, 0xC6, 0x60, 0x02, + 0x79, 0x1B, 0xBD, 0xDF, 0x32, 0x50, 0xF6, 0x94, + 0x1D, 0x7F, 0xD9, 0xBB, 0x56, 0x34, 0x92, 0xF0, + 0x8B, 0xE9, 0x4F, 0x2D, 0xC0, 0xA2, 0x04, 0x66, + 0xF2, 0x90, 0x36, 0x54, 0xB9, 0xDB, 0x7D, 0x1F, + 0x64, 0x06, 0xA0, 0xC2, 0x2F, 0x4D, 0xEB, 0x89, + 0x3A, 0x58, 0xFE, 0x9C, 0x71, 0x13, 0xB5, 0xD7, + 0xAC, 0xCE, 0x68, 0x0A, 0xE7, 0x85, 0x23, 0x41, + 0xD5, 0xB7, 0x11, 0x73, 0x9E, 0xFC, 0x5A, 0x38, + 0x43, 0x21, 0x87, 0xE5, 0x08, 0x6A, 0xCC, 0xAE, + 0x27, 0x45, 0xE3, 0x81, 0x6C, 0x0E, 0xA8, 0xCA, + 0xB1, 0xD3, 0x75, 0x17, 0xFA, 0x98, 0x3E, 0x5C, + 0xC8, 0xAA, 0x0C, 0x6E, 0x83, 0xE1, 0x47, 0x25, + 0x5E, 0x3C, 0x9A, 0xF8, 0x15, 0x77, 0xD1, 0xB3, + 0x74, 0x16, 0xB0, 0xD2, 0x3F, 0x5D, 0xFB, 0x99, + 0xE2, 0x80, 0x26, 0x44, 0xA9, 0xCB, 0x6D, 0x0F, + 0x9B, 0xF9, 0x5F, 0x3D, 0xD0, 0xB2, 0x14, 0x76, + 0x0D, 0x6F, 0xC9, 0xAB, 0x46, 0x24, 0x82, 0xE0, + 0x69, 0x0B, 0xAD, 0xCF, 0x22, 0x40, 0xE6, 0x84, + 0xFF, 0x9D, 0x3B, 0x59, 0xB4, 0xD6, 0x70, 0x12, + 0x86, 0xE4, 0x42, 0x20, 0xCD, 0xAF, 0x09, 0x6B, + 0x10, 0x72, 0xD4, 0xB6, 0x5B, 0x39, 0x9F, 0xFD, + 0x4E, 0x2C, 0x8A, 0xE8, 0x05, 0x67, 0xC1, 0xA3, + 0xD8, 0xBA, 0x1C, 0x7E, 0x93, 0xF1, 0x57, 0x35, + 0xA1, 0xC3, 0x65, 0x07, 0xEA, 0x88, 0x2E, 0x4C, + 0x37, 0x55, 0xF3, 0x91, 0x7C, 0x1E, 0xB8, 0xDA, + 0x53, 0x31, 0x97, 0xF5, 0x18, 0x7A, 0xDC, 0xBE, + 0xC5, 0xA7, 0x01, 0x63, 0x8E, 0xEC, 0x4A, 0x28, + 0xBC, 0xDE, 0x78, 0x1A, 0xF7, 0x95, 0x33, 0x51, + 0x2A, 0x48, 0xEE, 0x8C, 0x61, 0x03, 0xA5, 0xC7, + 0x00, 0x63, 0xC6, 0xA5, 0x4F, 0x2C, 0x89, 0xEA, + 0x9E, 0xFD, 0x58, 0x3B, 0xD1, 0xB2, 0x17, 0x74, + 0xFF, 0x9C, 0x39, 0x5A, 0xB0, 0xD3, 0x76, 0x15, + 0x61, 0x02, 0xA7, 0xC4, 0x2E, 0x4D, 0xE8, 0x8B, + 0x3D, 0x5E, 0xFB, 0x98, 0x72, 0x11, 0xB4, 0xD7, + 0xA3, 0xC0, 0x65, 0x06, 0xEC, 0x8F, 0x2A, 0x49, + 0xC2, 0xA1, 0x04, 0x67, 0x8D, 0xEE, 0x4B, 0x28, + 0x5C, 0x3F, 0x9A, 0xF9, 0x13, 0x70, 0xD5, 0xB6, + 0x7A, 0x19, 0xBC, 0xDF, 0x35, 0x56, 0xF3, 0x90, + 0xE4, 0x87, 0x22, 0x41, 0xAB, 0xC8, 0x6D, 0x0E, + 0x85, 0xE6, 0x43, 0x20, 0xCA, 0xA9, 0x0C, 0x6F, + 0x1B, 0x78, 0xDD, 0xBE, 0x54, 0x37, 0x92, 0xF1, + 0x47, 0x24, 0x81, 0xE2, 0x08, 0x6B, 0xCE, 0xAD, + 0xD9, 0xBA, 0x1F, 0x7C, 0x96, 0xF5, 0x50, 0x33, + 0xB8, 0xDB, 0x7E, 0x1D, 0xF7, 0x94, 0x31, 0x52, + 0x26, 0x45, 0xE0, 0x83, 0x69, 0x0A, 0xAF, 0xCC, + 0xF4, 0x97, 0x32, 0x51, 0xBB, 0xD8, 0x7D, 0x1E, + 0x6A, 0x09, 0xAC, 0xCF, 0x25, 0x46, 0xE3, 0x80, + 0x0B, 0x68, 0xCD, 0xAE, 0x44, 0x27, 0x82, 0xE1, + 0x95, 0xF6, 0x53, 0x30, 0xDA, 0xB9, 0x1C, 0x7F, + 0xC9, 0xAA, 0x0F, 0x6C, 0x86, 0xE5, 0x40, 0x23, + 0x57, 0x34, 0x91, 0xF2, 0x18, 0x7B, 0xDE, 0xBD, + 0x36, 0x55, 0xF0, 0x93, 0x79, 0x1A, 0xBF, 0xDC, + 0xA8, 0xCB, 0x6E, 0x0D, 0xE7, 0x84, 0x21, 0x42, + 0x8E, 0xED, 0x48, 0x2B, 0xC1, 0xA2, 0x07, 0x64, + 0x10, 0x73, 0xD6, 0xB5, 0x5F, 0x3C, 0x99, 0xFA, + 0x71, 0x12, 0xB7, 0xD4, 0x3E, 0x5D, 0xF8, 0x9B, + 0xEF, 0x8C, 0x29, 0x4A, 0xA0, 0xC3, 0x66, 0x05, + 0xB3, 0xD0, 0x75, 0x16, 0xFC, 0x9F, 0x3A, 0x59, + 0x2D, 0x4E, 0xEB, 0x88, 0x62, 0x01, 0xA4, 0xC7, + 0x4C, 0x2F, 0x8A, 0xE9, 0x03, 0x60, 0xC5, 0xA6, + 0xD2, 0xB1, 0x14, 0x77, 0x9D, 0xFE, 0x5B, 0x38, + 0x00, 0x64, 0xC8, 0xAC, 0x53, 0x37, 0x9B, 0xFF, + 0xA6, 0xC2, 0x6E, 0x0A, 0xF5, 0x91, 0x3D, 0x59, + 0x8F, 0xEB, 0x47, 0x23, 0xDC, 0xB8, 0x14, 0x70, + 0x29, 0x4D, 0xE1, 0x85, 0x7A, 0x1E, 0xB2, 0xD6, + 0xDD, 0xB9, 0x15, 0x71, 0x8E, 0xEA, 0x46, 0x22, + 0x7B, 0x1F, 0xB3, 0xD7, 0x28, 0x4C, 0xE0, 0x84, + 0x52, 0x36, 0x9A, 0xFE, 0x01, 0x65, 0xC9, 0xAD, + 0xF4, 0x90, 0x3C, 0x58, 0xA7, 0xC3, 0x6F, 0x0B, + 0x79, 0x1D, 0xB1, 0xD5, 0x2A, 0x4E, 0xE2, 0x86, + 0xDF, 0xBB, 0x17, 0x73, 0x8C, 0xE8, 0x44, 0x20, + 0xF6, 0x92, 0x3E, 0x5A, 0xA5, 0xC1, 0x6D, 0x09, + 0x50, 0x34, 0x98, 0xFC, 0x03, 0x67, 0xCB, 0xAF, + 0xA4, 0xC0, 0x6C, 0x08, 0xF7, 0x93, 0x3F, 0x5B, + 0x02, 0x66, 0xCA, 0xAE, 0x51, 0x35, 0x99, 0xFD, + 0x2B, 0x4F, 0xE3, 0x87, 0x78, 0x1C, 0xB0, 0xD4, + 0x8D, 0xE9, 0x45, 0x21, 0xDE, 0xBA, 0x16, 0x72, + 0xF2, 0x96, 0x3A, 0x5E, 0xA1, 0xC5, 0x69, 0x0D, + 0x54, 0x30, 0x9C, 0xF8, 0x07, 0x63, 0xCF, 0xAB, + 0x7D, 0x19, 0xB5, 0xD1, 0x2E, 0x4A, 0xE6, 0x82, + 0xDB, 0xBF, 0x13, 0x77, 0x88, 0xEC, 0x40, 0x24, + 0x2F, 0x4B, 0xE7, 0x83, 0x7C, 0x18, 0xB4, 0xD0, + 0x89, 0xED, 0x41, 0x25, 0xDA, 0xBE, 0x12, 0x76, + 0xA0, 0xC4, 0x68, 0x0C, 0xF3, 0x97, 0x3B, 0x5F, + 0x06, 0x62, 0xCE, 0xAA, 0x55, 0x31, 0x9D, 0xF9, + 0x8B, 0xEF, 0x43, 0x27, 0xD8, 0xBC, 0x10, 0x74, + 0x2D, 0x49, 0xE5, 0x81, 0x7E, 0x1A, 0xB6, 0xD2, + 0x04, 0x60, 0xCC, 0xA8, 0x57, 0x33, 0x9F, 0xFB, + 0xA2, 0xC6, 0x6A, 0x0E, 0xF1, 0x95, 0x39, 0x5D, + 0x56, 0x32, 0x9E, 0xFA, 0x05, 0x61, 0xCD, 0xA9, + 0xF0, 0x94, 0x38, 0x5C, 0xA3, 0xC7, 0x6B, 0x0F, + 0xD9, 0xBD, 0x11, 0x75, 0x8A, 0xEE, 0x42, 0x26, + 0x7F, 0x1B, 0xB7, 0xD3, 0x2C, 0x48, 0xE4, 0x80, + 0x00, 0x65, 0xCA, 0xAF, 0x57, 0x32, 0x9D, 0xF8, + 0xAE, 0xCB, 0x64, 0x01, 0xF9, 0x9C, 0x33, 0x56, + 0x9F, 0xFA, 0x55, 0x30, 0xC8, 0xAD, 0x02, 0x67, + 0x31, 0x54, 0xFB, 0x9E, 0x66, 0x03, 0xAC, 0xC9, + 0xFD, 0x98, 0x37, 0x52, 0xAA, 0xCF, 0x60, 0x05, + 0x53, 0x36, 0x99, 0xFC, 0x04, 0x61, 0xCE, 0xAB, + 0x62, 0x07, 0xA8, 0xCD, 0x35, 0x50, 0xFF, 0x9A, + 0xCC, 0xA9, 0x06, 0x63, 0x9B, 0xFE, 0x51, 0x34, + 0x39, 0x5C, 0xF3, 0x96, 0x6E, 0x0B, 0xA4, 0xC1, + 0x97, 0xF2, 0x5D, 0x38, 0xC0, 0xA5, 0x0A, 0x6F, + 0xA6, 0xC3, 0x6C, 0x09, 0xF1, 0x94, 0x3B, 0x5E, + 0x08, 0x6D, 0xC2, 0xA7, 0x5F, 0x3A, 0x95, 0xF0, + 0xC4, 0xA1, 0x0E, 0x6B, 0x93, 0xF6, 0x59, 0x3C, + 0x6A, 0x0F, 0xA0, 0xC5, 0x3D, 0x58, 0xF7, 0x92, + 0x5B, 0x3E, 0x91, 0xF4, 0x0C, 0x69, 0xC6, 0xA3, + 0xF5, 0x90, 0x3F, 0x5A, 0xA2, 0xC7, 0x68, 0x0D, + 0x72, 0x17, 0xB8, 0xDD, 0x25, 0x40, 0xEF, 0x8A, + 0xDC, 0xB9, 0x16, 0x73, 0x8B, 0xEE, 0x41, 0x24, + 0xED, 0x88, 0x27, 0x42, 0xBA, 0xDF, 0x70, 0x15, + 0x43, 0x26, 0x89, 0xEC, 0x14, 0x71, 0xDE, 0xBB, + 0x8F, 0xEA, 0x45, 0x20, 0xD8, 0xBD, 0x12, 0x77, + 0x21, 0x44, 0xEB, 0x8E, 0x76, 0x13, 0xBC, 0xD9, + 0x10, 0x75, 0xDA, 0xBF, 0x47, 0x22, 0x8D, 0xE8, + 0xBE, 0xDB, 0x74, 0x11, 0xE9, 0x8C, 0x23, 0x46, + 0x4B, 0x2E, 0x81, 0xE4, 0x1C, 0x79, 0xD6, 0xB3, + 0xE5, 0x80, 0x2F, 0x4A, 0xB2, 0xD7, 0x78, 0x1D, + 0xD4, 0xB1, 0x1E, 0x7B, 0x83, 0xE6, 0x49, 0x2C, + 0x7A, 0x1F, 0xB0, 0xD5, 0x2D, 0x48, 0xE7, 0x82, + 0xB6, 0xD3, 0x7C, 0x19, 0xE1, 0x84, 0x2B, 0x4E, + 0x18, 0x7D, 0xD2, 0xB7, 0x4F, 0x2A, 0x85, 0xE0, + 0x29, 0x4C, 0xE3, 0x86, 0x7E, 0x1B, 0xB4, 0xD1, + 0x87, 0xE2, 0x4D, 0x28, 0xD0, 0xB5, 0x1A, 0x7F, + 0x00, 0x66, 0xCC, 0xAA, 0x5B, 0x3D, 0x97, 0xF1, + 0xB6, 0xD0, 0x7A, 0x1C, 0xED, 0x8B, 0x21, 0x47, + 0xAF, 0xC9, 0x63, 0x05, 0xF4, 0x92, 0x38, 0x5E, + 0x19, 0x7F, 0xD5, 0xB3, 0x42, 0x24, 0x8E, 0xE8, + 0x9D, 0xFB, 0x51, 0x37, 0xC6, 0xA0, 0x0A, 0x6C, + 0x2B, 0x4D, 0xE7, 0x81, 0x70, 0x16, 0xBC, 0xDA, + 0x32, 0x54, 0xFE, 0x98, 0x69, 0x0F, 0xA5, 0xC3, + 0x84, 0xE2, 0x48, 0x2E, 0xDF, 0xB9, 0x13, 0x75, + 0xF9, 0x9F, 0x35, 0x53, 0xA2, 0xC4, 0x6E, 0x08, + 0x4F, 0x29, 0x83, 0xE5, 0x14, 0x72, 0xD8, 0xBE, + 0x56, 0x30, 0x9A, 0xFC, 0x0D, 0x6B, 0xC1, 0xA7, + 0xE0, 0x86, 0x2C, 0x4A, 0xBB, 0xDD, 0x77, 0x11, + 0x64, 0x02, 0xA8, 0xCE, 0x3F, 0x59, 0xF3, 0x95, + 0xD2, 0xB4, 0x1E, 0x78, 0x89, 0xEF, 0x45, 0x23, + 0xCB, 0xAD, 0x07, 0x61, 0x90, 0xF6, 0x5C, 0x3A, + 0x7D, 0x1B, 0xB1, 0xD7, 0x26, 0x40, 0xEA, 0x8C, + 0x31, 0x57, 0xFD, 0x9B, 0x6A, 0x0C, 0xA6, 0xC0, + 0x87, 0xE1, 0x4B, 0x2D, 0xDC, 0xBA, 0x10, 0x76, + 0x9E, 0xF8, 0x52, 0x34, 0xC5, 0xA3, 0x09, 0x6F, + 0x28, 0x4E, 0xE4, 0x82, 0x73, 0x15, 0xBF, 0xD9, + 0xAC, 0xCA, 0x60, 0x06, 0xF7, 0x91, 0x3B, 0x5D, + 0x1A, 0x7C, 0xD6, 0xB0, 0x41, 0x27, 0x8D, 0xEB, + 0x03, 0x65, 0xCF, 0xA9, 0x58, 0x3E, 0x94, 0xF2, + 0xB5, 0xD3, 0x79, 0x1F, 0xEE, 0x88, 0x22, 0x44, + 0xC8, 0xAE, 0x04, 0x62, 0x93, 0xF5, 0x5F, 0x39, + 0x7E, 0x18, 0xB2, 0xD4, 0x25, 0x43, 0xE9, 0x8F, + 0x67, 0x01, 0xAB, 0xCD, 0x3C, 0x5A, 0xF0, 0x96, + 0xD1, 0xB7, 0x1D, 0x7B, 0x8A, 0xEC, 0x46, 0x20, + 0x55, 0x33, 0x99, 0xFF, 0x0E, 0x68, 0xC2, 0xA4, + 0xE3, 0x85, 0x2F, 0x49, 0xB8, 0xDE, 0x74, 0x12, + 0xFA, 0x9C, 0x36, 0x50, 0xA1, 0xC7, 0x6D, 0x0B, + 0x4C, 0x2A, 0x80, 0xE6, 0x17, 0x71, 0xDB, 0xBD, + 0x00, 0x67, 0xCE, 0xA9, 0x5F, 0x38, 0x91, 0xF6, + 0xBE, 0xD9, 0x70, 0x17, 0xE1, 0x86, 0x2F, 0x48, + 0xBF, 0xD8, 0x71, 0x16, 0xE0, 0x87, 0x2E, 0x49, + 0x01, 0x66, 0xCF, 0xA8, 0x5E, 0x39, 0x90, 0xF7, + 0xBD, 0xDA, 0x73, 0x14, 0xE2, 0x85, 0x2C, 0x4B, + 0x03, 0x64, 0xCD, 0xAA, 0x5C, 0x3B, 0x92, 0xF5, + 0x02, 0x65, 0xCC, 0xAB, 0x5D, 0x3A, 0x93, 0xF4, + 0xBC, 0xDB, 0x72, 0x15, 0xE3, 0x84, 0x2D, 0x4A, + 0xB9, 0xDE, 0x77, 0x10, 0xE6, 0x81, 0x28, 0x4F, + 0x07, 0x60, 0xC9, 0xAE, 0x58, 0x3F, 0x96, 0xF1, + 0x06, 0x61, 0xC8, 0xAF, 0x59, 0x3E, 0x97, 0xF0, + 0xB8, 0xDF, 0x76, 0x11, 0xE7, 0x80, 0x29, 0x4E, + 0x04, 0x63, 0xCA, 0xAD, 0x5B, 0x3C, 0x95, 0xF2, + 0xBA, 0xDD, 0x74, 0x13, 0xE5, 0x82, 0x2B, 0x4C, + 0xBB, 0xDC, 0x75, 0x12, 0xE4, 0x83, 0x2A, 0x4D, + 0x05, 0x62, 0xCB, 0xAC, 0x5A, 0x3D, 0x94, 0xF3, + 0xB1, 0xD6, 0x7F, 0x18, 0xEE, 0x89, 0x20, 0x47, + 0x0F, 0x68, 0xC1, 0xA6, 0x50, 0x37, 0x9E, 0xF9, + 0x0E, 0x69, 0xC0, 0xA7, 0x51, 0x36, 0x9F, 0xF8, + 0xB0, 0xD7, 0x7E, 0x19, 0xEF, 0x88, 0x21, 0x46, + 0x0C, 0x6B, 0xC2, 0xA5, 0x53, 0x34, 0x9D, 0xFA, + 0xB2, 0xD5, 0x7C, 0x1B, 0xED, 0x8A, 0x23, 0x44, + 0xB3, 0xD4, 0x7D, 0x1A, 0xEC, 0x8B, 0x22, 0x45, + 0x0D, 0x6A, 0xC3, 0xA4, 0x52, 0x35, 0x9C, 0xFB, + 0x08, 0x6F, 0xC6, 0xA1, 0x57, 0x30, 0x99, 0xFE, + 0xB6, 0xD1, 0x78, 0x1F, 0xE9, 0x8E, 0x27, 0x40, + 0xB7, 0xD0, 0x79, 0x1E, 0xE8, 0x8F, 0x26, 0x41, + 0x09, 0x6E, 0xC7, 0xA0, 0x56, 0x31, 0x98, 0xFF, + 0xB5, 0xD2, 0x7B, 0x1C, 0xEA, 0x8D, 0x24, 0x43, + 0x0B, 0x6C, 0xC5, 0xA2, 0x54, 0x33, 0x9A, 0xFD, + 0x0A, 0x6D, 0xC4, 0xA3, 0x55, 0x32, 0x9B, 0xFC, + 0xB4, 0xD3, 0x7A, 0x1D, 0xEB, 0x8C, 0x25, 0x42, + 0x00, 0x68, 0xD0, 0xB8, 0x63, 0x0B, 0xB3, 0xDB, + 0xC6, 0xAE, 0x16, 0x7E, 0xA5, 0xCD, 0x75, 0x1D, + 0x4F, 0x27, 0x9F, 0xF7, 0x2C, 0x44, 0xFC, 0x94, + 0x89, 0xE1, 0x59, 0x31, 0xEA, 0x82, 0x3A, 0x52, + 0x9E, 0xF6, 0x4E, 0x26, 0xFD, 0x95, 0x2D, 0x45, + 0x58, 0x30, 0x88, 0xE0, 0x3B, 0x53, 0xEB, 0x83, + 0xD1, 0xB9, 0x01, 0x69, 0xB2, 0xDA, 0x62, 0x0A, + 0x17, 0x7F, 0xC7, 0xAF, 0x74, 0x1C, 0xA4, 0xCC, + 0xFF, 0x97, 0x2F, 0x47, 0x9C, 0xF4, 0x4C, 0x24, + 0x39, 0x51, 0xE9, 0x81, 0x5A, 0x32, 0x8A, 0xE2, + 0xB0, 0xD8, 0x60, 0x08, 0xD3, 0xBB, 0x03, 0x6B, + 0x76, 0x1E, 0xA6, 0xCE, 0x15, 0x7D, 0xC5, 0xAD, + 0x61, 0x09, 0xB1, 0xD9, 0x02, 0x6A, 0xD2, 0xBA, + 0xA7, 0xCF, 0x77, 0x1F, 0xC4, 0xAC, 0x14, 0x7C, + 0x2E, 0x46, 0xFE, 0x96, 0x4D, 0x25, 0x9D, 0xF5, + 0xE8, 0x80, 0x38, 0x50, 0x8B, 0xE3, 0x5B, 0x33, + 0x3D, 0x55, 0xED, 0x85, 0x5E, 0x36, 0x8E, 0xE6, + 0xFB, 0x93, 0x2B, 0x43, 0x98, 0xF0, 0x48, 0x20, + 0x72, 0x1A, 0xA2, 0xCA, 0x11, 0x79, 0xC1, 0xA9, + 0xB4, 0xDC, 0x64, 0x0C, 0xD7, 0xBF, 0x07, 0x6F, + 0xA3, 0xCB, 0x73, 0x1B, 0xC0, 0xA8, 0x10, 0x78, + 0x65, 0x0D, 0xB5, 0xDD, 0x06, 0x6E, 0xD6, 0xBE, + 0xEC, 0x84, 0x3C, 0x54, 0x8F, 0xE7, 0x5F, 0x37, + 0x2A, 0x42, 0xFA, 0x92, 0x49, 0x21, 0x99, 0xF1, + 0xC2, 0xAA, 0x12, 0x7A, 0xA1, 0xC9, 0x71, 0x19, + 0x04, 0x6C, 0xD4, 0xBC, 0x67, 0x0F, 0xB7, 0xDF, + 0x8D, 0xE5, 0x5D, 0x35, 0xEE, 0x86, 0x3E, 0x56, + 0x4B, 0x23, 0x9B, 0xF3, 0x28, 0x40, 0xF8, 0x90, + 0x5C, 0x34, 0x8C, 0xE4, 0x3F, 0x57, 0xEF, 0x87, + 0x9A, 0xF2, 0x4A, 0x22, 0xF9, 0x91, 0x29, 0x41, + 0x13, 0x7B, 0xC3, 0xAB, 0x70, 0x18, 0xA0, 0xC8, + 0xD5, 0xBD, 0x05, 0x6D, 0xB6, 0xDE, 0x66, 0x0E, + 0x00, 0x69, 0xD2, 0xBB, 0x67, 0x0E, 0xB5, 0xDC, + 0xCE, 0xA7, 0x1C, 0x75, 0xA9, 0xC0, 0x7B, 0x12, + 0x5F, 0x36, 0x8D, 0xE4, 0x38, 0x51, 0xEA, 0x83, + 0x91, 0xF8, 0x43, 0x2A, 0xF6, 0x9F, 0x24, 0x4D, + 0xBE, 0xD7, 0x6C, 0x05, 0xD9, 0xB0, 0x0B, 0x62, + 0x70, 0x19, 0xA2, 0xCB, 0x17, 0x7E, 0xC5, 0xAC, + 0xE1, 0x88, 0x33, 0x5A, 0x86, 0xEF, 0x54, 0x3D, + 0x2F, 0x46, 0xFD, 0x94, 0x48, 0x21, 0x9A, 0xF3, + 0xBF, 0xD6, 0x6D, 0x04, 0xD8, 0xB1, 0x0A, 0x63, + 0x71, 0x18, 0xA3, 0xCA, 0x16, 0x7F, 0xC4, 0xAD, + 0xE0, 0x89, 0x32, 0x5B, 0x87, 0xEE, 0x55, 0x3C, + 0x2E, 0x47, 0xFC, 0x95, 0x49, 0x20, 0x9B, 0xF2, + 0x01, 0x68, 0xD3, 0xBA, 0x66, 0x0F, 0xB4, 0xDD, + 0xCF, 0xA6, 0x1D, 0x74, 0xA8, 0xC1, 0x7A, 0x13, + 0x5E, 0x37, 0x8C, 0xE5, 0x39, 0x50, 0xEB, 0x82, + 0x90, 0xF9, 0x42, 0x2B, 0xF7, 0x9E, 0x25, 0x4C, + 0xBD, 0xD4, 0x6F, 0x06, 0xDA, 0xB3, 0x08, 0x61, + 0x73, 0x1A, 0xA1, 0xC8, 0x14, 0x7D, 0xC6, 0xAF, + 0xE2, 0x8B, 0x30, 0x59, 0x85, 0xEC, 0x57, 0x3E, + 0x2C, 0x45, 0xFE, 0x97, 0x4B, 0x22, 0x99, 0xF0, + 0x03, 0x6A, 0xD1, 0xB8, 0x64, 0x0D, 0xB6, 0xDF, + 0xCD, 0xA4, 0x1F, 0x76, 0xAA, 0xC3, 0x78, 0x11, + 0x5C, 0x35, 0x8E, 0xE7, 0x3B, 0x52, 0xE9, 0x80, + 0x92, 0xFB, 0x40, 0x29, 0xF5, 0x9C, 0x27, 0x4E, + 0x02, 0x6B, 0xD0, 0xB9, 0x65, 0x0C, 0xB7, 0xDE, + 0xCC, 0xA5, 0x1E, 0x77, 0xAB, 0xC2, 0x79, 0x10, + 0x5D, 0x34, 0x8F, 0xE6, 0x3A, 0x53, 0xE8, 0x81, + 0x93, 0xFA, 0x41, 0x28, 0xF4, 0x9D, 0x26, 0x4F, + 0xBC, 0xD5, 0x6E, 0x07, 0xDB, 0xB2, 0x09, 0x60, + 0x72, 0x1B, 0xA0, 0xC9, 0x15, 0x7C, 0xC7, 0xAE, + 0xE3, 0x8A, 0x31, 0x58, 0x84, 0xED, 0x56, 0x3F, + 0x2D, 0x44, 0xFF, 0x96, 0x4A, 0x23, 0x98, 0xF1, + 0x00, 0x6A, 0xD4, 0xBE, 0x6B, 0x01, 0xBF, 0xD5, + 0xD6, 0xBC, 0x02, 0x68, 0xBD, 0xD7, 0x69, 0x03, + 0x6F, 0x05, 0xBB, 0xD1, 0x04, 0x6E, 0xD0, 0xBA, + 0xB9, 0xD3, 0x6D, 0x07, 0xD2, 0xB8, 0x06, 0x6C, + 0xDE, 0xB4, 0x0A, 0x60, 0xB5, 0xDF, 0x61, 0x0B, + 0x08, 0x62, 0xDC, 0xB6, 0x63, 0x09, 0xB7, 0xDD, + 0xB1, 0xDB, 0x65, 0x0F, 0xDA, 0xB0, 0x0E, 0x64, + 0x67, 0x0D, 0xB3, 0xD9, 0x0C, 0x66, 0xD8, 0xB2, + 0x7F, 0x15, 0xAB, 0xC1, 0x14, 0x7E, 0xC0, 0xAA, + 0xA9, 0xC3, 0x7D, 0x17, 0xC2, 0xA8, 0x16, 0x7C, + 0x10, 0x7A, 0xC4, 0xAE, 0x7B, 0x11, 0xAF, 0xC5, + 0xC6, 0xAC, 0x12, 0x78, 0xAD, 0xC7, 0x79, 0x13, + 0xA1, 0xCB, 0x75, 0x1F, 0xCA, 0xA0, 0x1E, 0x74, + 0x77, 0x1D, 0xA3, 0xC9, 0x1C, 0x76, 0xC8, 0xA2, + 0xCE, 0xA4, 0x1A, 0x70, 0xA5, 0xCF, 0x71, 0x1B, + 0x18, 0x72, 0xCC, 0xA6, 0x73, 0x19, 0xA7, 0xCD, + 0xFE, 0x94, 0x2A, 0x40, 0x95, 0xFF, 0x41, 0x2B, + 0x28, 0x42, 0xFC, 0x96, 0x43, 0x29, 0x97, 0xFD, + 0x91, 0xFB, 0x45, 0x2F, 0xFA, 0x90, 0x2E, 0x44, + 0x47, 0x2D, 0x93, 0xF9, 0x2C, 0x46, 0xF8, 0x92, + 0x20, 0x4A, 0xF4, 0x9E, 0x4B, 0x21, 0x9F, 0xF5, + 0xF6, 0x9C, 0x22, 0x48, 0x9D, 0xF7, 0x49, 0x23, + 0x4F, 0x25, 0x9B, 0xF1, 0x24, 0x4E, 0xF0, 0x9A, + 0x99, 0xF3, 0x4D, 0x27, 0xF2, 0x98, 0x26, 0x4C, + 0x81, 0xEB, 0x55, 0x3F, 0xEA, 0x80, 0x3E, 0x54, + 0x57, 0x3D, 0x83, 0xE9, 0x3C, 0x56, 0xE8, 0x82, + 0xEE, 0x84, 0x3A, 0x50, 0x85, 0xEF, 0x51, 0x3B, + 0x38, 0x52, 0xEC, 0x86, 0x53, 0x39, 0x87, 0xED, + 0x5F, 0x35, 0x8B, 0xE1, 0x34, 0x5E, 0xE0, 0x8A, + 0x89, 0xE3, 0x5D, 0x37, 0xE2, 0x88, 0x36, 0x5C, + 0x30, 0x5A, 0xE4, 0x8E, 0x5B, 0x31, 0x8F, 0xE5, + 0xE6, 0x8C, 0x32, 0x58, 0x8D, 0xE7, 0x59, 0x33, + 0x00, 0x6B, 0xD6, 0xBD, 0x6F, 0x04, 0xB9, 0xD2, + 0xDE, 0xB5, 0x08, 0x63, 0xB1, 0xDA, 0x67, 0x0C, + 0x7F, 0x14, 0xA9, 0xC2, 0x10, 0x7B, 0xC6, 0xAD, + 0xA1, 0xCA, 0x77, 0x1C, 0xCE, 0xA5, 0x18, 0x73, + 0xFE, 0x95, 0x28, 0x43, 0x91, 0xFA, 0x47, 0x2C, + 0x20, 0x4B, 0xF6, 0x9D, 0x4F, 0x24, 0x99, 0xF2, + 0x81, 0xEA, 0x57, 0x3C, 0xEE, 0x85, 0x38, 0x53, + 0x5F, 0x34, 0x89, 0xE2, 0x30, 0x5B, 0xE6, 0x8D, + 0x3F, 0x54, 0xE9, 0x82, 0x50, 0x3B, 0x86, 0xED, + 0xE1, 0x8A, 0x37, 0x5C, 0x8E, 0xE5, 0x58, 0x33, + 0x40, 0x2B, 0x96, 0xFD, 0x2F, 0x44, 0xF9, 0x92, + 0x9E, 0xF5, 0x48, 0x23, 0xF1, 0x9A, 0x27, 0x4C, + 0xC1, 0xAA, 0x17, 0x7C, 0xAE, 0xC5, 0x78, 0x13, + 0x1F, 0x74, 0xC9, 0xA2, 0x70, 0x1B, 0xA6, 0xCD, + 0xBE, 0xD5, 0x68, 0x03, 0xD1, 0xBA, 0x07, 0x6C, + 0x60, 0x0B, 0xB6, 0xDD, 0x0F, 0x64, 0xD9, 0xB2, + 0x7E, 0x15, 0xA8, 0xC3, 0x11, 0x7A, 0xC7, 0xAC, + 0xA0, 0xCB, 0x76, 0x1D, 0xCF, 0xA4, 0x19, 0x72, + 0x01, 0x6A, 0xD7, 0xBC, 0x6E, 0x05, 0xB8, 0xD3, + 0xDF, 0xB4, 0x09, 0x62, 0xB0, 0xDB, 0x66, 0x0D, + 0x80, 0xEB, 0x56, 0x3D, 0xEF, 0x84, 0x39, 0x52, + 0x5E, 0x35, 0x88, 0xE3, 0x31, 0x5A, 0xE7, 0x8C, + 0xFF, 0x94, 0x29, 0x42, 0x90, 0xFB, 0x46, 0x2D, + 0x21, 0x4A, 0xF7, 0x9C, 0x4E, 0x25, 0x98, 0xF3, + 0x41, 0x2A, 0x97, 0xFC, 0x2E, 0x45, 0xF8, 0x93, + 0x9F, 0xF4, 0x49, 0x22, 0xF0, 0x9B, 0x26, 0x4D, + 0x3E, 0x55, 0xE8, 0x83, 0x51, 0x3A, 0x87, 0xEC, + 0xE0, 0x8B, 0x36, 0x5D, 0x8F, 0xE4, 0x59, 0x32, + 0xBF, 0xD4, 0x69, 0x02, 0xD0, 0xBB, 0x06, 0x6D, + 0x61, 0x0A, 0xB7, 0xDC, 0x0E, 0x65, 0xD8, 0xB3, + 0xC0, 0xAB, 0x16, 0x7D, 0xAF, 0xC4, 0x79, 0x12, + 0x1E, 0x75, 0xC8, 0xA3, 0x71, 0x1A, 0xA7, 0xCC, + 0x00, 0x6C, 0xD8, 0xB4, 0x73, 0x1F, 0xAB, 0xC7, + 0xE6, 0x8A, 0x3E, 0x52, 0x95, 0xF9, 0x4D, 0x21, + 0x0F, 0x63, 0xD7, 0xBB, 0x7C, 0x10, 0xA4, 0xC8, + 0xE9, 0x85, 0x31, 0x5D, 0x9A, 0xF6, 0x42, 0x2E, + 0x1E, 0x72, 0xC6, 0xAA, 0x6D, 0x01, 0xB5, 0xD9, + 0xF8, 0x94, 0x20, 0x4C, 0x8B, 0xE7, 0x53, 0x3F, + 0x11, 0x7D, 0xC9, 0xA5, 0x62, 0x0E, 0xBA, 0xD6, + 0xF7, 0x9B, 0x2F, 0x43, 0x84, 0xE8, 0x5C, 0x30, + 0x3C, 0x50, 0xE4, 0x88, 0x4F, 0x23, 0x97, 0xFB, + 0xDA, 0xB6, 0x02, 0x6E, 0xA9, 0xC5, 0x71, 0x1D, + 0x33, 0x5F, 0xEB, 0x87, 0x40, 0x2C, 0x98, 0xF4, + 0xD5, 0xB9, 0x0D, 0x61, 0xA6, 0xCA, 0x7E, 0x12, + 0x22, 0x4E, 0xFA, 0x96, 0x51, 0x3D, 0x89, 0xE5, + 0xC4, 0xA8, 0x1C, 0x70, 0xB7, 0xDB, 0x6F, 0x03, + 0x2D, 0x41, 0xF5, 0x99, 0x5E, 0x32, 0x86, 0xEA, + 0xCB, 0xA7, 0x13, 0x7F, 0xB8, 0xD4, 0x60, 0x0C, + 0x78, 0x14, 0xA0, 0xCC, 0x0B, 0x67, 0xD3, 0xBF, + 0x9E, 0xF2, 0x46, 0x2A, 0xED, 0x81, 0x35, 0x59, + 0x77, 0x1B, 0xAF, 0xC3, 0x04, 0x68, 0xDC, 0xB0, + 0x91, 0xFD, 0x49, 0x25, 0xE2, 0x8E, 0x3A, 0x56, + 0x66, 0x0A, 0xBE, 0xD2, 0x15, 0x79, 0xCD, 0xA1, + 0x80, 0xEC, 0x58, 0x34, 0xF3, 0x9F, 0x2B, 0x47, + 0x69, 0x05, 0xB1, 0xDD, 0x1A, 0x76, 0xC2, 0xAE, + 0x8F, 0xE3, 0x57, 0x3B, 0xFC, 0x90, 0x24, 0x48, + 0x44, 0x28, 0x9C, 0xF0, 0x37, 0x5B, 0xEF, 0x83, + 0xA2, 0xCE, 0x7A, 0x16, 0xD1, 0xBD, 0x09, 0x65, + 0x4B, 0x27, 0x93, 0xFF, 0x38, 0x54, 0xE0, 0x8C, + 0xAD, 0xC1, 0x75, 0x19, 0xDE, 0xB2, 0x06, 0x6A, + 0x5A, 0x36, 0x82, 0xEE, 0x29, 0x45, 0xF1, 0x9D, + 0xBC, 0xD0, 0x64, 0x08, 0xCF, 0xA3, 0x17, 0x7B, + 0x55, 0x39, 0x8D, 0xE1, 0x26, 0x4A, 0xFE, 0x92, + 0xB3, 0xDF, 0x6B, 0x07, 0xC0, 0xAC, 0x18, 0x74, + 0x00, 0x6D, 0xDA, 0xB7, 0x77, 0x1A, 0xAD, 0xC0, + 0xEE, 0x83, 0x34, 0x59, 0x99, 0xF4, 0x43, 0x2E, + 0x1F, 0x72, 0xC5, 0xA8, 0x68, 0x05, 0xB2, 0xDF, + 0xF1, 0x9C, 0x2B, 0x46, 0x86, 0xEB, 0x5C, 0x31, + 0x3E, 0x53, 0xE4, 0x89, 0x49, 0x24, 0x93, 0xFE, + 0xD0, 0xBD, 0x0A, 0x67, 0xA7, 0xCA, 0x7D, 0x10, + 0x21, 0x4C, 0xFB, 0x96, 0x56, 0x3B, 0x8C, 0xE1, + 0xCF, 0xA2, 0x15, 0x78, 0xB8, 0xD5, 0x62, 0x0F, + 0x7C, 0x11, 0xA6, 0xCB, 0x0B, 0x66, 0xD1, 0xBC, + 0x92, 0xFF, 0x48, 0x25, 0xE5, 0x88, 0x3F, 0x52, + 0x63, 0x0E, 0xB9, 0xD4, 0x14, 0x79, 0xCE, 0xA3, + 0x8D, 0xE0, 0x57, 0x3A, 0xFA, 0x97, 0x20, 0x4D, + 0x42, 0x2F, 0x98, 0xF5, 0x35, 0x58, 0xEF, 0x82, + 0xAC, 0xC1, 0x76, 0x1B, 0xDB, 0xB6, 0x01, 0x6C, + 0x5D, 0x30, 0x87, 0xEA, 0x2A, 0x47, 0xF0, 0x9D, + 0xB3, 0xDE, 0x69, 0x04, 0xC4, 0xA9, 0x1E, 0x73, + 0xF8, 0x95, 0x22, 0x4F, 0x8F, 0xE2, 0x55, 0x38, + 0x16, 0x7B, 0xCC, 0xA1, 0x61, 0x0C, 0xBB, 0xD6, + 0xE7, 0x8A, 0x3D, 0x50, 0x90, 0xFD, 0x4A, 0x27, + 0x09, 0x64, 0xD3, 0xBE, 0x7E, 0x13, 0xA4, 0xC9, + 0xC6, 0xAB, 0x1C, 0x71, 0xB1, 0xDC, 0x6B, 0x06, + 0x28, 0x45, 0xF2, 0x9F, 0x5F, 0x32, 0x85, 0xE8, + 0xD9, 0xB4, 0x03, 0x6E, 0xAE, 0xC3, 0x74, 0x19, + 0x37, 0x5A, 0xED, 0x80, 0x40, 0x2D, 0x9A, 0xF7, + 0x84, 0xE9, 0x5E, 0x33, 0xF3, 0x9E, 0x29, 0x44, + 0x6A, 0x07, 0xB0, 0xDD, 0x1D, 0x70, 0xC7, 0xAA, + 0x9B, 0xF6, 0x41, 0x2C, 0xEC, 0x81, 0x36, 0x5B, + 0x75, 0x18, 0xAF, 0xC2, 0x02, 0x6F, 0xD8, 0xB5, + 0xBA, 0xD7, 0x60, 0x0D, 0xCD, 0xA0, 0x17, 0x7A, + 0x54, 0x39, 0x8E, 0xE3, 0x23, 0x4E, 0xF9, 0x94, + 0xA5, 0xC8, 0x7F, 0x12, 0xD2, 0xBF, 0x08, 0x65, + 0x4B, 0x26, 0x91, 0xFC, 0x3C, 0x51, 0xE6, 0x8B, + 0x00, 0x6E, 0xDC, 0xB2, 0x7B, 0x15, 0xA7, 0xC9, + 0xF6, 0x98, 0x2A, 0x44, 0x8D, 0xE3, 0x51, 0x3F, + 0x2F, 0x41, 0xF3, 0x9D, 0x54, 0x3A, 0x88, 0xE6, + 0xD9, 0xB7, 0x05, 0x6B, 0xA2, 0xCC, 0x7E, 0x10, + 0x5E, 0x30, 0x82, 0xEC, 0x25, 0x4B, 0xF9, 0x97, + 0xA8, 0xC6, 0x74, 0x1A, 0xD3, 0xBD, 0x0F, 0x61, + 0x71, 0x1F, 0xAD, 0xC3, 0x0A, 0x64, 0xD6, 0xB8, + 0x87, 0xE9, 0x5B, 0x35, 0xFC, 0x92, 0x20, 0x4E, + 0xBC, 0xD2, 0x60, 0x0E, 0xC7, 0xA9, 0x1B, 0x75, + 0x4A, 0x24, 0x96, 0xF8, 0x31, 0x5F, 0xED, 0x83, + 0x93, 0xFD, 0x4F, 0x21, 0xE8, 0x86, 0x34, 0x5A, + 0x65, 0x0B, 0xB9, 0xD7, 0x1E, 0x70, 0xC2, 0xAC, + 0xE2, 0x8C, 0x3E, 0x50, 0x99, 0xF7, 0x45, 0x2B, + 0x14, 0x7A, 0xC8, 0xA6, 0x6F, 0x01, 0xB3, 0xDD, + 0xCD, 0xA3, 0x11, 0x7F, 0xB6, 0xD8, 0x6A, 0x04, + 0x3B, 0x55, 0xE7, 0x89, 0x40, 0x2E, 0x9C, 0xF2, + 0xBB, 0xD5, 0x67, 0x09, 0xC0, 0xAE, 0x1C, 0x72, + 0x4D, 0x23, 0x91, 0xFF, 0x36, 0x58, 0xEA, 0x84, + 0x94, 0xFA, 0x48, 0x26, 0xEF, 0x81, 0x33, 0x5D, + 0x62, 0x0C, 0xBE, 0xD0, 0x19, 0x77, 0xC5, 0xAB, + 0xE5, 0x8B, 0x39, 0x57, 0x9E, 0xF0, 0x42, 0x2C, + 0x13, 0x7D, 0xCF, 0xA1, 0x68, 0x06, 0xB4, 0xDA, + 0xCA, 0xA4, 0x16, 0x78, 0xB1, 0xDF, 0x6D, 0x03, + 0x3C, 0x52, 0xE0, 0x8E, 0x47, 0x29, 0x9B, 0xF5, + 0x07, 0x69, 0xDB, 0xB5, 0x7C, 0x12, 0xA0, 0xCE, + 0xF1, 0x9F, 0x2D, 0x43, 0x8A, 0xE4, 0x56, 0x38, + 0x28, 0x46, 0xF4, 0x9A, 0x53, 0x3D, 0x8F, 0xE1, + 0xDE, 0xB0, 0x02, 0x6C, 0xA5, 0xCB, 0x79, 0x17, + 0x59, 0x37, 0x85, 0xEB, 0x22, 0x4C, 0xFE, 0x90, + 0xAF, 0xC1, 0x73, 0x1D, 0xD4, 0xBA, 0x08, 0x66, + 0x76, 0x18, 0xAA, 0xC4, 0x0D, 0x63, 0xD1, 0xBF, + 0x80, 0xEE, 0x5C, 0x32, 0xFB, 0x95, 0x27, 0x49, + 0x00, 0x6F, 0xDE, 0xB1, 0x7F, 0x10, 0xA1, 0xCE, + 0xFE, 0x91, 0x20, 0x4F, 0x81, 0xEE, 0x5F, 0x30, + 0x3F, 0x50, 0xE1, 0x8E, 0x40, 0x2F, 0x9E, 0xF1, + 0xC1, 0xAE, 0x1F, 0x70, 0xBE, 0xD1, 0x60, 0x0F, + 0x7E, 0x11, 0xA0, 0xCF, 0x01, 0x6E, 0xDF, 0xB0, + 0x80, 0xEF, 0x5E, 0x31, 0xFF, 0x90, 0x21, 0x4E, + 0x41, 0x2E, 0x9F, 0xF0, 0x3E, 0x51, 0xE0, 0x8F, + 0xBF, 0xD0, 0x61, 0x0E, 0xC0, 0xAF, 0x1E, 0x71, + 0xFC, 0x93, 0x22, 0x4D, 0x83, 0xEC, 0x5D, 0x32, + 0x02, 0x6D, 0xDC, 0xB3, 0x7D, 0x12, 0xA3, 0xCC, + 0xC3, 0xAC, 0x1D, 0x72, 0xBC, 0xD3, 0x62, 0x0D, + 0x3D, 0x52, 0xE3, 0x8C, 0x42, 0x2D, 0x9C, 0xF3, + 0x82, 0xED, 0x5C, 0x33, 0xFD, 0x92, 0x23, 0x4C, + 0x7C, 0x13, 0xA2, 0xCD, 0x03, 0x6C, 0xDD, 0xB2, + 0xBD, 0xD2, 0x63, 0x0C, 0xC2, 0xAD, 0x1C, 0x73, + 0x43, 0x2C, 0x9D, 0xF2, 0x3C, 0x53, 0xE2, 0x8D, + 0x3B, 0x54, 0xE5, 0x8A, 0x44, 0x2B, 0x9A, 0xF5, + 0xC5, 0xAA, 0x1B, 0x74, 0xBA, 0xD5, 0x64, 0x0B, + 0x04, 0x6B, 0xDA, 0xB5, 0x7B, 0x14, 0xA5, 0xCA, + 0xFA, 0x95, 0x24, 0x4B, 0x85, 0xEA, 0x5B, 0x34, + 0x45, 0x2A, 0x9B, 0xF4, 0x3A, 0x55, 0xE4, 0x8B, + 0xBB, 0xD4, 0x65, 0x0A, 0xC4, 0xAB, 0x1A, 0x75, + 0x7A, 0x15, 0xA4, 0xCB, 0x05, 0x6A, 0xDB, 0xB4, + 0x84, 0xEB, 0x5A, 0x35, 0xFB, 0x94, 0x25, 0x4A, + 0xC7, 0xA8, 0x19, 0x76, 0xB8, 0xD7, 0x66, 0x09, + 0x39, 0x56, 0xE7, 0x88, 0x46, 0x29, 0x98, 0xF7, + 0xF8, 0x97, 0x26, 0x49, 0x87, 0xE8, 0x59, 0x36, + 0x06, 0x69, 0xD8, 0xB7, 0x79, 0x16, 0xA7, 0xC8, + 0xB9, 0xD6, 0x67, 0x08, 0xC6, 0xA9, 0x18, 0x77, + 0x47, 0x28, 0x99, 0xF6, 0x38, 0x57, 0xE6, 0x89, + 0x86, 0xE9, 0x58, 0x37, 0xF9, 0x96, 0x27, 0x48, + 0x78, 0x17, 0xA6, 0xC9, 0x07, 0x68, 0xD9, 0xB6, + 0x00, 0x70, 0xE0, 0x90, 0x03, 0x73, 0xE3, 0x93, + 0x06, 0x76, 0xE6, 0x96, 0x05, 0x75, 0xE5, 0x95, + 0x0C, 0x7C, 0xEC, 0x9C, 0x0F, 0x7F, 0xEF, 0x9F, + 0x0A, 0x7A, 0xEA, 0x9A, 0x09, 0x79, 0xE9, 0x99, + 0x18, 0x68, 0xF8, 0x88, 0x1B, 0x6B, 0xFB, 0x8B, + 0x1E, 0x6E, 0xFE, 0x8E, 0x1D, 0x6D, 0xFD, 0x8D, + 0x14, 0x64, 0xF4, 0x84, 0x17, 0x67, 0xF7, 0x87, + 0x12, 0x62, 0xF2, 0x82, 0x11, 0x61, 0xF1, 0x81, + 0x30, 0x40, 0xD0, 0xA0, 0x33, 0x43, 0xD3, 0xA3, + 0x36, 0x46, 0xD6, 0xA6, 0x35, 0x45, 0xD5, 0xA5, + 0x3C, 0x4C, 0xDC, 0xAC, 0x3F, 0x4F, 0xDF, 0xAF, + 0x3A, 0x4A, 0xDA, 0xAA, 0x39, 0x49, 0xD9, 0xA9, + 0x28, 0x58, 0xC8, 0xB8, 0x2B, 0x5B, 0xCB, 0xBB, + 0x2E, 0x5E, 0xCE, 0xBE, 0x2D, 0x5D, 0xCD, 0xBD, + 0x24, 0x54, 0xC4, 0xB4, 0x27, 0x57, 0xC7, 0xB7, + 0x22, 0x52, 0xC2, 0xB2, 0x21, 0x51, 0xC1, 0xB1, + 0x60, 0x10, 0x80, 0xF0, 0x63, 0x13, 0x83, 0xF3, + 0x66, 0x16, 0x86, 0xF6, 0x65, 0x15, 0x85, 0xF5, + 0x6C, 0x1C, 0x8C, 0xFC, 0x6F, 0x1F, 0x8F, 0xFF, + 0x6A, 0x1A, 0x8A, 0xFA, 0x69, 0x19, 0x89, 0xF9, + 0x78, 0x08, 0x98, 0xE8, 0x7B, 0x0B, 0x9B, 0xEB, + 0x7E, 0x0E, 0x9E, 0xEE, 0x7D, 0x0D, 0x9D, 0xED, + 0x74, 0x04, 0x94, 0xE4, 0x77, 0x07, 0x97, 0xE7, + 0x72, 0x02, 0x92, 0xE2, 0x71, 0x01, 0x91, 0xE1, + 0x50, 0x20, 0xB0, 0xC0, 0x53, 0x23, 0xB3, 0xC3, + 0x56, 0x26, 0xB6, 0xC6, 0x55, 0x25, 0xB5, 0xC5, + 0x5C, 0x2C, 0xBC, 0xCC, 0x5F, 0x2F, 0xBF, 0xCF, + 0x5A, 0x2A, 0xBA, 0xCA, 0x59, 0x29, 0xB9, 0xC9, + 0x48, 0x38, 0xA8, 0xD8, 0x4B, 0x3B, 0xAB, 0xDB, + 0x4E, 0x3E, 0xAE, 0xDE, 0x4D, 0x3D, 0xAD, 0xDD, + 0x44, 0x34, 0xA4, 0xD4, 0x47, 0x37, 0xA7, 0xD7, + 0x42, 0x32, 0xA2, 0xD2, 0x41, 0x31, 0xA1, 0xD1, + 0x00, 0x71, 0xE2, 0x93, 0x07, 0x76, 0xE5, 0x94, + 0x0E, 0x7F, 0xEC, 0x9D, 0x09, 0x78, 0xEB, 0x9A, + 0x1C, 0x6D, 0xFE, 0x8F, 0x1B, 0x6A, 0xF9, 0x88, + 0x12, 0x63, 0xF0, 0x81, 0x15, 0x64, 0xF7, 0x86, + 0x38, 0x49, 0xDA, 0xAB, 0x3F, 0x4E, 0xDD, 0xAC, + 0x36, 0x47, 0xD4, 0xA5, 0x31, 0x40, 0xD3, 0xA2, + 0x24, 0x55, 0xC6, 0xB7, 0x23, 0x52, 0xC1, 0xB0, + 0x2A, 0x5B, 0xC8, 0xB9, 0x2D, 0x5C, 0xCF, 0xBE, + 0x70, 0x01, 0x92, 0xE3, 0x77, 0x06, 0x95, 0xE4, + 0x7E, 0x0F, 0x9C, 0xED, 0x79, 0x08, 0x9B, 0xEA, + 0x6C, 0x1D, 0x8E, 0xFF, 0x6B, 0x1A, 0x89, 0xF8, + 0x62, 0x13, 0x80, 0xF1, 0x65, 0x14, 0x87, 0xF6, + 0x48, 0x39, 0xAA, 0xDB, 0x4F, 0x3E, 0xAD, 0xDC, + 0x46, 0x37, 0xA4, 0xD5, 0x41, 0x30, 0xA3, 0xD2, + 0x54, 0x25, 0xB6, 0xC7, 0x53, 0x22, 0xB1, 0xC0, + 0x5A, 0x2B, 0xB8, 0xC9, 0x5D, 0x2C, 0xBF, 0xCE, + 0xE0, 0x91, 0x02, 0x73, 0xE7, 0x96, 0x05, 0x74, + 0xEE, 0x9F, 0x0C, 0x7D, 0xE9, 0x98, 0x0B, 0x7A, + 0xFC, 0x8D, 0x1E, 0x6F, 0xFB, 0x8A, 0x19, 0x68, + 0xF2, 0x83, 0x10, 0x61, 0xF5, 0x84, 0x17, 0x66, + 0xD8, 0xA9, 0x3A, 0x4B, 0xDF, 0xAE, 0x3D, 0x4C, + 0xD6, 0xA7, 0x34, 0x45, 0xD1, 0xA0, 0x33, 0x42, + 0xC4, 0xB5, 0x26, 0x57, 0xC3, 0xB2, 0x21, 0x50, + 0xCA, 0xBB, 0x28, 0x59, 0xCD, 0xBC, 0x2F, 0x5E, + 0x90, 0xE1, 0x72, 0x03, 0x97, 0xE6, 0x75, 0x04, + 0x9E, 0xEF, 0x7C, 0x0D, 0x99, 0xE8, 0x7B, 0x0A, + 0x8C, 0xFD, 0x6E, 0x1F, 0x8B, 0xFA, 0x69, 0x18, + 0x82, 0xF3, 0x60, 0x11, 0x85, 0xF4, 0x67, 0x16, + 0xA8, 0xD9, 0x4A, 0x3B, 0xAF, 0xDE, 0x4D, 0x3C, + 0xA6, 0xD7, 0x44, 0x35, 0xA1, 0xD0, 0x43, 0x32, + 0xB4, 0xC5, 0x56, 0x27, 0xB3, 0xC2, 0x51, 0x20, + 0xBA, 0xCB, 0x58, 0x29, 0xBD, 0xCC, 0x5F, 0x2E, + 0x00, 0x72, 0xE4, 0x96, 0x0B, 0x79, 0xEF, 0x9D, + 0x16, 0x64, 0xF2, 0x80, 0x1D, 0x6F, 0xF9, 0x8B, + 0x2C, 0x5E, 0xC8, 0xBA, 0x27, 0x55, 0xC3, 0xB1, + 0x3A, 0x48, 0xDE, 0xAC, 0x31, 0x43, 0xD5, 0xA7, + 0x58, 0x2A, 0xBC, 0xCE, 0x53, 0x21, 0xB7, 0xC5, + 0x4E, 0x3C, 0xAA, 0xD8, 0x45, 0x37, 0xA1, 0xD3, + 0x74, 0x06, 0x90, 0xE2, 0x7F, 0x0D, 0x9B, 0xE9, + 0x62, 0x10, 0x86, 0xF4, 0x69, 0x1B, 0x8D, 0xFF, + 0xB0, 0xC2, 0x54, 0x26, 0xBB, 0xC9, 0x5F, 0x2D, + 0xA6, 0xD4, 0x42, 0x30, 0xAD, 0xDF, 0x49, 0x3B, + 0x9C, 0xEE, 0x78, 0x0A, 0x97, 0xE5, 0x73, 0x01, + 0x8A, 0xF8, 0x6E, 0x1C, 0x81, 0xF3, 0x65, 0x17, + 0xE8, 0x9A, 0x0C, 0x7E, 0xE3, 0x91, 0x07, 0x75, + 0xFE, 0x8C, 0x1A, 0x68, 0xF5, 0x87, 0x11, 0x63, + 0xC4, 0xB6, 0x20, 0x52, 0xCF, 0xBD, 0x2B, 0x59, + 0xD2, 0xA0, 0x36, 0x44, 0xD9, 0xAB, 0x3D, 0x4F, + 0xA3, 0xD1, 0x47, 0x35, 0xA8, 0xDA, 0x4C, 0x3E, + 0xB5, 0xC7, 0x51, 0x23, 0xBE, 0xCC, 0x5A, 0x28, + 0x8F, 0xFD, 0x6B, 0x19, 0x84, 0xF6, 0x60, 0x12, + 0x99, 0xEB, 0x7D, 0x0F, 0x92, 0xE0, 0x76, 0x04, + 0xFB, 0x89, 0x1F, 0x6D, 0xF0, 0x82, 0x14, 0x66, + 0xED, 0x9F, 0x09, 0x7B, 0xE6, 0x94, 0x02, 0x70, + 0xD7, 0xA5, 0x33, 0x41, 0xDC, 0xAE, 0x38, 0x4A, + 0xC1, 0xB3, 0x25, 0x57, 0xCA, 0xB8, 0x2E, 0x5C, + 0x13, 0x61, 0xF7, 0x85, 0x18, 0x6A, 0xFC, 0x8E, + 0x05, 0x77, 0xE1, 0x93, 0x0E, 0x7C, 0xEA, 0x98, + 0x3F, 0x4D, 0xDB, 0xA9, 0x34, 0x46, 0xD0, 0xA2, + 0x29, 0x5B, 0xCD, 0xBF, 0x22, 0x50, 0xC6, 0xB4, + 0x4B, 0x39, 0xAF, 0xDD, 0x40, 0x32, 0xA4, 0xD6, + 0x5D, 0x2F, 0xB9, 0xCB, 0x56, 0x24, 0xB2, 0xC0, + 0x67, 0x15, 0x83, 0xF1, 0x6C, 0x1E, 0x88, 0xFA, + 0x71, 0x03, 0x95, 0xE7, 0x7A, 0x08, 0x9E, 0xEC, + 0x00, 0x73, 0xE6, 0x95, 0x0F, 0x7C, 0xE9, 0x9A, + 0x1E, 0x6D, 0xF8, 0x8B, 0x11, 0x62, 0xF7, 0x84, + 0x3C, 0x4F, 0xDA, 0xA9, 0x33, 0x40, 0xD5, 0xA6, + 0x22, 0x51, 0xC4, 0xB7, 0x2D, 0x5E, 0xCB, 0xB8, + 0x78, 0x0B, 0x9E, 0xED, 0x77, 0x04, 0x91, 0xE2, + 0x66, 0x15, 0x80, 0xF3, 0x69, 0x1A, 0x8F, 0xFC, + 0x44, 0x37, 0xA2, 0xD1, 0x4B, 0x38, 0xAD, 0xDE, + 0x5A, 0x29, 0xBC, 0xCF, 0x55, 0x26, 0xB3, 0xC0, + 0xF0, 0x83, 0x16, 0x65, 0xFF, 0x8C, 0x19, 0x6A, + 0xEE, 0x9D, 0x08, 0x7B, 0xE1, 0x92, 0x07, 0x74, + 0xCC, 0xBF, 0x2A, 0x59, 0xC3, 0xB0, 0x25, 0x56, + 0xD2, 0xA1, 0x34, 0x47, 0xDD, 0xAE, 0x3B, 0x48, + 0x88, 0xFB, 0x6E, 0x1D, 0x87, 0xF4, 0x61, 0x12, + 0x96, 0xE5, 0x70, 0x03, 0x99, 0xEA, 0x7F, 0x0C, + 0xB4, 0xC7, 0x52, 0x21, 0xBB, 0xC8, 0x5D, 0x2E, + 0xAA, 0xD9, 0x4C, 0x3F, 0xA5, 0xD6, 0x43, 0x30, + 0x23, 0x50, 0xC5, 0xB6, 0x2C, 0x5F, 0xCA, 0xB9, + 0x3D, 0x4E, 0xDB, 0xA8, 0x32, 0x41, 0xD4, 0xA7, + 0x1F, 0x6C, 0xF9, 0x8A, 0x10, 0x63, 0xF6, 0x85, + 0x01, 0x72, 0xE7, 0x94, 0x0E, 0x7D, 0xE8, 0x9B, + 0x5B, 0x28, 0xBD, 0xCE, 0x54, 0x27, 0xB2, 0xC1, + 0x45, 0x36, 0xA3, 0xD0, 0x4A, 0x39, 0xAC, 0xDF, + 0x67, 0x14, 0x81, 0xF2, 0x68, 0x1B, 0x8E, 0xFD, + 0x79, 0x0A, 0x9F, 0xEC, 0x76, 0x05, 0x90, 0xE3, + 0xD3, 0xA0, 0x35, 0x46, 0xDC, 0xAF, 0x3A, 0x49, + 0xCD, 0xBE, 0x2B, 0x58, 0xC2, 0xB1, 0x24, 0x57, + 0xEF, 0x9C, 0x09, 0x7A, 0xE0, 0x93, 0x06, 0x75, + 0xF1, 0x82, 0x17, 0x64, 0xFE, 0x8D, 0x18, 0x6B, + 0xAB, 0xD8, 0x4D, 0x3E, 0xA4, 0xD7, 0x42, 0x31, + 0xB5, 0xC6, 0x53, 0x20, 0xBA, 0xC9, 0x5C, 0x2F, + 0x97, 0xE4, 0x71, 0x02, 0x98, 0xEB, 0x7E, 0x0D, + 0x89, 0xFA, 0x6F, 0x1C, 0x86, 0xF5, 0x60, 0x13, + 0x00, 0x74, 0xE8, 0x9C, 0x13, 0x67, 0xFB, 0x8F, + 0x26, 0x52, 0xCE, 0xBA, 0x35, 0x41, 0xDD, 0xA9, + 0x4C, 0x38, 0xA4, 0xD0, 0x5F, 0x2B, 0xB7, 0xC3, + 0x6A, 0x1E, 0x82, 0xF6, 0x79, 0x0D, 0x91, 0xE5, + 0x98, 0xEC, 0x70, 0x04, 0x8B, 0xFF, 0x63, 0x17, + 0xBE, 0xCA, 0x56, 0x22, 0xAD, 0xD9, 0x45, 0x31, + 0xD4, 0xA0, 0x3C, 0x48, 0xC7, 0xB3, 0x2F, 0x5B, + 0xF2, 0x86, 0x1A, 0x6E, 0xE1, 0x95, 0x09, 0x7D, + 0xF3, 0x87, 0x1B, 0x6F, 0xE0, 0x94, 0x08, 0x7C, + 0xD5, 0xA1, 0x3D, 0x49, 0xC6, 0xB2, 0x2E, 0x5A, + 0xBF, 0xCB, 0x57, 0x23, 0xAC, 0xD8, 0x44, 0x30, + 0x99, 0xED, 0x71, 0x05, 0x8A, 0xFE, 0x62, 0x16, + 0x6B, 0x1F, 0x83, 0xF7, 0x78, 0x0C, 0x90, 0xE4, + 0x4D, 0x39, 0xA5, 0xD1, 0x5E, 0x2A, 0xB6, 0xC2, + 0x27, 0x53, 0xCF, 0xBB, 0x34, 0x40, 0xDC, 0xA8, + 0x01, 0x75, 0xE9, 0x9D, 0x12, 0x66, 0xFA, 0x8E, + 0x25, 0x51, 0xCD, 0xB9, 0x36, 0x42, 0xDE, 0xAA, + 0x03, 0x77, 0xEB, 0x9F, 0x10, 0x64, 0xF8, 0x8C, + 0x69, 0x1D, 0x81, 0xF5, 0x7A, 0x0E, 0x92, 0xE6, + 0x4F, 0x3B, 0xA7, 0xD3, 0x5C, 0x28, 0xB4, 0xC0, + 0xBD, 0xC9, 0x55, 0x21, 0xAE, 0xDA, 0x46, 0x32, + 0x9B, 0xEF, 0x73, 0x07, 0x88, 0xFC, 0x60, 0x14, + 0xF1, 0x85, 0x19, 0x6D, 0xE2, 0x96, 0x0A, 0x7E, + 0xD7, 0xA3, 0x3F, 0x4B, 0xC4, 0xB0, 0x2C, 0x58, + 0xD6, 0xA2, 0x3E, 0x4A, 0xC5, 0xB1, 0x2D, 0x59, + 0xF0, 0x84, 0x18, 0x6C, 0xE3, 0x97, 0x0B, 0x7F, + 0x9A, 0xEE, 0x72, 0x06, 0x89, 0xFD, 0x61, 0x15, + 0xBC, 0xC8, 0x54, 0x20, 0xAF, 0xDB, 0x47, 0x33, + 0x4E, 0x3A, 0xA6, 0xD2, 0x5D, 0x29, 0xB5, 0xC1, + 0x68, 0x1C, 0x80, 0xF4, 0x7B, 0x0F, 0x93, 0xE7, + 0x02, 0x76, 0xEA, 0x9E, 0x11, 0x65, 0xF9, 0x8D, + 0x24, 0x50, 0xCC, 0xB8, 0x37, 0x43, 0xDF, 0xAB, + 0x00, 0x75, 0xEA, 0x9F, 0x17, 0x62, 0xFD, 0x88, + 0x2E, 0x5B, 0xC4, 0xB1, 0x39, 0x4C, 0xD3, 0xA6, + 0x5C, 0x29, 0xB6, 0xC3, 0x4B, 0x3E, 0xA1, 0xD4, + 0x72, 0x07, 0x98, 0xED, 0x65, 0x10, 0x8F, 0xFA, + 0xB8, 0xCD, 0x52, 0x27, 0xAF, 0xDA, 0x45, 0x30, + 0x96, 0xE3, 0x7C, 0x09, 0x81, 0xF4, 0x6B, 0x1E, + 0xE4, 0x91, 0x0E, 0x7B, 0xF3, 0x86, 0x19, 0x6C, + 0xCA, 0xBF, 0x20, 0x55, 0xDD, 0xA8, 0x37, 0x42, + 0xB3, 0xC6, 0x59, 0x2C, 0xA4, 0xD1, 0x4E, 0x3B, + 0x9D, 0xE8, 0x77, 0x02, 0x8A, 0xFF, 0x60, 0x15, + 0xEF, 0x9A, 0x05, 0x70, 0xF8, 0x8D, 0x12, 0x67, + 0xC1, 0xB4, 0x2B, 0x5E, 0xD6, 0xA3, 0x3C, 0x49, + 0x0B, 0x7E, 0xE1, 0x94, 0x1C, 0x69, 0xF6, 0x83, + 0x25, 0x50, 0xCF, 0xBA, 0x32, 0x47, 0xD8, 0xAD, + 0x57, 0x22, 0xBD, 0xC8, 0x40, 0x35, 0xAA, 0xDF, + 0x79, 0x0C, 0x93, 0xE6, 0x6E, 0x1B, 0x84, 0xF1, + 0xA5, 0xD0, 0x4F, 0x3A, 0xB2, 0xC7, 0x58, 0x2D, + 0x8B, 0xFE, 0x61, 0x14, 0x9C, 0xE9, 0x76, 0x03, + 0xF9, 0x8C, 0x13, 0x66, 0xEE, 0x9B, 0x04, 0x71, + 0xD7, 0xA2, 0x3D, 0x48, 0xC0, 0xB5, 0x2A, 0x5F, + 0x1D, 0x68, 0xF7, 0x82, 0x0A, 0x7F, 0xE0, 0x95, + 0x33, 0x46, 0xD9, 0xAC, 0x24, 0x51, 0xCE, 0xBB, + 0x41, 0x34, 0xAB, 0xDE, 0x56, 0x23, 0xBC, 0xC9, + 0x6F, 0x1A, 0x85, 0xF0, 0x78, 0x0D, 0x92, 0xE7, + 0x16, 0x63, 0xFC, 0x89, 0x01, 0x74, 0xEB, 0x9E, + 0x38, 0x4D, 0xD2, 0xA7, 0x2F, 0x5A, 0xC5, 0xB0, + 0x4A, 0x3F, 0xA0, 0xD5, 0x5D, 0x28, 0xB7, 0xC2, + 0x64, 0x11, 0x8E, 0xFB, 0x73, 0x06, 0x99, 0xEC, + 0xAE, 0xDB, 0x44, 0x31, 0xB9, 0xCC, 0x53, 0x26, + 0x80, 0xF5, 0x6A, 0x1F, 0x97, 0xE2, 0x7D, 0x08, + 0xF2, 0x87, 0x18, 0x6D, 0xE5, 0x90, 0x0F, 0x7A, + 0xDC, 0xA9, 0x36, 0x43, 0xCB, 0xBE, 0x21, 0x54, + 0x00, 0x76, 0xEC, 0x9A, 0x1B, 0x6D, 0xF7, 0x81, + 0x36, 0x40, 0xDA, 0xAC, 0x2D, 0x5B, 0xC1, 0xB7, + 0x6C, 0x1A, 0x80, 0xF6, 0x77, 0x01, 0x9B, 0xED, + 0x5A, 0x2C, 0xB6, 0xC0, 0x41, 0x37, 0xAD, 0xDB, + 0xD8, 0xAE, 0x34, 0x42, 0xC3, 0xB5, 0x2F, 0x59, + 0xEE, 0x98, 0x02, 0x74, 0xF5, 0x83, 0x19, 0x6F, + 0xB4, 0xC2, 0x58, 0x2E, 0xAF, 0xD9, 0x43, 0x35, + 0x82, 0xF4, 0x6E, 0x18, 0x99, 0xEF, 0x75, 0x03, + 0x73, 0x05, 0x9F, 0xE9, 0x68, 0x1E, 0x84, 0xF2, + 0x45, 0x33, 0xA9, 0xDF, 0x5E, 0x28, 0xB2, 0xC4, + 0x1F, 0x69, 0xF3, 0x85, 0x04, 0x72, 0xE8, 0x9E, + 0x29, 0x5F, 0xC5, 0xB3, 0x32, 0x44, 0xDE, 0xA8, + 0xAB, 0xDD, 0x47, 0x31, 0xB0, 0xC6, 0x5C, 0x2A, + 0x9D, 0xEB, 0x71, 0x07, 0x86, 0xF0, 0x6A, 0x1C, + 0xC7, 0xB1, 0x2B, 0x5D, 0xDC, 0xAA, 0x30, 0x46, + 0xF1, 0x87, 0x1D, 0x6B, 0xEA, 0x9C, 0x06, 0x70, + 0xE6, 0x90, 0x0A, 0x7C, 0xFD, 0x8B, 0x11, 0x67, + 0xD0, 0xA6, 0x3C, 0x4A, 0xCB, 0xBD, 0x27, 0x51, + 0x8A, 0xFC, 0x66, 0x10, 0x91, 0xE7, 0x7D, 0x0B, + 0xBC, 0xCA, 0x50, 0x26, 0xA7, 0xD1, 0x4B, 0x3D, + 0x3E, 0x48, 0xD2, 0xA4, 0x25, 0x53, 0xC9, 0xBF, + 0x08, 0x7E, 0xE4, 0x92, 0x13, 0x65, 0xFF, 0x89, + 0x52, 0x24, 0xBE, 0xC8, 0x49, 0x3F, 0xA5, 0xD3, + 0x64, 0x12, 0x88, 0xFE, 0x7F, 0x09, 0x93, 0xE5, + 0x95, 0xE3, 0x79, 0x0F, 0x8E, 0xF8, 0x62, 0x14, + 0xA3, 0xD5, 0x4F, 0x39, 0xB8, 0xCE, 0x54, 0x22, + 0xF9, 0x8F, 0x15, 0x63, 0xE2, 0x94, 0x0E, 0x78, + 0xCF, 0xB9, 0x23, 0x55, 0xD4, 0xA2, 0x38, 0x4E, + 0x4D, 0x3B, 0xA1, 0xD7, 0x56, 0x20, 0xBA, 0xCC, + 0x7B, 0x0D, 0x97, 0xE1, 0x60, 0x16, 0x8C, 0xFA, + 0x21, 0x57, 0xCD, 0xBB, 0x3A, 0x4C, 0xD6, 0xA0, + 0x17, 0x61, 0xFB, 0x8D, 0x0C, 0x7A, 0xE0, 0x96, + 0x00, 0x77, 0xEE, 0x99, 0x1F, 0x68, 0xF1, 0x86, + 0x3E, 0x49, 0xD0, 0xA7, 0x21, 0x56, 0xCF, 0xB8, + 0x7C, 0x0B, 0x92, 0xE5, 0x63, 0x14, 0x8D, 0xFA, + 0x42, 0x35, 0xAC, 0xDB, 0x5D, 0x2A, 0xB3, 0xC4, + 0xF8, 0x8F, 0x16, 0x61, 0xE7, 0x90, 0x09, 0x7E, + 0xC6, 0xB1, 0x28, 0x5F, 0xD9, 0xAE, 0x37, 0x40, + 0x84, 0xF3, 0x6A, 0x1D, 0x9B, 0xEC, 0x75, 0x02, + 0xBA, 0xCD, 0x54, 0x23, 0xA5, 0xD2, 0x4B, 0x3C, + 0x33, 0x44, 0xDD, 0xAA, 0x2C, 0x5B, 0xC2, 0xB5, + 0x0D, 0x7A, 0xE3, 0x94, 0x12, 0x65, 0xFC, 0x8B, + 0x4F, 0x38, 0xA1, 0xD6, 0x50, 0x27, 0xBE, 0xC9, + 0x71, 0x06, 0x9F, 0xE8, 0x6E, 0x19, 0x80, 0xF7, + 0xCB, 0xBC, 0x25, 0x52, 0xD4, 0xA3, 0x3A, 0x4D, + 0xF5, 0x82, 0x1B, 0x6C, 0xEA, 0x9D, 0x04, 0x73, + 0xB7, 0xC0, 0x59, 0x2E, 0xA8, 0xDF, 0x46, 0x31, + 0x89, 0xFE, 0x67, 0x10, 0x96, 0xE1, 0x78, 0x0F, + 0x66, 0x11, 0x88, 0xFF, 0x79, 0x0E, 0x97, 0xE0, + 0x58, 0x2F, 0xB6, 0xC1, 0x47, 0x30, 0xA9, 0xDE, + 0x1A, 0x6D, 0xF4, 0x83, 0x05, 0x72, 0xEB, 0x9C, + 0x24, 0x53, 0xCA, 0xBD, 0x3B, 0x4C, 0xD5, 0xA2, + 0x9E, 0xE9, 0x70, 0x07, 0x81, 0xF6, 0x6F, 0x18, + 0xA0, 0xD7, 0x4E, 0x39, 0xBF, 0xC8, 0x51, 0x26, + 0xE2, 0x95, 0x0C, 0x7B, 0xFD, 0x8A, 0x13, 0x64, + 0xDC, 0xAB, 0x32, 0x45, 0xC3, 0xB4, 0x2D, 0x5A, + 0x55, 0x22, 0xBB, 0xCC, 0x4A, 0x3D, 0xA4, 0xD3, + 0x6B, 0x1C, 0x85, 0xF2, 0x74, 0x03, 0x9A, 0xED, + 0x29, 0x5E, 0xC7, 0xB0, 0x36, 0x41, 0xD8, 0xAF, + 0x17, 0x60, 0xF9, 0x8E, 0x08, 0x7F, 0xE6, 0x91, + 0xAD, 0xDA, 0x43, 0x34, 0xB2, 0xC5, 0x5C, 0x2B, + 0x93, 0xE4, 0x7D, 0x0A, 0x8C, 0xFB, 0x62, 0x15, + 0xD1, 0xA6, 0x3F, 0x48, 0xCE, 0xB9, 0x20, 0x57, + 0xEF, 0x98, 0x01, 0x76, 0xF0, 0x87, 0x1E, 0x69, + 0x00, 0x78, 0xF0, 0x88, 0x23, 0x5B, 0xD3, 0xAB, + 0x46, 0x3E, 0xB6, 0xCE, 0x65, 0x1D, 0x95, 0xED, + 0x8C, 0xF4, 0x7C, 0x04, 0xAF, 0xD7, 0x5F, 0x27, + 0xCA, 0xB2, 0x3A, 0x42, 0xE9, 0x91, 0x19, 0x61, + 0xDB, 0xA3, 0x2B, 0x53, 0xF8, 0x80, 0x08, 0x70, + 0x9D, 0xE5, 0x6D, 0x15, 0xBE, 0xC6, 0x4E, 0x36, + 0x57, 0x2F, 0xA7, 0xDF, 0x74, 0x0C, 0x84, 0xFC, + 0x11, 0x69, 0xE1, 0x99, 0x32, 0x4A, 0xC2, 0xBA, + 0x75, 0x0D, 0x85, 0xFD, 0x56, 0x2E, 0xA6, 0xDE, + 0x33, 0x4B, 0xC3, 0xBB, 0x10, 0x68, 0xE0, 0x98, + 0xF9, 0x81, 0x09, 0x71, 0xDA, 0xA2, 0x2A, 0x52, + 0xBF, 0xC7, 0x4F, 0x37, 0x9C, 0xE4, 0x6C, 0x14, + 0xAE, 0xD6, 0x5E, 0x26, 0x8D, 0xF5, 0x7D, 0x05, + 0xE8, 0x90, 0x18, 0x60, 0xCB, 0xB3, 0x3B, 0x43, + 0x22, 0x5A, 0xD2, 0xAA, 0x01, 0x79, 0xF1, 0x89, + 0x64, 0x1C, 0x94, 0xEC, 0x47, 0x3F, 0xB7, 0xCF, + 0xEA, 0x92, 0x1A, 0x62, 0xC9, 0xB1, 0x39, 0x41, + 0xAC, 0xD4, 0x5C, 0x24, 0x8F, 0xF7, 0x7F, 0x07, + 0x66, 0x1E, 0x96, 0xEE, 0x45, 0x3D, 0xB5, 0xCD, + 0x20, 0x58, 0xD0, 0xA8, 0x03, 0x7B, 0xF3, 0x8B, + 0x31, 0x49, 0xC1, 0xB9, 0x12, 0x6A, 0xE2, 0x9A, + 0x77, 0x0F, 0x87, 0xFF, 0x54, 0x2C, 0xA4, 0xDC, + 0xBD, 0xC5, 0x4D, 0x35, 0x9E, 0xE6, 0x6E, 0x16, + 0xFB, 0x83, 0x0B, 0x73, 0xD8, 0xA0, 0x28, 0x50, + 0x9F, 0xE7, 0x6F, 0x17, 0xBC, 0xC4, 0x4C, 0x34, + 0xD9, 0xA1, 0x29, 0x51, 0xFA, 0x82, 0x0A, 0x72, + 0x13, 0x6B, 0xE3, 0x9B, 0x30, 0x48, 0xC0, 0xB8, + 0x55, 0x2D, 0xA5, 0xDD, 0x76, 0x0E, 0x86, 0xFE, + 0x44, 0x3C, 0xB4, 0xCC, 0x67, 0x1F, 0x97, 0xEF, + 0x02, 0x7A, 0xF2, 0x8A, 0x21, 0x59, 0xD1, 0xA9, + 0xC8, 0xB0, 0x38, 0x40, 0xEB, 0x93, 0x1B, 0x63, + 0x8E, 0xF6, 0x7E, 0x06, 0xAD, 0xD5, 0x5D, 0x25, + 0x00, 0x79, 0xF2, 0x8B, 0x27, 0x5E, 0xD5, 0xAC, + 0x4E, 0x37, 0xBC, 0xC5, 0x69, 0x10, 0x9B, 0xE2, + 0x9C, 0xE5, 0x6E, 0x17, 0xBB, 0xC2, 0x49, 0x30, + 0xD2, 0xAB, 0x20, 0x59, 0xF5, 0x8C, 0x07, 0x7E, + 0xFB, 0x82, 0x09, 0x70, 0xDC, 0xA5, 0x2E, 0x57, + 0xB5, 0xCC, 0x47, 0x3E, 0x92, 0xEB, 0x60, 0x19, + 0x67, 0x1E, 0x95, 0xEC, 0x40, 0x39, 0xB2, 0xCB, + 0x29, 0x50, 0xDB, 0xA2, 0x0E, 0x77, 0xFC, 0x85, + 0x35, 0x4C, 0xC7, 0xBE, 0x12, 0x6B, 0xE0, 0x99, + 0x7B, 0x02, 0x89, 0xF0, 0x5C, 0x25, 0xAE, 0xD7, + 0xA9, 0xD0, 0x5B, 0x22, 0x8E, 0xF7, 0x7C, 0x05, + 0xE7, 0x9E, 0x15, 0x6C, 0xC0, 0xB9, 0x32, 0x4B, + 0xCE, 0xB7, 0x3C, 0x45, 0xE9, 0x90, 0x1B, 0x62, + 0x80, 0xF9, 0x72, 0x0B, 0xA7, 0xDE, 0x55, 0x2C, + 0x52, 0x2B, 0xA0, 0xD9, 0x75, 0x0C, 0x87, 0xFE, + 0x1C, 0x65, 0xEE, 0x97, 0x3B, 0x42, 0xC9, 0xB0, + 0x6A, 0x13, 0x98, 0xE1, 0x4D, 0x34, 0xBF, 0xC6, + 0x24, 0x5D, 0xD6, 0xAF, 0x03, 0x7A, 0xF1, 0x88, + 0xF6, 0x8F, 0x04, 0x7D, 0xD1, 0xA8, 0x23, 0x5A, + 0xB8, 0xC1, 0x4A, 0x33, 0x9F, 0xE6, 0x6D, 0x14, + 0x91, 0xE8, 0x63, 0x1A, 0xB6, 0xCF, 0x44, 0x3D, + 0xDF, 0xA6, 0x2D, 0x54, 0xF8, 0x81, 0x0A, 0x73, + 0x0D, 0x74, 0xFF, 0x86, 0x2A, 0x53, 0xD8, 0xA1, + 0x43, 0x3A, 0xB1, 0xC8, 0x64, 0x1D, 0x96, 0xEF, + 0x5F, 0x26, 0xAD, 0xD4, 0x78, 0x01, 0x8A, 0xF3, + 0x11, 0x68, 0xE3, 0x9A, 0x36, 0x4F, 0xC4, 0xBD, + 0xC3, 0xBA, 0x31, 0x48, 0xE4, 0x9D, 0x16, 0x6F, + 0x8D, 0xF4, 0x7F, 0x06, 0xAA, 0xD3, 0x58, 0x21, + 0xA4, 0xDD, 0x56, 0x2F, 0x83, 0xFA, 0x71, 0x08, + 0xEA, 0x93, 0x18, 0x61, 0xCD, 0xB4, 0x3F, 0x46, + 0x38, 0x41, 0xCA, 0xB3, 0x1F, 0x66, 0xED, 0x94, + 0x76, 0x0F, 0x84, 0xFD, 0x51, 0x28, 0xA3, 0xDA, + 0x00, 0x7A, 0xF4, 0x8E, 0x2B, 0x51, 0xDF, 0xA5, + 0x56, 0x2C, 0xA2, 0xD8, 0x7D, 0x07, 0x89, 0xF3, + 0xAC, 0xD6, 0x58, 0x22, 0x87, 0xFD, 0x73, 0x09, + 0xFA, 0x80, 0x0E, 0x74, 0xD1, 0xAB, 0x25, 0x5F, + 0x9B, 0xE1, 0x6F, 0x15, 0xB0, 0xCA, 0x44, 0x3E, + 0xCD, 0xB7, 0x39, 0x43, 0xE6, 0x9C, 0x12, 0x68, + 0x37, 0x4D, 0xC3, 0xB9, 0x1C, 0x66, 0xE8, 0x92, + 0x61, 0x1B, 0x95, 0xEF, 0x4A, 0x30, 0xBE, 0xC4, + 0xF5, 0x8F, 0x01, 0x7B, 0xDE, 0xA4, 0x2A, 0x50, + 0xA3, 0xD9, 0x57, 0x2D, 0x88, 0xF2, 0x7C, 0x06, + 0x59, 0x23, 0xAD, 0xD7, 0x72, 0x08, 0x86, 0xFC, + 0x0F, 0x75, 0xFB, 0x81, 0x24, 0x5E, 0xD0, 0xAA, + 0x6E, 0x14, 0x9A, 0xE0, 0x45, 0x3F, 0xB1, 0xCB, + 0x38, 0x42, 0xCC, 0xB6, 0x13, 0x69, 0xE7, 0x9D, + 0xC2, 0xB8, 0x36, 0x4C, 0xE9, 0x93, 0x1D, 0x67, + 0x94, 0xEE, 0x60, 0x1A, 0xBF, 0xC5, 0x4B, 0x31, + 0x29, 0x53, 0xDD, 0xA7, 0x02, 0x78, 0xF6, 0x8C, + 0x7F, 0x05, 0x8B, 0xF1, 0x54, 0x2E, 0xA0, 0xDA, + 0x85, 0xFF, 0x71, 0x0B, 0xAE, 0xD4, 0x5A, 0x20, + 0xD3, 0xA9, 0x27, 0x5D, 0xF8, 0x82, 0x0C, 0x76, + 0xB2, 0xC8, 0x46, 0x3C, 0x99, 0xE3, 0x6D, 0x17, + 0xE4, 0x9E, 0x10, 0x6A, 0xCF, 0xB5, 0x3B, 0x41, + 0x1E, 0x64, 0xEA, 0x90, 0x35, 0x4F, 0xC1, 0xBB, + 0x48, 0x32, 0xBC, 0xC6, 0x63, 0x19, 0x97, 0xED, + 0xDC, 0xA6, 0x28, 0x52, 0xF7, 0x8D, 0x03, 0x79, + 0x8A, 0xF0, 0x7E, 0x04, 0xA1, 0xDB, 0x55, 0x2F, + 0x70, 0x0A, 0x84, 0xFE, 0x5B, 0x21, 0xAF, 0xD5, + 0x26, 0x5C, 0xD2, 0xA8, 0x0D, 0x77, 0xF9, 0x83, + 0x47, 0x3D, 0xB3, 0xC9, 0x6C, 0x16, 0x98, 0xE2, + 0x11, 0x6B, 0xE5, 0x9F, 0x3A, 0x40, 0xCE, 0xB4, + 0xEB, 0x91, 0x1F, 0x65, 0xC0, 0xBA, 0x34, 0x4E, + 0xBD, 0xC7, 0x49, 0x33, 0x96, 0xEC, 0x62, 0x18, + 0x00, 0x7B, 0xF6, 0x8D, 0x2F, 0x54, 0xD9, 0xA2, + 0x5E, 0x25, 0xA8, 0xD3, 0x71, 0x0A, 0x87, 0xFC, + 0xBC, 0xC7, 0x4A, 0x31, 0x93, 0xE8, 0x65, 0x1E, + 0xE2, 0x99, 0x14, 0x6F, 0xCD, 0xB6, 0x3B, 0x40, + 0xBB, 0xC0, 0x4D, 0x36, 0x94, 0xEF, 0x62, 0x19, + 0xE5, 0x9E, 0x13, 0x68, 0xCA, 0xB1, 0x3C, 0x47, + 0x07, 0x7C, 0xF1, 0x8A, 0x28, 0x53, 0xDE, 0xA5, + 0x59, 0x22, 0xAF, 0xD4, 0x76, 0x0D, 0x80, 0xFB, + 0xB5, 0xCE, 0x43, 0x38, 0x9A, 0xE1, 0x6C, 0x17, + 0xEB, 0x90, 0x1D, 0x66, 0xC4, 0xBF, 0x32, 0x49, + 0x09, 0x72, 0xFF, 0x84, 0x26, 0x5D, 0xD0, 0xAB, + 0x57, 0x2C, 0xA1, 0xDA, 0x78, 0x03, 0x8E, 0xF5, + 0x0E, 0x75, 0xF8, 0x83, 0x21, 0x5A, 0xD7, 0xAC, + 0x50, 0x2B, 0xA6, 0xDD, 0x7F, 0x04, 0x89, 0xF2, + 0xB2, 0xC9, 0x44, 0x3F, 0x9D, 0xE6, 0x6B, 0x10, + 0xEC, 0x97, 0x1A, 0x61, 0xC3, 0xB8, 0x35, 0x4E, + 0xA9, 0xD2, 0x5F, 0x24, 0x86, 0xFD, 0x70, 0x0B, + 0xF7, 0x8C, 0x01, 0x7A, 0xD8, 0xA3, 0x2E, 0x55, + 0x15, 0x6E, 0xE3, 0x98, 0x3A, 0x41, 0xCC, 0xB7, + 0x4B, 0x30, 0xBD, 0xC6, 0x64, 0x1F, 0x92, 0xE9, + 0x12, 0x69, 0xE4, 0x9F, 0x3D, 0x46, 0xCB, 0xB0, + 0x4C, 0x37, 0xBA, 0xC1, 0x63, 0x18, 0x95, 0xEE, + 0xAE, 0xD5, 0x58, 0x23, 0x81, 0xFA, 0x77, 0x0C, + 0xF0, 0x8B, 0x06, 0x7D, 0xDF, 0xA4, 0x29, 0x52, + 0x1C, 0x67, 0xEA, 0x91, 0x33, 0x48, 0xC5, 0xBE, + 0x42, 0x39, 0xB4, 0xCF, 0x6D, 0x16, 0x9B, 0xE0, + 0xA0, 0xDB, 0x56, 0x2D, 0x8F, 0xF4, 0x79, 0x02, + 0xFE, 0x85, 0x08, 0x73, 0xD1, 0xAA, 0x27, 0x5C, + 0xA7, 0xDC, 0x51, 0x2A, 0x88, 0xF3, 0x7E, 0x05, + 0xF9, 0x82, 0x0F, 0x74, 0xD6, 0xAD, 0x20, 0x5B, + 0x1B, 0x60, 0xED, 0x96, 0x34, 0x4F, 0xC2, 0xB9, + 0x45, 0x3E, 0xB3, 0xC8, 0x6A, 0x11, 0x9C, 0xE7, + 0x00, 0x7C, 0xF8, 0x84, 0x33, 0x4F, 0xCB, 0xB7, + 0x66, 0x1A, 0x9E, 0xE2, 0x55, 0x29, 0xAD, 0xD1, + 0xCC, 0xB0, 0x34, 0x48, 0xFF, 0x83, 0x07, 0x7B, + 0xAA, 0xD6, 0x52, 0x2E, 0x99, 0xE5, 0x61, 0x1D, + 0x5B, 0x27, 0xA3, 0xDF, 0x68, 0x14, 0x90, 0xEC, + 0x3D, 0x41, 0xC5, 0xB9, 0x0E, 0x72, 0xF6, 0x8A, + 0x97, 0xEB, 0x6F, 0x13, 0xA4, 0xD8, 0x5C, 0x20, + 0xF1, 0x8D, 0x09, 0x75, 0xC2, 0xBE, 0x3A, 0x46, + 0xB6, 0xCA, 0x4E, 0x32, 0x85, 0xF9, 0x7D, 0x01, + 0xD0, 0xAC, 0x28, 0x54, 0xE3, 0x9F, 0x1B, 0x67, + 0x7A, 0x06, 0x82, 0xFE, 0x49, 0x35, 0xB1, 0xCD, + 0x1C, 0x60, 0xE4, 0x98, 0x2F, 0x53, 0xD7, 0xAB, + 0xED, 0x91, 0x15, 0x69, 0xDE, 0xA2, 0x26, 0x5A, + 0x8B, 0xF7, 0x73, 0x0F, 0xB8, 0xC4, 0x40, 0x3C, + 0x21, 0x5D, 0xD9, 0xA5, 0x12, 0x6E, 0xEA, 0x96, + 0x47, 0x3B, 0xBF, 0xC3, 0x74, 0x08, 0x8C, 0xF0, + 0xAF, 0xD3, 0x57, 0x2B, 0x9C, 0xE0, 0x64, 0x18, + 0xC9, 0xB5, 0x31, 0x4D, 0xFA, 0x86, 0x02, 0x7E, + 0x63, 0x1F, 0x9B, 0xE7, 0x50, 0x2C, 0xA8, 0xD4, + 0x05, 0x79, 0xFD, 0x81, 0x36, 0x4A, 0xCE, 0xB2, + 0xF4, 0x88, 0x0C, 0x70, 0xC7, 0xBB, 0x3F, 0x43, + 0x92, 0xEE, 0x6A, 0x16, 0xA1, 0xDD, 0x59, 0x25, + 0x38, 0x44, 0xC0, 0xBC, 0x0B, 0x77, 0xF3, 0x8F, + 0x5E, 0x22, 0xA6, 0xDA, 0x6D, 0x11, 0x95, 0xE9, + 0x19, 0x65, 0xE1, 0x9D, 0x2A, 0x56, 0xD2, 0xAE, + 0x7F, 0x03, 0x87, 0xFB, 0x4C, 0x30, 0xB4, 0xC8, + 0xD5, 0xA9, 0x2D, 0x51, 0xE6, 0x9A, 0x1E, 0x62, + 0xB3, 0xCF, 0x4B, 0x37, 0x80, 0xFC, 0x78, 0x04, + 0x42, 0x3E, 0xBA, 0xC6, 0x71, 0x0D, 0x89, 0xF5, + 0x24, 0x58, 0xDC, 0xA0, 0x17, 0x6B, 0xEF, 0x93, + 0x8E, 0xF2, 0x76, 0x0A, 0xBD, 0xC1, 0x45, 0x39, + 0xE8, 0x94, 0x10, 0x6C, 0xDB, 0xA7, 0x23, 0x5F, + 0x00, 0x7D, 0xFA, 0x87, 0x37, 0x4A, 0xCD, 0xB0, + 0x6E, 0x13, 0x94, 0xE9, 0x59, 0x24, 0xA3, 0xDE, + 0xDC, 0xA1, 0x26, 0x5B, 0xEB, 0x96, 0x11, 0x6C, + 0xB2, 0xCF, 0x48, 0x35, 0x85, 0xF8, 0x7F, 0x02, + 0x7B, 0x06, 0x81, 0xFC, 0x4C, 0x31, 0xB6, 0xCB, + 0x15, 0x68, 0xEF, 0x92, 0x22, 0x5F, 0xD8, 0xA5, + 0xA7, 0xDA, 0x5D, 0x20, 0x90, 0xED, 0x6A, 0x17, + 0xC9, 0xB4, 0x33, 0x4E, 0xFE, 0x83, 0x04, 0x79, + 0xF6, 0x8B, 0x0C, 0x71, 0xC1, 0xBC, 0x3B, 0x46, + 0x98, 0xE5, 0x62, 0x1F, 0xAF, 0xD2, 0x55, 0x28, + 0x2A, 0x57, 0xD0, 0xAD, 0x1D, 0x60, 0xE7, 0x9A, + 0x44, 0x39, 0xBE, 0xC3, 0x73, 0x0E, 0x89, 0xF4, + 0x8D, 0xF0, 0x77, 0x0A, 0xBA, 0xC7, 0x40, 0x3D, + 0xE3, 0x9E, 0x19, 0x64, 0xD4, 0xA9, 0x2E, 0x53, + 0x51, 0x2C, 0xAB, 0xD6, 0x66, 0x1B, 0x9C, 0xE1, + 0x3F, 0x42, 0xC5, 0xB8, 0x08, 0x75, 0xF2, 0x8F, + 0x2F, 0x52, 0xD5, 0xA8, 0x18, 0x65, 0xE2, 0x9F, + 0x41, 0x3C, 0xBB, 0xC6, 0x76, 0x0B, 0x8C, 0xF1, + 0xF3, 0x8E, 0x09, 0x74, 0xC4, 0xB9, 0x3E, 0x43, + 0x9D, 0xE0, 0x67, 0x1A, 0xAA, 0xD7, 0x50, 0x2D, + 0x54, 0x29, 0xAE, 0xD3, 0x63, 0x1E, 0x99, 0xE4, + 0x3A, 0x47, 0xC0, 0xBD, 0x0D, 0x70, 0xF7, 0x8A, + 0x88, 0xF5, 0x72, 0x0F, 0xBF, 0xC2, 0x45, 0x38, + 0xE6, 0x9B, 0x1C, 0x61, 0xD1, 0xAC, 0x2B, 0x56, + 0xD9, 0xA4, 0x23, 0x5E, 0xEE, 0x93, 0x14, 0x69, + 0xB7, 0xCA, 0x4D, 0x30, 0x80, 0xFD, 0x7A, 0x07, + 0x05, 0x78, 0xFF, 0x82, 0x32, 0x4F, 0xC8, 0xB5, + 0x6B, 0x16, 0x91, 0xEC, 0x5C, 0x21, 0xA6, 0xDB, + 0xA2, 0xDF, 0x58, 0x25, 0x95, 0xE8, 0x6F, 0x12, + 0xCC, 0xB1, 0x36, 0x4B, 0xFB, 0x86, 0x01, 0x7C, + 0x7E, 0x03, 0x84, 0xF9, 0x49, 0x34, 0xB3, 0xCE, + 0x10, 0x6D, 0xEA, 0x97, 0x27, 0x5A, 0xDD, 0xA0, + 0x00, 0x7E, 0xFC, 0x82, 0x3B, 0x45, 0xC7, 0xB9, + 0x76, 0x08, 0x8A, 0xF4, 0x4D, 0x33, 0xB1, 0xCF, + 0xEC, 0x92, 0x10, 0x6E, 0xD7, 0xA9, 0x2B, 0x55, + 0x9A, 0xE4, 0x66, 0x18, 0xA1, 0xDF, 0x5D, 0x23, + 0x1B, 0x65, 0xE7, 0x99, 0x20, 0x5E, 0xDC, 0xA2, + 0x6D, 0x13, 0x91, 0xEF, 0x56, 0x28, 0xAA, 0xD4, + 0xF7, 0x89, 0x0B, 0x75, 0xCC, 0xB2, 0x30, 0x4E, + 0x81, 0xFF, 0x7D, 0x03, 0xBA, 0xC4, 0x46, 0x38, + 0x36, 0x48, 0xCA, 0xB4, 0x0D, 0x73, 0xF1, 0x8F, + 0x40, 0x3E, 0xBC, 0xC2, 0x7B, 0x05, 0x87, 0xF9, + 0xDA, 0xA4, 0x26, 0x58, 0xE1, 0x9F, 0x1D, 0x63, + 0xAC, 0xD2, 0x50, 0x2E, 0x97, 0xE9, 0x6B, 0x15, + 0x2D, 0x53, 0xD1, 0xAF, 0x16, 0x68, 0xEA, 0x94, + 0x5B, 0x25, 0xA7, 0xD9, 0x60, 0x1E, 0x9C, 0xE2, + 0xC1, 0xBF, 0x3D, 0x43, 0xFA, 0x84, 0x06, 0x78, + 0xB7, 0xC9, 0x4B, 0x35, 0x8C, 0xF2, 0x70, 0x0E, + 0x6C, 0x12, 0x90, 0xEE, 0x57, 0x29, 0xAB, 0xD5, + 0x1A, 0x64, 0xE6, 0x98, 0x21, 0x5F, 0xDD, 0xA3, + 0x80, 0xFE, 0x7C, 0x02, 0xBB, 0xC5, 0x47, 0x39, + 0xF6, 0x88, 0x0A, 0x74, 0xCD, 0xB3, 0x31, 0x4F, + 0x77, 0x09, 0x8B, 0xF5, 0x4C, 0x32, 0xB0, 0xCE, + 0x01, 0x7F, 0xFD, 0x83, 0x3A, 0x44, 0xC6, 0xB8, + 0x9B, 0xE5, 0x67, 0x19, 0xA0, 0xDE, 0x5C, 0x22, + 0xED, 0x93, 0x11, 0x6F, 0xD6, 0xA8, 0x2A, 0x54, + 0x5A, 0x24, 0xA6, 0xD8, 0x61, 0x1F, 0x9D, 0xE3, + 0x2C, 0x52, 0xD0, 0xAE, 0x17, 0x69, 0xEB, 0x95, + 0xB6, 0xC8, 0x4A, 0x34, 0x8D, 0xF3, 0x71, 0x0F, + 0xC0, 0xBE, 0x3C, 0x42, 0xFB, 0x85, 0x07, 0x79, + 0x41, 0x3F, 0xBD, 0xC3, 0x7A, 0x04, 0x86, 0xF8, + 0x37, 0x49, 0xCB, 0xB5, 0x0C, 0x72, 0xF0, 0x8E, + 0xAD, 0xD3, 0x51, 0x2F, 0x96, 0xE8, 0x6A, 0x14, + 0xDB, 0xA5, 0x27, 0x59, 0xE0, 0x9E, 0x1C, 0x62, + 0x00, 0x7F, 0xFE, 0x81, 0x3F, 0x40, 0xC1, 0xBE, + 0x7E, 0x01, 0x80, 0xFF, 0x41, 0x3E, 0xBF, 0xC0, + 0xFC, 0x83, 0x02, 0x7D, 0xC3, 0xBC, 0x3D, 0x42, + 0x82, 0xFD, 0x7C, 0x03, 0xBD, 0xC2, 0x43, 0x3C, + 0x3B, 0x44, 0xC5, 0xBA, 0x04, 0x7B, 0xFA, 0x85, + 0x45, 0x3A, 0xBB, 0xC4, 0x7A, 0x05, 0x84, 0xFB, + 0xC7, 0xB8, 0x39, 0x46, 0xF8, 0x87, 0x06, 0x79, + 0xB9, 0xC6, 0x47, 0x38, 0x86, 0xF9, 0x78, 0x07, + 0x76, 0x09, 0x88, 0xF7, 0x49, 0x36, 0xB7, 0xC8, + 0x08, 0x77, 0xF6, 0x89, 0x37, 0x48, 0xC9, 0xB6, + 0x8A, 0xF5, 0x74, 0x0B, 0xB5, 0xCA, 0x4B, 0x34, + 0xF4, 0x8B, 0x0A, 0x75, 0xCB, 0xB4, 0x35, 0x4A, + 0x4D, 0x32, 0xB3, 0xCC, 0x72, 0x0D, 0x8C, 0xF3, + 0x33, 0x4C, 0xCD, 0xB2, 0x0C, 0x73, 0xF2, 0x8D, + 0xB1, 0xCE, 0x4F, 0x30, 0x8E, 0xF1, 0x70, 0x0F, + 0xCF, 0xB0, 0x31, 0x4E, 0xF0, 0x8F, 0x0E, 0x71, + 0xEC, 0x93, 0x12, 0x6D, 0xD3, 0xAC, 0x2D, 0x52, + 0x92, 0xED, 0x6C, 0x13, 0xAD, 0xD2, 0x53, 0x2C, + 0x10, 0x6F, 0xEE, 0x91, 0x2F, 0x50, 0xD1, 0xAE, + 0x6E, 0x11, 0x90, 0xEF, 0x51, 0x2E, 0xAF, 0xD0, + 0xD7, 0xA8, 0x29, 0x56, 0xE8, 0x97, 0x16, 0x69, + 0xA9, 0xD6, 0x57, 0x28, 0x96, 0xE9, 0x68, 0x17, + 0x2B, 0x54, 0xD5, 0xAA, 0x14, 0x6B, 0xEA, 0x95, + 0x55, 0x2A, 0xAB, 0xD4, 0x6A, 0x15, 0x94, 0xEB, + 0x9A, 0xE5, 0x64, 0x1B, 0xA5, 0xDA, 0x5B, 0x24, + 0xE4, 0x9B, 0x1A, 0x65, 0xDB, 0xA4, 0x25, 0x5A, + 0x66, 0x19, 0x98, 0xE7, 0x59, 0x26, 0xA7, 0xD8, + 0x18, 0x67, 0xE6, 0x99, 0x27, 0x58, 0xD9, 0xA6, + 0xA1, 0xDE, 0x5F, 0x20, 0x9E, 0xE1, 0x60, 0x1F, + 0xDF, 0xA0, 0x21, 0x5E, 0xE0, 0x9F, 0x1E, 0x61, + 0x5D, 0x22, 0xA3, 0xDC, 0x62, 0x1D, 0x9C, 0xE3, + 0x23, 0x5C, 0xDD, 0xA2, 0x1C, 0x63, 0xE2, 0x9D, + 0x00, 0x80, 0xC3, 0x43, 0x45, 0xC5, 0x86, 0x06, + 0x8A, 0x0A, 0x49, 0xC9, 0xCF, 0x4F, 0x0C, 0x8C, + 0xD7, 0x57, 0x14, 0x94, 0x92, 0x12, 0x51, 0xD1, + 0x5D, 0xDD, 0x9E, 0x1E, 0x18, 0x98, 0xDB, 0x5B, + 0x6D, 0xED, 0xAE, 0x2E, 0x28, 0xA8, 0xEB, 0x6B, + 0xE7, 0x67, 0x24, 0xA4, 0xA2, 0x22, 0x61, 0xE1, + 0xBA, 0x3A, 0x79, 0xF9, 0xFF, 0x7F, 0x3C, 0xBC, + 0x30, 0xB0, 0xF3, 0x73, 0x75, 0xF5, 0xB6, 0x36, + 0xDA, 0x5A, 0x19, 0x99, 0x9F, 0x1F, 0x5C, 0xDC, + 0x50, 0xD0, 0x93, 0x13, 0x15, 0x95, 0xD6, 0x56, + 0x0D, 0x8D, 0xCE, 0x4E, 0x48, 0xC8, 0x8B, 0x0B, + 0x87, 0x07, 0x44, 0xC4, 0xC2, 0x42, 0x01, 0x81, + 0xB7, 0x37, 0x74, 0xF4, 0xF2, 0x72, 0x31, 0xB1, + 0x3D, 0xBD, 0xFE, 0x7E, 0x78, 0xF8, 0xBB, 0x3B, + 0x60, 0xE0, 0xA3, 0x23, 0x25, 0xA5, 0xE6, 0x66, + 0xEA, 0x6A, 0x29, 0xA9, 0xAF, 0x2F, 0x6C, 0xEC, + 0x77, 0xF7, 0xB4, 0x34, 0x32, 0xB2, 0xF1, 0x71, + 0xFD, 0x7D, 0x3E, 0xBE, 0xB8, 0x38, 0x7B, 0xFB, + 0xA0, 0x20, 0x63, 0xE3, 0xE5, 0x65, 0x26, 0xA6, + 0x2A, 0xAA, 0xE9, 0x69, 0x6F, 0xEF, 0xAC, 0x2C, + 0x1A, 0x9A, 0xD9, 0x59, 0x5F, 0xDF, 0x9C, 0x1C, + 0x90, 0x10, 0x53, 0xD3, 0xD5, 0x55, 0x16, 0x96, + 0xCD, 0x4D, 0x0E, 0x8E, 0x88, 0x08, 0x4B, 0xCB, + 0x47, 0xC7, 0x84, 0x04, 0x02, 0x82, 0xC1, 0x41, + 0xAD, 0x2D, 0x6E, 0xEE, 0xE8, 0x68, 0x2B, 0xAB, + 0x27, 0xA7, 0xE4, 0x64, 0x62, 0xE2, 0xA1, 0x21, + 0x7A, 0xFA, 0xB9, 0x39, 0x3F, 0xBF, 0xFC, 0x7C, + 0xF0, 0x70, 0x33, 0xB3, 0xB5, 0x35, 0x76, 0xF6, + 0xC0, 0x40, 0x03, 0x83, 0x85, 0x05, 0x46, 0xC6, + 0x4A, 0xCA, 0x89, 0x09, 0x0F, 0x8F, 0xCC, 0x4C, + 0x17, 0x97, 0xD4, 0x54, 0x52, 0xD2, 0x91, 0x11, + 0x9D, 0x1D, 0x5E, 0xDE, 0xD8, 0x58, 0x1B, 0x9B, + 0x00, 0x81, 0xC1, 0x40, 0x41, 0xC0, 0x80, 0x01, + 0x82, 0x03, 0x43, 0xC2, 0xC3, 0x42, 0x02, 0x83, + 0xC7, 0x46, 0x06, 0x87, 0x86, 0x07, 0x47, 0xC6, + 0x45, 0xC4, 0x84, 0x05, 0x04, 0x85, 0xC5, 0x44, + 0x4D, 0xCC, 0x8C, 0x0D, 0x0C, 0x8D, 0xCD, 0x4C, + 0xCF, 0x4E, 0x0E, 0x8F, 0x8E, 0x0F, 0x4F, 0xCE, + 0x8A, 0x0B, 0x4B, 0xCA, 0xCB, 0x4A, 0x0A, 0x8B, + 0x08, 0x89, 0xC9, 0x48, 0x49, 0xC8, 0x88, 0x09, + 0x9A, 0x1B, 0x5B, 0xDA, 0xDB, 0x5A, 0x1A, 0x9B, + 0x18, 0x99, 0xD9, 0x58, 0x59, 0xD8, 0x98, 0x19, + 0x5D, 0xDC, 0x9C, 0x1D, 0x1C, 0x9D, 0xDD, 0x5C, + 0xDF, 0x5E, 0x1E, 0x9F, 0x9E, 0x1F, 0x5F, 0xDE, + 0xD7, 0x56, 0x16, 0x97, 0x96, 0x17, 0x57, 0xD6, + 0x55, 0xD4, 0x94, 0x15, 0x14, 0x95, 0xD5, 0x54, + 0x10, 0x91, 0xD1, 0x50, 0x51, 0xD0, 0x90, 0x11, + 0x92, 0x13, 0x53, 0xD2, 0xD3, 0x52, 0x12, 0x93, + 0xF7, 0x76, 0x36, 0xB7, 0xB6, 0x37, 0x77, 0xF6, + 0x75, 0xF4, 0xB4, 0x35, 0x34, 0xB5, 0xF5, 0x74, + 0x30, 0xB1, 0xF1, 0x70, 0x71, 0xF0, 0xB0, 0x31, + 0xB2, 0x33, 0x73, 0xF2, 0xF3, 0x72, 0x32, 0xB3, + 0xBA, 0x3B, 0x7B, 0xFA, 0xFB, 0x7A, 0x3A, 0xBB, + 0x38, 0xB9, 0xF9, 0x78, 0x79, 0xF8, 0xB8, 0x39, + 0x7D, 0xFC, 0xBC, 0x3D, 0x3C, 0xBD, 0xFD, 0x7C, + 0xFF, 0x7E, 0x3E, 0xBF, 0xBE, 0x3F, 0x7F, 0xFE, + 0x6D, 0xEC, 0xAC, 0x2D, 0x2C, 0xAD, 0xED, 0x6C, + 0xEF, 0x6E, 0x2E, 0xAF, 0xAE, 0x2F, 0x6F, 0xEE, + 0xAA, 0x2B, 0x6B, 0xEA, 0xEB, 0x6A, 0x2A, 0xAB, + 0x28, 0xA9, 0xE9, 0x68, 0x69, 0xE8, 0xA8, 0x29, + 0x20, 0xA1, 0xE1, 0x60, 0x61, 0xE0, 0xA0, 0x21, + 0xA2, 0x23, 0x63, 0xE2, 0xE3, 0x62, 0x22, 0xA3, + 0xE7, 0x66, 0x26, 0xA7, 0xA6, 0x27, 0x67, 0xE6, + 0x65, 0xE4, 0xA4, 0x25, 0x24, 0xA5, 0xE5, 0x64, + 0x00, 0x82, 0xC7, 0x45, 0x4D, 0xCF, 0x8A, 0x08, + 0x9A, 0x18, 0x5D, 0xDF, 0xD7, 0x55, 0x10, 0x92, + 0xF7, 0x75, 0x30, 0xB2, 0xBA, 0x38, 0x7D, 0xFF, + 0x6D, 0xEF, 0xAA, 0x28, 0x20, 0xA2, 0xE7, 0x65, + 0x2D, 0xAF, 0xEA, 0x68, 0x60, 0xE2, 0xA7, 0x25, + 0xB7, 0x35, 0x70, 0xF2, 0xFA, 0x78, 0x3D, 0xBF, + 0xDA, 0x58, 0x1D, 0x9F, 0x97, 0x15, 0x50, 0xD2, + 0x40, 0xC2, 0x87, 0x05, 0x0D, 0x8F, 0xCA, 0x48, + 0x5A, 0xD8, 0x9D, 0x1F, 0x17, 0x95, 0xD0, 0x52, + 0xC0, 0x42, 0x07, 0x85, 0x8D, 0x0F, 0x4A, 0xC8, + 0xAD, 0x2F, 0x6A, 0xE8, 0xE0, 0x62, 0x27, 0xA5, + 0x37, 0xB5, 0xF0, 0x72, 0x7A, 0xF8, 0xBD, 0x3F, + 0x77, 0xF5, 0xB0, 0x32, 0x3A, 0xB8, 0xFD, 0x7F, + 0xED, 0x6F, 0x2A, 0xA8, 0xA0, 0x22, 0x67, 0xE5, + 0x80, 0x02, 0x47, 0xC5, 0xCD, 0x4F, 0x0A, 0x88, + 0x1A, 0x98, 0xDD, 0x5F, 0x57, 0xD5, 0x90, 0x12, + 0xB4, 0x36, 0x73, 0xF1, 0xF9, 0x7B, 0x3E, 0xBC, + 0x2E, 0xAC, 0xE9, 0x6B, 0x63, 0xE1, 0xA4, 0x26, + 0x43, 0xC1, 0x84, 0x06, 0x0E, 0x8C, 0xC9, 0x4B, + 0xD9, 0x5B, 0x1E, 0x9C, 0x94, 0x16, 0x53, 0xD1, + 0x99, 0x1B, 0x5E, 0xDC, 0xD4, 0x56, 0x13, 0x91, + 0x03, 0x81, 0xC4, 0x46, 0x4E, 0xCC, 0x89, 0x0B, + 0x6E, 0xEC, 0xA9, 0x2B, 0x23, 0xA1, 0xE4, 0x66, + 0xF4, 0x76, 0x33, 0xB1, 0xB9, 0x3B, 0x7E, 0xFC, + 0xEE, 0x6C, 0x29, 0xAB, 0xA3, 0x21, 0x64, 0xE6, + 0x74, 0xF6, 0xB3, 0x31, 0x39, 0xBB, 0xFE, 0x7C, + 0x19, 0x9B, 0xDE, 0x5C, 0x54, 0xD6, 0x93, 0x11, + 0x83, 0x01, 0x44, 0xC6, 0xCE, 0x4C, 0x09, 0x8B, + 0xC3, 0x41, 0x04, 0x86, 0x8E, 0x0C, 0x49, 0xCB, + 0x59, 0xDB, 0x9E, 0x1C, 0x14, 0x96, 0xD3, 0x51, + 0x34, 0xB6, 0xF3, 0x71, 0x79, 0xFB, 0xBE, 0x3C, + 0xAE, 0x2C, 0x69, 0xEB, 0xE3, 0x61, 0x24, 0xA6, + 0x00, 0x83, 0xC5, 0x46, 0x49, 0xCA, 0x8C, 0x0F, + 0x92, 0x11, 0x57, 0xD4, 0xDB, 0x58, 0x1E, 0x9D, + 0xE7, 0x64, 0x22, 0xA1, 0xAE, 0x2D, 0x6B, 0xE8, + 0x75, 0xF6, 0xB0, 0x33, 0x3C, 0xBF, 0xF9, 0x7A, + 0x0D, 0x8E, 0xC8, 0x4B, 0x44, 0xC7, 0x81, 0x02, + 0x9F, 0x1C, 0x5A, 0xD9, 0xD6, 0x55, 0x13, 0x90, + 0xEA, 0x69, 0x2F, 0xAC, 0xA3, 0x20, 0x66, 0xE5, + 0x78, 0xFB, 0xBD, 0x3E, 0x31, 0xB2, 0xF4, 0x77, + 0x1A, 0x99, 0xDF, 0x5C, 0x53, 0xD0, 0x96, 0x15, + 0x88, 0x0B, 0x4D, 0xCE, 0xC1, 0x42, 0x04, 0x87, + 0xFD, 0x7E, 0x38, 0xBB, 0xB4, 0x37, 0x71, 0xF2, + 0x6F, 0xEC, 0xAA, 0x29, 0x26, 0xA5, 0xE3, 0x60, + 0x17, 0x94, 0xD2, 0x51, 0x5E, 0xDD, 0x9B, 0x18, + 0x85, 0x06, 0x40, 0xC3, 0xCC, 0x4F, 0x09, 0x8A, + 0xF0, 0x73, 0x35, 0xB6, 0xB9, 0x3A, 0x7C, 0xFF, + 0x62, 0xE1, 0xA7, 0x24, 0x2B, 0xA8, 0xEE, 0x6D, + 0x34, 0xB7, 0xF1, 0x72, 0x7D, 0xFE, 0xB8, 0x3B, + 0xA6, 0x25, 0x63, 0xE0, 0xEF, 0x6C, 0x2A, 0xA9, + 0xD3, 0x50, 0x16, 0x95, 0x9A, 0x19, 0x5F, 0xDC, + 0x41, 0xC2, 0x84, 0x07, 0x08, 0x8B, 0xCD, 0x4E, + 0x39, 0xBA, 0xFC, 0x7F, 0x70, 0xF3, 0xB5, 0x36, + 0xAB, 0x28, 0x6E, 0xED, 0xE2, 0x61, 0x27, 0xA4, + 0xDE, 0x5D, 0x1B, 0x98, 0x97, 0x14, 0x52, 0xD1, + 0x4C, 0xCF, 0x89, 0x0A, 0x05, 0x86, 0xC0, 0x43, + 0x2E, 0xAD, 0xEB, 0x68, 0x67, 0xE4, 0xA2, 0x21, + 0xBC, 0x3F, 0x79, 0xFA, 0xF5, 0x76, 0x30, 0xB3, + 0xC9, 0x4A, 0x0C, 0x8F, 0x80, 0x03, 0x45, 0xC6, + 0x5B, 0xD8, 0x9E, 0x1D, 0x12, 0x91, 0xD7, 0x54, + 0x23, 0xA0, 0xE6, 0x65, 0x6A, 0xE9, 0xAF, 0x2C, + 0xB1, 0x32, 0x74, 0xF7, 0xF8, 0x7B, 0x3D, 0xBE, + 0xC4, 0x47, 0x01, 0x82, 0x8D, 0x0E, 0x48, 0xCB, + 0x56, 0xD5, 0x93, 0x10, 0x1F, 0x9C, 0xDA, 0x59, + 0x00, 0x84, 0xCB, 0x4F, 0x55, 0xD1, 0x9E, 0x1A, + 0xAA, 0x2E, 0x61, 0xE5, 0xFF, 0x7B, 0x34, 0xB0, + 0x97, 0x13, 0x5C, 0xD8, 0xC2, 0x46, 0x09, 0x8D, + 0x3D, 0xB9, 0xF6, 0x72, 0x68, 0xEC, 0xA3, 0x27, + 0xED, 0x69, 0x26, 0xA2, 0xB8, 0x3C, 0x73, 0xF7, + 0x47, 0xC3, 0x8C, 0x08, 0x12, 0x96, 0xD9, 0x5D, + 0x7A, 0xFE, 0xB1, 0x35, 0x2F, 0xAB, 0xE4, 0x60, + 0xD0, 0x54, 0x1B, 0x9F, 0x85, 0x01, 0x4E, 0xCA, + 0x19, 0x9D, 0xD2, 0x56, 0x4C, 0xC8, 0x87, 0x03, + 0xB3, 0x37, 0x78, 0xFC, 0xE6, 0x62, 0x2D, 0xA9, + 0x8E, 0x0A, 0x45, 0xC1, 0xDB, 0x5F, 0x10, 0x94, + 0x24, 0xA0, 0xEF, 0x6B, 0x71, 0xF5, 0xBA, 0x3E, + 0xF4, 0x70, 0x3F, 0xBB, 0xA1, 0x25, 0x6A, 0xEE, + 0x5E, 0xDA, 0x95, 0x11, 0x0B, 0x8F, 0xC0, 0x44, + 0x63, 0xE7, 0xA8, 0x2C, 0x36, 0xB2, 0xFD, 0x79, + 0xC9, 0x4D, 0x02, 0x86, 0x9C, 0x18, 0x57, 0xD3, + 0x32, 0xB6, 0xF9, 0x7D, 0x67, 0xE3, 0xAC, 0x28, + 0x98, 0x1C, 0x53, 0xD7, 0xCD, 0x49, 0x06, 0x82, + 0xA5, 0x21, 0x6E, 0xEA, 0xF0, 0x74, 0x3B, 0xBF, + 0x0F, 0x8B, 0xC4, 0x40, 0x5A, 0xDE, 0x91, 0x15, + 0xDF, 0x5B, 0x14, 0x90, 0x8A, 0x0E, 0x41, 0xC5, + 0x75, 0xF1, 0xBE, 0x3A, 0x20, 0xA4, 0xEB, 0x6F, + 0x48, 0xCC, 0x83, 0x07, 0x1D, 0x99, 0xD6, 0x52, + 0xE2, 0x66, 0x29, 0xAD, 0xB7, 0x33, 0x7C, 0xF8, + 0x2B, 0xAF, 0xE0, 0x64, 0x7E, 0xFA, 0xB5, 0x31, + 0x81, 0x05, 0x4A, 0xCE, 0xD4, 0x50, 0x1F, 0x9B, + 0xBC, 0x38, 0x77, 0xF3, 0xE9, 0x6D, 0x22, 0xA6, + 0x16, 0x92, 0xDD, 0x59, 0x43, 0xC7, 0x88, 0x0C, + 0xC6, 0x42, 0x0D, 0x89, 0x93, 0x17, 0x58, 0xDC, + 0x6C, 0xE8, 0xA7, 0x23, 0x39, 0xBD, 0xF2, 0x76, + 0x51, 0xD5, 0x9A, 0x1E, 0x04, 0x80, 0xCF, 0x4B, + 0xFB, 0x7F, 0x30, 0xB4, 0xAE, 0x2A, 0x65, 0xE1, + 0x00, 0x85, 0xC9, 0x4C, 0x51, 0xD4, 0x98, 0x1D, + 0xA2, 0x27, 0x6B, 0xEE, 0xF3, 0x76, 0x3A, 0xBF, + 0x87, 0x02, 0x4E, 0xCB, 0xD6, 0x53, 0x1F, 0x9A, + 0x25, 0xA0, 0xEC, 0x69, 0x74, 0xF1, 0xBD, 0x38, + 0xCD, 0x48, 0x04, 0x81, 0x9C, 0x19, 0x55, 0xD0, + 0x6F, 0xEA, 0xA6, 0x23, 0x3E, 0xBB, 0xF7, 0x72, + 0x4A, 0xCF, 0x83, 0x06, 0x1B, 0x9E, 0xD2, 0x57, + 0xE8, 0x6D, 0x21, 0xA4, 0xB9, 0x3C, 0x70, 0xF5, + 0x59, 0xDC, 0x90, 0x15, 0x08, 0x8D, 0xC1, 0x44, + 0xFB, 0x7E, 0x32, 0xB7, 0xAA, 0x2F, 0x63, 0xE6, + 0xDE, 0x5B, 0x17, 0x92, 0x8F, 0x0A, 0x46, 0xC3, + 0x7C, 0xF9, 0xB5, 0x30, 0x2D, 0xA8, 0xE4, 0x61, + 0x94, 0x11, 0x5D, 0xD8, 0xC5, 0x40, 0x0C, 0x89, + 0x36, 0xB3, 0xFF, 0x7A, 0x67, 0xE2, 0xAE, 0x2B, + 0x13, 0x96, 0xDA, 0x5F, 0x42, 0xC7, 0x8B, 0x0E, + 0xB1, 0x34, 0x78, 0xFD, 0xE0, 0x65, 0x29, 0xAC, + 0xB2, 0x37, 0x7B, 0xFE, 0xE3, 0x66, 0x2A, 0xAF, + 0x10, 0x95, 0xD9, 0x5C, 0x41, 0xC4, 0x88, 0x0D, + 0x35, 0xB0, 0xFC, 0x79, 0x64, 0xE1, 0xAD, 0x28, + 0x97, 0x12, 0x5E, 0xDB, 0xC6, 0x43, 0x0F, 0x8A, + 0x7F, 0xFA, 0xB6, 0x33, 0x2E, 0xAB, 0xE7, 0x62, + 0xDD, 0x58, 0x14, 0x91, 0x8C, 0x09, 0x45, 0xC0, + 0xF8, 0x7D, 0x31, 0xB4, 0xA9, 0x2C, 0x60, 0xE5, + 0x5A, 0xDF, 0x93, 0x16, 0x0B, 0x8E, 0xC2, 0x47, + 0xEB, 0x6E, 0x22, 0xA7, 0xBA, 0x3F, 0x73, 0xF6, + 0x49, 0xCC, 0x80, 0x05, 0x18, 0x9D, 0xD1, 0x54, + 0x6C, 0xE9, 0xA5, 0x20, 0x3D, 0xB8, 0xF4, 0x71, + 0xCE, 0x4B, 0x07, 0x82, 0x9F, 0x1A, 0x56, 0xD3, + 0x26, 0xA3, 0xEF, 0x6A, 0x77, 0xF2, 0xBE, 0x3B, + 0x84, 0x01, 0x4D, 0xC8, 0xD5, 0x50, 0x1C, 0x99, + 0xA1, 0x24, 0x68, 0xED, 0xF0, 0x75, 0x39, 0xBC, + 0x03, 0x86, 0xCA, 0x4F, 0x52, 0xD7, 0x9B, 0x1E, + 0x00, 0x86, 0xCF, 0x49, 0x5D, 0xDB, 0x92, 0x14, + 0xBA, 0x3C, 0x75, 0xF3, 0xE7, 0x61, 0x28, 0xAE, + 0xB7, 0x31, 0x78, 0xFE, 0xEA, 0x6C, 0x25, 0xA3, + 0x0D, 0x8B, 0xC2, 0x44, 0x50, 0xD6, 0x9F, 0x19, + 0xAD, 0x2B, 0x62, 0xE4, 0xF0, 0x76, 0x3F, 0xB9, + 0x17, 0x91, 0xD8, 0x5E, 0x4A, 0xCC, 0x85, 0x03, + 0x1A, 0x9C, 0xD5, 0x53, 0x47, 0xC1, 0x88, 0x0E, + 0xA0, 0x26, 0x6F, 0xE9, 0xFD, 0x7B, 0x32, 0xB4, + 0x99, 0x1F, 0x56, 0xD0, 0xC4, 0x42, 0x0B, 0x8D, + 0x23, 0xA5, 0xEC, 0x6A, 0x7E, 0xF8, 0xB1, 0x37, + 0x2E, 0xA8, 0xE1, 0x67, 0x73, 0xF5, 0xBC, 0x3A, + 0x94, 0x12, 0x5B, 0xDD, 0xC9, 0x4F, 0x06, 0x80, + 0x34, 0xB2, 0xFB, 0x7D, 0x69, 0xEF, 0xA6, 0x20, + 0x8E, 0x08, 0x41, 0xC7, 0xD3, 0x55, 0x1C, 0x9A, + 0x83, 0x05, 0x4C, 0xCA, 0xDE, 0x58, 0x11, 0x97, + 0x39, 0xBF, 0xF6, 0x70, 0x64, 0xE2, 0xAB, 0x2D, + 0xF1, 0x77, 0x3E, 0xB8, 0xAC, 0x2A, 0x63, 0xE5, + 0x4B, 0xCD, 0x84, 0x02, 0x16, 0x90, 0xD9, 0x5F, + 0x46, 0xC0, 0x89, 0x0F, 0x1B, 0x9D, 0xD4, 0x52, + 0xFC, 0x7A, 0x33, 0xB5, 0xA1, 0x27, 0x6E, 0xE8, + 0x5C, 0xDA, 0x93, 0x15, 0x01, 0x87, 0xCE, 0x48, + 0xE6, 0x60, 0x29, 0xAF, 0xBB, 0x3D, 0x74, 0xF2, + 0xEB, 0x6D, 0x24, 0xA2, 0xB6, 0x30, 0x79, 0xFF, + 0x51, 0xD7, 0x9E, 0x18, 0x0C, 0x8A, 0xC3, 0x45, + 0x68, 0xEE, 0xA7, 0x21, 0x35, 0xB3, 0xFA, 0x7C, + 0xD2, 0x54, 0x1D, 0x9B, 0x8F, 0x09, 0x40, 0xC6, + 0xDF, 0x59, 0x10, 0x96, 0x82, 0x04, 0x4D, 0xCB, + 0x65, 0xE3, 0xAA, 0x2C, 0x38, 0xBE, 0xF7, 0x71, + 0xC5, 0x43, 0x0A, 0x8C, 0x98, 0x1E, 0x57, 0xD1, + 0x7F, 0xF9, 0xB0, 0x36, 0x22, 0xA4, 0xED, 0x6B, + 0x72, 0xF4, 0xBD, 0x3B, 0x2F, 0xA9, 0xE0, 0x66, + 0xC8, 0x4E, 0x07, 0x81, 0x95, 0x13, 0x5A, 0xDC, + 0x00, 0x87, 0xCD, 0x4A, 0x59, 0xDE, 0x94, 0x13, + 0xB2, 0x35, 0x7F, 0xF8, 0xEB, 0x6C, 0x26, 0xA1, + 0xA7, 0x20, 0x6A, 0xED, 0xFE, 0x79, 0x33, 0xB4, + 0x15, 0x92, 0xD8, 0x5F, 0x4C, 0xCB, 0x81, 0x06, + 0x8D, 0x0A, 0x40, 0xC7, 0xD4, 0x53, 0x19, 0x9E, + 0x3F, 0xB8, 0xF2, 0x75, 0x66, 0xE1, 0xAB, 0x2C, + 0x2A, 0xAD, 0xE7, 0x60, 0x73, 0xF4, 0xBE, 0x39, + 0x98, 0x1F, 0x55, 0xD2, 0xC1, 0x46, 0x0C, 0x8B, + 0xD9, 0x5E, 0x14, 0x93, 0x80, 0x07, 0x4D, 0xCA, + 0x6B, 0xEC, 0xA6, 0x21, 0x32, 0xB5, 0xFF, 0x78, + 0x7E, 0xF9, 0xB3, 0x34, 0x27, 0xA0, 0xEA, 0x6D, + 0xCC, 0x4B, 0x01, 0x86, 0x95, 0x12, 0x58, 0xDF, + 0x54, 0xD3, 0x99, 0x1E, 0x0D, 0x8A, 0xC0, 0x47, + 0xE6, 0x61, 0x2B, 0xAC, 0xBF, 0x38, 0x72, 0xF5, + 0xF3, 0x74, 0x3E, 0xB9, 0xAA, 0x2D, 0x67, 0xE0, + 0x41, 0xC6, 0x8C, 0x0B, 0x18, 0x9F, 0xD5, 0x52, + 0x71, 0xF6, 0xBC, 0x3B, 0x28, 0xAF, 0xE5, 0x62, + 0xC3, 0x44, 0x0E, 0x89, 0x9A, 0x1D, 0x57, 0xD0, + 0xD6, 0x51, 0x1B, 0x9C, 0x8F, 0x08, 0x42, 0xC5, + 0x64, 0xE3, 0xA9, 0x2E, 0x3D, 0xBA, 0xF0, 0x77, + 0xFC, 0x7B, 0x31, 0xB6, 0xA5, 0x22, 0x68, 0xEF, + 0x4E, 0xC9, 0x83, 0x04, 0x17, 0x90, 0xDA, 0x5D, + 0x5B, 0xDC, 0x96, 0x11, 0x02, 0x85, 0xCF, 0x48, + 0xE9, 0x6E, 0x24, 0xA3, 0xB0, 0x37, 0x7D, 0xFA, + 0xA8, 0x2F, 0x65, 0xE2, 0xF1, 0x76, 0x3C, 0xBB, + 0x1A, 0x9D, 0xD7, 0x50, 0x43, 0xC4, 0x8E, 0x09, + 0x0F, 0x88, 0xC2, 0x45, 0x56, 0xD1, 0x9B, 0x1C, + 0xBD, 0x3A, 0x70, 0xF7, 0xE4, 0x63, 0x29, 0xAE, + 0x25, 0xA2, 0xE8, 0x6F, 0x7C, 0xFB, 0xB1, 0x36, + 0x97, 0x10, 0x5A, 0xDD, 0xCE, 0x49, 0x03, 0x84, + 0x82, 0x05, 0x4F, 0xC8, 0xDB, 0x5C, 0x16, 0x91, + 0x30, 0xB7, 0xFD, 0x7A, 0x69, 0xEE, 0xA4, 0x23, + 0x00, 0x88, 0xD3, 0x5B, 0x65, 0xED, 0xB6, 0x3E, + 0xCA, 0x42, 0x19, 0x91, 0xAF, 0x27, 0x7C, 0xF4, + 0x57, 0xDF, 0x84, 0x0C, 0x32, 0xBA, 0xE1, 0x69, + 0x9D, 0x15, 0x4E, 0xC6, 0xF8, 0x70, 0x2B, 0xA3, + 0xAE, 0x26, 0x7D, 0xF5, 0xCB, 0x43, 0x18, 0x90, + 0x64, 0xEC, 0xB7, 0x3F, 0x01, 0x89, 0xD2, 0x5A, + 0xF9, 0x71, 0x2A, 0xA2, 0x9C, 0x14, 0x4F, 0xC7, + 0x33, 0xBB, 0xE0, 0x68, 0x56, 0xDE, 0x85, 0x0D, + 0x9F, 0x17, 0x4C, 0xC4, 0xFA, 0x72, 0x29, 0xA1, + 0x55, 0xDD, 0x86, 0x0E, 0x30, 0xB8, 0xE3, 0x6B, + 0xC8, 0x40, 0x1B, 0x93, 0xAD, 0x25, 0x7E, 0xF6, + 0x02, 0x8A, 0xD1, 0x59, 0x67, 0xEF, 0xB4, 0x3C, + 0x31, 0xB9, 0xE2, 0x6A, 0x54, 0xDC, 0x87, 0x0F, + 0xFB, 0x73, 0x28, 0xA0, 0x9E, 0x16, 0x4D, 0xC5, + 0x66, 0xEE, 0xB5, 0x3D, 0x03, 0x8B, 0xD0, 0x58, + 0xAC, 0x24, 0x7F, 0xF7, 0xC9, 0x41, 0x1A, 0x92, + 0xFD, 0x75, 0x2E, 0xA6, 0x98, 0x10, 0x4B, 0xC3, + 0x37, 0xBF, 0xE4, 0x6C, 0x52, 0xDA, 0x81, 0x09, + 0xAA, 0x22, 0x79, 0xF1, 0xCF, 0x47, 0x1C, 0x94, + 0x60, 0xE8, 0xB3, 0x3B, 0x05, 0x8D, 0xD6, 0x5E, + 0x53, 0xDB, 0x80, 0x08, 0x36, 0xBE, 0xE5, 0x6D, + 0x99, 0x11, 0x4A, 0xC2, 0xFC, 0x74, 0x2F, 0xA7, + 0x04, 0x8C, 0xD7, 0x5F, 0x61, 0xE9, 0xB2, 0x3A, + 0xCE, 0x46, 0x1D, 0x95, 0xAB, 0x23, 0x78, 0xF0, + 0x62, 0xEA, 0xB1, 0x39, 0x07, 0x8F, 0xD4, 0x5C, + 0xA8, 0x20, 0x7B, 0xF3, 0xCD, 0x45, 0x1E, 0x96, + 0x35, 0xBD, 0xE6, 0x6E, 0x50, 0xD8, 0x83, 0x0B, + 0xFF, 0x77, 0x2C, 0xA4, 0x9A, 0x12, 0x49, 0xC1, + 0xCC, 0x44, 0x1F, 0x97, 0xA9, 0x21, 0x7A, 0xF2, + 0x06, 0x8E, 0xD5, 0x5D, 0x63, 0xEB, 0xB0, 0x38, + 0x9B, 0x13, 0x48, 0xC0, 0xFE, 0x76, 0x2D, 0xA5, + 0x51, 0xD9, 0x82, 0x0A, 0x34, 0xBC, 0xE7, 0x6F, + 0x00, 0x89, 0xD1, 0x58, 0x61, 0xE8, 0xB0, 0x39, + 0xC2, 0x4B, 0x13, 0x9A, 0xA3, 0x2A, 0x72, 0xFB, + 0x47, 0xCE, 0x96, 0x1F, 0x26, 0xAF, 0xF7, 0x7E, + 0x85, 0x0C, 0x54, 0xDD, 0xE4, 0x6D, 0x35, 0xBC, + 0x8E, 0x07, 0x5F, 0xD6, 0xEF, 0x66, 0x3E, 0xB7, + 0x4C, 0xC5, 0x9D, 0x14, 0x2D, 0xA4, 0xFC, 0x75, + 0xC9, 0x40, 0x18, 0x91, 0xA8, 0x21, 0x79, 0xF0, + 0x0B, 0x82, 0xDA, 0x53, 0x6A, 0xE3, 0xBB, 0x32, + 0xDF, 0x56, 0x0E, 0x87, 0xBE, 0x37, 0x6F, 0xE6, + 0x1D, 0x94, 0xCC, 0x45, 0x7C, 0xF5, 0xAD, 0x24, + 0x98, 0x11, 0x49, 0xC0, 0xF9, 0x70, 0x28, 0xA1, + 0x5A, 0xD3, 0x8B, 0x02, 0x3B, 0xB2, 0xEA, 0x63, + 0x51, 0xD8, 0x80, 0x09, 0x30, 0xB9, 0xE1, 0x68, + 0x93, 0x1A, 0x42, 0xCB, 0xF2, 0x7B, 0x23, 0xAA, + 0x16, 0x9F, 0xC7, 0x4E, 0x77, 0xFE, 0xA6, 0x2F, + 0xD4, 0x5D, 0x05, 0x8C, 0xB5, 0x3C, 0x64, 0xED, + 0x7D, 0xF4, 0xAC, 0x25, 0x1C, 0x95, 0xCD, 0x44, + 0xBF, 0x36, 0x6E, 0xE7, 0xDE, 0x57, 0x0F, 0x86, + 0x3A, 0xB3, 0xEB, 0x62, 0x5B, 0xD2, 0x8A, 0x03, + 0xF8, 0x71, 0x29, 0xA0, 0x99, 0x10, 0x48, 0xC1, + 0xF3, 0x7A, 0x22, 0xAB, 0x92, 0x1B, 0x43, 0xCA, + 0x31, 0xB8, 0xE0, 0x69, 0x50, 0xD9, 0x81, 0x08, + 0xB4, 0x3D, 0x65, 0xEC, 0xD5, 0x5C, 0x04, 0x8D, + 0x76, 0xFF, 0xA7, 0x2E, 0x17, 0x9E, 0xC6, 0x4F, + 0xA2, 0x2B, 0x73, 0xFA, 0xC3, 0x4A, 0x12, 0x9B, + 0x60, 0xE9, 0xB1, 0x38, 0x01, 0x88, 0xD0, 0x59, + 0xE5, 0x6C, 0x34, 0xBD, 0x84, 0x0D, 0x55, 0xDC, + 0x27, 0xAE, 0xF6, 0x7F, 0x46, 0xCF, 0x97, 0x1E, + 0x2C, 0xA5, 0xFD, 0x74, 0x4D, 0xC4, 0x9C, 0x15, + 0xEE, 0x67, 0x3F, 0xB6, 0x8F, 0x06, 0x5E, 0xD7, + 0x6B, 0xE2, 0xBA, 0x33, 0x0A, 0x83, 0xDB, 0x52, + 0xA9, 0x20, 0x78, 0xF1, 0xC8, 0x41, 0x19, 0x90, + 0x00, 0x8A, 0xD7, 0x5D, 0x6D, 0xE7, 0xBA, 0x30, + 0xDA, 0x50, 0x0D, 0x87, 0xB7, 0x3D, 0x60, 0xEA, + 0x77, 0xFD, 0xA0, 0x2A, 0x1A, 0x90, 0xCD, 0x47, + 0xAD, 0x27, 0x7A, 0xF0, 0xC0, 0x4A, 0x17, 0x9D, + 0xEE, 0x64, 0x39, 0xB3, 0x83, 0x09, 0x54, 0xDE, + 0x34, 0xBE, 0xE3, 0x69, 0x59, 0xD3, 0x8E, 0x04, + 0x99, 0x13, 0x4E, 0xC4, 0xF4, 0x7E, 0x23, 0xA9, + 0x43, 0xC9, 0x94, 0x1E, 0x2E, 0xA4, 0xF9, 0x73, + 0x1F, 0x95, 0xC8, 0x42, 0x72, 0xF8, 0xA5, 0x2F, + 0xC5, 0x4F, 0x12, 0x98, 0xA8, 0x22, 0x7F, 0xF5, + 0x68, 0xE2, 0xBF, 0x35, 0x05, 0x8F, 0xD2, 0x58, + 0xB2, 0x38, 0x65, 0xEF, 0xDF, 0x55, 0x08, 0x82, + 0xF1, 0x7B, 0x26, 0xAC, 0x9C, 0x16, 0x4B, 0xC1, + 0x2B, 0xA1, 0xFC, 0x76, 0x46, 0xCC, 0x91, 0x1B, + 0x86, 0x0C, 0x51, 0xDB, 0xEB, 0x61, 0x3C, 0xB6, + 0x5C, 0xD6, 0x8B, 0x01, 0x31, 0xBB, 0xE6, 0x6C, + 0x3E, 0xB4, 0xE9, 0x63, 0x53, 0xD9, 0x84, 0x0E, + 0xE4, 0x6E, 0x33, 0xB9, 0x89, 0x03, 0x5E, 0xD4, + 0x49, 0xC3, 0x9E, 0x14, 0x24, 0xAE, 0xF3, 0x79, + 0x93, 0x19, 0x44, 0xCE, 0xFE, 0x74, 0x29, 0xA3, + 0xD0, 0x5A, 0x07, 0x8D, 0xBD, 0x37, 0x6A, 0xE0, + 0x0A, 0x80, 0xDD, 0x57, 0x67, 0xED, 0xB0, 0x3A, + 0xA7, 0x2D, 0x70, 0xFA, 0xCA, 0x40, 0x1D, 0x97, + 0x7D, 0xF7, 0xAA, 0x20, 0x10, 0x9A, 0xC7, 0x4D, + 0x21, 0xAB, 0xF6, 0x7C, 0x4C, 0xC6, 0x9B, 0x11, + 0xFB, 0x71, 0x2C, 0xA6, 0x96, 0x1C, 0x41, 0xCB, + 0x56, 0xDC, 0x81, 0x0B, 0x3B, 0xB1, 0xEC, 0x66, + 0x8C, 0x06, 0x5B, 0xD1, 0xE1, 0x6B, 0x36, 0xBC, + 0xCF, 0x45, 0x18, 0x92, 0xA2, 0x28, 0x75, 0xFF, + 0x15, 0x9F, 0xC2, 0x48, 0x78, 0xF2, 0xAF, 0x25, + 0xB8, 0x32, 0x6F, 0xE5, 0xD5, 0x5F, 0x02, 0x88, + 0x62, 0xE8, 0xB5, 0x3F, 0x0F, 0x85, 0xD8, 0x52, + 0x00, 0x8B, 0xD5, 0x5E, 0x69, 0xE2, 0xBC, 0x37, + 0xD2, 0x59, 0x07, 0x8C, 0xBB, 0x30, 0x6E, 0xE5, + 0x67, 0xEC, 0xB2, 0x39, 0x0E, 0x85, 0xDB, 0x50, + 0xB5, 0x3E, 0x60, 0xEB, 0xDC, 0x57, 0x09, 0x82, + 0xCE, 0x45, 0x1B, 0x90, 0xA7, 0x2C, 0x72, 0xF9, + 0x1C, 0x97, 0xC9, 0x42, 0x75, 0xFE, 0xA0, 0x2B, + 0xA9, 0x22, 0x7C, 0xF7, 0xC0, 0x4B, 0x15, 0x9E, + 0x7B, 0xF0, 0xAE, 0x25, 0x12, 0x99, 0xC7, 0x4C, + 0x5F, 0xD4, 0x8A, 0x01, 0x36, 0xBD, 0xE3, 0x68, + 0x8D, 0x06, 0x58, 0xD3, 0xE4, 0x6F, 0x31, 0xBA, + 0x38, 0xB3, 0xED, 0x66, 0x51, 0xDA, 0x84, 0x0F, + 0xEA, 0x61, 0x3F, 0xB4, 0x83, 0x08, 0x56, 0xDD, + 0x91, 0x1A, 0x44, 0xCF, 0xF8, 0x73, 0x2D, 0xA6, + 0x43, 0xC8, 0x96, 0x1D, 0x2A, 0xA1, 0xFF, 0x74, + 0xF6, 0x7D, 0x23, 0xA8, 0x9F, 0x14, 0x4A, 0xC1, + 0x24, 0xAF, 0xF1, 0x7A, 0x4D, 0xC6, 0x98, 0x13, + 0xBE, 0x35, 0x6B, 0xE0, 0xD7, 0x5C, 0x02, 0x89, + 0x6C, 0xE7, 0xB9, 0x32, 0x05, 0x8E, 0xD0, 0x5B, + 0xD9, 0x52, 0x0C, 0x87, 0xB0, 0x3B, 0x65, 0xEE, + 0x0B, 0x80, 0xDE, 0x55, 0x62, 0xE9, 0xB7, 0x3C, + 0x70, 0xFB, 0xA5, 0x2E, 0x19, 0x92, 0xCC, 0x47, + 0xA2, 0x29, 0x77, 0xFC, 0xCB, 0x40, 0x1E, 0x95, + 0x17, 0x9C, 0xC2, 0x49, 0x7E, 0xF5, 0xAB, 0x20, + 0xC5, 0x4E, 0x10, 0x9B, 0xAC, 0x27, 0x79, 0xF2, + 0xE1, 0x6A, 0x34, 0xBF, 0x88, 0x03, 0x5D, 0xD6, + 0x33, 0xB8, 0xE6, 0x6D, 0x5A, 0xD1, 0x8F, 0x04, + 0x86, 0x0D, 0x53, 0xD8, 0xEF, 0x64, 0x3A, 0xB1, + 0x54, 0xDF, 0x81, 0x0A, 0x3D, 0xB6, 0xE8, 0x63, + 0x2F, 0xA4, 0xFA, 0x71, 0x46, 0xCD, 0x93, 0x18, + 0xFD, 0x76, 0x28, 0xA3, 0x94, 0x1F, 0x41, 0xCA, + 0x48, 0xC3, 0x9D, 0x16, 0x21, 0xAA, 0xF4, 0x7F, + 0x9A, 0x11, 0x4F, 0xC4, 0xF3, 0x78, 0x26, 0xAD, + 0x00, 0x8C, 0xDB, 0x57, 0x75, 0xF9, 0xAE, 0x22, + 0xEA, 0x66, 0x31, 0xBD, 0x9F, 0x13, 0x44, 0xC8, + 0x17, 0x9B, 0xCC, 0x40, 0x62, 0xEE, 0xB9, 0x35, + 0xFD, 0x71, 0x26, 0xAA, 0x88, 0x04, 0x53, 0xDF, + 0x2E, 0xA2, 0xF5, 0x79, 0x5B, 0xD7, 0x80, 0x0C, + 0xC4, 0x48, 0x1F, 0x93, 0xB1, 0x3D, 0x6A, 0xE6, + 0x39, 0xB5, 0xE2, 0x6E, 0x4C, 0xC0, 0x97, 0x1B, + 0xD3, 0x5F, 0x08, 0x84, 0xA6, 0x2A, 0x7D, 0xF1, + 0x5C, 0xD0, 0x87, 0x0B, 0x29, 0xA5, 0xF2, 0x7E, + 0xB6, 0x3A, 0x6D, 0xE1, 0xC3, 0x4F, 0x18, 0x94, + 0x4B, 0xC7, 0x90, 0x1C, 0x3E, 0xB2, 0xE5, 0x69, + 0xA1, 0x2D, 0x7A, 0xF6, 0xD4, 0x58, 0x0F, 0x83, + 0x72, 0xFE, 0xA9, 0x25, 0x07, 0x8B, 0xDC, 0x50, + 0x98, 0x14, 0x43, 0xCF, 0xED, 0x61, 0x36, 0xBA, + 0x65, 0xE9, 0xBE, 0x32, 0x10, 0x9C, 0xCB, 0x47, + 0x8F, 0x03, 0x54, 0xD8, 0xFA, 0x76, 0x21, 0xAD, + 0xB8, 0x34, 0x63, 0xEF, 0xCD, 0x41, 0x16, 0x9A, + 0x52, 0xDE, 0x89, 0x05, 0x27, 0xAB, 0xFC, 0x70, + 0xAF, 0x23, 0x74, 0xF8, 0xDA, 0x56, 0x01, 0x8D, + 0x45, 0xC9, 0x9E, 0x12, 0x30, 0xBC, 0xEB, 0x67, + 0x96, 0x1A, 0x4D, 0xC1, 0xE3, 0x6F, 0x38, 0xB4, + 0x7C, 0xF0, 0xA7, 0x2B, 0x09, 0x85, 0xD2, 0x5E, + 0x81, 0x0D, 0x5A, 0xD6, 0xF4, 0x78, 0x2F, 0xA3, + 0x6B, 0xE7, 0xB0, 0x3C, 0x1E, 0x92, 0xC5, 0x49, + 0xE4, 0x68, 0x3F, 0xB3, 0x91, 0x1D, 0x4A, 0xC6, + 0x0E, 0x82, 0xD5, 0x59, 0x7B, 0xF7, 0xA0, 0x2C, + 0xF3, 0x7F, 0x28, 0xA4, 0x86, 0x0A, 0x5D, 0xD1, + 0x19, 0x95, 0xC2, 0x4E, 0x6C, 0xE0, 0xB7, 0x3B, + 0xCA, 0x46, 0x11, 0x9D, 0xBF, 0x33, 0x64, 0xE8, + 0x20, 0xAC, 0xFB, 0x77, 0x55, 0xD9, 0x8E, 0x02, + 0xDD, 0x51, 0x06, 0x8A, 0xA8, 0x24, 0x73, 0xFF, + 0x37, 0xBB, 0xEC, 0x60, 0x42, 0xCE, 0x99, 0x15, + 0x00, 0x8D, 0xD9, 0x54, 0x71, 0xFC, 0xA8, 0x25, + 0xE2, 0x6F, 0x3B, 0xB6, 0x93, 0x1E, 0x4A, 0xC7, + 0x07, 0x8A, 0xDE, 0x53, 0x76, 0xFB, 0xAF, 0x22, + 0xE5, 0x68, 0x3C, 0xB1, 0x94, 0x19, 0x4D, 0xC0, + 0x0E, 0x83, 0xD7, 0x5A, 0x7F, 0xF2, 0xA6, 0x2B, + 0xEC, 0x61, 0x35, 0xB8, 0x9D, 0x10, 0x44, 0xC9, + 0x09, 0x84, 0xD0, 0x5D, 0x78, 0xF5, 0xA1, 0x2C, + 0xEB, 0x66, 0x32, 0xBF, 0x9A, 0x17, 0x43, 0xCE, + 0x1C, 0x91, 0xC5, 0x48, 0x6D, 0xE0, 0xB4, 0x39, + 0xFE, 0x73, 0x27, 0xAA, 0x8F, 0x02, 0x56, 0xDB, + 0x1B, 0x96, 0xC2, 0x4F, 0x6A, 0xE7, 0xB3, 0x3E, + 0xF9, 0x74, 0x20, 0xAD, 0x88, 0x05, 0x51, 0xDC, + 0x12, 0x9F, 0xCB, 0x46, 0x63, 0xEE, 0xBA, 0x37, + 0xF0, 0x7D, 0x29, 0xA4, 0x81, 0x0C, 0x58, 0xD5, + 0x15, 0x98, 0xCC, 0x41, 0x64, 0xE9, 0xBD, 0x30, + 0xF7, 0x7A, 0x2E, 0xA3, 0x86, 0x0B, 0x5F, 0xD2, + 0x38, 0xB5, 0xE1, 0x6C, 0x49, 0xC4, 0x90, 0x1D, + 0xDA, 0x57, 0x03, 0x8E, 0xAB, 0x26, 0x72, 0xFF, + 0x3F, 0xB2, 0xE6, 0x6B, 0x4E, 0xC3, 0x97, 0x1A, + 0xDD, 0x50, 0x04, 0x89, 0xAC, 0x21, 0x75, 0xF8, + 0x36, 0xBB, 0xEF, 0x62, 0x47, 0xCA, 0x9E, 0x13, + 0xD4, 0x59, 0x0D, 0x80, 0xA5, 0x28, 0x7C, 0xF1, + 0x31, 0xBC, 0xE8, 0x65, 0x40, 0xCD, 0x99, 0x14, + 0xD3, 0x5E, 0x0A, 0x87, 0xA2, 0x2F, 0x7B, 0xF6, + 0x24, 0xA9, 0xFD, 0x70, 0x55, 0xD8, 0x8C, 0x01, + 0xC6, 0x4B, 0x1F, 0x92, 0xB7, 0x3A, 0x6E, 0xE3, + 0x23, 0xAE, 0xFA, 0x77, 0x52, 0xDF, 0x8B, 0x06, + 0xC1, 0x4C, 0x18, 0x95, 0xB0, 0x3D, 0x69, 0xE4, + 0x2A, 0xA7, 0xF3, 0x7E, 0x5B, 0xD6, 0x82, 0x0F, + 0xC8, 0x45, 0x11, 0x9C, 0xB9, 0x34, 0x60, 0xED, + 0x2D, 0xA0, 0xF4, 0x79, 0x5C, 0xD1, 0x85, 0x08, + 0xCF, 0x42, 0x16, 0x9B, 0xBE, 0x33, 0x67, 0xEA, + 0x00, 0x8E, 0xDF, 0x51, 0x7D, 0xF3, 0xA2, 0x2C, + 0xFA, 0x74, 0x25, 0xAB, 0x87, 0x09, 0x58, 0xD6, + 0x37, 0xB9, 0xE8, 0x66, 0x4A, 0xC4, 0x95, 0x1B, + 0xCD, 0x43, 0x12, 0x9C, 0xB0, 0x3E, 0x6F, 0xE1, + 0x6E, 0xE0, 0xB1, 0x3F, 0x13, 0x9D, 0xCC, 0x42, + 0x94, 0x1A, 0x4B, 0xC5, 0xE9, 0x67, 0x36, 0xB8, + 0x59, 0xD7, 0x86, 0x08, 0x24, 0xAA, 0xFB, 0x75, + 0xA3, 0x2D, 0x7C, 0xF2, 0xDE, 0x50, 0x01, 0x8F, + 0xDC, 0x52, 0x03, 0x8D, 0xA1, 0x2F, 0x7E, 0xF0, + 0x26, 0xA8, 0xF9, 0x77, 0x5B, 0xD5, 0x84, 0x0A, + 0xEB, 0x65, 0x34, 0xBA, 0x96, 0x18, 0x49, 0xC7, + 0x11, 0x9F, 0xCE, 0x40, 0x6C, 0xE2, 0xB3, 0x3D, + 0xB2, 0x3C, 0x6D, 0xE3, 0xCF, 0x41, 0x10, 0x9E, + 0x48, 0xC6, 0x97, 0x19, 0x35, 0xBB, 0xEA, 0x64, + 0x85, 0x0B, 0x5A, 0xD4, 0xF8, 0x76, 0x27, 0xA9, + 0x7F, 0xF1, 0xA0, 0x2E, 0x02, 0x8C, 0xDD, 0x53, + 0x7B, 0xF5, 0xA4, 0x2A, 0x06, 0x88, 0xD9, 0x57, + 0x81, 0x0F, 0x5E, 0xD0, 0xFC, 0x72, 0x23, 0xAD, + 0x4C, 0xC2, 0x93, 0x1D, 0x31, 0xBF, 0xEE, 0x60, + 0xB6, 0x38, 0x69, 0xE7, 0xCB, 0x45, 0x14, 0x9A, + 0x15, 0x9B, 0xCA, 0x44, 0x68, 0xE6, 0xB7, 0x39, + 0xEF, 0x61, 0x30, 0xBE, 0x92, 0x1C, 0x4D, 0xC3, + 0x22, 0xAC, 0xFD, 0x73, 0x5F, 0xD1, 0x80, 0x0E, + 0xD8, 0x56, 0x07, 0x89, 0xA5, 0x2B, 0x7A, 0xF4, + 0xA7, 0x29, 0x78, 0xF6, 0xDA, 0x54, 0x05, 0x8B, + 0x5D, 0xD3, 0x82, 0x0C, 0x20, 0xAE, 0xFF, 0x71, + 0x90, 0x1E, 0x4F, 0xC1, 0xED, 0x63, 0x32, 0xBC, + 0x6A, 0xE4, 0xB5, 0x3B, 0x17, 0x99, 0xC8, 0x46, + 0xC9, 0x47, 0x16, 0x98, 0xB4, 0x3A, 0x6B, 0xE5, + 0x33, 0xBD, 0xEC, 0x62, 0x4E, 0xC0, 0x91, 0x1F, + 0xFE, 0x70, 0x21, 0xAF, 0x83, 0x0D, 0x5C, 0xD2, + 0x04, 0x8A, 0xDB, 0x55, 0x79, 0xF7, 0xA6, 0x28, + 0x00, 0x8F, 0xDD, 0x52, 0x79, 0xF6, 0xA4, 0x2B, + 0xF2, 0x7D, 0x2F, 0xA0, 0x8B, 0x04, 0x56, 0xD9, + 0x27, 0xA8, 0xFA, 0x75, 0x5E, 0xD1, 0x83, 0x0C, + 0xD5, 0x5A, 0x08, 0x87, 0xAC, 0x23, 0x71, 0xFE, + 0x4E, 0xC1, 0x93, 0x1C, 0x37, 0xB8, 0xEA, 0x65, + 0xBC, 0x33, 0x61, 0xEE, 0xC5, 0x4A, 0x18, 0x97, + 0x69, 0xE6, 0xB4, 0x3B, 0x10, 0x9F, 0xCD, 0x42, + 0x9B, 0x14, 0x46, 0xC9, 0xE2, 0x6D, 0x3F, 0xB0, + 0x9C, 0x13, 0x41, 0xCE, 0xE5, 0x6A, 0x38, 0xB7, + 0x6E, 0xE1, 0xB3, 0x3C, 0x17, 0x98, 0xCA, 0x45, + 0xBB, 0x34, 0x66, 0xE9, 0xC2, 0x4D, 0x1F, 0x90, + 0x49, 0xC6, 0x94, 0x1B, 0x30, 0xBF, 0xED, 0x62, + 0xD2, 0x5D, 0x0F, 0x80, 0xAB, 0x24, 0x76, 0xF9, + 0x20, 0xAF, 0xFD, 0x72, 0x59, 0xD6, 0x84, 0x0B, + 0xF5, 0x7A, 0x28, 0xA7, 0x8C, 0x03, 0x51, 0xDE, + 0x07, 0x88, 0xDA, 0x55, 0x7E, 0xF1, 0xA3, 0x2C, + 0xFB, 0x74, 0x26, 0xA9, 0x82, 0x0D, 0x5F, 0xD0, + 0x09, 0x86, 0xD4, 0x5B, 0x70, 0xFF, 0xAD, 0x22, + 0xDC, 0x53, 0x01, 0x8E, 0xA5, 0x2A, 0x78, 0xF7, + 0x2E, 0xA1, 0xF3, 0x7C, 0x57, 0xD8, 0x8A, 0x05, + 0xB5, 0x3A, 0x68, 0xE7, 0xCC, 0x43, 0x11, 0x9E, + 0x47, 0xC8, 0x9A, 0x15, 0x3E, 0xB1, 0xE3, 0x6C, + 0x92, 0x1D, 0x4F, 0xC0, 0xEB, 0x64, 0x36, 0xB9, + 0x60, 0xEF, 0xBD, 0x32, 0x19, 0x96, 0xC4, 0x4B, + 0x67, 0xE8, 0xBA, 0x35, 0x1E, 0x91, 0xC3, 0x4C, + 0x95, 0x1A, 0x48, 0xC7, 0xEC, 0x63, 0x31, 0xBE, + 0x40, 0xCF, 0x9D, 0x12, 0x39, 0xB6, 0xE4, 0x6B, + 0xB2, 0x3D, 0x6F, 0xE0, 0xCB, 0x44, 0x16, 0x99, + 0x29, 0xA6, 0xF4, 0x7B, 0x50, 0xDF, 0x8D, 0x02, + 0xDB, 0x54, 0x06, 0x89, 0xA2, 0x2D, 0x7F, 0xF0, + 0x0E, 0x81, 0xD3, 0x5C, 0x77, 0xF8, 0xAA, 0x25, + 0xFC, 0x73, 0x21, 0xAE, 0x85, 0x0A, 0x58, 0xD7, + 0x00, 0x90, 0xE3, 0x73, 0x05, 0x95, 0xE6, 0x76, + 0x0A, 0x9A, 0xE9, 0x79, 0x0F, 0x9F, 0xEC, 0x7C, + 0x14, 0x84, 0xF7, 0x67, 0x11, 0x81, 0xF2, 0x62, + 0x1E, 0x8E, 0xFD, 0x6D, 0x1B, 0x8B, 0xF8, 0x68, + 0x28, 0xB8, 0xCB, 0x5B, 0x2D, 0xBD, 0xCE, 0x5E, + 0x22, 0xB2, 0xC1, 0x51, 0x27, 0xB7, 0xC4, 0x54, + 0x3C, 0xAC, 0xDF, 0x4F, 0x39, 0xA9, 0xDA, 0x4A, + 0x36, 0xA6, 0xD5, 0x45, 0x33, 0xA3, 0xD0, 0x40, + 0x50, 0xC0, 0xB3, 0x23, 0x55, 0xC5, 0xB6, 0x26, + 0x5A, 0xCA, 0xB9, 0x29, 0x5F, 0xCF, 0xBC, 0x2C, + 0x44, 0xD4, 0xA7, 0x37, 0x41, 0xD1, 0xA2, 0x32, + 0x4E, 0xDE, 0xAD, 0x3D, 0x4B, 0xDB, 0xA8, 0x38, + 0x78, 0xE8, 0x9B, 0x0B, 0x7D, 0xED, 0x9E, 0x0E, + 0x72, 0xE2, 0x91, 0x01, 0x77, 0xE7, 0x94, 0x04, + 0x6C, 0xFC, 0x8F, 0x1F, 0x69, 0xF9, 0x8A, 0x1A, + 0x66, 0xF6, 0x85, 0x15, 0x63, 0xF3, 0x80, 0x10, + 0xA0, 0x30, 0x43, 0xD3, 0xA5, 0x35, 0x46, 0xD6, + 0xAA, 0x3A, 0x49, 0xD9, 0xAF, 0x3F, 0x4C, 0xDC, + 0xB4, 0x24, 0x57, 0xC7, 0xB1, 0x21, 0x52, 0xC2, + 0xBE, 0x2E, 0x5D, 0xCD, 0xBB, 0x2B, 0x58, 0xC8, + 0x88, 0x18, 0x6B, 0xFB, 0x8D, 0x1D, 0x6E, 0xFE, + 0x82, 0x12, 0x61, 0xF1, 0x87, 0x17, 0x64, 0xF4, + 0x9C, 0x0C, 0x7F, 0xEF, 0x99, 0x09, 0x7A, 0xEA, + 0x96, 0x06, 0x75, 0xE5, 0x93, 0x03, 0x70, 0xE0, + 0xF0, 0x60, 0x13, 0x83, 0xF5, 0x65, 0x16, 0x86, + 0xFA, 0x6A, 0x19, 0x89, 0xFF, 0x6F, 0x1C, 0x8C, + 0xE4, 0x74, 0x07, 0x97, 0xE1, 0x71, 0x02, 0x92, + 0xEE, 0x7E, 0x0D, 0x9D, 0xEB, 0x7B, 0x08, 0x98, + 0xD8, 0x48, 0x3B, 0xAB, 0xDD, 0x4D, 0x3E, 0xAE, + 0xD2, 0x42, 0x31, 0xA1, 0xD7, 0x47, 0x34, 0xA4, + 0xCC, 0x5C, 0x2F, 0xBF, 0xC9, 0x59, 0x2A, 0xBA, + 0xC6, 0x56, 0x25, 0xB5, 0xC3, 0x53, 0x20, 0xB0, + 0x00, 0x91, 0xE1, 0x70, 0x01, 0x90, 0xE0, 0x71, + 0x02, 0x93, 0xE3, 0x72, 0x03, 0x92, 0xE2, 0x73, + 0x04, 0x95, 0xE5, 0x74, 0x05, 0x94, 0xE4, 0x75, + 0x06, 0x97, 0xE7, 0x76, 0x07, 0x96, 0xE6, 0x77, + 0x08, 0x99, 0xE9, 0x78, 0x09, 0x98, 0xE8, 0x79, + 0x0A, 0x9B, 0xEB, 0x7A, 0x0B, 0x9A, 0xEA, 0x7B, + 0x0C, 0x9D, 0xED, 0x7C, 0x0D, 0x9C, 0xEC, 0x7D, + 0x0E, 0x9F, 0xEF, 0x7E, 0x0F, 0x9E, 0xEE, 0x7F, + 0x10, 0x81, 0xF1, 0x60, 0x11, 0x80, 0xF0, 0x61, + 0x12, 0x83, 0xF3, 0x62, 0x13, 0x82, 0xF2, 0x63, + 0x14, 0x85, 0xF5, 0x64, 0x15, 0x84, 0xF4, 0x65, + 0x16, 0x87, 0xF7, 0x66, 0x17, 0x86, 0xF6, 0x67, + 0x18, 0x89, 0xF9, 0x68, 0x19, 0x88, 0xF8, 0x69, + 0x1A, 0x8B, 0xFB, 0x6A, 0x1B, 0x8A, 0xFA, 0x6B, + 0x1C, 0x8D, 0xFD, 0x6C, 0x1D, 0x8C, 0xFC, 0x6D, + 0x1E, 0x8F, 0xFF, 0x6E, 0x1F, 0x8E, 0xFE, 0x6F, + 0x20, 0xB1, 0xC1, 0x50, 0x21, 0xB0, 0xC0, 0x51, + 0x22, 0xB3, 0xC3, 0x52, 0x23, 0xB2, 0xC2, 0x53, + 0x24, 0xB5, 0xC5, 0x54, 0x25, 0xB4, 0xC4, 0x55, + 0x26, 0xB7, 0xC7, 0x56, 0x27, 0xB6, 0xC6, 0x57, + 0x28, 0xB9, 0xC9, 0x58, 0x29, 0xB8, 0xC8, 0x59, + 0x2A, 0xBB, 0xCB, 0x5A, 0x2B, 0xBA, 0xCA, 0x5B, + 0x2C, 0xBD, 0xCD, 0x5C, 0x2D, 0xBC, 0xCC, 0x5D, + 0x2E, 0xBF, 0xCF, 0x5E, 0x2F, 0xBE, 0xCE, 0x5F, + 0x30, 0xA1, 0xD1, 0x40, 0x31, 0xA0, 0xD0, 0x41, + 0x32, 0xA3, 0xD3, 0x42, 0x33, 0xA2, 0xD2, 0x43, + 0x34, 0xA5, 0xD5, 0x44, 0x35, 0xA4, 0xD4, 0x45, + 0x36, 0xA7, 0xD7, 0x46, 0x37, 0xA6, 0xD6, 0x47, + 0x38, 0xA9, 0xD9, 0x48, 0x39, 0xA8, 0xD8, 0x49, + 0x3A, 0xAB, 0xDB, 0x4A, 0x3B, 0xAA, 0xDA, 0x4B, + 0x3C, 0xAD, 0xDD, 0x4C, 0x3D, 0xAC, 0xDC, 0x4D, + 0x3E, 0xAF, 0xDF, 0x4E, 0x3F, 0xAE, 0xDE, 0x4F, + 0x00, 0x92, 0xE7, 0x75, 0x0D, 0x9F, 0xEA, 0x78, + 0x1A, 0x88, 0xFD, 0x6F, 0x17, 0x85, 0xF0, 0x62, + 0x34, 0xA6, 0xD3, 0x41, 0x39, 0xAB, 0xDE, 0x4C, + 0x2E, 0xBC, 0xC9, 0x5B, 0x23, 0xB1, 0xC4, 0x56, + 0x68, 0xFA, 0x8F, 0x1D, 0x65, 0xF7, 0x82, 0x10, + 0x72, 0xE0, 0x95, 0x07, 0x7F, 0xED, 0x98, 0x0A, + 0x5C, 0xCE, 0xBB, 0x29, 0x51, 0xC3, 0xB6, 0x24, + 0x46, 0xD4, 0xA1, 0x33, 0x4B, 0xD9, 0xAC, 0x3E, + 0xD0, 0x42, 0x37, 0xA5, 0xDD, 0x4F, 0x3A, 0xA8, + 0xCA, 0x58, 0x2D, 0xBF, 0xC7, 0x55, 0x20, 0xB2, + 0xE4, 0x76, 0x03, 0x91, 0xE9, 0x7B, 0x0E, 0x9C, + 0xFE, 0x6C, 0x19, 0x8B, 0xF3, 0x61, 0x14, 0x86, + 0xB8, 0x2A, 0x5F, 0xCD, 0xB5, 0x27, 0x52, 0xC0, + 0xA2, 0x30, 0x45, 0xD7, 0xAF, 0x3D, 0x48, 0xDA, + 0x8C, 0x1E, 0x6B, 0xF9, 0x81, 0x13, 0x66, 0xF4, + 0x96, 0x04, 0x71, 0xE3, 0x9B, 0x09, 0x7C, 0xEE, + 0x63, 0xF1, 0x84, 0x16, 0x6E, 0xFC, 0x89, 0x1B, + 0x79, 0xEB, 0x9E, 0x0C, 0x74, 0xE6, 0x93, 0x01, + 0x57, 0xC5, 0xB0, 0x22, 0x5A, 0xC8, 0xBD, 0x2F, + 0x4D, 0xDF, 0xAA, 0x38, 0x40, 0xD2, 0xA7, 0x35, + 0x0B, 0x99, 0xEC, 0x7E, 0x06, 0x94, 0xE1, 0x73, + 0x11, 0x83, 0xF6, 0x64, 0x1C, 0x8E, 0xFB, 0x69, + 0x3F, 0xAD, 0xD8, 0x4A, 0x32, 0xA0, 0xD5, 0x47, + 0x25, 0xB7, 0xC2, 0x50, 0x28, 0xBA, 0xCF, 0x5D, + 0xB3, 0x21, 0x54, 0xC6, 0xBE, 0x2C, 0x59, 0xCB, + 0xA9, 0x3B, 0x4E, 0xDC, 0xA4, 0x36, 0x43, 0xD1, + 0x87, 0x15, 0x60, 0xF2, 0x8A, 0x18, 0x6D, 0xFF, + 0x9D, 0x0F, 0x7A, 0xE8, 0x90, 0x02, 0x77, 0xE5, + 0xDB, 0x49, 0x3C, 0xAE, 0xD6, 0x44, 0x31, 0xA3, + 0xC1, 0x53, 0x26, 0xB4, 0xCC, 0x5E, 0x2B, 0xB9, + 0xEF, 0x7D, 0x08, 0x9A, 0xE2, 0x70, 0x05, 0x97, + 0xF5, 0x67, 0x12, 0x80, 0xF8, 0x6A, 0x1F, 0x8D, + 0x00, 0x93, 0xE5, 0x76, 0x09, 0x9A, 0xEC, 0x7F, + 0x12, 0x81, 0xF7, 0x64, 0x1B, 0x88, 0xFE, 0x6D, + 0x24, 0xB7, 0xC1, 0x52, 0x2D, 0xBE, 0xC8, 0x5B, + 0x36, 0xA5, 0xD3, 0x40, 0x3F, 0xAC, 0xDA, 0x49, + 0x48, 0xDB, 0xAD, 0x3E, 0x41, 0xD2, 0xA4, 0x37, + 0x5A, 0xC9, 0xBF, 0x2C, 0x53, 0xC0, 0xB6, 0x25, + 0x6C, 0xFF, 0x89, 0x1A, 0x65, 0xF6, 0x80, 0x13, + 0x7E, 0xED, 0x9B, 0x08, 0x77, 0xE4, 0x92, 0x01, + 0x90, 0x03, 0x75, 0xE6, 0x99, 0x0A, 0x7C, 0xEF, + 0x82, 0x11, 0x67, 0xF4, 0x8B, 0x18, 0x6E, 0xFD, + 0xB4, 0x27, 0x51, 0xC2, 0xBD, 0x2E, 0x58, 0xCB, + 0xA6, 0x35, 0x43, 0xD0, 0xAF, 0x3C, 0x4A, 0xD9, + 0xD8, 0x4B, 0x3D, 0xAE, 0xD1, 0x42, 0x34, 0xA7, + 0xCA, 0x59, 0x2F, 0xBC, 0xC3, 0x50, 0x26, 0xB5, + 0xFC, 0x6F, 0x19, 0x8A, 0xF5, 0x66, 0x10, 0x83, + 0xEE, 0x7D, 0x0B, 0x98, 0xE7, 0x74, 0x02, 0x91, + 0xE3, 0x70, 0x06, 0x95, 0xEA, 0x79, 0x0F, 0x9C, + 0xF1, 0x62, 0x14, 0x87, 0xF8, 0x6B, 0x1D, 0x8E, + 0xC7, 0x54, 0x22, 0xB1, 0xCE, 0x5D, 0x2B, 0xB8, + 0xD5, 0x46, 0x30, 0xA3, 0xDC, 0x4F, 0x39, 0xAA, + 0xAB, 0x38, 0x4E, 0xDD, 0xA2, 0x31, 0x47, 0xD4, + 0xB9, 0x2A, 0x5C, 0xCF, 0xB0, 0x23, 0x55, 0xC6, + 0x8F, 0x1C, 0x6A, 0xF9, 0x86, 0x15, 0x63, 0xF0, + 0x9D, 0x0E, 0x78, 0xEB, 0x94, 0x07, 0x71, 0xE2, + 0x73, 0xE0, 0x96, 0x05, 0x7A, 0xE9, 0x9F, 0x0C, + 0x61, 0xF2, 0x84, 0x17, 0x68, 0xFB, 0x8D, 0x1E, + 0x57, 0xC4, 0xB2, 0x21, 0x5E, 0xCD, 0xBB, 0x28, + 0x45, 0xD6, 0xA0, 0x33, 0x4C, 0xDF, 0xA9, 0x3A, + 0x3B, 0xA8, 0xDE, 0x4D, 0x32, 0xA1, 0xD7, 0x44, + 0x29, 0xBA, 0xCC, 0x5F, 0x20, 0xB3, 0xC5, 0x56, + 0x1F, 0x8C, 0xFA, 0x69, 0x16, 0x85, 0xF3, 0x60, + 0x0D, 0x9E, 0xE8, 0x7B, 0x04, 0x97, 0xE1, 0x72, + 0x00, 0x94, 0xEB, 0x7F, 0x15, 0x81, 0xFE, 0x6A, + 0x2A, 0xBE, 0xC1, 0x55, 0x3F, 0xAB, 0xD4, 0x40, + 0x54, 0xC0, 0xBF, 0x2B, 0x41, 0xD5, 0xAA, 0x3E, + 0x7E, 0xEA, 0x95, 0x01, 0x6B, 0xFF, 0x80, 0x14, + 0xA8, 0x3C, 0x43, 0xD7, 0xBD, 0x29, 0x56, 0xC2, + 0x82, 0x16, 0x69, 0xFD, 0x97, 0x03, 0x7C, 0xE8, + 0xFC, 0x68, 0x17, 0x83, 0xE9, 0x7D, 0x02, 0x96, + 0xD6, 0x42, 0x3D, 0xA9, 0xC3, 0x57, 0x28, 0xBC, + 0x93, 0x07, 0x78, 0xEC, 0x86, 0x12, 0x6D, 0xF9, + 0xB9, 0x2D, 0x52, 0xC6, 0xAC, 0x38, 0x47, 0xD3, + 0xC7, 0x53, 0x2C, 0xB8, 0xD2, 0x46, 0x39, 0xAD, + 0xED, 0x79, 0x06, 0x92, 0xF8, 0x6C, 0x13, 0x87, + 0x3B, 0xAF, 0xD0, 0x44, 0x2E, 0xBA, 0xC5, 0x51, + 0x11, 0x85, 0xFA, 0x6E, 0x04, 0x90, 0xEF, 0x7B, + 0x6F, 0xFB, 0x84, 0x10, 0x7A, 0xEE, 0x91, 0x05, + 0x45, 0xD1, 0xAE, 0x3A, 0x50, 0xC4, 0xBB, 0x2F, + 0xE5, 0x71, 0x0E, 0x9A, 0xF0, 0x64, 0x1B, 0x8F, + 0xCF, 0x5B, 0x24, 0xB0, 0xDA, 0x4E, 0x31, 0xA5, + 0xB1, 0x25, 0x5A, 0xCE, 0xA4, 0x30, 0x4F, 0xDB, + 0x9B, 0x0F, 0x70, 0xE4, 0x8E, 0x1A, 0x65, 0xF1, + 0x4D, 0xD9, 0xA6, 0x32, 0x58, 0xCC, 0xB3, 0x27, + 0x67, 0xF3, 0x8C, 0x18, 0x72, 0xE6, 0x99, 0x0D, + 0x19, 0x8D, 0xF2, 0x66, 0x0C, 0x98, 0xE7, 0x73, + 0x33, 0xA7, 0xD8, 0x4C, 0x26, 0xB2, 0xCD, 0x59, + 0x76, 0xE2, 0x9D, 0x09, 0x63, 0xF7, 0x88, 0x1C, + 0x5C, 0xC8, 0xB7, 0x23, 0x49, 0xDD, 0xA2, 0x36, + 0x22, 0xB6, 0xC9, 0x5D, 0x37, 0xA3, 0xDC, 0x48, + 0x08, 0x9C, 0xE3, 0x77, 0x1D, 0x89, 0xF6, 0x62, + 0xDE, 0x4A, 0x35, 0xA1, 0xCB, 0x5F, 0x20, 0xB4, + 0xF4, 0x60, 0x1F, 0x8B, 0xE1, 0x75, 0x0A, 0x9E, + 0x8A, 0x1E, 0x61, 0xF5, 0x9F, 0x0B, 0x74, 0xE0, + 0xA0, 0x34, 0x4B, 0xDF, 0xB5, 0x21, 0x5E, 0xCA, + 0x00, 0x95, 0xE9, 0x7C, 0x11, 0x84, 0xF8, 0x6D, + 0x22, 0xB7, 0xCB, 0x5E, 0x33, 0xA6, 0xDA, 0x4F, + 0x44, 0xD1, 0xAD, 0x38, 0x55, 0xC0, 0xBC, 0x29, + 0x66, 0xF3, 0x8F, 0x1A, 0x77, 0xE2, 0x9E, 0x0B, + 0x88, 0x1D, 0x61, 0xF4, 0x99, 0x0C, 0x70, 0xE5, + 0xAA, 0x3F, 0x43, 0xD6, 0xBB, 0x2E, 0x52, 0xC7, + 0xCC, 0x59, 0x25, 0xB0, 0xDD, 0x48, 0x34, 0xA1, + 0xEE, 0x7B, 0x07, 0x92, 0xFF, 0x6A, 0x16, 0x83, + 0xD3, 0x46, 0x3A, 0xAF, 0xC2, 0x57, 0x2B, 0xBE, + 0xF1, 0x64, 0x18, 0x8D, 0xE0, 0x75, 0x09, 0x9C, + 0x97, 0x02, 0x7E, 0xEB, 0x86, 0x13, 0x6F, 0xFA, + 0xB5, 0x20, 0x5C, 0xC9, 0xA4, 0x31, 0x4D, 0xD8, + 0x5B, 0xCE, 0xB2, 0x27, 0x4A, 0xDF, 0xA3, 0x36, + 0x79, 0xEC, 0x90, 0x05, 0x68, 0xFD, 0x81, 0x14, + 0x1F, 0x8A, 0xF6, 0x63, 0x0E, 0x9B, 0xE7, 0x72, + 0x3D, 0xA8, 0xD4, 0x41, 0x2C, 0xB9, 0xC5, 0x50, + 0x65, 0xF0, 0x8C, 0x19, 0x74, 0xE1, 0x9D, 0x08, + 0x47, 0xD2, 0xAE, 0x3B, 0x56, 0xC3, 0xBF, 0x2A, + 0x21, 0xB4, 0xC8, 0x5D, 0x30, 0xA5, 0xD9, 0x4C, + 0x03, 0x96, 0xEA, 0x7F, 0x12, 0x87, 0xFB, 0x6E, + 0xED, 0x78, 0x04, 0x91, 0xFC, 0x69, 0x15, 0x80, + 0xCF, 0x5A, 0x26, 0xB3, 0xDE, 0x4B, 0x37, 0xA2, + 0xA9, 0x3C, 0x40, 0xD5, 0xB8, 0x2D, 0x51, 0xC4, + 0x8B, 0x1E, 0x62, 0xF7, 0x9A, 0x0F, 0x73, 0xE6, + 0xB6, 0x23, 0x5F, 0xCA, 0xA7, 0x32, 0x4E, 0xDB, + 0x94, 0x01, 0x7D, 0xE8, 0x85, 0x10, 0x6C, 0xF9, + 0xF2, 0x67, 0x1B, 0x8E, 0xE3, 0x76, 0x0A, 0x9F, + 0xD0, 0x45, 0x39, 0xAC, 0xC1, 0x54, 0x28, 0xBD, + 0x3E, 0xAB, 0xD7, 0x42, 0x2F, 0xBA, 0xC6, 0x53, + 0x1C, 0x89, 0xF5, 0x60, 0x0D, 0x98, 0xE4, 0x71, + 0x7A, 0xEF, 0x93, 0x06, 0x6B, 0xFE, 0x82, 0x17, + 0x58, 0xCD, 0xB1, 0x24, 0x49, 0xDC, 0xA0, 0x35, + 0x00, 0x96, 0xEF, 0x79, 0x1D, 0x8B, 0xF2, 0x64, + 0x3A, 0xAC, 0xD5, 0x43, 0x27, 0xB1, 0xC8, 0x5E, + 0x74, 0xE2, 0x9B, 0x0D, 0x69, 0xFF, 0x86, 0x10, + 0x4E, 0xD8, 0xA1, 0x37, 0x53, 0xC5, 0xBC, 0x2A, + 0xE8, 0x7E, 0x07, 0x91, 0xF5, 0x63, 0x1A, 0x8C, + 0xD2, 0x44, 0x3D, 0xAB, 0xCF, 0x59, 0x20, 0xB6, + 0x9C, 0x0A, 0x73, 0xE5, 0x81, 0x17, 0x6E, 0xF8, + 0xA6, 0x30, 0x49, 0xDF, 0xBB, 0x2D, 0x54, 0xC2, + 0x13, 0x85, 0xFC, 0x6A, 0x0E, 0x98, 0xE1, 0x77, + 0x29, 0xBF, 0xC6, 0x50, 0x34, 0xA2, 0xDB, 0x4D, + 0x67, 0xF1, 0x88, 0x1E, 0x7A, 0xEC, 0x95, 0x03, + 0x5D, 0xCB, 0xB2, 0x24, 0x40, 0xD6, 0xAF, 0x39, + 0xFB, 0x6D, 0x14, 0x82, 0xE6, 0x70, 0x09, 0x9F, + 0xC1, 0x57, 0x2E, 0xB8, 0xDC, 0x4A, 0x33, 0xA5, + 0x8F, 0x19, 0x60, 0xF6, 0x92, 0x04, 0x7D, 0xEB, + 0xB5, 0x23, 0x5A, 0xCC, 0xA8, 0x3E, 0x47, 0xD1, + 0x26, 0xB0, 0xC9, 0x5F, 0x3B, 0xAD, 0xD4, 0x42, + 0x1C, 0x8A, 0xF3, 0x65, 0x01, 0x97, 0xEE, 0x78, + 0x52, 0xC4, 0xBD, 0x2B, 0x4F, 0xD9, 0xA0, 0x36, + 0x68, 0xFE, 0x87, 0x11, 0x75, 0xE3, 0x9A, 0x0C, + 0xCE, 0x58, 0x21, 0xB7, 0xD3, 0x45, 0x3C, 0xAA, + 0xF4, 0x62, 0x1B, 0x8D, 0xE9, 0x7F, 0x06, 0x90, + 0xBA, 0x2C, 0x55, 0xC3, 0xA7, 0x31, 0x48, 0xDE, + 0x80, 0x16, 0x6F, 0xF9, 0x9D, 0x0B, 0x72, 0xE4, + 0x35, 0xA3, 0xDA, 0x4C, 0x28, 0xBE, 0xC7, 0x51, + 0x0F, 0x99, 0xE0, 0x76, 0x12, 0x84, 0xFD, 0x6B, + 0x41, 0xD7, 0xAE, 0x38, 0x5C, 0xCA, 0xB3, 0x25, + 0x7B, 0xED, 0x94, 0x02, 0x66, 0xF0, 0x89, 0x1F, + 0xDD, 0x4B, 0x32, 0xA4, 0xC0, 0x56, 0x2F, 0xB9, + 0xE7, 0x71, 0x08, 0x9E, 0xFA, 0x6C, 0x15, 0x83, + 0xA9, 0x3F, 0x46, 0xD0, 0xB4, 0x22, 0x5B, 0xCD, + 0x93, 0x05, 0x7C, 0xEA, 0x8E, 0x18, 0x61, 0xF7, + 0x00, 0x97, 0xED, 0x7A, 0x19, 0x8E, 0xF4, 0x63, + 0x32, 0xA5, 0xDF, 0x48, 0x2B, 0xBC, 0xC6, 0x51, + 0x64, 0xF3, 0x89, 0x1E, 0x7D, 0xEA, 0x90, 0x07, + 0x56, 0xC1, 0xBB, 0x2C, 0x4F, 0xD8, 0xA2, 0x35, + 0xC8, 0x5F, 0x25, 0xB2, 0xD1, 0x46, 0x3C, 0xAB, + 0xFA, 0x6D, 0x17, 0x80, 0xE3, 0x74, 0x0E, 0x99, + 0xAC, 0x3B, 0x41, 0xD6, 0xB5, 0x22, 0x58, 0xCF, + 0x9E, 0x09, 0x73, 0xE4, 0x87, 0x10, 0x6A, 0xFD, + 0x53, 0xC4, 0xBE, 0x29, 0x4A, 0xDD, 0xA7, 0x30, + 0x61, 0xF6, 0x8C, 0x1B, 0x78, 0xEF, 0x95, 0x02, + 0x37, 0xA0, 0xDA, 0x4D, 0x2E, 0xB9, 0xC3, 0x54, + 0x05, 0x92, 0xE8, 0x7F, 0x1C, 0x8B, 0xF1, 0x66, + 0x9B, 0x0C, 0x76, 0xE1, 0x82, 0x15, 0x6F, 0xF8, + 0xA9, 0x3E, 0x44, 0xD3, 0xB0, 0x27, 0x5D, 0xCA, + 0xFF, 0x68, 0x12, 0x85, 0xE6, 0x71, 0x0B, 0x9C, + 0xCD, 0x5A, 0x20, 0xB7, 0xD4, 0x43, 0x39, 0xAE, + 0xA6, 0x31, 0x4B, 0xDC, 0xBF, 0x28, 0x52, 0xC5, + 0x94, 0x03, 0x79, 0xEE, 0x8D, 0x1A, 0x60, 0xF7, + 0xC2, 0x55, 0x2F, 0xB8, 0xDB, 0x4C, 0x36, 0xA1, + 0xF0, 0x67, 0x1D, 0x8A, 0xE9, 0x7E, 0x04, 0x93, + 0x6E, 0xF9, 0x83, 0x14, 0x77, 0xE0, 0x9A, 0x0D, + 0x5C, 0xCB, 0xB1, 0x26, 0x45, 0xD2, 0xA8, 0x3F, + 0x0A, 0x9D, 0xE7, 0x70, 0x13, 0x84, 0xFE, 0x69, + 0x38, 0xAF, 0xD5, 0x42, 0x21, 0xB6, 0xCC, 0x5B, + 0xF5, 0x62, 0x18, 0x8F, 0xEC, 0x7B, 0x01, 0x96, + 0xC7, 0x50, 0x2A, 0xBD, 0xDE, 0x49, 0x33, 0xA4, + 0x91, 0x06, 0x7C, 0xEB, 0x88, 0x1F, 0x65, 0xF2, + 0xA3, 0x34, 0x4E, 0xD9, 0xBA, 0x2D, 0x57, 0xC0, + 0x3D, 0xAA, 0xD0, 0x47, 0x24, 0xB3, 0xC9, 0x5E, + 0x0F, 0x98, 0xE2, 0x75, 0x16, 0x81, 0xFB, 0x6C, + 0x59, 0xCE, 0xB4, 0x23, 0x40, 0xD7, 0xAD, 0x3A, + 0x6B, 0xFC, 0x86, 0x11, 0x72, 0xE5, 0x9F, 0x08, + 0x00, 0x98, 0xF3, 0x6B, 0x25, 0xBD, 0xD6, 0x4E, + 0x4A, 0xD2, 0xB9, 0x21, 0x6F, 0xF7, 0x9C, 0x04, + 0x94, 0x0C, 0x67, 0xFF, 0xB1, 0x29, 0x42, 0xDA, + 0xDE, 0x46, 0x2D, 0xB5, 0xFB, 0x63, 0x08, 0x90, + 0xEB, 0x73, 0x18, 0x80, 0xCE, 0x56, 0x3D, 0xA5, + 0xA1, 0x39, 0x52, 0xCA, 0x84, 0x1C, 0x77, 0xEF, + 0x7F, 0xE7, 0x8C, 0x14, 0x5A, 0xC2, 0xA9, 0x31, + 0x35, 0xAD, 0xC6, 0x5E, 0x10, 0x88, 0xE3, 0x7B, + 0x15, 0x8D, 0xE6, 0x7E, 0x30, 0xA8, 0xC3, 0x5B, + 0x5F, 0xC7, 0xAC, 0x34, 0x7A, 0xE2, 0x89, 0x11, + 0x81, 0x19, 0x72, 0xEA, 0xA4, 0x3C, 0x57, 0xCF, + 0xCB, 0x53, 0x38, 0xA0, 0xEE, 0x76, 0x1D, 0x85, + 0xFE, 0x66, 0x0D, 0x95, 0xDB, 0x43, 0x28, 0xB0, + 0xB4, 0x2C, 0x47, 0xDF, 0x91, 0x09, 0x62, 0xFA, + 0x6A, 0xF2, 0x99, 0x01, 0x4F, 0xD7, 0xBC, 0x24, + 0x20, 0xB8, 0xD3, 0x4B, 0x05, 0x9D, 0xF6, 0x6E, + 0x2A, 0xB2, 0xD9, 0x41, 0x0F, 0x97, 0xFC, 0x64, + 0x60, 0xF8, 0x93, 0x0B, 0x45, 0xDD, 0xB6, 0x2E, + 0xBE, 0x26, 0x4D, 0xD5, 0x9B, 0x03, 0x68, 0xF0, + 0xF4, 0x6C, 0x07, 0x9F, 0xD1, 0x49, 0x22, 0xBA, + 0xC1, 0x59, 0x32, 0xAA, 0xE4, 0x7C, 0x17, 0x8F, + 0x8B, 0x13, 0x78, 0xE0, 0xAE, 0x36, 0x5D, 0xC5, + 0x55, 0xCD, 0xA6, 0x3E, 0x70, 0xE8, 0x83, 0x1B, + 0x1F, 0x87, 0xEC, 0x74, 0x3A, 0xA2, 0xC9, 0x51, + 0x3F, 0xA7, 0xCC, 0x54, 0x1A, 0x82, 0xE9, 0x71, + 0x75, 0xED, 0x86, 0x1E, 0x50, 0xC8, 0xA3, 0x3B, + 0xAB, 0x33, 0x58, 0xC0, 0x8E, 0x16, 0x7D, 0xE5, + 0xE1, 0x79, 0x12, 0x8A, 0xC4, 0x5C, 0x37, 0xAF, + 0xD4, 0x4C, 0x27, 0xBF, 0xF1, 0x69, 0x02, 0x9A, + 0x9E, 0x06, 0x6D, 0xF5, 0xBB, 0x23, 0x48, 0xD0, + 0x40, 0xD8, 0xB3, 0x2B, 0x65, 0xFD, 0x96, 0x0E, + 0x0A, 0x92, 0xF9, 0x61, 0x2F, 0xB7, 0xDC, 0x44, + 0x00, 0x99, 0xF1, 0x68, 0x21, 0xB8, 0xD0, 0x49, + 0x42, 0xDB, 0xB3, 0x2A, 0x63, 0xFA, 0x92, 0x0B, + 0x84, 0x1D, 0x75, 0xEC, 0xA5, 0x3C, 0x54, 0xCD, + 0xC6, 0x5F, 0x37, 0xAE, 0xE7, 0x7E, 0x16, 0x8F, + 0xCB, 0x52, 0x3A, 0xA3, 0xEA, 0x73, 0x1B, 0x82, + 0x89, 0x10, 0x78, 0xE1, 0xA8, 0x31, 0x59, 0xC0, + 0x4F, 0xD6, 0xBE, 0x27, 0x6E, 0xF7, 0x9F, 0x06, + 0x0D, 0x94, 0xFC, 0x65, 0x2C, 0xB5, 0xDD, 0x44, + 0x55, 0xCC, 0xA4, 0x3D, 0x74, 0xED, 0x85, 0x1C, + 0x17, 0x8E, 0xE6, 0x7F, 0x36, 0xAF, 0xC7, 0x5E, + 0xD1, 0x48, 0x20, 0xB9, 0xF0, 0x69, 0x01, 0x98, + 0x93, 0x0A, 0x62, 0xFB, 0xB2, 0x2B, 0x43, 0xDA, + 0x9E, 0x07, 0x6F, 0xF6, 0xBF, 0x26, 0x4E, 0xD7, + 0xDC, 0x45, 0x2D, 0xB4, 0xFD, 0x64, 0x0C, 0x95, + 0x1A, 0x83, 0xEB, 0x72, 0x3B, 0xA2, 0xCA, 0x53, + 0x58, 0xC1, 0xA9, 0x30, 0x79, 0xE0, 0x88, 0x11, + 0xAA, 0x33, 0x5B, 0xC2, 0x8B, 0x12, 0x7A, 0xE3, + 0xE8, 0x71, 0x19, 0x80, 0xC9, 0x50, 0x38, 0xA1, + 0x2E, 0xB7, 0xDF, 0x46, 0x0F, 0x96, 0xFE, 0x67, + 0x6C, 0xF5, 0x9D, 0x04, 0x4D, 0xD4, 0xBC, 0x25, + 0x61, 0xF8, 0x90, 0x09, 0x40, 0xD9, 0xB1, 0x28, + 0x23, 0xBA, 0xD2, 0x4B, 0x02, 0x9B, 0xF3, 0x6A, + 0xE5, 0x7C, 0x14, 0x8D, 0xC4, 0x5D, 0x35, 0xAC, + 0xA7, 0x3E, 0x56, 0xCF, 0x86, 0x1F, 0x77, 0xEE, + 0xFF, 0x66, 0x0E, 0x97, 0xDE, 0x47, 0x2F, 0xB6, + 0xBD, 0x24, 0x4C, 0xD5, 0x9C, 0x05, 0x6D, 0xF4, + 0x7B, 0xE2, 0x8A, 0x13, 0x5A, 0xC3, 0xAB, 0x32, + 0x39, 0xA0, 0xC8, 0x51, 0x18, 0x81, 0xE9, 0x70, + 0x34, 0xAD, 0xC5, 0x5C, 0x15, 0x8C, 0xE4, 0x7D, + 0x76, 0xEF, 0x87, 0x1E, 0x57, 0xCE, 0xA6, 0x3F, + 0xB0, 0x29, 0x41, 0xD8, 0x91, 0x08, 0x60, 0xF9, + 0xF2, 0x6B, 0x03, 0x9A, 0xD3, 0x4A, 0x22, 0xBB, + 0x00, 0x9A, 0xF7, 0x6D, 0x2D, 0xB7, 0xDA, 0x40, + 0x5A, 0xC0, 0xAD, 0x37, 0x77, 0xED, 0x80, 0x1A, + 0xB4, 0x2E, 0x43, 0xD9, 0x99, 0x03, 0x6E, 0xF4, + 0xEE, 0x74, 0x19, 0x83, 0xC3, 0x59, 0x34, 0xAE, + 0xAB, 0x31, 0x5C, 0xC6, 0x86, 0x1C, 0x71, 0xEB, + 0xF1, 0x6B, 0x06, 0x9C, 0xDC, 0x46, 0x2B, 0xB1, + 0x1F, 0x85, 0xE8, 0x72, 0x32, 0xA8, 0xC5, 0x5F, + 0x45, 0xDF, 0xB2, 0x28, 0x68, 0xF2, 0x9F, 0x05, + 0x95, 0x0F, 0x62, 0xF8, 0xB8, 0x22, 0x4F, 0xD5, + 0xCF, 0x55, 0x38, 0xA2, 0xE2, 0x78, 0x15, 0x8F, + 0x21, 0xBB, 0xD6, 0x4C, 0x0C, 0x96, 0xFB, 0x61, + 0x7B, 0xE1, 0x8C, 0x16, 0x56, 0xCC, 0xA1, 0x3B, + 0x3E, 0xA4, 0xC9, 0x53, 0x13, 0x89, 0xE4, 0x7E, + 0x64, 0xFE, 0x93, 0x09, 0x49, 0xD3, 0xBE, 0x24, + 0x8A, 0x10, 0x7D, 0xE7, 0xA7, 0x3D, 0x50, 0xCA, + 0xD0, 0x4A, 0x27, 0xBD, 0xFD, 0x67, 0x0A, 0x90, + 0xE9, 0x73, 0x1E, 0x84, 0xC4, 0x5E, 0x33, 0xA9, + 0xB3, 0x29, 0x44, 0xDE, 0x9E, 0x04, 0x69, 0xF3, + 0x5D, 0xC7, 0xAA, 0x30, 0x70, 0xEA, 0x87, 0x1D, + 0x07, 0x9D, 0xF0, 0x6A, 0x2A, 0xB0, 0xDD, 0x47, + 0x42, 0xD8, 0xB5, 0x2F, 0x6F, 0xF5, 0x98, 0x02, + 0x18, 0x82, 0xEF, 0x75, 0x35, 0xAF, 0xC2, 0x58, + 0xF6, 0x6C, 0x01, 0x9B, 0xDB, 0x41, 0x2C, 0xB6, + 0xAC, 0x36, 0x5B, 0xC1, 0x81, 0x1B, 0x76, 0xEC, + 0x7C, 0xE6, 0x8B, 0x11, 0x51, 0xCB, 0xA6, 0x3C, + 0x26, 0xBC, 0xD1, 0x4B, 0x0B, 0x91, 0xFC, 0x66, + 0xC8, 0x52, 0x3F, 0xA5, 0xE5, 0x7F, 0x12, 0x88, + 0x92, 0x08, 0x65, 0xFF, 0xBF, 0x25, 0x48, 0xD2, + 0xD7, 0x4D, 0x20, 0xBA, 0xFA, 0x60, 0x0D, 0x97, + 0x8D, 0x17, 0x7A, 0xE0, 0xA0, 0x3A, 0x57, 0xCD, + 0x63, 0xF9, 0x94, 0x0E, 0x4E, 0xD4, 0xB9, 0x23, + 0x39, 0xA3, 0xCE, 0x54, 0x14, 0x8E, 0xE3, 0x79, + 0x00, 0x9B, 0xF5, 0x6E, 0x29, 0xB2, 0xDC, 0x47, + 0x52, 0xC9, 0xA7, 0x3C, 0x7B, 0xE0, 0x8E, 0x15, + 0xA4, 0x3F, 0x51, 0xCA, 0x8D, 0x16, 0x78, 0xE3, + 0xF6, 0x6D, 0x03, 0x98, 0xDF, 0x44, 0x2A, 0xB1, + 0x8B, 0x10, 0x7E, 0xE5, 0xA2, 0x39, 0x57, 0xCC, + 0xD9, 0x42, 0x2C, 0xB7, 0xF0, 0x6B, 0x05, 0x9E, + 0x2F, 0xB4, 0xDA, 0x41, 0x06, 0x9D, 0xF3, 0x68, + 0x7D, 0xE6, 0x88, 0x13, 0x54, 0xCF, 0xA1, 0x3A, + 0xD5, 0x4E, 0x20, 0xBB, 0xFC, 0x67, 0x09, 0x92, + 0x87, 0x1C, 0x72, 0xE9, 0xAE, 0x35, 0x5B, 0xC0, + 0x71, 0xEA, 0x84, 0x1F, 0x58, 0xC3, 0xAD, 0x36, + 0x23, 0xB8, 0xD6, 0x4D, 0x0A, 0x91, 0xFF, 0x64, + 0x5E, 0xC5, 0xAB, 0x30, 0x77, 0xEC, 0x82, 0x19, + 0x0C, 0x97, 0xF9, 0x62, 0x25, 0xBE, 0xD0, 0x4B, + 0xFA, 0x61, 0x0F, 0x94, 0xD3, 0x48, 0x26, 0xBD, + 0xA8, 0x33, 0x5D, 0xC6, 0x81, 0x1A, 0x74, 0xEF, + 0x69, 0xF2, 0x9C, 0x07, 0x40, 0xDB, 0xB5, 0x2E, + 0x3B, 0xA0, 0xCE, 0x55, 0x12, 0x89, 0xE7, 0x7C, + 0xCD, 0x56, 0x38, 0xA3, 0xE4, 0x7F, 0x11, 0x8A, + 0x9F, 0x04, 0x6A, 0xF1, 0xB6, 0x2D, 0x43, 0xD8, + 0xE2, 0x79, 0x17, 0x8C, 0xCB, 0x50, 0x3E, 0xA5, + 0xB0, 0x2B, 0x45, 0xDE, 0x99, 0x02, 0x6C, 0xF7, + 0x46, 0xDD, 0xB3, 0x28, 0x6F, 0xF4, 0x9A, 0x01, + 0x14, 0x8F, 0xE1, 0x7A, 0x3D, 0xA6, 0xC8, 0x53, + 0xBC, 0x27, 0x49, 0xD2, 0x95, 0x0E, 0x60, 0xFB, + 0xEE, 0x75, 0x1B, 0x80, 0xC7, 0x5C, 0x32, 0xA9, + 0x18, 0x83, 0xED, 0x76, 0x31, 0xAA, 0xC4, 0x5F, + 0x4A, 0xD1, 0xBF, 0x24, 0x63, 0xF8, 0x96, 0x0D, + 0x37, 0xAC, 0xC2, 0x59, 0x1E, 0x85, 0xEB, 0x70, + 0x65, 0xFE, 0x90, 0x0B, 0x4C, 0xD7, 0xB9, 0x22, + 0x93, 0x08, 0x66, 0xFD, 0xBA, 0x21, 0x4F, 0xD4, + 0xC1, 0x5A, 0x34, 0xAF, 0xE8, 0x73, 0x1D, 0x86, + 0x00, 0x9C, 0xFB, 0x67, 0x35, 0xA9, 0xCE, 0x52, + 0x6A, 0xF6, 0x91, 0x0D, 0x5F, 0xC3, 0xA4, 0x38, + 0xD4, 0x48, 0x2F, 0xB3, 0xE1, 0x7D, 0x1A, 0x86, + 0xBE, 0x22, 0x45, 0xD9, 0x8B, 0x17, 0x70, 0xEC, + 0x6B, 0xF7, 0x90, 0x0C, 0x5E, 0xC2, 0xA5, 0x39, + 0x01, 0x9D, 0xFA, 0x66, 0x34, 0xA8, 0xCF, 0x53, + 0xBF, 0x23, 0x44, 0xD8, 0x8A, 0x16, 0x71, 0xED, + 0xD5, 0x49, 0x2E, 0xB2, 0xE0, 0x7C, 0x1B, 0x87, + 0xD6, 0x4A, 0x2D, 0xB1, 0xE3, 0x7F, 0x18, 0x84, + 0xBC, 0x20, 0x47, 0xDB, 0x89, 0x15, 0x72, 0xEE, + 0x02, 0x9E, 0xF9, 0x65, 0x37, 0xAB, 0xCC, 0x50, + 0x68, 0xF4, 0x93, 0x0F, 0x5D, 0xC1, 0xA6, 0x3A, + 0xBD, 0x21, 0x46, 0xDA, 0x88, 0x14, 0x73, 0xEF, + 0xD7, 0x4B, 0x2C, 0xB0, 0xE2, 0x7E, 0x19, 0x85, + 0x69, 0xF5, 0x92, 0x0E, 0x5C, 0xC0, 0xA7, 0x3B, + 0x03, 0x9F, 0xF8, 0x64, 0x36, 0xAA, 0xCD, 0x51, + 0x6F, 0xF3, 0x94, 0x08, 0x5A, 0xC6, 0xA1, 0x3D, + 0x05, 0x99, 0xFE, 0x62, 0x30, 0xAC, 0xCB, 0x57, + 0xBB, 0x27, 0x40, 0xDC, 0x8E, 0x12, 0x75, 0xE9, + 0xD1, 0x4D, 0x2A, 0xB6, 0xE4, 0x78, 0x1F, 0x83, + 0x04, 0x98, 0xFF, 0x63, 0x31, 0xAD, 0xCA, 0x56, + 0x6E, 0xF2, 0x95, 0x09, 0x5B, 0xC7, 0xA0, 0x3C, + 0xD0, 0x4C, 0x2B, 0xB7, 0xE5, 0x79, 0x1E, 0x82, + 0xBA, 0x26, 0x41, 0xDD, 0x8F, 0x13, 0x74, 0xE8, + 0xB9, 0x25, 0x42, 0xDE, 0x8C, 0x10, 0x77, 0xEB, + 0xD3, 0x4F, 0x28, 0xB4, 0xE6, 0x7A, 0x1D, 0x81, + 0x6D, 0xF1, 0x96, 0x0A, 0x58, 0xC4, 0xA3, 0x3F, + 0x07, 0x9B, 0xFC, 0x60, 0x32, 0xAE, 0xC9, 0x55, + 0xD2, 0x4E, 0x29, 0xB5, 0xE7, 0x7B, 0x1C, 0x80, + 0xB8, 0x24, 0x43, 0xDF, 0x8D, 0x11, 0x76, 0xEA, + 0x06, 0x9A, 0xFD, 0x61, 0x33, 0xAF, 0xC8, 0x54, + 0x6C, 0xF0, 0x97, 0x0B, 0x59, 0xC5, 0xA2, 0x3E, + 0x00, 0x9D, 0xF9, 0x64, 0x31, 0xAC, 0xC8, 0x55, + 0x62, 0xFF, 0x9B, 0x06, 0x53, 0xCE, 0xAA, 0x37, + 0xC4, 0x59, 0x3D, 0xA0, 0xF5, 0x68, 0x0C, 0x91, + 0xA6, 0x3B, 0x5F, 0xC2, 0x97, 0x0A, 0x6E, 0xF3, + 0x4B, 0xD6, 0xB2, 0x2F, 0x7A, 0xE7, 0x83, 0x1E, + 0x29, 0xB4, 0xD0, 0x4D, 0x18, 0x85, 0xE1, 0x7C, + 0x8F, 0x12, 0x76, 0xEB, 0xBE, 0x23, 0x47, 0xDA, + 0xED, 0x70, 0x14, 0x89, 0xDC, 0x41, 0x25, 0xB8, + 0x96, 0x0B, 0x6F, 0xF2, 0xA7, 0x3A, 0x5E, 0xC3, + 0xF4, 0x69, 0x0D, 0x90, 0xC5, 0x58, 0x3C, 0xA1, + 0x52, 0xCF, 0xAB, 0x36, 0x63, 0xFE, 0x9A, 0x07, + 0x30, 0xAD, 0xC9, 0x54, 0x01, 0x9C, 0xF8, 0x65, + 0xDD, 0x40, 0x24, 0xB9, 0xEC, 0x71, 0x15, 0x88, + 0xBF, 0x22, 0x46, 0xDB, 0x8E, 0x13, 0x77, 0xEA, + 0x19, 0x84, 0xE0, 0x7D, 0x28, 0xB5, 0xD1, 0x4C, + 0x7B, 0xE6, 0x82, 0x1F, 0x4A, 0xD7, 0xB3, 0x2E, + 0xEF, 0x72, 0x16, 0x8B, 0xDE, 0x43, 0x27, 0xBA, + 0x8D, 0x10, 0x74, 0xE9, 0xBC, 0x21, 0x45, 0xD8, + 0x2B, 0xB6, 0xD2, 0x4F, 0x1A, 0x87, 0xE3, 0x7E, + 0x49, 0xD4, 0xB0, 0x2D, 0x78, 0xE5, 0x81, 0x1C, + 0xA4, 0x39, 0x5D, 0xC0, 0x95, 0x08, 0x6C, 0xF1, + 0xC6, 0x5B, 0x3F, 0xA2, 0xF7, 0x6A, 0x0E, 0x93, + 0x60, 0xFD, 0x99, 0x04, 0x51, 0xCC, 0xA8, 0x35, + 0x02, 0x9F, 0xFB, 0x66, 0x33, 0xAE, 0xCA, 0x57, + 0x79, 0xE4, 0x80, 0x1D, 0x48, 0xD5, 0xB1, 0x2C, + 0x1B, 0x86, 0xE2, 0x7F, 0x2A, 0xB7, 0xD3, 0x4E, + 0xBD, 0x20, 0x44, 0xD9, 0x8C, 0x11, 0x75, 0xE8, + 0xDF, 0x42, 0x26, 0xBB, 0xEE, 0x73, 0x17, 0x8A, + 0x32, 0xAF, 0xCB, 0x56, 0x03, 0x9E, 0xFA, 0x67, + 0x50, 0xCD, 0xA9, 0x34, 0x61, 0xFC, 0x98, 0x05, + 0xF6, 0x6B, 0x0F, 0x92, 0xC7, 0x5A, 0x3E, 0xA3, + 0x94, 0x09, 0x6D, 0xF0, 0xA5, 0x38, 0x5C, 0xC1, + 0x00, 0x9E, 0xFF, 0x61, 0x3D, 0xA3, 0xC2, 0x5C, + 0x7A, 0xE4, 0x85, 0x1B, 0x47, 0xD9, 0xB8, 0x26, + 0xF4, 0x6A, 0x0B, 0x95, 0xC9, 0x57, 0x36, 0xA8, + 0x8E, 0x10, 0x71, 0xEF, 0xB3, 0x2D, 0x4C, 0xD2, + 0x2B, 0xB5, 0xD4, 0x4A, 0x16, 0x88, 0xE9, 0x77, + 0x51, 0xCF, 0xAE, 0x30, 0x6C, 0xF2, 0x93, 0x0D, + 0xDF, 0x41, 0x20, 0xBE, 0xE2, 0x7C, 0x1D, 0x83, + 0xA5, 0x3B, 0x5A, 0xC4, 0x98, 0x06, 0x67, 0xF9, + 0x56, 0xC8, 0xA9, 0x37, 0x6B, 0xF5, 0x94, 0x0A, + 0x2C, 0xB2, 0xD3, 0x4D, 0x11, 0x8F, 0xEE, 0x70, + 0xA2, 0x3C, 0x5D, 0xC3, 0x9F, 0x01, 0x60, 0xFE, + 0xD8, 0x46, 0x27, 0xB9, 0xE5, 0x7B, 0x1A, 0x84, + 0x7D, 0xE3, 0x82, 0x1C, 0x40, 0xDE, 0xBF, 0x21, + 0x07, 0x99, 0xF8, 0x66, 0x3A, 0xA4, 0xC5, 0x5B, + 0x89, 0x17, 0x76, 0xE8, 0xB4, 0x2A, 0x4B, 0xD5, + 0xF3, 0x6D, 0x0C, 0x92, 0xCE, 0x50, 0x31, 0xAF, + 0xAC, 0x32, 0x53, 0xCD, 0x91, 0x0F, 0x6E, 0xF0, + 0xD6, 0x48, 0x29, 0xB7, 0xEB, 0x75, 0x14, 0x8A, + 0x58, 0xC6, 0xA7, 0x39, 0x65, 0xFB, 0x9A, 0x04, + 0x22, 0xBC, 0xDD, 0x43, 0x1F, 0x81, 0xE0, 0x7E, + 0x87, 0x19, 0x78, 0xE6, 0xBA, 0x24, 0x45, 0xDB, + 0xFD, 0x63, 0x02, 0x9C, 0xC0, 0x5E, 0x3F, 0xA1, + 0x73, 0xED, 0x8C, 0x12, 0x4E, 0xD0, 0xB1, 0x2F, + 0x09, 0x97, 0xF6, 0x68, 0x34, 0xAA, 0xCB, 0x55, + 0xFA, 0x64, 0x05, 0x9B, 0xC7, 0x59, 0x38, 0xA6, + 0x80, 0x1E, 0x7F, 0xE1, 0xBD, 0x23, 0x42, 0xDC, + 0x0E, 0x90, 0xF1, 0x6F, 0x33, 0xAD, 0xCC, 0x52, + 0x74, 0xEA, 0x8B, 0x15, 0x49, 0xD7, 0xB6, 0x28, + 0xD1, 0x4F, 0x2E, 0xB0, 0xEC, 0x72, 0x13, 0x8D, + 0xAB, 0x35, 0x54, 0xCA, 0x96, 0x08, 0x69, 0xF7, + 0x25, 0xBB, 0xDA, 0x44, 0x18, 0x86, 0xE7, 0x79, + 0x5F, 0xC1, 0xA0, 0x3E, 0x62, 0xFC, 0x9D, 0x03, + 0x00, 0x9F, 0xFD, 0x62, 0x39, 0xA6, 0xC4, 0x5B, + 0x72, 0xED, 0x8F, 0x10, 0x4B, 0xD4, 0xB6, 0x29, + 0xE4, 0x7B, 0x19, 0x86, 0xDD, 0x42, 0x20, 0xBF, + 0x96, 0x09, 0x6B, 0xF4, 0xAF, 0x30, 0x52, 0xCD, + 0x0B, 0x94, 0xF6, 0x69, 0x32, 0xAD, 0xCF, 0x50, + 0x79, 0xE6, 0x84, 0x1B, 0x40, 0xDF, 0xBD, 0x22, + 0xEF, 0x70, 0x12, 0x8D, 0xD6, 0x49, 0x2B, 0xB4, + 0x9D, 0x02, 0x60, 0xFF, 0xA4, 0x3B, 0x59, 0xC6, + 0x16, 0x89, 0xEB, 0x74, 0x2F, 0xB0, 0xD2, 0x4D, + 0x64, 0xFB, 0x99, 0x06, 0x5D, 0xC2, 0xA0, 0x3F, + 0xF2, 0x6D, 0x0F, 0x90, 0xCB, 0x54, 0x36, 0xA9, + 0x80, 0x1F, 0x7D, 0xE2, 0xB9, 0x26, 0x44, 0xDB, + 0x1D, 0x82, 0xE0, 0x7F, 0x24, 0xBB, 0xD9, 0x46, + 0x6F, 0xF0, 0x92, 0x0D, 0x56, 0xC9, 0xAB, 0x34, + 0xF9, 0x66, 0x04, 0x9B, 0xC0, 0x5F, 0x3D, 0xA2, + 0x8B, 0x14, 0x76, 0xE9, 0xB2, 0x2D, 0x4F, 0xD0, + 0x2C, 0xB3, 0xD1, 0x4E, 0x15, 0x8A, 0xE8, 0x77, + 0x5E, 0xC1, 0xA3, 0x3C, 0x67, 0xF8, 0x9A, 0x05, + 0xC8, 0x57, 0x35, 0xAA, 0xF1, 0x6E, 0x0C, 0x93, + 0xBA, 0x25, 0x47, 0xD8, 0x83, 0x1C, 0x7E, 0xE1, + 0x27, 0xB8, 0xDA, 0x45, 0x1E, 0x81, 0xE3, 0x7C, + 0x55, 0xCA, 0xA8, 0x37, 0x6C, 0xF3, 0x91, 0x0E, + 0xC3, 0x5C, 0x3E, 0xA1, 0xFA, 0x65, 0x07, 0x98, + 0xB1, 0x2E, 0x4C, 0xD3, 0x88, 0x17, 0x75, 0xEA, + 0x3A, 0xA5, 0xC7, 0x58, 0x03, 0x9C, 0xFE, 0x61, + 0x48, 0xD7, 0xB5, 0x2A, 0x71, 0xEE, 0x8C, 0x13, + 0xDE, 0x41, 0x23, 0xBC, 0xE7, 0x78, 0x1A, 0x85, + 0xAC, 0x33, 0x51, 0xCE, 0x95, 0x0A, 0x68, 0xF7, + 0x31, 0xAE, 0xCC, 0x53, 0x08, 0x97, 0xF5, 0x6A, + 0x43, 0xDC, 0xBE, 0x21, 0x7A, 0xE5, 0x87, 0x18, + 0xD5, 0x4A, 0x28, 0xB7, 0xEC, 0x73, 0x11, 0x8E, + 0xA7, 0x38, 0x5A, 0xC5, 0x9E, 0x01, 0x63, 0xFC, + 0x00, 0xA0, 0x83, 0x23, 0xC5, 0x65, 0x46, 0xE6, + 0x49, 0xE9, 0xCA, 0x6A, 0x8C, 0x2C, 0x0F, 0xAF, + 0x92, 0x32, 0x11, 0xB1, 0x57, 0xF7, 0xD4, 0x74, + 0xDB, 0x7B, 0x58, 0xF8, 0x1E, 0xBE, 0x9D, 0x3D, + 0xE7, 0x47, 0x64, 0xC4, 0x22, 0x82, 0xA1, 0x01, + 0xAE, 0x0E, 0x2D, 0x8D, 0x6B, 0xCB, 0xE8, 0x48, + 0x75, 0xD5, 0xF6, 0x56, 0xB0, 0x10, 0x33, 0x93, + 0x3C, 0x9C, 0xBF, 0x1F, 0xF9, 0x59, 0x7A, 0xDA, + 0x0D, 0xAD, 0x8E, 0x2E, 0xC8, 0x68, 0x4B, 0xEB, + 0x44, 0xE4, 0xC7, 0x67, 0x81, 0x21, 0x02, 0xA2, + 0x9F, 0x3F, 0x1C, 0xBC, 0x5A, 0xFA, 0xD9, 0x79, + 0xD6, 0x76, 0x55, 0xF5, 0x13, 0xB3, 0x90, 0x30, + 0xEA, 0x4A, 0x69, 0xC9, 0x2F, 0x8F, 0xAC, 0x0C, + 0xA3, 0x03, 0x20, 0x80, 0x66, 0xC6, 0xE5, 0x45, + 0x78, 0xD8, 0xFB, 0x5B, 0xBD, 0x1D, 0x3E, 0x9E, + 0x31, 0x91, 0xB2, 0x12, 0xF4, 0x54, 0x77, 0xD7, + 0x1A, 0xBA, 0x99, 0x39, 0xDF, 0x7F, 0x5C, 0xFC, + 0x53, 0xF3, 0xD0, 0x70, 0x96, 0x36, 0x15, 0xB5, + 0x88, 0x28, 0x0B, 0xAB, 0x4D, 0xED, 0xCE, 0x6E, + 0xC1, 0x61, 0x42, 0xE2, 0x04, 0xA4, 0x87, 0x27, + 0xFD, 0x5D, 0x7E, 0xDE, 0x38, 0x98, 0xBB, 0x1B, + 0xB4, 0x14, 0x37, 0x97, 0x71, 0xD1, 0xF2, 0x52, + 0x6F, 0xCF, 0xEC, 0x4C, 0xAA, 0x0A, 0x29, 0x89, + 0x26, 0x86, 0xA5, 0x05, 0xE3, 0x43, 0x60, 0xC0, + 0x17, 0xB7, 0x94, 0x34, 0xD2, 0x72, 0x51, 0xF1, + 0x5E, 0xFE, 0xDD, 0x7D, 0x9B, 0x3B, 0x18, 0xB8, + 0x85, 0x25, 0x06, 0xA6, 0x40, 0xE0, 0xC3, 0x63, + 0xCC, 0x6C, 0x4F, 0xEF, 0x09, 0xA9, 0x8A, 0x2A, + 0xF0, 0x50, 0x73, 0xD3, 0x35, 0x95, 0xB6, 0x16, + 0xB9, 0x19, 0x3A, 0x9A, 0x7C, 0xDC, 0xFF, 0x5F, + 0x62, 0xC2, 0xE1, 0x41, 0xA7, 0x07, 0x24, 0x84, + 0x2B, 0x8B, 0xA8, 0x08, 0xEE, 0x4E, 0x6D, 0xCD, + 0x00, 0xA1, 0x81, 0x20, 0xC1, 0x60, 0x40, 0xE1, + 0x41, 0xE0, 0xC0, 0x61, 0x80, 0x21, 0x01, 0xA0, + 0x82, 0x23, 0x03, 0xA2, 0x43, 0xE2, 0xC2, 0x63, + 0xC3, 0x62, 0x42, 0xE3, 0x02, 0xA3, 0x83, 0x22, + 0xC7, 0x66, 0x46, 0xE7, 0x06, 0xA7, 0x87, 0x26, + 0x86, 0x27, 0x07, 0xA6, 0x47, 0xE6, 0xC6, 0x67, + 0x45, 0xE4, 0xC4, 0x65, 0x84, 0x25, 0x05, 0xA4, + 0x04, 0xA5, 0x85, 0x24, 0xC5, 0x64, 0x44, 0xE5, + 0x4D, 0xEC, 0xCC, 0x6D, 0x8C, 0x2D, 0x0D, 0xAC, + 0x0C, 0xAD, 0x8D, 0x2C, 0xCD, 0x6C, 0x4C, 0xED, + 0xCF, 0x6E, 0x4E, 0xEF, 0x0E, 0xAF, 0x8F, 0x2E, + 0x8E, 0x2F, 0x0F, 0xAE, 0x4F, 0xEE, 0xCE, 0x6F, + 0x8A, 0x2B, 0x0B, 0xAA, 0x4B, 0xEA, 0xCA, 0x6B, + 0xCB, 0x6A, 0x4A, 0xEB, 0x0A, 0xAB, 0x8B, 0x2A, + 0x08, 0xA9, 0x89, 0x28, 0xC9, 0x68, 0x48, 0xE9, + 0x49, 0xE8, 0xC8, 0x69, 0x88, 0x29, 0x09, 0xA8, + 0x9A, 0x3B, 0x1B, 0xBA, 0x5B, 0xFA, 0xDA, 0x7B, + 0xDB, 0x7A, 0x5A, 0xFB, 0x1A, 0xBB, 0x9B, 0x3A, + 0x18, 0xB9, 0x99, 0x38, 0xD9, 0x78, 0x58, 0xF9, + 0x59, 0xF8, 0xD8, 0x79, 0x98, 0x39, 0x19, 0xB8, + 0x5D, 0xFC, 0xDC, 0x7D, 0x9C, 0x3D, 0x1D, 0xBC, + 0x1C, 0xBD, 0x9D, 0x3C, 0xDD, 0x7C, 0x5C, 0xFD, + 0xDF, 0x7E, 0x5E, 0xFF, 0x1E, 0xBF, 0x9F, 0x3E, + 0x9E, 0x3F, 0x1F, 0xBE, 0x5F, 0xFE, 0xDE, 0x7F, + 0xD7, 0x76, 0x56, 0xF7, 0x16, 0xB7, 0x97, 0x36, + 0x96, 0x37, 0x17, 0xB6, 0x57, 0xF6, 0xD6, 0x77, + 0x55, 0xF4, 0xD4, 0x75, 0x94, 0x35, 0x15, 0xB4, + 0x14, 0xB5, 0x95, 0x34, 0xD5, 0x74, 0x54, 0xF5, + 0x10, 0xB1, 0x91, 0x30, 0xD1, 0x70, 0x50, 0xF1, + 0x51, 0xF0, 0xD0, 0x71, 0x90, 0x31, 0x11, 0xB0, + 0x92, 0x33, 0x13, 0xB2, 0x53, 0xF2, 0xD2, 0x73, + 0xD3, 0x72, 0x52, 0xF3, 0x12, 0xB3, 0x93, 0x32, + 0x00, 0xA2, 0x87, 0x25, 0xCD, 0x6F, 0x4A, 0xE8, + 0x59, 0xFB, 0xDE, 0x7C, 0x94, 0x36, 0x13, 0xB1, + 0xB2, 0x10, 0x35, 0x97, 0x7F, 0xDD, 0xF8, 0x5A, + 0xEB, 0x49, 0x6C, 0xCE, 0x26, 0x84, 0xA1, 0x03, + 0xA7, 0x05, 0x20, 0x82, 0x6A, 0xC8, 0xED, 0x4F, + 0xFE, 0x5C, 0x79, 0xDB, 0x33, 0x91, 0xB4, 0x16, + 0x15, 0xB7, 0x92, 0x30, 0xD8, 0x7A, 0x5F, 0xFD, + 0x4C, 0xEE, 0xCB, 0x69, 0x81, 0x23, 0x06, 0xA4, + 0x8D, 0x2F, 0x0A, 0xA8, 0x40, 0xE2, 0xC7, 0x65, + 0xD4, 0x76, 0x53, 0xF1, 0x19, 0xBB, 0x9E, 0x3C, + 0x3F, 0x9D, 0xB8, 0x1A, 0xF2, 0x50, 0x75, 0xD7, + 0x66, 0xC4, 0xE1, 0x43, 0xAB, 0x09, 0x2C, 0x8E, + 0x2A, 0x88, 0xAD, 0x0F, 0xE7, 0x45, 0x60, 0xC2, + 0x73, 0xD1, 0xF4, 0x56, 0xBE, 0x1C, 0x39, 0x9B, + 0x98, 0x3A, 0x1F, 0xBD, 0x55, 0xF7, 0xD2, 0x70, + 0xC1, 0x63, 0x46, 0xE4, 0x0C, 0xAE, 0x8B, 0x29, + 0xD9, 0x7B, 0x5E, 0xFC, 0x14, 0xB6, 0x93, 0x31, + 0x80, 0x22, 0x07, 0xA5, 0x4D, 0xEF, 0xCA, 0x68, + 0x6B, 0xC9, 0xEC, 0x4E, 0xA6, 0x04, 0x21, 0x83, + 0x32, 0x90, 0xB5, 0x17, 0xFF, 0x5D, 0x78, 0xDA, + 0x7E, 0xDC, 0xF9, 0x5B, 0xB3, 0x11, 0x34, 0x96, + 0x27, 0x85, 0xA0, 0x02, 0xEA, 0x48, 0x6D, 0xCF, + 0xCC, 0x6E, 0x4B, 0xE9, 0x01, 0xA3, 0x86, 0x24, + 0x95, 0x37, 0x12, 0xB0, 0x58, 0xFA, 0xDF, 0x7D, + 0x54, 0xF6, 0xD3, 0x71, 0x99, 0x3B, 0x1E, 0xBC, + 0x0D, 0xAF, 0x8A, 0x28, 0xC0, 0x62, 0x47, 0xE5, + 0xE6, 0x44, 0x61, 0xC3, 0x2B, 0x89, 0xAC, 0x0E, + 0xBF, 0x1D, 0x38, 0x9A, 0x72, 0xD0, 0xF5, 0x57, + 0xF3, 0x51, 0x74, 0xD6, 0x3E, 0x9C, 0xB9, 0x1B, + 0xAA, 0x08, 0x2D, 0x8F, 0x67, 0xC5, 0xE0, 0x42, + 0x41, 0xE3, 0xC6, 0x64, 0x8C, 0x2E, 0x0B, 0xA9, + 0x18, 0xBA, 0x9F, 0x3D, 0xD5, 0x77, 0x52, 0xF0, + 0x00, 0xA3, 0x85, 0x26, 0xC9, 0x6A, 0x4C, 0xEF, + 0x51, 0xF2, 0xD4, 0x77, 0x98, 0x3B, 0x1D, 0xBE, + 0xA2, 0x01, 0x27, 0x84, 0x6B, 0xC8, 0xEE, 0x4D, + 0xF3, 0x50, 0x76, 0xD5, 0x3A, 0x99, 0xBF, 0x1C, + 0x87, 0x24, 0x02, 0xA1, 0x4E, 0xED, 0xCB, 0x68, + 0xD6, 0x75, 0x53, 0xF0, 0x1F, 0xBC, 0x9A, 0x39, + 0x25, 0x86, 0xA0, 0x03, 0xEC, 0x4F, 0x69, 0xCA, + 0x74, 0xD7, 0xF1, 0x52, 0xBD, 0x1E, 0x38, 0x9B, + 0xCD, 0x6E, 0x48, 0xEB, 0x04, 0xA7, 0x81, 0x22, + 0x9C, 0x3F, 0x19, 0xBA, 0x55, 0xF6, 0xD0, 0x73, + 0x6F, 0xCC, 0xEA, 0x49, 0xA6, 0x05, 0x23, 0x80, + 0x3E, 0x9D, 0xBB, 0x18, 0xF7, 0x54, 0x72, 0xD1, + 0x4A, 0xE9, 0xCF, 0x6C, 0x83, 0x20, 0x06, 0xA5, + 0x1B, 0xB8, 0x9E, 0x3D, 0xD2, 0x71, 0x57, 0xF4, + 0xE8, 0x4B, 0x6D, 0xCE, 0x21, 0x82, 0xA4, 0x07, + 0xB9, 0x1A, 0x3C, 0x9F, 0x70, 0xD3, 0xF5, 0x56, + 0x59, 0xFA, 0xDC, 0x7F, 0x90, 0x33, 0x15, 0xB6, + 0x08, 0xAB, 0x8D, 0x2E, 0xC1, 0x62, 0x44, 0xE7, + 0xFB, 0x58, 0x7E, 0xDD, 0x32, 0x91, 0xB7, 0x14, + 0xAA, 0x09, 0x2F, 0x8C, 0x63, 0xC0, 0xE6, 0x45, + 0xDE, 0x7D, 0x5B, 0xF8, 0x17, 0xB4, 0x92, 0x31, + 0x8F, 0x2C, 0x0A, 0xA9, 0x46, 0xE5, 0xC3, 0x60, + 0x7C, 0xDF, 0xF9, 0x5A, 0xB5, 0x16, 0x30, 0x93, + 0x2D, 0x8E, 0xA8, 0x0B, 0xE4, 0x47, 0x61, 0xC2, + 0x94, 0x37, 0x11, 0xB2, 0x5D, 0xFE, 0xD8, 0x7B, + 0xC5, 0x66, 0x40, 0xE3, 0x0C, 0xAF, 0x89, 0x2A, + 0x36, 0x95, 0xB3, 0x10, 0xFF, 0x5C, 0x7A, 0xD9, + 0x67, 0xC4, 0xE2, 0x41, 0xAE, 0x0D, 0x2B, 0x88, + 0x13, 0xB0, 0x96, 0x35, 0xDA, 0x79, 0x5F, 0xFC, + 0x42, 0xE1, 0xC7, 0x64, 0x8B, 0x28, 0x0E, 0xAD, + 0xB1, 0x12, 0x34, 0x97, 0x78, 0xDB, 0xFD, 0x5E, + 0xE0, 0x43, 0x65, 0xC6, 0x29, 0x8A, 0xAC, 0x0F, + 0x00, 0xA4, 0x8B, 0x2F, 0xD5, 0x71, 0x5E, 0xFA, + 0x69, 0xCD, 0xE2, 0x46, 0xBC, 0x18, 0x37, 0x93, + 0xD2, 0x76, 0x59, 0xFD, 0x07, 0xA3, 0x8C, 0x28, + 0xBB, 0x1F, 0x30, 0x94, 0x6E, 0xCA, 0xE5, 0x41, + 0x67, 0xC3, 0xEC, 0x48, 0xB2, 0x16, 0x39, 0x9D, + 0x0E, 0xAA, 0x85, 0x21, 0xDB, 0x7F, 0x50, 0xF4, + 0xB5, 0x11, 0x3E, 0x9A, 0x60, 0xC4, 0xEB, 0x4F, + 0xDC, 0x78, 0x57, 0xF3, 0x09, 0xAD, 0x82, 0x26, + 0xCE, 0x6A, 0x45, 0xE1, 0x1B, 0xBF, 0x90, 0x34, + 0xA7, 0x03, 0x2C, 0x88, 0x72, 0xD6, 0xF9, 0x5D, + 0x1C, 0xB8, 0x97, 0x33, 0xC9, 0x6D, 0x42, 0xE6, + 0x75, 0xD1, 0xFE, 0x5A, 0xA0, 0x04, 0x2B, 0x8F, + 0xA9, 0x0D, 0x22, 0x86, 0x7C, 0xD8, 0xF7, 0x53, + 0xC0, 0x64, 0x4B, 0xEF, 0x15, 0xB1, 0x9E, 0x3A, + 0x7B, 0xDF, 0xF0, 0x54, 0xAE, 0x0A, 0x25, 0x81, + 0x12, 0xB6, 0x99, 0x3D, 0xC7, 0x63, 0x4C, 0xE8, + 0x5F, 0xFB, 0xD4, 0x70, 0x8A, 0x2E, 0x01, 0xA5, + 0x36, 0x92, 0xBD, 0x19, 0xE3, 0x47, 0x68, 0xCC, + 0x8D, 0x29, 0x06, 0xA2, 0x58, 0xFC, 0xD3, 0x77, + 0xE4, 0x40, 0x6F, 0xCB, 0x31, 0x95, 0xBA, 0x1E, + 0x38, 0x9C, 0xB3, 0x17, 0xED, 0x49, 0x66, 0xC2, + 0x51, 0xF5, 0xDA, 0x7E, 0x84, 0x20, 0x0F, 0xAB, + 0xEA, 0x4E, 0x61, 0xC5, 0x3F, 0x9B, 0xB4, 0x10, + 0x83, 0x27, 0x08, 0xAC, 0x56, 0xF2, 0xDD, 0x79, + 0x91, 0x35, 0x1A, 0xBE, 0x44, 0xE0, 0xCF, 0x6B, + 0xF8, 0x5C, 0x73, 0xD7, 0x2D, 0x89, 0xA6, 0x02, + 0x43, 0xE7, 0xC8, 0x6C, 0x96, 0x32, 0x1D, 0xB9, + 0x2A, 0x8E, 0xA1, 0x05, 0xFF, 0x5B, 0x74, 0xD0, + 0xF6, 0x52, 0x7D, 0xD9, 0x23, 0x87, 0xA8, 0x0C, + 0x9F, 0x3B, 0x14, 0xB0, 0x4A, 0xEE, 0xC1, 0x65, + 0x24, 0x80, 0xAF, 0x0B, 0xF1, 0x55, 0x7A, 0xDE, + 0x4D, 0xE9, 0xC6, 0x62, 0x98, 0x3C, 0x13, 0xB7, + 0x00, 0xA5, 0x89, 0x2C, 0xD1, 0x74, 0x58, 0xFD, + 0x61, 0xC4, 0xE8, 0x4D, 0xB0, 0x15, 0x39, 0x9C, + 0xC2, 0x67, 0x4B, 0xEE, 0x13, 0xB6, 0x9A, 0x3F, + 0xA3, 0x06, 0x2A, 0x8F, 0x72, 0xD7, 0xFB, 0x5E, + 0x47, 0xE2, 0xCE, 0x6B, 0x96, 0x33, 0x1F, 0xBA, + 0x26, 0x83, 0xAF, 0x0A, 0xF7, 0x52, 0x7E, 0xDB, + 0x85, 0x20, 0x0C, 0xA9, 0x54, 0xF1, 0xDD, 0x78, + 0xE4, 0x41, 0x6D, 0xC8, 0x35, 0x90, 0xBC, 0x19, + 0x8E, 0x2B, 0x07, 0xA2, 0x5F, 0xFA, 0xD6, 0x73, + 0xEF, 0x4A, 0x66, 0xC3, 0x3E, 0x9B, 0xB7, 0x12, + 0x4C, 0xE9, 0xC5, 0x60, 0x9D, 0x38, 0x14, 0xB1, + 0x2D, 0x88, 0xA4, 0x01, 0xFC, 0x59, 0x75, 0xD0, + 0xC9, 0x6C, 0x40, 0xE5, 0x18, 0xBD, 0x91, 0x34, + 0xA8, 0x0D, 0x21, 0x84, 0x79, 0xDC, 0xF0, 0x55, + 0x0B, 0xAE, 0x82, 0x27, 0xDA, 0x7F, 0x53, 0xF6, + 0x6A, 0xCF, 0xE3, 0x46, 0xBB, 0x1E, 0x32, 0x97, + 0xDF, 0x7A, 0x56, 0xF3, 0x0E, 0xAB, 0x87, 0x22, + 0xBE, 0x1B, 0x37, 0x92, 0x6F, 0xCA, 0xE6, 0x43, + 0x1D, 0xB8, 0x94, 0x31, 0xCC, 0x69, 0x45, 0xE0, + 0x7C, 0xD9, 0xF5, 0x50, 0xAD, 0x08, 0x24, 0x81, + 0x98, 0x3D, 0x11, 0xB4, 0x49, 0xEC, 0xC0, 0x65, + 0xF9, 0x5C, 0x70, 0xD5, 0x28, 0x8D, 0xA1, 0x04, + 0x5A, 0xFF, 0xD3, 0x76, 0x8B, 0x2E, 0x02, 0xA7, + 0x3B, 0x9E, 0xB2, 0x17, 0xEA, 0x4F, 0x63, 0xC6, + 0x51, 0xF4, 0xD8, 0x7D, 0x80, 0x25, 0x09, 0xAC, + 0x30, 0x95, 0xB9, 0x1C, 0xE1, 0x44, 0x68, 0xCD, + 0x93, 0x36, 0x1A, 0xBF, 0x42, 0xE7, 0xCB, 0x6E, + 0xF2, 0x57, 0x7B, 0xDE, 0x23, 0x86, 0xAA, 0x0F, + 0x16, 0xB3, 0x9F, 0x3A, 0xC7, 0x62, 0x4E, 0xEB, + 0x77, 0xD2, 0xFE, 0x5B, 0xA6, 0x03, 0x2F, 0x8A, + 0xD4, 0x71, 0x5D, 0xF8, 0x05, 0xA0, 0x8C, 0x29, + 0xB5, 0x10, 0x3C, 0x99, 0x64, 0xC1, 0xED, 0x48, + 0x00, 0xA6, 0x8F, 0x29, 0xDD, 0x7B, 0x52, 0xF4, + 0x79, 0xDF, 0xF6, 0x50, 0xA4, 0x02, 0x2B, 0x8D, + 0xF2, 0x54, 0x7D, 0xDB, 0x2F, 0x89, 0xA0, 0x06, + 0x8B, 0x2D, 0x04, 0xA2, 0x56, 0xF0, 0xD9, 0x7F, + 0x27, 0x81, 0xA8, 0x0E, 0xFA, 0x5C, 0x75, 0xD3, + 0x5E, 0xF8, 0xD1, 0x77, 0x83, 0x25, 0x0C, 0xAA, + 0xD5, 0x73, 0x5A, 0xFC, 0x08, 0xAE, 0x87, 0x21, + 0xAC, 0x0A, 0x23, 0x85, 0x71, 0xD7, 0xFE, 0x58, + 0x4E, 0xE8, 0xC1, 0x67, 0x93, 0x35, 0x1C, 0xBA, + 0x37, 0x91, 0xB8, 0x1E, 0xEA, 0x4C, 0x65, 0xC3, + 0xBC, 0x1A, 0x33, 0x95, 0x61, 0xC7, 0xEE, 0x48, + 0xC5, 0x63, 0x4A, 0xEC, 0x18, 0xBE, 0x97, 0x31, + 0x69, 0xCF, 0xE6, 0x40, 0xB4, 0x12, 0x3B, 0x9D, + 0x10, 0xB6, 0x9F, 0x39, 0xCD, 0x6B, 0x42, 0xE4, + 0x9B, 0x3D, 0x14, 0xB2, 0x46, 0xE0, 0xC9, 0x6F, + 0xE2, 0x44, 0x6D, 0xCB, 0x3F, 0x99, 0xB0, 0x16, + 0x9C, 0x3A, 0x13, 0xB5, 0x41, 0xE7, 0xCE, 0x68, + 0xE5, 0x43, 0x6A, 0xCC, 0x38, 0x9E, 0xB7, 0x11, + 0x6E, 0xC8, 0xE1, 0x47, 0xB3, 0x15, 0x3C, 0x9A, + 0x17, 0xB1, 0x98, 0x3E, 0xCA, 0x6C, 0x45, 0xE3, + 0xBB, 0x1D, 0x34, 0x92, 0x66, 0xC0, 0xE9, 0x4F, + 0xC2, 0x64, 0x4D, 0xEB, 0x1F, 0xB9, 0x90, 0x36, + 0x49, 0xEF, 0xC6, 0x60, 0x94, 0x32, 0x1B, 0xBD, + 0x30, 0x96, 0xBF, 0x19, 0xED, 0x4B, 0x62, 0xC4, + 0xD2, 0x74, 0x5D, 0xFB, 0x0F, 0xA9, 0x80, 0x26, + 0xAB, 0x0D, 0x24, 0x82, 0x76, 0xD0, 0xF9, 0x5F, + 0x20, 0x86, 0xAF, 0x09, 0xFD, 0x5B, 0x72, 0xD4, + 0x59, 0xFF, 0xD6, 0x70, 0x84, 0x22, 0x0B, 0xAD, + 0xF5, 0x53, 0x7A, 0xDC, 0x28, 0x8E, 0xA7, 0x01, + 0x8C, 0x2A, 0x03, 0xA5, 0x51, 0xF7, 0xDE, 0x78, + 0x07, 0xA1, 0x88, 0x2E, 0xDA, 0x7C, 0x55, 0xF3, + 0x7E, 0xD8, 0xF1, 0x57, 0xA3, 0x05, 0x2C, 0x8A, + 0x00, 0xA7, 0x8D, 0x2A, 0xD9, 0x7E, 0x54, 0xF3, + 0x71, 0xD6, 0xFC, 0x5B, 0xA8, 0x0F, 0x25, 0x82, + 0xE2, 0x45, 0x6F, 0xC8, 0x3B, 0x9C, 0xB6, 0x11, + 0x93, 0x34, 0x1E, 0xB9, 0x4A, 0xED, 0xC7, 0x60, + 0x07, 0xA0, 0x8A, 0x2D, 0xDE, 0x79, 0x53, 0xF4, + 0x76, 0xD1, 0xFB, 0x5C, 0xAF, 0x08, 0x22, 0x85, + 0xE5, 0x42, 0x68, 0xCF, 0x3C, 0x9B, 0xB1, 0x16, + 0x94, 0x33, 0x19, 0xBE, 0x4D, 0xEA, 0xC0, 0x67, + 0x0E, 0xA9, 0x83, 0x24, 0xD7, 0x70, 0x5A, 0xFD, + 0x7F, 0xD8, 0xF2, 0x55, 0xA6, 0x01, 0x2B, 0x8C, + 0xEC, 0x4B, 0x61, 0xC6, 0x35, 0x92, 0xB8, 0x1F, + 0x9D, 0x3A, 0x10, 0xB7, 0x44, 0xE3, 0xC9, 0x6E, + 0x09, 0xAE, 0x84, 0x23, 0xD0, 0x77, 0x5D, 0xFA, + 0x78, 0xDF, 0xF5, 0x52, 0xA1, 0x06, 0x2C, 0x8B, + 0xEB, 0x4C, 0x66, 0xC1, 0x32, 0x95, 0xBF, 0x18, + 0x9A, 0x3D, 0x17, 0xB0, 0x43, 0xE4, 0xCE, 0x69, + 0x1C, 0xBB, 0x91, 0x36, 0xC5, 0x62, 0x48, 0xEF, + 0x6D, 0xCA, 0xE0, 0x47, 0xB4, 0x13, 0x39, 0x9E, + 0xFE, 0x59, 0x73, 0xD4, 0x27, 0x80, 0xAA, 0x0D, + 0x8F, 0x28, 0x02, 0xA5, 0x56, 0xF1, 0xDB, 0x7C, + 0x1B, 0xBC, 0x96, 0x31, 0xC2, 0x65, 0x4F, 0xE8, + 0x6A, 0xCD, 0xE7, 0x40, 0xB3, 0x14, 0x3E, 0x99, + 0xF9, 0x5E, 0x74, 0xD3, 0x20, 0x87, 0xAD, 0x0A, + 0x88, 0x2F, 0x05, 0xA2, 0x51, 0xF6, 0xDC, 0x7B, + 0x12, 0xB5, 0x9F, 0x38, 0xCB, 0x6C, 0x46, 0xE1, + 0x63, 0xC4, 0xEE, 0x49, 0xBA, 0x1D, 0x37, 0x90, + 0xF0, 0x57, 0x7D, 0xDA, 0x29, 0x8E, 0xA4, 0x03, + 0x81, 0x26, 0x0C, 0xAB, 0x58, 0xFF, 0xD5, 0x72, + 0x15, 0xB2, 0x98, 0x3F, 0xCC, 0x6B, 0x41, 0xE6, + 0x64, 0xC3, 0xE9, 0x4E, 0xBD, 0x1A, 0x30, 0x97, + 0xF7, 0x50, 0x7A, 0xDD, 0x2E, 0x89, 0xA3, 0x04, + 0x86, 0x21, 0x0B, 0xAC, 0x5F, 0xF8, 0xD2, 0x75, + 0x00, 0xA8, 0x93, 0x3B, 0xE5, 0x4D, 0x76, 0xDE, + 0x09, 0xA1, 0x9A, 0x32, 0xEC, 0x44, 0x7F, 0xD7, + 0x12, 0xBA, 0x81, 0x29, 0xF7, 0x5F, 0x64, 0xCC, + 0x1B, 0xB3, 0x88, 0x20, 0xFE, 0x56, 0x6D, 0xC5, + 0x24, 0x8C, 0xB7, 0x1F, 0xC1, 0x69, 0x52, 0xFA, + 0x2D, 0x85, 0xBE, 0x16, 0xC8, 0x60, 0x5B, 0xF3, + 0x36, 0x9E, 0xA5, 0x0D, 0xD3, 0x7B, 0x40, 0xE8, + 0x3F, 0x97, 0xAC, 0x04, 0xDA, 0x72, 0x49, 0xE1, + 0x48, 0xE0, 0xDB, 0x73, 0xAD, 0x05, 0x3E, 0x96, + 0x41, 0xE9, 0xD2, 0x7A, 0xA4, 0x0C, 0x37, 0x9F, + 0x5A, 0xF2, 0xC9, 0x61, 0xBF, 0x17, 0x2C, 0x84, + 0x53, 0xFB, 0xC0, 0x68, 0xB6, 0x1E, 0x25, 0x8D, + 0x6C, 0xC4, 0xFF, 0x57, 0x89, 0x21, 0x1A, 0xB2, + 0x65, 0xCD, 0xF6, 0x5E, 0x80, 0x28, 0x13, 0xBB, + 0x7E, 0xD6, 0xED, 0x45, 0x9B, 0x33, 0x08, 0xA0, + 0x77, 0xDF, 0xE4, 0x4C, 0x92, 0x3A, 0x01, 0xA9, + 0x90, 0x38, 0x03, 0xAB, 0x75, 0xDD, 0xE6, 0x4E, + 0x99, 0x31, 0x0A, 0xA2, 0x7C, 0xD4, 0xEF, 0x47, + 0x82, 0x2A, 0x11, 0xB9, 0x67, 0xCF, 0xF4, 0x5C, + 0x8B, 0x23, 0x18, 0xB0, 0x6E, 0xC6, 0xFD, 0x55, + 0xB4, 0x1C, 0x27, 0x8F, 0x51, 0xF9, 0xC2, 0x6A, + 0xBD, 0x15, 0x2E, 0x86, 0x58, 0xF0, 0xCB, 0x63, + 0xA6, 0x0E, 0x35, 0x9D, 0x43, 0xEB, 0xD0, 0x78, + 0xAF, 0x07, 0x3C, 0x94, 0x4A, 0xE2, 0xD9, 0x71, + 0xD8, 0x70, 0x4B, 0xE3, 0x3D, 0x95, 0xAE, 0x06, + 0xD1, 0x79, 0x42, 0xEA, 0x34, 0x9C, 0xA7, 0x0F, + 0xCA, 0x62, 0x59, 0xF1, 0x2F, 0x87, 0xBC, 0x14, + 0xC3, 0x6B, 0x50, 0xF8, 0x26, 0x8E, 0xB5, 0x1D, + 0xFC, 0x54, 0x6F, 0xC7, 0x19, 0xB1, 0x8A, 0x22, + 0xF5, 0x5D, 0x66, 0xCE, 0x10, 0xB8, 0x83, 0x2B, + 0xEE, 0x46, 0x7D, 0xD5, 0x0B, 0xA3, 0x98, 0x30, + 0xE7, 0x4F, 0x74, 0xDC, 0x02, 0xAA, 0x91, 0x39, + 0x00, 0xA9, 0x91, 0x38, 0xE1, 0x48, 0x70, 0xD9, + 0x01, 0xA8, 0x90, 0x39, 0xE0, 0x49, 0x71, 0xD8, + 0x02, 0xAB, 0x93, 0x3A, 0xE3, 0x4A, 0x72, 0xDB, + 0x03, 0xAA, 0x92, 0x3B, 0xE2, 0x4B, 0x73, 0xDA, + 0x04, 0xAD, 0x95, 0x3C, 0xE5, 0x4C, 0x74, 0xDD, + 0x05, 0xAC, 0x94, 0x3D, 0xE4, 0x4D, 0x75, 0xDC, + 0x06, 0xAF, 0x97, 0x3E, 0xE7, 0x4E, 0x76, 0xDF, + 0x07, 0xAE, 0x96, 0x3F, 0xE6, 0x4F, 0x77, 0xDE, + 0x08, 0xA1, 0x99, 0x30, 0xE9, 0x40, 0x78, 0xD1, + 0x09, 0xA0, 0x98, 0x31, 0xE8, 0x41, 0x79, 0xD0, + 0x0A, 0xA3, 0x9B, 0x32, 0xEB, 0x42, 0x7A, 0xD3, + 0x0B, 0xA2, 0x9A, 0x33, 0xEA, 0x43, 0x7B, 0xD2, + 0x0C, 0xA5, 0x9D, 0x34, 0xED, 0x44, 0x7C, 0xD5, + 0x0D, 0xA4, 0x9C, 0x35, 0xEC, 0x45, 0x7D, 0xD4, + 0x0E, 0xA7, 0x9F, 0x36, 0xEF, 0x46, 0x7E, 0xD7, + 0x0F, 0xA6, 0x9E, 0x37, 0xEE, 0x47, 0x7F, 0xD6, + 0x10, 0xB9, 0x81, 0x28, 0xF1, 0x58, 0x60, 0xC9, + 0x11, 0xB8, 0x80, 0x29, 0xF0, 0x59, 0x61, 0xC8, + 0x12, 0xBB, 0x83, 0x2A, 0xF3, 0x5A, 0x62, 0xCB, + 0x13, 0xBA, 0x82, 0x2B, 0xF2, 0x5B, 0x63, 0xCA, + 0x14, 0xBD, 0x85, 0x2C, 0xF5, 0x5C, 0x64, 0xCD, + 0x15, 0xBC, 0x84, 0x2D, 0xF4, 0x5D, 0x65, 0xCC, + 0x16, 0xBF, 0x87, 0x2E, 0xF7, 0x5E, 0x66, 0xCF, + 0x17, 0xBE, 0x86, 0x2F, 0xF6, 0x5F, 0x67, 0xCE, + 0x18, 0xB1, 0x89, 0x20, 0xF9, 0x50, 0x68, 0xC1, + 0x19, 0xB0, 0x88, 0x21, 0xF8, 0x51, 0x69, 0xC0, + 0x1A, 0xB3, 0x8B, 0x22, 0xFB, 0x52, 0x6A, 0xC3, + 0x1B, 0xB2, 0x8A, 0x23, 0xFA, 0x53, 0x6B, 0xC2, + 0x1C, 0xB5, 0x8D, 0x24, 0xFD, 0x54, 0x6C, 0xC5, + 0x1D, 0xB4, 0x8C, 0x25, 0xFC, 0x55, 0x6D, 0xC4, + 0x1E, 0xB7, 0x8F, 0x26, 0xFF, 0x56, 0x6E, 0xC7, + 0x1F, 0xB6, 0x8E, 0x27, 0xFE, 0x57, 0x6F, 0xC6, + 0x00, 0xAA, 0x97, 0x3D, 0xED, 0x47, 0x7A, 0xD0, + 0x19, 0xB3, 0x8E, 0x24, 0xF4, 0x5E, 0x63, 0xC9, + 0x32, 0x98, 0xA5, 0x0F, 0xDF, 0x75, 0x48, 0xE2, + 0x2B, 0x81, 0xBC, 0x16, 0xC6, 0x6C, 0x51, 0xFB, + 0x64, 0xCE, 0xF3, 0x59, 0x89, 0x23, 0x1E, 0xB4, + 0x7D, 0xD7, 0xEA, 0x40, 0x90, 0x3A, 0x07, 0xAD, + 0x56, 0xFC, 0xC1, 0x6B, 0xBB, 0x11, 0x2C, 0x86, + 0x4F, 0xE5, 0xD8, 0x72, 0xA2, 0x08, 0x35, 0x9F, + 0xC8, 0x62, 0x5F, 0xF5, 0x25, 0x8F, 0xB2, 0x18, + 0xD1, 0x7B, 0x46, 0xEC, 0x3C, 0x96, 0xAB, 0x01, + 0xFA, 0x50, 0x6D, 0xC7, 0x17, 0xBD, 0x80, 0x2A, + 0xE3, 0x49, 0x74, 0xDE, 0x0E, 0xA4, 0x99, 0x33, + 0xAC, 0x06, 0x3B, 0x91, 0x41, 0xEB, 0xD6, 0x7C, + 0xB5, 0x1F, 0x22, 0x88, 0x58, 0xF2, 0xCF, 0x65, + 0x9E, 0x34, 0x09, 0xA3, 0x73, 0xD9, 0xE4, 0x4E, + 0x87, 0x2D, 0x10, 0xBA, 0x6A, 0xC0, 0xFD, 0x57, + 0x53, 0xF9, 0xC4, 0x6E, 0xBE, 0x14, 0x29, 0x83, + 0x4A, 0xE0, 0xDD, 0x77, 0xA7, 0x0D, 0x30, 0x9A, + 0x61, 0xCB, 0xF6, 0x5C, 0x8C, 0x26, 0x1B, 0xB1, + 0x78, 0xD2, 0xEF, 0x45, 0x95, 0x3F, 0x02, 0xA8, + 0x37, 0x9D, 0xA0, 0x0A, 0xDA, 0x70, 0x4D, 0xE7, + 0x2E, 0x84, 0xB9, 0x13, 0xC3, 0x69, 0x54, 0xFE, + 0x05, 0xAF, 0x92, 0x38, 0xE8, 0x42, 0x7F, 0xD5, + 0x1C, 0xB6, 0x8B, 0x21, 0xF1, 0x5B, 0x66, 0xCC, + 0x9B, 0x31, 0x0C, 0xA6, 0x76, 0xDC, 0xE1, 0x4B, + 0x82, 0x28, 0x15, 0xBF, 0x6F, 0xC5, 0xF8, 0x52, + 0xA9, 0x03, 0x3E, 0x94, 0x44, 0xEE, 0xD3, 0x79, + 0xB0, 0x1A, 0x27, 0x8D, 0x5D, 0xF7, 0xCA, 0x60, + 0xFF, 0x55, 0x68, 0xC2, 0x12, 0xB8, 0x85, 0x2F, + 0xE6, 0x4C, 0x71, 0xDB, 0x0B, 0xA1, 0x9C, 0x36, + 0xCD, 0x67, 0x5A, 0xF0, 0x20, 0x8A, 0xB7, 0x1D, + 0xD4, 0x7E, 0x43, 0xE9, 0x39, 0x93, 0xAE, 0x04, + 0x00, 0xAB, 0x95, 0x3E, 0xE9, 0x42, 0x7C, 0xD7, + 0x11, 0xBA, 0x84, 0x2F, 0xF8, 0x53, 0x6D, 0xC6, + 0x22, 0x89, 0xB7, 0x1C, 0xCB, 0x60, 0x5E, 0xF5, + 0x33, 0x98, 0xA6, 0x0D, 0xDA, 0x71, 0x4F, 0xE4, + 0x44, 0xEF, 0xD1, 0x7A, 0xAD, 0x06, 0x38, 0x93, + 0x55, 0xFE, 0xC0, 0x6B, 0xBC, 0x17, 0x29, 0x82, + 0x66, 0xCD, 0xF3, 0x58, 0x8F, 0x24, 0x1A, 0xB1, + 0x77, 0xDC, 0xE2, 0x49, 0x9E, 0x35, 0x0B, 0xA0, + 0x88, 0x23, 0x1D, 0xB6, 0x61, 0xCA, 0xF4, 0x5F, + 0x99, 0x32, 0x0C, 0xA7, 0x70, 0xDB, 0xE5, 0x4E, + 0xAA, 0x01, 0x3F, 0x94, 0x43, 0xE8, 0xD6, 0x7D, + 0xBB, 0x10, 0x2E, 0x85, 0x52, 0xF9, 0xC7, 0x6C, + 0xCC, 0x67, 0x59, 0xF2, 0x25, 0x8E, 0xB0, 0x1B, + 0xDD, 0x76, 0x48, 0xE3, 0x34, 0x9F, 0xA1, 0x0A, + 0xEE, 0x45, 0x7B, 0xD0, 0x07, 0xAC, 0x92, 0x39, + 0xFF, 0x54, 0x6A, 0xC1, 0x16, 0xBD, 0x83, 0x28, + 0xD3, 0x78, 0x46, 0xED, 0x3A, 0x91, 0xAF, 0x04, + 0xC2, 0x69, 0x57, 0xFC, 0x2B, 0x80, 0xBE, 0x15, + 0xF1, 0x5A, 0x64, 0xCF, 0x18, 0xB3, 0x8D, 0x26, + 0xE0, 0x4B, 0x75, 0xDE, 0x09, 0xA2, 0x9C, 0x37, + 0x97, 0x3C, 0x02, 0xA9, 0x7E, 0xD5, 0xEB, 0x40, + 0x86, 0x2D, 0x13, 0xB8, 0x6F, 0xC4, 0xFA, 0x51, + 0xB5, 0x1E, 0x20, 0x8B, 0x5C, 0xF7, 0xC9, 0x62, + 0xA4, 0x0F, 0x31, 0x9A, 0x4D, 0xE6, 0xD8, 0x73, + 0x5B, 0xF0, 0xCE, 0x65, 0xB2, 0x19, 0x27, 0x8C, + 0x4A, 0xE1, 0xDF, 0x74, 0xA3, 0x08, 0x36, 0x9D, + 0x79, 0xD2, 0xEC, 0x47, 0x90, 0x3B, 0x05, 0xAE, + 0x68, 0xC3, 0xFD, 0x56, 0x81, 0x2A, 0x14, 0xBF, + 0x1F, 0xB4, 0x8A, 0x21, 0xF6, 0x5D, 0x63, 0xC8, + 0x0E, 0xA5, 0x9B, 0x30, 0xE7, 0x4C, 0x72, 0xD9, + 0x3D, 0x96, 0xA8, 0x03, 0xD4, 0x7F, 0x41, 0xEA, + 0x2C, 0x87, 0xB9, 0x12, 0xC5, 0x6E, 0x50, 0xFB, + 0x00, 0xAC, 0x9B, 0x37, 0xF5, 0x59, 0x6E, 0xC2, + 0x29, 0x85, 0xB2, 0x1E, 0xDC, 0x70, 0x47, 0xEB, + 0x52, 0xFE, 0xC9, 0x65, 0xA7, 0x0B, 0x3C, 0x90, + 0x7B, 0xD7, 0xE0, 0x4C, 0x8E, 0x22, 0x15, 0xB9, + 0xA4, 0x08, 0x3F, 0x93, 0x51, 0xFD, 0xCA, 0x66, + 0x8D, 0x21, 0x16, 0xBA, 0x78, 0xD4, 0xE3, 0x4F, + 0xF6, 0x5A, 0x6D, 0xC1, 0x03, 0xAF, 0x98, 0x34, + 0xDF, 0x73, 0x44, 0xE8, 0x2A, 0x86, 0xB1, 0x1D, + 0x8B, 0x27, 0x10, 0xBC, 0x7E, 0xD2, 0xE5, 0x49, + 0xA2, 0x0E, 0x39, 0x95, 0x57, 0xFB, 0xCC, 0x60, + 0xD9, 0x75, 0x42, 0xEE, 0x2C, 0x80, 0xB7, 0x1B, + 0xF0, 0x5C, 0x6B, 0xC7, 0x05, 0xA9, 0x9E, 0x32, + 0x2F, 0x83, 0xB4, 0x18, 0xDA, 0x76, 0x41, 0xED, + 0x06, 0xAA, 0x9D, 0x31, 0xF3, 0x5F, 0x68, 0xC4, + 0x7D, 0xD1, 0xE6, 0x4A, 0x88, 0x24, 0x13, 0xBF, + 0x54, 0xF8, 0xCF, 0x63, 0xA1, 0x0D, 0x3A, 0x96, + 0xD5, 0x79, 0x4E, 0xE2, 0x20, 0x8C, 0xBB, 0x17, + 0xFC, 0x50, 0x67, 0xCB, 0x09, 0xA5, 0x92, 0x3E, + 0x87, 0x2B, 0x1C, 0xB0, 0x72, 0xDE, 0xE9, 0x45, + 0xAE, 0x02, 0x35, 0x99, 0x5B, 0xF7, 0xC0, 0x6C, + 0x71, 0xDD, 0xEA, 0x46, 0x84, 0x28, 0x1F, 0xB3, + 0x58, 0xF4, 0xC3, 0x6F, 0xAD, 0x01, 0x36, 0x9A, + 0x23, 0x8F, 0xB8, 0x14, 0xD6, 0x7A, 0x4D, 0xE1, + 0x0A, 0xA6, 0x91, 0x3D, 0xFF, 0x53, 0x64, 0xC8, + 0x5E, 0xF2, 0xC5, 0x69, 0xAB, 0x07, 0x30, 0x9C, + 0x77, 0xDB, 0xEC, 0x40, 0x82, 0x2E, 0x19, 0xB5, + 0x0C, 0xA0, 0x97, 0x3B, 0xF9, 0x55, 0x62, 0xCE, + 0x25, 0x89, 0xBE, 0x12, 0xD0, 0x7C, 0x4B, 0xE7, + 0xFA, 0x56, 0x61, 0xCD, 0x0F, 0xA3, 0x94, 0x38, + 0xD3, 0x7F, 0x48, 0xE4, 0x26, 0x8A, 0xBD, 0x11, + 0xA8, 0x04, 0x33, 0x9F, 0x5D, 0xF1, 0xC6, 0x6A, + 0x81, 0x2D, 0x1A, 0xB6, 0x74, 0xD8, 0xEF, 0x43, + 0x00, 0xAD, 0x99, 0x34, 0xF1, 0x5C, 0x68, 0xC5, + 0x21, 0x8C, 0xB8, 0x15, 0xD0, 0x7D, 0x49, 0xE4, + 0x42, 0xEF, 0xDB, 0x76, 0xB3, 0x1E, 0x2A, 0x87, + 0x63, 0xCE, 0xFA, 0x57, 0x92, 0x3F, 0x0B, 0xA6, + 0x84, 0x29, 0x1D, 0xB0, 0x75, 0xD8, 0xEC, 0x41, + 0xA5, 0x08, 0x3C, 0x91, 0x54, 0xF9, 0xCD, 0x60, + 0xC6, 0x6B, 0x5F, 0xF2, 0x37, 0x9A, 0xAE, 0x03, + 0xE7, 0x4A, 0x7E, 0xD3, 0x16, 0xBB, 0x8F, 0x22, + 0xCB, 0x66, 0x52, 0xFF, 0x3A, 0x97, 0xA3, 0x0E, + 0xEA, 0x47, 0x73, 0xDE, 0x1B, 0xB6, 0x82, 0x2F, + 0x89, 0x24, 0x10, 0xBD, 0x78, 0xD5, 0xE1, 0x4C, + 0xA8, 0x05, 0x31, 0x9C, 0x59, 0xF4, 0xC0, 0x6D, + 0x4F, 0xE2, 0xD6, 0x7B, 0xBE, 0x13, 0x27, 0x8A, + 0x6E, 0xC3, 0xF7, 0x5A, 0x9F, 0x32, 0x06, 0xAB, + 0x0D, 0xA0, 0x94, 0x39, 0xFC, 0x51, 0x65, 0xC8, + 0x2C, 0x81, 0xB5, 0x18, 0xDD, 0x70, 0x44, 0xE9, + 0x55, 0xF8, 0xCC, 0x61, 0xA4, 0x09, 0x3D, 0x90, + 0x74, 0xD9, 0xED, 0x40, 0x85, 0x28, 0x1C, 0xB1, + 0x17, 0xBA, 0x8E, 0x23, 0xE6, 0x4B, 0x7F, 0xD2, + 0x36, 0x9B, 0xAF, 0x02, 0xC7, 0x6A, 0x5E, 0xF3, + 0xD1, 0x7C, 0x48, 0xE5, 0x20, 0x8D, 0xB9, 0x14, + 0xF0, 0x5D, 0x69, 0xC4, 0x01, 0xAC, 0x98, 0x35, + 0x93, 0x3E, 0x0A, 0xA7, 0x62, 0xCF, 0xFB, 0x56, + 0xB2, 0x1F, 0x2B, 0x86, 0x43, 0xEE, 0xDA, 0x77, + 0x9E, 0x33, 0x07, 0xAA, 0x6F, 0xC2, 0xF6, 0x5B, + 0xBF, 0x12, 0x26, 0x8B, 0x4E, 0xE3, 0xD7, 0x7A, + 0xDC, 0x71, 0x45, 0xE8, 0x2D, 0x80, 0xB4, 0x19, + 0xFD, 0x50, 0x64, 0xC9, 0x0C, 0xA1, 0x95, 0x38, + 0x1A, 0xB7, 0x83, 0x2E, 0xEB, 0x46, 0x72, 0xDF, + 0x3B, 0x96, 0xA2, 0x0F, 0xCA, 0x67, 0x53, 0xFE, + 0x58, 0xF5, 0xC1, 0x6C, 0xA9, 0x04, 0x30, 0x9D, + 0x79, 0xD4, 0xE0, 0x4D, 0x88, 0x25, 0x11, 0xBC, + 0x00, 0xAE, 0x9F, 0x31, 0xFD, 0x53, 0x62, 0xCC, + 0x39, 0x97, 0xA6, 0x08, 0xC4, 0x6A, 0x5B, 0xF5, + 0x72, 0xDC, 0xED, 0x43, 0x8F, 0x21, 0x10, 0xBE, + 0x4B, 0xE5, 0xD4, 0x7A, 0xB6, 0x18, 0x29, 0x87, + 0xE4, 0x4A, 0x7B, 0xD5, 0x19, 0xB7, 0x86, 0x28, + 0xDD, 0x73, 0x42, 0xEC, 0x20, 0x8E, 0xBF, 0x11, + 0x96, 0x38, 0x09, 0xA7, 0x6B, 0xC5, 0xF4, 0x5A, + 0xAF, 0x01, 0x30, 0x9E, 0x52, 0xFC, 0xCD, 0x63, + 0x0B, 0xA5, 0x94, 0x3A, 0xF6, 0x58, 0x69, 0xC7, + 0x32, 0x9C, 0xAD, 0x03, 0xCF, 0x61, 0x50, 0xFE, + 0x79, 0xD7, 0xE6, 0x48, 0x84, 0x2A, 0x1B, 0xB5, + 0x40, 0xEE, 0xDF, 0x71, 0xBD, 0x13, 0x22, 0x8C, + 0xEF, 0x41, 0x70, 0xDE, 0x12, 0xBC, 0x8D, 0x23, + 0xD6, 0x78, 0x49, 0xE7, 0x2B, 0x85, 0xB4, 0x1A, + 0x9D, 0x33, 0x02, 0xAC, 0x60, 0xCE, 0xFF, 0x51, + 0xA4, 0x0A, 0x3B, 0x95, 0x59, 0xF7, 0xC6, 0x68, + 0x16, 0xB8, 0x89, 0x27, 0xEB, 0x45, 0x74, 0xDA, + 0x2F, 0x81, 0xB0, 0x1E, 0xD2, 0x7C, 0x4D, 0xE3, + 0x64, 0xCA, 0xFB, 0x55, 0x99, 0x37, 0x06, 0xA8, + 0x5D, 0xF3, 0xC2, 0x6C, 0xA0, 0x0E, 0x3F, 0x91, + 0xF2, 0x5C, 0x6D, 0xC3, 0x0F, 0xA1, 0x90, 0x3E, + 0xCB, 0x65, 0x54, 0xFA, 0x36, 0x98, 0xA9, 0x07, + 0x80, 0x2E, 0x1F, 0xB1, 0x7D, 0xD3, 0xE2, 0x4C, + 0xB9, 0x17, 0x26, 0x88, 0x44, 0xEA, 0xDB, 0x75, + 0x1D, 0xB3, 0x82, 0x2C, 0xE0, 0x4E, 0x7F, 0xD1, + 0x24, 0x8A, 0xBB, 0x15, 0xD9, 0x77, 0x46, 0xE8, + 0x6F, 0xC1, 0xF0, 0x5E, 0x92, 0x3C, 0x0D, 0xA3, + 0x56, 0xF8, 0xC9, 0x67, 0xAB, 0x05, 0x34, 0x9A, + 0xF9, 0x57, 0x66, 0xC8, 0x04, 0xAA, 0x9B, 0x35, + 0xC0, 0x6E, 0x5F, 0xF1, 0x3D, 0x93, 0xA2, 0x0C, + 0x8B, 0x25, 0x14, 0xBA, 0x76, 0xD8, 0xE9, 0x47, + 0xB2, 0x1C, 0x2D, 0x83, 0x4F, 0xE1, 0xD0, 0x7E, + 0x00, 0xAF, 0x9D, 0x32, 0xF9, 0x56, 0x64, 0xCB, + 0x31, 0x9E, 0xAC, 0x03, 0xC8, 0x67, 0x55, 0xFA, + 0x62, 0xCD, 0xFF, 0x50, 0x9B, 0x34, 0x06, 0xA9, + 0x53, 0xFC, 0xCE, 0x61, 0xAA, 0x05, 0x37, 0x98, + 0xC4, 0x6B, 0x59, 0xF6, 0x3D, 0x92, 0xA0, 0x0F, + 0xF5, 0x5A, 0x68, 0xC7, 0x0C, 0xA3, 0x91, 0x3E, + 0xA6, 0x09, 0x3B, 0x94, 0x5F, 0xF0, 0xC2, 0x6D, + 0x97, 0x38, 0x0A, 0xA5, 0x6E, 0xC1, 0xF3, 0x5C, + 0x4B, 0xE4, 0xD6, 0x79, 0xB2, 0x1D, 0x2F, 0x80, + 0x7A, 0xD5, 0xE7, 0x48, 0x83, 0x2C, 0x1E, 0xB1, + 0x29, 0x86, 0xB4, 0x1B, 0xD0, 0x7F, 0x4D, 0xE2, + 0x18, 0xB7, 0x85, 0x2A, 0xE1, 0x4E, 0x7C, 0xD3, + 0x8F, 0x20, 0x12, 0xBD, 0x76, 0xD9, 0xEB, 0x44, + 0xBE, 0x11, 0x23, 0x8C, 0x47, 0xE8, 0xDA, 0x75, + 0xED, 0x42, 0x70, 0xDF, 0x14, 0xBB, 0x89, 0x26, + 0xDC, 0x73, 0x41, 0xEE, 0x25, 0x8A, 0xB8, 0x17, + 0x96, 0x39, 0x0B, 0xA4, 0x6F, 0xC0, 0xF2, 0x5D, + 0xA7, 0x08, 0x3A, 0x95, 0x5E, 0xF1, 0xC3, 0x6C, + 0xF4, 0x5B, 0x69, 0xC6, 0x0D, 0xA2, 0x90, 0x3F, + 0xC5, 0x6A, 0x58, 0xF7, 0x3C, 0x93, 0xA1, 0x0E, + 0x52, 0xFD, 0xCF, 0x60, 0xAB, 0x04, 0x36, 0x99, + 0x63, 0xCC, 0xFE, 0x51, 0x9A, 0x35, 0x07, 0xA8, + 0x30, 0x9F, 0xAD, 0x02, 0xC9, 0x66, 0x54, 0xFB, + 0x01, 0xAE, 0x9C, 0x33, 0xF8, 0x57, 0x65, 0xCA, + 0xDD, 0x72, 0x40, 0xEF, 0x24, 0x8B, 0xB9, 0x16, + 0xEC, 0x43, 0x71, 0xDE, 0x15, 0xBA, 0x88, 0x27, + 0xBF, 0x10, 0x22, 0x8D, 0x46, 0xE9, 0xDB, 0x74, + 0x8E, 0x21, 0x13, 0xBC, 0x77, 0xD8, 0xEA, 0x45, + 0x19, 0xB6, 0x84, 0x2B, 0xE0, 0x4F, 0x7D, 0xD2, + 0x28, 0x87, 0xB5, 0x1A, 0xD1, 0x7E, 0x4C, 0xE3, + 0x7B, 0xD4, 0xE6, 0x49, 0x82, 0x2D, 0x1F, 0xB0, + 0x4A, 0xE5, 0xD7, 0x78, 0xB3, 0x1C, 0x2E, 0x81, + 0x00, 0xB0, 0xA3, 0x13, 0x85, 0x35, 0x26, 0x96, + 0xC9, 0x79, 0x6A, 0xDA, 0x4C, 0xFC, 0xEF, 0x5F, + 0x51, 0xE1, 0xF2, 0x42, 0xD4, 0x64, 0x77, 0xC7, + 0x98, 0x28, 0x3B, 0x8B, 0x1D, 0xAD, 0xBE, 0x0E, + 0xA2, 0x12, 0x01, 0xB1, 0x27, 0x97, 0x84, 0x34, + 0x6B, 0xDB, 0xC8, 0x78, 0xEE, 0x5E, 0x4D, 0xFD, + 0xF3, 0x43, 0x50, 0xE0, 0x76, 0xC6, 0xD5, 0x65, + 0x3A, 0x8A, 0x99, 0x29, 0xBF, 0x0F, 0x1C, 0xAC, + 0x87, 0x37, 0x24, 0x94, 0x02, 0xB2, 0xA1, 0x11, + 0x4E, 0xFE, 0xED, 0x5D, 0xCB, 0x7B, 0x68, 0xD8, + 0xD6, 0x66, 0x75, 0xC5, 0x53, 0xE3, 0xF0, 0x40, + 0x1F, 0xAF, 0xBC, 0x0C, 0x9A, 0x2A, 0x39, 0x89, + 0x25, 0x95, 0x86, 0x36, 0xA0, 0x10, 0x03, 0xB3, + 0xEC, 0x5C, 0x4F, 0xFF, 0x69, 0xD9, 0xCA, 0x7A, + 0x74, 0xC4, 0xD7, 0x67, 0xF1, 0x41, 0x52, 0xE2, + 0xBD, 0x0D, 0x1E, 0xAE, 0x38, 0x88, 0x9B, 0x2B, + 0xCD, 0x7D, 0x6E, 0xDE, 0x48, 0xF8, 0xEB, 0x5B, + 0x04, 0xB4, 0xA7, 0x17, 0x81, 0x31, 0x22, 0x92, + 0x9C, 0x2C, 0x3F, 0x8F, 0x19, 0xA9, 0xBA, 0x0A, + 0x55, 0xE5, 0xF6, 0x46, 0xD0, 0x60, 0x73, 0xC3, + 0x6F, 0xDF, 0xCC, 0x7C, 0xEA, 0x5A, 0x49, 0xF9, + 0xA6, 0x16, 0x05, 0xB5, 0x23, 0x93, 0x80, 0x30, + 0x3E, 0x8E, 0x9D, 0x2D, 0xBB, 0x0B, 0x18, 0xA8, + 0xF7, 0x47, 0x54, 0xE4, 0x72, 0xC2, 0xD1, 0x61, + 0x4A, 0xFA, 0xE9, 0x59, 0xCF, 0x7F, 0x6C, 0xDC, + 0x83, 0x33, 0x20, 0x90, 0x06, 0xB6, 0xA5, 0x15, + 0x1B, 0xAB, 0xB8, 0x08, 0x9E, 0x2E, 0x3D, 0x8D, + 0xD2, 0x62, 0x71, 0xC1, 0x57, 0xE7, 0xF4, 0x44, + 0xE8, 0x58, 0x4B, 0xFB, 0x6D, 0xDD, 0xCE, 0x7E, + 0x21, 0x91, 0x82, 0x32, 0xA4, 0x14, 0x07, 0xB7, + 0xB9, 0x09, 0x1A, 0xAA, 0x3C, 0x8C, 0x9F, 0x2F, + 0x70, 0xC0, 0xD3, 0x63, 0xF5, 0x45, 0x56, 0xE6, + 0x00, 0xB1, 0xA1, 0x10, 0x81, 0x30, 0x20, 0x91, + 0xC1, 0x70, 0x60, 0xD1, 0x40, 0xF1, 0xE1, 0x50, + 0x41, 0xF0, 0xE0, 0x51, 0xC0, 0x71, 0x61, 0xD0, + 0x80, 0x31, 0x21, 0x90, 0x01, 0xB0, 0xA0, 0x11, + 0x82, 0x33, 0x23, 0x92, 0x03, 0xB2, 0xA2, 0x13, + 0x43, 0xF2, 0xE2, 0x53, 0xC2, 0x73, 0x63, 0xD2, + 0xC3, 0x72, 0x62, 0xD3, 0x42, 0xF3, 0xE3, 0x52, + 0x02, 0xB3, 0xA3, 0x12, 0x83, 0x32, 0x22, 0x93, + 0xC7, 0x76, 0x66, 0xD7, 0x46, 0xF7, 0xE7, 0x56, + 0x06, 0xB7, 0xA7, 0x16, 0x87, 0x36, 0x26, 0x97, + 0x86, 0x37, 0x27, 0x96, 0x07, 0xB6, 0xA6, 0x17, + 0x47, 0xF6, 0xE6, 0x57, 0xC6, 0x77, 0x67, 0xD6, + 0x45, 0xF4, 0xE4, 0x55, 0xC4, 0x75, 0x65, 0xD4, + 0x84, 0x35, 0x25, 0x94, 0x05, 0xB4, 0xA4, 0x15, + 0x04, 0xB5, 0xA5, 0x14, 0x85, 0x34, 0x24, 0x95, + 0xC5, 0x74, 0x64, 0xD5, 0x44, 0xF5, 0xE5, 0x54, + 0x4D, 0xFC, 0xEC, 0x5D, 0xCC, 0x7D, 0x6D, 0xDC, + 0x8C, 0x3D, 0x2D, 0x9C, 0x0D, 0xBC, 0xAC, 0x1D, + 0x0C, 0xBD, 0xAD, 0x1C, 0x8D, 0x3C, 0x2C, 0x9D, + 0xCD, 0x7C, 0x6C, 0xDD, 0x4C, 0xFD, 0xED, 0x5C, + 0xCF, 0x7E, 0x6E, 0xDF, 0x4E, 0xFF, 0xEF, 0x5E, + 0x0E, 0xBF, 0xAF, 0x1E, 0x8F, 0x3E, 0x2E, 0x9F, + 0x8E, 0x3F, 0x2F, 0x9E, 0x0F, 0xBE, 0xAE, 0x1F, + 0x4F, 0xFE, 0xEE, 0x5F, 0xCE, 0x7F, 0x6F, 0xDE, + 0x8A, 0x3B, 0x2B, 0x9A, 0x0B, 0xBA, 0xAA, 0x1B, + 0x4B, 0xFA, 0xEA, 0x5B, 0xCA, 0x7B, 0x6B, 0xDA, + 0xCB, 0x7A, 0x6A, 0xDB, 0x4A, 0xFB, 0xEB, 0x5A, + 0x0A, 0xBB, 0xAB, 0x1A, 0x8B, 0x3A, 0x2A, 0x9B, + 0x08, 0xB9, 0xA9, 0x18, 0x89, 0x38, 0x28, 0x99, + 0xC9, 0x78, 0x68, 0xD9, 0x48, 0xF9, 0xE9, 0x58, + 0x49, 0xF8, 0xE8, 0x59, 0xC8, 0x79, 0x69, 0xD8, + 0x88, 0x39, 0x29, 0x98, 0x09, 0xB8, 0xA8, 0x19, + 0x00, 0xB2, 0xA7, 0x15, 0x8D, 0x3F, 0x2A, 0x98, + 0xD9, 0x6B, 0x7E, 0xCC, 0x54, 0xE6, 0xF3, 0x41, + 0x71, 0xC3, 0xD6, 0x64, 0xFC, 0x4E, 0x5B, 0xE9, + 0xA8, 0x1A, 0x0F, 0xBD, 0x25, 0x97, 0x82, 0x30, + 0xE2, 0x50, 0x45, 0xF7, 0x6F, 0xDD, 0xC8, 0x7A, + 0x3B, 0x89, 0x9C, 0x2E, 0xB6, 0x04, 0x11, 0xA3, + 0x93, 0x21, 0x34, 0x86, 0x1E, 0xAC, 0xB9, 0x0B, + 0x4A, 0xF8, 0xED, 0x5F, 0xC7, 0x75, 0x60, 0xD2, + 0x07, 0xB5, 0xA0, 0x12, 0x8A, 0x38, 0x2D, 0x9F, + 0xDE, 0x6C, 0x79, 0xCB, 0x53, 0xE1, 0xF4, 0x46, + 0x76, 0xC4, 0xD1, 0x63, 0xFB, 0x49, 0x5C, 0xEE, + 0xAF, 0x1D, 0x08, 0xBA, 0x22, 0x90, 0x85, 0x37, + 0xE5, 0x57, 0x42, 0xF0, 0x68, 0xDA, 0xCF, 0x7D, + 0x3C, 0x8E, 0x9B, 0x29, 0xB1, 0x03, 0x16, 0xA4, + 0x94, 0x26, 0x33, 0x81, 0x19, 0xAB, 0xBE, 0x0C, + 0x4D, 0xFF, 0xEA, 0x58, 0xC0, 0x72, 0x67, 0xD5, + 0x0E, 0xBC, 0xA9, 0x1B, 0x83, 0x31, 0x24, 0x96, + 0xD7, 0x65, 0x70, 0xC2, 0x5A, 0xE8, 0xFD, 0x4F, + 0x7F, 0xCD, 0xD8, 0x6A, 0xF2, 0x40, 0x55, 0xE7, + 0xA6, 0x14, 0x01, 0xB3, 0x2B, 0x99, 0x8C, 0x3E, + 0xEC, 0x5E, 0x4B, 0xF9, 0x61, 0xD3, 0xC6, 0x74, + 0x35, 0x87, 0x92, 0x20, 0xB8, 0x0A, 0x1F, 0xAD, + 0x9D, 0x2F, 0x3A, 0x88, 0x10, 0xA2, 0xB7, 0x05, + 0x44, 0xF6, 0xE3, 0x51, 0xC9, 0x7B, 0x6E, 0xDC, + 0x09, 0xBB, 0xAE, 0x1C, 0x84, 0x36, 0x23, 0x91, + 0xD0, 0x62, 0x77, 0xC5, 0x5D, 0xEF, 0xFA, 0x48, + 0x78, 0xCA, 0xDF, 0x6D, 0xF5, 0x47, 0x52, 0xE0, + 0xA1, 0x13, 0x06, 0xB4, 0x2C, 0x9E, 0x8B, 0x39, + 0xEB, 0x59, 0x4C, 0xFE, 0x66, 0xD4, 0xC1, 0x73, + 0x32, 0x80, 0x95, 0x27, 0xBF, 0x0D, 0x18, 0xAA, + 0x9A, 0x28, 0x3D, 0x8F, 0x17, 0xA5, 0xB0, 0x02, + 0x43, 0xF1, 0xE4, 0x56, 0xCE, 0x7C, 0x69, 0xDB, + 0x00, 0xB3, 0xA5, 0x16, 0x89, 0x3A, 0x2C, 0x9F, + 0xD1, 0x62, 0x74, 0xC7, 0x58, 0xEB, 0xFD, 0x4E, + 0x61, 0xD2, 0xC4, 0x77, 0xE8, 0x5B, 0x4D, 0xFE, + 0xB0, 0x03, 0x15, 0xA6, 0x39, 0x8A, 0x9C, 0x2F, + 0xC2, 0x71, 0x67, 0xD4, 0x4B, 0xF8, 0xEE, 0x5D, + 0x13, 0xA0, 0xB6, 0x05, 0x9A, 0x29, 0x3F, 0x8C, + 0xA3, 0x10, 0x06, 0xB5, 0x2A, 0x99, 0x8F, 0x3C, + 0x72, 0xC1, 0xD7, 0x64, 0xFB, 0x48, 0x5E, 0xED, + 0x47, 0xF4, 0xE2, 0x51, 0xCE, 0x7D, 0x6B, 0xD8, + 0x96, 0x25, 0x33, 0x80, 0x1F, 0xAC, 0xBA, 0x09, + 0x26, 0x95, 0x83, 0x30, 0xAF, 0x1C, 0x0A, 0xB9, + 0xF7, 0x44, 0x52, 0xE1, 0x7E, 0xCD, 0xDB, 0x68, + 0x85, 0x36, 0x20, 0x93, 0x0C, 0xBF, 0xA9, 0x1A, + 0x54, 0xE7, 0xF1, 0x42, 0xDD, 0x6E, 0x78, 0xCB, + 0xE4, 0x57, 0x41, 0xF2, 0x6D, 0xDE, 0xC8, 0x7B, + 0x35, 0x86, 0x90, 0x23, 0xBC, 0x0F, 0x19, 0xAA, + 0x8E, 0x3D, 0x2B, 0x98, 0x07, 0xB4, 0xA2, 0x11, + 0x5F, 0xEC, 0xFA, 0x49, 0xD6, 0x65, 0x73, 0xC0, + 0xEF, 0x5C, 0x4A, 0xF9, 0x66, 0xD5, 0xC3, 0x70, + 0x3E, 0x8D, 0x9B, 0x28, 0xB7, 0x04, 0x12, 0xA1, + 0x4C, 0xFF, 0xE9, 0x5A, 0xC5, 0x76, 0x60, 0xD3, + 0x9D, 0x2E, 0x38, 0x8B, 0x14, 0xA7, 0xB1, 0x02, + 0x2D, 0x9E, 0x88, 0x3B, 0xA4, 0x17, 0x01, 0xB2, + 0xFC, 0x4F, 0x59, 0xEA, 0x75, 0xC6, 0xD0, 0x63, + 0xC9, 0x7A, 0x6C, 0xDF, 0x40, 0xF3, 0xE5, 0x56, + 0x18, 0xAB, 0xBD, 0x0E, 0x91, 0x22, 0x34, 0x87, + 0xA8, 0x1B, 0x0D, 0xBE, 0x21, 0x92, 0x84, 0x37, + 0x79, 0xCA, 0xDC, 0x6F, 0xF0, 0x43, 0x55, 0xE6, + 0x0B, 0xB8, 0xAE, 0x1D, 0x82, 0x31, 0x27, 0x94, + 0xDA, 0x69, 0x7F, 0xCC, 0x53, 0xE0, 0xF6, 0x45, + 0x6A, 0xD9, 0xCF, 0x7C, 0xE3, 0x50, 0x46, 0xF5, + 0xBB, 0x08, 0x1E, 0xAD, 0x32, 0x81, 0x97, 0x24, + 0x00, 0xB4, 0xAB, 0x1F, 0x95, 0x21, 0x3E, 0x8A, + 0xE9, 0x5D, 0x42, 0xF6, 0x7C, 0xC8, 0xD7, 0x63, + 0x11, 0xA5, 0xBA, 0x0E, 0x84, 0x30, 0x2F, 0x9B, + 0xF8, 0x4C, 0x53, 0xE7, 0x6D, 0xD9, 0xC6, 0x72, + 0x22, 0x96, 0x89, 0x3D, 0xB7, 0x03, 0x1C, 0xA8, + 0xCB, 0x7F, 0x60, 0xD4, 0x5E, 0xEA, 0xF5, 0x41, + 0x33, 0x87, 0x98, 0x2C, 0xA6, 0x12, 0x0D, 0xB9, + 0xDA, 0x6E, 0x71, 0xC5, 0x4F, 0xFB, 0xE4, 0x50, + 0x44, 0xF0, 0xEF, 0x5B, 0xD1, 0x65, 0x7A, 0xCE, + 0xAD, 0x19, 0x06, 0xB2, 0x38, 0x8C, 0x93, 0x27, + 0x55, 0xE1, 0xFE, 0x4A, 0xC0, 0x74, 0x6B, 0xDF, + 0xBC, 0x08, 0x17, 0xA3, 0x29, 0x9D, 0x82, 0x36, + 0x66, 0xD2, 0xCD, 0x79, 0xF3, 0x47, 0x58, 0xEC, + 0x8F, 0x3B, 0x24, 0x90, 0x1A, 0xAE, 0xB1, 0x05, + 0x77, 0xC3, 0xDC, 0x68, 0xE2, 0x56, 0x49, 0xFD, + 0x9E, 0x2A, 0x35, 0x81, 0x0B, 0xBF, 0xA0, 0x14, + 0x88, 0x3C, 0x23, 0x97, 0x1D, 0xA9, 0xB6, 0x02, + 0x61, 0xD5, 0xCA, 0x7E, 0xF4, 0x40, 0x5F, 0xEB, + 0x99, 0x2D, 0x32, 0x86, 0x0C, 0xB8, 0xA7, 0x13, + 0x70, 0xC4, 0xDB, 0x6F, 0xE5, 0x51, 0x4E, 0xFA, + 0xAA, 0x1E, 0x01, 0xB5, 0x3F, 0x8B, 0x94, 0x20, + 0x43, 0xF7, 0xE8, 0x5C, 0xD6, 0x62, 0x7D, 0xC9, + 0xBB, 0x0F, 0x10, 0xA4, 0x2E, 0x9A, 0x85, 0x31, + 0x52, 0xE6, 0xF9, 0x4D, 0xC7, 0x73, 0x6C, 0xD8, + 0xCC, 0x78, 0x67, 0xD3, 0x59, 0xED, 0xF2, 0x46, + 0x25, 0x91, 0x8E, 0x3A, 0xB0, 0x04, 0x1B, 0xAF, + 0xDD, 0x69, 0x76, 0xC2, 0x48, 0xFC, 0xE3, 0x57, + 0x34, 0x80, 0x9F, 0x2B, 0xA1, 0x15, 0x0A, 0xBE, + 0xEE, 0x5A, 0x45, 0xF1, 0x7B, 0xCF, 0xD0, 0x64, + 0x07, 0xB3, 0xAC, 0x18, 0x92, 0x26, 0x39, 0x8D, + 0xFF, 0x4B, 0x54, 0xE0, 0x6A, 0xDE, 0xC1, 0x75, + 0x16, 0xA2, 0xBD, 0x09, 0x83, 0x37, 0x28, 0x9C, + 0x00, 0xB5, 0xA9, 0x1C, 0x91, 0x24, 0x38, 0x8D, + 0xE1, 0x54, 0x48, 0xFD, 0x70, 0xC5, 0xD9, 0x6C, + 0x01, 0xB4, 0xA8, 0x1D, 0x90, 0x25, 0x39, 0x8C, + 0xE0, 0x55, 0x49, 0xFC, 0x71, 0xC4, 0xD8, 0x6D, + 0x02, 0xB7, 0xAB, 0x1E, 0x93, 0x26, 0x3A, 0x8F, + 0xE3, 0x56, 0x4A, 0xFF, 0x72, 0xC7, 0xDB, 0x6E, + 0x03, 0xB6, 0xAA, 0x1F, 0x92, 0x27, 0x3B, 0x8E, + 0xE2, 0x57, 0x4B, 0xFE, 0x73, 0xC6, 0xDA, 0x6F, + 0x04, 0xB1, 0xAD, 0x18, 0x95, 0x20, 0x3C, 0x89, + 0xE5, 0x50, 0x4C, 0xF9, 0x74, 0xC1, 0xDD, 0x68, + 0x05, 0xB0, 0xAC, 0x19, 0x94, 0x21, 0x3D, 0x88, + 0xE4, 0x51, 0x4D, 0xF8, 0x75, 0xC0, 0xDC, 0x69, + 0x06, 0xB3, 0xAF, 0x1A, 0x97, 0x22, 0x3E, 0x8B, + 0xE7, 0x52, 0x4E, 0xFB, 0x76, 0xC3, 0xDF, 0x6A, + 0x07, 0xB2, 0xAE, 0x1B, 0x96, 0x23, 0x3F, 0x8A, + 0xE6, 0x53, 0x4F, 0xFA, 0x77, 0xC2, 0xDE, 0x6B, + 0x08, 0xBD, 0xA1, 0x14, 0x99, 0x2C, 0x30, 0x85, + 0xE9, 0x5C, 0x40, 0xF5, 0x78, 0xCD, 0xD1, 0x64, + 0x09, 0xBC, 0xA0, 0x15, 0x98, 0x2D, 0x31, 0x84, + 0xE8, 0x5D, 0x41, 0xF4, 0x79, 0xCC, 0xD0, 0x65, + 0x0A, 0xBF, 0xA3, 0x16, 0x9B, 0x2E, 0x32, 0x87, + 0xEB, 0x5E, 0x42, 0xF7, 0x7A, 0xCF, 0xD3, 0x66, + 0x0B, 0xBE, 0xA2, 0x17, 0x9A, 0x2F, 0x33, 0x86, + 0xEA, 0x5F, 0x43, 0xF6, 0x7B, 0xCE, 0xD2, 0x67, + 0x0C, 0xB9, 0xA5, 0x10, 0x9D, 0x28, 0x34, 0x81, + 0xED, 0x58, 0x44, 0xF1, 0x7C, 0xC9, 0xD5, 0x60, + 0x0D, 0xB8, 0xA4, 0x11, 0x9C, 0x29, 0x35, 0x80, + 0xEC, 0x59, 0x45, 0xF0, 0x7D, 0xC8, 0xD4, 0x61, + 0x0E, 0xBB, 0xA7, 0x12, 0x9F, 0x2A, 0x36, 0x83, + 0xEF, 0x5A, 0x46, 0xF3, 0x7E, 0xCB, 0xD7, 0x62, + 0x0F, 0xBA, 0xA6, 0x13, 0x9E, 0x2B, 0x37, 0x82, + 0xEE, 0x5B, 0x47, 0xF2, 0x7F, 0xCA, 0xD6, 0x63, + 0x00, 0xB6, 0xAF, 0x19, 0x9D, 0x2B, 0x32, 0x84, + 0xF9, 0x4F, 0x56, 0xE0, 0x64, 0xD2, 0xCB, 0x7D, + 0x31, 0x87, 0x9E, 0x28, 0xAC, 0x1A, 0x03, 0xB5, + 0xC8, 0x7E, 0x67, 0xD1, 0x55, 0xE3, 0xFA, 0x4C, + 0x62, 0xD4, 0xCD, 0x7B, 0xFF, 0x49, 0x50, 0xE6, + 0x9B, 0x2D, 0x34, 0x82, 0x06, 0xB0, 0xA9, 0x1F, + 0x53, 0xE5, 0xFC, 0x4A, 0xCE, 0x78, 0x61, 0xD7, + 0xAA, 0x1C, 0x05, 0xB3, 0x37, 0x81, 0x98, 0x2E, + 0xC4, 0x72, 0x6B, 0xDD, 0x59, 0xEF, 0xF6, 0x40, + 0x3D, 0x8B, 0x92, 0x24, 0xA0, 0x16, 0x0F, 0xB9, + 0xF5, 0x43, 0x5A, 0xEC, 0x68, 0xDE, 0xC7, 0x71, + 0x0C, 0xBA, 0xA3, 0x15, 0x91, 0x27, 0x3E, 0x88, + 0xA6, 0x10, 0x09, 0xBF, 0x3B, 0x8D, 0x94, 0x22, + 0x5F, 0xE9, 0xF0, 0x46, 0xC2, 0x74, 0x6D, 0xDB, + 0x97, 0x21, 0x38, 0x8E, 0x0A, 0xBC, 0xA5, 0x13, + 0x6E, 0xD8, 0xC1, 0x77, 0xF3, 0x45, 0x5C, 0xEA, + 0x4B, 0xFD, 0xE4, 0x52, 0xD6, 0x60, 0x79, 0xCF, + 0xB2, 0x04, 0x1D, 0xAB, 0x2F, 0x99, 0x80, 0x36, + 0x7A, 0xCC, 0xD5, 0x63, 0xE7, 0x51, 0x48, 0xFE, + 0x83, 0x35, 0x2C, 0x9A, 0x1E, 0xA8, 0xB1, 0x07, + 0x29, 0x9F, 0x86, 0x30, 0xB4, 0x02, 0x1B, 0xAD, + 0xD0, 0x66, 0x7F, 0xC9, 0x4D, 0xFB, 0xE2, 0x54, + 0x18, 0xAE, 0xB7, 0x01, 0x85, 0x33, 0x2A, 0x9C, + 0xE1, 0x57, 0x4E, 0xF8, 0x7C, 0xCA, 0xD3, 0x65, + 0x8F, 0x39, 0x20, 0x96, 0x12, 0xA4, 0xBD, 0x0B, + 0x76, 0xC0, 0xD9, 0x6F, 0xEB, 0x5D, 0x44, 0xF2, + 0xBE, 0x08, 0x11, 0xA7, 0x23, 0x95, 0x8C, 0x3A, + 0x47, 0xF1, 0xE8, 0x5E, 0xDA, 0x6C, 0x75, 0xC3, + 0xED, 0x5B, 0x42, 0xF4, 0x70, 0xC6, 0xDF, 0x69, + 0x14, 0xA2, 0xBB, 0x0D, 0x89, 0x3F, 0x26, 0x90, + 0xDC, 0x6A, 0x73, 0xC5, 0x41, 0xF7, 0xEE, 0x58, + 0x25, 0x93, 0x8A, 0x3C, 0xB8, 0x0E, 0x17, 0xA1, + 0x00, 0xB7, 0xAD, 0x1A, 0x99, 0x2E, 0x34, 0x83, + 0xF1, 0x46, 0x5C, 0xEB, 0x68, 0xDF, 0xC5, 0x72, + 0x21, 0x96, 0x8C, 0x3B, 0xB8, 0x0F, 0x15, 0xA2, + 0xD0, 0x67, 0x7D, 0xCA, 0x49, 0xFE, 0xE4, 0x53, + 0x42, 0xF5, 0xEF, 0x58, 0xDB, 0x6C, 0x76, 0xC1, + 0xB3, 0x04, 0x1E, 0xA9, 0x2A, 0x9D, 0x87, 0x30, + 0x63, 0xD4, 0xCE, 0x79, 0xFA, 0x4D, 0x57, 0xE0, + 0x92, 0x25, 0x3F, 0x88, 0x0B, 0xBC, 0xA6, 0x11, + 0x84, 0x33, 0x29, 0x9E, 0x1D, 0xAA, 0xB0, 0x07, + 0x75, 0xC2, 0xD8, 0x6F, 0xEC, 0x5B, 0x41, 0xF6, + 0xA5, 0x12, 0x08, 0xBF, 0x3C, 0x8B, 0x91, 0x26, + 0x54, 0xE3, 0xF9, 0x4E, 0xCD, 0x7A, 0x60, 0xD7, + 0xC6, 0x71, 0x6B, 0xDC, 0x5F, 0xE8, 0xF2, 0x45, + 0x37, 0x80, 0x9A, 0x2D, 0xAE, 0x19, 0x03, 0xB4, + 0xE7, 0x50, 0x4A, 0xFD, 0x7E, 0xC9, 0xD3, 0x64, + 0x16, 0xA1, 0xBB, 0x0C, 0x8F, 0x38, 0x22, 0x95, + 0xCB, 0x7C, 0x66, 0xD1, 0x52, 0xE5, 0xFF, 0x48, + 0x3A, 0x8D, 0x97, 0x20, 0xA3, 0x14, 0x0E, 0xB9, + 0xEA, 0x5D, 0x47, 0xF0, 0x73, 0xC4, 0xDE, 0x69, + 0x1B, 0xAC, 0xB6, 0x01, 0x82, 0x35, 0x2F, 0x98, + 0x89, 0x3E, 0x24, 0x93, 0x10, 0xA7, 0xBD, 0x0A, + 0x78, 0xCF, 0xD5, 0x62, 0xE1, 0x56, 0x4C, 0xFB, + 0xA8, 0x1F, 0x05, 0xB2, 0x31, 0x86, 0x9C, 0x2B, + 0x59, 0xEE, 0xF4, 0x43, 0xC0, 0x77, 0x6D, 0xDA, + 0x4F, 0xF8, 0xE2, 0x55, 0xD6, 0x61, 0x7B, 0xCC, + 0xBE, 0x09, 0x13, 0xA4, 0x27, 0x90, 0x8A, 0x3D, + 0x6E, 0xD9, 0xC3, 0x74, 0xF7, 0x40, 0x5A, 0xED, + 0x9F, 0x28, 0x32, 0x85, 0x06, 0xB1, 0xAB, 0x1C, + 0x0D, 0xBA, 0xA0, 0x17, 0x94, 0x23, 0x39, 0x8E, + 0xFC, 0x4B, 0x51, 0xE6, 0x65, 0xD2, 0xC8, 0x7F, + 0x2C, 0x9B, 0x81, 0x36, 0xB5, 0x02, 0x18, 0xAF, + 0xDD, 0x6A, 0x70, 0xC7, 0x44, 0xF3, 0xE9, 0x5E, + 0x00, 0xB8, 0xB3, 0x0B, 0xA5, 0x1D, 0x16, 0xAE, + 0x89, 0x31, 0x3A, 0x82, 0x2C, 0x94, 0x9F, 0x27, + 0xD1, 0x69, 0x62, 0xDA, 0x74, 0xCC, 0xC7, 0x7F, + 0x58, 0xE0, 0xEB, 0x53, 0xFD, 0x45, 0x4E, 0xF6, + 0x61, 0xD9, 0xD2, 0x6A, 0xC4, 0x7C, 0x77, 0xCF, + 0xE8, 0x50, 0x5B, 0xE3, 0x4D, 0xF5, 0xFE, 0x46, + 0xB0, 0x08, 0x03, 0xBB, 0x15, 0xAD, 0xA6, 0x1E, + 0x39, 0x81, 0x8A, 0x32, 0x9C, 0x24, 0x2F, 0x97, + 0xC2, 0x7A, 0x71, 0xC9, 0x67, 0xDF, 0xD4, 0x6C, + 0x4B, 0xF3, 0xF8, 0x40, 0xEE, 0x56, 0x5D, 0xE5, + 0x13, 0xAB, 0xA0, 0x18, 0xB6, 0x0E, 0x05, 0xBD, + 0x9A, 0x22, 0x29, 0x91, 0x3F, 0x87, 0x8C, 0x34, + 0xA3, 0x1B, 0x10, 0xA8, 0x06, 0xBE, 0xB5, 0x0D, + 0x2A, 0x92, 0x99, 0x21, 0x8F, 0x37, 0x3C, 0x84, + 0x72, 0xCA, 0xC1, 0x79, 0xD7, 0x6F, 0x64, 0xDC, + 0xFB, 0x43, 0x48, 0xF0, 0x5E, 0xE6, 0xED, 0x55, + 0x47, 0xFF, 0xF4, 0x4C, 0xE2, 0x5A, 0x51, 0xE9, + 0xCE, 0x76, 0x7D, 0xC5, 0x6B, 0xD3, 0xD8, 0x60, + 0x96, 0x2E, 0x25, 0x9D, 0x33, 0x8B, 0x80, 0x38, + 0x1F, 0xA7, 0xAC, 0x14, 0xBA, 0x02, 0x09, 0xB1, + 0x26, 0x9E, 0x95, 0x2D, 0x83, 0x3B, 0x30, 0x88, + 0xAF, 0x17, 0x1C, 0xA4, 0x0A, 0xB2, 0xB9, 0x01, + 0xF7, 0x4F, 0x44, 0xFC, 0x52, 0xEA, 0xE1, 0x59, + 0x7E, 0xC6, 0xCD, 0x75, 0xDB, 0x63, 0x68, 0xD0, + 0x85, 0x3D, 0x36, 0x8E, 0x20, 0x98, 0x93, 0x2B, + 0x0C, 0xB4, 0xBF, 0x07, 0xA9, 0x11, 0x1A, 0xA2, + 0x54, 0xEC, 0xE7, 0x5F, 0xF1, 0x49, 0x42, 0xFA, + 0xDD, 0x65, 0x6E, 0xD6, 0x78, 0xC0, 0xCB, 0x73, + 0xE4, 0x5C, 0x57, 0xEF, 0x41, 0xF9, 0xF2, 0x4A, + 0x6D, 0xD5, 0xDE, 0x66, 0xC8, 0x70, 0x7B, 0xC3, + 0x35, 0x8D, 0x86, 0x3E, 0x90, 0x28, 0x23, 0x9B, + 0xBC, 0x04, 0x0F, 0xB7, 0x19, 0xA1, 0xAA, 0x12, + 0x00, 0xB9, 0xB1, 0x08, 0xA1, 0x18, 0x10, 0xA9, + 0x81, 0x38, 0x30, 0x89, 0x20, 0x99, 0x91, 0x28, + 0xC1, 0x78, 0x70, 0xC9, 0x60, 0xD9, 0xD1, 0x68, + 0x40, 0xF9, 0xF1, 0x48, 0xE1, 0x58, 0x50, 0xE9, + 0x41, 0xF8, 0xF0, 0x49, 0xE0, 0x59, 0x51, 0xE8, + 0xC0, 0x79, 0x71, 0xC8, 0x61, 0xD8, 0xD0, 0x69, + 0x80, 0x39, 0x31, 0x88, 0x21, 0x98, 0x90, 0x29, + 0x01, 0xB8, 0xB0, 0x09, 0xA0, 0x19, 0x11, 0xA8, + 0x82, 0x3B, 0x33, 0x8A, 0x23, 0x9A, 0x92, 0x2B, + 0x03, 0xBA, 0xB2, 0x0B, 0xA2, 0x1B, 0x13, 0xAA, + 0x43, 0xFA, 0xF2, 0x4B, 0xE2, 0x5B, 0x53, 0xEA, + 0xC2, 0x7B, 0x73, 0xCA, 0x63, 0xDA, 0xD2, 0x6B, + 0xC3, 0x7A, 0x72, 0xCB, 0x62, 0xDB, 0xD3, 0x6A, + 0x42, 0xFB, 0xF3, 0x4A, 0xE3, 0x5A, 0x52, 0xEB, + 0x02, 0xBB, 0xB3, 0x0A, 0xA3, 0x1A, 0x12, 0xAB, + 0x83, 0x3A, 0x32, 0x8B, 0x22, 0x9B, 0x93, 0x2A, + 0xC7, 0x7E, 0x76, 0xCF, 0x66, 0xDF, 0xD7, 0x6E, + 0x46, 0xFF, 0xF7, 0x4E, 0xE7, 0x5E, 0x56, 0xEF, + 0x06, 0xBF, 0xB7, 0x0E, 0xA7, 0x1E, 0x16, 0xAF, + 0x87, 0x3E, 0x36, 0x8F, 0x26, 0x9F, 0x97, 0x2E, + 0x86, 0x3F, 0x37, 0x8E, 0x27, 0x9E, 0x96, 0x2F, + 0x07, 0xBE, 0xB6, 0x0F, 0xA6, 0x1F, 0x17, 0xAE, + 0x47, 0xFE, 0xF6, 0x4F, 0xE6, 0x5F, 0x57, 0xEE, + 0xC6, 0x7F, 0x77, 0xCE, 0x67, 0xDE, 0xD6, 0x6F, + 0x45, 0xFC, 0xF4, 0x4D, 0xE4, 0x5D, 0x55, 0xEC, + 0xC4, 0x7D, 0x75, 0xCC, 0x65, 0xDC, 0xD4, 0x6D, + 0x84, 0x3D, 0x35, 0x8C, 0x25, 0x9C, 0x94, 0x2D, + 0x05, 0xBC, 0xB4, 0x0D, 0xA4, 0x1D, 0x15, 0xAC, + 0x04, 0xBD, 0xB5, 0x0C, 0xA5, 0x1C, 0x14, 0xAD, + 0x85, 0x3C, 0x34, 0x8D, 0x24, 0x9D, 0x95, 0x2C, + 0xC5, 0x7C, 0x74, 0xCD, 0x64, 0xDD, 0xD5, 0x6C, + 0x44, 0xFD, 0xF5, 0x4C, 0xE5, 0x5C, 0x54, 0xED, + 0x00, 0xBA, 0xB7, 0x0D, 0xAD, 0x17, 0x1A, 0xA0, + 0x99, 0x23, 0x2E, 0x94, 0x34, 0x8E, 0x83, 0x39, + 0xF1, 0x4B, 0x46, 0xFC, 0x5C, 0xE6, 0xEB, 0x51, + 0x68, 0xD2, 0xDF, 0x65, 0xC5, 0x7F, 0x72, 0xC8, + 0x21, 0x9B, 0x96, 0x2C, 0x8C, 0x36, 0x3B, 0x81, + 0xB8, 0x02, 0x0F, 0xB5, 0x15, 0xAF, 0xA2, 0x18, + 0xD0, 0x6A, 0x67, 0xDD, 0x7D, 0xC7, 0xCA, 0x70, + 0x49, 0xF3, 0xFE, 0x44, 0xE4, 0x5E, 0x53, 0xE9, + 0x42, 0xF8, 0xF5, 0x4F, 0xEF, 0x55, 0x58, 0xE2, + 0xDB, 0x61, 0x6C, 0xD6, 0x76, 0xCC, 0xC1, 0x7B, + 0xB3, 0x09, 0x04, 0xBE, 0x1E, 0xA4, 0xA9, 0x13, + 0x2A, 0x90, 0x9D, 0x27, 0x87, 0x3D, 0x30, 0x8A, + 0x63, 0xD9, 0xD4, 0x6E, 0xCE, 0x74, 0x79, 0xC3, + 0xFA, 0x40, 0x4D, 0xF7, 0x57, 0xED, 0xE0, 0x5A, + 0x92, 0x28, 0x25, 0x9F, 0x3F, 0x85, 0x88, 0x32, + 0x0B, 0xB1, 0xBC, 0x06, 0xA6, 0x1C, 0x11, 0xAB, + 0x84, 0x3E, 0x33, 0x89, 0x29, 0x93, 0x9E, 0x24, + 0x1D, 0xA7, 0xAA, 0x10, 0xB0, 0x0A, 0x07, 0xBD, + 0x75, 0xCF, 0xC2, 0x78, 0xD8, 0x62, 0x6F, 0xD5, + 0xEC, 0x56, 0x5B, 0xE1, 0x41, 0xFB, 0xF6, 0x4C, + 0xA5, 0x1F, 0x12, 0xA8, 0x08, 0xB2, 0xBF, 0x05, + 0x3C, 0x86, 0x8B, 0x31, 0x91, 0x2B, 0x26, 0x9C, + 0x54, 0xEE, 0xE3, 0x59, 0xF9, 0x43, 0x4E, 0xF4, + 0xCD, 0x77, 0x7A, 0xC0, 0x60, 0xDA, 0xD7, 0x6D, + 0xC6, 0x7C, 0x71, 0xCB, 0x6B, 0xD1, 0xDC, 0x66, + 0x5F, 0xE5, 0xE8, 0x52, 0xF2, 0x48, 0x45, 0xFF, + 0x37, 0x8D, 0x80, 0x3A, 0x9A, 0x20, 0x2D, 0x97, + 0xAE, 0x14, 0x19, 0xA3, 0x03, 0xB9, 0xB4, 0x0E, + 0xE7, 0x5D, 0x50, 0xEA, 0x4A, 0xF0, 0xFD, 0x47, + 0x7E, 0xC4, 0xC9, 0x73, 0xD3, 0x69, 0x64, 0xDE, + 0x16, 0xAC, 0xA1, 0x1B, 0xBB, 0x01, 0x0C, 0xB6, + 0x8F, 0x35, 0x38, 0x82, 0x22, 0x98, 0x95, 0x2F, + 0x00, 0xBB, 0xB5, 0x0E, 0xA9, 0x12, 0x1C, 0xA7, + 0x91, 0x2A, 0x24, 0x9F, 0x38, 0x83, 0x8D, 0x36, + 0xE1, 0x5A, 0x54, 0xEF, 0x48, 0xF3, 0xFD, 0x46, + 0x70, 0xCB, 0xC5, 0x7E, 0xD9, 0x62, 0x6C, 0xD7, + 0x01, 0xBA, 0xB4, 0x0F, 0xA8, 0x13, 0x1D, 0xA6, + 0x90, 0x2B, 0x25, 0x9E, 0x39, 0x82, 0x8C, 0x37, + 0xE0, 0x5B, 0x55, 0xEE, 0x49, 0xF2, 0xFC, 0x47, + 0x71, 0xCA, 0xC4, 0x7F, 0xD8, 0x63, 0x6D, 0xD6, + 0x02, 0xB9, 0xB7, 0x0C, 0xAB, 0x10, 0x1E, 0xA5, + 0x93, 0x28, 0x26, 0x9D, 0x3A, 0x81, 0x8F, 0x34, + 0xE3, 0x58, 0x56, 0xED, 0x4A, 0xF1, 0xFF, 0x44, + 0x72, 0xC9, 0xC7, 0x7C, 0xDB, 0x60, 0x6E, 0xD5, + 0x03, 0xB8, 0xB6, 0x0D, 0xAA, 0x11, 0x1F, 0xA4, + 0x92, 0x29, 0x27, 0x9C, 0x3B, 0x80, 0x8E, 0x35, + 0xE2, 0x59, 0x57, 0xEC, 0x4B, 0xF0, 0xFE, 0x45, + 0x73, 0xC8, 0xC6, 0x7D, 0xDA, 0x61, 0x6F, 0xD4, + 0x04, 0xBF, 0xB1, 0x0A, 0xAD, 0x16, 0x18, 0xA3, + 0x95, 0x2E, 0x20, 0x9B, 0x3C, 0x87, 0x89, 0x32, + 0xE5, 0x5E, 0x50, 0xEB, 0x4C, 0xF7, 0xF9, 0x42, + 0x74, 0xCF, 0xC1, 0x7A, 0xDD, 0x66, 0x68, 0xD3, + 0x05, 0xBE, 0xB0, 0x0B, 0xAC, 0x17, 0x19, 0xA2, + 0x94, 0x2F, 0x21, 0x9A, 0x3D, 0x86, 0x88, 0x33, + 0xE4, 0x5F, 0x51, 0xEA, 0x4D, 0xF6, 0xF8, 0x43, + 0x75, 0xCE, 0xC0, 0x7B, 0xDC, 0x67, 0x69, 0xD2, + 0x06, 0xBD, 0xB3, 0x08, 0xAF, 0x14, 0x1A, 0xA1, + 0x97, 0x2C, 0x22, 0x99, 0x3E, 0x85, 0x8B, 0x30, + 0xE7, 0x5C, 0x52, 0xE9, 0x4E, 0xF5, 0xFB, 0x40, + 0x76, 0xCD, 0xC3, 0x78, 0xDF, 0x64, 0x6A, 0xD1, + 0x07, 0xBC, 0xB2, 0x09, 0xAE, 0x15, 0x1B, 0xA0, + 0x96, 0x2D, 0x23, 0x98, 0x3F, 0x84, 0x8A, 0x31, + 0xE6, 0x5D, 0x53, 0xE8, 0x4F, 0xF4, 0xFA, 0x41, + 0x77, 0xCC, 0xC2, 0x79, 0xDE, 0x65, 0x6B, 0xD0, + 0x00, 0xBC, 0xBB, 0x07, 0xB5, 0x09, 0x0E, 0xB2, + 0xA9, 0x15, 0x12, 0xAE, 0x1C, 0xA0, 0xA7, 0x1B, + 0x91, 0x2D, 0x2A, 0x96, 0x24, 0x98, 0x9F, 0x23, + 0x38, 0x84, 0x83, 0x3F, 0x8D, 0x31, 0x36, 0x8A, + 0xE1, 0x5D, 0x5A, 0xE6, 0x54, 0xE8, 0xEF, 0x53, + 0x48, 0xF4, 0xF3, 0x4F, 0xFD, 0x41, 0x46, 0xFA, + 0x70, 0xCC, 0xCB, 0x77, 0xC5, 0x79, 0x7E, 0xC2, + 0xD9, 0x65, 0x62, 0xDE, 0x6C, 0xD0, 0xD7, 0x6B, + 0x01, 0xBD, 0xBA, 0x06, 0xB4, 0x08, 0x0F, 0xB3, + 0xA8, 0x14, 0x13, 0xAF, 0x1D, 0xA1, 0xA6, 0x1A, + 0x90, 0x2C, 0x2B, 0x97, 0x25, 0x99, 0x9E, 0x22, + 0x39, 0x85, 0x82, 0x3E, 0x8C, 0x30, 0x37, 0x8B, + 0xE0, 0x5C, 0x5B, 0xE7, 0x55, 0xE9, 0xEE, 0x52, + 0x49, 0xF5, 0xF2, 0x4E, 0xFC, 0x40, 0x47, 0xFB, + 0x71, 0xCD, 0xCA, 0x76, 0xC4, 0x78, 0x7F, 0xC3, + 0xD8, 0x64, 0x63, 0xDF, 0x6D, 0xD1, 0xD6, 0x6A, + 0x02, 0xBE, 0xB9, 0x05, 0xB7, 0x0B, 0x0C, 0xB0, + 0xAB, 0x17, 0x10, 0xAC, 0x1E, 0xA2, 0xA5, 0x19, + 0x93, 0x2F, 0x28, 0x94, 0x26, 0x9A, 0x9D, 0x21, + 0x3A, 0x86, 0x81, 0x3D, 0x8F, 0x33, 0x34, 0x88, + 0xE3, 0x5F, 0x58, 0xE4, 0x56, 0xEA, 0xED, 0x51, + 0x4A, 0xF6, 0xF1, 0x4D, 0xFF, 0x43, 0x44, 0xF8, + 0x72, 0xCE, 0xC9, 0x75, 0xC7, 0x7B, 0x7C, 0xC0, + 0xDB, 0x67, 0x60, 0xDC, 0x6E, 0xD2, 0xD5, 0x69, + 0x03, 0xBF, 0xB8, 0x04, 0xB6, 0x0A, 0x0D, 0xB1, + 0xAA, 0x16, 0x11, 0xAD, 0x1F, 0xA3, 0xA4, 0x18, + 0x92, 0x2E, 0x29, 0x95, 0x27, 0x9B, 0x9C, 0x20, + 0x3B, 0x87, 0x80, 0x3C, 0x8E, 0x32, 0x35, 0x89, + 0xE2, 0x5E, 0x59, 0xE5, 0x57, 0xEB, 0xEC, 0x50, + 0x4B, 0xF7, 0xF0, 0x4C, 0xFE, 0x42, 0x45, 0xF9, + 0x73, 0xCF, 0xC8, 0x74, 0xC6, 0x7A, 0x7D, 0xC1, + 0xDA, 0x66, 0x61, 0xDD, 0x6F, 0xD3, 0xD4, 0x68, + 0x00, 0xBD, 0xB9, 0x04, 0xB1, 0x0C, 0x08, 0xB5, + 0xA1, 0x1C, 0x18, 0xA5, 0x10, 0xAD, 0xA9, 0x14, + 0x81, 0x3C, 0x38, 0x85, 0x30, 0x8D, 0x89, 0x34, + 0x20, 0x9D, 0x99, 0x24, 0x91, 0x2C, 0x28, 0x95, + 0xC1, 0x7C, 0x78, 0xC5, 0x70, 0xCD, 0xC9, 0x74, + 0x60, 0xDD, 0xD9, 0x64, 0xD1, 0x6C, 0x68, 0xD5, + 0x40, 0xFD, 0xF9, 0x44, 0xF1, 0x4C, 0x48, 0xF5, + 0xE1, 0x5C, 0x58, 0xE5, 0x50, 0xED, 0xE9, 0x54, + 0x41, 0xFC, 0xF8, 0x45, 0xF0, 0x4D, 0x49, 0xF4, + 0xE0, 0x5D, 0x59, 0xE4, 0x51, 0xEC, 0xE8, 0x55, + 0xC0, 0x7D, 0x79, 0xC4, 0x71, 0xCC, 0xC8, 0x75, + 0x61, 0xDC, 0xD8, 0x65, 0xD0, 0x6D, 0x69, 0xD4, + 0x80, 0x3D, 0x39, 0x84, 0x31, 0x8C, 0x88, 0x35, + 0x21, 0x9C, 0x98, 0x25, 0x90, 0x2D, 0x29, 0x94, + 0x01, 0xBC, 0xB8, 0x05, 0xB0, 0x0D, 0x09, 0xB4, + 0xA0, 0x1D, 0x19, 0xA4, 0x11, 0xAC, 0xA8, 0x15, + 0x82, 0x3F, 0x3B, 0x86, 0x33, 0x8E, 0x8A, 0x37, + 0x23, 0x9E, 0x9A, 0x27, 0x92, 0x2F, 0x2B, 0x96, + 0x03, 0xBE, 0xBA, 0x07, 0xB2, 0x0F, 0x0B, 0xB6, + 0xA2, 0x1F, 0x1B, 0xA6, 0x13, 0xAE, 0xAA, 0x17, + 0x43, 0xFE, 0xFA, 0x47, 0xF2, 0x4F, 0x4B, 0xF6, + 0xE2, 0x5F, 0x5B, 0xE6, 0x53, 0xEE, 0xEA, 0x57, + 0xC2, 0x7F, 0x7B, 0xC6, 0x73, 0xCE, 0xCA, 0x77, + 0x63, 0xDE, 0xDA, 0x67, 0xD2, 0x6F, 0x6B, 0xD6, + 0xC3, 0x7E, 0x7A, 0xC7, 0x72, 0xCF, 0xCB, 0x76, + 0x62, 0xDF, 0xDB, 0x66, 0xD3, 0x6E, 0x6A, 0xD7, + 0x42, 0xFF, 0xFB, 0x46, 0xF3, 0x4E, 0x4A, 0xF7, + 0xE3, 0x5E, 0x5A, 0xE7, 0x52, 0xEF, 0xEB, 0x56, + 0x02, 0xBF, 0xBB, 0x06, 0xB3, 0x0E, 0x0A, 0xB7, + 0xA3, 0x1E, 0x1A, 0xA7, 0x12, 0xAF, 0xAB, 0x16, + 0x83, 0x3E, 0x3A, 0x87, 0x32, 0x8F, 0x8B, 0x36, + 0x22, 0x9F, 0x9B, 0x26, 0x93, 0x2E, 0x2A, 0x97, + 0x00, 0xBE, 0xBF, 0x01, 0xBD, 0x03, 0x02, 0xBC, + 0xB9, 0x07, 0x06, 0xB8, 0x04, 0xBA, 0xBB, 0x05, + 0xB1, 0x0F, 0x0E, 0xB0, 0x0C, 0xB2, 0xB3, 0x0D, + 0x08, 0xB6, 0xB7, 0x09, 0xB5, 0x0B, 0x0A, 0xB4, + 0xA1, 0x1F, 0x1E, 0xA0, 0x1C, 0xA2, 0xA3, 0x1D, + 0x18, 0xA6, 0xA7, 0x19, 0xA5, 0x1B, 0x1A, 0xA4, + 0x10, 0xAE, 0xAF, 0x11, 0xAD, 0x13, 0x12, 0xAC, + 0xA9, 0x17, 0x16, 0xA8, 0x14, 0xAA, 0xAB, 0x15, + 0x81, 0x3F, 0x3E, 0x80, 0x3C, 0x82, 0x83, 0x3D, + 0x38, 0x86, 0x87, 0x39, 0x85, 0x3B, 0x3A, 0x84, + 0x30, 0x8E, 0x8F, 0x31, 0x8D, 0x33, 0x32, 0x8C, + 0x89, 0x37, 0x36, 0x88, 0x34, 0x8A, 0x8B, 0x35, + 0x20, 0x9E, 0x9F, 0x21, 0x9D, 0x23, 0x22, 0x9C, + 0x99, 0x27, 0x26, 0x98, 0x24, 0x9A, 0x9B, 0x25, + 0x91, 0x2F, 0x2E, 0x90, 0x2C, 0x92, 0x93, 0x2D, + 0x28, 0x96, 0x97, 0x29, 0x95, 0x2B, 0x2A, 0x94, + 0xC1, 0x7F, 0x7E, 0xC0, 0x7C, 0xC2, 0xC3, 0x7D, + 0x78, 0xC6, 0xC7, 0x79, 0xC5, 0x7B, 0x7A, 0xC4, + 0x70, 0xCE, 0xCF, 0x71, 0xCD, 0x73, 0x72, 0xCC, + 0xC9, 0x77, 0x76, 0xC8, 0x74, 0xCA, 0xCB, 0x75, + 0x60, 0xDE, 0xDF, 0x61, 0xDD, 0x63, 0x62, 0xDC, + 0xD9, 0x67, 0x66, 0xD8, 0x64, 0xDA, 0xDB, 0x65, + 0xD1, 0x6F, 0x6E, 0xD0, 0x6C, 0xD2, 0xD3, 0x6D, + 0x68, 0xD6, 0xD7, 0x69, 0xD5, 0x6B, 0x6A, 0xD4, + 0x40, 0xFE, 0xFF, 0x41, 0xFD, 0x43, 0x42, 0xFC, + 0xF9, 0x47, 0x46, 0xF8, 0x44, 0xFA, 0xFB, 0x45, + 0xF1, 0x4F, 0x4E, 0xF0, 0x4C, 0xF2, 0xF3, 0x4D, + 0x48, 0xF6, 0xF7, 0x49, 0xF5, 0x4B, 0x4A, 0xF4, + 0xE1, 0x5F, 0x5E, 0xE0, 0x5C, 0xE2, 0xE3, 0x5D, + 0x58, 0xE6, 0xE7, 0x59, 0xE5, 0x5B, 0x5A, 0xE4, + 0x50, 0xEE, 0xEF, 0x51, 0xED, 0x53, 0x52, 0xEC, + 0xE9, 0x57, 0x56, 0xE8, 0x54, 0xEA, 0xEB, 0x55, + 0x00, 0xBF, 0xBD, 0x02, 0xB9, 0x06, 0x04, 0xBB, + 0xB1, 0x0E, 0x0C, 0xB3, 0x08, 0xB7, 0xB5, 0x0A, + 0xA1, 0x1E, 0x1C, 0xA3, 0x18, 0xA7, 0xA5, 0x1A, + 0x10, 0xAF, 0xAD, 0x12, 0xA9, 0x16, 0x14, 0xAB, + 0x81, 0x3E, 0x3C, 0x83, 0x38, 0x87, 0x85, 0x3A, + 0x30, 0x8F, 0x8D, 0x32, 0x89, 0x36, 0x34, 0x8B, + 0x20, 0x9F, 0x9D, 0x22, 0x99, 0x26, 0x24, 0x9B, + 0x91, 0x2E, 0x2C, 0x93, 0x28, 0x97, 0x95, 0x2A, + 0xC1, 0x7E, 0x7C, 0xC3, 0x78, 0xC7, 0xC5, 0x7A, + 0x70, 0xCF, 0xCD, 0x72, 0xC9, 0x76, 0x74, 0xCB, + 0x60, 0xDF, 0xDD, 0x62, 0xD9, 0x66, 0x64, 0xDB, + 0xD1, 0x6E, 0x6C, 0xD3, 0x68, 0xD7, 0xD5, 0x6A, + 0x40, 0xFF, 0xFD, 0x42, 0xF9, 0x46, 0x44, 0xFB, + 0xF1, 0x4E, 0x4C, 0xF3, 0x48, 0xF7, 0xF5, 0x4A, + 0xE1, 0x5E, 0x5C, 0xE3, 0x58, 0xE7, 0xE5, 0x5A, + 0x50, 0xEF, 0xED, 0x52, 0xE9, 0x56, 0x54, 0xEB, + 0x41, 0xFE, 0xFC, 0x43, 0xF8, 0x47, 0x45, 0xFA, + 0xF0, 0x4F, 0x4D, 0xF2, 0x49, 0xF6, 0xF4, 0x4B, + 0xE0, 0x5F, 0x5D, 0xE2, 0x59, 0xE6, 0xE4, 0x5B, + 0x51, 0xEE, 0xEC, 0x53, 0xE8, 0x57, 0x55, 0xEA, + 0xC0, 0x7F, 0x7D, 0xC2, 0x79, 0xC6, 0xC4, 0x7B, + 0x71, 0xCE, 0xCC, 0x73, 0xC8, 0x77, 0x75, 0xCA, + 0x61, 0xDE, 0xDC, 0x63, 0xD8, 0x67, 0x65, 0xDA, + 0xD0, 0x6F, 0x6D, 0xD2, 0x69, 0xD6, 0xD4, 0x6B, + 0x80, 0x3F, 0x3D, 0x82, 0x39, 0x86, 0x84, 0x3B, + 0x31, 0x8E, 0x8C, 0x33, 0x88, 0x37, 0x35, 0x8A, + 0x21, 0x9E, 0x9C, 0x23, 0x98, 0x27, 0x25, 0x9A, + 0x90, 0x2F, 0x2D, 0x92, 0x29, 0x96, 0x94, 0x2B, + 0x01, 0xBE, 0xBC, 0x03, 0xB8, 0x07, 0x05, 0xBA, + 0xB0, 0x0F, 0x0D, 0xB2, 0x09, 0xB6, 0xB4, 0x0B, + 0xA0, 0x1F, 0x1D, 0xA2, 0x19, 0xA6, 0xA4, 0x1B, + 0x11, 0xAE, 0xAC, 0x13, 0xA8, 0x17, 0x15, 0xAA, + 0x00, 0xC0, 0x43, 0x83, 0x86, 0x46, 0xC5, 0x05, + 0xCF, 0x0F, 0x8C, 0x4C, 0x49, 0x89, 0x0A, 0xCA, + 0x5D, 0x9D, 0x1E, 0xDE, 0xDB, 0x1B, 0x98, 0x58, + 0x92, 0x52, 0xD1, 0x11, 0x14, 0xD4, 0x57, 0x97, + 0xBA, 0x7A, 0xF9, 0x39, 0x3C, 0xFC, 0x7F, 0xBF, + 0x75, 0xB5, 0x36, 0xF6, 0xF3, 0x33, 0xB0, 0x70, + 0xE7, 0x27, 0xA4, 0x64, 0x61, 0xA1, 0x22, 0xE2, + 0x28, 0xE8, 0x6B, 0xAB, 0xAE, 0x6E, 0xED, 0x2D, + 0xB7, 0x77, 0xF4, 0x34, 0x31, 0xF1, 0x72, 0xB2, + 0x78, 0xB8, 0x3B, 0xFB, 0xFE, 0x3E, 0xBD, 0x7D, + 0xEA, 0x2A, 0xA9, 0x69, 0x6C, 0xAC, 0x2F, 0xEF, + 0x25, 0xE5, 0x66, 0xA6, 0xA3, 0x63, 0xE0, 0x20, + 0x0D, 0xCD, 0x4E, 0x8E, 0x8B, 0x4B, 0xC8, 0x08, + 0xC2, 0x02, 0x81, 0x41, 0x44, 0x84, 0x07, 0xC7, + 0x50, 0x90, 0x13, 0xD3, 0xD6, 0x16, 0x95, 0x55, + 0x9F, 0x5F, 0xDC, 0x1C, 0x19, 0xD9, 0x5A, 0x9A, + 0xAD, 0x6D, 0xEE, 0x2E, 0x2B, 0xEB, 0x68, 0xA8, + 0x62, 0xA2, 0x21, 0xE1, 0xE4, 0x24, 0xA7, 0x67, + 0xF0, 0x30, 0xB3, 0x73, 0x76, 0xB6, 0x35, 0xF5, + 0x3F, 0xFF, 0x7C, 0xBC, 0xB9, 0x79, 0xFA, 0x3A, + 0x17, 0xD7, 0x54, 0x94, 0x91, 0x51, 0xD2, 0x12, + 0xD8, 0x18, 0x9B, 0x5B, 0x5E, 0x9E, 0x1D, 0xDD, + 0x4A, 0x8A, 0x09, 0xC9, 0xCC, 0x0C, 0x8F, 0x4F, + 0x85, 0x45, 0xC6, 0x06, 0x03, 0xC3, 0x40, 0x80, + 0x1A, 0xDA, 0x59, 0x99, 0x9C, 0x5C, 0xDF, 0x1F, + 0xD5, 0x15, 0x96, 0x56, 0x53, 0x93, 0x10, 0xD0, + 0x47, 0x87, 0x04, 0xC4, 0xC1, 0x01, 0x82, 0x42, + 0x88, 0x48, 0xCB, 0x0B, 0x0E, 0xCE, 0x4D, 0x8D, + 0xA0, 0x60, 0xE3, 0x23, 0x26, 0xE6, 0x65, 0xA5, + 0x6F, 0xAF, 0x2C, 0xEC, 0xE9, 0x29, 0xAA, 0x6A, + 0xFD, 0x3D, 0xBE, 0x7E, 0x7B, 0xBB, 0x38, 0xF8, + 0x32, 0xF2, 0x71, 0xB1, 0xB4, 0x74, 0xF7, 0x37, + 0x00, 0xC1, 0x41, 0x80, 0x82, 0x43, 0xC3, 0x02, + 0xC7, 0x06, 0x86, 0x47, 0x45, 0x84, 0x04, 0xC5, + 0x4D, 0x8C, 0x0C, 0xCD, 0xCF, 0x0E, 0x8E, 0x4F, + 0x8A, 0x4B, 0xCB, 0x0A, 0x08, 0xC9, 0x49, 0x88, + 0x9A, 0x5B, 0xDB, 0x1A, 0x18, 0xD9, 0x59, 0x98, + 0x5D, 0x9C, 0x1C, 0xDD, 0xDF, 0x1E, 0x9E, 0x5F, + 0xD7, 0x16, 0x96, 0x57, 0x55, 0x94, 0x14, 0xD5, + 0x10, 0xD1, 0x51, 0x90, 0x92, 0x53, 0xD3, 0x12, + 0xF7, 0x36, 0xB6, 0x77, 0x75, 0xB4, 0x34, 0xF5, + 0x30, 0xF1, 0x71, 0xB0, 0xB2, 0x73, 0xF3, 0x32, + 0xBA, 0x7B, 0xFB, 0x3A, 0x38, 0xF9, 0x79, 0xB8, + 0x7D, 0xBC, 0x3C, 0xFD, 0xFF, 0x3E, 0xBE, 0x7F, + 0x6D, 0xAC, 0x2C, 0xED, 0xEF, 0x2E, 0xAE, 0x6F, + 0xAA, 0x6B, 0xEB, 0x2A, 0x28, 0xE9, 0x69, 0xA8, + 0x20, 0xE1, 0x61, 0xA0, 0xA2, 0x63, 0xE3, 0x22, + 0xE7, 0x26, 0xA6, 0x67, 0x65, 0xA4, 0x24, 0xE5, + 0x2D, 0xEC, 0x6C, 0xAD, 0xAF, 0x6E, 0xEE, 0x2F, + 0xEA, 0x2B, 0xAB, 0x6A, 0x68, 0xA9, 0x29, 0xE8, + 0x60, 0xA1, 0x21, 0xE0, 0xE2, 0x23, 0xA3, 0x62, + 0xA7, 0x66, 0xE6, 0x27, 0x25, 0xE4, 0x64, 0xA5, + 0xB7, 0x76, 0xF6, 0x37, 0x35, 0xF4, 0x74, 0xB5, + 0x70, 0xB1, 0x31, 0xF0, 0xF2, 0x33, 0xB3, 0x72, + 0xFA, 0x3B, 0xBB, 0x7A, 0x78, 0xB9, 0x39, 0xF8, + 0x3D, 0xFC, 0x7C, 0xBD, 0xBF, 0x7E, 0xFE, 0x3F, + 0xDA, 0x1B, 0x9B, 0x5A, 0x58, 0x99, 0x19, 0xD8, + 0x1D, 0xDC, 0x5C, 0x9D, 0x9F, 0x5E, 0xDE, 0x1F, + 0x97, 0x56, 0xD6, 0x17, 0x15, 0xD4, 0x54, 0x95, + 0x50, 0x91, 0x11, 0xD0, 0xD2, 0x13, 0x93, 0x52, + 0x40, 0x81, 0x01, 0xC0, 0xC2, 0x03, 0x83, 0x42, + 0x87, 0x46, 0xC6, 0x07, 0x05, 0xC4, 0x44, 0x85, + 0x0D, 0xCC, 0x4C, 0x8D, 0x8F, 0x4E, 0xCE, 0x0F, + 0xCA, 0x0B, 0x8B, 0x4A, 0x48, 0x89, 0x09, 0xC8, + 0x00, 0xC2, 0x47, 0x85, 0x8E, 0x4C, 0xC9, 0x0B, + 0xDF, 0x1D, 0x98, 0x5A, 0x51, 0x93, 0x16, 0xD4, + 0x7D, 0xBF, 0x3A, 0xF8, 0xF3, 0x31, 0xB4, 0x76, + 0xA2, 0x60, 0xE5, 0x27, 0x2C, 0xEE, 0x6B, 0xA9, + 0xFA, 0x38, 0xBD, 0x7F, 0x74, 0xB6, 0x33, 0xF1, + 0x25, 0xE7, 0x62, 0xA0, 0xAB, 0x69, 0xEC, 0x2E, + 0x87, 0x45, 0xC0, 0x02, 0x09, 0xCB, 0x4E, 0x8C, + 0x58, 0x9A, 0x1F, 0xDD, 0xD6, 0x14, 0x91, 0x53, + 0x37, 0xF5, 0x70, 0xB2, 0xB9, 0x7B, 0xFE, 0x3C, + 0xE8, 0x2A, 0xAF, 0x6D, 0x66, 0xA4, 0x21, 0xE3, + 0x4A, 0x88, 0x0D, 0xCF, 0xC4, 0x06, 0x83, 0x41, + 0x95, 0x57, 0xD2, 0x10, 0x1B, 0xD9, 0x5C, 0x9E, + 0xCD, 0x0F, 0x8A, 0x48, 0x43, 0x81, 0x04, 0xC6, + 0x12, 0xD0, 0x55, 0x97, 0x9C, 0x5E, 0xDB, 0x19, + 0xB0, 0x72, 0xF7, 0x35, 0x3E, 0xFC, 0x79, 0xBB, + 0x6F, 0xAD, 0x28, 0xEA, 0xE1, 0x23, 0xA6, 0x64, + 0x6E, 0xAC, 0x29, 0xEB, 0xE0, 0x22, 0xA7, 0x65, + 0xB1, 0x73, 0xF6, 0x34, 0x3F, 0xFD, 0x78, 0xBA, + 0x13, 0xD1, 0x54, 0x96, 0x9D, 0x5F, 0xDA, 0x18, + 0xCC, 0x0E, 0x8B, 0x49, 0x42, 0x80, 0x05, 0xC7, + 0x94, 0x56, 0xD3, 0x11, 0x1A, 0xD8, 0x5D, 0x9F, + 0x4B, 0x89, 0x0C, 0xCE, 0xC5, 0x07, 0x82, 0x40, + 0xE9, 0x2B, 0xAE, 0x6C, 0x67, 0xA5, 0x20, 0xE2, + 0x36, 0xF4, 0x71, 0xB3, 0xB8, 0x7A, 0xFF, 0x3D, + 0x59, 0x9B, 0x1E, 0xDC, 0xD7, 0x15, 0x90, 0x52, + 0x86, 0x44, 0xC1, 0x03, 0x08, 0xCA, 0x4F, 0x8D, + 0x24, 0xE6, 0x63, 0xA1, 0xAA, 0x68, 0xED, 0x2F, + 0xFB, 0x39, 0xBC, 0x7E, 0x75, 0xB7, 0x32, 0xF0, + 0xA3, 0x61, 0xE4, 0x26, 0x2D, 0xEF, 0x6A, 0xA8, + 0x7C, 0xBE, 0x3B, 0xF9, 0xF2, 0x30, 0xB5, 0x77, + 0xDE, 0x1C, 0x99, 0x5B, 0x50, 0x92, 0x17, 0xD5, + 0x01, 0xC3, 0x46, 0x84, 0x8F, 0x4D, 0xC8, 0x0A, + 0x00, 0xC3, 0x45, 0x86, 0x8A, 0x49, 0xCF, 0x0C, + 0xD7, 0x14, 0x92, 0x51, 0x5D, 0x9E, 0x18, 0xDB, + 0x6D, 0xAE, 0x28, 0xEB, 0xE7, 0x24, 0xA2, 0x61, + 0xBA, 0x79, 0xFF, 0x3C, 0x30, 0xF3, 0x75, 0xB6, + 0xDA, 0x19, 0x9F, 0x5C, 0x50, 0x93, 0x15, 0xD6, + 0x0D, 0xCE, 0x48, 0x8B, 0x87, 0x44, 0xC2, 0x01, + 0xB7, 0x74, 0xF2, 0x31, 0x3D, 0xFE, 0x78, 0xBB, + 0x60, 0xA3, 0x25, 0xE6, 0xEA, 0x29, 0xAF, 0x6C, + 0x77, 0xB4, 0x32, 0xF1, 0xFD, 0x3E, 0xB8, 0x7B, + 0xA0, 0x63, 0xE5, 0x26, 0x2A, 0xE9, 0x6F, 0xAC, + 0x1A, 0xD9, 0x5F, 0x9C, 0x90, 0x53, 0xD5, 0x16, + 0xCD, 0x0E, 0x88, 0x4B, 0x47, 0x84, 0x02, 0xC1, + 0xAD, 0x6E, 0xE8, 0x2B, 0x27, 0xE4, 0x62, 0xA1, + 0x7A, 0xB9, 0x3F, 0xFC, 0xF0, 0x33, 0xB5, 0x76, + 0xC0, 0x03, 0x85, 0x46, 0x4A, 0x89, 0x0F, 0xCC, + 0x17, 0xD4, 0x52, 0x91, 0x9D, 0x5E, 0xD8, 0x1B, + 0xEE, 0x2D, 0xAB, 0x68, 0x64, 0xA7, 0x21, 0xE2, + 0x39, 0xFA, 0x7C, 0xBF, 0xB3, 0x70, 0xF6, 0x35, + 0x83, 0x40, 0xC6, 0x05, 0x09, 0xCA, 0x4C, 0x8F, + 0x54, 0x97, 0x11, 0xD2, 0xDE, 0x1D, 0x9B, 0x58, + 0x34, 0xF7, 0x71, 0xB2, 0xBE, 0x7D, 0xFB, 0x38, + 0xE3, 0x20, 0xA6, 0x65, 0x69, 0xAA, 0x2C, 0xEF, + 0x59, 0x9A, 0x1C, 0xDF, 0xD3, 0x10, 0x96, 0x55, + 0x8E, 0x4D, 0xCB, 0x08, 0x04, 0xC7, 0x41, 0x82, + 0x99, 0x5A, 0xDC, 0x1F, 0x13, 0xD0, 0x56, 0x95, + 0x4E, 0x8D, 0x0B, 0xC8, 0xC4, 0x07, 0x81, 0x42, + 0xF4, 0x37, 0xB1, 0x72, 0x7E, 0xBD, 0x3B, 0xF8, + 0x23, 0xE0, 0x66, 0xA5, 0xA9, 0x6A, 0xEC, 0x2F, + 0x43, 0x80, 0x06, 0xC5, 0xC9, 0x0A, 0x8C, 0x4F, + 0x94, 0x57, 0xD1, 0x12, 0x1E, 0xDD, 0x5B, 0x98, + 0x2E, 0xED, 0x6B, 0xA8, 0xA4, 0x67, 0xE1, 0x22, + 0xF9, 0x3A, 0xBC, 0x7F, 0x73, 0xB0, 0x36, 0xF5, + 0x00, 0xC4, 0x4B, 0x8F, 0x96, 0x52, 0xDD, 0x19, + 0xEF, 0x2B, 0xA4, 0x60, 0x79, 0xBD, 0x32, 0xF6, + 0x1D, 0xD9, 0x56, 0x92, 0x8B, 0x4F, 0xC0, 0x04, + 0xF2, 0x36, 0xB9, 0x7D, 0x64, 0xA0, 0x2F, 0xEB, + 0x3A, 0xFE, 0x71, 0xB5, 0xAC, 0x68, 0xE7, 0x23, + 0xD5, 0x11, 0x9E, 0x5A, 0x43, 0x87, 0x08, 0xCC, + 0x27, 0xE3, 0x6C, 0xA8, 0xB1, 0x75, 0xFA, 0x3E, + 0xC8, 0x0C, 0x83, 0x47, 0x5E, 0x9A, 0x15, 0xD1, + 0x74, 0xB0, 0x3F, 0xFB, 0xE2, 0x26, 0xA9, 0x6D, + 0x9B, 0x5F, 0xD0, 0x14, 0x0D, 0xC9, 0x46, 0x82, + 0x69, 0xAD, 0x22, 0xE6, 0xFF, 0x3B, 0xB4, 0x70, + 0x86, 0x42, 0xCD, 0x09, 0x10, 0xD4, 0x5B, 0x9F, + 0x4E, 0x8A, 0x05, 0xC1, 0xD8, 0x1C, 0x93, 0x57, + 0xA1, 0x65, 0xEA, 0x2E, 0x37, 0xF3, 0x7C, 0xB8, + 0x53, 0x97, 0x18, 0xDC, 0xC5, 0x01, 0x8E, 0x4A, + 0xBC, 0x78, 0xF7, 0x33, 0x2A, 0xEE, 0x61, 0xA5, + 0xE8, 0x2C, 0xA3, 0x67, 0x7E, 0xBA, 0x35, 0xF1, + 0x07, 0xC3, 0x4C, 0x88, 0x91, 0x55, 0xDA, 0x1E, + 0xF5, 0x31, 0xBE, 0x7A, 0x63, 0xA7, 0x28, 0xEC, + 0x1A, 0xDE, 0x51, 0x95, 0x8C, 0x48, 0xC7, 0x03, + 0xD2, 0x16, 0x99, 0x5D, 0x44, 0x80, 0x0F, 0xCB, + 0x3D, 0xF9, 0x76, 0xB2, 0xAB, 0x6F, 0xE0, 0x24, + 0xCF, 0x0B, 0x84, 0x40, 0x59, 0x9D, 0x12, 0xD6, + 0x20, 0xE4, 0x6B, 0xAF, 0xB6, 0x72, 0xFD, 0x39, + 0x9C, 0x58, 0xD7, 0x13, 0x0A, 0xCE, 0x41, 0x85, + 0x73, 0xB7, 0x38, 0xFC, 0xE5, 0x21, 0xAE, 0x6A, + 0x81, 0x45, 0xCA, 0x0E, 0x17, 0xD3, 0x5C, 0x98, + 0x6E, 0xAA, 0x25, 0xE1, 0xF8, 0x3C, 0xB3, 0x77, + 0xA6, 0x62, 0xED, 0x29, 0x30, 0xF4, 0x7B, 0xBF, + 0x49, 0x8D, 0x02, 0xC6, 0xDF, 0x1B, 0x94, 0x50, + 0xBB, 0x7F, 0xF0, 0x34, 0x2D, 0xE9, 0x66, 0xA2, + 0x54, 0x90, 0x1F, 0xDB, 0xC2, 0x06, 0x89, 0x4D, + 0x00, 0xC5, 0x49, 0x8C, 0x92, 0x57, 0xDB, 0x1E, + 0xE7, 0x22, 0xAE, 0x6B, 0x75, 0xB0, 0x3C, 0xF9, + 0x0D, 0xC8, 0x44, 0x81, 0x9F, 0x5A, 0xD6, 0x13, + 0xEA, 0x2F, 0xA3, 0x66, 0x78, 0xBD, 0x31, 0xF4, + 0x1A, 0xDF, 0x53, 0x96, 0x88, 0x4D, 0xC1, 0x04, + 0xFD, 0x38, 0xB4, 0x71, 0x6F, 0xAA, 0x26, 0xE3, + 0x17, 0xD2, 0x5E, 0x9B, 0x85, 0x40, 0xCC, 0x09, + 0xF0, 0x35, 0xB9, 0x7C, 0x62, 0xA7, 0x2B, 0xEE, + 0x34, 0xF1, 0x7D, 0xB8, 0xA6, 0x63, 0xEF, 0x2A, + 0xD3, 0x16, 0x9A, 0x5F, 0x41, 0x84, 0x08, 0xCD, + 0x39, 0xFC, 0x70, 0xB5, 0xAB, 0x6E, 0xE2, 0x27, + 0xDE, 0x1B, 0x97, 0x52, 0x4C, 0x89, 0x05, 0xC0, + 0x2E, 0xEB, 0x67, 0xA2, 0xBC, 0x79, 0xF5, 0x30, + 0xC9, 0x0C, 0x80, 0x45, 0x5B, 0x9E, 0x12, 0xD7, + 0x23, 0xE6, 0x6A, 0xAF, 0xB1, 0x74, 0xF8, 0x3D, + 0xC4, 0x01, 0x8D, 0x48, 0x56, 0x93, 0x1F, 0xDA, + 0x68, 0xAD, 0x21, 0xE4, 0xFA, 0x3F, 0xB3, 0x76, + 0x8F, 0x4A, 0xC6, 0x03, 0x1D, 0xD8, 0x54, 0x91, + 0x65, 0xA0, 0x2C, 0xE9, 0xF7, 0x32, 0xBE, 0x7B, + 0x82, 0x47, 0xCB, 0x0E, 0x10, 0xD5, 0x59, 0x9C, + 0x72, 0xB7, 0x3B, 0xFE, 0xE0, 0x25, 0xA9, 0x6C, + 0x95, 0x50, 0xDC, 0x19, 0x07, 0xC2, 0x4E, 0x8B, + 0x7F, 0xBA, 0x36, 0xF3, 0xED, 0x28, 0xA4, 0x61, + 0x98, 0x5D, 0xD1, 0x14, 0x0A, 0xCF, 0x43, 0x86, + 0x5C, 0x99, 0x15, 0xD0, 0xCE, 0x0B, 0x87, 0x42, + 0xBB, 0x7E, 0xF2, 0x37, 0x29, 0xEC, 0x60, 0xA5, + 0x51, 0x94, 0x18, 0xDD, 0xC3, 0x06, 0x8A, 0x4F, + 0xB6, 0x73, 0xFF, 0x3A, 0x24, 0xE1, 0x6D, 0xA8, + 0x46, 0x83, 0x0F, 0xCA, 0xD4, 0x11, 0x9D, 0x58, + 0xA1, 0x64, 0xE8, 0x2D, 0x33, 0xF6, 0x7A, 0xBF, + 0x4B, 0x8E, 0x02, 0xC7, 0xD9, 0x1C, 0x90, 0x55, + 0xAC, 0x69, 0xE5, 0x20, 0x3E, 0xFB, 0x77, 0xB2, + 0x00, 0xC6, 0x4F, 0x89, 0x9E, 0x58, 0xD1, 0x17, + 0xFF, 0x39, 0xB0, 0x76, 0x61, 0xA7, 0x2E, 0xE8, + 0x3D, 0xFB, 0x72, 0xB4, 0xA3, 0x65, 0xEC, 0x2A, + 0xC2, 0x04, 0x8D, 0x4B, 0x5C, 0x9A, 0x13, 0xD5, + 0x7A, 0xBC, 0x35, 0xF3, 0xE4, 0x22, 0xAB, 0x6D, + 0x85, 0x43, 0xCA, 0x0C, 0x1B, 0xDD, 0x54, 0x92, + 0x47, 0x81, 0x08, 0xCE, 0xD9, 0x1F, 0x96, 0x50, + 0xB8, 0x7E, 0xF7, 0x31, 0x26, 0xE0, 0x69, 0xAF, + 0xF4, 0x32, 0xBB, 0x7D, 0x6A, 0xAC, 0x25, 0xE3, + 0x0B, 0xCD, 0x44, 0x82, 0x95, 0x53, 0xDA, 0x1C, + 0xC9, 0x0F, 0x86, 0x40, 0x57, 0x91, 0x18, 0xDE, + 0x36, 0xF0, 0x79, 0xBF, 0xA8, 0x6E, 0xE7, 0x21, + 0x8E, 0x48, 0xC1, 0x07, 0x10, 0xD6, 0x5F, 0x99, + 0x71, 0xB7, 0x3E, 0xF8, 0xEF, 0x29, 0xA0, 0x66, + 0xB3, 0x75, 0xFC, 0x3A, 0x2D, 0xEB, 0x62, 0xA4, + 0x4C, 0x8A, 0x03, 0xC5, 0xD2, 0x14, 0x9D, 0x5B, + 0x2B, 0xED, 0x64, 0xA2, 0xB5, 0x73, 0xFA, 0x3C, + 0xD4, 0x12, 0x9B, 0x5D, 0x4A, 0x8C, 0x05, 0xC3, + 0x16, 0xD0, 0x59, 0x9F, 0x88, 0x4E, 0xC7, 0x01, + 0xE9, 0x2F, 0xA6, 0x60, 0x77, 0xB1, 0x38, 0xFE, + 0x51, 0x97, 0x1E, 0xD8, 0xCF, 0x09, 0x80, 0x46, + 0xAE, 0x68, 0xE1, 0x27, 0x30, 0xF6, 0x7F, 0xB9, + 0x6C, 0xAA, 0x23, 0xE5, 0xF2, 0x34, 0xBD, 0x7B, + 0x93, 0x55, 0xDC, 0x1A, 0x0D, 0xCB, 0x42, 0x84, + 0xDF, 0x19, 0x90, 0x56, 0x41, 0x87, 0x0E, 0xC8, + 0x20, 0xE6, 0x6F, 0xA9, 0xBE, 0x78, 0xF1, 0x37, + 0xE2, 0x24, 0xAD, 0x6B, 0x7C, 0xBA, 0x33, 0xF5, + 0x1D, 0xDB, 0x52, 0x94, 0x83, 0x45, 0xCC, 0x0A, + 0xA5, 0x63, 0xEA, 0x2C, 0x3B, 0xFD, 0x74, 0xB2, + 0x5A, 0x9C, 0x15, 0xD3, 0xC4, 0x02, 0x8B, 0x4D, + 0x98, 0x5E, 0xD7, 0x11, 0x06, 0xC0, 0x49, 0x8F, + 0x67, 0xA1, 0x28, 0xEE, 0xF9, 0x3F, 0xB6, 0x70, + 0x00, 0xC7, 0x4D, 0x8A, 0x9A, 0x5D, 0xD7, 0x10, + 0xF7, 0x30, 0xBA, 0x7D, 0x6D, 0xAA, 0x20, 0xE7, + 0x2D, 0xEA, 0x60, 0xA7, 0xB7, 0x70, 0xFA, 0x3D, + 0xDA, 0x1D, 0x97, 0x50, 0x40, 0x87, 0x0D, 0xCA, + 0x5A, 0x9D, 0x17, 0xD0, 0xC0, 0x07, 0x8D, 0x4A, + 0xAD, 0x6A, 0xE0, 0x27, 0x37, 0xF0, 0x7A, 0xBD, + 0x77, 0xB0, 0x3A, 0xFD, 0xED, 0x2A, 0xA0, 0x67, + 0x80, 0x47, 0xCD, 0x0A, 0x1A, 0xDD, 0x57, 0x90, + 0xB4, 0x73, 0xF9, 0x3E, 0x2E, 0xE9, 0x63, 0xA4, + 0x43, 0x84, 0x0E, 0xC9, 0xD9, 0x1E, 0x94, 0x53, + 0x99, 0x5E, 0xD4, 0x13, 0x03, 0xC4, 0x4E, 0x89, + 0x6E, 0xA9, 0x23, 0xE4, 0xF4, 0x33, 0xB9, 0x7E, + 0xEE, 0x29, 0xA3, 0x64, 0x74, 0xB3, 0x39, 0xFE, + 0x19, 0xDE, 0x54, 0x93, 0x83, 0x44, 0xCE, 0x09, + 0xC3, 0x04, 0x8E, 0x49, 0x59, 0x9E, 0x14, 0xD3, + 0x34, 0xF3, 0x79, 0xBE, 0xAE, 0x69, 0xE3, 0x24, + 0xAB, 0x6C, 0xE6, 0x21, 0x31, 0xF6, 0x7C, 0xBB, + 0x5C, 0x9B, 0x11, 0xD6, 0xC6, 0x01, 0x8B, 0x4C, + 0x86, 0x41, 0xCB, 0x0C, 0x1C, 0xDB, 0x51, 0x96, + 0x71, 0xB6, 0x3C, 0xFB, 0xEB, 0x2C, 0xA6, 0x61, + 0xF1, 0x36, 0xBC, 0x7B, 0x6B, 0xAC, 0x26, 0xE1, + 0x06, 0xC1, 0x4B, 0x8C, 0x9C, 0x5B, 0xD1, 0x16, + 0xDC, 0x1B, 0x91, 0x56, 0x46, 0x81, 0x0B, 0xCC, + 0x2B, 0xEC, 0x66, 0xA1, 0xB1, 0x76, 0xFC, 0x3B, + 0x1F, 0xD8, 0x52, 0x95, 0x85, 0x42, 0xC8, 0x0F, + 0xE8, 0x2F, 0xA5, 0x62, 0x72, 0xB5, 0x3F, 0xF8, + 0x32, 0xF5, 0x7F, 0xB8, 0xA8, 0x6F, 0xE5, 0x22, + 0xC5, 0x02, 0x88, 0x4F, 0x5F, 0x98, 0x12, 0xD5, + 0x45, 0x82, 0x08, 0xCF, 0xDF, 0x18, 0x92, 0x55, + 0xB2, 0x75, 0xFF, 0x38, 0x28, 0xEF, 0x65, 0xA2, + 0x68, 0xAF, 0x25, 0xE2, 0xF2, 0x35, 0xBF, 0x78, + 0x9F, 0x58, 0xD2, 0x15, 0x05, 0xC2, 0x48, 0x8F, + 0x00, 0xC8, 0x53, 0x9B, 0xA6, 0x6E, 0xF5, 0x3D, + 0x8F, 0x47, 0xDC, 0x14, 0x29, 0xE1, 0x7A, 0xB2, + 0xDD, 0x15, 0x8E, 0x46, 0x7B, 0xB3, 0x28, 0xE0, + 0x52, 0x9A, 0x01, 0xC9, 0xF4, 0x3C, 0xA7, 0x6F, + 0x79, 0xB1, 0x2A, 0xE2, 0xDF, 0x17, 0x8C, 0x44, + 0xF6, 0x3E, 0xA5, 0x6D, 0x50, 0x98, 0x03, 0xCB, + 0xA4, 0x6C, 0xF7, 0x3F, 0x02, 0xCA, 0x51, 0x99, + 0x2B, 0xE3, 0x78, 0xB0, 0x8D, 0x45, 0xDE, 0x16, + 0xF2, 0x3A, 0xA1, 0x69, 0x54, 0x9C, 0x07, 0xCF, + 0x7D, 0xB5, 0x2E, 0xE6, 0xDB, 0x13, 0x88, 0x40, + 0x2F, 0xE7, 0x7C, 0xB4, 0x89, 0x41, 0xDA, 0x12, + 0xA0, 0x68, 0xF3, 0x3B, 0x06, 0xCE, 0x55, 0x9D, + 0x8B, 0x43, 0xD8, 0x10, 0x2D, 0xE5, 0x7E, 0xB6, + 0x04, 0xCC, 0x57, 0x9F, 0xA2, 0x6A, 0xF1, 0x39, + 0x56, 0x9E, 0x05, 0xCD, 0xF0, 0x38, 0xA3, 0x6B, + 0xD9, 0x11, 0x8A, 0x42, 0x7F, 0xB7, 0x2C, 0xE4, + 0x27, 0xEF, 0x74, 0xBC, 0x81, 0x49, 0xD2, 0x1A, + 0xA8, 0x60, 0xFB, 0x33, 0x0E, 0xC6, 0x5D, 0x95, + 0xFA, 0x32, 0xA9, 0x61, 0x5C, 0x94, 0x0F, 0xC7, + 0x75, 0xBD, 0x26, 0xEE, 0xD3, 0x1B, 0x80, 0x48, + 0x5E, 0x96, 0x0D, 0xC5, 0xF8, 0x30, 0xAB, 0x63, + 0xD1, 0x19, 0x82, 0x4A, 0x77, 0xBF, 0x24, 0xEC, + 0x83, 0x4B, 0xD0, 0x18, 0x25, 0xED, 0x76, 0xBE, + 0x0C, 0xC4, 0x5F, 0x97, 0xAA, 0x62, 0xF9, 0x31, + 0xD5, 0x1D, 0x86, 0x4E, 0x73, 0xBB, 0x20, 0xE8, + 0x5A, 0x92, 0x09, 0xC1, 0xFC, 0x34, 0xAF, 0x67, + 0x08, 0xC0, 0x5B, 0x93, 0xAE, 0x66, 0xFD, 0x35, + 0x87, 0x4F, 0xD4, 0x1C, 0x21, 0xE9, 0x72, 0xBA, + 0xAC, 0x64, 0xFF, 0x37, 0x0A, 0xC2, 0x59, 0x91, + 0x23, 0xEB, 0x70, 0xB8, 0x85, 0x4D, 0xD6, 0x1E, + 0x71, 0xB9, 0x22, 0xEA, 0xD7, 0x1F, 0x84, 0x4C, + 0xFE, 0x36, 0xAD, 0x65, 0x58, 0x90, 0x0B, 0xC3, + 0x00, 0xC9, 0x51, 0x98, 0xA2, 0x6B, 0xF3, 0x3A, + 0x87, 0x4E, 0xD6, 0x1F, 0x25, 0xEC, 0x74, 0xBD, + 0xCD, 0x04, 0x9C, 0x55, 0x6F, 0xA6, 0x3E, 0xF7, + 0x4A, 0x83, 0x1B, 0xD2, 0xE8, 0x21, 0xB9, 0x70, + 0x59, 0x90, 0x08, 0xC1, 0xFB, 0x32, 0xAA, 0x63, + 0xDE, 0x17, 0x8F, 0x46, 0x7C, 0xB5, 0x2D, 0xE4, + 0x94, 0x5D, 0xC5, 0x0C, 0x36, 0xFF, 0x67, 0xAE, + 0x13, 0xDA, 0x42, 0x8B, 0xB1, 0x78, 0xE0, 0x29, + 0xB2, 0x7B, 0xE3, 0x2A, 0x10, 0xD9, 0x41, 0x88, + 0x35, 0xFC, 0x64, 0xAD, 0x97, 0x5E, 0xC6, 0x0F, + 0x7F, 0xB6, 0x2E, 0xE7, 0xDD, 0x14, 0x8C, 0x45, + 0xF8, 0x31, 0xA9, 0x60, 0x5A, 0x93, 0x0B, 0xC2, + 0xEB, 0x22, 0xBA, 0x73, 0x49, 0x80, 0x18, 0xD1, + 0x6C, 0xA5, 0x3D, 0xF4, 0xCE, 0x07, 0x9F, 0x56, + 0x26, 0xEF, 0x77, 0xBE, 0x84, 0x4D, 0xD5, 0x1C, + 0xA1, 0x68, 0xF0, 0x39, 0x03, 0xCA, 0x52, 0x9B, + 0xA7, 0x6E, 0xF6, 0x3F, 0x05, 0xCC, 0x54, 0x9D, + 0x20, 0xE9, 0x71, 0xB8, 0x82, 0x4B, 0xD3, 0x1A, + 0x6A, 0xA3, 0x3B, 0xF2, 0xC8, 0x01, 0x99, 0x50, + 0xED, 0x24, 0xBC, 0x75, 0x4F, 0x86, 0x1E, 0xD7, + 0xFE, 0x37, 0xAF, 0x66, 0x5C, 0x95, 0x0D, 0xC4, + 0x79, 0xB0, 0x28, 0xE1, 0xDB, 0x12, 0x8A, 0x43, + 0x33, 0xFA, 0x62, 0xAB, 0x91, 0x58, 0xC0, 0x09, + 0xB4, 0x7D, 0xE5, 0x2C, 0x16, 0xDF, 0x47, 0x8E, + 0x15, 0xDC, 0x44, 0x8D, 0xB7, 0x7E, 0xE6, 0x2F, + 0x92, 0x5B, 0xC3, 0x0A, 0x30, 0xF9, 0x61, 0xA8, + 0xD8, 0x11, 0x89, 0x40, 0x7A, 0xB3, 0x2B, 0xE2, + 0x5F, 0x96, 0x0E, 0xC7, 0xFD, 0x34, 0xAC, 0x65, + 0x4C, 0x85, 0x1D, 0xD4, 0xEE, 0x27, 0xBF, 0x76, + 0xCB, 0x02, 0x9A, 0x53, 0x69, 0xA0, 0x38, 0xF1, + 0x81, 0x48, 0xD0, 0x19, 0x23, 0xEA, 0x72, 0xBB, + 0x06, 0xCF, 0x57, 0x9E, 0xA4, 0x6D, 0xF5, 0x3C, + 0x00, 0xCA, 0x57, 0x9D, 0xAE, 0x64, 0xF9, 0x33, + 0x9F, 0x55, 0xC8, 0x02, 0x31, 0xFB, 0x66, 0xAC, + 0xFD, 0x37, 0xAA, 0x60, 0x53, 0x99, 0x04, 0xCE, + 0x62, 0xA8, 0x35, 0xFF, 0xCC, 0x06, 0x9B, 0x51, + 0x39, 0xF3, 0x6E, 0xA4, 0x97, 0x5D, 0xC0, 0x0A, + 0xA6, 0x6C, 0xF1, 0x3B, 0x08, 0xC2, 0x5F, 0x95, + 0xC4, 0x0E, 0x93, 0x59, 0x6A, 0xA0, 0x3D, 0xF7, + 0x5B, 0x91, 0x0C, 0xC6, 0xF5, 0x3F, 0xA2, 0x68, + 0x72, 0xB8, 0x25, 0xEF, 0xDC, 0x16, 0x8B, 0x41, + 0xED, 0x27, 0xBA, 0x70, 0x43, 0x89, 0x14, 0xDE, + 0x8F, 0x45, 0xD8, 0x12, 0x21, 0xEB, 0x76, 0xBC, + 0x10, 0xDA, 0x47, 0x8D, 0xBE, 0x74, 0xE9, 0x23, + 0x4B, 0x81, 0x1C, 0xD6, 0xE5, 0x2F, 0xB2, 0x78, + 0xD4, 0x1E, 0x83, 0x49, 0x7A, 0xB0, 0x2D, 0xE7, + 0xB6, 0x7C, 0xE1, 0x2B, 0x18, 0xD2, 0x4F, 0x85, + 0x29, 0xE3, 0x7E, 0xB4, 0x87, 0x4D, 0xD0, 0x1A, + 0xE4, 0x2E, 0xB3, 0x79, 0x4A, 0x80, 0x1D, 0xD7, + 0x7B, 0xB1, 0x2C, 0xE6, 0xD5, 0x1F, 0x82, 0x48, + 0x19, 0xD3, 0x4E, 0x84, 0xB7, 0x7D, 0xE0, 0x2A, + 0x86, 0x4C, 0xD1, 0x1B, 0x28, 0xE2, 0x7F, 0xB5, + 0xDD, 0x17, 0x8A, 0x40, 0x73, 0xB9, 0x24, 0xEE, + 0x42, 0x88, 0x15, 0xDF, 0xEC, 0x26, 0xBB, 0x71, + 0x20, 0xEA, 0x77, 0xBD, 0x8E, 0x44, 0xD9, 0x13, + 0xBF, 0x75, 0xE8, 0x22, 0x11, 0xDB, 0x46, 0x8C, + 0x96, 0x5C, 0xC1, 0x0B, 0x38, 0xF2, 0x6F, 0xA5, + 0x09, 0xC3, 0x5E, 0x94, 0xA7, 0x6D, 0xF0, 0x3A, + 0x6B, 0xA1, 0x3C, 0xF6, 0xC5, 0x0F, 0x92, 0x58, + 0xF4, 0x3E, 0xA3, 0x69, 0x5A, 0x90, 0x0D, 0xC7, + 0xAF, 0x65, 0xF8, 0x32, 0x01, 0xCB, 0x56, 0x9C, + 0x30, 0xFA, 0x67, 0xAD, 0x9E, 0x54, 0xC9, 0x03, + 0x52, 0x98, 0x05, 0xCF, 0xFC, 0x36, 0xAB, 0x61, + 0xCD, 0x07, 0x9A, 0x50, 0x63, 0xA9, 0x34, 0xFE, + 0x00, 0xCB, 0x55, 0x9E, 0xAA, 0x61, 0xFF, 0x34, + 0x97, 0x5C, 0xC2, 0x09, 0x3D, 0xF6, 0x68, 0xA3, + 0xED, 0x26, 0xB8, 0x73, 0x47, 0x8C, 0x12, 0xD9, + 0x7A, 0xB1, 0x2F, 0xE4, 0xD0, 0x1B, 0x85, 0x4E, + 0x19, 0xD2, 0x4C, 0x87, 0xB3, 0x78, 0xE6, 0x2D, + 0x8E, 0x45, 0xDB, 0x10, 0x24, 0xEF, 0x71, 0xBA, + 0xF4, 0x3F, 0xA1, 0x6A, 0x5E, 0x95, 0x0B, 0xC0, + 0x63, 0xA8, 0x36, 0xFD, 0xC9, 0x02, 0x9C, 0x57, + 0x32, 0xF9, 0x67, 0xAC, 0x98, 0x53, 0xCD, 0x06, + 0xA5, 0x6E, 0xF0, 0x3B, 0x0F, 0xC4, 0x5A, 0x91, + 0xDF, 0x14, 0x8A, 0x41, 0x75, 0xBE, 0x20, 0xEB, + 0x48, 0x83, 0x1D, 0xD6, 0xE2, 0x29, 0xB7, 0x7C, + 0x2B, 0xE0, 0x7E, 0xB5, 0x81, 0x4A, 0xD4, 0x1F, + 0xBC, 0x77, 0xE9, 0x22, 0x16, 0xDD, 0x43, 0x88, + 0xC6, 0x0D, 0x93, 0x58, 0x6C, 0xA7, 0x39, 0xF2, + 0x51, 0x9A, 0x04, 0xCF, 0xFB, 0x30, 0xAE, 0x65, + 0x64, 0xAF, 0x31, 0xFA, 0xCE, 0x05, 0x9B, 0x50, + 0xF3, 0x38, 0xA6, 0x6D, 0x59, 0x92, 0x0C, 0xC7, + 0x89, 0x42, 0xDC, 0x17, 0x23, 0xE8, 0x76, 0xBD, + 0x1E, 0xD5, 0x4B, 0x80, 0xB4, 0x7F, 0xE1, 0x2A, + 0x7D, 0xB6, 0x28, 0xE3, 0xD7, 0x1C, 0x82, 0x49, + 0xEA, 0x21, 0xBF, 0x74, 0x40, 0x8B, 0x15, 0xDE, + 0x90, 0x5B, 0xC5, 0x0E, 0x3A, 0xF1, 0x6F, 0xA4, + 0x07, 0xCC, 0x52, 0x99, 0xAD, 0x66, 0xF8, 0x33, + 0x56, 0x9D, 0x03, 0xC8, 0xFC, 0x37, 0xA9, 0x62, + 0xC1, 0x0A, 0x94, 0x5F, 0x6B, 0xA0, 0x3E, 0xF5, + 0xBB, 0x70, 0xEE, 0x25, 0x11, 0xDA, 0x44, 0x8F, + 0x2C, 0xE7, 0x79, 0xB2, 0x86, 0x4D, 0xD3, 0x18, + 0x4F, 0x84, 0x1A, 0xD1, 0xE5, 0x2E, 0xB0, 0x7B, + 0xD8, 0x13, 0x8D, 0x46, 0x72, 0xB9, 0x27, 0xEC, + 0xA2, 0x69, 0xF7, 0x3C, 0x08, 0xC3, 0x5D, 0x96, + 0x35, 0xFE, 0x60, 0xAB, 0x9F, 0x54, 0xCA, 0x01, + 0x00, 0xCC, 0x5B, 0x97, 0xB6, 0x7A, 0xED, 0x21, + 0xAF, 0x63, 0xF4, 0x38, 0x19, 0xD5, 0x42, 0x8E, + 0x9D, 0x51, 0xC6, 0x0A, 0x2B, 0xE7, 0x70, 0xBC, + 0x32, 0xFE, 0x69, 0xA5, 0x84, 0x48, 0xDF, 0x13, + 0xF9, 0x35, 0xA2, 0x6E, 0x4F, 0x83, 0x14, 0xD8, + 0x56, 0x9A, 0x0D, 0xC1, 0xE0, 0x2C, 0xBB, 0x77, + 0x64, 0xA8, 0x3F, 0xF3, 0xD2, 0x1E, 0x89, 0x45, + 0xCB, 0x07, 0x90, 0x5C, 0x7D, 0xB1, 0x26, 0xEA, + 0x31, 0xFD, 0x6A, 0xA6, 0x87, 0x4B, 0xDC, 0x10, + 0x9E, 0x52, 0xC5, 0x09, 0x28, 0xE4, 0x73, 0xBF, + 0xAC, 0x60, 0xF7, 0x3B, 0x1A, 0xD6, 0x41, 0x8D, + 0x03, 0xCF, 0x58, 0x94, 0xB5, 0x79, 0xEE, 0x22, + 0xC8, 0x04, 0x93, 0x5F, 0x7E, 0xB2, 0x25, 0xE9, + 0x67, 0xAB, 0x3C, 0xF0, 0xD1, 0x1D, 0x8A, 0x46, + 0x55, 0x99, 0x0E, 0xC2, 0xE3, 0x2F, 0xB8, 0x74, + 0xFA, 0x36, 0xA1, 0x6D, 0x4C, 0x80, 0x17, 0xDB, + 0x62, 0xAE, 0x39, 0xF5, 0xD4, 0x18, 0x8F, 0x43, + 0xCD, 0x01, 0x96, 0x5A, 0x7B, 0xB7, 0x20, 0xEC, + 0xFF, 0x33, 0xA4, 0x68, 0x49, 0x85, 0x12, 0xDE, + 0x50, 0x9C, 0x0B, 0xC7, 0xE6, 0x2A, 0xBD, 0x71, + 0x9B, 0x57, 0xC0, 0x0C, 0x2D, 0xE1, 0x76, 0xBA, + 0x34, 0xF8, 0x6F, 0xA3, 0x82, 0x4E, 0xD9, 0x15, + 0x06, 0xCA, 0x5D, 0x91, 0xB0, 0x7C, 0xEB, 0x27, + 0xA9, 0x65, 0xF2, 0x3E, 0x1F, 0xD3, 0x44, 0x88, + 0x53, 0x9F, 0x08, 0xC4, 0xE5, 0x29, 0xBE, 0x72, + 0xFC, 0x30, 0xA7, 0x6B, 0x4A, 0x86, 0x11, 0xDD, + 0xCE, 0x02, 0x95, 0x59, 0x78, 0xB4, 0x23, 0xEF, + 0x61, 0xAD, 0x3A, 0xF6, 0xD7, 0x1B, 0x8C, 0x40, + 0xAA, 0x66, 0xF1, 0x3D, 0x1C, 0xD0, 0x47, 0x8B, + 0x05, 0xC9, 0x5E, 0x92, 0xB3, 0x7F, 0xE8, 0x24, + 0x37, 0xFB, 0x6C, 0xA0, 0x81, 0x4D, 0xDA, 0x16, + 0x98, 0x54, 0xC3, 0x0F, 0x2E, 0xE2, 0x75, 0xB9, + 0x00, 0xCD, 0x59, 0x94, 0xB2, 0x7F, 0xEB, 0x26, + 0xA7, 0x6A, 0xFE, 0x33, 0x15, 0xD8, 0x4C, 0x81, + 0x8D, 0x40, 0xD4, 0x19, 0x3F, 0xF2, 0x66, 0xAB, + 0x2A, 0xE7, 0x73, 0xBE, 0x98, 0x55, 0xC1, 0x0C, + 0xD9, 0x14, 0x80, 0x4D, 0x6B, 0xA6, 0x32, 0xFF, + 0x7E, 0xB3, 0x27, 0xEA, 0xCC, 0x01, 0x95, 0x58, + 0x54, 0x99, 0x0D, 0xC0, 0xE6, 0x2B, 0xBF, 0x72, + 0xF3, 0x3E, 0xAA, 0x67, 0x41, 0x8C, 0x18, 0xD5, + 0x71, 0xBC, 0x28, 0xE5, 0xC3, 0x0E, 0x9A, 0x57, + 0xD6, 0x1B, 0x8F, 0x42, 0x64, 0xA9, 0x3D, 0xF0, + 0xFC, 0x31, 0xA5, 0x68, 0x4E, 0x83, 0x17, 0xDA, + 0x5B, 0x96, 0x02, 0xCF, 0xE9, 0x24, 0xB0, 0x7D, + 0xA8, 0x65, 0xF1, 0x3C, 0x1A, 0xD7, 0x43, 0x8E, + 0x0F, 0xC2, 0x56, 0x9B, 0xBD, 0x70, 0xE4, 0x29, + 0x25, 0xE8, 0x7C, 0xB1, 0x97, 0x5A, 0xCE, 0x03, + 0x82, 0x4F, 0xDB, 0x16, 0x30, 0xFD, 0x69, 0xA4, + 0xE2, 0x2F, 0xBB, 0x76, 0x50, 0x9D, 0x09, 0xC4, + 0x45, 0x88, 0x1C, 0xD1, 0xF7, 0x3A, 0xAE, 0x63, + 0x6F, 0xA2, 0x36, 0xFB, 0xDD, 0x10, 0x84, 0x49, + 0xC8, 0x05, 0x91, 0x5C, 0x7A, 0xB7, 0x23, 0xEE, + 0x3B, 0xF6, 0x62, 0xAF, 0x89, 0x44, 0xD0, 0x1D, + 0x9C, 0x51, 0xC5, 0x08, 0x2E, 0xE3, 0x77, 0xBA, + 0xB6, 0x7B, 0xEF, 0x22, 0x04, 0xC9, 0x5D, 0x90, + 0x11, 0xDC, 0x48, 0x85, 0xA3, 0x6E, 0xFA, 0x37, + 0x93, 0x5E, 0xCA, 0x07, 0x21, 0xEC, 0x78, 0xB5, + 0x34, 0xF9, 0x6D, 0xA0, 0x86, 0x4B, 0xDF, 0x12, + 0x1E, 0xD3, 0x47, 0x8A, 0xAC, 0x61, 0xF5, 0x38, + 0xB9, 0x74, 0xE0, 0x2D, 0x0B, 0xC6, 0x52, 0x9F, + 0x4A, 0x87, 0x13, 0xDE, 0xF8, 0x35, 0xA1, 0x6C, + 0xED, 0x20, 0xB4, 0x79, 0x5F, 0x92, 0x06, 0xCB, + 0xC7, 0x0A, 0x9E, 0x53, 0x75, 0xB8, 0x2C, 0xE1, + 0x60, 0xAD, 0x39, 0xF4, 0xD2, 0x1F, 0x8B, 0x46, + 0x00, 0xCE, 0x5F, 0x91, 0xBE, 0x70, 0xE1, 0x2F, + 0xBF, 0x71, 0xE0, 0x2E, 0x01, 0xCF, 0x5E, 0x90, + 0xBD, 0x73, 0xE2, 0x2C, 0x03, 0xCD, 0x5C, 0x92, + 0x02, 0xCC, 0x5D, 0x93, 0xBC, 0x72, 0xE3, 0x2D, + 0xB9, 0x77, 0xE6, 0x28, 0x07, 0xC9, 0x58, 0x96, + 0x06, 0xC8, 0x59, 0x97, 0xB8, 0x76, 0xE7, 0x29, + 0x04, 0xCA, 0x5B, 0x95, 0xBA, 0x74, 0xE5, 0x2B, + 0xBB, 0x75, 0xE4, 0x2A, 0x05, 0xCB, 0x5A, 0x94, + 0xB1, 0x7F, 0xEE, 0x20, 0x0F, 0xC1, 0x50, 0x9E, + 0x0E, 0xC0, 0x51, 0x9F, 0xB0, 0x7E, 0xEF, 0x21, + 0x0C, 0xC2, 0x53, 0x9D, 0xB2, 0x7C, 0xED, 0x23, + 0xB3, 0x7D, 0xEC, 0x22, 0x0D, 0xC3, 0x52, 0x9C, + 0x08, 0xC6, 0x57, 0x99, 0xB6, 0x78, 0xE9, 0x27, + 0xB7, 0x79, 0xE8, 0x26, 0x09, 0xC7, 0x56, 0x98, + 0xB5, 0x7B, 0xEA, 0x24, 0x0B, 0xC5, 0x54, 0x9A, + 0x0A, 0xC4, 0x55, 0x9B, 0xB4, 0x7A, 0xEB, 0x25, + 0xA1, 0x6F, 0xFE, 0x30, 0x1F, 0xD1, 0x40, 0x8E, + 0x1E, 0xD0, 0x41, 0x8F, 0xA0, 0x6E, 0xFF, 0x31, + 0x1C, 0xD2, 0x43, 0x8D, 0xA2, 0x6C, 0xFD, 0x33, + 0xA3, 0x6D, 0xFC, 0x32, 0x1D, 0xD3, 0x42, 0x8C, + 0x18, 0xD6, 0x47, 0x89, 0xA6, 0x68, 0xF9, 0x37, + 0xA7, 0x69, 0xF8, 0x36, 0x19, 0xD7, 0x46, 0x88, + 0xA5, 0x6B, 0xFA, 0x34, 0x1B, 0xD5, 0x44, 0x8A, + 0x1A, 0xD4, 0x45, 0x8B, 0xA4, 0x6A, 0xFB, 0x35, + 0x10, 0xDE, 0x4F, 0x81, 0xAE, 0x60, 0xF1, 0x3F, + 0xAF, 0x61, 0xF0, 0x3E, 0x11, 0xDF, 0x4E, 0x80, + 0xAD, 0x63, 0xF2, 0x3C, 0x13, 0xDD, 0x4C, 0x82, + 0x12, 0xDC, 0x4D, 0x83, 0xAC, 0x62, 0xF3, 0x3D, + 0xA9, 0x67, 0xF6, 0x38, 0x17, 0xD9, 0x48, 0x86, + 0x16, 0xD8, 0x49, 0x87, 0xA8, 0x66, 0xF7, 0x39, + 0x14, 0xDA, 0x4B, 0x85, 0xAA, 0x64, 0xF5, 0x3B, + 0xAB, 0x65, 0xF4, 0x3A, 0x15, 0xDB, 0x4A, 0x84, + 0x00, 0xCF, 0x5D, 0x92, 0xBA, 0x75, 0xE7, 0x28, + 0xB7, 0x78, 0xEA, 0x25, 0x0D, 0xC2, 0x50, 0x9F, + 0xAD, 0x62, 0xF0, 0x3F, 0x17, 0xD8, 0x4A, 0x85, + 0x1A, 0xD5, 0x47, 0x88, 0xA0, 0x6F, 0xFD, 0x32, + 0x99, 0x56, 0xC4, 0x0B, 0x23, 0xEC, 0x7E, 0xB1, + 0x2E, 0xE1, 0x73, 0xBC, 0x94, 0x5B, 0xC9, 0x06, + 0x34, 0xFB, 0x69, 0xA6, 0x8E, 0x41, 0xD3, 0x1C, + 0x83, 0x4C, 0xDE, 0x11, 0x39, 0xF6, 0x64, 0xAB, + 0xF1, 0x3E, 0xAC, 0x63, 0x4B, 0x84, 0x16, 0xD9, + 0x46, 0x89, 0x1B, 0xD4, 0xFC, 0x33, 0xA1, 0x6E, + 0x5C, 0x93, 0x01, 0xCE, 0xE6, 0x29, 0xBB, 0x74, + 0xEB, 0x24, 0xB6, 0x79, 0x51, 0x9E, 0x0C, 0xC3, + 0x68, 0xA7, 0x35, 0xFA, 0xD2, 0x1D, 0x8F, 0x40, + 0xDF, 0x10, 0x82, 0x4D, 0x65, 0xAA, 0x38, 0xF7, + 0xC5, 0x0A, 0x98, 0x57, 0x7F, 0xB0, 0x22, 0xED, + 0x72, 0xBD, 0x2F, 0xE0, 0xC8, 0x07, 0x95, 0x5A, + 0x21, 0xEE, 0x7C, 0xB3, 0x9B, 0x54, 0xC6, 0x09, + 0x96, 0x59, 0xCB, 0x04, 0x2C, 0xE3, 0x71, 0xBE, + 0x8C, 0x43, 0xD1, 0x1E, 0x36, 0xF9, 0x6B, 0xA4, + 0x3B, 0xF4, 0x66, 0xA9, 0x81, 0x4E, 0xDC, 0x13, + 0xB8, 0x77, 0xE5, 0x2A, 0x02, 0xCD, 0x5F, 0x90, + 0x0F, 0xC0, 0x52, 0x9D, 0xB5, 0x7A, 0xE8, 0x27, + 0x15, 0xDA, 0x48, 0x87, 0xAF, 0x60, 0xF2, 0x3D, + 0xA2, 0x6D, 0xFF, 0x30, 0x18, 0xD7, 0x45, 0x8A, + 0xD0, 0x1F, 0x8D, 0x42, 0x6A, 0xA5, 0x37, 0xF8, + 0x67, 0xA8, 0x3A, 0xF5, 0xDD, 0x12, 0x80, 0x4F, + 0x7D, 0xB2, 0x20, 0xEF, 0xC7, 0x08, 0x9A, 0x55, + 0xCA, 0x05, 0x97, 0x58, 0x70, 0xBF, 0x2D, 0xE2, + 0x49, 0x86, 0x14, 0xDB, 0xF3, 0x3C, 0xAE, 0x61, + 0xFE, 0x31, 0xA3, 0x6C, 0x44, 0x8B, 0x19, 0xD6, + 0xE4, 0x2B, 0xB9, 0x76, 0x5E, 0x91, 0x03, 0xCC, + 0x53, 0x9C, 0x0E, 0xC1, 0xE9, 0x26, 0xB4, 0x7B, + 0x00, 0xD0, 0x63, 0xB3, 0xC6, 0x16, 0xA5, 0x75, + 0x4F, 0x9F, 0x2C, 0xFC, 0x89, 0x59, 0xEA, 0x3A, + 0x9E, 0x4E, 0xFD, 0x2D, 0x58, 0x88, 0x3B, 0xEB, + 0xD1, 0x01, 0xB2, 0x62, 0x17, 0xC7, 0x74, 0xA4, + 0xFF, 0x2F, 0x9C, 0x4C, 0x39, 0xE9, 0x5A, 0x8A, + 0xB0, 0x60, 0xD3, 0x03, 0x76, 0xA6, 0x15, 0xC5, + 0x61, 0xB1, 0x02, 0xD2, 0xA7, 0x77, 0xC4, 0x14, + 0x2E, 0xFE, 0x4D, 0x9D, 0xE8, 0x38, 0x8B, 0x5B, + 0x3D, 0xED, 0x5E, 0x8E, 0xFB, 0x2B, 0x98, 0x48, + 0x72, 0xA2, 0x11, 0xC1, 0xB4, 0x64, 0xD7, 0x07, + 0xA3, 0x73, 0xC0, 0x10, 0x65, 0xB5, 0x06, 0xD6, + 0xEC, 0x3C, 0x8F, 0x5F, 0x2A, 0xFA, 0x49, 0x99, + 0xC2, 0x12, 0xA1, 0x71, 0x04, 0xD4, 0x67, 0xB7, + 0x8D, 0x5D, 0xEE, 0x3E, 0x4B, 0x9B, 0x28, 0xF8, + 0x5C, 0x8C, 0x3F, 0xEF, 0x9A, 0x4A, 0xF9, 0x29, + 0x13, 0xC3, 0x70, 0xA0, 0xD5, 0x05, 0xB6, 0x66, + 0x7A, 0xAA, 0x19, 0xC9, 0xBC, 0x6C, 0xDF, 0x0F, + 0x35, 0xE5, 0x56, 0x86, 0xF3, 0x23, 0x90, 0x40, + 0xE4, 0x34, 0x87, 0x57, 0x22, 0xF2, 0x41, 0x91, + 0xAB, 0x7B, 0xC8, 0x18, 0x6D, 0xBD, 0x0E, 0xDE, + 0x85, 0x55, 0xE6, 0x36, 0x43, 0x93, 0x20, 0xF0, + 0xCA, 0x1A, 0xA9, 0x79, 0x0C, 0xDC, 0x6F, 0xBF, + 0x1B, 0xCB, 0x78, 0xA8, 0xDD, 0x0D, 0xBE, 0x6E, + 0x54, 0x84, 0x37, 0xE7, 0x92, 0x42, 0xF1, 0x21, + 0x47, 0x97, 0x24, 0xF4, 0x81, 0x51, 0xE2, 0x32, + 0x08, 0xD8, 0x6B, 0xBB, 0xCE, 0x1E, 0xAD, 0x7D, + 0xD9, 0x09, 0xBA, 0x6A, 0x1F, 0xCF, 0x7C, 0xAC, + 0x96, 0x46, 0xF5, 0x25, 0x50, 0x80, 0x33, 0xE3, + 0xB8, 0x68, 0xDB, 0x0B, 0x7E, 0xAE, 0x1D, 0xCD, + 0xF7, 0x27, 0x94, 0x44, 0x31, 0xE1, 0x52, 0x82, + 0x26, 0xF6, 0x45, 0x95, 0xE0, 0x30, 0x83, 0x53, + 0x69, 0xB9, 0x0A, 0xDA, 0xAF, 0x7F, 0xCC, 0x1C, + 0x00, 0xD1, 0x61, 0xB0, 0xC2, 0x13, 0xA3, 0x72, + 0x47, 0x96, 0x26, 0xF7, 0x85, 0x54, 0xE4, 0x35, + 0x8E, 0x5F, 0xEF, 0x3E, 0x4C, 0x9D, 0x2D, 0xFC, + 0xC9, 0x18, 0xA8, 0x79, 0x0B, 0xDA, 0x6A, 0xBB, + 0xDF, 0x0E, 0xBE, 0x6F, 0x1D, 0xCC, 0x7C, 0xAD, + 0x98, 0x49, 0xF9, 0x28, 0x5A, 0x8B, 0x3B, 0xEA, + 0x51, 0x80, 0x30, 0xE1, 0x93, 0x42, 0xF2, 0x23, + 0x16, 0xC7, 0x77, 0xA6, 0xD4, 0x05, 0xB5, 0x64, + 0x7D, 0xAC, 0x1C, 0xCD, 0xBF, 0x6E, 0xDE, 0x0F, + 0x3A, 0xEB, 0x5B, 0x8A, 0xF8, 0x29, 0x99, 0x48, + 0xF3, 0x22, 0x92, 0x43, 0x31, 0xE0, 0x50, 0x81, + 0xB4, 0x65, 0xD5, 0x04, 0x76, 0xA7, 0x17, 0xC6, + 0xA2, 0x73, 0xC3, 0x12, 0x60, 0xB1, 0x01, 0xD0, + 0xE5, 0x34, 0x84, 0x55, 0x27, 0xF6, 0x46, 0x97, + 0x2C, 0xFD, 0x4D, 0x9C, 0xEE, 0x3F, 0x8F, 0x5E, + 0x6B, 0xBA, 0x0A, 0xDB, 0xA9, 0x78, 0xC8, 0x19, + 0xFA, 0x2B, 0x9B, 0x4A, 0x38, 0xE9, 0x59, 0x88, + 0xBD, 0x6C, 0xDC, 0x0D, 0x7F, 0xAE, 0x1E, 0xCF, + 0x74, 0xA5, 0x15, 0xC4, 0xB6, 0x67, 0xD7, 0x06, + 0x33, 0xE2, 0x52, 0x83, 0xF1, 0x20, 0x90, 0x41, + 0x25, 0xF4, 0x44, 0x95, 0xE7, 0x36, 0x86, 0x57, + 0x62, 0xB3, 0x03, 0xD2, 0xA0, 0x71, 0xC1, 0x10, + 0xAB, 0x7A, 0xCA, 0x1B, 0x69, 0xB8, 0x08, 0xD9, + 0xEC, 0x3D, 0x8D, 0x5C, 0x2E, 0xFF, 0x4F, 0x9E, + 0x87, 0x56, 0xE6, 0x37, 0x45, 0x94, 0x24, 0xF5, + 0xC0, 0x11, 0xA1, 0x70, 0x02, 0xD3, 0x63, 0xB2, + 0x09, 0xD8, 0x68, 0xB9, 0xCB, 0x1A, 0xAA, 0x7B, + 0x4E, 0x9F, 0x2F, 0xFE, 0x8C, 0x5D, 0xED, 0x3C, + 0x58, 0x89, 0x39, 0xE8, 0x9A, 0x4B, 0xFB, 0x2A, + 0x1F, 0xCE, 0x7E, 0xAF, 0xDD, 0x0C, 0xBC, 0x6D, + 0xD6, 0x07, 0xB7, 0x66, 0x14, 0xC5, 0x75, 0xA4, + 0x91, 0x40, 0xF0, 0x21, 0x53, 0x82, 0x32, 0xE3, + 0x00, 0xD2, 0x67, 0xB5, 0xCE, 0x1C, 0xA9, 0x7B, + 0x5F, 0x8D, 0x38, 0xEA, 0x91, 0x43, 0xF6, 0x24, + 0xBE, 0x6C, 0xD9, 0x0B, 0x70, 0xA2, 0x17, 0xC5, + 0xE1, 0x33, 0x86, 0x54, 0x2F, 0xFD, 0x48, 0x9A, + 0xBF, 0x6D, 0xD8, 0x0A, 0x71, 0xA3, 0x16, 0xC4, + 0xE0, 0x32, 0x87, 0x55, 0x2E, 0xFC, 0x49, 0x9B, + 0x01, 0xD3, 0x66, 0xB4, 0xCF, 0x1D, 0xA8, 0x7A, + 0x5E, 0x8C, 0x39, 0xEB, 0x90, 0x42, 0xF7, 0x25, + 0xBD, 0x6F, 0xDA, 0x08, 0x73, 0xA1, 0x14, 0xC6, + 0xE2, 0x30, 0x85, 0x57, 0x2C, 0xFE, 0x4B, 0x99, + 0x03, 0xD1, 0x64, 0xB6, 0xCD, 0x1F, 0xAA, 0x78, + 0x5C, 0x8E, 0x3B, 0xE9, 0x92, 0x40, 0xF5, 0x27, + 0x02, 0xD0, 0x65, 0xB7, 0xCC, 0x1E, 0xAB, 0x79, + 0x5D, 0x8F, 0x3A, 0xE8, 0x93, 0x41, 0xF4, 0x26, + 0xBC, 0x6E, 0xDB, 0x09, 0x72, 0xA0, 0x15, 0xC7, + 0xE3, 0x31, 0x84, 0x56, 0x2D, 0xFF, 0x4A, 0x98, + 0xB9, 0x6B, 0xDE, 0x0C, 0x77, 0xA5, 0x10, 0xC2, + 0xE6, 0x34, 0x81, 0x53, 0x28, 0xFA, 0x4F, 0x9D, + 0x07, 0xD5, 0x60, 0xB2, 0xC9, 0x1B, 0xAE, 0x7C, + 0x58, 0x8A, 0x3F, 0xED, 0x96, 0x44, 0xF1, 0x23, + 0x06, 0xD4, 0x61, 0xB3, 0xC8, 0x1A, 0xAF, 0x7D, + 0x59, 0x8B, 0x3E, 0xEC, 0x97, 0x45, 0xF0, 0x22, + 0xB8, 0x6A, 0xDF, 0x0D, 0x76, 0xA4, 0x11, 0xC3, + 0xE7, 0x35, 0x80, 0x52, 0x29, 0xFB, 0x4E, 0x9C, + 0x04, 0xD6, 0x63, 0xB1, 0xCA, 0x18, 0xAD, 0x7F, + 0x5B, 0x89, 0x3C, 0xEE, 0x95, 0x47, 0xF2, 0x20, + 0xBA, 0x68, 0xDD, 0x0F, 0x74, 0xA6, 0x13, 0xC1, + 0xE5, 0x37, 0x82, 0x50, 0x2B, 0xF9, 0x4C, 0x9E, + 0xBB, 0x69, 0xDC, 0x0E, 0x75, 0xA7, 0x12, 0xC0, + 0xE4, 0x36, 0x83, 0x51, 0x2A, 0xF8, 0x4D, 0x9F, + 0x05, 0xD7, 0x62, 0xB0, 0xCB, 0x19, 0xAC, 0x7E, + 0x5A, 0x88, 0x3D, 0xEF, 0x94, 0x46, 0xF3, 0x21, + 0x00, 0xD3, 0x65, 0xB6, 0xCA, 0x19, 0xAF, 0x7C, + 0x57, 0x84, 0x32, 0xE1, 0x9D, 0x4E, 0xF8, 0x2B, + 0xAE, 0x7D, 0xCB, 0x18, 0x64, 0xB7, 0x01, 0xD2, + 0xF9, 0x2A, 0x9C, 0x4F, 0x33, 0xE0, 0x56, 0x85, + 0x9F, 0x4C, 0xFA, 0x29, 0x55, 0x86, 0x30, 0xE3, + 0xC8, 0x1B, 0xAD, 0x7E, 0x02, 0xD1, 0x67, 0xB4, + 0x31, 0xE2, 0x54, 0x87, 0xFB, 0x28, 0x9E, 0x4D, + 0x66, 0xB5, 0x03, 0xD0, 0xAC, 0x7F, 0xC9, 0x1A, + 0xFD, 0x2E, 0x98, 0x4B, 0x37, 0xE4, 0x52, 0x81, + 0xAA, 0x79, 0xCF, 0x1C, 0x60, 0xB3, 0x05, 0xD6, + 0x53, 0x80, 0x36, 0xE5, 0x99, 0x4A, 0xFC, 0x2F, + 0x04, 0xD7, 0x61, 0xB2, 0xCE, 0x1D, 0xAB, 0x78, + 0x62, 0xB1, 0x07, 0xD4, 0xA8, 0x7B, 0xCD, 0x1E, + 0x35, 0xE6, 0x50, 0x83, 0xFF, 0x2C, 0x9A, 0x49, + 0xCC, 0x1F, 0xA9, 0x7A, 0x06, 0xD5, 0x63, 0xB0, + 0x9B, 0x48, 0xFE, 0x2D, 0x51, 0x82, 0x34, 0xE7, + 0x39, 0xEA, 0x5C, 0x8F, 0xF3, 0x20, 0x96, 0x45, + 0x6E, 0xBD, 0x0B, 0xD8, 0xA4, 0x77, 0xC1, 0x12, + 0x97, 0x44, 0xF2, 0x21, 0x5D, 0x8E, 0x38, 0xEB, + 0xC0, 0x13, 0xA5, 0x76, 0x0A, 0xD9, 0x6F, 0xBC, + 0xA6, 0x75, 0xC3, 0x10, 0x6C, 0xBF, 0x09, 0xDA, + 0xF1, 0x22, 0x94, 0x47, 0x3B, 0xE8, 0x5E, 0x8D, + 0x08, 0xDB, 0x6D, 0xBE, 0xC2, 0x11, 0xA7, 0x74, + 0x5F, 0x8C, 0x3A, 0xE9, 0x95, 0x46, 0xF0, 0x23, + 0xC4, 0x17, 0xA1, 0x72, 0x0E, 0xDD, 0x6B, 0xB8, + 0x93, 0x40, 0xF6, 0x25, 0x59, 0x8A, 0x3C, 0xEF, + 0x6A, 0xB9, 0x0F, 0xDC, 0xA0, 0x73, 0xC5, 0x16, + 0x3D, 0xEE, 0x58, 0x8B, 0xF7, 0x24, 0x92, 0x41, + 0x5B, 0x88, 0x3E, 0xED, 0x91, 0x42, 0xF4, 0x27, + 0x0C, 0xDF, 0x69, 0xBA, 0xC6, 0x15, 0xA3, 0x70, + 0xF5, 0x26, 0x90, 0x43, 0x3F, 0xEC, 0x5A, 0x89, + 0xA2, 0x71, 0xC7, 0x14, 0x68, 0xBB, 0x0D, 0xDE, + 0x00, 0xD4, 0x6B, 0xBF, 0xD6, 0x02, 0xBD, 0x69, + 0x6F, 0xBB, 0x04, 0xD0, 0xB9, 0x6D, 0xD2, 0x06, + 0xDE, 0x0A, 0xB5, 0x61, 0x08, 0xDC, 0x63, 0xB7, + 0xB1, 0x65, 0xDA, 0x0E, 0x67, 0xB3, 0x0C, 0xD8, + 0x7F, 0xAB, 0x14, 0xC0, 0xA9, 0x7D, 0xC2, 0x16, + 0x10, 0xC4, 0x7B, 0xAF, 0xC6, 0x12, 0xAD, 0x79, + 0xA1, 0x75, 0xCA, 0x1E, 0x77, 0xA3, 0x1C, 0xC8, + 0xCE, 0x1A, 0xA5, 0x71, 0x18, 0xCC, 0x73, 0xA7, + 0xFE, 0x2A, 0x95, 0x41, 0x28, 0xFC, 0x43, 0x97, + 0x91, 0x45, 0xFA, 0x2E, 0x47, 0x93, 0x2C, 0xF8, + 0x20, 0xF4, 0x4B, 0x9F, 0xF6, 0x22, 0x9D, 0x49, + 0x4F, 0x9B, 0x24, 0xF0, 0x99, 0x4D, 0xF2, 0x26, + 0x81, 0x55, 0xEA, 0x3E, 0x57, 0x83, 0x3C, 0xE8, + 0xEE, 0x3A, 0x85, 0x51, 0x38, 0xEC, 0x53, 0x87, + 0x5F, 0x8B, 0x34, 0xE0, 0x89, 0x5D, 0xE2, 0x36, + 0x30, 0xE4, 0x5B, 0x8F, 0xE6, 0x32, 0x8D, 0x59, + 0x3F, 0xEB, 0x54, 0x80, 0xE9, 0x3D, 0x82, 0x56, + 0x50, 0x84, 0x3B, 0xEF, 0x86, 0x52, 0xED, 0x39, + 0xE1, 0x35, 0x8A, 0x5E, 0x37, 0xE3, 0x5C, 0x88, + 0x8E, 0x5A, 0xE5, 0x31, 0x58, 0x8C, 0x33, 0xE7, + 0x40, 0x94, 0x2B, 0xFF, 0x96, 0x42, 0xFD, 0x29, + 0x2F, 0xFB, 0x44, 0x90, 0xF9, 0x2D, 0x92, 0x46, + 0x9E, 0x4A, 0xF5, 0x21, 0x48, 0x9C, 0x23, 0xF7, + 0xF1, 0x25, 0x9A, 0x4E, 0x27, 0xF3, 0x4C, 0x98, + 0xC1, 0x15, 0xAA, 0x7E, 0x17, 0xC3, 0x7C, 0xA8, + 0xAE, 0x7A, 0xC5, 0x11, 0x78, 0xAC, 0x13, 0xC7, + 0x1F, 0xCB, 0x74, 0xA0, 0xC9, 0x1D, 0xA2, 0x76, + 0x70, 0xA4, 0x1B, 0xCF, 0xA6, 0x72, 0xCD, 0x19, + 0xBE, 0x6A, 0xD5, 0x01, 0x68, 0xBC, 0x03, 0xD7, + 0xD1, 0x05, 0xBA, 0x6E, 0x07, 0xD3, 0x6C, 0xB8, + 0x60, 0xB4, 0x0B, 0xDF, 0xB6, 0x62, 0xDD, 0x09, + 0x0F, 0xDB, 0x64, 0xB0, 0xD9, 0x0D, 0xB2, 0x66, + 0x00, 0xD5, 0x69, 0xBC, 0xD2, 0x07, 0xBB, 0x6E, + 0x67, 0xB2, 0x0E, 0xDB, 0xB5, 0x60, 0xDC, 0x09, + 0xCE, 0x1B, 0xA7, 0x72, 0x1C, 0xC9, 0x75, 0xA0, + 0xA9, 0x7C, 0xC0, 0x15, 0x7B, 0xAE, 0x12, 0xC7, + 0x5F, 0x8A, 0x36, 0xE3, 0x8D, 0x58, 0xE4, 0x31, + 0x38, 0xED, 0x51, 0x84, 0xEA, 0x3F, 0x83, 0x56, + 0x91, 0x44, 0xF8, 0x2D, 0x43, 0x96, 0x2A, 0xFF, + 0xF6, 0x23, 0x9F, 0x4A, 0x24, 0xF1, 0x4D, 0x98, + 0xBE, 0x6B, 0xD7, 0x02, 0x6C, 0xB9, 0x05, 0xD0, + 0xD9, 0x0C, 0xB0, 0x65, 0x0B, 0xDE, 0x62, 0xB7, + 0x70, 0xA5, 0x19, 0xCC, 0xA2, 0x77, 0xCB, 0x1E, + 0x17, 0xC2, 0x7E, 0xAB, 0xC5, 0x10, 0xAC, 0x79, + 0xE1, 0x34, 0x88, 0x5D, 0x33, 0xE6, 0x5A, 0x8F, + 0x86, 0x53, 0xEF, 0x3A, 0x54, 0x81, 0x3D, 0xE8, + 0x2F, 0xFA, 0x46, 0x93, 0xFD, 0x28, 0x94, 0x41, + 0x48, 0x9D, 0x21, 0xF4, 0x9A, 0x4F, 0xF3, 0x26, + 0xBF, 0x6A, 0xD6, 0x03, 0x6D, 0xB8, 0x04, 0xD1, + 0xD8, 0x0D, 0xB1, 0x64, 0x0A, 0xDF, 0x63, 0xB6, + 0x71, 0xA4, 0x18, 0xCD, 0xA3, 0x76, 0xCA, 0x1F, + 0x16, 0xC3, 0x7F, 0xAA, 0xC4, 0x11, 0xAD, 0x78, + 0xE0, 0x35, 0x89, 0x5C, 0x32, 0xE7, 0x5B, 0x8E, + 0x87, 0x52, 0xEE, 0x3B, 0x55, 0x80, 0x3C, 0xE9, + 0x2E, 0xFB, 0x47, 0x92, 0xFC, 0x29, 0x95, 0x40, + 0x49, 0x9C, 0x20, 0xF5, 0x9B, 0x4E, 0xF2, 0x27, + 0x01, 0xD4, 0x68, 0xBD, 0xD3, 0x06, 0xBA, 0x6F, + 0x66, 0xB3, 0x0F, 0xDA, 0xB4, 0x61, 0xDD, 0x08, + 0xCF, 0x1A, 0xA6, 0x73, 0x1D, 0xC8, 0x74, 0xA1, + 0xA8, 0x7D, 0xC1, 0x14, 0x7A, 0xAF, 0x13, 0xC6, + 0x5E, 0x8B, 0x37, 0xE2, 0x8C, 0x59, 0xE5, 0x30, + 0x39, 0xEC, 0x50, 0x85, 0xEB, 0x3E, 0x82, 0x57, + 0x90, 0x45, 0xF9, 0x2C, 0x42, 0x97, 0x2B, 0xFE, + 0xF7, 0x22, 0x9E, 0x4B, 0x25, 0xF0, 0x4C, 0x99, + 0x00, 0xD6, 0x6F, 0xB9, 0xDE, 0x08, 0xB1, 0x67, + 0x7F, 0xA9, 0x10, 0xC6, 0xA1, 0x77, 0xCE, 0x18, + 0xFE, 0x28, 0x91, 0x47, 0x20, 0xF6, 0x4F, 0x99, + 0x81, 0x57, 0xEE, 0x38, 0x5F, 0x89, 0x30, 0xE6, + 0x3F, 0xE9, 0x50, 0x86, 0xE1, 0x37, 0x8E, 0x58, + 0x40, 0x96, 0x2F, 0xF9, 0x9E, 0x48, 0xF1, 0x27, + 0xC1, 0x17, 0xAE, 0x78, 0x1F, 0xC9, 0x70, 0xA6, + 0xBE, 0x68, 0xD1, 0x07, 0x60, 0xB6, 0x0F, 0xD9, + 0x7E, 0xA8, 0x11, 0xC7, 0xA0, 0x76, 0xCF, 0x19, + 0x01, 0xD7, 0x6E, 0xB8, 0xDF, 0x09, 0xB0, 0x66, + 0x80, 0x56, 0xEF, 0x39, 0x5E, 0x88, 0x31, 0xE7, + 0xFF, 0x29, 0x90, 0x46, 0x21, 0xF7, 0x4E, 0x98, + 0x41, 0x97, 0x2E, 0xF8, 0x9F, 0x49, 0xF0, 0x26, + 0x3E, 0xE8, 0x51, 0x87, 0xE0, 0x36, 0x8F, 0x59, + 0xBF, 0x69, 0xD0, 0x06, 0x61, 0xB7, 0x0E, 0xD8, + 0xC0, 0x16, 0xAF, 0x79, 0x1E, 0xC8, 0x71, 0xA7, + 0xFC, 0x2A, 0x93, 0x45, 0x22, 0xF4, 0x4D, 0x9B, + 0x83, 0x55, 0xEC, 0x3A, 0x5D, 0x8B, 0x32, 0xE4, + 0x02, 0xD4, 0x6D, 0xBB, 0xDC, 0x0A, 0xB3, 0x65, + 0x7D, 0xAB, 0x12, 0xC4, 0xA3, 0x75, 0xCC, 0x1A, + 0xC3, 0x15, 0xAC, 0x7A, 0x1D, 0xCB, 0x72, 0xA4, + 0xBC, 0x6A, 0xD3, 0x05, 0x62, 0xB4, 0x0D, 0xDB, + 0x3D, 0xEB, 0x52, 0x84, 0xE3, 0x35, 0x8C, 0x5A, + 0x42, 0x94, 0x2D, 0xFB, 0x9C, 0x4A, 0xF3, 0x25, + 0x82, 0x54, 0xED, 0x3B, 0x5C, 0x8A, 0x33, 0xE5, + 0xFD, 0x2B, 0x92, 0x44, 0x23, 0xF5, 0x4C, 0x9A, + 0x7C, 0xAA, 0x13, 0xC5, 0xA2, 0x74, 0xCD, 0x1B, + 0x03, 0xD5, 0x6C, 0xBA, 0xDD, 0x0B, 0xB2, 0x64, + 0xBD, 0x6B, 0xD2, 0x04, 0x63, 0xB5, 0x0C, 0xDA, + 0xC2, 0x14, 0xAD, 0x7B, 0x1C, 0xCA, 0x73, 0xA5, + 0x43, 0x95, 0x2C, 0xFA, 0x9D, 0x4B, 0xF2, 0x24, + 0x3C, 0xEA, 0x53, 0x85, 0xE2, 0x34, 0x8D, 0x5B, + 0x00, 0xD7, 0x6D, 0xBA, 0xDA, 0x0D, 0xB7, 0x60, + 0x77, 0xA0, 0x1A, 0xCD, 0xAD, 0x7A, 0xC0, 0x17, + 0xEE, 0x39, 0x83, 0x54, 0x34, 0xE3, 0x59, 0x8E, + 0x99, 0x4E, 0xF4, 0x23, 0x43, 0x94, 0x2E, 0xF9, + 0x1F, 0xC8, 0x72, 0xA5, 0xC5, 0x12, 0xA8, 0x7F, + 0x68, 0xBF, 0x05, 0xD2, 0xB2, 0x65, 0xDF, 0x08, + 0xF1, 0x26, 0x9C, 0x4B, 0x2B, 0xFC, 0x46, 0x91, + 0x86, 0x51, 0xEB, 0x3C, 0x5C, 0x8B, 0x31, 0xE6, + 0x3E, 0xE9, 0x53, 0x84, 0xE4, 0x33, 0x89, 0x5E, + 0x49, 0x9E, 0x24, 0xF3, 0x93, 0x44, 0xFE, 0x29, + 0xD0, 0x07, 0xBD, 0x6A, 0x0A, 0xDD, 0x67, 0xB0, + 0xA7, 0x70, 0xCA, 0x1D, 0x7D, 0xAA, 0x10, 0xC7, + 0x21, 0xF6, 0x4C, 0x9B, 0xFB, 0x2C, 0x96, 0x41, + 0x56, 0x81, 0x3B, 0xEC, 0x8C, 0x5B, 0xE1, 0x36, + 0xCF, 0x18, 0xA2, 0x75, 0x15, 0xC2, 0x78, 0xAF, + 0xB8, 0x6F, 0xD5, 0x02, 0x62, 0xB5, 0x0F, 0xD8, + 0x7C, 0xAB, 0x11, 0xC6, 0xA6, 0x71, 0xCB, 0x1C, + 0x0B, 0xDC, 0x66, 0xB1, 0xD1, 0x06, 0xBC, 0x6B, + 0x92, 0x45, 0xFF, 0x28, 0x48, 0x9F, 0x25, 0xF2, + 0xE5, 0x32, 0x88, 0x5F, 0x3F, 0xE8, 0x52, 0x85, + 0x63, 0xB4, 0x0E, 0xD9, 0xB9, 0x6E, 0xD4, 0x03, + 0x14, 0xC3, 0x79, 0xAE, 0xCE, 0x19, 0xA3, 0x74, + 0x8D, 0x5A, 0xE0, 0x37, 0x57, 0x80, 0x3A, 0xED, + 0xFA, 0x2D, 0x97, 0x40, 0x20, 0xF7, 0x4D, 0x9A, + 0x42, 0x95, 0x2F, 0xF8, 0x98, 0x4F, 0xF5, 0x22, + 0x35, 0xE2, 0x58, 0x8F, 0xEF, 0x38, 0x82, 0x55, + 0xAC, 0x7B, 0xC1, 0x16, 0x76, 0xA1, 0x1B, 0xCC, + 0xDB, 0x0C, 0xB6, 0x61, 0x01, 0xD6, 0x6C, 0xBB, + 0x5D, 0x8A, 0x30, 0xE7, 0x87, 0x50, 0xEA, 0x3D, + 0x2A, 0xFD, 0x47, 0x90, 0xF0, 0x27, 0x9D, 0x4A, + 0xB3, 0x64, 0xDE, 0x09, 0x69, 0xBE, 0x04, 0xD3, + 0xC4, 0x13, 0xA9, 0x7E, 0x1E, 0xC9, 0x73, 0xA4, + 0x00, 0xD8, 0x73, 0xAB, 0xE6, 0x3E, 0x95, 0x4D, + 0x0F, 0xD7, 0x7C, 0xA4, 0xE9, 0x31, 0x9A, 0x42, + 0x1E, 0xC6, 0x6D, 0xB5, 0xF8, 0x20, 0x8B, 0x53, + 0x11, 0xC9, 0x62, 0xBA, 0xF7, 0x2F, 0x84, 0x5C, + 0x3C, 0xE4, 0x4F, 0x97, 0xDA, 0x02, 0xA9, 0x71, + 0x33, 0xEB, 0x40, 0x98, 0xD5, 0x0D, 0xA6, 0x7E, + 0x22, 0xFA, 0x51, 0x89, 0xC4, 0x1C, 0xB7, 0x6F, + 0x2D, 0xF5, 0x5E, 0x86, 0xCB, 0x13, 0xB8, 0x60, + 0x78, 0xA0, 0x0B, 0xD3, 0x9E, 0x46, 0xED, 0x35, + 0x77, 0xAF, 0x04, 0xDC, 0x91, 0x49, 0xE2, 0x3A, + 0x66, 0xBE, 0x15, 0xCD, 0x80, 0x58, 0xF3, 0x2B, + 0x69, 0xB1, 0x1A, 0xC2, 0x8F, 0x57, 0xFC, 0x24, + 0x44, 0x9C, 0x37, 0xEF, 0xA2, 0x7A, 0xD1, 0x09, + 0x4B, 0x93, 0x38, 0xE0, 0xAD, 0x75, 0xDE, 0x06, + 0x5A, 0x82, 0x29, 0xF1, 0xBC, 0x64, 0xCF, 0x17, + 0x55, 0x8D, 0x26, 0xFE, 0xB3, 0x6B, 0xC0, 0x18, + 0xF0, 0x28, 0x83, 0x5B, 0x16, 0xCE, 0x65, 0xBD, + 0xFF, 0x27, 0x8C, 0x54, 0x19, 0xC1, 0x6A, 0xB2, + 0xEE, 0x36, 0x9D, 0x45, 0x08, 0xD0, 0x7B, 0xA3, + 0xE1, 0x39, 0x92, 0x4A, 0x07, 0xDF, 0x74, 0xAC, + 0xCC, 0x14, 0xBF, 0x67, 0x2A, 0xF2, 0x59, 0x81, + 0xC3, 0x1B, 0xB0, 0x68, 0x25, 0xFD, 0x56, 0x8E, + 0xD2, 0x0A, 0xA1, 0x79, 0x34, 0xEC, 0x47, 0x9F, + 0xDD, 0x05, 0xAE, 0x76, 0x3B, 0xE3, 0x48, 0x90, + 0x88, 0x50, 0xFB, 0x23, 0x6E, 0xB6, 0x1D, 0xC5, + 0x87, 0x5F, 0xF4, 0x2C, 0x61, 0xB9, 0x12, 0xCA, + 0x96, 0x4E, 0xE5, 0x3D, 0x70, 0xA8, 0x03, 0xDB, + 0x99, 0x41, 0xEA, 0x32, 0x7F, 0xA7, 0x0C, 0xD4, + 0xB4, 0x6C, 0xC7, 0x1F, 0x52, 0x8A, 0x21, 0xF9, + 0xBB, 0x63, 0xC8, 0x10, 0x5D, 0x85, 0x2E, 0xF6, + 0xAA, 0x72, 0xD9, 0x01, 0x4C, 0x94, 0x3F, 0xE7, + 0xA5, 0x7D, 0xD6, 0x0E, 0x43, 0x9B, 0x30, 0xE8, + 0x00, 0xD9, 0x71, 0xA8, 0xE2, 0x3B, 0x93, 0x4A, + 0x07, 0xDE, 0x76, 0xAF, 0xE5, 0x3C, 0x94, 0x4D, + 0x0E, 0xD7, 0x7F, 0xA6, 0xEC, 0x35, 0x9D, 0x44, + 0x09, 0xD0, 0x78, 0xA1, 0xEB, 0x32, 0x9A, 0x43, + 0x1C, 0xC5, 0x6D, 0xB4, 0xFE, 0x27, 0x8F, 0x56, + 0x1B, 0xC2, 0x6A, 0xB3, 0xF9, 0x20, 0x88, 0x51, + 0x12, 0xCB, 0x63, 0xBA, 0xF0, 0x29, 0x81, 0x58, + 0x15, 0xCC, 0x64, 0xBD, 0xF7, 0x2E, 0x86, 0x5F, + 0x38, 0xE1, 0x49, 0x90, 0xDA, 0x03, 0xAB, 0x72, + 0x3F, 0xE6, 0x4E, 0x97, 0xDD, 0x04, 0xAC, 0x75, + 0x36, 0xEF, 0x47, 0x9E, 0xD4, 0x0D, 0xA5, 0x7C, + 0x31, 0xE8, 0x40, 0x99, 0xD3, 0x0A, 0xA2, 0x7B, + 0x24, 0xFD, 0x55, 0x8C, 0xC6, 0x1F, 0xB7, 0x6E, + 0x23, 0xFA, 0x52, 0x8B, 0xC1, 0x18, 0xB0, 0x69, + 0x2A, 0xF3, 0x5B, 0x82, 0xC8, 0x11, 0xB9, 0x60, + 0x2D, 0xF4, 0x5C, 0x85, 0xCF, 0x16, 0xBE, 0x67, + 0x70, 0xA9, 0x01, 0xD8, 0x92, 0x4B, 0xE3, 0x3A, + 0x77, 0xAE, 0x06, 0xDF, 0x95, 0x4C, 0xE4, 0x3D, + 0x7E, 0xA7, 0x0F, 0xD6, 0x9C, 0x45, 0xED, 0x34, + 0x79, 0xA0, 0x08, 0xD1, 0x9B, 0x42, 0xEA, 0x33, + 0x6C, 0xB5, 0x1D, 0xC4, 0x8E, 0x57, 0xFF, 0x26, + 0x6B, 0xB2, 0x1A, 0xC3, 0x89, 0x50, 0xF8, 0x21, + 0x62, 0xBB, 0x13, 0xCA, 0x80, 0x59, 0xF1, 0x28, + 0x65, 0xBC, 0x14, 0xCD, 0x87, 0x5E, 0xF6, 0x2F, + 0x48, 0x91, 0x39, 0xE0, 0xAA, 0x73, 0xDB, 0x02, + 0x4F, 0x96, 0x3E, 0xE7, 0xAD, 0x74, 0xDC, 0x05, + 0x46, 0x9F, 0x37, 0xEE, 0xA4, 0x7D, 0xD5, 0x0C, + 0x41, 0x98, 0x30, 0xE9, 0xA3, 0x7A, 0xD2, 0x0B, + 0x54, 0x8D, 0x25, 0xFC, 0xB6, 0x6F, 0xC7, 0x1E, + 0x53, 0x8A, 0x22, 0xFB, 0xB1, 0x68, 0xC0, 0x19, + 0x5A, 0x83, 0x2B, 0xF2, 0xB8, 0x61, 0xC9, 0x10, + 0x5D, 0x84, 0x2C, 0xF5, 0xBF, 0x66, 0xCE, 0x17, + 0x00, 0xDA, 0x77, 0xAD, 0xEE, 0x34, 0x99, 0x43, + 0x1F, 0xC5, 0x68, 0xB2, 0xF1, 0x2B, 0x86, 0x5C, + 0x3E, 0xE4, 0x49, 0x93, 0xD0, 0x0A, 0xA7, 0x7D, + 0x21, 0xFB, 0x56, 0x8C, 0xCF, 0x15, 0xB8, 0x62, + 0x7C, 0xA6, 0x0B, 0xD1, 0x92, 0x48, 0xE5, 0x3F, + 0x63, 0xB9, 0x14, 0xCE, 0x8D, 0x57, 0xFA, 0x20, + 0x42, 0x98, 0x35, 0xEF, 0xAC, 0x76, 0xDB, 0x01, + 0x5D, 0x87, 0x2A, 0xF0, 0xB3, 0x69, 0xC4, 0x1E, + 0xF8, 0x22, 0x8F, 0x55, 0x16, 0xCC, 0x61, 0xBB, + 0xE7, 0x3D, 0x90, 0x4A, 0x09, 0xD3, 0x7E, 0xA4, + 0xC6, 0x1C, 0xB1, 0x6B, 0x28, 0xF2, 0x5F, 0x85, + 0xD9, 0x03, 0xAE, 0x74, 0x37, 0xED, 0x40, 0x9A, + 0x84, 0x5E, 0xF3, 0x29, 0x6A, 0xB0, 0x1D, 0xC7, + 0x9B, 0x41, 0xEC, 0x36, 0x75, 0xAF, 0x02, 0xD8, + 0xBA, 0x60, 0xCD, 0x17, 0x54, 0x8E, 0x23, 0xF9, + 0xA5, 0x7F, 0xD2, 0x08, 0x4B, 0x91, 0x3C, 0xE6, + 0x33, 0xE9, 0x44, 0x9E, 0xDD, 0x07, 0xAA, 0x70, + 0x2C, 0xF6, 0x5B, 0x81, 0xC2, 0x18, 0xB5, 0x6F, + 0x0D, 0xD7, 0x7A, 0xA0, 0xE3, 0x39, 0x94, 0x4E, + 0x12, 0xC8, 0x65, 0xBF, 0xFC, 0x26, 0x8B, 0x51, + 0x4F, 0x95, 0x38, 0xE2, 0xA1, 0x7B, 0xD6, 0x0C, + 0x50, 0x8A, 0x27, 0xFD, 0xBE, 0x64, 0xC9, 0x13, + 0x71, 0xAB, 0x06, 0xDC, 0x9F, 0x45, 0xE8, 0x32, + 0x6E, 0xB4, 0x19, 0xC3, 0x80, 0x5A, 0xF7, 0x2D, + 0xCB, 0x11, 0xBC, 0x66, 0x25, 0xFF, 0x52, 0x88, + 0xD4, 0x0E, 0xA3, 0x79, 0x3A, 0xE0, 0x4D, 0x97, + 0xF5, 0x2F, 0x82, 0x58, 0x1B, 0xC1, 0x6C, 0xB6, + 0xEA, 0x30, 0x9D, 0x47, 0x04, 0xDE, 0x73, 0xA9, + 0xB7, 0x6D, 0xC0, 0x1A, 0x59, 0x83, 0x2E, 0xF4, + 0xA8, 0x72, 0xDF, 0x05, 0x46, 0x9C, 0x31, 0xEB, + 0x89, 0x53, 0xFE, 0x24, 0x67, 0xBD, 0x10, 0xCA, + 0x96, 0x4C, 0xE1, 0x3B, 0x78, 0xA2, 0x0F, 0xD5, + 0x00, 0xDB, 0x75, 0xAE, 0xEA, 0x31, 0x9F, 0x44, + 0x17, 0xCC, 0x62, 0xB9, 0xFD, 0x26, 0x88, 0x53, + 0x2E, 0xF5, 0x5B, 0x80, 0xC4, 0x1F, 0xB1, 0x6A, + 0x39, 0xE2, 0x4C, 0x97, 0xD3, 0x08, 0xA6, 0x7D, + 0x5C, 0x87, 0x29, 0xF2, 0xB6, 0x6D, 0xC3, 0x18, + 0x4B, 0x90, 0x3E, 0xE5, 0xA1, 0x7A, 0xD4, 0x0F, + 0x72, 0xA9, 0x07, 0xDC, 0x98, 0x43, 0xED, 0x36, + 0x65, 0xBE, 0x10, 0xCB, 0x8F, 0x54, 0xFA, 0x21, + 0xB8, 0x63, 0xCD, 0x16, 0x52, 0x89, 0x27, 0xFC, + 0xAF, 0x74, 0xDA, 0x01, 0x45, 0x9E, 0x30, 0xEB, + 0x96, 0x4D, 0xE3, 0x38, 0x7C, 0xA7, 0x09, 0xD2, + 0x81, 0x5A, 0xF4, 0x2F, 0x6B, 0xB0, 0x1E, 0xC5, + 0xE4, 0x3F, 0x91, 0x4A, 0x0E, 0xD5, 0x7B, 0xA0, + 0xF3, 0x28, 0x86, 0x5D, 0x19, 0xC2, 0x6C, 0xB7, + 0xCA, 0x11, 0xBF, 0x64, 0x20, 0xFB, 0x55, 0x8E, + 0xDD, 0x06, 0xA8, 0x73, 0x37, 0xEC, 0x42, 0x99, + 0xB3, 0x68, 0xC6, 0x1D, 0x59, 0x82, 0x2C, 0xF7, + 0xA4, 0x7F, 0xD1, 0x0A, 0x4E, 0x95, 0x3B, 0xE0, + 0x9D, 0x46, 0xE8, 0x33, 0x77, 0xAC, 0x02, 0xD9, + 0x8A, 0x51, 0xFF, 0x24, 0x60, 0xBB, 0x15, 0xCE, + 0xEF, 0x34, 0x9A, 0x41, 0x05, 0xDE, 0x70, 0xAB, + 0xF8, 0x23, 0x8D, 0x56, 0x12, 0xC9, 0x67, 0xBC, + 0xC1, 0x1A, 0xB4, 0x6F, 0x2B, 0xF0, 0x5E, 0x85, + 0xD6, 0x0D, 0xA3, 0x78, 0x3C, 0xE7, 0x49, 0x92, + 0x0B, 0xD0, 0x7E, 0xA5, 0xE1, 0x3A, 0x94, 0x4F, + 0x1C, 0xC7, 0x69, 0xB2, 0xF6, 0x2D, 0x83, 0x58, + 0x25, 0xFE, 0x50, 0x8B, 0xCF, 0x14, 0xBA, 0x61, + 0x32, 0xE9, 0x47, 0x9C, 0xD8, 0x03, 0xAD, 0x76, + 0x57, 0x8C, 0x22, 0xF9, 0xBD, 0x66, 0xC8, 0x13, + 0x40, 0x9B, 0x35, 0xEE, 0xAA, 0x71, 0xDF, 0x04, + 0x79, 0xA2, 0x0C, 0xD7, 0x93, 0x48, 0xE6, 0x3D, + 0x6E, 0xB5, 0x1B, 0xC0, 0x84, 0x5F, 0xF1, 0x2A, + 0x00, 0xDC, 0x7B, 0xA7, 0xF6, 0x2A, 0x8D, 0x51, + 0x2F, 0xF3, 0x54, 0x88, 0xD9, 0x05, 0xA2, 0x7E, + 0x5E, 0x82, 0x25, 0xF9, 0xA8, 0x74, 0xD3, 0x0F, + 0x71, 0xAD, 0x0A, 0xD6, 0x87, 0x5B, 0xFC, 0x20, + 0xBC, 0x60, 0xC7, 0x1B, 0x4A, 0x96, 0x31, 0xED, + 0x93, 0x4F, 0xE8, 0x34, 0x65, 0xB9, 0x1E, 0xC2, + 0xE2, 0x3E, 0x99, 0x45, 0x14, 0xC8, 0x6F, 0xB3, + 0xCD, 0x11, 0xB6, 0x6A, 0x3B, 0xE7, 0x40, 0x9C, + 0xBB, 0x67, 0xC0, 0x1C, 0x4D, 0x91, 0x36, 0xEA, + 0x94, 0x48, 0xEF, 0x33, 0x62, 0xBE, 0x19, 0xC5, + 0xE5, 0x39, 0x9E, 0x42, 0x13, 0xCF, 0x68, 0xB4, + 0xCA, 0x16, 0xB1, 0x6D, 0x3C, 0xE0, 0x47, 0x9B, + 0x07, 0xDB, 0x7C, 0xA0, 0xF1, 0x2D, 0x8A, 0x56, + 0x28, 0xF4, 0x53, 0x8F, 0xDE, 0x02, 0xA5, 0x79, + 0x59, 0x85, 0x22, 0xFE, 0xAF, 0x73, 0xD4, 0x08, + 0x76, 0xAA, 0x0D, 0xD1, 0x80, 0x5C, 0xFB, 0x27, + 0xB5, 0x69, 0xCE, 0x12, 0x43, 0x9F, 0x38, 0xE4, + 0x9A, 0x46, 0xE1, 0x3D, 0x6C, 0xB0, 0x17, 0xCB, + 0xEB, 0x37, 0x90, 0x4C, 0x1D, 0xC1, 0x66, 0xBA, + 0xC4, 0x18, 0xBF, 0x63, 0x32, 0xEE, 0x49, 0x95, + 0x09, 0xD5, 0x72, 0xAE, 0xFF, 0x23, 0x84, 0x58, + 0x26, 0xFA, 0x5D, 0x81, 0xD0, 0x0C, 0xAB, 0x77, + 0x57, 0x8B, 0x2C, 0xF0, 0xA1, 0x7D, 0xDA, 0x06, + 0x78, 0xA4, 0x03, 0xDF, 0x8E, 0x52, 0xF5, 0x29, + 0x0E, 0xD2, 0x75, 0xA9, 0xF8, 0x24, 0x83, 0x5F, + 0x21, 0xFD, 0x5A, 0x86, 0xD7, 0x0B, 0xAC, 0x70, + 0x50, 0x8C, 0x2B, 0xF7, 0xA6, 0x7A, 0xDD, 0x01, + 0x7F, 0xA3, 0x04, 0xD8, 0x89, 0x55, 0xF2, 0x2E, + 0xB2, 0x6E, 0xC9, 0x15, 0x44, 0x98, 0x3F, 0xE3, + 0x9D, 0x41, 0xE6, 0x3A, 0x6B, 0xB7, 0x10, 0xCC, + 0xEC, 0x30, 0x97, 0x4B, 0x1A, 0xC6, 0x61, 0xBD, + 0xC3, 0x1F, 0xB8, 0x64, 0x35, 0xE9, 0x4E, 0x92, + 0x00, 0xDD, 0x79, 0xA4, 0xF2, 0x2F, 0x8B, 0x56, + 0x27, 0xFA, 0x5E, 0x83, 0xD5, 0x08, 0xAC, 0x71, + 0x4E, 0x93, 0x37, 0xEA, 0xBC, 0x61, 0xC5, 0x18, + 0x69, 0xB4, 0x10, 0xCD, 0x9B, 0x46, 0xE2, 0x3F, + 0x9C, 0x41, 0xE5, 0x38, 0x6E, 0xB3, 0x17, 0xCA, + 0xBB, 0x66, 0xC2, 0x1F, 0x49, 0x94, 0x30, 0xED, + 0xD2, 0x0F, 0xAB, 0x76, 0x20, 0xFD, 0x59, 0x84, + 0xF5, 0x28, 0x8C, 0x51, 0x07, 0xDA, 0x7E, 0xA3, + 0xFB, 0x26, 0x82, 0x5F, 0x09, 0xD4, 0x70, 0xAD, + 0xDC, 0x01, 0xA5, 0x78, 0x2E, 0xF3, 0x57, 0x8A, + 0xB5, 0x68, 0xCC, 0x11, 0x47, 0x9A, 0x3E, 0xE3, + 0x92, 0x4F, 0xEB, 0x36, 0x60, 0xBD, 0x19, 0xC4, + 0x67, 0xBA, 0x1E, 0xC3, 0x95, 0x48, 0xEC, 0x31, + 0x40, 0x9D, 0x39, 0xE4, 0xB2, 0x6F, 0xCB, 0x16, + 0x29, 0xF4, 0x50, 0x8D, 0xDB, 0x06, 0xA2, 0x7F, + 0x0E, 0xD3, 0x77, 0xAA, 0xFC, 0x21, 0x85, 0x58, + 0x35, 0xE8, 0x4C, 0x91, 0xC7, 0x1A, 0xBE, 0x63, + 0x12, 0xCF, 0x6B, 0xB6, 0xE0, 0x3D, 0x99, 0x44, + 0x7B, 0xA6, 0x02, 0xDF, 0x89, 0x54, 0xF0, 0x2D, + 0x5C, 0x81, 0x25, 0xF8, 0xAE, 0x73, 0xD7, 0x0A, + 0xA9, 0x74, 0xD0, 0x0D, 0x5B, 0x86, 0x22, 0xFF, + 0x8E, 0x53, 0xF7, 0x2A, 0x7C, 0xA1, 0x05, 0xD8, + 0xE7, 0x3A, 0x9E, 0x43, 0x15, 0xC8, 0x6C, 0xB1, + 0xC0, 0x1D, 0xB9, 0x64, 0x32, 0xEF, 0x4B, 0x96, + 0xCE, 0x13, 0xB7, 0x6A, 0x3C, 0xE1, 0x45, 0x98, + 0xE9, 0x34, 0x90, 0x4D, 0x1B, 0xC6, 0x62, 0xBF, + 0x80, 0x5D, 0xF9, 0x24, 0x72, 0xAF, 0x0B, 0xD6, + 0xA7, 0x7A, 0xDE, 0x03, 0x55, 0x88, 0x2C, 0xF1, + 0x52, 0x8F, 0x2B, 0xF6, 0xA0, 0x7D, 0xD9, 0x04, + 0x75, 0xA8, 0x0C, 0xD1, 0x87, 0x5A, 0xFE, 0x23, + 0x1C, 0xC1, 0x65, 0xB8, 0xEE, 0x33, 0x97, 0x4A, + 0x3B, 0xE6, 0x42, 0x9F, 0xC9, 0x14, 0xB0, 0x6D, + 0x00, 0xDE, 0x7F, 0xA1, 0xFE, 0x20, 0x81, 0x5F, + 0x3F, 0xE1, 0x40, 0x9E, 0xC1, 0x1F, 0xBE, 0x60, + 0x7E, 0xA0, 0x01, 0xDF, 0x80, 0x5E, 0xFF, 0x21, + 0x41, 0x9F, 0x3E, 0xE0, 0xBF, 0x61, 0xC0, 0x1E, + 0xFC, 0x22, 0x83, 0x5D, 0x02, 0xDC, 0x7D, 0xA3, + 0xC3, 0x1D, 0xBC, 0x62, 0x3D, 0xE3, 0x42, 0x9C, + 0x82, 0x5C, 0xFD, 0x23, 0x7C, 0xA2, 0x03, 0xDD, + 0xBD, 0x63, 0xC2, 0x1C, 0x43, 0x9D, 0x3C, 0xE2, + 0x3B, 0xE5, 0x44, 0x9A, 0xC5, 0x1B, 0xBA, 0x64, + 0x04, 0xDA, 0x7B, 0xA5, 0xFA, 0x24, 0x85, 0x5B, + 0x45, 0x9B, 0x3A, 0xE4, 0xBB, 0x65, 0xC4, 0x1A, + 0x7A, 0xA4, 0x05, 0xDB, 0x84, 0x5A, 0xFB, 0x25, + 0xC7, 0x19, 0xB8, 0x66, 0x39, 0xE7, 0x46, 0x98, + 0xF8, 0x26, 0x87, 0x59, 0x06, 0xD8, 0x79, 0xA7, + 0xB9, 0x67, 0xC6, 0x18, 0x47, 0x99, 0x38, 0xE6, + 0x86, 0x58, 0xF9, 0x27, 0x78, 0xA6, 0x07, 0xD9, + 0x76, 0xA8, 0x09, 0xD7, 0x88, 0x56, 0xF7, 0x29, + 0x49, 0x97, 0x36, 0xE8, 0xB7, 0x69, 0xC8, 0x16, + 0x08, 0xD6, 0x77, 0xA9, 0xF6, 0x28, 0x89, 0x57, + 0x37, 0xE9, 0x48, 0x96, 0xC9, 0x17, 0xB6, 0x68, + 0x8A, 0x54, 0xF5, 0x2B, 0x74, 0xAA, 0x0B, 0xD5, + 0xB5, 0x6B, 0xCA, 0x14, 0x4B, 0x95, 0x34, 0xEA, + 0xF4, 0x2A, 0x8B, 0x55, 0x0A, 0xD4, 0x75, 0xAB, + 0xCB, 0x15, 0xB4, 0x6A, 0x35, 0xEB, 0x4A, 0x94, + 0x4D, 0x93, 0x32, 0xEC, 0xB3, 0x6D, 0xCC, 0x12, + 0x72, 0xAC, 0x0D, 0xD3, 0x8C, 0x52, 0xF3, 0x2D, + 0x33, 0xED, 0x4C, 0x92, 0xCD, 0x13, 0xB2, 0x6C, + 0x0C, 0xD2, 0x73, 0xAD, 0xF2, 0x2C, 0x8D, 0x53, + 0xB1, 0x6F, 0xCE, 0x10, 0x4F, 0x91, 0x30, 0xEE, + 0x8E, 0x50, 0xF1, 0x2F, 0x70, 0xAE, 0x0F, 0xD1, + 0xCF, 0x11, 0xB0, 0x6E, 0x31, 0xEF, 0x4E, 0x90, + 0xF0, 0x2E, 0x8F, 0x51, 0x0E, 0xD0, 0x71, 0xAF, + 0x00, 0xDF, 0x7D, 0xA2, 0xFA, 0x25, 0x87, 0x58, + 0x37, 0xE8, 0x4A, 0x95, 0xCD, 0x12, 0xB0, 0x6F, + 0x6E, 0xB1, 0x13, 0xCC, 0x94, 0x4B, 0xE9, 0x36, + 0x59, 0x86, 0x24, 0xFB, 0xA3, 0x7C, 0xDE, 0x01, + 0xDC, 0x03, 0xA1, 0x7E, 0x26, 0xF9, 0x5B, 0x84, + 0xEB, 0x34, 0x96, 0x49, 0x11, 0xCE, 0x6C, 0xB3, + 0xB2, 0x6D, 0xCF, 0x10, 0x48, 0x97, 0x35, 0xEA, + 0x85, 0x5A, 0xF8, 0x27, 0x7F, 0xA0, 0x02, 0xDD, + 0x7B, 0xA4, 0x06, 0xD9, 0x81, 0x5E, 0xFC, 0x23, + 0x4C, 0x93, 0x31, 0xEE, 0xB6, 0x69, 0xCB, 0x14, + 0x15, 0xCA, 0x68, 0xB7, 0xEF, 0x30, 0x92, 0x4D, + 0x22, 0xFD, 0x5F, 0x80, 0xD8, 0x07, 0xA5, 0x7A, + 0xA7, 0x78, 0xDA, 0x05, 0x5D, 0x82, 0x20, 0xFF, + 0x90, 0x4F, 0xED, 0x32, 0x6A, 0xB5, 0x17, 0xC8, + 0xC9, 0x16, 0xB4, 0x6B, 0x33, 0xEC, 0x4E, 0x91, + 0xFE, 0x21, 0x83, 0x5C, 0x04, 0xDB, 0x79, 0xA6, + 0xF6, 0x29, 0x8B, 0x54, 0x0C, 0xD3, 0x71, 0xAE, + 0xC1, 0x1E, 0xBC, 0x63, 0x3B, 0xE4, 0x46, 0x99, + 0x98, 0x47, 0xE5, 0x3A, 0x62, 0xBD, 0x1F, 0xC0, + 0xAF, 0x70, 0xD2, 0x0D, 0x55, 0x8A, 0x28, 0xF7, + 0x2A, 0xF5, 0x57, 0x88, 0xD0, 0x0F, 0xAD, 0x72, + 0x1D, 0xC2, 0x60, 0xBF, 0xE7, 0x38, 0x9A, 0x45, + 0x44, 0x9B, 0x39, 0xE6, 0xBE, 0x61, 0xC3, 0x1C, + 0x73, 0xAC, 0x0E, 0xD1, 0x89, 0x56, 0xF4, 0x2B, + 0x8D, 0x52, 0xF0, 0x2F, 0x77, 0xA8, 0x0A, 0xD5, + 0xBA, 0x65, 0xC7, 0x18, 0x40, 0x9F, 0x3D, 0xE2, + 0xE3, 0x3C, 0x9E, 0x41, 0x19, 0xC6, 0x64, 0xBB, + 0xD4, 0x0B, 0xA9, 0x76, 0x2E, 0xF1, 0x53, 0x8C, + 0x51, 0x8E, 0x2C, 0xF3, 0xAB, 0x74, 0xD6, 0x09, + 0x66, 0xB9, 0x1B, 0xC4, 0x9C, 0x43, 0xE1, 0x3E, + 0x3F, 0xE0, 0x42, 0x9D, 0xC5, 0x1A, 0xB8, 0x67, + 0x08, 0xD7, 0x75, 0xAA, 0xF2, 0x2D, 0x8F, 0x50, + 0x00, 0xE0, 0x03, 0xE3, 0x06, 0xE6, 0x05, 0xE5, + 0x0C, 0xEC, 0x0F, 0xEF, 0x0A, 0xEA, 0x09, 0xE9, + 0x18, 0xF8, 0x1B, 0xFB, 0x1E, 0xFE, 0x1D, 0xFD, + 0x14, 0xF4, 0x17, 0xF7, 0x12, 0xF2, 0x11, 0xF1, + 0x30, 0xD0, 0x33, 0xD3, 0x36, 0xD6, 0x35, 0xD5, + 0x3C, 0xDC, 0x3F, 0xDF, 0x3A, 0xDA, 0x39, 0xD9, + 0x28, 0xC8, 0x2B, 0xCB, 0x2E, 0xCE, 0x2D, 0xCD, + 0x24, 0xC4, 0x27, 0xC7, 0x22, 0xC2, 0x21, 0xC1, + 0x60, 0x80, 0x63, 0x83, 0x66, 0x86, 0x65, 0x85, + 0x6C, 0x8C, 0x6F, 0x8F, 0x6A, 0x8A, 0x69, 0x89, + 0x78, 0x98, 0x7B, 0x9B, 0x7E, 0x9E, 0x7D, 0x9D, + 0x74, 0x94, 0x77, 0x97, 0x72, 0x92, 0x71, 0x91, + 0x50, 0xB0, 0x53, 0xB3, 0x56, 0xB6, 0x55, 0xB5, + 0x5C, 0xBC, 0x5F, 0xBF, 0x5A, 0xBA, 0x59, 0xB9, + 0x48, 0xA8, 0x4B, 0xAB, 0x4E, 0xAE, 0x4D, 0xAD, + 0x44, 0xA4, 0x47, 0xA7, 0x42, 0xA2, 0x41, 0xA1, + 0xC0, 0x20, 0xC3, 0x23, 0xC6, 0x26, 0xC5, 0x25, + 0xCC, 0x2C, 0xCF, 0x2F, 0xCA, 0x2A, 0xC9, 0x29, + 0xD8, 0x38, 0xDB, 0x3B, 0xDE, 0x3E, 0xDD, 0x3D, + 0xD4, 0x34, 0xD7, 0x37, 0xD2, 0x32, 0xD1, 0x31, + 0xF0, 0x10, 0xF3, 0x13, 0xF6, 0x16, 0xF5, 0x15, + 0xFC, 0x1C, 0xFF, 0x1F, 0xFA, 0x1A, 0xF9, 0x19, + 0xE8, 0x08, 0xEB, 0x0B, 0xEE, 0x0E, 0xED, 0x0D, + 0xE4, 0x04, 0xE7, 0x07, 0xE2, 0x02, 0xE1, 0x01, + 0xA0, 0x40, 0xA3, 0x43, 0xA6, 0x46, 0xA5, 0x45, + 0xAC, 0x4C, 0xAF, 0x4F, 0xAA, 0x4A, 0xA9, 0x49, + 0xB8, 0x58, 0xBB, 0x5B, 0xBE, 0x5E, 0xBD, 0x5D, + 0xB4, 0x54, 0xB7, 0x57, 0xB2, 0x52, 0xB1, 0x51, + 0x90, 0x70, 0x93, 0x73, 0x96, 0x76, 0x95, 0x75, + 0x9C, 0x7C, 0x9F, 0x7F, 0x9A, 0x7A, 0x99, 0x79, + 0x88, 0x68, 0x8B, 0x6B, 0x8E, 0x6E, 0x8D, 0x6D, + 0x84, 0x64, 0x87, 0x67, 0x82, 0x62, 0x81, 0x61, + 0x00, 0xE1, 0x01, 0xE0, 0x02, 0xE3, 0x03, 0xE2, + 0x04, 0xE5, 0x05, 0xE4, 0x06, 0xE7, 0x07, 0xE6, + 0x08, 0xE9, 0x09, 0xE8, 0x0A, 0xEB, 0x0B, 0xEA, + 0x0C, 0xED, 0x0D, 0xEC, 0x0E, 0xEF, 0x0F, 0xEE, + 0x10, 0xF1, 0x11, 0xF0, 0x12, 0xF3, 0x13, 0xF2, + 0x14, 0xF5, 0x15, 0xF4, 0x16, 0xF7, 0x17, 0xF6, + 0x18, 0xF9, 0x19, 0xF8, 0x1A, 0xFB, 0x1B, 0xFA, + 0x1C, 0xFD, 0x1D, 0xFC, 0x1E, 0xFF, 0x1F, 0xFE, + 0x20, 0xC1, 0x21, 0xC0, 0x22, 0xC3, 0x23, 0xC2, + 0x24, 0xC5, 0x25, 0xC4, 0x26, 0xC7, 0x27, 0xC6, + 0x28, 0xC9, 0x29, 0xC8, 0x2A, 0xCB, 0x2B, 0xCA, + 0x2C, 0xCD, 0x2D, 0xCC, 0x2E, 0xCF, 0x2F, 0xCE, + 0x30, 0xD1, 0x31, 0xD0, 0x32, 0xD3, 0x33, 0xD2, + 0x34, 0xD5, 0x35, 0xD4, 0x36, 0xD7, 0x37, 0xD6, + 0x38, 0xD9, 0x39, 0xD8, 0x3A, 0xDB, 0x3B, 0xDA, + 0x3C, 0xDD, 0x3D, 0xDC, 0x3E, 0xDF, 0x3F, 0xDE, + 0x40, 0xA1, 0x41, 0xA0, 0x42, 0xA3, 0x43, 0xA2, + 0x44, 0xA5, 0x45, 0xA4, 0x46, 0xA7, 0x47, 0xA6, + 0x48, 0xA9, 0x49, 0xA8, 0x4A, 0xAB, 0x4B, 0xAA, + 0x4C, 0xAD, 0x4D, 0xAC, 0x4E, 0xAF, 0x4F, 0xAE, + 0x50, 0xB1, 0x51, 0xB0, 0x52, 0xB3, 0x53, 0xB2, + 0x54, 0xB5, 0x55, 0xB4, 0x56, 0xB7, 0x57, 0xB6, + 0x58, 0xB9, 0x59, 0xB8, 0x5A, 0xBB, 0x5B, 0xBA, + 0x5C, 0xBD, 0x5D, 0xBC, 0x5E, 0xBF, 0x5F, 0xBE, + 0x60, 0x81, 0x61, 0x80, 0x62, 0x83, 0x63, 0x82, + 0x64, 0x85, 0x65, 0x84, 0x66, 0x87, 0x67, 0x86, + 0x68, 0x89, 0x69, 0x88, 0x6A, 0x8B, 0x6B, 0x8A, + 0x6C, 0x8D, 0x6D, 0x8C, 0x6E, 0x8F, 0x6F, 0x8E, + 0x70, 0x91, 0x71, 0x90, 0x72, 0x93, 0x73, 0x92, + 0x74, 0x95, 0x75, 0x94, 0x76, 0x97, 0x77, 0x96, + 0x78, 0x99, 0x79, 0x98, 0x7A, 0x9B, 0x7B, 0x9A, + 0x7C, 0x9D, 0x7D, 0x9C, 0x7E, 0x9F, 0x7F, 0x9E, + 0x00, 0xE2, 0x07, 0xE5, 0x0E, 0xEC, 0x09, 0xEB, + 0x1C, 0xFE, 0x1B, 0xF9, 0x12, 0xF0, 0x15, 0xF7, + 0x38, 0xDA, 0x3F, 0xDD, 0x36, 0xD4, 0x31, 0xD3, + 0x24, 0xC6, 0x23, 0xC1, 0x2A, 0xC8, 0x2D, 0xCF, + 0x70, 0x92, 0x77, 0x95, 0x7E, 0x9C, 0x79, 0x9B, + 0x6C, 0x8E, 0x6B, 0x89, 0x62, 0x80, 0x65, 0x87, + 0x48, 0xAA, 0x4F, 0xAD, 0x46, 0xA4, 0x41, 0xA3, + 0x54, 0xB6, 0x53, 0xB1, 0x5A, 0xB8, 0x5D, 0xBF, + 0xE0, 0x02, 0xE7, 0x05, 0xEE, 0x0C, 0xE9, 0x0B, + 0xFC, 0x1E, 0xFB, 0x19, 0xF2, 0x10, 0xF5, 0x17, + 0xD8, 0x3A, 0xDF, 0x3D, 0xD6, 0x34, 0xD1, 0x33, + 0xC4, 0x26, 0xC3, 0x21, 0xCA, 0x28, 0xCD, 0x2F, + 0x90, 0x72, 0x97, 0x75, 0x9E, 0x7C, 0x99, 0x7B, + 0x8C, 0x6E, 0x8B, 0x69, 0x82, 0x60, 0x85, 0x67, + 0xA8, 0x4A, 0xAF, 0x4D, 0xA6, 0x44, 0xA1, 0x43, + 0xB4, 0x56, 0xB3, 0x51, 0xBA, 0x58, 0xBD, 0x5F, + 0x03, 0xE1, 0x04, 0xE6, 0x0D, 0xEF, 0x0A, 0xE8, + 0x1F, 0xFD, 0x18, 0xFA, 0x11, 0xF3, 0x16, 0xF4, + 0x3B, 0xD9, 0x3C, 0xDE, 0x35, 0xD7, 0x32, 0xD0, + 0x27, 0xC5, 0x20, 0xC2, 0x29, 0xCB, 0x2E, 0xCC, + 0x73, 0x91, 0x74, 0x96, 0x7D, 0x9F, 0x7A, 0x98, + 0x6F, 0x8D, 0x68, 0x8A, 0x61, 0x83, 0x66, 0x84, + 0x4B, 0xA9, 0x4C, 0xAE, 0x45, 0xA7, 0x42, 0xA0, + 0x57, 0xB5, 0x50, 0xB2, 0x59, 0xBB, 0x5E, 0xBC, + 0xE3, 0x01, 0xE4, 0x06, 0xED, 0x0F, 0xEA, 0x08, + 0xFF, 0x1D, 0xF8, 0x1A, 0xF1, 0x13, 0xF6, 0x14, + 0xDB, 0x39, 0xDC, 0x3E, 0xD5, 0x37, 0xD2, 0x30, + 0xC7, 0x25, 0xC0, 0x22, 0xC9, 0x2B, 0xCE, 0x2C, + 0x93, 0x71, 0x94, 0x76, 0x9D, 0x7F, 0x9A, 0x78, + 0x8F, 0x6D, 0x88, 0x6A, 0x81, 0x63, 0x86, 0x64, + 0xAB, 0x49, 0xAC, 0x4E, 0xA5, 0x47, 0xA2, 0x40, + 0xB7, 0x55, 0xB0, 0x52, 0xB9, 0x5B, 0xBE, 0x5C, + 0x00, 0xE3, 0x05, 0xE6, 0x0A, 0xE9, 0x0F, 0xEC, + 0x14, 0xF7, 0x11, 0xF2, 0x1E, 0xFD, 0x1B, 0xF8, + 0x28, 0xCB, 0x2D, 0xCE, 0x22, 0xC1, 0x27, 0xC4, + 0x3C, 0xDF, 0x39, 0xDA, 0x36, 0xD5, 0x33, 0xD0, + 0x50, 0xB3, 0x55, 0xB6, 0x5A, 0xB9, 0x5F, 0xBC, + 0x44, 0xA7, 0x41, 0xA2, 0x4E, 0xAD, 0x4B, 0xA8, + 0x78, 0x9B, 0x7D, 0x9E, 0x72, 0x91, 0x77, 0x94, + 0x6C, 0x8F, 0x69, 0x8A, 0x66, 0x85, 0x63, 0x80, + 0xA0, 0x43, 0xA5, 0x46, 0xAA, 0x49, 0xAF, 0x4C, + 0xB4, 0x57, 0xB1, 0x52, 0xBE, 0x5D, 0xBB, 0x58, + 0x88, 0x6B, 0x8D, 0x6E, 0x82, 0x61, 0x87, 0x64, + 0x9C, 0x7F, 0x99, 0x7A, 0x96, 0x75, 0x93, 0x70, + 0xF0, 0x13, 0xF5, 0x16, 0xFA, 0x19, 0xFF, 0x1C, + 0xE4, 0x07, 0xE1, 0x02, 0xEE, 0x0D, 0xEB, 0x08, + 0xD8, 0x3B, 0xDD, 0x3E, 0xD2, 0x31, 0xD7, 0x34, + 0xCC, 0x2F, 0xC9, 0x2A, 0xC6, 0x25, 0xC3, 0x20, + 0x83, 0x60, 0x86, 0x65, 0x89, 0x6A, 0x8C, 0x6F, + 0x97, 0x74, 0x92, 0x71, 0x9D, 0x7E, 0x98, 0x7B, + 0xAB, 0x48, 0xAE, 0x4D, 0xA1, 0x42, 0xA4, 0x47, + 0xBF, 0x5C, 0xBA, 0x59, 0xB5, 0x56, 0xB0, 0x53, + 0xD3, 0x30, 0xD6, 0x35, 0xD9, 0x3A, 0xDC, 0x3F, + 0xC7, 0x24, 0xC2, 0x21, 0xCD, 0x2E, 0xC8, 0x2B, + 0xFB, 0x18, 0xFE, 0x1D, 0xF1, 0x12, 0xF4, 0x17, + 0xEF, 0x0C, 0xEA, 0x09, 0xE5, 0x06, 0xE0, 0x03, + 0x23, 0xC0, 0x26, 0xC5, 0x29, 0xCA, 0x2C, 0xCF, + 0x37, 0xD4, 0x32, 0xD1, 0x3D, 0xDE, 0x38, 0xDB, + 0x0B, 0xE8, 0x0E, 0xED, 0x01, 0xE2, 0x04, 0xE7, + 0x1F, 0xFC, 0x1A, 0xF9, 0x15, 0xF6, 0x10, 0xF3, + 0x73, 0x90, 0x76, 0x95, 0x79, 0x9A, 0x7C, 0x9F, + 0x67, 0x84, 0x62, 0x81, 0x6D, 0x8E, 0x68, 0x8B, + 0x5B, 0xB8, 0x5E, 0xBD, 0x51, 0xB2, 0x54, 0xB7, + 0x4F, 0xAC, 0x4A, 0xA9, 0x45, 0xA6, 0x40, 0xA3, + 0x00, 0xE4, 0x0B, 0xEF, 0x16, 0xF2, 0x1D, 0xF9, + 0x2C, 0xC8, 0x27, 0xC3, 0x3A, 0xDE, 0x31, 0xD5, + 0x58, 0xBC, 0x53, 0xB7, 0x4E, 0xAA, 0x45, 0xA1, + 0x74, 0x90, 0x7F, 0x9B, 0x62, 0x86, 0x69, 0x8D, + 0xB0, 0x54, 0xBB, 0x5F, 0xA6, 0x42, 0xAD, 0x49, + 0x9C, 0x78, 0x97, 0x73, 0x8A, 0x6E, 0x81, 0x65, + 0xE8, 0x0C, 0xE3, 0x07, 0xFE, 0x1A, 0xF5, 0x11, + 0xC4, 0x20, 0xCF, 0x2B, 0xD2, 0x36, 0xD9, 0x3D, + 0xA3, 0x47, 0xA8, 0x4C, 0xB5, 0x51, 0xBE, 0x5A, + 0x8F, 0x6B, 0x84, 0x60, 0x99, 0x7D, 0x92, 0x76, + 0xFB, 0x1F, 0xF0, 0x14, 0xED, 0x09, 0xE6, 0x02, + 0xD7, 0x33, 0xDC, 0x38, 0xC1, 0x25, 0xCA, 0x2E, + 0x13, 0xF7, 0x18, 0xFC, 0x05, 0xE1, 0x0E, 0xEA, + 0x3F, 0xDB, 0x34, 0xD0, 0x29, 0xCD, 0x22, 0xC6, + 0x4B, 0xAF, 0x40, 0xA4, 0x5D, 0xB9, 0x56, 0xB2, + 0x67, 0x83, 0x6C, 0x88, 0x71, 0x95, 0x7A, 0x9E, + 0x85, 0x61, 0x8E, 0x6A, 0x93, 0x77, 0x98, 0x7C, + 0xA9, 0x4D, 0xA2, 0x46, 0xBF, 0x5B, 0xB4, 0x50, + 0xDD, 0x39, 0xD6, 0x32, 0xCB, 0x2F, 0xC0, 0x24, + 0xF1, 0x15, 0xFA, 0x1E, 0xE7, 0x03, 0xEC, 0x08, + 0x35, 0xD1, 0x3E, 0xDA, 0x23, 0xC7, 0x28, 0xCC, + 0x19, 0xFD, 0x12, 0xF6, 0x0F, 0xEB, 0x04, 0xE0, + 0x6D, 0x89, 0x66, 0x82, 0x7B, 0x9F, 0x70, 0x94, + 0x41, 0xA5, 0x4A, 0xAE, 0x57, 0xB3, 0x5C, 0xB8, + 0x26, 0xC2, 0x2D, 0xC9, 0x30, 0xD4, 0x3B, 0xDF, + 0x0A, 0xEE, 0x01, 0xE5, 0x1C, 0xF8, 0x17, 0xF3, + 0x7E, 0x9A, 0x75, 0x91, 0x68, 0x8C, 0x63, 0x87, + 0x52, 0xB6, 0x59, 0xBD, 0x44, 0xA0, 0x4F, 0xAB, + 0x96, 0x72, 0x9D, 0x79, 0x80, 0x64, 0x8B, 0x6F, + 0xBA, 0x5E, 0xB1, 0x55, 0xAC, 0x48, 0xA7, 0x43, + 0xCE, 0x2A, 0xC5, 0x21, 0xD8, 0x3C, 0xD3, 0x37, + 0xE2, 0x06, 0xE9, 0x0D, 0xF4, 0x10, 0xFF, 0x1B, + 0x00, 0xE5, 0x09, 0xEC, 0x12, 0xF7, 0x1B, 0xFE, + 0x24, 0xC1, 0x2D, 0xC8, 0x36, 0xD3, 0x3F, 0xDA, + 0x48, 0xAD, 0x41, 0xA4, 0x5A, 0xBF, 0x53, 0xB6, + 0x6C, 0x89, 0x65, 0x80, 0x7E, 0x9B, 0x77, 0x92, + 0x90, 0x75, 0x99, 0x7C, 0x82, 0x67, 0x8B, 0x6E, + 0xB4, 0x51, 0xBD, 0x58, 0xA6, 0x43, 0xAF, 0x4A, + 0xD8, 0x3D, 0xD1, 0x34, 0xCA, 0x2F, 0xC3, 0x26, + 0xFC, 0x19, 0xF5, 0x10, 0xEE, 0x0B, 0xE7, 0x02, + 0xE3, 0x06, 0xEA, 0x0F, 0xF1, 0x14, 0xF8, 0x1D, + 0xC7, 0x22, 0xCE, 0x2B, 0xD5, 0x30, 0xDC, 0x39, + 0xAB, 0x4E, 0xA2, 0x47, 0xB9, 0x5C, 0xB0, 0x55, + 0x8F, 0x6A, 0x86, 0x63, 0x9D, 0x78, 0x94, 0x71, + 0x73, 0x96, 0x7A, 0x9F, 0x61, 0x84, 0x68, 0x8D, + 0x57, 0xB2, 0x5E, 0xBB, 0x45, 0xA0, 0x4C, 0xA9, + 0x3B, 0xDE, 0x32, 0xD7, 0x29, 0xCC, 0x20, 0xC5, + 0x1F, 0xFA, 0x16, 0xF3, 0x0D, 0xE8, 0x04, 0xE1, + 0x05, 0xE0, 0x0C, 0xE9, 0x17, 0xF2, 0x1E, 0xFB, + 0x21, 0xC4, 0x28, 0xCD, 0x33, 0xD6, 0x3A, 0xDF, + 0x4D, 0xA8, 0x44, 0xA1, 0x5F, 0xBA, 0x56, 0xB3, + 0x69, 0x8C, 0x60, 0x85, 0x7B, 0x9E, 0x72, 0x97, + 0x95, 0x70, 0x9C, 0x79, 0x87, 0x62, 0x8E, 0x6B, + 0xB1, 0x54, 0xB8, 0x5D, 0xA3, 0x46, 0xAA, 0x4F, + 0xDD, 0x38, 0xD4, 0x31, 0xCF, 0x2A, 0xC6, 0x23, + 0xF9, 0x1C, 0xF0, 0x15, 0xEB, 0x0E, 0xE2, 0x07, + 0xE6, 0x03, 0xEF, 0x0A, 0xF4, 0x11, 0xFD, 0x18, + 0xC2, 0x27, 0xCB, 0x2E, 0xD0, 0x35, 0xD9, 0x3C, + 0xAE, 0x4B, 0xA7, 0x42, 0xBC, 0x59, 0xB5, 0x50, + 0x8A, 0x6F, 0x83, 0x66, 0x98, 0x7D, 0x91, 0x74, + 0x76, 0x93, 0x7F, 0x9A, 0x64, 0x81, 0x6D, 0x88, + 0x52, 0xB7, 0x5B, 0xBE, 0x40, 0xA5, 0x49, 0xAC, + 0x3E, 0xDB, 0x37, 0xD2, 0x2C, 0xC9, 0x25, 0xC0, + 0x1A, 0xFF, 0x13, 0xF6, 0x08, 0xED, 0x01, 0xE4, + 0x00, 0xE6, 0x0F, 0xE9, 0x1E, 0xF8, 0x11, 0xF7, + 0x3C, 0xDA, 0x33, 0xD5, 0x22, 0xC4, 0x2D, 0xCB, + 0x78, 0x9E, 0x77, 0x91, 0x66, 0x80, 0x69, 0x8F, + 0x44, 0xA2, 0x4B, 0xAD, 0x5A, 0xBC, 0x55, 0xB3, + 0xF0, 0x16, 0xFF, 0x19, 0xEE, 0x08, 0xE1, 0x07, + 0xCC, 0x2A, 0xC3, 0x25, 0xD2, 0x34, 0xDD, 0x3B, + 0x88, 0x6E, 0x87, 0x61, 0x96, 0x70, 0x99, 0x7F, + 0xB4, 0x52, 0xBB, 0x5D, 0xAA, 0x4C, 0xA5, 0x43, + 0x23, 0xC5, 0x2C, 0xCA, 0x3D, 0xDB, 0x32, 0xD4, + 0x1F, 0xF9, 0x10, 0xF6, 0x01, 0xE7, 0x0E, 0xE8, + 0x5B, 0xBD, 0x54, 0xB2, 0x45, 0xA3, 0x4A, 0xAC, + 0x67, 0x81, 0x68, 0x8E, 0x79, 0x9F, 0x76, 0x90, + 0xD3, 0x35, 0xDC, 0x3A, 0xCD, 0x2B, 0xC2, 0x24, + 0xEF, 0x09, 0xE0, 0x06, 0xF1, 0x17, 0xFE, 0x18, + 0xAB, 0x4D, 0xA4, 0x42, 0xB5, 0x53, 0xBA, 0x5C, + 0x97, 0x71, 0x98, 0x7E, 0x89, 0x6F, 0x86, 0x60, + 0x46, 0xA0, 0x49, 0xAF, 0x58, 0xBE, 0x57, 0xB1, + 0x7A, 0x9C, 0x75, 0x93, 0x64, 0x82, 0x6B, 0x8D, + 0x3E, 0xD8, 0x31, 0xD7, 0x20, 0xC6, 0x2F, 0xC9, + 0x02, 0xE4, 0x0D, 0xEB, 0x1C, 0xFA, 0x13, 0xF5, + 0xB6, 0x50, 0xB9, 0x5F, 0xA8, 0x4E, 0xA7, 0x41, + 0x8A, 0x6C, 0x85, 0x63, 0x94, 0x72, 0x9B, 0x7D, + 0xCE, 0x28, 0xC1, 0x27, 0xD0, 0x36, 0xDF, 0x39, + 0xF2, 0x14, 0xFD, 0x1B, 0xEC, 0x0A, 0xE3, 0x05, + 0x65, 0x83, 0x6A, 0x8C, 0x7B, 0x9D, 0x74, 0x92, + 0x59, 0xBF, 0x56, 0xB0, 0x47, 0xA1, 0x48, 0xAE, + 0x1D, 0xFB, 0x12, 0xF4, 0x03, 0xE5, 0x0C, 0xEA, + 0x21, 0xC7, 0x2E, 0xC8, 0x3F, 0xD9, 0x30, 0xD6, + 0x95, 0x73, 0x9A, 0x7C, 0x8B, 0x6D, 0x84, 0x62, + 0xA9, 0x4F, 0xA6, 0x40, 0xB7, 0x51, 0xB8, 0x5E, + 0xED, 0x0B, 0xE2, 0x04, 0xF3, 0x15, 0xFC, 0x1A, + 0xD1, 0x37, 0xDE, 0x38, 0xCF, 0x29, 0xC0, 0x26, + 0x00, 0xE7, 0x0D, 0xEA, 0x1A, 0xFD, 0x17, 0xF0, + 0x34, 0xD3, 0x39, 0xDE, 0x2E, 0xC9, 0x23, 0xC4, + 0x68, 0x8F, 0x65, 0x82, 0x72, 0x95, 0x7F, 0x98, + 0x5C, 0xBB, 0x51, 0xB6, 0x46, 0xA1, 0x4B, 0xAC, + 0xD0, 0x37, 0xDD, 0x3A, 0xCA, 0x2D, 0xC7, 0x20, + 0xE4, 0x03, 0xE9, 0x0E, 0xFE, 0x19, 0xF3, 0x14, + 0xB8, 0x5F, 0xB5, 0x52, 0xA2, 0x45, 0xAF, 0x48, + 0x8C, 0x6B, 0x81, 0x66, 0x96, 0x71, 0x9B, 0x7C, + 0x63, 0x84, 0x6E, 0x89, 0x79, 0x9E, 0x74, 0x93, + 0x57, 0xB0, 0x5A, 0xBD, 0x4D, 0xAA, 0x40, 0xA7, + 0x0B, 0xEC, 0x06, 0xE1, 0x11, 0xF6, 0x1C, 0xFB, + 0x3F, 0xD8, 0x32, 0xD5, 0x25, 0xC2, 0x28, 0xCF, + 0xB3, 0x54, 0xBE, 0x59, 0xA9, 0x4E, 0xA4, 0x43, + 0x87, 0x60, 0x8A, 0x6D, 0x9D, 0x7A, 0x90, 0x77, + 0xDB, 0x3C, 0xD6, 0x31, 0xC1, 0x26, 0xCC, 0x2B, + 0xEF, 0x08, 0xE2, 0x05, 0xF5, 0x12, 0xF8, 0x1F, + 0xC6, 0x21, 0xCB, 0x2C, 0xDC, 0x3B, 0xD1, 0x36, + 0xF2, 0x15, 0xFF, 0x18, 0xE8, 0x0F, 0xE5, 0x02, + 0xAE, 0x49, 0xA3, 0x44, 0xB4, 0x53, 0xB9, 0x5E, + 0x9A, 0x7D, 0x97, 0x70, 0x80, 0x67, 0x8D, 0x6A, + 0x16, 0xF1, 0x1B, 0xFC, 0x0C, 0xEB, 0x01, 0xE6, + 0x22, 0xC5, 0x2F, 0xC8, 0x38, 0xDF, 0x35, 0xD2, + 0x7E, 0x99, 0x73, 0x94, 0x64, 0x83, 0x69, 0x8E, + 0x4A, 0xAD, 0x47, 0xA0, 0x50, 0xB7, 0x5D, 0xBA, + 0xA5, 0x42, 0xA8, 0x4F, 0xBF, 0x58, 0xB2, 0x55, + 0x91, 0x76, 0x9C, 0x7B, 0x8B, 0x6C, 0x86, 0x61, + 0xCD, 0x2A, 0xC0, 0x27, 0xD7, 0x30, 0xDA, 0x3D, + 0xF9, 0x1E, 0xF4, 0x13, 0xE3, 0x04, 0xEE, 0x09, + 0x75, 0x92, 0x78, 0x9F, 0x6F, 0x88, 0x62, 0x85, + 0x41, 0xA6, 0x4C, 0xAB, 0x5B, 0xBC, 0x56, 0xB1, + 0x1D, 0xFA, 0x10, 0xF7, 0x07, 0xE0, 0x0A, 0xED, + 0x29, 0xCE, 0x24, 0xC3, 0x33, 0xD4, 0x3E, 0xD9, + 0x00, 0xE8, 0x13, 0xFB, 0x26, 0xCE, 0x35, 0xDD, + 0x4C, 0xA4, 0x5F, 0xB7, 0x6A, 0x82, 0x79, 0x91, + 0x98, 0x70, 0x8B, 0x63, 0xBE, 0x56, 0xAD, 0x45, + 0xD4, 0x3C, 0xC7, 0x2F, 0xF2, 0x1A, 0xE1, 0x09, + 0xF3, 0x1B, 0xE0, 0x08, 0xD5, 0x3D, 0xC6, 0x2E, + 0xBF, 0x57, 0xAC, 0x44, 0x99, 0x71, 0x8A, 0x62, + 0x6B, 0x83, 0x78, 0x90, 0x4D, 0xA5, 0x5E, 0xB6, + 0x27, 0xCF, 0x34, 0xDC, 0x01, 0xE9, 0x12, 0xFA, + 0x25, 0xCD, 0x36, 0xDE, 0x03, 0xEB, 0x10, 0xF8, + 0x69, 0x81, 0x7A, 0x92, 0x4F, 0xA7, 0x5C, 0xB4, + 0xBD, 0x55, 0xAE, 0x46, 0x9B, 0x73, 0x88, 0x60, + 0xF1, 0x19, 0xE2, 0x0A, 0xD7, 0x3F, 0xC4, 0x2C, + 0xD6, 0x3E, 0xC5, 0x2D, 0xF0, 0x18, 0xE3, 0x0B, + 0x9A, 0x72, 0x89, 0x61, 0xBC, 0x54, 0xAF, 0x47, + 0x4E, 0xA6, 0x5D, 0xB5, 0x68, 0x80, 0x7B, 0x93, + 0x02, 0xEA, 0x11, 0xF9, 0x24, 0xCC, 0x37, 0xDF, + 0x4A, 0xA2, 0x59, 0xB1, 0x6C, 0x84, 0x7F, 0x97, + 0x06, 0xEE, 0x15, 0xFD, 0x20, 0xC8, 0x33, 0xDB, + 0xD2, 0x3A, 0xC1, 0x29, 0xF4, 0x1C, 0xE7, 0x0F, + 0x9E, 0x76, 0x8D, 0x65, 0xB8, 0x50, 0xAB, 0x43, + 0xB9, 0x51, 0xAA, 0x42, 0x9F, 0x77, 0x8C, 0x64, + 0xF5, 0x1D, 0xE6, 0x0E, 0xD3, 0x3B, 0xC0, 0x28, + 0x21, 0xC9, 0x32, 0xDA, 0x07, 0xEF, 0x14, 0xFC, + 0x6D, 0x85, 0x7E, 0x96, 0x4B, 0xA3, 0x58, 0xB0, + 0x6F, 0x87, 0x7C, 0x94, 0x49, 0xA1, 0x5A, 0xB2, + 0x23, 0xCB, 0x30, 0xD8, 0x05, 0xED, 0x16, 0xFE, + 0xF7, 0x1F, 0xE4, 0x0C, 0xD1, 0x39, 0xC2, 0x2A, + 0xBB, 0x53, 0xA8, 0x40, 0x9D, 0x75, 0x8E, 0x66, + 0x9C, 0x74, 0x8F, 0x67, 0xBA, 0x52, 0xA9, 0x41, + 0xD0, 0x38, 0xC3, 0x2B, 0xF6, 0x1E, 0xE5, 0x0D, + 0x04, 0xEC, 0x17, 0xFF, 0x22, 0xCA, 0x31, 0xD9, + 0x48, 0xA0, 0x5B, 0xB3, 0x6E, 0x86, 0x7D, 0x95, + 0x00, 0xE9, 0x11, 0xF8, 0x22, 0xCB, 0x33, 0xDA, + 0x44, 0xAD, 0x55, 0xBC, 0x66, 0x8F, 0x77, 0x9E, + 0x88, 0x61, 0x99, 0x70, 0xAA, 0x43, 0xBB, 0x52, + 0xCC, 0x25, 0xDD, 0x34, 0xEE, 0x07, 0xFF, 0x16, + 0xD3, 0x3A, 0xC2, 0x2B, 0xF1, 0x18, 0xE0, 0x09, + 0x97, 0x7E, 0x86, 0x6F, 0xB5, 0x5C, 0xA4, 0x4D, + 0x5B, 0xB2, 0x4A, 0xA3, 0x79, 0x90, 0x68, 0x81, + 0x1F, 0xF6, 0x0E, 0xE7, 0x3D, 0xD4, 0x2C, 0xC5, + 0x65, 0x8C, 0x74, 0x9D, 0x47, 0xAE, 0x56, 0xBF, + 0x21, 0xC8, 0x30, 0xD9, 0x03, 0xEA, 0x12, 0xFB, + 0xED, 0x04, 0xFC, 0x15, 0xCF, 0x26, 0xDE, 0x37, + 0xA9, 0x40, 0xB8, 0x51, 0x8B, 0x62, 0x9A, 0x73, + 0xB6, 0x5F, 0xA7, 0x4E, 0x94, 0x7D, 0x85, 0x6C, + 0xF2, 0x1B, 0xE3, 0x0A, 0xD0, 0x39, 0xC1, 0x28, + 0x3E, 0xD7, 0x2F, 0xC6, 0x1C, 0xF5, 0x0D, 0xE4, + 0x7A, 0x93, 0x6B, 0x82, 0x58, 0xB1, 0x49, 0xA0, + 0xCA, 0x23, 0xDB, 0x32, 0xE8, 0x01, 0xF9, 0x10, + 0x8E, 0x67, 0x9F, 0x76, 0xAC, 0x45, 0xBD, 0x54, + 0x42, 0xAB, 0x53, 0xBA, 0x60, 0x89, 0x71, 0x98, + 0x06, 0xEF, 0x17, 0xFE, 0x24, 0xCD, 0x35, 0xDC, + 0x19, 0xF0, 0x08, 0xE1, 0x3B, 0xD2, 0x2A, 0xC3, + 0x5D, 0xB4, 0x4C, 0xA5, 0x7F, 0x96, 0x6E, 0x87, + 0x91, 0x78, 0x80, 0x69, 0xB3, 0x5A, 0xA2, 0x4B, + 0xD5, 0x3C, 0xC4, 0x2D, 0xF7, 0x1E, 0xE6, 0x0F, + 0xAF, 0x46, 0xBE, 0x57, 0x8D, 0x64, 0x9C, 0x75, + 0xEB, 0x02, 0xFA, 0x13, 0xC9, 0x20, 0xD8, 0x31, + 0x27, 0xCE, 0x36, 0xDF, 0x05, 0xEC, 0x14, 0xFD, + 0x63, 0x8A, 0x72, 0x9B, 0x41, 0xA8, 0x50, 0xB9, + 0x7C, 0x95, 0x6D, 0x84, 0x5E, 0xB7, 0x4F, 0xA6, + 0x38, 0xD1, 0x29, 0xC0, 0x1A, 0xF3, 0x0B, 0xE2, + 0xF4, 0x1D, 0xE5, 0x0C, 0xD6, 0x3F, 0xC7, 0x2E, + 0xB0, 0x59, 0xA1, 0x48, 0x92, 0x7B, 0x83, 0x6A, + 0x00, 0xEA, 0x17, 0xFD, 0x2E, 0xC4, 0x39, 0xD3, + 0x5C, 0xB6, 0x4B, 0xA1, 0x72, 0x98, 0x65, 0x8F, + 0xB8, 0x52, 0xAF, 0x45, 0x96, 0x7C, 0x81, 0x6B, + 0xE4, 0x0E, 0xF3, 0x19, 0xCA, 0x20, 0xDD, 0x37, + 0xB3, 0x59, 0xA4, 0x4E, 0x9D, 0x77, 0x8A, 0x60, + 0xEF, 0x05, 0xF8, 0x12, 0xC1, 0x2B, 0xD6, 0x3C, + 0x0B, 0xE1, 0x1C, 0xF6, 0x25, 0xCF, 0x32, 0xD8, + 0x57, 0xBD, 0x40, 0xAA, 0x79, 0x93, 0x6E, 0x84, + 0xA5, 0x4F, 0xB2, 0x58, 0x8B, 0x61, 0x9C, 0x76, + 0xF9, 0x13, 0xEE, 0x04, 0xD7, 0x3D, 0xC0, 0x2A, + 0x1D, 0xF7, 0x0A, 0xE0, 0x33, 0xD9, 0x24, 0xCE, + 0x41, 0xAB, 0x56, 0xBC, 0x6F, 0x85, 0x78, 0x92, + 0x16, 0xFC, 0x01, 0xEB, 0x38, 0xD2, 0x2F, 0xC5, + 0x4A, 0xA0, 0x5D, 0xB7, 0x64, 0x8E, 0x73, 0x99, + 0xAE, 0x44, 0xB9, 0x53, 0x80, 0x6A, 0x97, 0x7D, + 0xF2, 0x18, 0xE5, 0x0F, 0xDC, 0x36, 0xCB, 0x21, + 0x89, 0x63, 0x9E, 0x74, 0xA7, 0x4D, 0xB0, 0x5A, + 0xD5, 0x3F, 0xC2, 0x28, 0xFB, 0x11, 0xEC, 0x06, + 0x31, 0xDB, 0x26, 0xCC, 0x1F, 0xF5, 0x08, 0xE2, + 0x6D, 0x87, 0x7A, 0x90, 0x43, 0xA9, 0x54, 0xBE, + 0x3A, 0xD0, 0x2D, 0xC7, 0x14, 0xFE, 0x03, 0xE9, + 0x66, 0x8C, 0x71, 0x9B, 0x48, 0xA2, 0x5F, 0xB5, + 0x82, 0x68, 0x95, 0x7F, 0xAC, 0x46, 0xBB, 0x51, + 0xDE, 0x34, 0xC9, 0x23, 0xF0, 0x1A, 0xE7, 0x0D, + 0x2C, 0xC6, 0x3B, 0xD1, 0x02, 0xE8, 0x15, 0xFF, + 0x70, 0x9A, 0x67, 0x8D, 0x5E, 0xB4, 0x49, 0xA3, + 0x94, 0x7E, 0x83, 0x69, 0xBA, 0x50, 0xAD, 0x47, + 0xC8, 0x22, 0xDF, 0x35, 0xE6, 0x0C, 0xF1, 0x1B, + 0x9F, 0x75, 0x88, 0x62, 0xB1, 0x5B, 0xA6, 0x4C, + 0xC3, 0x29, 0xD4, 0x3E, 0xED, 0x07, 0xFA, 0x10, + 0x27, 0xCD, 0x30, 0xDA, 0x09, 0xE3, 0x1E, 0xF4, + 0x7B, 0x91, 0x6C, 0x86, 0x55, 0xBF, 0x42, 0xA8, + 0x00, 0xEB, 0x15, 0xFE, 0x2A, 0xC1, 0x3F, 0xD4, + 0x54, 0xBF, 0x41, 0xAA, 0x7E, 0x95, 0x6B, 0x80, + 0xA8, 0x43, 0xBD, 0x56, 0x82, 0x69, 0x97, 0x7C, + 0xFC, 0x17, 0xE9, 0x02, 0xD6, 0x3D, 0xC3, 0x28, + 0x93, 0x78, 0x86, 0x6D, 0xB9, 0x52, 0xAC, 0x47, + 0xC7, 0x2C, 0xD2, 0x39, 0xED, 0x06, 0xF8, 0x13, + 0x3B, 0xD0, 0x2E, 0xC5, 0x11, 0xFA, 0x04, 0xEF, + 0x6F, 0x84, 0x7A, 0x91, 0x45, 0xAE, 0x50, 0xBB, + 0xE5, 0x0E, 0xF0, 0x1B, 0xCF, 0x24, 0xDA, 0x31, + 0xB1, 0x5A, 0xA4, 0x4F, 0x9B, 0x70, 0x8E, 0x65, + 0x4D, 0xA6, 0x58, 0xB3, 0x67, 0x8C, 0x72, 0x99, + 0x19, 0xF2, 0x0C, 0xE7, 0x33, 0xD8, 0x26, 0xCD, + 0x76, 0x9D, 0x63, 0x88, 0x5C, 0xB7, 0x49, 0xA2, + 0x22, 0xC9, 0x37, 0xDC, 0x08, 0xE3, 0x1D, 0xF6, + 0xDE, 0x35, 0xCB, 0x20, 0xF4, 0x1F, 0xE1, 0x0A, + 0x8A, 0x61, 0x9F, 0x74, 0xA0, 0x4B, 0xB5, 0x5E, + 0x09, 0xE2, 0x1C, 0xF7, 0x23, 0xC8, 0x36, 0xDD, + 0x5D, 0xB6, 0x48, 0xA3, 0x77, 0x9C, 0x62, 0x89, + 0xA1, 0x4A, 0xB4, 0x5F, 0x8B, 0x60, 0x9E, 0x75, + 0xF5, 0x1E, 0xE0, 0x0B, 0xDF, 0x34, 0xCA, 0x21, + 0x9A, 0x71, 0x8F, 0x64, 0xB0, 0x5B, 0xA5, 0x4E, + 0xCE, 0x25, 0xDB, 0x30, 0xE4, 0x0F, 0xF1, 0x1A, + 0x32, 0xD9, 0x27, 0xCC, 0x18, 0xF3, 0x0D, 0xE6, + 0x66, 0x8D, 0x73, 0x98, 0x4C, 0xA7, 0x59, 0xB2, + 0xEC, 0x07, 0xF9, 0x12, 0xC6, 0x2D, 0xD3, 0x38, + 0xB8, 0x53, 0xAD, 0x46, 0x92, 0x79, 0x87, 0x6C, + 0x44, 0xAF, 0x51, 0xBA, 0x6E, 0x85, 0x7B, 0x90, + 0x10, 0xFB, 0x05, 0xEE, 0x3A, 0xD1, 0x2F, 0xC4, + 0x7F, 0x94, 0x6A, 0x81, 0x55, 0xBE, 0x40, 0xAB, + 0x2B, 0xC0, 0x3E, 0xD5, 0x01, 0xEA, 0x14, 0xFF, + 0xD7, 0x3C, 0xC2, 0x29, 0xFD, 0x16, 0xE8, 0x03, + 0x83, 0x68, 0x96, 0x7D, 0xA9, 0x42, 0xBC, 0x57, + 0x00, 0xEC, 0x1B, 0xF7, 0x36, 0xDA, 0x2D, 0xC1, + 0x6C, 0x80, 0x77, 0x9B, 0x5A, 0xB6, 0x41, 0xAD, + 0xD8, 0x34, 0xC3, 0x2F, 0xEE, 0x02, 0xF5, 0x19, + 0xB4, 0x58, 0xAF, 0x43, 0x82, 0x6E, 0x99, 0x75, + 0x73, 0x9F, 0x68, 0x84, 0x45, 0xA9, 0x5E, 0xB2, + 0x1F, 0xF3, 0x04, 0xE8, 0x29, 0xC5, 0x32, 0xDE, + 0xAB, 0x47, 0xB0, 0x5C, 0x9D, 0x71, 0x86, 0x6A, + 0xC7, 0x2B, 0xDC, 0x30, 0xF1, 0x1D, 0xEA, 0x06, + 0xE6, 0x0A, 0xFD, 0x11, 0xD0, 0x3C, 0xCB, 0x27, + 0x8A, 0x66, 0x91, 0x7D, 0xBC, 0x50, 0xA7, 0x4B, + 0x3E, 0xD2, 0x25, 0xC9, 0x08, 0xE4, 0x13, 0xFF, + 0x52, 0xBE, 0x49, 0xA5, 0x64, 0x88, 0x7F, 0x93, + 0x95, 0x79, 0x8E, 0x62, 0xA3, 0x4F, 0xB8, 0x54, + 0xF9, 0x15, 0xE2, 0x0E, 0xCF, 0x23, 0xD4, 0x38, + 0x4D, 0xA1, 0x56, 0xBA, 0x7B, 0x97, 0x60, 0x8C, + 0x21, 0xCD, 0x3A, 0xD6, 0x17, 0xFB, 0x0C, 0xE0, + 0x0F, 0xE3, 0x14, 0xF8, 0x39, 0xD5, 0x22, 0xCE, + 0x63, 0x8F, 0x78, 0x94, 0x55, 0xB9, 0x4E, 0xA2, + 0xD7, 0x3B, 0xCC, 0x20, 0xE1, 0x0D, 0xFA, 0x16, + 0xBB, 0x57, 0xA0, 0x4C, 0x8D, 0x61, 0x96, 0x7A, + 0x7C, 0x90, 0x67, 0x8B, 0x4A, 0xA6, 0x51, 0xBD, + 0x10, 0xFC, 0x0B, 0xE7, 0x26, 0xCA, 0x3D, 0xD1, + 0xA4, 0x48, 0xBF, 0x53, 0x92, 0x7E, 0x89, 0x65, + 0xC8, 0x24, 0xD3, 0x3F, 0xFE, 0x12, 0xE5, 0x09, + 0xE9, 0x05, 0xF2, 0x1E, 0xDF, 0x33, 0xC4, 0x28, + 0x85, 0x69, 0x9E, 0x72, 0xB3, 0x5F, 0xA8, 0x44, + 0x31, 0xDD, 0x2A, 0xC6, 0x07, 0xEB, 0x1C, 0xF0, + 0x5D, 0xB1, 0x46, 0xAA, 0x6B, 0x87, 0x70, 0x9C, + 0x9A, 0x76, 0x81, 0x6D, 0xAC, 0x40, 0xB7, 0x5B, + 0xF6, 0x1A, 0xED, 0x01, 0xC0, 0x2C, 0xDB, 0x37, + 0x42, 0xAE, 0x59, 0xB5, 0x74, 0x98, 0x6F, 0x83, + 0x2E, 0xC2, 0x35, 0xD9, 0x18, 0xF4, 0x03, 0xEF, + 0x00, 0xED, 0x19, 0xF4, 0x32, 0xDF, 0x2B, 0xC6, + 0x64, 0x89, 0x7D, 0x90, 0x56, 0xBB, 0x4F, 0xA2, + 0xC8, 0x25, 0xD1, 0x3C, 0xFA, 0x17, 0xE3, 0x0E, + 0xAC, 0x41, 0xB5, 0x58, 0x9E, 0x73, 0x87, 0x6A, + 0x53, 0xBE, 0x4A, 0xA7, 0x61, 0x8C, 0x78, 0x95, + 0x37, 0xDA, 0x2E, 0xC3, 0x05, 0xE8, 0x1C, 0xF1, + 0x9B, 0x76, 0x82, 0x6F, 0xA9, 0x44, 0xB0, 0x5D, + 0xFF, 0x12, 0xE6, 0x0B, 0xCD, 0x20, 0xD4, 0x39, + 0xA6, 0x4B, 0xBF, 0x52, 0x94, 0x79, 0x8D, 0x60, + 0xC2, 0x2F, 0xDB, 0x36, 0xF0, 0x1D, 0xE9, 0x04, + 0x6E, 0x83, 0x77, 0x9A, 0x5C, 0xB1, 0x45, 0xA8, + 0x0A, 0xE7, 0x13, 0xFE, 0x38, 0xD5, 0x21, 0xCC, + 0xF5, 0x18, 0xEC, 0x01, 0xC7, 0x2A, 0xDE, 0x33, + 0x91, 0x7C, 0x88, 0x65, 0xA3, 0x4E, 0xBA, 0x57, + 0x3D, 0xD0, 0x24, 0xC9, 0x0F, 0xE2, 0x16, 0xFB, + 0x59, 0xB4, 0x40, 0xAD, 0x6B, 0x86, 0x72, 0x9F, + 0x8F, 0x62, 0x96, 0x7B, 0xBD, 0x50, 0xA4, 0x49, + 0xEB, 0x06, 0xF2, 0x1F, 0xD9, 0x34, 0xC0, 0x2D, + 0x47, 0xAA, 0x5E, 0xB3, 0x75, 0x98, 0x6C, 0x81, + 0x23, 0xCE, 0x3A, 0xD7, 0x11, 0xFC, 0x08, 0xE5, + 0xDC, 0x31, 0xC5, 0x28, 0xEE, 0x03, 0xF7, 0x1A, + 0xB8, 0x55, 0xA1, 0x4C, 0x8A, 0x67, 0x93, 0x7E, + 0x14, 0xF9, 0x0D, 0xE0, 0x26, 0xCB, 0x3F, 0xD2, + 0x70, 0x9D, 0x69, 0x84, 0x42, 0xAF, 0x5B, 0xB6, + 0x29, 0xC4, 0x30, 0xDD, 0x1B, 0xF6, 0x02, 0xEF, + 0x4D, 0xA0, 0x54, 0xB9, 0x7F, 0x92, 0x66, 0x8B, + 0xE1, 0x0C, 0xF8, 0x15, 0xD3, 0x3E, 0xCA, 0x27, + 0x85, 0x68, 0x9C, 0x71, 0xB7, 0x5A, 0xAE, 0x43, + 0x7A, 0x97, 0x63, 0x8E, 0x48, 0xA5, 0x51, 0xBC, + 0x1E, 0xF3, 0x07, 0xEA, 0x2C, 0xC1, 0x35, 0xD8, + 0xB2, 0x5F, 0xAB, 0x46, 0x80, 0x6D, 0x99, 0x74, + 0xD6, 0x3B, 0xCF, 0x22, 0xE4, 0x09, 0xFD, 0x10, + 0x00, 0xEE, 0x1F, 0xF1, 0x3E, 0xD0, 0x21, 0xCF, + 0x7C, 0x92, 0x63, 0x8D, 0x42, 0xAC, 0x5D, 0xB3, + 0xF8, 0x16, 0xE7, 0x09, 0xC6, 0x28, 0xD9, 0x37, + 0x84, 0x6A, 0x9B, 0x75, 0xBA, 0x54, 0xA5, 0x4B, + 0x33, 0xDD, 0x2C, 0xC2, 0x0D, 0xE3, 0x12, 0xFC, + 0x4F, 0xA1, 0x50, 0xBE, 0x71, 0x9F, 0x6E, 0x80, + 0xCB, 0x25, 0xD4, 0x3A, 0xF5, 0x1B, 0xEA, 0x04, + 0xB7, 0x59, 0xA8, 0x46, 0x89, 0x67, 0x96, 0x78, + 0x66, 0x88, 0x79, 0x97, 0x58, 0xB6, 0x47, 0xA9, + 0x1A, 0xF4, 0x05, 0xEB, 0x24, 0xCA, 0x3B, 0xD5, + 0x9E, 0x70, 0x81, 0x6F, 0xA0, 0x4E, 0xBF, 0x51, + 0xE2, 0x0C, 0xFD, 0x13, 0xDC, 0x32, 0xC3, 0x2D, + 0x55, 0xBB, 0x4A, 0xA4, 0x6B, 0x85, 0x74, 0x9A, + 0x29, 0xC7, 0x36, 0xD8, 0x17, 0xF9, 0x08, 0xE6, + 0xAD, 0x43, 0xB2, 0x5C, 0x93, 0x7D, 0x8C, 0x62, + 0xD1, 0x3F, 0xCE, 0x20, 0xEF, 0x01, 0xF0, 0x1E, + 0xCC, 0x22, 0xD3, 0x3D, 0xF2, 0x1C, 0xED, 0x03, + 0xB0, 0x5E, 0xAF, 0x41, 0x8E, 0x60, 0x91, 0x7F, + 0x34, 0xDA, 0x2B, 0xC5, 0x0A, 0xE4, 0x15, 0xFB, + 0x48, 0xA6, 0x57, 0xB9, 0x76, 0x98, 0x69, 0x87, + 0xFF, 0x11, 0xE0, 0x0E, 0xC1, 0x2F, 0xDE, 0x30, + 0x83, 0x6D, 0x9C, 0x72, 0xBD, 0x53, 0xA2, 0x4C, + 0x07, 0xE9, 0x18, 0xF6, 0x39, 0xD7, 0x26, 0xC8, + 0x7B, 0x95, 0x64, 0x8A, 0x45, 0xAB, 0x5A, 0xB4, + 0xAA, 0x44, 0xB5, 0x5B, 0x94, 0x7A, 0x8B, 0x65, + 0xD6, 0x38, 0xC9, 0x27, 0xE8, 0x06, 0xF7, 0x19, + 0x52, 0xBC, 0x4D, 0xA3, 0x6C, 0x82, 0x73, 0x9D, + 0x2E, 0xC0, 0x31, 0xDF, 0x10, 0xFE, 0x0F, 0xE1, + 0x99, 0x77, 0x86, 0x68, 0xA7, 0x49, 0xB8, 0x56, + 0xE5, 0x0B, 0xFA, 0x14, 0xDB, 0x35, 0xC4, 0x2A, + 0x61, 0x8F, 0x7E, 0x90, 0x5F, 0xB1, 0x40, 0xAE, + 0x1D, 0xF3, 0x02, 0xEC, 0x23, 0xCD, 0x3C, 0xD2, + 0x00, 0xEF, 0x1D, 0xF2, 0x3A, 0xD5, 0x27, 0xC8, + 0x74, 0x9B, 0x69, 0x86, 0x4E, 0xA1, 0x53, 0xBC, + 0xE8, 0x07, 0xF5, 0x1A, 0xD2, 0x3D, 0xCF, 0x20, + 0x9C, 0x73, 0x81, 0x6E, 0xA6, 0x49, 0xBB, 0x54, + 0x13, 0xFC, 0x0E, 0xE1, 0x29, 0xC6, 0x34, 0xDB, + 0x67, 0x88, 0x7A, 0x95, 0x5D, 0xB2, 0x40, 0xAF, + 0xFB, 0x14, 0xE6, 0x09, 0xC1, 0x2E, 0xDC, 0x33, + 0x8F, 0x60, 0x92, 0x7D, 0xB5, 0x5A, 0xA8, 0x47, + 0x26, 0xC9, 0x3B, 0xD4, 0x1C, 0xF3, 0x01, 0xEE, + 0x52, 0xBD, 0x4F, 0xA0, 0x68, 0x87, 0x75, 0x9A, + 0xCE, 0x21, 0xD3, 0x3C, 0xF4, 0x1B, 0xE9, 0x06, + 0xBA, 0x55, 0xA7, 0x48, 0x80, 0x6F, 0x9D, 0x72, + 0x35, 0xDA, 0x28, 0xC7, 0x0F, 0xE0, 0x12, 0xFD, + 0x41, 0xAE, 0x5C, 0xB3, 0x7B, 0x94, 0x66, 0x89, + 0xDD, 0x32, 0xC0, 0x2F, 0xE7, 0x08, 0xFA, 0x15, + 0xA9, 0x46, 0xB4, 0x5B, 0x93, 0x7C, 0x8E, 0x61, + 0x4C, 0xA3, 0x51, 0xBE, 0x76, 0x99, 0x6B, 0x84, + 0x38, 0xD7, 0x25, 0xCA, 0x02, 0xED, 0x1F, 0xF0, + 0xA4, 0x4B, 0xB9, 0x56, 0x9E, 0x71, 0x83, 0x6C, + 0xD0, 0x3F, 0xCD, 0x22, 0xEA, 0x05, 0xF7, 0x18, + 0x5F, 0xB0, 0x42, 0xAD, 0x65, 0x8A, 0x78, 0x97, + 0x2B, 0xC4, 0x36, 0xD9, 0x11, 0xFE, 0x0C, 0xE3, + 0xB7, 0x58, 0xAA, 0x45, 0x8D, 0x62, 0x90, 0x7F, + 0xC3, 0x2C, 0xDE, 0x31, 0xF9, 0x16, 0xE4, 0x0B, + 0x6A, 0x85, 0x77, 0x98, 0x50, 0xBF, 0x4D, 0xA2, + 0x1E, 0xF1, 0x03, 0xEC, 0x24, 0xCB, 0x39, 0xD6, + 0x82, 0x6D, 0x9F, 0x70, 0xB8, 0x57, 0xA5, 0x4A, + 0xF6, 0x19, 0xEB, 0x04, 0xCC, 0x23, 0xD1, 0x3E, + 0x79, 0x96, 0x64, 0x8B, 0x43, 0xAC, 0x5E, 0xB1, + 0x0D, 0xE2, 0x10, 0xFF, 0x37, 0xD8, 0x2A, 0xC5, + 0x91, 0x7E, 0x8C, 0x63, 0xAB, 0x44, 0xB6, 0x59, + 0xE5, 0x0A, 0xF8, 0x17, 0xDF, 0x30, 0xC2, 0x2D, + 0x00, 0xF0, 0x23, 0xD3, 0x46, 0xB6, 0x65, 0x95, + 0x8C, 0x7C, 0xAF, 0x5F, 0xCA, 0x3A, 0xE9, 0x19, + 0xDB, 0x2B, 0xF8, 0x08, 0x9D, 0x6D, 0xBE, 0x4E, + 0x57, 0xA7, 0x74, 0x84, 0x11, 0xE1, 0x32, 0xC2, + 0x75, 0x85, 0x56, 0xA6, 0x33, 0xC3, 0x10, 0xE0, + 0xF9, 0x09, 0xDA, 0x2A, 0xBF, 0x4F, 0x9C, 0x6C, + 0xAE, 0x5E, 0x8D, 0x7D, 0xE8, 0x18, 0xCB, 0x3B, + 0x22, 0xD2, 0x01, 0xF1, 0x64, 0x94, 0x47, 0xB7, + 0xEA, 0x1A, 0xC9, 0x39, 0xAC, 0x5C, 0x8F, 0x7F, + 0x66, 0x96, 0x45, 0xB5, 0x20, 0xD0, 0x03, 0xF3, + 0x31, 0xC1, 0x12, 0xE2, 0x77, 0x87, 0x54, 0xA4, + 0xBD, 0x4D, 0x9E, 0x6E, 0xFB, 0x0B, 0xD8, 0x28, + 0x9F, 0x6F, 0xBC, 0x4C, 0xD9, 0x29, 0xFA, 0x0A, + 0x13, 0xE3, 0x30, 0xC0, 0x55, 0xA5, 0x76, 0x86, + 0x44, 0xB4, 0x67, 0x97, 0x02, 0xF2, 0x21, 0xD1, + 0xC8, 0x38, 0xEB, 0x1B, 0x8E, 0x7E, 0xAD, 0x5D, + 0x17, 0xE7, 0x34, 0xC4, 0x51, 0xA1, 0x72, 0x82, + 0x9B, 0x6B, 0xB8, 0x48, 0xDD, 0x2D, 0xFE, 0x0E, + 0xCC, 0x3C, 0xEF, 0x1F, 0x8A, 0x7A, 0xA9, 0x59, + 0x40, 0xB0, 0x63, 0x93, 0x06, 0xF6, 0x25, 0xD5, + 0x62, 0x92, 0x41, 0xB1, 0x24, 0xD4, 0x07, 0xF7, + 0xEE, 0x1E, 0xCD, 0x3D, 0xA8, 0x58, 0x8B, 0x7B, + 0xB9, 0x49, 0x9A, 0x6A, 0xFF, 0x0F, 0xDC, 0x2C, + 0x35, 0xC5, 0x16, 0xE6, 0x73, 0x83, 0x50, 0xA0, + 0xFD, 0x0D, 0xDE, 0x2E, 0xBB, 0x4B, 0x98, 0x68, + 0x71, 0x81, 0x52, 0xA2, 0x37, 0xC7, 0x14, 0xE4, + 0x26, 0xD6, 0x05, 0xF5, 0x60, 0x90, 0x43, 0xB3, + 0xAA, 0x5A, 0x89, 0x79, 0xEC, 0x1C, 0xCF, 0x3F, + 0x88, 0x78, 0xAB, 0x5B, 0xCE, 0x3E, 0xED, 0x1D, + 0x04, 0xF4, 0x27, 0xD7, 0x42, 0xB2, 0x61, 0x91, + 0x53, 0xA3, 0x70, 0x80, 0x15, 0xE5, 0x36, 0xC6, + 0xDF, 0x2F, 0xFC, 0x0C, 0x99, 0x69, 0xBA, 0x4A, + 0x00, 0xF1, 0x21, 0xD0, 0x42, 0xB3, 0x63, 0x92, + 0x84, 0x75, 0xA5, 0x54, 0xC6, 0x37, 0xE7, 0x16, + 0xCB, 0x3A, 0xEA, 0x1B, 0x89, 0x78, 0xA8, 0x59, + 0x4F, 0xBE, 0x6E, 0x9F, 0x0D, 0xFC, 0x2C, 0xDD, + 0x55, 0xA4, 0x74, 0x85, 0x17, 0xE6, 0x36, 0xC7, + 0xD1, 0x20, 0xF0, 0x01, 0x93, 0x62, 0xB2, 0x43, + 0x9E, 0x6F, 0xBF, 0x4E, 0xDC, 0x2D, 0xFD, 0x0C, + 0x1A, 0xEB, 0x3B, 0xCA, 0x58, 0xA9, 0x79, 0x88, + 0xAA, 0x5B, 0x8B, 0x7A, 0xE8, 0x19, 0xC9, 0x38, + 0x2E, 0xDF, 0x0F, 0xFE, 0x6C, 0x9D, 0x4D, 0xBC, + 0x61, 0x90, 0x40, 0xB1, 0x23, 0xD2, 0x02, 0xF3, + 0xE5, 0x14, 0xC4, 0x35, 0xA7, 0x56, 0x86, 0x77, + 0xFF, 0x0E, 0xDE, 0x2F, 0xBD, 0x4C, 0x9C, 0x6D, + 0x7B, 0x8A, 0x5A, 0xAB, 0x39, 0xC8, 0x18, 0xE9, + 0x34, 0xC5, 0x15, 0xE4, 0x76, 0x87, 0x57, 0xA6, + 0xB0, 0x41, 0x91, 0x60, 0xF2, 0x03, 0xD3, 0x22, + 0x97, 0x66, 0xB6, 0x47, 0xD5, 0x24, 0xF4, 0x05, + 0x13, 0xE2, 0x32, 0xC3, 0x51, 0xA0, 0x70, 0x81, + 0x5C, 0xAD, 0x7D, 0x8C, 0x1E, 0xEF, 0x3F, 0xCE, + 0xD8, 0x29, 0xF9, 0x08, 0x9A, 0x6B, 0xBB, 0x4A, + 0xC2, 0x33, 0xE3, 0x12, 0x80, 0x71, 0xA1, 0x50, + 0x46, 0xB7, 0x67, 0x96, 0x04, 0xF5, 0x25, 0xD4, + 0x09, 0xF8, 0x28, 0xD9, 0x4B, 0xBA, 0x6A, 0x9B, + 0x8D, 0x7C, 0xAC, 0x5D, 0xCF, 0x3E, 0xEE, 0x1F, + 0x3D, 0xCC, 0x1C, 0xED, 0x7F, 0x8E, 0x5E, 0xAF, + 0xB9, 0x48, 0x98, 0x69, 0xFB, 0x0A, 0xDA, 0x2B, + 0xF6, 0x07, 0xD7, 0x26, 0xB4, 0x45, 0x95, 0x64, + 0x72, 0x83, 0x53, 0xA2, 0x30, 0xC1, 0x11, 0xE0, + 0x68, 0x99, 0x49, 0xB8, 0x2A, 0xDB, 0x0B, 0xFA, + 0xEC, 0x1D, 0xCD, 0x3C, 0xAE, 0x5F, 0x8F, 0x7E, + 0xA3, 0x52, 0x82, 0x73, 0xE1, 0x10, 0xC0, 0x31, + 0x27, 0xD6, 0x06, 0xF7, 0x65, 0x94, 0x44, 0xB5, + 0x00, 0xF2, 0x27, 0xD5, 0x4E, 0xBC, 0x69, 0x9B, + 0x9C, 0x6E, 0xBB, 0x49, 0xD2, 0x20, 0xF5, 0x07, + 0xFB, 0x09, 0xDC, 0x2E, 0xB5, 0x47, 0x92, 0x60, + 0x67, 0x95, 0x40, 0xB2, 0x29, 0xDB, 0x0E, 0xFC, + 0x35, 0xC7, 0x12, 0xE0, 0x7B, 0x89, 0x5C, 0xAE, + 0xA9, 0x5B, 0x8E, 0x7C, 0xE7, 0x15, 0xC0, 0x32, + 0xCE, 0x3C, 0xE9, 0x1B, 0x80, 0x72, 0xA7, 0x55, + 0x52, 0xA0, 0x75, 0x87, 0x1C, 0xEE, 0x3B, 0xC9, + 0x6A, 0x98, 0x4D, 0xBF, 0x24, 0xD6, 0x03, 0xF1, + 0xF6, 0x04, 0xD1, 0x23, 0xB8, 0x4A, 0x9F, 0x6D, + 0x91, 0x63, 0xB6, 0x44, 0xDF, 0x2D, 0xF8, 0x0A, + 0x0D, 0xFF, 0x2A, 0xD8, 0x43, 0xB1, 0x64, 0x96, + 0x5F, 0xAD, 0x78, 0x8A, 0x11, 0xE3, 0x36, 0xC4, + 0xC3, 0x31, 0xE4, 0x16, 0x8D, 0x7F, 0xAA, 0x58, + 0xA4, 0x56, 0x83, 0x71, 0xEA, 0x18, 0xCD, 0x3F, + 0x38, 0xCA, 0x1F, 0xED, 0x76, 0x84, 0x51, 0xA3, + 0xD4, 0x26, 0xF3, 0x01, 0x9A, 0x68, 0xBD, 0x4F, + 0x48, 0xBA, 0x6F, 0x9D, 0x06, 0xF4, 0x21, 0xD3, + 0x2F, 0xDD, 0x08, 0xFA, 0x61, 0x93, 0x46, 0xB4, + 0xB3, 0x41, 0x94, 0x66, 0xFD, 0x0F, 0xDA, 0x28, + 0xE1, 0x13, 0xC6, 0x34, 0xAF, 0x5D, 0x88, 0x7A, + 0x7D, 0x8F, 0x5A, 0xA8, 0x33, 0xC1, 0x14, 0xE6, + 0x1A, 0xE8, 0x3D, 0xCF, 0x54, 0xA6, 0x73, 0x81, + 0x86, 0x74, 0xA1, 0x53, 0xC8, 0x3A, 0xEF, 0x1D, + 0xBE, 0x4C, 0x99, 0x6B, 0xF0, 0x02, 0xD7, 0x25, + 0x22, 0xD0, 0x05, 0xF7, 0x6C, 0x9E, 0x4B, 0xB9, + 0x45, 0xB7, 0x62, 0x90, 0x0B, 0xF9, 0x2C, 0xDE, + 0xD9, 0x2B, 0xFE, 0x0C, 0x97, 0x65, 0xB0, 0x42, + 0x8B, 0x79, 0xAC, 0x5E, 0xC5, 0x37, 0xE2, 0x10, + 0x17, 0xE5, 0x30, 0xC2, 0x59, 0xAB, 0x7E, 0x8C, + 0x70, 0x82, 0x57, 0xA5, 0x3E, 0xCC, 0x19, 0xEB, + 0xEC, 0x1E, 0xCB, 0x39, 0xA2, 0x50, 0x85, 0x77, + 0x00, 0xF3, 0x25, 0xD6, 0x4A, 0xB9, 0x6F, 0x9C, + 0x94, 0x67, 0xB1, 0x42, 0xDE, 0x2D, 0xFB, 0x08, + 0xEB, 0x18, 0xCE, 0x3D, 0xA1, 0x52, 0x84, 0x77, + 0x7F, 0x8C, 0x5A, 0xA9, 0x35, 0xC6, 0x10, 0xE3, + 0x15, 0xE6, 0x30, 0xC3, 0x5F, 0xAC, 0x7A, 0x89, + 0x81, 0x72, 0xA4, 0x57, 0xCB, 0x38, 0xEE, 0x1D, + 0xFE, 0x0D, 0xDB, 0x28, 0xB4, 0x47, 0x91, 0x62, + 0x6A, 0x99, 0x4F, 0xBC, 0x20, 0xD3, 0x05, 0xF6, + 0x2A, 0xD9, 0x0F, 0xFC, 0x60, 0x93, 0x45, 0xB6, + 0xBE, 0x4D, 0x9B, 0x68, 0xF4, 0x07, 0xD1, 0x22, + 0xC1, 0x32, 0xE4, 0x17, 0x8B, 0x78, 0xAE, 0x5D, + 0x55, 0xA6, 0x70, 0x83, 0x1F, 0xEC, 0x3A, 0xC9, + 0x3F, 0xCC, 0x1A, 0xE9, 0x75, 0x86, 0x50, 0xA3, + 0xAB, 0x58, 0x8E, 0x7D, 0xE1, 0x12, 0xC4, 0x37, + 0xD4, 0x27, 0xF1, 0x02, 0x9E, 0x6D, 0xBB, 0x48, + 0x40, 0xB3, 0x65, 0x96, 0x0A, 0xF9, 0x2F, 0xDC, + 0x54, 0xA7, 0x71, 0x82, 0x1E, 0xED, 0x3B, 0xC8, + 0xC0, 0x33, 0xE5, 0x16, 0x8A, 0x79, 0xAF, 0x5C, + 0xBF, 0x4C, 0x9A, 0x69, 0xF5, 0x06, 0xD0, 0x23, + 0x2B, 0xD8, 0x0E, 0xFD, 0x61, 0x92, 0x44, 0xB7, + 0x41, 0xB2, 0x64, 0x97, 0x0B, 0xF8, 0x2E, 0xDD, + 0xD5, 0x26, 0xF0, 0x03, 0x9F, 0x6C, 0xBA, 0x49, + 0xAA, 0x59, 0x8F, 0x7C, 0xE0, 0x13, 0xC5, 0x36, + 0x3E, 0xCD, 0x1B, 0xE8, 0x74, 0x87, 0x51, 0xA2, + 0x7E, 0x8D, 0x5B, 0xA8, 0x34, 0xC7, 0x11, 0xE2, + 0xEA, 0x19, 0xCF, 0x3C, 0xA0, 0x53, 0x85, 0x76, + 0x95, 0x66, 0xB0, 0x43, 0xDF, 0x2C, 0xFA, 0x09, + 0x01, 0xF2, 0x24, 0xD7, 0x4B, 0xB8, 0x6E, 0x9D, + 0x6B, 0x98, 0x4E, 0xBD, 0x21, 0xD2, 0x04, 0xF7, + 0xFF, 0x0C, 0xDA, 0x29, 0xB5, 0x46, 0x90, 0x63, + 0x80, 0x73, 0xA5, 0x56, 0xCA, 0x39, 0xEF, 0x1C, + 0x14, 0xE7, 0x31, 0xC2, 0x5E, 0xAD, 0x7B, 0x88, + 0x00, 0xF4, 0x2B, 0xDF, 0x56, 0xA2, 0x7D, 0x89, + 0xAC, 0x58, 0x87, 0x73, 0xFA, 0x0E, 0xD1, 0x25, + 0x9B, 0x6F, 0xB0, 0x44, 0xCD, 0x39, 0xE6, 0x12, + 0x37, 0xC3, 0x1C, 0xE8, 0x61, 0x95, 0x4A, 0xBE, + 0xF5, 0x01, 0xDE, 0x2A, 0xA3, 0x57, 0x88, 0x7C, + 0x59, 0xAD, 0x72, 0x86, 0x0F, 0xFB, 0x24, 0xD0, + 0x6E, 0x9A, 0x45, 0xB1, 0x38, 0xCC, 0x13, 0xE7, + 0xC2, 0x36, 0xE9, 0x1D, 0x94, 0x60, 0xBF, 0x4B, + 0x29, 0xDD, 0x02, 0xF6, 0x7F, 0x8B, 0x54, 0xA0, + 0x85, 0x71, 0xAE, 0x5A, 0xD3, 0x27, 0xF8, 0x0C, + 0xB2, 0x46, 0x99, 0x6D, 0xE4, 0x10, 0xCF, 0x3B, + 0x1E, 0xEA, 0x35, 0xC1, 0x48, 0xBC, 0x63, 0x97, + 0xDC, 0x28, 0xF7, 0x03, 0x8A, 0x7E, 0xA1, 0x55, + 0x70, 0x84, 0x5B, 0xAF, 0x26, 0xD2, 0x0D, 0xF9, + 0x47, 0xB3, 0x6C, 0x98, 0x11, 0xE5, 0x3A, 0xCE, + 0xEB, 0x1F, 0xC0, 0x34, 0xBD, 0x49, 0x96, 0x62, + 0x52, 0xA6, 0x79, 0x8D, 0x04, 0xF0, 0x2F, 0xDB, + 0xFE, 0x0A, 0xD5, 0x21, 0xA8, 0x5C, 0x83, 0x77, + 0xC9, 0x3D, 0xE2, 0x16, 0x9F, 0x6B, 0xB4, 0x40, + 0x65, 0x91, 0x4E, 0xBA, 0x33, 0xC7, 0x18, 0xEC, + 0xA7, 0x53, 0x8C, 0x78, 0xF1, 0x05, 0xDA, 0x2E, + 0x0B, 0xFF, 0x20, 0xD4, 0x5D, 0xA9, 0x76, 0x82, + 0x3C, 0xC8, 0x17, 0xE3, 0x6A, 0x9E, 0x41, 0xB5, + 0x90, 0x64, 0xBB, 0x4F, 0xC6, 0x32, 0xED, 0x19, + 0x7B, 0x8F, 0x50, 0xA4, 0x2D, 0xD9, 0x06, 0xF2, + 0xD7, 0x23, 0xFC, 0x08, 0x81, 0x75, 0xAA, 0x5E, + 0xE0, 0x14, 0xCB, 0x3F, 0xB6, 0x42, 0x9D, 0x69, + 0x4C, 0xB8, 0x67, 0x93, 0x1A, 0xEE, 0x31, 0xC5, + 0x8E, 0x7A, 0xA5, 0x51, 0xD8, 0x2C, 0xF3, 0x07, + 0x22, 0xD6, 0x09, 0xFD, 0x74, 0x80, 0x5F, 0xAB, + 0x15, 0xE1, 0x3E, 0xCA, 0x43, 0xB7, 0x68, 0x9C, + 0xB9, 0x4D, 0x92, 0x66, 0xEF, 0x1B, 0xC4, 0x30, + 0x00, 0xF5, 0x29, 0xDC, 0x52, 0xA7, 0x7B, 0x8E, + 0xA4, 0x51, 0x8D, 0x78, 0xF6, 0x03, 0xDF, 0x2A, + 0x8B, 0x7E, 0xA2, 0x57, 0xD9, 0x2C, 0xF0, 0x05, + 0x2F, 0xDA, 0x06, 0xF3, 0x7D, 0x88, 0x54, 0xA1, + 0xD5, 0x20, 0xFC, 0x09, 0x87, 0x72, 0xAE, 0x5B, + 0x71, 0x84, 0x58, 0xAD, 0x23, 0xD6, 0x0A, 0xFF, + 0x5E, 0xAB, 0x77, 0x82, 0x0C, 0xF9, 0x25, 0xD0, + 0xFA, 0x0F, 0xD3, 0x26, 0xA8, 0x5D, 0x81, 0x74, + 0x69, 0x9C, 0x40, 0xB5, 0x3B, 0xCE, 0x12, 0xE7, + 0xCD, 0x38, 0xE4, 0x11, 0x9F, 0x6A, 0xB6, 0x43, + 0xE2, 0x17, 0xCB, 0x3E, 0xB0, 0x45, 0x99, 0x6C, + 0x46, 0xB3, 0x6F, 0x9A, 0x14, 0xE1, 0x3D, 0xC8, + 0xBC, 0x49, 0x95, 0x60, 0xEE, 0x1B, 0xC7, 0x32, + 0x18, 0xED, 0x31, 0xC4, 0x4A, 0xBF, 0x63, 0x96, + 0x37, 0xC2, 0x1E, 0xEB, 0x65, 0x90, 0x4C, 0xB9, + 0x93, 0x66, 0xBA, 0x4F, 0xC1, 0x34, 0xE8, 0x1D, + 0xD2, 0x27, 0xFB, 0x0E, 0x80, 0x75, 0xA9, 0x5C, + 0x76, 0x83, 0x5F, 0xAA, 0x24, 0xD1, 0x0D, 0xF8, + 0x59, 0xAC, 0x70, 0x85, 0x0B, 0xFE, 0x22, 0xD7, + 0xFD, 0x08, 0xD4, 0x21, 0xAF, 0x5A, 0x86, 0x73, + 0x07, 0xF2, 0x2E, 0xDB, 0x55, 0xA0, 0x7C, 0x89, + 0xA3, 0x56, 0x8A, 0x7F, 0xF1, 0x04, 0xD8, 0x2D, + 0x8C, 0x79, 0xA5, 0x50, 0xDE, 0x2B, 0xF7, 0x02, + 0x28, 0xDD, 0x01, 0xF4, 0x7A, 0x8F, 0x53, 0xA6, + 0xBB, 0x4E, 0x92, 0x67, 0xE9, 0x1C, 0xC0, 0x35, + 0x1F, 0xEA, 0x36, 0xC3, 0x4D, 0xB8, 0x64, 0x91, + 0x30, 0xC5, 0x19, 0xEC, 0x62, 0x97, 0x4B, 0xBE, + 0x94, 0x61, 0xBD, 0x48, 0xC6, 0x33, 0xEF, 0x1A, + 0x6E, 0x9B, 0x47, 0xB2, 0x3C, 0xC9, 0x15, 0xE0, + 0xCA, 0x3F, 0xE3, 0x16, 0x98, 0x6D, 0xB1, 0x44, + 0xE5, 0x10, 0xCC, 0x39, 0xB7, 0x42, 0x9E, 0x6B, + 0x41, 0xB4, 0x68, 0x9D, 0x13, 0xE6, 0x3A, 0xCF, + 0x00, 0xF6, 0x2F, 0xD9, 0x5E, 0xA8, 0x71, 0x87, + 0xBC, 0x4A, 0x93, 0x65, 0xE2, 0x14, 0xCD, 0x3B, + 0xBB, 0x4D, 0x94, 0x62, 0xE5, 0x13, 0xCA, 0x3C, + 0x07, 0xF1, 0x28, 0xDE, 0x59, 0xAF, 0x76, 0x80, + 0xB5, 0x43, 0x9A, 0x6C, 0xEB, 0x1D, 0xC4, 0x32, + 0x09, 0xFF, 0x26, 0xD0, 0x57, 0xA1, 0x78, 0x8E, + 0x0E, 0xF8, 0x21, 0xD7, 0x50, 0xA6, 0x7F, 0x89, + 0xB2, 0x44, 0x9D, 0x6B, 0xEC, 0x1A, 0xC3, 0x35, + 0xA9, 0x5F, 0x86, 0x70, 0xF7, 0x01, 0xD8, 0x2E, + 0x15, 0xE3, 0x3A, 0xCC, 0x4B, 0xBD, 0x64, 0x92, + 0x12, 0xE4, 0x3D, 0xCB, 0x4C, 0xBA, 0x63, 0x95, + 0xAE, 0x58, 0x81, 0x77, 0xF0, 0x06, 0xDF, 0x29, + 0x1C, 0xEA, 0x33, 0xC5, 0x42, 0xB4, 0x6D, 0x9B, + 0xA0, 0x56, 0x8F, 0x79, 0xFE, 0x08, 0xD1, 0x27, + 0xA7, 0x51, 0x88, 0x7E, 0xF9, 0x0F, 0xD6, 0x20, + 0x1B, 0xED, 0x34, 0xC2, 0x45, 0xB3, 0x6A, 0x9C, + 0x91, 0x67, 0xBE, 0x48, 0xCF, 0x39, 0xE0, 0x16, + 0x2D, 0xDB, 0x02, 0xF4, 0x73, 0x85, 0x5C, 0xAA, + 0x2A, 0xDC, 0x05, 0xF3, 0x74, 0x82, 0x5B, 0xAD, + 0x96, 0x60, 0xB9, 0x4F, 0xC8, 0x3E, 0xE7, 0x11, + 0x24, 0xD2, 0x0B, 0xFD, 0x7A, 0x8C, 0x55, 0xA3, + 0x98, 0x6E, 0xB7, 0x41, 0xC6, 0x30, 0xE9, 0x1F, + 0x9F, 0x69, 0xB0, 0x46, 0xC1, 0x37, 0xEE, 0x18, + 0x23, 0xD5, 0x0C, 0xFA, 0x7D, 0x8B, 0x52, 0xA4, + 0x38, 0xCE, 0x17, 0xE1, 0x66, 0x90, 0x49, 0xBF, + 0x84, 0x72, 0xAB, 0x5D, 0xDA, 0x2C, 0xF5, 0x03, + 0x83, 0x75, 0xAC, 0x5A, 0xDD, 0x2B, 0xF2, 0x04, + 0x3F, 0xC9, 0x10, 0xE6, 0x61, 0x97, 0x4E, 0xB8, + 0x8D, 0x7B, 0xA2, 0x54, 0xD3, 0x25, 0xFC, 0x0A, + 0x31, 0xC7, 0x1E, 0xE8, 0x6F, 0x99, 0x40, 0xB6, + 0x36, 0xC0, 0x19, 0xEF, 0x68, 0x9E, 0x47, 0xB1, + 0x8A, 0x7C, 0xA5, 0x53, 0xD4, 0x22, 0xFB, 0x0D, + 0x00, 0xF7, 0x2D, 0xDA, 0x5A, 0xAD, 0x77, 0x80, + 0xB4, 0x43, 0x99, 0x6E, 0xEE, 0x19, 0xC3, 0x34, + 0xAB, 0x5C, 0x86, 0x71, 0xF1, 0x06, 0xDC, 0x2B, + 0x1F, 0xE8, 0x32, 0xC5, 0x45, 0xB2, 0x68, 0x9F, + 0x95, 0x62, 0xB8, 0x4F, 0xCF, 0x38, 0xE2, 0x15, + 0x21, 0xD6, 0x0C, 0xFB, 0x7B, 0x8C, 0x56, 0xA1, + 0x3E, 0xC9, 0x13, 0xE4, 0x64, 0x93, 0x49, 0xBE, + 0x8A, 0x7D, 0xA7, 0x50, 0xD0, 0x27, 0xFD, 0x0A, + 0xE9, 0x1E, 0xC4, 0x33, 0xB3, 0x44, 0x9E, 0x69, + 0x5D, 0xAA, 0x70, 0x87, 0x07, 0xF0, 0x2A, 0xDD, + 0x42, 0xB5, 0x6F, 0x98, 0x18, 0xEF, 0x35, 0xC2, + 0xF6, 0x01, 0xDB, 0x2C, 0xAC, 0x5B, 0x81, 0x76, + 0x7C, 0x8B, 0x51, 0xA6, 0x26, 0xD1, 0x0B, 0xFC, + 0xC8, 0x3F, 0xE5, 0x12, 0x92, 0x65, 0xBF, 0x48, + 0xD7, 0x20, 0xFA, 0x0D, 0x8D, 0x7A, 0xA0, 0x57, + 0x63, 0x94, 0x4E, 0xB9, 0x39, 0xCE, 0x14, 0xE3, + 0x11, 0xE6, 0x3C, 0xCB, 0x4B, 0xBC, 0x66, 0x91, + 0xA5, 0x52, 0x88, 0x7F, 0xFF, 0x08, 0xD2, 0x25, + 0xBA, 0x4D, 0x97, 0x60, 0xE0, 0x17, 0xCD, 0x3A, + 0x0E, 0xF9, 0x23, 0xD4, 0x54, 0xA3, 0x79, 0x8E, + 0x84, 0x73, 0xA9, 0x5E, 0xDE, 0x29, 0xF3, 0x04, + 0x30, 0xC7, 0x1D, 0xEA, 0x6A, 0x9D, 0x47, 0xB0, + 0x2F, 0xD8, 0x02, 0xF5, 0x75, 0x82, 0x58, 0xAF, + 0x9B, 0x6C, 0xB6, 0x41, 0xC1, 0x36, 0xEC, 0x1B, + 0xF8, 0x0F, 0xD5, 0x22, 0xA2, 0x55, 0x8F, 0x78, + 0x4C, 0xBB, 0x61, 0x96, 0x16, 0xE1, 0x3B, 0xCC, + 0x53, 0xA4, 0x7E, 0x89, 0x09, 0xFE, 0x24, 0xD3, + 0xE7, 0x10, 0xCA, 0x3D, 0xBD, 0x4A, 0x90, 0x67, + 0x6D, 0x9A, 0x40, 0xB7, 0x37, 0xC0, 0x1A, 0xED, + 0xD9, 0x2E, 0xF4, 0x03, 0x83, 0x74, 0xAE, 0x59, + 0xC6, 0x31, 0xEB, 0x1C, 0x9C, 0x6B, 0xB1, 0x46, + 0x72, 0x85, 0x5F, 0xA8, 0x28, 0xDF, 0x05, 0xF2, + 0x00, 0xF8, 0x33, 0xCB, 0x66, 0x9E, 0x55, 0xAD, + 0xCC, 0x34, 0xFF, 0x07, 0xAA, 0x52, 0x99, 0x61, + 0x5B, 0xA3, 0x68, 0x90, 0x3D, 0xC5, 0x0E, 0xF6, + 0x97, 0x6F, 0xA4, 0x5C, 0xF1, 0x09, 0xC2, 0x3A, + 0xB6, 0x4E, 0x85, 0x7D, 0xD0, 0x28, 0xE3, 0x1B, + 0x7A, 0x82, 0x49, 0xB1, 0x1C, 0xE4, 0x2F, 0xD7, + 0xED, 0x15, 0xDE, 0x26, 0x8B, 0x73, 0xB8, 0x40, + 0x21, 0xD9, 0x12, 0xEA, 0x47, 0xBF, 0x74, 0x8C, + 0xAF, 0x57, 0x9C, 0x64, 0xC9, 0x31, 0xFA, 0x02, + 0x63, 0x9B, 0x50, 0xA8, 0x05, 0xFD, 0x36, 0xCE, + 0xF4, 0x0C, 0xC7, 0x3F, 0x92, 0x6A, 0xA1, 0x59, + 0x38, 0xC0, 0x0B, 0xF3, 0x5E, 0xA6, 0x6D, 0x95, + 0x19, 0xE1, 0x2A, 0xD2, 0x7F, 0x87, 0x4C, 0xB4, + 0xD5, 0x2D, 0xE6, 0x1E, 0xB3, 0x4B, 0x80, 0x78, + 0x42, 0xBA, 0x71, 0x89, 0x24, 0xDC, 0x17, 0xEF, + 0x8E, 0x76, 0xBD, 0x45, 0xE8, 0x10, 0xDB, 0x23, + 0x9D, 0x65, 0xAE, 0x56, 0xFB, 0x03, 0xC8, 0x30, + 0x51, 0xA9, 0x62, 0x9A, 0x37, 0xCF, 0x04, 0xFC, + 0xC6, 0x3E, 0xF5, 0x0D, 0xA0, 0x58, 0x93, 0x6B, + 0x0A, 0xF2, 0x39, 0xC1, 0x6C, 0x94, 0x5F, 0xA7, + 0x2B, 0xD3, 0x18, 0xE0, 0x4D, 0xB5, 0x7E, 0x86, + 0xE7, 0x1F, 0xD4, 0x2C, 0x81, 0x79, 0xB2, 0x4A, + 0x70, 0x88, 0x43, 0xBB, 0x16, 0xEE, 0x25, 0xDD, + 0xBC, 0x44, 0x8F, 0x77, 0xDA, 0x22, 0xE9, 0x11, + 0x32, 0xCA, 0x01, 0xF9, 0x54, 0xAC, 0x67, 0x9F, + 0xFE, 0x06, 0xCD, 0x35, 0x98, 0x60, 0xAB, 0x53, + 0x69, 0x91, 0x5A, 0xA2, 0x0F, 0xF7, 0x3C, 0xC4, + 0xA5, 0x5D, 0x96, 0x6E, 0xC3, 0x3B, 0xF0, 0x08, + 0x84, 0x7C, 0xB7, 0x4F, 0xE2, 0x1A, 0xD1, 0x29, + 0x48, 0xB0, 0x7B, 0x83, 0x2E, 0xD6, 0x1D, 0xE5, + 0xDF, 0x27, 0xEC, 0x14, 0xB9, 0x41, 0x8A, 0x72, + 0x13, 0xEB, 0x20, 0xD8, 0x75, 0x8D, 0x46, 0xBE, + 0x00, 0xF9, 0x31, 0xC8, 0x62, 0x9B, 0x53, 0xAA, + 0xC4, 0x3D, 0xF5, 0x0C, 0xA6, 0x5F, 0x97, 0x6E, + 0x4B, 0xB2, 0x7A, 0x83, 0x29, 0xD0, 0x18, 0xE1, + 0x8F, 0x76, 0xBE, 0x47, 0xED, 0x14, 0xDC, 0x25, + 0x96, 0x6F, 0xA7, 0x5E, 0xF4, 0x0D, 0xC5, 0x3C, + 0x52, 0xAB, 0x63, 0x9A, 0x30, 0xC9, 0x01, 0xF8, + 0xDD, 0x24, 0xEC, 0x15, 0xBF, 0x46, 0x8E, 0x77, + 0x19, 0xE0, 0x28, 0xD1, 0x7B, 0x82, 0x4A, 0xB3, + 0xEF, 0x16, 0xDE, 0x27, 0x8D, 0x74, 0xBC, 0x45, + 0x2B, 0xD2, 0x1A, 0xE3, 0x49, 0xB0, 0x78, 0x81, + 0xA4, 0x5D, 0x95, 0x6C, 0xC6, 0x3F, 0xF7, 0x0E, + 0x60, 0x99, 0x51, 0xA8, 0x02, 0xFB, 0x33, 0xCA, + 0x79, 0x80, 0x48, 0xB1, 0x1B, 0xE2, 0x2A, 0xD3, + 0xBD, 0x44, 0x8C, 0x75, 0xDF, 0x26, 0xEE, 0x17, + 0x32, 0xCB, 0x03, 0xFA, 0x50, 0xA9, 0x61, 0x98, + 0xF6, 0x0F, 0xC7, 0x3E, 0x94, 0x6D, 0xA5, 0x5C, + 0x1D, 0xE4, 0x2C, 0xD5, 0x7F, 0x86, 0x4E, 0xB7, + 0xD9, 0x20, 0xE8, 0x11, 0xBB, 0x42, 0x8A, 0x73, + 0x56, 0xAF, 0x67, 0x9E, 0x34, 0xCD, 0x05, 0xFC, + 0x92, 0x6B, 0xA3, 0x5A, 0xF0, 0x09, 0xC1, 0x38, + 0x8B, 0x72, 0xBA, 0x43, 0xE9, 0x10, 0xD8, 0x21, + 0x4F, 0xB6, 0x7E, 0x87, 0x2D, 0xD4, 0x1C, 0xE5, + 0xC0, 0x39, 0xF1, 0x08, 0xA2, 0x5B, 0x93, 0x6A, + 0x04, 0xFD, 0x35, 0xCC, 0x66, 0x9F, 0x57, 0xAE, + 0xF2, 0x0B, 0xC3, 0x3A, 0x90, 0x69, 0xA1, 0x58, + 0x36, 0xCF, 0x07, 0xFE, 0x54, 0xAD, 0x65, 0x9C, + 0xB9, 0x40, 0x88, 0x71, 0xDB, 0x22, 0xEA, 0x13, + 0x7D, 0x84, 0x4C, 0xB5, 0x1F, 0xE6, 0x2E, 0xD7, + 0x64, 0x9D, 0x55, 0xAC, 0x06, 0xFF, 0x37, 0xCE, + 0xA0, 0x59, 0x91, 0x68, 0xC2, 0x3B, 0xF3, 0x0A, + 0x2F, 0xD6, 0x1E, 0xE7, 0x4D, 0xB4, 0x7C, 0x85, + 0xEB, 0x12, 0xDA, 0x23, 0x89, 0x70, 0xB8, 0x41, + 0x00, 0xFA, 0x37, 0xCD, 0x6E, 0x94, 0x59, 0xA3, + 0xDC, 0x26, 0xEB, 0x11, 0xB2, 0x48, 0x85, 0x7F, + 0x7B, 0x81, 0x4C, 0xB6, 0x15, 0xEF, 0x22, 0xD8, + 0xA7, 0x5D, 0x90, 0x6A, 0xC9, 0x33, 0xFE, 0x04, + 0xF6, 0x0C, 0xC1, 0x3B, 0x98, 0x62, 0xAF, 0x55, + 0x2A, 0xD0, 0x1D, 0xE7, 0x44, 0xBE, 0x73, 0x89, + 0x8D, 0x77, 0xBA, 0x40, 0xE3, 0x19, 0xD4, 0x2E, + 0x51, 0xAB, 0x66, 0x9C, 0x3F, 0xC5, 0x08, 0xF2, + 0x2F, 0xD5, 0x18, 0xE2, 0x41, 0xBB, 0x76, 0x8C, + 0xF3, 0x09, 0xC4, 0x3E, 0x9D, 0x67, 0xAA, 0x50, + 0x54, 0xAE, 0x63, 0x99, 0x3A, 0xC0, 0x0D, 0xF7, + 0x88, 0x72, 0xBF, 0x45, 0xE6, 0x1C, 0xD1, 0x2B, + 0xD9, 0x23, 0xEE, 0x14, 0xB7, 0x4D, 0x80, 0x7A, + 0x05, 0xFF, 0x32, 0xC8, 0x6B, 0x91, 0x5C, 0xA6, + 0xA2, 0x58, 0x95, 0x6F, 0xCC, 0x36, 0xFB, 0x01, + 0x7E, 0x84, 0x49, 0xB3, 0x10, 0xEA, 0x27, 0xDD, + 0x5E, 0xA4, 0x69, 0x93, 0x30, 0xCA, 0x07, 0xFD, + 0x82, 0x78, 0xB5, 0x4F, 0xEC, 0x16, 0xDB, 0x21, + 0x25, 0xDF, 0x12, 0xE8, 0x4B, 0xB1, 0x7C, 0x86, + 0xF9, 0x03, 0xCE, 0x34, 0x97, 0x6D, 0xA0, 0x5A, + 0xA8, 0x52, 0x9F, 0x65, 0xC6, 0x3C, 0xF1, 0x0B, + 0x74, 0x8E, 0x43, 0xB9, 0x1A, 0xE0, 0x2D, 0xD7, + 0xD3, 0x29, 0xE4, 0x1E, 0xBD, 0x47, 0x8A, 0x70, + 0x0F, 0xF5, 0x38, 0xC2, 0x61, 0x9B, 0x56, 0xAC, + 0x71, 0x8B, 0x46, 0xBC, 0x1F, 0xE5, 0x28, 0xD2, + 0xAD, 0x57, 0x9A, 0x60, 0xC3, 0x39, 0xF4, 0x0E, + 0x0A, 0xF0, 0x3D, 0xC7, 0x64, 0x9E, 0x53, 0xA9, + 0xD6, 0x2C, 0xE1, 0x1B, 0xB8, 0x42, 0x8F, 0x75, + 0x87, 0x7D, 0xB0, 0x4A, 0xE9, 0x13, 0xDE, 0x24, + 0x5B, 0xA1, 0x6C, 0x96, 0x35, 0xCF, 0x02, 0xF8, + 0xFC, 0x06, 0xCB, 0x31, 0x92, 0x68, 0xA5, 0x5F, + 0x20, 0xDA, 0x17, 0xED, 0x4E, 0xB4, 0x79, 0x83, + 0x00, 0xFB, 0x35, 0xCE, 0x6A, 0x91, 0x5F, 0xA4, + 0xD4, 0x2F, 0xE1, 0x1A, 0xBE, 0x45, 0x8B, 0x70, + 0x6B, 0x90, 0x5E, 0xA5, 0x01, 0xFA, 0x34, 0xCF, + 0xBF, 0x44, 0x8A, 0x71, 0xD5, 0x2E, 0xE0, 0x1B, + 0xD6, 0x2D, 0xE3, 0x18, 0xBC, 0x47, 0x89, 0x72, + 0x02, 0xF9, 0x37, 0xCC, 0x68, 0x93, 0x5D, 0xA6, + 0xBD, 0x46, 0x88, 0x73, 0xD7, 0x2C, 0xE2, 0x19, + 0x69, 0x92, 0x5C, 0xA7, 0x03, 0xF8, 0x36, 0xCD, + 0x6F, 0x94, 0x5A, 0xA1, 0x05, 0xFE, 0x30, 0xCB, + 0xBB, 0x40, 0x8E, 0x75, 0xD1, 0x2A, 0xE4, 0x1F, + 0x04, 0xFF, 0x31, 0xCA, 0x6E, 0x95, 0x5B, 0xA0, + 0xD0, 0x2B, 0xE5, 0x1E, 0xBA, 0x41, 0x8F, 0x74, + 0xB9, 0x42, 0x8C, 0x77, 0xD3, 0x28, 0xE6, 0x1D, + 0x6D, 0x96, 0x58, 0xA3, 0x07, 0xFC, 0x32, 0xC9, + 0xD2, 0x29, 0xE7, 0x1C, 0xB8, 0x43, 0x8D, 0x76, + 0x06, 0xFD, 0x33, 0xC8, 0x6C, 0x97, 0x59, 0xA2, + 0xDE, 0x25, 0xEB, 0x10, 0xB4, 0x4F, 0x81, 0x7A, + 0x0A, 0xF1, 0x3F, 0xC4, 0x60, 0x9B, 0x55, 0xAE, + 0xB5, 0x4E, 0x80, 0x7B, 0xDF, 0x24, 0xEA, 0x11, + 0x61, 0x9A, 0x54, 0xAF, 0x0B, 0xF0, 0x3E, 0xC5, + 0x08, 0xF3, 0x3D, 0xC6, 0x62, 0x99, 0x57, 0xAC, + 0xDC, 0x27, 0xE9, 0x12, 0xB6, 0x4D, 0x83, 0x78, + 0x63, 0x98, 0x56, 0xAD, 0x09, 0xF2, 0x3C, 0xC7, + 0xB7, 0x4C, 0x82, 0x79, 0xDD, 0x26, 0xE8, 0x13, + 0xB1, 0x4A, 0x84, 0x7F, 0xDB, 0x20, 0xEE, 0x15, + 0x65, 0x9E, 0x50, 0xAB, 0x0F, 0xF4, 0x3A, 0xC1, + 0xDA, 0x21, 0xEF, 0x14, 0xB0, 0x4B, 0x85, 0x7E, + 0x0E, 0xF5, 0x3B, 0xC0, 0x64, 0x9F, 0x51, 0xAA, + 0x67, 0x9C, 0x52, 0xA9, 0x0D, 0xF6, 0x38, 0xC3, + 0xB3, 0x48, 0x86, 0x7D, 0xD9, 0x22, 0xEC, 0x17, + 0x0C, 0xF7, 0x39, 0xC2, 0x66, 0x9D, 0x53, 0xA8, + 0xD8, 0x23, 0xED, 0x16, 0xB2, 0x49, 0x87, 0x7C, + 0x00, 0xFC, 0x3B, 0xC7, 0x76, 0x8A, 0x4D, 0xB1, + 0xEC, 0x10, 0xD7, 0x2B, 0x9A, 0x66, 0xA1, 0x5D, + 0x1B, 0xE7, 0x20, 0xDC, 0x6D, 0x91, 0x56, 0xAA, + 0xF7, 0x0B, 0xCC, 0x30, 0x81, 0x7D, 0xBA, 0x46, + 0x36, 0xCA, 0x0D, 0xF1, 0x40, 0xBC, 0x7B, 0x87, + 0xDA, 0x26, 0xE1, 0x1D, 0xAC, 0x50, 0x97, 0x6B, + 0x2D, 0xD1, 0x16, 0xEA, 0x5B, 0xA7, 0x60, 0x9C, + 0xC1, 0x3D, 0xFA, 0x06, 0xB7, 0x4B, 0x8C, 0x70, + 0x6C, 0x90, 0x57, 0xAB, 0x1A, 0xE6, 0x21, 0xDD, + 0x80, 0x7C, 0xBB, 0x47, 0xF6, 0x0A, 0xCD, 0x31, + 0x77, 0x8B, 0x4C, 0xB0, 0x01, 0xFD, 0x3A, 0xC6, + 0x9B, 0x67, 0xA0, 0x5C, 0xED, 0x11, 0xD6, 0x2A, + 0x5A, 0xA6, 0x61, 0x9D, 0x2C, 0xD0, 0x17, 0xEB, + 0xB6, 0x4A, 0x8D, 0x71, 0xC0, 0x3C, 0xFB, 0x07, + 0x41, 0xBD, 0x7A, 0x86, 0x37, 0xCB, 0x0C, 0xF0, + 0xAD, 0x51, 0x96, 0x6A, 0xDB, 0x27, 0xE0, 0x1C, + 0xD8, 0x24, 0xE3, 0x1F, 0xAE, 0x52, 0x95, 0x69, + 0x34, 0xC8, 0x0F, 0xF3, 0x42, 0xBE, 0x79, 0x85, + 0xC3, 0x3F, 0xF8, 0x04, 0xB5, 0x49, 0x8E, 0x72, + 0x2F, 0xD3, 0x14, 0xE8, 0x59, 0xA5, 0x62, 0x9E, + 0xEE, 0x12, 0xD5, 0x29, 0x98, 0x64, 0xA3, 0x5F, + 0x02, 0xFE, 0x39, 0xC5, 0x74, 0x88, 0x4F, 0xB3, + 0xF5, 0x09, 0xCE, 0x32, 0x83, 0x7F, 0xB8, 0x44, + 0x19, 0xE5, 0x22, 0xDE, 0x6F, 0x93, 0x54, 0xA8, + 0xB4, 0x48, 0x8F, 0x73, 0xC2, 0x3E, 0xF9, 0x05, + 0x58, 0xA4, 0x63, 0x9F, 0x2E, 0xD2, 0x15, 0xE9, + 0xAF, 0x53, 0x94, 0x68, 0xD9, 0x25, 0xE2, 0x1E, + 0x43, 0xBF, 0x78, 0x84, 0x35, 0xC9, 0x0E, 0xF2, + 0x82, 0x7E, 0xB9, 0x45, 0xF4, 0x08, 0xCF, 0x33, + 0x6E, 0x92, 0x55, 0xA9, 0x18, 0xE4, 0x23, 0xDF, + 0x99, 0x65, 0xA2, 0x5E, 0xEF, 0x13, 0xD4, 0x28, + 0x75, 0x89, 0x4E, 0xB2, 0x03, 0xFF, 0x38, 0xC4, + 0x00, 0xFD, 0x39, 0xC4, 0x72, 0x8F, 0x4B, 0xB6, + 0xE4, 0x19, 0xDD, 0x20, 0x96, 0x6B, 0xAF, 0x52, + 0x0B, 0xF6, 0x32, 0xCF, 0x79, 0x84, 0x40, 0xBD, + 0xEF, 0x12, 0xD6, 0x2B, 0x9D, 0x60, 0xA4, 0x59, + 0x16, 0xEB, 0x2F, 0xD2, 0x64, 0x99, 0x5D, 0xA0, + 0xF2, 0x0F, 0xCB, 0x36, 0x80, 0x7D, 0xB9, 0x44, + 0x1D, 0xE0, 0x24, 0xD9, 0x6F, 0x92, 0x56, 0xAB, + 0xF9, 0x04, 0xC0, 0x3D, 0x8B, 0x76, 0xB2, 0x4F, + 0x2C, 0xD1, 0x15, 0xE8, 0x5E, 0xA3, 0x67, 0x9A, + 0xC8, 0x35, 0xF1, 0x0C, 0xBA, 0x47, 0x83, 0x7E, + 0x27, 0xDA, 0x1E, 0xE3, 0x55, 0xA8, 0x6C, 0x91, + 0xC3, 0x3E, 0xFA, 0x07, 0xB1, 0x4C, 0x88, 0x75, + 0x3A, 0xC7, 0x03, 0xFE, 0x48, 0xB5, 0x71, 0x8C, + 0xDE, 0x23, 0xE7, 0x1A, 0xAC, 0x51, 0x95, 0x68, + 0x31, 0xCC, 0x08, 0xF5, 0x43, 0xBE, 0x7A, 0x87, + 0xD5, 0x28, 0xEC, 0x11, 0xA7, 0x5A, 0x9E, 0x63, + 0x58, 0xA5, 0x61, 0x9C, 0x2A, 0xD7, 0x13, 0xEE, + 0xBC, 0x41, 0x85, 0x78, 0xCE, 0x33, 0xF7, 0x0A, + 0x53, 0xAE, 0x6A, 0x97, 0x21, 0xDC, 0x18, 0xE5, + 0xB7, 0x4A, 0x8E, 0x73, 0xC5, 0x38, 0xFC, 0x01, + 0x4E, 0xB3, 0x77, 0x8A, 0x3C, 0xC1, 0x05, 0xF8, + 0xAA, 0x57, 0x93, 0x6E, 0xD8, 0x25, 0xE1, 0x1C, + 0x45, 0xB8, 0x7C, 0x81, 0x37, 0xCA, 0x0E, 0xF3, + 0xA1, 0x5C, 0x98, 0x65, 0xD3, 0x2E, 0xEA, 0x17, + 0x74, 0x89, 0x4D, 0xB0, 0x06, 0xFB, 0x3F, 0xC2, + 0x90, 0x6D, 0xA9, 0x54, 0xE2, 0x1F, 0xDB, 0x26, + 0x7F, 0x82, 0x46, 0xBB, 0x0D, 0xF0, 0x34, 0xC9, + 0x9B, 0x66, 0xA2, 0x5F, 0xE9, 0x14, 0xD0, 0x2D, + 0x62, 0x9F, 0x5B, 0xA6, 0x10, 0xED, 0x29, 0xD4, + 0x86, 0x7B, 0xBF, 0x42, 0xF4, 0x09, 0xCD, 0x30, + 0x69, 0x94, 0x50, 0xAD, 0x1B, 0xE6, 0x22, 0xDF, + 0x8D, 0x70, 0xB4, 0x49, 0xFF, 0x02, 0xC6, 0x3B, + 0x00, 0xFE, 0x3F, 0xC1, 0x7E, 0x80, 0x41, 0xBF, + 0xFC, 0x02, 0xC3, 0x3D, 0x82, 0x7C, 0xBD, 0x43, + 0x3B, 0xC5, 0x04, 0xFA, 0x45, 0xBB, 0x7A, 0x84, + 0xC7, 0x39, 0xF8, 0x06, 0xB9, 0x47, 0x86, 0x78, + 0x76, 0x88, 0x49, 0xB7, 0x08, 0xF6, 0x37, 0xC9, + 0x8A, 0x74, 0xB5, 0x4B, 0xF4, 0x0A, 0xCB, 0x35, + 0x4D, 0xB3, 0x72, 0x8C, 0x33, 0xCD, 0x0C, 0xF2, + 0xB1, 0x4F, 0x8E, 0x70, 0xCF, 0x31, 0xF0, 0x0E, + 0xEC, 0x12, 0xD3, 0x2D, 0x92, 0x6C, 0xAD, 0x53, + 0x10, 0xEE, 0x2F, 0xD1, 0x6E, 0x90, 0x51, 0xAF, + 0xD7, 0x29, 0xE8, 0x16, 0xA9, 0x57, 0x96, 0x68, + 0x2B, 0xD5, 0x14, 0xEA, 0x55, 0xAB, 0x6A, 0x94, + 0x9A, 0x64, 0xA5, 0x5B, 0xE4, 0x1A, 0xDB, 0x25, + 0x66, 0x98, 0x59, 0xA7, 0x18, 0xE6, 0x27, 0xD9, + 0xA1, 0x5F, 0x9E, 0x60, 0xDF, 0x21, 0xE0, 0x1E, + 0x5D, 0xA3, 0x62, 0x9C, 0x23, 0xDD, 0x1C, 0xE2, + 0x1B, 0xE5, 0x24, 0xDA, 0x65, 0x9B, 0x5A, 0xA4, + 0xE7, 0x19, 0xD8, 0x26, 0x99, 0x67, 0xA6, 0x58, + 0x20, 0xDE, 0x1F, 0xE1, 0x5E, 0xA0, 0x61, 0x9F, + 0xDC, 0x22, 0xE3, 0x1D, 0xA2, 0x5C, 0x9D, 0x63, + 0x6D, 0x93, 0x52, 0xAC, 0x13, 0xED, 0x2C, 0xD2, + 0x91, 0x6F, 0xAE, 0x50, 0xEF, 0x11, 0xD0, 0x2E, + 0x56, 0xA8, 0x69, 0x97, 0x28, 0xD6, 0x17, 0xE9, + 0xAA, 0x54, 0x95, 0x6B, 0xD4, 0x2A, 0xEB, 0x15, + 0xF7, 0x09, 0xC8, 0x36, 0x89, 0x77, 0xB6, 0x48, + 0x0B, 0xF5, 0x34, 0xCA, 0x75, 0x8B, 0x4A, 0xB4, + 0xCC, 0x32, 0xF3, 0x0D, 0xB2, 0x4C, 0x8D, 0x73, + 0x30, 0xCE, 0x0F, 0xF1, 0x4E, 0xB0, 0x71, 0x8F, + 0x81, 0x7F, 0xBE, 0x40, 0xFF, 0x01, 0xC0, 0x3E, + 0x7D, 0x83, 0x42, 0xBC, 0x03, 0xFD, 0x3C, 0xC2, + 0xBA, 0x44, 0x85, 0x7B, 0xC4, 0x3A, 0xFB, 0x05, + 0x46, 0xB8, 0x79, 0x87, 0x38, 0xC6, 0x07, 0xF9, + 0x00, 0xFF, 0x3D, 0xC2, 0x7A, 0x85, 0x47, 0xB8, + 0xF4, 0x0B, 0xC9, 0x36, 0x8E, 0x71, 0xB3, 0x4C, + 0x2B, 0xD4, 0x16, 0xE9, 0x51, 0xAE, 0x6C, 0x93, + 0xDF, 0x20, 0xE2, 0x1D, 0xA5, 0x5A, 0x98, 0x67, + 0x56, 0xA9, 0x6B, 0x94, 0x2C, 0xD3, 0x11, 0xEE, + 0xA2, 0x5D, 0x9F, 0x60, 0xD8, 0x27, 0xE5, 0x1A, + 0x7D, 0x82, 0x40, 0xBF, 0x07, 0xF8, 0x3A, 0xC5, + 0x89, 0x76, 0xB4, 0x4B, 0xF3, 0x0C, 0xCE, 0x31, + 0xAC, 0x53, 0x91, 0x6E, 0xD6, 0x29, 0xEB, 0x14, + 0x58, 0xA7, 0x65, 0x9A, 0x22, 0xDD, 0x1F, 0xE0, + 0x87, 0x78, 0xBA, 0x45, 0xFD, 0x02, 0xC0, 0x3F, + 0x73, 0x8C, 0x4E, 0xB1, 0x09, 0xF6, 0x34, 0xCB, + 0xFA, 0x05, 0xC7, 0x38, 0x80, 0x7F, 0xBD, 0x42, + 0x0E, 0xF1, 0x33, 0xCC, 0x74, 0x8B, 0x49, 0xB6, + 0xD1, 0x2E, 0xEC, 0x13, 0xAB, 0x54, 0x96, 0x69, + 0x25, 0xDA, 0x18, 0xE7, 0x5F, 0xA0, 0x62, 0x9D, + 0x9B, 0x64, 0xA6, 0x59, 0xE1, 0x1E, 0xDC, 0x23, + 0x6F, 0x90, 0x52, 0xAD, 0x15, 0xEA, 0x28, 0xD7, + 0xB0, 0x4F, 0x8D, 0x72, 0xCA, 0x35, 0xF7, 0x08, + 0x44, 0xBB, 0x79, 0x86, 0x3E, 0xC1, 0x03, 0xFC, + 0xCD, 0x32, 0xF0, 0x0F, 0xB7, 0x48, 0x8A, 0x75, + 0x39, 0xC6, 0x04, 0xFB, 0x43, 0xBC, 0x7E, 0x81, + 0xE6, 0x19, 0xDB, 0x24, 0x9C, 0x63, 0xA1, 0x5E, + 0x12, 0xED, 0x2F, 0xD0, 0x68, 0x97, 0x55, 0xAA, + 0x37, 0xC8, 0x0A, 0xF5, 0x4D, 0xB2, 0x70, 0x8F, + 0xC3, 0x3C, 0xFE, 0x01, 0xB9, 0x46, 0x84, 0x7B, + 0x1C, 0xE3, 0x21, 0xDE, 0x66, 0x99, 0x5B, 0xA4, + 0xE8, 0x17, 0xD5, 0x2A, 0x92, 0x6D, 0xAF, 0x50, + 0x61, 0x9E, 0x5C, 0xA3, 0x1B, 0xE4, 0x26, 0xD9, + 0x95, 0x6A, 0xA8, 0x57, 0xEF, 0x10, 0xD2, 0x2D, + 0x4A, 0xB5, 0x77, 0x88, 0x30, 0xCF, 0x0D, 0xF2, + 0xBE, 0x41, 0x83, 0x7C, 0xC4, 0x3B, 0xF9, 0x06, +}; + +#endif \ No newline at end of file diff --git a/src/GOST/testgost.c b/src/GOST/testgost.c new file mode 100644 index 0000000000000000000000000000000000000000..cd33f3010c1eaac04932d6933318e7fe1119cdea --- /dev/null +++ b/src/GOST/testgost.c @@ -0,0 +1,906 @@ +/** @file + * @brief Ðåàëèçàöèÿ ôóíêöèé òåñòèðîâàíèÿ àëãîðèòìîâ "êóçíå÷èê" è 28147-89. À òàêæå ðåæèìîâ ðàáîòû áëî÷íûõ øèôðîâ + * + * @copyright InfoTeCS. All rights reserved. + */ + +#include <memory.h> + +#include "28147_14.h" +#include "block_chipher.h" +#include "28147_89.h" +#include "test_data.inc" +#include "print_data.h" + +/** @brief ðàçìåð òåñòîâûõ äàííûõ äëÿ àëãîðèòìà "êóçíå÷èê" */ +#define textLen14 sizeof(kGost14PlainText) + +/** @brief ðàçìåð òåñòîâûõ äàííûõ äëÿ àëãîðèòìà "28147-89" */ +#define textLen89 sizeof(kGost89PlaintText) + +/** @brief òåñòèðîâàíèå ïðåîáðàçîâàíèÿ S èç àëãîðèòìà "êóçíå÷èê" */ +int testS() +{ + unsigned char tmp[kBlockLen14]; + unsigned int i; + + PrintLabel("Test S function start."); + + for(i = 0; i < 4; ++i) + { + funcS(kSData[i], tmp, 0); + + PrintBlockLeft("Test ", i+1); + PrintBlock("Input Value: ", kSData[i], kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", tmp, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control Value: ", kSData[i+1], kBlockLen14, kBlockLen14); + PrintEmptyLine(); + + if(memcmp(tmp, kSData[i+1], kBlockLen14)) + return -1; + } + + return 0; +} + +/** @brief òåñòèðîâàíèå ïðåîáðàçîâàíèÿ R èç àëãîðèòìà "êóçíå÷èê" */ +int testR() +{ + unsigned char tmp[kBlockLen14]; + int i; + + PrintLabel("Test R function start."); + + for(i =0; i < 4; ++i) + { + if(funcR(kRData[i], tmp, 0)) + return -1; + + PrintBlockLeft("Test ", i+1); + PrintBlock("Input Value: ", kRData[i], kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", tmp, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control Value: ", kRData[i+1], kBlockLen14, kBlockLen14); + PrintEmptyLine(); + + if(memcmp(tmp, kRData[i+1], kBlockLen14)) + return -1; + } + + return 0; +} + +/** @brief òåñòèðîâàíèå ïðåîáðàçîâàíèÿ L èç àëãîðèòìà "êóçíå÷èê" */ +int testL() +{ + unsigned char tmp[kBlockLen14]; + int i; + + PrintLabel("Test L function start."); + + for(i =0; i < 4; ++i) + { + if(funcL(kLData[i], tmp, 0)) + return -1; + + PrintBlockLeft("Test ", i+1); + PrintBlock("Input Value: ", kLData[i], kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", tmp, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control Value: ", kLData[i+1], kBlockLen14, kBlockLen14); + PrintEmptyLine(); + + if( memcmp(tmp, kLData[i+1], kBlockLen14)) + return -1; + } + return 0; +} + +/** @brief òåñòèðîâàíèå ðàçâîðà÷èâàíèÿ êëþ÷à èç àëãîðèòìà "êóçíå÷èê" */ +int testExpandKey() +{ + const size_t keyLen = sizeof(kMasterKeyData)/sizeof(kMasterKeyData[0]); + unsigned char keys[160]; + int i; + + PrintLabel("Test Expand Key function start."); + + if(ExpandKey(kMasterKeyData, keys, 0)) + return -1; + + PrintBlock("Master Key: ", kMasterKeyData, keyLen, kBlockLen14); + PrintEmptyLine(); + + for(i = 0; i < 10; ++i) + { + PrintBlock("Output Key: ", keys+i*kBlockLen14, kBlockLen14, kBlockLen14); + PrintBlock("Control Key: ", (unsigned char*)kKData[i], kBlockLen14, kBlockLen14); + PrintEmptyLine(); + + if( memcmp(keys+i*kBlockLen14, kKData[i], kBlockLen14)) + return -1; + } + + return 0; +} + +/** @brief òåñòèðîâàíèå øèôðîâàíèÿ ïî àëãîðèòìó "êóçíå÷èê" */ +int testEncrypt() +{ + const size_t keyLen = sizeof(kMasterKeyData)/sizeof(kMasterKeyData[0]); + + unsigned char ctx[kEcb14ContextLen]; + unsigned char output[kBlockLen14]; + + PrintLabel("Test Encrypt start."); + + if(init_ecb_14(kMasterKeyData, ctx, 0, 0)) + return -1; + + if(encrypt_ecb(ctx, kPlainTextData, output, kBlockLen14)) + return -1; + + PrintBlock("Master Key: ", kMasterKeyData, keyLen, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Input Value: ", kPlainTextData, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", output, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kChipherTextData, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + + if( memcmp(output, kChipherTextData, kBlockLen14)) + return -1; + + return 0; +} + +/** @brief òåñòèðîâàíèå ðàñøèôðîâàíèÿ ïî àëãîðèòìó "êóçíå÷èê" */ +int testDecrypt() +{ + const size_t keyLen = sizeof(kMasterKeyData)/sizeof(kMasterKeyData[0]); + + unsigned char ctx[kEcb14ContextLen]; + unsigned char output[kBlockLen14]; + + PrintLabel("Test Decrypt start."); + + if(init_ecb_14(kMasterKeyData, ctx, 0, 0)) + return -1; + + if(decrypt_ecb(ctx, kChipherTextData, output, kBlockLen14)) + return -1; + + PrintBlock("Master Key: ", kMasterKeyData, keyLen, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Input Value: ", kChipherTextData, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", output, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kPlainTextData, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + + if( memcmp(output, kPlainTextData, kBlockLen14) ) + return -1; + + free_ecb(ctx); + + return 0; +} + +/** @brief òåñòèðîâàíèå øèôðîàâàíèå â ðåæèìå ecb ïî àëãîðèòìó "êóçíå÷èê" */ +int gost14_ECB_test() +{ + unsigned char ctx[kEcb14ContextLen]; + unsigned char output[textLen14]; + unsigned char outputE[textLen14]; + + PrintLabel("Ecb mode 28147-14 test start."); + + if(init_ecb_14(kMasterKeyData, ctx, print_array, print_uint_array)) + return -1; + + if(encrypt_ecb(ctx, kGost14PlainText, output, textLen14)) + return -1; + + PrintBlock("Master Key: ", kMasterKeyData, 32, kBlockLen14); + PrintEmptyLine(); + PrintLineLeft("Test Encrypt."); + PrintEmptyLine(); + PrintBlock("Input Value: ", kGost14PlainText, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", output, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost14EcbEncText, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + + if( memcmp(output, kGost14EcbEncText, textLen14)) + return -1; + + if(init_ecb_14(kMasterKeyData, ctx, print_array, print_uint_array)) + return -1; + + if(decrypt_ecb(ctx, output, outputE, textLen14)) + return -1; + + PrintLineLeft("Test Decrypt."); + PrintEmptyLine(); + PrintBlock("Input Value: ", output, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", outputE, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost14PlainText, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + + if( memcmp(outputE, kGost14PlainText, textLen14)) + return -1; + + free_ecb(ctx); + + return 0; +} + +/** @brief òåñòèðîâàíèå ðåæèìà ctr àëãîðèòìà "êóçíå÷èê" */ +int gost14_CTR_test() +{ + const size_t svLen = sizeof(kGost14CtrSV); + + unsigned char outText[textLen14]; + unsigned char ctx[kCtr14ContextLen]; + + PrintLabel("CTR mode 28147-14 test start."); + + if(init_ctr_14(kMasterKeyData, kGost14CtrSV, svLen, ctx, print_array, print_uint_array)) + return -1; + + if(crypt_ctr(ctx, kGost14PlainText, outText, textLen14)) + return -1; + + free_ctr(ctx); + + PrintBlock("Master Key: ", kMasterKeyData, 32, kBlockLen14); + PrintEmptyLine(); + PrintBlock("SV: ", kGost14CtrSV, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Input Value: ", kGost14PlainText, textLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", outText, textLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost14CtrC, textLen14, kBlockLen14); + PrintEmptyLine(); + + return memcmp(outText, kGost14CtrC, textLen14); +} + +/** @brief òåñòèðîâàíèå ðåæèìà ofb àëãîðèòìà "êóçíå÷èê" */ +int gost14_OFB_test() +{ + const size_t svLen = sizeof(kGost14OfbSV); + + unsigned char outText[textLen14]; + unsigned char ctx[kOfb14ContextLen]; + + PrintLabel("OFB mode 28147-14 test start."); + + if(init_ofb_14(kMasterKeyData, ctx, kBlockLen14, kGost14OfbSV, svLen, print_array, print_uint_array)) + return -1; + + if(crypt_ofb(ctx, kGost14PlainText, outText, textLen14)) + return -1; + + free_ofb(ctx); + + PrintBlock("Master Key: ", kMasterKeyData, 32, kBlockLen14); + PrintEmptyLine(); + PrintBlock("SV: ", kGost14OfbSV, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Input Value: ", kGost14PlainText, textLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", outText, textLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost14OfbC, textLen14, kBlockLen14); + PrintEmptyLine(); + + return memcmp(outText, kGost14OfbC, textLen14); +} + +/** @brief òåñòèðîâàíèå ðåæèìà cbc àëãîðèòìà "êóçíå÷èê" */ +int gost14_CBC_test() +{ + const size_t svLen = sizeof(kGost14CbcSV); + + unsigned char outText[textLen14]; + unsigned char outTextDec[textLen14]; + unsigned char ctx[kCbc14ContextLen]; + + PrintLabel("CBC mode 28147-14 test start."); + + if(init_cbc_14(kMasterKeyData, ctx, kGost14CbcSV, svLen, print_array, print_uint_array)) + return -1; + + if(encrypt_cbc(ctx, kGost14PlainText, outText, textLen14)) + return -1; + + free_cbc(ctx); + + PrintBlock("Master Key: ", kMasterKeyData, 32, kBlockLen14); + PrintEmptyLine(); + PrintLineLeft("Test Encrypt."); + PrintEmptyLine(); + PrintBlock("SV: ", kGost14CbcSV, svLen, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Input Value: ", kGost14PlainText, textLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", outText, textLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost14CbcC, textLen14, kBlockLen14); + PrintEmptyLine(); + + if(init_cbc_14(kMasterKeyData, ctx, kGost14CbcSV, svLen, print_array, print_uint_array)) + return -1; + + if(decrypt_cbc(ctx, outText, outTextDec, textLen14)) + return -1; + + free_cbc(ctx); + + PrintLineLeft("Test Decrypt."); + PrintEmptyLine(); + PrintBlock("Input Value: ", outText, textLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", outTextDec, textLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost14PlainText, textLen14, kBlockLen14); + PrintEmptyLine(); + + if(memcmp(outTextDec, kGost14PlainText, textLen14)) + return -1; + + return memcmp(outText, kGost14CbcC, textLen14); +} + +/** @brief òåñòèðîâàíèå ðåæèìà cfb àëãîðèòìà "êóçíå÷èê" */ +int gost14_CFB_test() +{ + const size_t svLen = sizeof(kGost14CfbSV); + + unsigned char outText[textLen14]; + unsigned char outTextDec[textLen14]; + unsigned char ctx[kCfb14ContextLen]; + + PrintLabel("CFB mode 28147-14 test start."); + + if(init_cfb_14(kMasterKeyData, ctx, kBlockLen14, kGost14CfbSV, svLen, print_array, print_uint_array)) + return -1; + + if(encrypt_cfb(ctx, kGost14PlainText, outText, textLen89)) + return -1; + + if(memcmp(outText, kGost14CfbC, textLen89)) + return -1; + + PrintBlock("Master Key: ", kMasterKeyData, 32, kBlockLen14); + PrintEmptyLine(); + PrintBlock("SV: ", kGost14CfbSV, svLen, kBlockLen14); + PrintEmptyLine(); + PrintLineLeft("Test Encrypt."); + PrintEmptyLine(); + PrintBlock("Input Value: ", kGost14PlainText, textLen89, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", outText, textLen89, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost14CfbC, textLen89, kBlockLen14); + PrintEmptyLine(); + + free_cfb(ctx); + + if(init_cfb_14(kMasterKeyData, ctx, 16, kGost14CfbSV, svLen, print_array, print_uint_array)) + return -1; + + if(decrypt_cfb(ctx, outText, outTextDec, textLen89)) + return -1; + + PrintLineLeft("Test Decrypt."); + PrintEmptyLine(); + PrintBlock("Input Value: ", outText, textLen89, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", outTextDec, textLen89, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost14PlainText, textLen89, kBlockLen14); + PrintEmptyLine(); + + if(memcmp(outTextDec, kGost14PlainText, textLen89)) + return -1; + + free_cfb(ctx); + + return 0; +} + +/** @brief òåñòèðîâàíèå ðåæèìà èìèòîâñòàâêè àëãîðèòìà "êóçíå÷èê" */ +int gost14_imita_test() +{ + const size_t imitLen = sizeof(kGost14ImitS); + unsigned char outText[16]; + unsigned char ctx[kImit14ContextLen]; + + PrintLabel("Imita mode 28147-14 test start."); + + if(init_imit_14(kMasterKeyData, kBlockLen14, ctx, print_array, print_uint_array)) + return -1; + + if(imit(ctx, kGost14PlainText, textLen14)) + return 0; + + done_imit(ctx, outText); + + PrintBlock("Input Value: ", kGost14PlainText, textLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", outText, imitLen, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost14ImitS, imitLen, kBlockLen14); + PrintEmptyLine(); + + free_imit(ctx); + + return memcmp(outText, kGost14ImitS, imitLen); +} + +/** @brief òåñòèðîâàíèå ðåæèìà ecb àëãîðèòìà 28147-89 */ +int gost89_ECB_test() +{ + unsigned char ctx[kEcb89ContextLen]; + unsigned char output[textLen89]; + unsigned char outputDec[textLen89]; + + PrintLabel("Ecb mode 28147-89 test start."); + + if(init_ecb_89(kMasterKeyGost89, ctx, print_array, print_uint_array)) + return -1; + + if(encrypt_ecb(ctx, kGost89PlaintText, output, textLen89)) + return -1; + + PrintBlock("Master Key: ", kMasterKeyGost89, 32, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Input Value: ", kGost89PlaintText, textLen89, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Output Value: ", output, textLen89, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost89EcbC, textLen89, kBlockLen89); + PrintEmptyLine(); + + if(memcmp(output, kGost89EcbC, textLen89)) + return -1; + + free_ecb(ctx); + + if(init_ecb_89(kMasterKeyGost89, ctx, print_array, print_uint_array)) + return -1; + + if(decrypt_ecb(ctx, output, outputDec, textLen89)) + return -1; + + if(memcmp(outputDec, kGost89PlaintText, textLen89)) + return -1; + + free_ecb(ctx); + + return 0; +} + +/** @brief òåñòèðîâàíèå ðåæèìà ctr àëãîðèòìà 28147-89 */ +int gost89_CTR_test() +{ + const size_t SvLen = sizeof(kGost89CtrSV); + + unsigned char outText[textLen89]; + unsigned char ctx[kCtr89ContextLen]; + + PrintLabel("Ctr mode 28147-89 test start."); + + if(init_ctr_89(kMasterKeyGost89, kGost89CtrSV, kBlockLen89, ctx, print_array, print_uint_array)) + return -1; + + if(crypt_ctr(ctx, kGost89PlaintText, outText, textLen89)) + return -1; + + free_ctr(ctx); + + PrintBlock("Master Key: ", kMasterKeyGost89, 32, kBlockLen89); + PrintEmptyLine(); + PrintBlock("SV: ", kGost89CtrSV, SvLen, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Input Value: ", kGost89PlaintText, textLen89, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Output Value: ", outText, textLen89, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost89CtrC, textLen89, kBlockLen89); + PrintEmptyLine(); + + return memcmp(outText, kGost89CtrC, textLen89); +} + +/** @brief òåñòèðîâàíèå ðåæèìà ofb àëãîðèòìà 28147-89 */ +int gost89_OFB_test() +{ + const size_t SvLen = sizeof(kGost89OfbSV); + + unsigned char outText[textLen89]; + unsigned char ctx[kOfb89ContextLen]; + + PrintLabel("Ofb mode 28147-89 test start."); + + if(init_ofb_89(kMasterKeyGost89, ctx, kBlockLen89, kGost89OfbSV, SvLen, print_array, print_uint_array)) + return -1; + + if(crypt_ofb(ctx, kGost89PlaintText, outText, textLen89)) + return -1; + + PrintBlock("Master Key: ", kMasterKeyGost89, 32, kBlockLen89); + PrintEmptyLine(); + PrintBlock("SV: ", kGost89OfbSV, SvLen, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Input Value: ", kGost89PlaintText, textLen89, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Output Value: ", outText, textLen89, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost89OfbC, textLen89, kBlockLen89); + PrintEmptyLine(); + + free_ofb(ctx); + + return memcmp(outText, kGost89OfbC, textLen89); +} + +/** @brief òåñòèðîâàíèå ðåæèìà cbc àëãîðèòìà 28147-89 */ +int gost89_CBC_test() +{ + const size_t SvLen = sizeof(kGost89CbcSV); + + unsigned char outText[textLen89]; + unsigned char outTextDec[textLen89]; + unsigned char ctx[kCbc89ContextLen]; + + PrintLabel("Cbc mode 28147-89 test start."); + + if(init_cbc_89(kMasterKeyGost89, ctx, kGost89CbcSV, SvLen, print_array, print_uint_array)) + return -1; + + if(encrypt_cbc(ctx, kGost89PlaintText, outText, textLen89)) + return 0; + + free_cbc(ctx); + + PrintBlock("Master Key: ", kMasterKeyGost89, 32, kBlockLen89); + PrintEmptyLine(); + PrintBlock("SV: ", kGost89CbcSV, SvLen, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Input Value: ", kGost89PlaintText, textLen89, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Output Value: ", outText, textLen89, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost89CbcC, textLen89, kBlockLen89); + PrintEmptyLine(); + + if(init_cbc_89(kMasterKeyGost89, ctx, kGost89CbcSV, SvLen, print_array, print_uint_array)) + return -1; + + if(decrypt_cbc(ctx, outText, outTextDec, textLen89)) + return -1; + + free_cbc(ctx); + + if(memcmp(outTextDec, kGost89PlaintText, textLen89)) + return -1; + + return memcmp(outText, kGost89CbcC, textLen89); +} + +/** @brief Òåñòèðîâàíèå êðèïòîãðàôè÷åñêîãî ïðåîáðàçîâàíèÿ àëãîðèòìà 28147-89 */ +int standart_89_encr_test() +{ + const size_t textLen = sizeof(kGost89StandartPlainText); + + unsigned char ctx[kEcb89ContextLen]; + unsigned char output[sizeof(kGost89StandartPlainText)]; + unsigned char outputE[sizeof(kGost89StandartPlainText)]; + + PrintLabel("Standart 28147-89 encryption test start."); + + if(init_ecb_89(kMasterKeyGost89, ctx, print_array, print_uint_array)) + return -1; + + if(encrypt_ecb(ctx, kGost89StandartPlainText, output, textLen)) + return -1; + + PrintBlock("Master Key: ", kMasterKeyGost89, 32, kBlockLen89); + PrintEmptyLine(); + + PrintBlock("Input Value: ", kGost89StandartPlainText, textLen, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Output Value: ", output, textLen, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost89StandartEncrText, textLen, kBlockLen89); + PrintEmptyLine(); + + if(memcmp(output, kGost89StandartEncrText, textLen)) + return -1; + + free_ecb(ctx); + + if(init_ecb_89(kMasterKeyGost89, ctx, print_array, print_uint_array)) + return -1; + + if(decrypt_ecb(ctx, output, outputE, textLen)) + return -1; + + if(memcmp(outputE, kGost89StandartPlainText, textLen)) + return -1; + + free_ecb(ctx); + + return 0; +} + +/** @brief òåñòèðîâàíèå ðåæèìà cfb àëãîðèòìà 28147-89 */ +int gost89_CFB_test() +{ + const size_t SvLen = sizeof(kGost89CfbSV); + + unsigned char outText[textLen89]; + unsigned char outTextDec[textLen89]; + unsigned char ctx[kCfb89ContextLen]; + + PrintLabel("Cfb mode 28147-89 test start."); + + if(init_cfb_89(kMasterKeyGost89, ctx, kBlockLen89, kGost89CfbSV, SvLen, print_array, print_uint_array)) + return -1; + + if(encrypt_cfb(ctx, kGost89PlaintText, outText, textLen89)) + return -1; + + PrintBlock("Master Key: ", kMasterKeyGost89, 32, kBlockLen89); + PrintEmptyLine(); + PrintBlock("SV: ", kGost89CfbSV, SvLen, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Input Value: ", kGost89PlaintText, textLen89, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Output Value: ", outText, textLen89, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost89CfbC, textLen89, kBlockLen89); + PrintEmptyLine(); + + if(memcmp(outText, kGost89CfbC, textLen89)) + return -1; + + free_cfb(ctx); + + if(init_cfb_89(kMasterKeyGost89, ctx, kBlockLen89, kGost89CfbSV, SvLen, print_array, print_uint_array)) + return -1; + + if(decrypt_cfb(ctx, outText, outTextDec, textLen89)) + return -1; + + if(memcmp(outTextDec, kGost89PlaintText, textLen89)) + return -1; + + free_cfb(ctx); + + return 0; +} +#include<stdio.h> +/** @brief òåñòèðîâàíèå ðåæèìà èìòîâñòàâêè àëãîðèòìà 28147-89 */ +int gost89_imita_test() +{ + const size_t imitLen = sizeof(kGost89ImitS); + + unsigned char outText[sizeof(kGost89ImitS)]; + unsigned char ctx[kImit89ContextLen]; + + PrintLabel("Imita mode 28147-89 test start."); + + if(init_imit_89(kMasterKeyGost89, kBlockLen89, ctx, print_array, print_uint_array)) + return -1; + + if(imit(ctx, kGost89PlaintText, textLen89)) + return -1; + + done_imit(ctx, outText); + + free_imit(ctx); + + PrintBlock("Master Key: ", kMasterKeyGost89, 32, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Input Value: ", kGost89PlaintText, textLen89, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Output Value: ", outText, imitLen, kBlockLen89); + PrintEmptyLine(); + PrintBlock("Control value: ", kGost89ImitS, imitLen, kBlockLen89); + PrintEmptyLine(); + + return memcmp(outText, kGost89ImitS, imitLen); +} + +/** @brief òåñòèðîâàíèå äîïîëíåíèÿ ñîîáùåíèÿ */ +int testPadding() +{ + const size_t len = sizeof(kPaddingText)/sizeof(kPaddingText[0]); + const size_t len2 = sizeof(kPaddingText2)/sizeof(kPaddingText2[0]); + + padd(paddingBufferText, 1, kBlockLen14); + padd(paddingBufferText2, kBlockLen14, 2*kBlockLen14); + + PrintLineLeft("Test 1"); + PrintBlock("Input Value: ", paddingBufferText, 1, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", paddingBufferText, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kPaddingText, len, kBlockLen14); + PrintEmptyLine(); + +// if(memcmp(paddingBufferText, kPaddingText, len)) +// return -1; + + PrintLineLeft("Test 2"); + PrintBlock("Input Value: ", paddingBufferText2, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", paddingBufferText2, 2*kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kPaddingText2, len2, kBlockLen14); + PrintEmptyLine(); + fflush(stdout); + +// if(memcmp(paddingBufferText2, kPaddingText2, len2)) +// return -1; + + return 0; +} + +/** @brief òåñòèðîâàíèå ñíÿòèÿ äîïîëíåíèÿ ñîîáùåíèÿ */ +int testCut() +{ + size_t rLen, rLen2; + padd(paddingBufferText, 1, kBlockLen14); + padd(paddingBufferText2, kBlockLen14, 2*kBlockLen14); + + rLen = unpadd(paddingBufferText, kBlockLen14); + rLen2 = unpadd(paddingBufferText2, 2*kBlockLen14); + + PrintLabel("Cut padding test start."); + + PrintLineLeft("Test 1"); + PrintBlock("Input Value: ", paddingBufferText, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", paddingBufferText, rLen, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kPaddingText, 1, kBlockLen14); + PrintEmptyLine(); + + PrintLineLeft("Test 2"); + PrintBlock("Input Value: ", paddingBufferText2, 2*kBlockLen14, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Output Value: ", paddingBufferText2, rLen2, kBlockLen14); + PrintEmptyLine(); + PrintBlock("Control value: ", kPaddingText2, kBlockLen14, kBlockLen14); + PrintEmptyLine(); + + if(rLen !=1 ) + return -1; + + if(rLen2 != kBlockLen14) + return -1; + + return 0; +} + +/** @brief Òåñòèðîâàíèå ïðåîáðàçîâàíèÿ t àëãîðèòìà 28147-89 */ +int testFuncT() +{ + int i; + PrintLabel("Test 28147-89 function T start."); + + for(i = 0; i < 4; ++i) + { + unsigned int ans; + ans = funcT(kTData[i], 0); + + PrintBlockLeft("Test ", i+1); + PrintBlockInt("Input value", kTData[i]); + PrintBlockInt("Ouput value", ans); + PrintBlockInt("Control value", kTData[i+1]); + PrintEmptyLine(); + + if(ans != kTData[i+1]) + return -1; + } + + return 0; +} + +/** @brief Òåñòèðîâàíèå ïðåîáðàçîâàíèÿ g àëãîðèòìà 28147-89 */ +int testG() +{ + int i; + PrintLabel("Test 28147-89 function G start."); + + for(i = 0; i < 4; ++i) + { + unsigned int ans; + ans = funcG(kgData[i][0], kgData[i][1], 0); + + PrintBlockLeft("Test ", i+1); + PrintBlockInt("Input value", kgData[i][0]); + PrintBlockInt("Key value", kgData[i][1]); + PrintBlockInt("Ouput value", ans); + PrintBlockInt("Control value", kgData[i][2]); + PrintEmptyLine(); + + if( ans!= kgData[i][2]) + return -1; + } + + return 0; +} + +/** @brief òî÷êà âõîäà */ +int main_gost_test() +{ + int testRes = 0; + PrintLine("TEST start."); + PrintEmptyLine(); + + PrintLine("TEST 28147-14 standart start."); + testRes |= PrintTest("S function test end", testS()); + testRes |= PrintTest("R function test.", testR()); + testRes |= PrintTest("L function test.", testL()); + testRes |= PrintTest("Expand Key 28147-14 test.", testExpandKey()); + testRes |= PrintTest("Encrypt test.", testEncrypt()); + testRes |= PrintTest("Decrypt test.", testDecrypt()); + PrintEmptyLine(); + + PrintLine("TEST 28147-89 standart test."); + testRes |= PrintTest("28147-89 T function test.", testFuncT()); + testRes |= PrintTest("28147-89 G function test.", testG()); + testRes |= PrintTest("Encrypt test.", standart_89_encr_test()); + PrintEmptyLine(); + + PrintLine("TEST 28147-14 mode test."); + testRes |= PrintTest("Ecb mode 28147-14 test.", gost14_ECB_test()); + testRes |= PrintTest("CTR mode 28147-14 test.", gost14_CTR_test()); + testRes |= PrintTest("OFB mode 28147-14 test.", gost14_OFB_test()); + testRes |= PrintTest("CBC mode 28147-14 test.", gost14_CBC_test()); + testRes |= PrintTest("CFB mode 28147-14 test.", gost14_CFB_test()); + testRes |= PrintTest("Imita mode 28147-14 test.", gost14_imita_test()); + PrintEmptyLine(); + + PrintLine("TEST 28147-89 mode test."); + testRes |= PrintTest("Ecb mode 28147-89 test.", gost89_ECB_test()); + testRes |= PrintTest("CTR mode 28147-89 test.", gost89_CTR_test()); + testRes |= PrintTest("OFB mode 28147-89 test.", gost89_OFB_test()); + testRes |= PrintTest("CBC mode 28147-89 test.", gost89_CBC_test()); + testRes |= PrintTest("CFB mode 28147-89 test.", gost89_CFB_test()); + testRes |= PrintTest("Imita mode 28147-89 test.", gost89_imita_test()); + PrintEmptyLine(); + + PrintLine("TEST padding test."); + + testRes |= PrintTest("Add padding test.", testPadding()); + testRes |= PrintTest("Cut padding test.", testCut()); + PrintEmptyLine(); + + if ( testRes ) + { + PrintLine("FAILED TESTS EXIST!!!!!."); + } + else + { + PrintLine("ALL TEST OK."); + } + + return testRes; +} diff --git a/src/blowfish/bf_enc.c b/src/blowfish/bf_enc.c index 0d538d7e75e2600ecaf4b7f04fb0ce6f18ca3f3b..05576bf868ea6eaddaad0facfaf8740355384ebf 100644 --- a/src/blowfish/bf_enc.c +++ b/src/blowfish/bf_enc.c @@ -11,6 +11,7 @@ # error If you set BF_ROUNDS to some value other than 16 or 20, you will have \ to modify the code. #endif +//#include<stdio.h> void BF_encrypt(BF_LONG *data, const BF_KEY *key) { @@ -115,8 +116,24 @@ void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, l2n(tout0, out); l2n(tout1, out); } - if (l != -8) { - n2ln(in, tin0, tin1, l + 8); + if (1||l != -8) { + unsigned char tmpin[16]; + unsigned char *ptmpin = tmpin; + memcpy(tmpin, in, l + 8); + memcpy(tmpin + l + 8, &length, 4); + int pad_length = (8-(l + 8 + 4 + 1)%8)%8; + for(int i = 0; i < pad_length; ++i) + { + tmpin[l+8+4+i]=16;//prng better + } + tmpin[l+8+4+pad_length]=pad_length; +// for(int i = 0; i < l + 8 + 4 +1 +pad_length; ++i) +// { +// printf("%.2x ", tmpin[i]); +// } +// printf("\n");fflush(stdout); + n2l(ptmpin, tin0); + n2l(ptmpin, tin1); tin0 ^= tout0; tin1 ^= tout1; tin[0] = tin0; @@ -126,6 +143,32 @@ void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, tout1 = tin[1]; l2n(tout0, out); l2n(tout1, out); + if(l+8+4+pad_length + 1 == 16) + { + n2l(ptmpin, tin0); + n2l(ptmpin, tin1); + tin0 ^= tout0; + tin1 ^= tout1; + tin[0] = tin0; + tin[1] = tin1; + BF_encrypt(tin, schedule); + tout0 = tin[0]; + tout1 = tin[1]; + l2n(tout0, out); + l2n(tout1, out); + } + + +// n2ln(in, tin0, tin1, l + 8); +// tin0 ^= tout0; +// tin1 ^= tout1; +// tin[0] = tin0; +// tin[1] = tin1; +// BF_encrypt(tin, schedule); +// tout0 = tin[0]; +// tout1 = tin[1]; +// l2n(tout0, out); +// l2n(tout1, out); } l2n(tout0, ivec); l2n(tout1, ivec); diff --git a/src/dap_enc_GOST.c b/src/dap_enc_GOST.c new file mode 100644 index 0000000000000000000000000000000000000000..59d320bea159500d411324832f31c9f21efaf785 --- /dev/null +++ b/src/dap_enc_GOST.c @@ -0,0 +1,183 @@ +#include <stdlib.h> +#include <stdio.h> +#include <stdint.h> +#include <stddef.h> +#include <string.h> + +#include "dap_enc_GOST.h" +#include "dap_common.h" +#include "rand/dap_rand.h" +#include "sha3/KeccakHash.h" + +#define LOG_TAG "dap_enc_gost" + +void dap_enc_gost_key_generate(struct dap_enc_key * a_key, const void *kex_buf, + size_t kex_size, const void * seed, size_t seed_size, size_t key_size) +{ + if(key_size < 32) + { + log_it(L_ERROR, "Gost key cannot be less than 32 bytes."); + } + a_key->last_used_timestamp = time(NULL); + + + a_key->priv_key_data_size = key_size; + a_key->priv_key_data = DAP_NEW_SIZE(uint8_t, key_size); + + Keccak_HashInstance Keccak_ctx; + Keccak_HashInitialize(&Keccak_ctx, 1088, 512, key_size*8, 0x06); + Keccak_HashUpdate(&Keccak_ctx, kex_buf, kex_size*8); + if(seed_size) + Keccak_HashUpdate(&Keccak_ctx, seed, seed_size*8); + Keccak_HashFinal(&Keccak_ctx, a_key->priv_key_data); +} + +void dap_enc_gost_ofb_key_new(struct dap_enc_key * a_key) +{ + a_key->_inheritor = NULL; + a_key->_inheritor_size = 0; + a_key->type = DAP_ENC_KEY_TYPE_GOST_OFB; + a_key->enc = dap_enc_gost_ofb_encrypt; + a_key->dec = dap_enc_gost_ofb_decrypt; + a_key->enc_na = dap_enc_gost_ofb_encrypt_fast; + a_key->dec_na = dap_enc_gost_ofb_decrypt_fast; +} + +void dap_enc_gost_key_delete(struct dap_enc_key *a_key) +{ + if(a_key->priv_key_data != NULL) + { + randombytes(a_key->priv_key_data,a_key->priv_key_data_size); + DAP_DELETE(a_key->priv_key_data); + } + a_key->priv_key_data_size = 0; +} +//------GOST_OFB----------- + +size_t dap_enc_gost_ofb_decrypt(struct dap_enc_key *a_key, const void * a_in, + size_t a_in_size, void ** a_out) { + + if(a_in_size <= 8) { + log_it(L_ERROR, "gost_ofb decryption ct with iv must be more than 8 bytes"); + return 0; + } + + + uint8_t iv[8]; + memcpy(iv, a_in, 8); + + *a_out = DAP_NEW_SIZE(uint8_t, a_in_size - 8); + unsigned char ctx[kOfb89ContextLen]; + if(init_ofb_89(a_key->priv_key_data, ctx, kBlockLen89, iv, 8,NULL, NULL))//, print_array, print_uint_array)) + { + return 0; + } + if(crypt_ofb(ctx, a_in + 8, *a_out, a_in_size - 8)) + { + return 0; + } + free_ofb(ctx); + size_t a_out_size = a_in_size - 8; + return a_out_size; +} + +size_t dap_enc_gost_ofb_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out) +{ + //generate iv and put it in *a_out first bytes + uint8_t iv[8]; + + if(a_in_size <= 0) { + log_it(L_ERROR, "gost ofb encryption pt cannot be 0 bytes"); + return 0; + } + if(randombytes(iv, 8) == 1) + { + log_it(L_ERROR, "failed to get 8 bytes iv gost ofb"); + return 0; + } + + size_t a_out_size = a_in_size + 8; + *a_out = DAP_NEW_SIZE(uint8_t, a_out_size); + memcpy(*a_out, iv, 8); + unsigned char ctx[kOfb89ContextLen]; + if(init_ofb_89(a_key->priv_key_data, ctx, kBlockLen89, iv, 8,NULL, NULL))//, print_array, print_uint_array)) + { + return 0; + } + if(crypt_ofb(ctx, a_in, *a_out + 8, a_in_size)) + { + return 0; + } + free_ofb(ctx); + return a_out_size; +} + +size_t dap_enc_gost_ofb_calc_encode_size(const size_t size_in) +{ + return size_in + 8; +} + +size_t dap_enc_gost_ofb_calc_decode_size(const size_t size_in) +{ + if(size_in <= 8) { + log_it(L_ERROR, "gost_ofb decryption size_in ct with iv must be more than 8 bytes"); + return 0; + } + return size_in - 8; +} + +size_t dap_enc_gost_ofb_decrypt_fast(struct dap_enc_key *a_key, const void * a_in, + size_t a_in_size, void * a_out, size_t buf_out_size) { + size_t a_out_size = a_in_size - 8; + if(a_out_size > buf_out_size) { + log_it(L_ERROR, "gost_ofb fast_decryption too small buf_out_size"); + return 0; + } + uint8_t iv[8]; + + memcpy(iv, a_in, 8); + + unsigned char ctx[kOfb89ContextLen]; + if(init_ofb_89(a_key->priv_key_data, ctx, kBlockLen89, iv, 8,NULL, NULL))//, print_array, print_uint_array)) + { + return 0; + } + if(crypt_ofb(ctx, a_in + 8, a_out, a_in_size - 8)) + { + return 0; + } + free_ofb(ctx); + return a_out_size; +} + + + +size_t dap_enc_gost_ofb_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void * a_out,size_t buf_out_size) +{ + //generate iv and put it in *a_out first bytes + size_t a_out_size = a_in_size + 8; + if(a_out_size > buf_out_size) { + log_it(L_ERROR, "blowfish_cbc fast_encryption too small buf_out_size"); + return 0; + } + + uint8_t iv[8]; + if(randombytes(iv, 8) == 1) + { + log_it(L_ERROR, "failed to get 8 bytes iv gost ofb"); + return 0; + } + + memcpy(a_out, iv, 8); + unsigned char ctx[kOfb89ContextLen]; + if(init_ofb_89(a_key->priv_key_data, ctx, kBlockLen89, iv, 8,NULL, NULL))//, print_array, print_uint_array)) + { + return 0; + } + if(crypt_ofb(ctx, a_in, a_out + 8, a_in_size)) + { + return 0; + } + free_ofb(ctx); + return a_out_size; + } diff --git a/src/dap_enc_bf.c b/src/dap_enc_bf.c new file mode 100644 index 0000000000000000000000000000000000000000..f385aac59d58bfe7802f31dfb6e1e02a9ea4a559 --- /dev/null +++ b/src/dap_enc_bf.c @@ -0,0 +1,273 @@ +#include <stdlib.h> +#include <stdio.h> +#include <stdint.h> +#include <stddef.h> +#include <string.h> + +#include "dap_enc_bf.h" +#include "dap_common.h" +#include "rand/dap_rand.h" +#include "sha3/KeccakHash.h" + +#define LOG_TAG "dap_enc_blowfish" + + +void dap_enc_bf_key_generate(struct dap_enc_key * a_key, const void *kex_buf, + size_t kex_size, const void * seed, size_t seed_size, size_t key_size) +{ + a_key->last_used_timestamp = time(NULL); + + + a_key->priv_key_data_size = sizeof(BF_KEY); + a_key->priv_key_data = DAP_NEW_SIZE(uint8_t, sizeof(BF_KEY)); + + uint8_t *tmp_buf = DAP_NEW_SIZE(uint8_t, (BF_ROUNDS + 2)*4); + Keccak_HashInstance Keccak_ctx; + Keccak_HashInitialize(&Keccak_ctx, 1088, 512, (BF_ROUNDS + 2)*4*8, 0x06); + Keccak_HashUpdate(&Keccak_ctx, kex_buf, kex_size*8); + if(seed_size) + Keccak_HashUpdate(&Keccak_ctx, seed, seed_size*8); + Keccak_HashFinal(&Keccak_ctx, tmp_buf); + + BF_set_key(a_key->priv_key_data, (BF_ROUNDS + 2)*4, tmp_buf); + DAP_DELETE(tmp_buf); + } +void dap_enc_bf_key_delete(struct dap_enc_key *a_key) +{ + if(a_key->priv_key_data != NULL) + { + randombytes(a_key->priv_key_data,a_key->priv_key_data_size); + DAP_DELETE(a_key->priv_key_data); + } + a_key->priv_key_data_size = 0; +} +//------CBC----------- +size_t dap_enc_bf_cbc_decrypt(struct dap_enc_key *a_key, const void * a_in, + size_t a_in_size, void ** a_out) { + uint8_t iv[8]; + //BF_KEY *key=a_key->priv_key_data; + if(a_in_size <= 8 || a_in_size%8) { + log_it(L_ERROR, "blowfish_cbc decryption ct with iv must be more than 8 bytes and equal to 8*k"); + return 0; + } + + + *a_out = DAP_NEW_SIZE(uint8_t, a_in_size - 8); + memcpy(iv, a_in, 8); + BF_cbc_encrypt((unsigned char *)(a_in + 8), *a_out, a_in_size - 8, + a_key->priv_key_data, iv, BF_DECRYPT); + int bf_cbc_padding_length = *(uint8_t*)(*a_out + a_in_size - 8 - 1); + +// for(int i=0;i < bf_cbc_padding_length + 4 + 1; ++i) +// printf("%.2x ", *(uint8_t*)(*a_out + a_in_size - 8 - 1 - bf_cbc_padding_length - 4 + i)); +// for(int i=0;i < a_in_size - 8; ++i) +// printf("%.2x ", *(uint8_t*)(*a_out + i)); +// printf("\n"); +// fflush(stdout); + size_t a_out_size = *(uint32_t*)(*a_out + a_in_size - 8 - 1 - bf_cbc_padding_length - 4); + return a_out_size; +} + + + +size_t dap_enc_bf_cbc_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out) +{ + //generate iv and put it in *a_out first bytes + uint8_t iv[8]; + randombytes(iv, 8); + + if(a_in_size <= 0) { + log_it(L_ERROR, "blowfish_cbc encryption pt cannot be 0 bytes"); + return 0; + } + +// BF_KEY *key = a_key->priv_key_data; + + + size_t a_out_size = (a_in_size + 4 + 1 + 7)/8*8 + 8; + *a_out = DAP_NEW_SIZE(uint8_t, a_out_size); + memcpy(*a_out, iv, 8); + BF_cbc_encrypt((unsigned char *)(a_in), *a_out + 8, a_in_size, + a_key->priv_key_data, iv, BF_ENCRYPT); + return a_out_size; +} + +size_t dap_enc_bf_cbc_calc_encode_size(const size_t size_in) +{ + return (size_in + 4 + 1 + 7)/8*8 + 8; +} + +size_t dap_enc_bf_cbc_calc_decode_size(const size_t size_in) +{ + if(size_in <= 8) { + log_it(L_ERROR, "blowfish_cbc decryption size_in ct with iv must be more than 8 bytes"); + return 0; + } + return size_in - 8; +} + +size_t dap_enc_bf_cbc_decrypt_fast(struct dap_enc_key *a_key, const void * a_in, + size_t a_in_size, void * a_out, size_t buf_out_size) { + if(a_in_size - 8 > buf_out_size || a_in_size %8) { + log_it(L_ERROR, "blowfish_cbc fast_decryption too small buf_out_size or not 8*k"); + return 0; + } + uint8_t iv[8]; + //BF_KEY *key=a_key->priv_key_data; + + memcpy(iv, a_in, 8); + BF_cbc_encrypt((unsigned char *)(a_in + 8), a_out, a_in_size - 8, + a_key->priv_key_data, iv, BF_DECRYPT); + + int bf_cbc_padding_length = *(uint8_t*)(a_out + a_in_size - 8 - 1); + + size_t a_out_size = *(uint32_t*)(a_out + a_in_size - 8 - 1 - bf_cbc_padding_length - 4); + return a_out_size; +} + + + +size_t dap_enc_bf_cbc_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void * a_out,size_t buf_out_size) +{ + //generate iv and put it in *a_out first bytes + size_t a_out_size = (a_in_size + 4 + 1 + 7)/8*8 + 8; + if(a_out_size > buf_out_size) { + log_it(L_ERROR, "blowfish_cbc fast_encryption too small buf_out_size"); + return 0; + } + + uint8_t iv[8]; + randombytes(iv, 8); + +// BF_KEY *key = a_key->priv_key_data; + + + memcpy(a_out, iv, 8); + BF_cbc_encrypt((unsigned char *)(a_in), a_out + 8, a_in_size, + a_key->priv_key_data, iv, BF_ENCRYPT); + return a_out_size; + } + + +void dap_enc_bf_cbc_key_new(struct dap_enc_key * a_key) +{ + a_key->_inheritor = NULL; + a_key->_inheritor_size = 0; + a_key->type = DAP_ENC_KEY_TYPE_BF_CBC; + a_key->enc = dap_enc_bf_cbc_encrypt; + a_key->dec = dap_enc_bf_cbc_decrypt; + a_key->enc_na = dap_enc_bf_cbc_encrypt_fast; + a_key->dec_na = dap_enc_bf_cbc_decrypt_fast; +} + +//------OFB----------- + +size_t dap_enc_bf_ofb_decrypt(struct dap_enc_key *a_key, const void * a_in, + size_t a_in_size, void ** a_out) { + uint8_t iv[8]; + + if(a_in_size <= 8) { + log_it(L_ERROR, "blowfish_ofb decryption ct with iv must be more than 8 bytes"); + return 0; + } + + + *a_out = DAP_NEW_SIZE(uint8_t, a_in_size - 8); + memcpy(iv, a_in, 8); + int num = 0;//need for concatenate encryptions or decryptions + BF_ofb64_encrypt((unsigned char *)(a_in + 8), *a_out, a_in_size - 8, + a_key->priv_key_data, iv, &num); + size_t a_out_size = a_in_size - 8; + return a_out_size; +} + + + +size_t dap_enc_bf_ofb_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out) +{ + //generate iv and put it in *a_out first bytes + uint8_t iv[8]; + randombytes(iv, 8); + + if(a_in_size <= 0) { + log_it(L_ERROR, "blowfish_ofb encryption pt cannot be 0 bytes"); + return 0; + } + + + + + size_t a_out_size = a_in_size + 8; + *a_out = DAP_NEW_SIZE(uint8_t, a_out_size); + memcpy(*a_out, iv, 8); + int num = 0;//need for concatenate encryptions or decryptions + BF_ofb64_encrypt((unsigned char *)(a_in), *a_out + 8, a_in_size, + a_key->priv_key_data, iv, &num); + return a_out_size; +} + +size_t dap_enc_bf_ofb_calc_encode_size(const size_t size_in) +{ + return size_in + 8; +} + +size_t dap_enc_bf_ofb_calc_decode_size(const size_t size_in) +{ + if(size_in <= 8) { + log_it(L_ERROR, "blowfish_ofb decryption size_in ct with iv must be more than 8 bytes"); + return 0; + } + return size_in - 8; +} + +size_t dap_enc_bf_ofb_decrypt_fast(struct dap_enc_key *a_key, const void * a_in, + size_t a_in_size, void * a_out, size_t buf_out_size) { + if(a_in_size - 8 > buf_out_size) { + log_it(L_ERROR, "blowfish_ofb fast_decryption too small buf_out_size"); + return 0; + } + uint8_t iv[8]; + //BF_KEY *key=a_key->priv_key_data; + + memcpy(iv, a_in, 8); + int num = 0;//need for concatenate encryptions or decryptions + + BF_ofb64_encrypt((unsigned char *)(a_in + 8), a_out, a_in_size - 8, + a_key->priv_key_data, iv, &num); + + size_t a_out_size = a_in_size - 8; + return a_out_size; +} + + + +size_t dap_enc_bf_ofb_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void * a_out,size_t buf_out_size) +{ + //generate iv and put it in *a_out first bytes + size_t a_out_size = a_in_size + 8; + if(a_out_size > buf_out_size) { + log_it(L_ERROR, "blowfish_ofb fast_encryption too small buf_out_size"); + return 0; + } + + uint8_t iv[8]; + randombytes(iv, 8); + + memcpy(a_out, iv, 8); + int num = 0;//need for concatenate encryptions or decryptions + BF_ofb64_encrypt((unsigned char *)(a_in), a_out + 8, a_in_size, + a_key->priv_key_data, iv, &num); + return a_out_size; + } +void dap_enc_bf_ofb_key_new(struct dap_enc_key * a_key) +{ + a_key->_inheritor = NULL; + a_key->_inheritor_size = 0; + a_key->type = DAP_ENC_KEY_TYPE_BF_OFB; + a_key->enc = dap_enc_bf_ofb_encrypt; + a_key->dec = dap_enc_bf_ofb_decrypt; + a_key->enc_na = dap_enc_bf_ofb_encrypt_fast; + a_key->dec_na = dap_enc_bf_ofb_decrypt_fast; +} + + diff --git a/src/dap_enc_bf_cbc.c b/src/dap_enc_bf_cbc.c deleted file mode 100644 index 481dbcc4ec0b27d3b10d870e58bd7d4e4f9e369a..0000000000000000000000000000000000000000 --- a/src/dap_enc_bf_cbc.c +++ /dev/null @@ -1,169 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <stdint.h> -#include <stddef.h> -#include <string.h> - -//#include "oaes_lib.h" -#include "dap_enc_bf_cbc.h" -#include "dap_common.h" -#include "rand/dap_rand.h" -#include"sha3/KeccakHash.h" - -#define LOG_TAG "dap_enc_bf_cbc" - -//todo clear l/8 and iv things -size_t dap_enc_bf_cbc_decrypt(struct dap_enc_key *a_key, const void * a_in, - size_t a_in_size, void ** a_out) { - uint8_t iv[8]; - //BF_KEY *key=a_key->priv_key_data; - - - *a_out = DAP_NEW_SIZE(uint8_t, a_in_size - 8); - memcpy(iv, a_in, 8); - BF_cbc_encrypt((unsigned char *)(a_in + 8), *a_out, a_in_size - 8, - a_key->priv_key_data, iv, BF_DECRYPT); - size_t a_out_size = a_in_size - 8; - return a_out_size; -} - - - -size_t dap_enc_bf_cbc_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out) -{ - //generate iv and put it in *a_out first bytes - uint8_t iv[8]; - randombytes(iv, 8); - -// BF_KEY *key = a_key->priv_key_data; - - - *a_out = DAP_NEW_SIZE(uint8_t, a_in_size + 8); - memcpy(*a_out, iv, 8); - BF_cbc_encrypt((unsigned char *)(a_in), *a_out + 8, a_in_size, - a_key->priv_key_data, iv, BF_ENCRYPT); - size_t a_out_size = a_in_size + 8; - return a_out_size; -} - -size_t dap_enc_bf_cbc_calc_encode_size(const size_t size_in) -{ - return size_in + 8; -} - -size_t dap_enc_bf_cbc_calc_decode_size(const size_t size_in) -{ - return size_in - 8; -} - -size_t dap_enc_bf_cbc_decrypt_fast(struct dap_enc_key *a_key, const void * a_in, - size_t a_in_size, void * a_out,size_t buf_out_size) { - uint8_t iv[8]; - //BF_KEY *key=a_key->priv_key_data; - - - memcpy(iv, a_in, 8); - BF_cbc_encrypt((unsigned char *)(a_in + 8), a_out, a_in_size - 8, - a_key->priv_key_data, iv, BF_DECRYPT); - size_t a_out_size = a_in_size - 8; - return a_out_size; -} - - - -size_t dap_enc_bf_cbc_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void * a_out,size_t buf_out_size) -{ - //generate iv and put it in *a_out first bytes - uint8_t iv[8]; - randombytes(iv, 8); - -// BF_KEY *key = a_key->priv_key_data; - - - memcpy(a_out, iv, 8); - BF_cbc_encrypt((unsigned char *)(a_in), a_out + 8, a_in_size, - a_key->priv_key_data, iv, BF_ENCRYPT); - size_t a_out_size = a_in_size + 8; - return a_out_size; - } - - -void dap_enc_bf_cbc_key_new(struct dap_enc_key * a_key) -{ - a_key->_inheritor = NULL;//(uint8_t *) bf_cbc_alloc(); - a_key->_inheritor_size = 0;//sizeof(bf_cbc_ctx); - a_key->type = DAP_ENC_KEY_TYPE_BF_CBC; - a_key->enc = dap_enc_bf_cbc_encrypt; - a_key->dec = dap_enc_bf_cbc_decrypt; - a_key->enc_na = dap_enc_bf_cbc_encrypt_fast;//maybe exclude it - a_key->dec_na = dap_enc_bf_cbc_decrypt_fast;//maybe exclude it -} - -void dap_enc_bf_cbc_key_generate(struct dap_enc_key * a_key, const void *kex_buf, - size_t kex_size, const void * seed, size_t seed_size, size_t key_size) -{ - a_key->last_used_timestamp = time(NULL); - - - a_key->priv_key_data_size = sizeof(BF_KEY); - a_key->priv_key_data = DAP_NEW_SIZE(uint8_t, sizeof(BF_KEY)); - - uint8_t *tmp_buf = DAP_NEW_SIZE(uint8_t, (BF_ROUNDS + 2)*4); - Keccak_HashInstance Keccak_ctx; - Keccak_HashInitialize(&Keccak_ctx, 1088, 512, (BF_ROUNDS + 2)*4*8, 0x06); - Keccak_HashUpdate(&Keccak_ctx, kex_buf, kex_size*8); - if(seed_size) - Keccak_HashUpdate(&Keccak_ctx, seed, seed_size*8); - Keccak_HashFinal(&Keccak_ctx, tmp_buf); - - BF_set_key(a_key->priv_key_data, (BF_ROUNDS + 2)*4, tmp_buf); - } -void dap_enc_bf_cbc_key_delete(struct dap_enc_key *a_key) -{ - if(a_key->priv_key_data != NULL) - { - randombytes(a_key->priv_key_data,a_key->priv_key_data_size); - DAP_DELETE(a_key->priv_key_data); - } - a_key->priv_key_data_size = 0; -} - -#ifdef NOT_REVISED_YET - - - - - - - -// Writes result ( out ) in already allocated buffer -size_t dap_enc_bf_cbc_decrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, - void * buf_out, size_t buf_out_size) -{ - OAES_CTX *ctx = get_bf_cbc_ctx(a_key); - if(!ctx) - return 0; - - OAES_RET ret = bf_cbc_decrypt(ctx, a_in, a_in_size, buf_out, &buf_out_size); - if(ret != OAES_RET_SUCCESS) { - buf_out_size = 0; - } - return buf_out_size; -} - -// Writes result ( out ) in already allocated buffer -size_t dap_enc_bf_cbc_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, - size_t a_in_size, void * buf_out, size_t buf_out_size) -{ - OAES_CTX *ctx = get_bf_cbc_ctx(a_key); - if(!ctx) - return 0; - - OAES_RET ret = bf_cbc_encrypt(ctx, a_in, a_in_size, buf_out, &buf_out_size); - if(ret != OAES_RET_SUCCESS) { - buf_out_size = 0; - } - return buf_out_size; -} - -#endif diff --git a/src/dap_enc_iaes.c b/src/dap_enc_iaes.c index f55d3bb30c959e435aa064b857e231dff9d33982..293e298dcf3bc78ffa519743dece4c3996a58acc 100755 --- a/src/dap_enc_iaes.c +++ b/src/dap_enc_iaes.c @@ -83,13 +83,13 @@ size_t dap_enc_iaes256_cbc_decrypt(struct dap_enc_key * a_key, const void * a_in *a_out = (uint8_t *) malloc(a_in_size); - return IAES_256_CBC_decrypt(a_in, *a_out, DAP_ENC_AES_KEY(a_key)->ivec, a_in_size, a_key->priv_key_data); + return dap_enc_iaes256_cbc_decrypt_fast(a_key, a_in, a_in_size, *a_out, a_in_size); } size_t dap_enc_iaes256_cbc_decrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void * buf_out, size_t buf_out_size) { - if (a_in_size % 16) { + if (a_in_size % IAES_BLOCK_SIZE) { log_it(L_ERROR, "Bad in size"); return 0; } else if(buf_out_size < a_in_size) { @@ -97,30 +97,53 @@ size_t dap_enc_iaes256_cbc_decrypt_fast(struct dap_enc_key * a_key, const void * return 0; } - return IAES_256_CBC_decrypt(a_in, buf_out, DAP_ENC_AES_KEY(a_key)->ivec, - a_in_size, a_key->priv_key_data); + size_t block_in32_size = IAES_BLOCK_SIZE/sizeof(uint32_t); + uint32_t round_decrypt_key[60]; + uint32_t feedback[block_in32_size]; + + memcpy(&feedback[0], DAP_ENC_AES_KEY(a_key)->ivec, IAES_BLOCK_SIZE); + swap_endian((uint32_t *)a_key->priv_key_data, IAES_KEYSIZE/sizeof(uint32_t)); + Key_Shedule_for_decrypT((uint32_t *)a_key->priv_key_data, round_decrypt_key); + + void *data = buf_out; + const void *cdata = a_in; + size_t count_block, count32_word; + for(count_block = 0; count_block < (a_in_size/IAES_BLOCK_SIZE); count_block++){ + + AES256_dec_cernelT((uint32_t *)cdata + count_block*block_in32_size, + (uint32_t *)data + count_block*block_in32_size, round_decrypt_key); + + for (count32_word = 0; count32_word < block_in32_size; count32_word++) + *((uint32_t *)data + count_block * block_in32_size + count32_word) ^= feedback[count32_word]; + memcpy(&feedback[0], (uint32_t *)cdata + count_block*block_in32_size, IAES_BLOCK_SIZE); + } +// for(int i = 0; i < 16; ++i) +// {printf("%.2x ", ((uint8_t*)data)[i]);} +// printf("\n");fflush(stdout); + swap_endian((uint32_t *)a_key->priv_key_data, IAES_KEYSIZE/sizeof(uint32_t)); + + return a_in_size - ((uint8_t *)data)[a_in_size - 1]; + } size_t dap_enc_iaes256_cbc_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out) { size_t length_data_new; - uint8_t *data_new; - length_data_new = iaes_block128_padding(a_in, &data_new, a_in_size); - *a_out = (uint8_t *)malloc(length_data_new); + length_data_new = dap_enc_iaes256_calc_encode_size(a_in_size); - IAES_256_CBC_encrypt(data_new, *a_out, DAP_ENC_AES_KEY(a_key)->ivec, length_data_new, a_key->priv_key_data); + *a_out = DAP_NEW_SIZE(uint8_t, length_data_new); - free(data_new); + dap_enc_iaes256_cbc_encrypt_fast(a_key, a_in, a_in_size, *a_out, length_data_new); return length_data_new; } size_t dap_enc_iaes256_calc_encode_size(const size_t size_in) { - return iaes_calc_block128_size(size_in); + return size_in + 1 + (IAES_BLOCK_SIZE - (size_in + 1)%IAES_BLOCK_SIZE)%IAES_BLOCK_SIZE; } -size_t dap_enc_iaes256_calc_decode_size(const size_t size_in) +size_t dap_enc_iaes256_calc_decode_max_size(const size_t size_in) { return size_in; } @@ -128,24 +151,60 @@ size_t dap_enc_iaes256_calc_decode_size(const size_t size_in) size_t dap_enc_iaes256_cbc_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void * buf_out, size_t buf_out_size) { - size_t out_size = iaes_calc_block128_size(a_in_size); - - if((a_in_size % IAES_BLOCK_SIZE) == 0) { - IAES_256_CBC_encrypt(a_in, buf_out, DAP_ENC_AES_KEY(a_key)->ivec, out_size, a_key->priv_key_data); - return out_size; - } - + size_t out_size = dap_enc_iaes256_calc_encode_size(a_in_size); if(buf_out_size < out_size) { log_it(L_ERROR, "buf_out_size less than expected encrypt out size data"); return 0; } - uint8_t* data_in_new; - iaes_block128_padding(a_in, &data_in_new, a_in_size); - IAES_256_CBC_encrypt(data_in_new, buf_out, DAP_ENC_AES_KEY(a_key)->ivec, - out_size, a_key->priv_key_data); + int last_block_from_in = a_in_size%IAES_BLOCK_SIZE; + + size_t block_in32_size = IAES_BLOCK_SIZE/sizeof(uint32_t); + uint32_t feedback[block_in32_size]; + + memcpy(&feedback[0], DAP_ENC_AES_KEY(a_key)->ivec, IAES_BLOCK_SIZE); + swap_endian((uint32_t *)a_key->priv_key_data, IAES_KEYSIZE/sizeof(uint32_t)); + + size_t count_block, count32_word; + const void *data = a_in; + void *cdata = buf_out; + for(count_block = 0; count_block < (a_in_size - last_block_from_in)/IAES_BLOCK_SIZE; count_block++) + { + for (count32_word = 0; count32_word < block_in32_size; count32_word++) + *((uint32_t *)cdata + count_block * block_in32_size + count32_word) = + *((uint32_t *)data + count_block * block_in32_size + count32_word) ^ feedback[count32_word]; + + AES256_enc_cernelT(((uint32_t *)cdata + count_block * block_in32_size), feedback, (uint32_t *)a_key->priv_key_data); + + memcpy ((uint32_t *)cdata + count_block * block_in32_size, &feedback[0], IAES_BLOCK_SIZE); + } + uint8_t tmp_in[IAES_BLOCK_SIZE]; + memcpy(tmp_in, a_in + a_in_size/IAES_BLOCK_SIZE*IAES_BLOCK_SIZE, last_block_from_in); + int padd_size = IAES_BLOCK_SIZE - last_block_from_in; + for(int padd_num = 0; padd_num < padd_size - 1; ++padd_num) + tmp_in[last_block_from_in + padd_num] = 16; + + tmp_in[IAES_BLOCK_SIZE - 1] = padd_size; + + for (count32_word = 0; count32_word < block_in32_size; count32_word++) + *((uint32_t *)cdata + count_block * block_in32_size + count32_word) = + *((uint32_t *)tmp_in + count32_word) ^ feedback[count32_word]; + + AES256_enc_cernelT(((uint32_t *)cdata + count_block * block_in32_size), feedback, (uint32_t *)a_key->priv_key_data); + + memcpy ((uint32_t *)cdata + count_block * block_in32_size, &feedback[0], IAES_BLOCK_SIZE); + swap_endian((uint32_t *)a_key->priv_key_data,IAES_KEYSIZE/sizeof(uint32_t)); + + +// IAES_256_CBC_encrypt(a_in, buf_out, DAP_ENC_AES_KEY(a_key)->ivec, a_in_size - last_block_from_in, a_key->priv_key_data); +// uint8_t tmp_in[IAES_BLOCK_SIZE]; +// memcpy(tmp_in, a_in + a_in_size/IAES_BLOCK_SIZE*IAES_BLOCK_SIZE, last_block_from_in); +// int padd_size = IAES_BLOCK_SIZE - last_block_from_in; +// for(int padd_num = 0; padd_num < padd_size; ++padd_num) +// tmp_in[last_block_from_in + padd_num] = 16; - free(data_in_new); +// tmp_in[last_block_from_in + IAES_BLOCK_SIZE - 1] = padd_size; +// IAES_256_CBC_encrypt(tmp_in, buf_out + a_in_size - last_block_from_in, buf_out + a_in_size - last_block_from_in - IAES_BLOCK_SIZE, IAES_BLOCK_SIZE, a_key->priv_key_data); return out_size; } diff --git a/src/dap_enc_key.c b/src/dap_enc_key.c index c90d8136810fb0ee3e73ab78d4ea208339170525..3a44d7370e4de9454a11208040ed9c6a39ac7066 100755 --- a/src/dap_enc_key.c +++ b/src/dap_enc_key.c @@ -25,13 +25,16 @@ #include "dap_enc_iaes.h" #include "dap_enc_oaes.h" -#include "dap_enc_bf_cbc.h" +#include "dap_enc_bf.h" +#include "dap_enc_GOST.h" + #include "dap_enc_msrln.h" #include "dap_enc_defeo.h" #include "dap_enc_picnic.h" #include "dap_enc_bliss.h" #include "dap_enc_tesla.h" #include "dap_enc_dilithium.h" + #include "dap_enc_ringct20.h" @@ -39,7 +42,6 @@ #undef LOG_TAG #define LOG_TAG "dap_enc_key" - struct dap_enc_key_callbacks{ const char * name; dap_enc_callback_dataop_t enc; @@ -77,7 +79,7 @@ struct dap_enc_key_callbacks{ .gen_key_public = NULL, .gen_key_public_size = NULL, .enc_out_size = dap_enc_iaes256_calc_encode_size, - .dec_out_size = dap_enc_iaes256_calc_decode_size, + .dec_out_size = dap_enc_iaes256_calc_decode_max_size, .sign_get = NULL, .sign_verify = NULL }, @@ -105,8 +107,8 @@ struct dap_enc_key_callbacks{ .dec = dap_enc_bf_cbc_decrypt, .dec_na = dap_enc_bf_cbc_decrypt_fast , .new_callback = dap_enc_bf_cbc_key_new, - .delete_callback = dap_enc_bf_cbc_key_delete, - .new_generate_callback = dap_enc_bf_cbc_key_generate, + .delete_callback = dap_enc_bf_key_delete, + .new_generate_callback = dap_enc_bf_key_generate, .gen_key_public = NULL, .gen_key_public_size = NULL, .enc_out_size = dap_enc_bf_cbc_calc_encode_size, @@ -114,6 +116,38 @@ struct dap_enc_key_callbacks{ .sign_get = NULL, .sign_verify = NULL }, + [DAP_ENC_KEY_TYPE_BF_OFB]={ + .name = "BF_OFB", + .enc = dap_enc_bf_ofb_encrypt, + .enc_na = dap_enc_bf_ofb_encrypt_fast , + .dec = dap_enc_bf_ofb_decrypt, + .dec_na = dap_enc_bf_ofb_decrypt_fast , + .new_callback = dap_enc_bf_ofb_key_new, + .delete_callback = dap_enc_bf_key_delete, + .new_generate_callback = dap_enc_bf_key_generate, + .gen_key_public = NULL, + .gen_key_public_size = NULL, + .enc_out_size = dap_enc_bf_ofb_calc_encode_size, + .dec_out_size = dap_enc_bf_ofb_calc_decode_size, + .sign_get = NULL, + .sign_verify = NULL + }, + [DAP_ENC_KEY_TYPE_GOST_OFB]={ + .name = "GOST_OFB", + .enc = dap_enc_gost_ofb_encrypt, + .enc_na = dap_enc_gost_ofb_encrypt_fast , + .dec = dap_enc_gost_ofb_decrypt, + .dec_na = dap_enc_gost_ofb_decrypt_fast , + .new_callback = dap_enc_gost_ofb_key_new, + .delete_callback = dap_enc_gost_key_delete, + .new_generate_callback = dap_enc_gost_key_generate, + .gen_key_public = NULL, + .gen_key_public_size = NULL, + .enc_out_size = dap_enc_gost_ofb_calc_encode_size, + .dec_out_size = dap_enc_gost_ofb_calc_decode_size, + .sign_get = NULL, + .sign_verify = NULL + }, [DAP_ENC_KEY_TYPE_MSRLN] = { .name = "MSRLN", .enc = NULL, @@ -696,3 +730,13 @@ size_t dap_enc_key_get_dec_size(dap_enc_key_t * a_key, const size_t buf_in_size) log_it(L_ERROR, "dec_out_size not realize for current key type"); return 0; } + +char *dap_enc_get_type_name(dap_enc_key_type_t key_type) +{ + if(s_callbacks[key_type].name) { + return s_callbacks[key_type].name; + } + log_it(L_ERROR, "name not realize for current key type"); + return 0; + +} diff --git a/src/iaes/dap_iaes_proto.h b/src/iaes/dap_iaes_proto.h index bcaef77b3c24f191ba7cde8db1f792c84d3624c4..c3b44d37b64f37ee488ba8f4e6d6f3ed7593b7d0 100755 --- a/src/iaes/dap_iaes_proto.h +++ b/src/iaes/dap_iaes_proto.h @@ -6,6 +6,10 @@ #define IAES_BLOCK_SIZE 16 #define IAES_KEYSIZE 32 +void AES256_enc_cernelT(uint32_t * in, uint32_t * out, uint32_t * masterkey); +void AES256_dec_cernelT(uint32_t * in, uint32_t * out, uint32_t * decr_key); +void swap_endian(uint32_t *buff, unsigned long len); +void Key_Shedule_for_decrypT(uint32_t * key, uint32_t * rounds_keys); void IAES_256_CBC_encrypt(const uint8_t *data, uint8_t *output, uint8_t * ivec, unsigned long length, uint8_t *masterkey); size_t IAES_256_CBC_decrypt(const uint8_t *cdata, uint8_t *output, uint8_t * ivec, unsigned long length, uint8_t *key); diff --git a/src/iaes/iaes256_cbc_cernal.c b/src/iaes/iaes256_cbc_cernal.c index a61de19b7b267133d7f69ad71bee7f95655f0589..9052a2c996371a2fa153aab5139ad5e8e61a932a 100755 --- a/src/iaes/iaes256_cbc_cernal.c +++ b/src/iaes/iaes256_cbc_cernal.c @@ -7,26 +7,12 @@ size_t iaes_calc_block128_size(size_t length_data) { - if(length_data < IAES_BLOCK_SIZE) { - return IAES_BLOCK_SIZE; - } else if((length_data % IAES_BLOCK_SIZE) == 0) { - return length_data; - } - - size_t padding = 16 - length_data % 16; - return length_data + padding; + size_t new_length_data = length_data + 1; + size_t padding = IAES_BLOCK_SIZE - new_length_data % IAES_BLOCK_SIZE; + new_length_data += padding; + return new_length_data; } -size_t iaes_block128_padding(const void *data, uint8_t **data_new, size_t length_data) -{ - size_t length_data_new = iaes_calc_block128_size(length_data); - - *data_new = (uint8_t *) malloc(length_data_new); - memcpy(*data_new, data, length_data); - memset(*data_new + length_data, 0x0, length_data_new - length_data); - - return length_data_new; -} void swap_endian(uint32_t *buff, unsigned long len) { @@ -214,7 +200,7 @@ void IAES_256_CBC_encrypt(const uint8_t *data, uint8_t *cdata, uint8_t *ivec, un AES256_enc_cernelT(((uint32_t *)cdata + count_block * block_in32_size), feedback, (uint32_t *)masterkey); memcpy ((uint32_t *)cdata + count_block * block_in32_size, &feedback[0], IAES_BLOCK_SIZE); - } + } swap_endian((uint32_t *)masterkey,IAES_KEYSIZE/sizeof(uint32_t)); } @@ -487,19 +473,7 @@ size_t IAES_256_CBC_decrypt(const uint8_t *cdata, uint8_t *data, uint8_t *ivec, memcpy(&feedback[0], (uint32_t *)cdata + count_block*block_in32_size, IAES_BLOCK_SIZE); } swap_endian((uint32_t *)masterkey, IAES_KEYSIZE/sizeof(uint32_t)); - - size_t i, padding = 0; - size_t end = length > 16 ? length - 16 : 0; - if(length>0) - for(i = length-1; i >= end; i--) - { - if(data[i] == 0) - padding++; - else - break; - } - - return length - padding; + return length; } diff --git a/src/rand/dap_rand.c b/src/rand/dap_rand.c index cbdddadcb39c550c52b07ebad9b6d045f2439d9a..145f1466e998af2caf3472fb1a6ccc3119e7f920 100755 --- a/src/rand/dap_rand.c +++ b/src/rand/dap_rand.c @@ -28,10 +28,13 @@ uint32_t random_uint32_t(const uint32_t MAX_NUMBER) int randombase64(void*random_array, unsigned int size) { - int off = size - (size*6)/8; - int odd_signs = size - ((size*6)/8)*8; - randombytes(random_array + off, (size*6)/8); - dap_enc_base64_encode(random_array + off, (size*6)/8,random_array,DAP_ENC_DATA_TYPE_B64); + int off = size - (size/4)*3; + int odd_signs = size - ((size/4)*4); + if(odd_signs < size) + { + randombytes(random_array + off, (size/4)*3); + dap_enc_base64_encode(random_array + off, (size/4)*3,random_array,DAP_ENC_DATA_TYPE_B64); + } if(odd_signs) { uint8_t tmpv[7]; diff --git a/test/crypto/dap_enc_base58_test.c b/test/crypto/dap_enc_base58_test.c index a11ae9de3d6fbb9b83d7a40877b5dae01099eb78..33dd6e7f1fd72fb6e574444e38b2ecdb4b5ea108 100755 --- a/test/crypto/dap_enc_base58_test.c +++ b/test/crypto/dap_enc_base58_test.c @@ -3,18 +3,18 @@ #include <string.h> #include "dap_common.h" #include "dap_test.h" -#include "dap_test_generator.h" +#include "rand/dap_rand.h" #include "dap_enc_base58.h" #include "dap_enc_base58_test.h" static void test_encode_decode_base58(void) { static size_t source_size = 0; - int step = 1 + (rand() % 20); + int step = 1 + random_uint32_t( 20); source_size += (size_t) step; uint8_t source[source_size]; - generate_random_byte_array(source, source_size); + randombytes(source, source_size); //source[0] = 0; //source[1] = 0; size_t encode_result_size = DAP_ENC_BASE58_ENCODE_SIZE(source_size); diff --git a/test/crypto/dap_enc_base64_test.c b/test/crypto/dap_enc_base64_test.c index 8a172361f3c4b5c1af3b341319c358d688822e3b..0c4d2789e01ff8e856c8bab6c21779354670150e 100755 --- a/test/crypto/dap_enc_base64_test.c +++ b/test/crypto/dap_enc_base64_test.c @@ -6,12 +6,12 @@ void test_encode_decode_base64(int count_steps, dap_enc_data_type_t standard) size_t source_size = 0; for (int i = 1; i <= count_steps; i++) { - int step = 1 + (rand() % 20 ); + int step = 1 + random_uint32_t( 20 ); source_size += (size_t)step; uint8_t source[source_size]; char encode_result[DAP_ENC_BASE64_ENCODE_SIZE(source_size)]; uint8_t decode_result[source_size]; - generate_random_byte_array(source, source_size); + randombytes(source, source_size); size_t encrypted_size = dap_enc_base64_encode(source, source_size, encode_result, standard); size_t out_size = dap_enc_base64_decode(encode_result, encrypted_size, decode_result, standard); diff --git a/test/crypto/dap_enc_base64_test.h b/test/crypto/dap_enc_base64_test.h index 9d1361d2c3474b4d2dfc24446a4ec0898dc7d38c..587bd94d2e72ec3d32a19350dfde0e547835dd8e 100755 --- a/test/crypto/dap_enc_base64_test.h +++ b/test/crypto/dap_enc_base64_test.h @@ -3,7 +3,7 @@ #include "dap_enc_key.h" #include "dap_test.h" #include "stdint.h" -#include "dap_test_generator.h" +#include "rand/dap_rand.h" extern void dap_enc_base64_tests_run(void); diff --git a/test/crypto/dap_enc_bf_cbc_test.c b/test/crypto/dap_enc_bf_cbc_test.c deleted file mode 100644 index 66b78e41d16a51fabea23cfd31cdaaa1745369a5..0000000000000000000000000000000000000000 --- a/test/crypto/dap_enc_bf_cbc_test.c +++ /dev/null @@ -1,120 +0,0 @@ -#include"dap_enc_key.h" -#include"rand/dap_rand.h" -#include"dap_test.h" -//#include"blowfish/blowfish.h" - -static void test_encode_decode(int count_steps) -{ - size_t source_size = 0; - - for(int i = 0; i < count_steps; i++) { - source_size = 1 + random_uint32_t(20); - - const size_t seed_size = 16; - uint8_t seed[seed_size]; - - const size_t kex_size = 32; - uint8_t kex[kex_size]; - - randombytes(seed, seed_size); - randombytes(kex, kex_size); - - dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_BF_CBC, kex, kex_size, seed, seed_size, 32); - - uint8_t *source = DAP_NEW_SIZE(uint8_t, source_size + 1); - randombase64(source, source_size); - - uint8_t * buf_encrypted = NULL; - uint8_t * buf_decrypted = NULL; - - size_t encrypted_size = key->enc(key, source, source_size, (void**) &buf_encrypted); - - size_t result_size = key->dec(key, buf_encrypted, encrypted_size, (void**) &buf_decrypted); - -// printf("pt_size = %d, decr_size = %d\n", source_size, result_size); -// fflush(stdout); -// source[source_size] = 0; -// printf("pt = %s\n", source); -// fflush(stdout); -// printf("pt2 = %s\n", buf_decrypted); -// fflush(stdout); - - dap_assert_PIF(source_size == result_size, "Check result decode size"); - - dap_assert_PIF(memcmp(source, buf_decrypted, source_size) == 0, - "Check source and encode->decode data"); - - DAP_DELETE(source); - free(buf_encrypted); - free(buf_decrypted); - dap_enc_key_delete(key); - } - - dap_pass_msg("Encode and decode"); -} - -static void test_encode_decode_fast(int count_steps) -{ - const size_t buf_size = 4096; - char buf_encrypt_out[buf_size]; - char buf_decrypt_out[buf_size]; - - - size_t seed_size = 16; - uint8_t seed[seed_size]; - - size_t kex_size = 32; - uint8_t kex[kex_size]; - - randombytes(seed, seed_size); - randombytes(kex, kex_size); - - dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_BF_CBC, kex, kex_size, NULL, 0, 32); - - size_t source_size = 0; - - for(int i = 0; i < count_steps; i++) { - source_size = 1 + random_uint32_t(20); - - uint8_t *source = DAP_NEW_SIZE(uint8_t,source_size + 1); - randombase64(source, source_size); - - - size_t encrypted_size = key->enc_na(key, source, source_size, buf_encrypt_out, source_size + 8); - - size_t result_size = key->dec_na(key, buf_encrypt_out, encrypted_size, buf_decrypt_out, encrypted_size - 8); - - - - dap_assert_PIF(source_size == result_size, "Check result decode size"); - - dap_assert_PIF(memcmp(source, buf_decrypt_out, source_size) == 0, - "Check source and encode->decode data"); - DAP_DELETE(source); - } - - dap_enc_key_delete(key); - dap_pass_msg("Encode and decode fast"); -} - - -static void init_test_case() -{ - dap_enc_key_init(); -} - -static void cleanup_test_case() -{ - dap_enc_key_deinit(); -} - -void dap_enc_bf_cbc_tests_run() -{ - dap_print_module_name("dap_enc_bf_cbc"); - init_test_case(); - - test_encode_decode(50); - test_encode_decode_fast(100); - - cleanup_test_case(); -} diff --git a/test/crypto/dap_enc_defeo_test.h b/test/crypto/dap_enc_defeo_test.h index afed963762fbbce7f42de320c82ab6e622deb4ce..67cb35e576f07b9b41a4ce8a2200cb5f20a41a40 100755 --- a/test/crypto/dap_enc_defeo_test.h +++ b/test/crypto/dap_enc_defeo_test.h @@ -2,6 +2,6 @@ #include "dap_enc_defeo.h" #include "dap_enc_key.h" #include "dap_test.h" -#include "dap_test_generator.h" +#include "rand/dap_rand.h" void dap_enc_defeo_tests_run(void); diff --git a/test/crypto/dap_enc_dilithium_test.c b/test/crypto/dap_enc_dilithium_test.c index 50436f7ac5961b8427de268a55390a2e4b2b38a6..1e39e1ece3d8aa7746ad43145448c58e015091b8 100755 --- a/test/crypto/dap_enc_dilithium_test.c +++ b/test/crypto/dap_enc_dilithium_test.c @@ -1,4 +1,4 @@ -#include "dap_test_generator.h" +#include "rand/dap_rand.h" #include "dap_enc_dilithium_test.h" #include "dap_enc_dilithium.h" #include "../sig_dilithium/dilithium_params.h" @@ -9,18 +9,18 @@ static void test_signing_verifying(void) size_t seed_size = sizeof(uint8_t); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_SIG_DILITHIUM, NULL, 0, seed, seed_size, 0); size_t max_signature_size = dap_enc_dilithium_calc_signature_unserialized_size(); uint8_t* sig = calloc(max_signature_size, 1); - int step = 1 + (rand() % 20); + int step = 1 + random_uint32_t( 20); source_size += (size_t) step; uint8_t source[source_size]; - generate_random_byte_array(source, source_size); + randombytes(source, source_size); size_t siglen = key->enc_na(key, source, source_size, sig, max_signature_size); dap_assert_PIF(siglen > 0, "Signing message"); diff --git a/test/crypto/dap_enc_iaes_test.c b/test/crypto/dap_enc_iaes_test.c deleted file mode 100755 index b823ae6d27ace3b1fa8568df24715be76cd1681d..0000000000000000000000000000000000000000 --- a/test/crypto/dap_enc_iaes_test.c +++ /dev/null @@ -1,107 +0,0 @@ -#include "dap_enc_iaes_test.h" - -void test_encode_decode() -{ - static size_t source_size = 0; - - int step = 1 + (rand() % 20); - source_size += (size_t)step; - - const char *kex_data = "123"; - size_t kex_size = strlen(kex_data); - const size_t seed_size = 1 + (rand() % 1000); - uint8_t seed[seed_size]; - - generate_random_byte_array(seed, seed_size); - - dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_IAES, kex_data, kex_size, seed, seed_size, 0); - - uint8_t source[source_size]; - generate_random_byte_array(source, source_size); - - uint8_t * buf_encrypted = NULL; - uint8_t * buf_decrypted = NULL; - - size_t encrypted_size = key->enc(key, source, - source_size, (void**)&buf_encrypted); - - size_t result_size = key->dec(key, buf_encrypted, - encrypted_size, (void**)&buf_decrypted); - - dap_assert_PIF(source_size == result_size, "Check result decode size"); - - dap_assert_PIF(memcmp(source, buf_decrypted, source_size) == 0, - "Check source and encode->decode data"); - - free(buf_encrypted); - free(buf_decrypted); - dap_enc_key_delete(key); - - source_size++; -} - -void test_encode_decode_fast(size_t count_steps) -{ - const size_t buf_size = 4096; - char buf_encrypt_out[buf_size]; - char buf_decrypt_out[buf_size]; - - size_t source_size = 0; - - const char *kex_data = "123"; - size_t kex_size = strlen(kex_data); - const size_t seed_size = 1 + (rand() % 1000); - uint8_t seed[seed_size]; - - generate_random_byte_array(seed, seed_size); - - dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_IAES, kex_data, kex_size, seed, seed_size, 0); - - for(size_t i = 1; i <= count_steps; i++) { - int step = 1; - source_size += (size_t)step; - - uint8_t source[source_size]; - generate_random_byte_array(source, source_size); - - size_t enc_out_size = dap_enc_iaes256_cbc_encrypt_fast(key, source, source_size, - buf_encrypt_out, buf_size); - - size_t result_size = dap_enc_iaes256_cbc_decrypt_fast(key, buf_encrypt_out, - enc_out_size, buf_decrypt_out, buf_size); - - - dap_assert_PIF(source_size == result_size, "Check result decode size"); - - dap_assert_PIF(memcmp(source, buf_decrypt_out, source_size) == 0, - "Check source and encode->decode data"); - } - - dap_enc_key_delete(key); - - dap_pass_msg("Encode and decode fast") -} - -void init_test_case() -{ - srand((uint32_t)time(NULL)); - dap_enc_key_init(); -} - -void cleanup_test_case() -{ - dap_enc_key_deinit(); -} - -void dap_enc_aes_tests_run() -{ - dap_print_module_name("dap_enc_aes"); - init_test_case(); - - benchmark_mgs_time("Encode and decode 100 times", benchmark_test_time(test_encode_decode, 100)); - benchmark_mgs_rate("Encode and decode", benchmark_test_rate(test_encode_decode, 1)); - - test_encode_decode_fast(100); - - cleanup_test_case(); -} diff --git a/test/crypto/dap_enc_iaes_test.h b/test/crypto/dap_enc_iaes_test.h deleted file mode 100755 index 38f65ed09638b47a605150ae3e95cda4ad5701d8..0000000000000000000000000000000000000000 --- a/test/crypto/dap_enc_iaes_test.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once -#include "dap_enc_iaes.h" -#include "dap_enc_key.h" -#include "dap_test.h" -#include "dap_test_generator.h" - -extern void dap_enc_aes_tests_run(void); diff --git a/test/crypto/dap_enc_oaes_test.c b/test/crypto/dap_enc_oaes_test.c deleted file mode 100755 index 06461162957767bf6aebc9ec9cd48e5a49946429..0000000000000000000000000000000000000000 --- a/test/crypto/dap_enc_oaes_test.c +++ /dev/null @@ -1,107 +0,0 @@ -#include "dap_enc_oaes_test.h" - -static void test_encode_decode(int count_steps) -{ - size_t source_size = 0; - - for(int i = 1; i <= count_steps; i++) { - int step = 1 + (rand() % 20); - source_size += (size_t) step; - - size_t seed_size = 16; - uint8_t seed[seed_size]; - - size_t kex_size = 32; - uint8_t kex[kex_size]; - - generate_random_byte_array(seed, seed_size); - generate_random_byte_array(kex, kex_size); - - dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_OAES, kex, kex_size, seed, seed_size, 32); - - uint8_t source[source_size]; - generate_random_byte_array(source, source_size); - - uint8_t * buf_encrypted = NULL; - uint8_t * buf_decrypted = NULL; - - size_t encrypted_size = key->enc(key, source, source_size, (void**) &buf_encrypted); - - size_t result_size = key->dec(key, buf_encrypted, encrypted_size, (void**) &buf_decrypted); - - dap_assert_PIF(source_size == result_size, "Check result decode size"); - - dap_assert_PIF(memcmp(source, buf_decrypted, source_size) == 0, - "Check source and encode->decode data"); - - free(buf_encrypted); - free(buf_decrypted); - dap_enc_key_delete(key); - } - - dap_pass_msg("Encode and decode"); -} - -static void test_encode_decode_fast(int count_steps) -{ - const size_t buf_size = 4096; - char buf_encrypt_out[buf_size]; - char buf_decrypt_out[buf_size]; - - size_t source_size = 0; - - size_t seed_size = 16; - uint8_t seed[seed_size]; - - size_t kex_size = 32; - uint8_t kex[kex_size]; - - generate_random_byte_array(seed, seed_size); - generate_random_byte_array(kex, kex_size); - - dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_OAES, kex, kex_size, NULL, 0, 32); - - for(int i = 1; i <= count_steps; i++) { - int step = 1 + (rand() % 20); - source_size += (size_t) step; - - uint8_t source[source_size]; - generate_random_byte_array(source, source_size); - - size_t enc_out_size = dap_enc_oaes_encrypt_fast(key, source, source_size, buf_encrypt_out, buf_size); - - size_t result_size = dap_enc_oaes_decrypt_fast(key, buf_encrypt_out, enc_out_size, buf_decrypt_out, buf_size); - - dap_assert_PIF(source_size == result_size, "Check result decode size"); - - dap_assert_PIF(memcmp(source, buf_decrypt_out, source_size) == 0, - "Check source and encode->decode data"); - } - - dap_enc_key_delete(key); - dap_pass_msg("Encode and decode fast"); -} - - - -static void init_test_case() -{ - srand((uint32_t) time(NULL)); - dap_enc_key_init(); -} - -static void cleanup_test_case() -{ - dap_enc_key_deinit(); -} - -void dap_enc_oaes_tests_run() -{ - dap_print_module_name("dap_enc_oaes"); - init_test_case(); - - test_encode_decode(50); - test_encode_decode_fast(100); - - cleanup_test_case(); -} diff --git a/test/crypto/dap_enc_oaes_test.h b/test/crypto/dap_enc_oaes_test.h deleted file mode 100755 index f8951c597f767e26447c18eb85d8a3c94f5a9de7..0000000000000000000000000000000000000000 --- a/test/crypto/dap_enc_oaes_test.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once -#include "dap_enc_oaes.h" -#include "dap_enc_key.h" -#include "dap_test.h" -#include "dap_test_generator.h" - -void dap_enc_oaes_tests_run(void); diff --git a/test/crypto/dap_enc_picnic_test.c b/test/crypto/dap_enc_picnic_test.c index 146372471cdb94f92f5fbb35bec281f99013c267..909b4da58e2dde0040e72d9741253b7359cde26a 100755 --- a/test/crypto/dap_enc_picnic_test.c +++ b/test/crypto/dap_enc_picnic_test.c @@ -1,4 +1,4 @@ -#include "dap_test_generator.h" +#include "rand/dap_rand.h" #include "dap_enc_picnic_test.h" #include "../sig_picnic/picnic.h" @@ -8,18 +8,18 @@ static void test_signing_verifying(void) size_t seed_size = sizeof(int); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_SIG_PICNIC, NULL, 0, seed, seed_size, 0); size_t max_signature_size = dap_enc_picnic_calc_signature_size(key); uint8_t* sig = calloc(max_signature_size, 1); - int step = 1 + (rand() % 20); + int step = 1 + random_uint32_t( 20); source_size += (size_t) step; uint8_t source[source_size]; - generate_random_byte_array(source, source_size); + randombytes(source, source_size); size_t siglen = key->enc_na(key, source, source_size, sig, max_signature_size); dap_assert_PIF(siglen > 0, "Signing message"); diff --git a/test/crypto/dap_enc_picnic_test.h b/test/crypto/dap_enc_picnic_test.h index fa4cff2aab167864969e7f76353dd6dc116fba78..0e69eb1d0ace0aafa43463dac7890e0dc0b4c5b7 100755 --- a/test/crypto/dap_enc_picnic_test.h +++ b/test/crypto/dap_enc_picnic_test.h @@ -2,6 +2,6 @@ #include "dap_enc_picnic.h" #include "dap_enc_key.h" #include "dap_test.h" -//#include "dap_test_generator.h" +//#include "rand/dap_rand.h" void dap_enc_picnic_tests_run(void); diff --git a/test/crypto/dap_enc_ringct20_test.c b/test/crypto/dap_enc_ringct20_test.c index 60e13fe859287b4fb9b210873ef5c1618c06d27d..ba0fdaa5ff80ae8001afcc0626f90b3e8f65ad33 100644 --- a/test/crypto/dap_enc_ringct20_test.c +++ b/test/crypto/dap_enc_ringct20_test.c @@ -1,26 +1,24 @@ -#include "dap_test_generator.h" #include "dap_enc_ringct20_test.h" #include "dap_enc_ringct20.h" #include "ringct20/ringct20_params.h" +#include "rand/dap_rand.h" static void test_signing_verifying(void) { - static size_t source_size = 0; + size_t source_size = 1 + random_uint32_t(20); + uint8_t * source = DAP_NEW_SIZE(uint8_t, source_size); + randombytes(source, source_size); size_t seed_size = sizeof(uint8_t); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_SIG_RINGCT20, NULL, 0, seed, seed_size, 0); size_t max_signature_size = dap_enc_ringct20_calc_signature_size(); uint8_t* sig = calloc(max_signature_size, 1); - int step = 1 + (rand() % 20); - source_size += (size_t) step; - uint8_t source[source_size]; - generate_random_byte_array(source, source_size); size_t siglen = key->enc_na(key, source, source_size, sig, max_signature_size); dap_assert_PIF(siglen > 0, "Signing message"); @@ -30,6 +28,7 @@ static void test_signing_verifying(void) dap_assert_PIF(!verify, "Verifying signature"); ringct20_signature_delete((ringct20_signature_t*)sig); + DAP_DELETE(source); free(sig); dap_enc_key_delete(key); } diff --git a/test/crypto/dap_enc_sig_bliss_test.h b/test/crypto/dap_enc_sig_bliss_test.h index 09841df83a2c0dddd0cd8b9684c4233e1cd772d8..85223f46f9cb601fe950ed4cc1c0114802fe1941 100755 --- a/test/crypto/dap_enc_sig_bliss_test.h +++ b/test/crypto/dap_enc_sig_bliss_test.h @@ -2,6 +2,6 @@ #include "dap_enc_bliss.h" #include "dap_enc_key.h" #include "dap_test.h" -#include "dap_test_generator.h" +#include "rand/dap_rand.h" void dap_enc_sig_bliss_tests_run(void); diff --git a/test/crypto/dap_enc_sign_multi_test.c b/test/crypto/dap_enc_sign_multi_test.c index 706c52629aec0bf65f014f7da7cc896690b0f879..9d1f238a0ae993640842fcc6600976d58a2eae85 100755 --- a/test/crypto/dap_enc_sign_multi_test.c +++ b/test/crypto/dap_enc_sign_multi_test.c @@ -1,6 +1,6 @@ #include "dap_enc_sign_multi_test.h" #include "dap_test.h" -#include "dap_test_generator.h" +#include "rand/dap_rand.h" #include "dap_sign.h" #define SIGNATURE_TYPE_COUNT 4 @@ -11,7 +11,7 @@ static void test_signing_verifying(void) size_t seed_size = sizeof(uint8_t); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); dap_enc_key_type_t key_type_arr[SIGNATURE_TYPE_COUNT] = {\ DAP_ENC_KEY_TYPE_SIG_TESLA,\ @@ -21,14 +21,14 @@ static void test_signing_verifying(void) int step; dap_enc_key_t* key[KEYS_TOTAL_COUNT]; for (int i = 0; i < KEYS_TOTAL_COUNT; i++) { - step = (rand() % SIGNATURE_TYPE_COUNT); + step = random_uint32_t( SIGNATURE_TYPE_COUNT); key[i] = dap_enc_key_new_generate(key_type_arr[step], NULL, 0, seed, seed_size, 0); } - step = 1 + (rand() % 2000); + step = 1 + random_uint32_t( 2000); size_t source_size = (size_t) step; uint8_t *source = DAP_NEW_SIZE(uint8_t, source_size); - generate_random_byte_array(source, source_size); + randombytes(source, source_size); dap_multi_sign_params_t *params = dap_multi_sign_params_make(SIG_TYPE_MULTI_CHAINED, KEYS_TOTAL_COUNT, 5,\ key[0], key[1], key[2], key[3], key[4], key[5],\ diff --git a/test/crypto/dap_enc_tesla_test.c b/test/crypto/dap_enc_tesla_test.c index 60c7c33483d605bfc9f5f02d0acc44b8d5eda37c..fd43039663ffe42347eb13e147a117728e1e2305 100755 --- a/test/crypto/dap_enc_tesla_test.c +++ b/test/crypto/dap_enc_tesla_test.c @@ -1,4 +1,4 @@ -#include "dap_test_generator.h" +#include "rand/dap_rand.h" #include "dap_enc_tesla_test.h" //#include "../sig_tesla/tesla_params.h" @@ -8,18 +8,18 @@ static void test_signing_verifying(void) size_t seed_size = sizeof(uint8_t); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_SIG_TESLA, NULL, 0, seed, seed_size, 0); size_t max_signature_size = dap_enc_tesla_calc_signature_size(); uint8_t* sig = calloc(max_signature_size, 1); - int step = 1 + (rand() % 20); + int step = 1 + random_uint32_t( 20); source_size += (size_t) step; uint8_t source[source_size]; - generate_random_byte_array(source, source_size); + randombytes(source, source_size); size_t siglen = key->enc_na(key, source, source_size, sig, max_signature_size); dap_assert_PIF(siglen > 0, "Signing message"); diff --git a/test/crypto/dap_enc_test.c b/test/crypto/dap_enc_test.c index efa6b2b32ae2e10f6415462d6a043a304762fb61..2f65e109ec777f1f8de440af9d03bc94b8e2cdf7 100755 --- a/test/crypto/dap_enc_test.c +++ b/test/crypto/dap_enc_test.c @@ -2,7 +2,7 @@ #include "dap_common.h" #include "dap_enc_test.h" #include "dap_test.h" -#include "dap_test_generator.h" +#include "rand/dap_rand.h" #include "dap_enc_key.h" #include "dap_enc_base64.h" #include "dap_enc_bliss.h" @@ -12,52 +12,174 @@ #include "dap_enc.h" #define TEST_SER_FILE_NAME "keystorage.txt" +void test_encode_decode(int count_steps, const dap_enc_key_type_t key_type, const int cipher_key_size) +{ + dap_print_module_name(dap_enc_get_type_name(key_type)); + + const int verb = 0; + size_t source_size = 0; + + for(int i = 0; i < count_steps; i++) { + source_size = 1 + random_uint32_t(10000); +// printf("src_size = %d\n", source_size);fflush(stdout); + const size_t seed_size = 16; + uint8_t seed[seed_size]; + + const size_t kex_size = 32; + uint8_t kex[kex_size]; + + randombytes(seed, seed_size); + randombytes(kex, kex_size); + + dap_enc_key_t* key = dap_enc_key_new_generate(key_type, kex, kex_size, seed, seed_size, cipher_key_size); + + uint8_t *source = DAP_NEW_SIZE(uint8_t, source_size+verb); + + randombytes(source, source_size);//randombase64(source, source_size); +// for(int i = 0; i < source_size; ++i) +// printf("%.2x ", source[i]); +// printf(" = len(%d)\n", source_size);fflush(stdout); + + uint8_t * buf_encrypted = NULL; + uint8_t * buf_decrypted = NULL; + + size_t encrypted_size = key->enc(key, source, source_size, (void**) &buf_encrypted); + if(verb) + { + for(int i = 0; i < 24; ++i) + printf("%.2x ", source[i]); + printf("\n");fflush(stdout); + } + size_t result_size = key->dec(key, buf_encrypted, encrypted_size, (void**) &buf_decrypted); + if(verb) + { + printf("pt_size = %d, decr_size = %d, encrypted_size = %d\n", source_size, result_size,encrypted_size); + fflush(stdout); + source[source_size] = 0; + printf("pt = %s\n", source); + fflush(stdout); + printf("pt2 = %s\n", buf_decrypted); + fflush(stdout); + } + dap_assert_PIF(source_size == result_size, "Check result decode size"); + + dap_assert_PIF(memcmp(source, buf_decrypted, source_size) == 0, + "Check source and encode->decode data"); + + DAP_DELETE(source); + free(buf_encrypted); + free(buf_decrypted); + dap_enc_key_delete(key); + } + + dap_pass_msg("Encode and decode"); +} + +void test_encode_decode_fast(int count_steps, const dap_enc_key_type_t key_type, const int cipher_key_size) +{ + const size_t buf_size = 4096; + char buf_encrypt_out[buf_size]; + char buf_decrypt_out[buf_size]; + + + size_t seed_size = 16; + uint8_t seed[seed_size]; + + size_t kex_size = 32; + uint8_t kex[kex_size]; + + randombytes(seed, seed_size); + randombytes(kex, kex_size); + + dap_enc_key_t* key = dap_enc_key_new_generate(key_type, kex, kex_size, seed, seed_size, cipher_key_size); + + size_t source_size = 0; + + for(int i = 0; i < count_steps; i++) { + source_size = 1 + random_uint32_t(2000); + + uint8_t *source = DAP_NEW_SIZE(uint8_t,source_size + 0); + randombytes(source, source_size);//randombase64(source, source_size); + + + size_t encrypted_size = key->enc_na(key, source, source_size, buf_encrypt_out, buf_size); + + size_t result_size = key->dec_na(key, buf_encrypt_out, encrypted_size, buf_decrypt_out, buf_size); + + + + dap_assert_PIF(source_size == result_size, "Check result decode size"); + + dap_assert_PIF(memcmp(source, buf_decrypt_out, source_size) == 0, + "Check source and encode->decode data"); + DAP_DELETE(source); + } + + dap_enc_key_delete(key); + dap_pass_msg("Encode and decode fast"); +} + static void _encrypt_decrypt(enum dap_enc_key_type key_type, enum dap_enc_data_type data_type, size_t count_steps) { size_t source_size = 1; - + const int MAX_SEED_SIZE = 100; + uint8_t seed[MAX_SEED_SIZE]; for (size_t i = 0; i < count_steps; i++) { - int step = 1 + (rand() % 20); - source_size += (size_t)step; + source_size = 1 + random_uint32_t(2000); const char *kex_data = "123"; size_t kex_size = strlen(kex_data); - const size_t seed_size = 1 + (rand() % 1000); - uint8_t seed[seed_size]; - - generate_random_byte_array(seed, seed_size); - + const size_t seed_size = 1 + random_uint32_t(MAX_SEED_SIZE-1); + + randombytes(seed, seed_size); +// printf("i = %d ss = %d, ss=%d\n",i, source_size,seed_size );fflush(stdout); + uint8_t *source = DAP_NEW_SIZE(uint8_t, source_size); +// printf(".");fflush(stdout); + randombytes(source, source_size); +// printf(".");fflush(stdout); dap_enc_key_t* key = dap_enc_key_new_generate(key_type, kex_data, kex_size, seed, seed_size, 0); +// printf(".");fflush(stdout); - - uint8_t source[source_size]; size_t encrypt_buff_size = dap_enc_code_out_size(key, source_size, data_type); - uint8_t encrypt_result[encrypt_buff_size]; - - generate_random_byte_array(source, source_size); - + uint8_t *encrypt_result = DAP_NEW_SIZE(uint8_t, encrypt_buff_size); +// printf(".");fflush(stdout); size_t encrypted_size = dap_enc_code(key, source, source_size, encrypt_result, encrypt_buff_size, data_type); - +// printf(".");fflush(stdout); size_t min_decode_buff_size = dap_enc_decode_out_size(key, encrypt_buff_size, data_type); - uint8_t decode_result[min_decode_buff_size]; +// printf(".");fflush(stdout); + uint8_t *decode_result = DAP_NEW_SIZE(uint8_t, min_decode_buff_size); +// printf(".");fflush(stdout); size_t out_size = dap_enc_decode(key, encrypt_result, encrypted_size, decode_result, min_decode_buff_size, data_type); +// printf("source_size = %d, out_size = %d, min_decode_buff_size = %d, encrypt_buff_size = %d, encrypted_size = %d\n", +// source_size, out_size,min_decode_buff_size, encrypt_buff_size, encrypted_size); +// printf("%.2x%.2x\n", source[0], source[1]); +// printf(".");fflush(stdout); dap_assert_PIF(source_size == out_size, "Check result decode size"); +// printf(".");fflush(stdout); dap_assert_PIF(memcmp(source, decode_result, source_size) == 0, "Check source and encode->decode data"); +// printf(".");fflush(stdout); +//#ifdef xxxxx + + +//#endif + DAP_DELETE(decode_result); + DAP_DELETE(encrypt_result); + DAP_DELETE(source); dap_enc_key_delete(key); } } @@ -149,10 +271,10 @@ static void test_serealize_deserealize(dap_enc_key_type_t key_type) { const char *kex_data = "1234567890123456789012345678901234567890";//"123"; size_t kex_size = strlen(kex_data); - const size_t seed_size = 1 + (rand() % 1000); + const size_t seed_size = 1 + random_uint32_t( 1000); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); // for key_type==DAP_ENC_KEY_TYPE_OAES must be: key_size=[16|24|32] and kex_size>=key_size dap_enc_key_t* key = dap_enc_key_new_generate(key_type, kex_data, kex_size, seed, seed_size, 32); @@ -224,9 +346,9 @@ static void test_serealize_deserealize_pub_priv(dap_enc_key_type_t key_type) { const char *kex_data = "1234567890123456789012345678901234567890"; //"123"; size_t kex_size = strlen(kex_data); - const size_t seed_size = 1 + (rand() % 1000); + const size_t seed_size = 1 + random_uint32_t( 1000); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); // Generate key dap_enc_key_t* key = dap_enc_key_new_generate(key_type, kex_data, kex_size, seed, seed_size, 32); @@ -257,11 +379,11 @@ static void test_serealize_deserealize_pub_priv(dap_enc_key_type_t key_type) dap_assert(key->pub_key_data_size == key2->pub_key_data_size, "Pub key data size"); dap_pass_msg("Key serealize->deserealize"); - size_t source_size = 10 + (rand() % 20); + size_t source_size = 10 + random_uint32_t( 20); uint8_t source_buf[source_size]; size_t sig_buf_size = 0; uint8_t *sig_buf = NULL; - generate_random_byte_array(source_buf, source_size); + randombytes(source_buf, source_size); // encode by key int is_sig = 0, is_vefify = 0; @@ -341,9 +463,9 @@ static void test_serealize_deserealize_pub_priv(dap_enc_key_type_t key_type) void dap_enc_tests_run() { dap_print_module_name("dap_enc"); init_test_case(); - test_encode_decode_raw(50); - test_encode_decode_raw_b64(50); - test_encode_decode_raw_b64_url_safe(50); + test_encode_decode_raw(500); + test_encode_decode_raw_b64(500); + test_encode_decode_raw_b64_url_safe(500); test_key_transfer_msrln(); dap_print_module_name("dap_enc serealize->deserealize IAES"); test_serealize_deserealize(DAP_ENC_KEY_TYPE_IAES); diff --git a/test/crypto/dap_enc_test.h b/test/crypto/dap_enc_test.h index ce2f389dda7b73d7951a75fc08b490183af487e2..5b375d1d2cdaf685d9f6d26b149e85dbc940581e 100755 --- a/test/crypto/dap_enc_test.h +++ b/test/crypto/dap_enc_test.h @@ -1,3 +1,6 @@ #pragma once +#include "dap_enc_key.h" +void test_encode_decode(int count_steps, const dap_enc_key_type_t key_type, const int cipher_key_size); +void test_encode_decode_fast(int count_steps, const dap_enc_key_type_t key_type, const int cipher_key_size); void dap_enc_tests_run(void); diff --git a/test/crypto/main.c b/test/crypto/main.c index 71f0368ab27b1df1c3b5a55aeaf2cc8d0aa3a73d..98a06898b19a36ebe248d66b31099fba861805bf 100755 --- a/test/crypto/main.c +++ b/test/crypto/main.c @@ -1,5 +1,3 @@ -#include "dap_enc_iaes_test.h" -#include "dap_enc_oaes_test.h" #include "dap_enc_base64_test.h" #include "dap_enc_base58_test.h" #include "dap_enc_test.h" @@ -14,24 +12,34 @@ #include "rand/dap_rand.h" #include "dap_common.h" -void dap_enc_bf_cbc_tests_run(); +void dap_enc_bf_tests_run(); int main(void) { // switch off debug info from library dap_log_level_set(L_CRITICAL); - dap_enc_bf_cbc_tests_run(); - //dap_enc_ringct20_tests_run(100); - return 0; + + dap_enc_tests_run(); + + dap_enc_ringct20_tests_run(1000); + test_encode_decode (1000, DAP_ENC_KEY_TYPE_BF_CBC,0); + test_encode_decode_fast (1000, DAP_ENC_KEY_TYPE_BF_CBC,0); + test_encode_decode (1000, DAP_ENC_KEY_TYPE_BF_OFB,0); + test_encode_decode_fast (1000, DAP_ENC_KEY_TYPE_BF_OFB,0); + test_encode_decode (1000, DAP_ENC_KEY_TYPE_GOST_OFB,32); + test_encode_decode_fast (1000, DAP_ENC_KEY_TYPE_GOST_OFB,32); + test_encode_decode (1000, DAP_ENC_KEY_TYPE_IAES,32); + test_encode_decode_fast (1000, DAP_ENC_KEY_TYPE_IAES,32); + test_encode_decode (1000, DAP_ENC_KEY_TYPE_OAES,32); + test_encode_decode_fast (1000, DAP_ENC_KEY_TYPE_OAES,32); + dap_enc_picnic_tests_run(); dap_enc_sig_bliss_tests_run(); dap_enc_dilithium_tests_run(); - dap_enc_aes_tests_run(); - dap_enc_oaes_tests_run(); + dap_enc_base64_tests_run(); dap_enc_base58_tests_run(); dap_enc_msrln_tests_run(); - dap_enc_tests_run(); dap_enc_defeo_tests_run(); dap_enc_tesla_tests_run(); dap_enc_multi_sign_tests_run();