PDFlib的lisence key Hash算法

本内容只用作学习交流,不得用于商业用途.

PDFlib是一个能够读写,编辑,生成PDF文档的C语言库,是专业级的PDF api.我用他只想解决一个小问题:给一些不规范的PDF文档生成书签.尤其对于不可搜索的pdf文档,还有当在手机上阅读的时候,良好的书签就变得非常重要了.

在网上搜索"pdflib c c++", 第一个搜到的就是PDFlib,也有其他的,但是从易用性和功能上来说,PDFlib都是极好的.PDFlib是一个商业产品,用demo版本创建的PDF会有水印,而创建书签则完全不可用.好在这时一个C语言的库,而且有专门用于注册的api,跟踪起来相对容易,试着用IDA分析了一下.下面是分析的结果.

任何的序列号算法都可以归结为一个模式,即key-hash模式.key即一个字符串,可以是随机生成,也可以是加了某些限制的,hash就是通过hash函数对key进行运算后的结果,序列号分为两部分:key和hash,验证的时候,系统用一个hash函数对key进行运算,结果和序列号中hash进行比较,如果符合就通过,因此一个序列号算法的核心就落在hash算法上,只要将这个hash算法提取出来,就可以任意生成合法的序列号.

主要代码如下

#include <iostream>
#include <stdio.h>
using namespace std;

// 用于确认key的格式是否合法
bool ValidateFormat(char * s)
{
    if ( strlen(s) != 0x23 ) return false;
    
    if ( s[7] != 0x2D ) return false;
    
    if ( s[0xe] != 0x2D ) return false;
    
    if ( s[0x15] != 0x2D ) return false;
    
    if ( s[0x1c] != 0x2D ) return false;
    
    return true;
}

// 对前面的15h个字符进行验证
bool ValidateSubString(char *s)
{
    bool ret = true;
    int a1Base = 0;//在数组a1中作为基址
    int a2Index; // 数组a2的索引,基址总是0
    int a1Index; //在数组a1中作为索引,即相对于基址的偏移
    
    // outter loop
    for( ; a1Base < 0x6747 ; a1Base += 0x15)
    {
        // 初始化数组2的索引
        a2Index = a1Base;
        a2Index = a2Index & 0xff;
        
        // 初始化数组1的索引
        a1Index = 0;
        
        int i = 0 ; //内层结束之后要检查这个值
        
        // inner loop
        for ( ; i < 0x15 ; i++ )
        {
            unsigned char c1 = *((unsigned char *)a1 + a1Base+i);
            unsigned char c2 = *((unsigned char *)a2 + a2Index);
            unsigned char c3 = c1 ^ c2;
            
            if ( s[i] != c3)
            {
                // 此时应该跳出inner loop
                // 任何一次inner loop的执行都必须在某个时候break,才返回true
                // 最多执行1259次,其实是和1259个字符串进行比较,合法的key不会与任何一个相同
                break;
            }
            
            a2Index += 1;
            a2Index &= 0xff;
            
            
            //cout << hex<< (int)c1 << " xor " << hex <<  (int)c2 << " = " << hex << (int)c3 << "; " ;
            
            //printf("%02x  xor %02x = %c ; ",c1,c2,(char)c3);
            //printf("%c",(char)c3);
        }
        
        //cout << endl;
        
        // 跳出内层循环
        // 如果一旦发现有一个内层循环完全匹配,则出错
        if ( i == 0x15 ) ret = false;
    }
    
    // 完成所有循环而没有返回,表示Valid
    
    return ret;
}

// 例如 '0' '1' 结果是1
// '1' '1'结果是整数11
int TwoCharToI(char c1,char c2)
{
    return c1 * 0xa + c2 - 0x210;
}



// hashing 返回DWORD的hash值
// pKey是Key 字符的数组,factor其实是其长度
unsigned int HashKey(unsigned char * pKey , int len)
{
    
    unsigned char c = 0;
    unsigned int hash = 0;
    unsigned int ebx;
    unsigned int ebp;
    
    if ( len > 0) 
    {
        //从13到14的时候
        for ( unsigned int i = 0 ; i < len ; i++ )
        {
            
            c = c ^ pKey[i];//这里先将两者扩展为32位,然后才xor,如果pKey是char * 则使用movsx扩展
            
            ebx = ((unsigned char *)Hash1)[i]; // movzx
            ebx = ebx & 0xff;
            
            ebp = c;
            ebp = ebp & 0xff;
            
            ebx = ebx ^ ebp;
                        
            //int x = Hash2[0][0];
            //cout << hex << x << endl;
            //cout << hex << Hash2 << endl;
            ebx = ((unsigned int *)Hash2)[ebx]; //这一句有问题,ebx的值成为一个非法的值,可能导致访问不该访问的地址
            //int * p = (int *)Hash2;
            //ebx = p[ebx];
            
            ebx = ebx ^ hash;
            ebx = ebx << 1 | ebx >> 31;
            c = c >> 1 | c << 7;
            
            hash = ebx;
        }
    }
    
    return hash & 0xffffff;
}

void PrintHashString(unsigned int hash)
{
    char * s = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ";
    
    for ( int i = 0 ; i < 6; i++)
    {
        cout << s[hash & 0x1f] ;
        hash = hash >> 5;
    }
}

int main()
{
    int a1Base = 0;//在数组a1中作为基址
    //char * str = "abcdxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx";
    char * str = "w700111-x1200x-xxxxxx-N7ML22-M93V62";
    int a2Index; // 数组a2的索引,基址总是0
    int a1Index; //在数组a1中作为索引,即相对于基址的偏移
    
    //cout << ValidateFormat(str) << endl;
    
    if ( !ValidateFormat(str) )    {
        cout << " fromat wrong" << endl;
        return 0;
        }

    if ( !ValidateSubString(str) )    {
        cout << " 子串检查未通过 " << endl;
        return 0;
        }
        
    int p56 = TwoCharToI(str[5],str[6]);
    
    //if ( p56 == 1 || p56 == 5 || p56 == 11 ) {}
    
    // 分析中发现上述语句成立与否执行的代码都是一样,所以等同于无
    
    // 下面开始计算HASH
    
    // 输入的字符串中, 7 6 6 6,最后6个填充为0,
    // 7 6 6 000000
    
    unsigned char pKey[0x19] = {
    str[0],str[1],str[2],str[3],str[4],str[5],str[6],str[8],
    str[9],str[10],str[11],str[12],str[13],str[15],str[16],
    str[17],str[18],str[19],str[20],48,48,48,48,48,48};
    
    //cout << pKey << endl;
    //HashKey(pKey,0x19);
    //cout <<  hex << *(int *)((char *)Hash2 + 4) << endl;
    //cout << hex << HashKey(pKey,0x19) << endl;
    // 传递25的时候,实际上最后6个数字是0
    PrintHashString( HashKey(pKey,0x19) );
    
    unsigned char pKey2[0x1f] = {str[0],str[1],str[2],str[3],str[4],str[5],str[6],
    str[8],str[9],str[10],str[11],str[12],str[13],str[15],str[16],str[17],str[18],
    str[19],str[20],48,48,48,48,48,48,str[29],str[30],str[31],str[32],str[33],str[34]};
    
    // 输出合法的第二个串
    PrintHashString( HashKey(pKey2,0x1f) );
    
    // HASH 已经可以自由的生成,唯一要保证的就是前面  7 6 6 必须合法
    // 构造cd key的时候,计算HASH是最后做的事情
    
    //这里的代码是验证CD key的顺序,伪码,仅示意
    
    char f = str[0];
    
    if ( f != 'w' && f != 'W' && f != 'x' )
    {
        cout << "wrong key ,first char wrong" << endl;
    }
    
    // 此时f == 'm' 恒为 false,因此可以改
    //if ( f == 'w' || f == 'm' )
    if ( f == 'w' )
    {
        /*
        if os validate wrong , fire exception return
        else do nothing
        */
    }
    
    // 验证第二个字符
    
    char second = str[1];
    
    if ( second != '7') 
        cout << "second char wrong " << endl;
        
    char third = str[2];
    if( third < '0' ) 
        cout << "thrid char wrong" << endl;
    else if( third > '0' )
        cout << "thrid char wrong" << endl;
        
    // third should be 0
    
    p1213 = TwoCharToI(str[12],str[13]);
    p1011 = TwoCharToI(str[10],str[11]);
    
    if ( p56 != 11)
    {
        if ( p1213 > 70)
            cout << " wrong " << endl;
    }
    
    if ( p1011 > 99 )
        cout << "10 11 wrong" << endl;
        
        
    // 验证过程同时确定了什么叫做合法的key
    
    //UnameFun(&Local);//无名函数,填充一些局部变量
    
    // p13 12这里有些麻烦,但是可以忽略,如果这里设置为00的话
    
    // 假设通过
    
    if (p65 > 11) 
        cout << " wrong p65 " << endl;
        
    // 以p65作为索引,从553C779C出取一个字节, 例如 0
    // 然后以该字节为索引在553C7790处取一个jmp 地址
    // 只有三个地址,因此,字节只能是0 1 2
    // 如果取出的是2,那么就会异常
    // 索引范围是 0 到 p65 - 1
    // 0 0 1 2 1 0 2 2 2 0   0
    // 1 2 3 4 5 6 7 8 9 10 11
    
    if ( p65 == 04 07 08 09 )
        cout << "wrong p65" << endl;
    
    p34 = TwoCharToI(str[3],str[4]);
    
    // 这实际是一种变相的方式来规定p65不能为某些值,例如 04 07 08 09
    // 以一种隐蔽的方式来变相约束key的某些位置的限制,如果key gen的作者不知道这种情况,
    // 就会出错
    
    // 调用参数中的某个值是1
    
    // 如果参数不是1,则p34必须等于参数指定的值
    
    // 如果参数是1,p34可以为1 2 6
    
    const int para = 1;
    
    // 如果验证的时候传递的常数参数是1,则 返回值大于等于4
    // 如果这个值小于等于2,则可以直接通过pdi权限
    if ( para == 1)
    {
        if ( p34 != 1 or 2 or 6 )
            cout << "wrong p34 , should be 1 2 6 " << endl;
    }
    else
    {
        if ( p34 != para)
            cout << "wrong p34 , should be  " <<  para <<endl;
    }
    
    int ret = 0;
    if ( p65 == 1 ) ret = 1;
    
    // p34 合法通过
    
    // p34 如果是2,则也是一个合法的pdi key
    
    // 在windows平台发布的文件中,这个常数是1,意味着,p34只能是1 2 6 
    // 1的权限最低 , 26 均高于此权限
    // 应该分别对应 PDFlib PDFlib + PDI ,PPS 这三个功能
    
    switch (p34)
    {
        case 1:
            if(p->byte31 != 0)
                cout << "wrong" << endl;
            else
            {
                // 成功
                p->44h = 126960B2h;
                return ret | 4;//100,1显然是对应某种liscense 功能
                // 此时不能通过open pdi document这样的license的验证
            }
            break;
            
        case 2:
            p->44h = 126960B2h;//  在使用PDF_open_pdi_document 这样的函数的时候,这个是必须的
            p->48h = 126960B2h;
            return ret | 6;// 110
            break;
            
        case 6:
            p->44h = 126960B2h;// 这应该是更高的权限
            p->48h = 126960B2h;
            p->4ch = 126960B2h;
            return ret | 8;//
            break;
            
        default:
            cout << "wrong p34" << endl;
    }

}

主要是两部分,一部分对key做某种限制,某些字符要符合特定的条件,一旦前面的19个字符确定了,就可以通过HashKey函数算出后面的12个字符.

特别值得注意的是第3个和第4个数字,这几个数字决定了该序列号可以启用哪些功能.可用的值为01 02 06,其中06是所有功能都可以用,往下权限依次降低.

实际代码中有大量的从二进制文件中提取的数据,直接放在网页中,体积太大,这里有完整的代码

#include <iostream>
#include <stdio.h>
using namespace std;

unsigned char a1[0x676][16] = {
{0xEB,0xBA,0x2D,0xBE,0x7A,0x41,0x3A,0x95,0xF9,0x1D,0xAF,0xBA,0xD2,0x44,0xEE,0xF4},
{0xD2,0xE3,0x0D,0xB8,0x05,0xDB,0x4F,0x27,0xBE,0xE5,0x5A,0x2E,0x06,0x9A,0x7D,0xB2},
{0x94,0x17,0x2D,0x33,0x52,0x06,0xBF,0xF4,0xBE,0xAD,0x87,0x20,0xF6,0x59,0x57,0x81},
{0x9C,0xBE,0x1D,0x48,0x5C,0xF4,0xC0,0x41,0x4B,0x0B,0x17,0x64,0x2A,0xB4,0x4D,0x4B},
{0x5D,0xF9,0x56,0x29,0x9C,0xE4,0xDD,0x88,0x96,0xB2,0x92,0xE4,0x17,0xB8,0x7C,0x93},
{0x7A,0x0D,0x74,0x0A,0x69,0x51,0x81,0xBE,0xDA,0xBB,0xF9,0x77,0x82,0x03,0xAA,0x04},
{0xF5,0x7B,0x87,0x5B,0xE2,0xC1,0x26,0x99,0x5E,0xE2,0xE5,0xD4,0x69,0x1D,0xE8,0xF6},
{0xB8,0xE8,0x9A,0xC9,0xA4,0xD2,0xB7,0x59,0x9D,0x59,0x64,0x6D,0x59,0x1F,0xA3,0x2A},
{0x9A,0x56,0x42,0x59,0xA0,0xAA,0x88,0x99,0x1E,0x98,0x7D,0xD8,0xE7,0x61,0x63,0x2F},
{0x1F,0x2D,0x5C,0x61,0xFB,0xB7,0x9A,0x97,0x55,0x1B,0x30,0x44,0x48,0x2E,0x1F,0xF5},
{0xD1,0x88,0x10,0x96,0x49,0xBA,0x8C,0xE1,0x25,0x6E,0x96,0xD1,0x80,0x56,0x6C,0xE4},
{0xAC,0x41,0xD8,0x08,0x53,0x44,0x22,0x6D,0x69,0xD0,0x85,0xA1,0x3E,0x9B,0xFE,0x95},
{0x7B,0x15,0xF5,0x3A,0x74,0xFA,0xF9,0xB7,0x26,0x99,0x03,0xCC,0x83,0xD8,0xF4,0xFB},
{0x80,0xD3,0xEF,0x6B,0x96,0xD4,0xE0,0x48,0xF6,0x33,0x6A,0x6C,0x53,0xD9,0x7D,0x96},
{0xA3,0x29,0x0C,0x1F,0xD5,0xE5,0x66,0xCD,0x5E,0xB7,0xE2,0x51,0xBE,0x69,0x14,0x7D},
{0x99,0xF0,0x64,0x17,0x65,0x06,0x85,0x99,0x08,0x9D,0x3B,0xD5,0x94,0x43,0xD4,0x55},
{0xAA,0xBD,0x28,0xA3,0x7B,0x41,0x36,0x89,0xF9,0x1D,0xBB,0xBC,0xD2,0x45,0xF2,0xF7},
{0xD7,0x85,0x0B,0xBB,0x06,0x9A,0x48,0x22,0xA3,0xE4,0x5A,0x22,0x1A,0x9A,0x7D,0xA6},
{0x92,0x17,0x2C,0x2F,0x51,0x00,0xC2,0xF2,0xBD,0xA9,0xC1,0x27,0xF3,0x44,0x55,0x81},
{0x90,0xA2,0x1D,0x48,0x48,0xF2,0xC0,0x40,0x57,0x08,0x10,0x19,0x2C,0xB7,0x48,0x0D},
{0x5A,0xFC,0x4B,0x2B,0x9C,0xE8,0xC1,0x88,0x96,0xA6,0x94,0xE4,0x16,0xA4,0x7F,0x9B},
{0x07,0x0B,0x77,0x0C,0x2C,0x56,0x84,0xA3,0xD8,0xBB,0xF5,0x6B,0x82,0x03,0xBE,0x02},
{0xF5,0x7A,0x9B,0x58,0xEB,0xBC,0x20,0x9A,0x59,0xA7,0xE2,0xD1,0x74,0x1B,0xE8,0xFA},
{0xA4,0xE8,0x9A,0xDD,0xA2,0xD2,0xB6,0x45,0x9E,0x59,0x19,0x6B,0x5A,0x17,0xE6,0x2D},
{0x9F,0x4B,0x44,0x59,0xAC,0xB6,0x88,0x99,0x0A,0x9E,0x7D,0xD9,0xFB,0x63,0x62,0x52},
{0x19,0x2E,0x55,0x00,0xFC,0xB2,0x87,0x96,0x55,0x17,0x2C,0x44,0x48,0x3A,0x19,0xF5},
{0xD0,0x94,0x12,0x94,0x34,0xBC,0x88,0xE1,0x44,0x69,0x93,0xCC,0x81,0x56,0x60,0xF8},
{0xAC,0x41,0xCC,0x0E,0x53,0x45,0x3E,0x6F,0x6A,0x99,0x83,0xA5,0x3F,0xFD,0xF9,0x90},
{0x66,0x17,0xF5,0x36,0x68,0xFA,0xF9,0xA3,0x20,0x99,0x02,0xD0,0x81,0xDC,0xBD,0xFD},
{0x84,0xD1,0x8A,0x6C,0x93,0xC9,0xE2,0x48,0xFA,0x2F,0x6A,0x6C,0x47,0xDF,0x7D,0x97},
{0xBF,0x2B,0x09,0x56,0xD3,0xE1,0x65,0xAC,0x59,0xB2,0xFF,0x53,0xBE,0x65,0x08,0x7D},
{0x99,0xE4,0x62,0x17,0x64,0x1A,0x87,0x9F,0x4E,0x9B,0x3F,0xD1,0xF2,0x44,0xD6,0x48},
{0xAC,0xBD,0x24,0xBF,0x7B,0x41,0x22,0x8F,0xF9,0x1C,0xA7,0xBE,0xD5,0x03,0xF4,0xF3},
{0xD2,0xE3,0x0C,0xB9,0x1B,0x9C,0x48,0x2E,0xBF,0xE4,0x5A,0x36,0x1C,0x9A,0x7C,0xBA},
{0x90,0x1F,0x6A,0x29,0x55,0x06,0xBC,0xF5,0xBF,0xB4,0xC0,0x27,0xFF,0x58,0x55,0x81},
{0x84,0xA4,0x1D,0x49,0x54,0xF0,0xC9,0x06,0x51,0x0C,0x17,0x67,0x2B,0xB5,0x55,0x0C},
{0x5A,0xF0,0x57,0x2B,0x9C,0xFC,0xC7,0x88,0x97,0xBA,0x95,0xE4,0x50,0xA2,0x7B,0x93},
{0x79,0x0C,0x75,0x11,0x2E,0x56,0x88,0xBF,0xD8,0xBB,0xE1,0x6D,0x82,0x02,0xA2,0x03},
{0xF4,0x3C,0x9D,0x5C,0xE2,0xC6,0x27,0x98,0x44,0xA5,0xE2,0xDD,0x68,0x1B,0xE8,0xEE},
{0xA2,0xE8,0x9B,0xC1,0xA3,0xD0,0xF0,0x43,0x9A,0x59,0x63,0x6C,0x58,0x0A,0xE4,0x2D},
{0x93,0x57,0x44,0x59,0xB8,0xB0,0x88,0x98,0x16,0x9F,0x7E,0xBF,0xFD,0x66,0x63,0x2F},
{0x1E,0x2C,0x48,0x06,0xFC,0xBE,0x9B,0x96,0x55,0x03,0x2A,0x44,0x49,0x26,0x18,0xF0},
{0xB6,0x92,0x17,0x96,0x49,0xBB,0x8A,0xFC,0x42,0x69,0x9F,0xD0,0x81,0x56,0x74,0xFE},
{0xAC,0x40,0xD0,0x0F,0x55,0x23,0x38,0x6A,0x69,0xD3,0x84,0xA7,0x22,0xFC,0xF9,0x9C},
{0x7A,0x17,0xF5,0x22,0x6E,0xFA,0xF8,0xBF,0x21,0x9E,0x64,0xD6,0x84,0xD8,0xF7,0xFA},
{0x86,0xCC,0x88,0x6C,0x9F,0xD5,0xE2,0x48,0xEE,0x29,0x6A,0x6D,0x5B,0xDE,0x75,0xF1},
{0xB9,0x2E,0x0C,0x1C,0xD4,0xE3,0x78,0xAA,0x59,0xBE,0xE3,0x53,0xBE,0x71,0x0E,0x7D},
{0x98,0xF8,0x63,0x1E,0x02,0x1C,0x82,0x99,0x0F,0x9C,0x3D,0xCC,0xF3,0x44,0xDD,0x54},
{0xAC,0xBD,0x30,0xB9,0x7B,0x40,0x3E,0x8F,0xF9,0x7A,0xA1,0xBB,0xD2,0x42,0xF3,0xF1},
{0xCF,0xE2,0x0C,0xB2,0x07,0x9C,0x48,0x3A,0xB9,0xE4,0x5B,0x2A,0x1C,0x9B,0x01,0xBC},
{0x95,0x17,0x2C,0x2E,0x57,0x1B,0xBE,0xF5,0xB4,0xA8,0xC0,0x27,0xEB,0x5E,0x55,0x80},
{0x98,0xA4,0x1F,0x34,0x52,0xF5,0xC0,0x40,0x56,0x0E,0x0A,0x65,0x2B,0xBE,0x49,0x0C},
{0x5A,0xE4,0x51,0x2B,0x9D,0xE0,0xC7,0x8B,0xEA,0xBC,0x93,0xE4,0x15,0xA5,0x79,0x8E},
{0x7B,0x0C,0x7E,0x0D,0x2E,0x56,0x9C,0xB9,0xD8,0xBA,0xFD,0x6D,0x86,0x7F,0xA4,0x05},
{0xF5,0x79,0x9A,0x5E,0xFF,0xC0,0x27,0x93,0x58,0xA5,0xE2,0xC9,0x6E,0x1B,0xE9,0xF2},
{0xA2,0xED,0xE6,0xC7,0xA5,0xD2,0xB5,0x44,0x98,0x44,0x65,0x6C,0x53,0x16,0xE4,0x2D},
{0x87,0x51,0x44,0x58,0xA4,0xB0,0x8E,0xE5,0x10,0x99,0x7D,0xDE,0xFA,0x64,0x7E,0x2E},
{0x1E,0x27,0x54,0x06,0xFC,0xAA,0x9D,0x96,0x54,0x1F,0x2A,0x43,0x20,0x20,0x1E,0xF5},
{0xD7,0x95,0x15,0x8B,0x48,0xBB,0x81,0xE3,0x42,0x69,0x8B,0xD9,0x82,0x57,0x69,0xF0},
{0xAC,0x3C,0xD6,0x09,0x53,0x45,0x3F,0x68,0x74,0xD1,0x85,0xA5,0x3B,0xFC,0xF9,0x88},
{0x7C,0x15,0xFC,0x3A,0x69,0xFD,0x84,0xB9,0x27,0x99,0x02,0xD1,0x86,0xC5,0xF5,0xFB},
{0x84,0xD5,0x88,0x6C,0x8B,0xD3,0xE0,0x41,0xF6,0x2E,0x62,0x11,0x5D,0xD8,0x7D,0x97},
{0xBE,0x2C,0x11,0x1E,0xD5,0xE1,0x61,0xAA,0x59,0xAA,0xE5,0x51,0xB7,0x69,0x09,0x74},
{0xE4,0xFE,0x65,0x17,0x64,0x1B,0x80,0x84,0x09,0x9D,0x3F,0xD5,0xF3,0x44,0xC9,0x52},
{0xAE,0xB4,0x28,0xBF,0x7B,0x3C,0x38,0x88,0xF9,0x1C,0xA6,0xB9,0xCF,0x44,0xF2,0xF3},
{0xD6,0xE2,0x0C,0xA6,0x01,0x9E,0x41,0x22,0xBF,0xE5,0x27,0x2C,0x1B,0x9A,0x7C,0xBB},
{0x97,0x0A,0x2D,0x2F,0x55,0x02,0xBE,0xF5,0xA0,0xAE,0xC2,0x2E,0xF3,0x58,0x57,0xFC},
{0x9E,0xA3,0x1D,0x49,0x55,0xF7,0xDD,0x41,0x57,0x0C,0x13,0x65,0x2B,0xAA,0x4F,0x0E},
{0x53,0xFC,0x57,0x28,0xE1,0xE6,0xC0,0x88,0x97,0xBB,0x91,0xF9,0x17,0xA4,0x7B,0x97},
{0x7B,0x0C,0x6A,0x0B,0x2C,0x5F,0x84,0xBF,0xDC,0xC6,0xFB,0x6A,0x82,0x02,0xA3,0x07},
{0xE8,0x7B,0x9B,0x5C,0xE6,0xC0,0x27,0x87,0x5E,0xA7,0xEB,0xD1,0x68,0x1E,0x95,0xF4},
{0xA5,0xE8,0x9B,0xC0,0xA7,0xCF,0xB7,0x45,0x9A,0x5D,0x65,0x6C,0x47,0x10,0xE6,0x24},
{0x9F,0x57,0x42,0x24,0xA2,0xB7,0x88,0x98,0x17,0x9B,0x60,0xD8,0xFB,0x66,0x67,0x2E},
{0x1E,0x33,0x52,0x04,0xF5,0xB2,0x9B,0x91,0x28,0x19,0x2D,0x44,0x49,0x27,0x1C,0xE8},
{0xD1,0x94,0x17,0x92,0x48,0xBB,0x95,0xE6,0x40,0x60,0x93,0xD0,0x89,0x2B,0x6E,0xF9},
{0xAC,0x40,0xD1,0x0B,0x4E,0x44,0x3E,0x6A,0x6D,0xD1,0x84,0xB8,0x38,0xFE,0xF0,0x90},
{0x7A,0x1E,0x88,0x38,0x69,0xFA,0xF8,0xBE,0x25,0x84,0x03,0xD0,0x84,0xDC,0xF5,0xFA},
{0x99,0xD6,0x8A,0x65,0x93,0xD6,0xE2,0x35,0xF4,0x2E,0x6A,0x6D,0x5A,0xDA,0x60,0x96},
{0xBF,0x2E,0x08,0x1E,0xD4,0xFC,0x62,0xA8,0x50,0xB2,0xE0,0x52,0xC3,0x6B,0x09,0x7D},
{0x98,0xF9,0x67,0x0A,0x65,0x1A,0x82,0x9D,0x09,0x9C,0x22,0xD6,0xF1,0x4D,0xD1,0x57},
{0xAE,0xC0,0x2A,0xBE,0x7B,0x40,0x3F,0x8A,0xE4,0x1D,0xA7,0xBB,0xD6,0x44,0xF3,0xEE},
{0xD5,0xE0,0x05,0xBE,0x04,0x9F,0x35,0x20,0xBE,0xE4,0x5B,0x2B,0x19,0x87,0x7D,0xBA},
{0x95,0x13,0x2D,0x2E,0x48,0x01,0xBC,0xFC,0xB8,0xAB,0xC4,0x5A,0xF1,0x59,0x55,0x80},
{0x99,0xA1,0x00,0x48,0x54,0xF5,0xC4,0x41,0x56,0x11,0x10,0x67,0x22,0xB2,0x4A,0x09},
{0x27,0xFE,0x56,0x2B,0x9D,0xE1,0xC2,0x95,0x96,0xBA,0x93,0xE0,0x17,0xA5,0x66,0x94},
{0x79,0x05,0x72,0x0E,0x28,0x2B,0x86,0xBE,0xD8,0xBA,0xFC,0x68,0x9F,0x03,0xA2,0x05},
{0xF1,0x7B,0x9A,0x41,0xE5,0xC2,0x2E,0x9F,0x5B,0xA2,0x9F,0xD3,0x69,0x1B,0xE9,0xF3},
{0xA7,0xF5,0x9A,0xC1,0xA5,0xD6,0xB7,0x44,0x87,0x5E,0x67,0x65,0x5F,0x15,0xEC,0x50},
{0x9D,0x56,0x44,0x58,0xA5,0xB5,0x95,0x99,0x16,0x99,0x79,0xD8,0xFA,0x7B,0x64,0x2C},
{0x17,0x2B,0x57,0x0F,0x81,0xB0,0x9A,0x96,0x54,0x1E,0x2F,0x59,0x48,0x26,0x1E,0xF1},
{0xD1,0x95,0x0A,0x91,0x4A,0xB2,0x8D,0xE2,0x42,0x14,0x91,0xD1,0x81,0x57,0x69,0xFB},
{0xB1,0x41,0xD0,0x09,0x57,0x44,0x3F,0x77,0x6E,0xD3,0x8D,0xA0,0x3C,0xFD,0x84,0x92},
{0x7B,0x17,0xF4,0x3F,0x6B,0xE7,0xF9,0xBF,0x27,0x9D,0x03,0xD1,0x99,0xDF,0xF7,0xF3},
{0x81,0xD2,0x8A,0x11,0x91,0xD4,0xE2,0x49,0xF3,0x2C,0x77,0x6C,0x5B,0xD8,0x79,0x96},
{0xBE,0x33,0x0B,0x1C,0xDD,0xE4,0x66,0xA9,0x24,0xB0,0xE2,0x53,0xBF,0x6C,0x0B,0x60},
{0x99,0xF8,0x65,0x13,0x65,0x1B,0x9F,0x9E,0x0B,0x95,0x3A,0xD2,0xF7,0x39,0xD3,0x55},
{0xAC,0xBC,0x2D,0xBC,0x66,0x41,0x3E,0x88,0xFD,0x1D,0xA6,0xA6,0xD5,0x46,0xFA,0xF6},
{0xD1,0xE7,0x71,0xBC,0x06,0x9C,0x49,0x27,0xBC,0xF9,0x5A,0x2A,0x1B,0x9E,0x7D,0xBB},
{0x88,0x10,0x2F,0x27,0x50,0x05,0xB8,0x88,0xBA,0xA9,0xC0,0x26,0xF6,0x5B,0x48,0x81},
{0x98,0xA3,0x19,0x48,0x55,0xE8,0xC7,0x43,0x5F,0x09,0x14,0x62,0x56,0xB0,0x48,0x0C},
{0x5B,0xF9,0x54,0x36,0x9C,0xE0,0xC0,0x8C,0x96,0xBB,0x8E,0xE3,0x15,0xAC,0x7E,0x90},
{0x73,0x71,0x70,0x0C,0x2E,0x57,0x81,0xBC,0xC5,0xBB,0xFD,0x6A,0x86,0x03,0xA3,0x18},
{0xF2,0x79,0x93,0x59,0xE1,0xC9,0x5A,0x9D,0x59,0xA5,0xE3,0xD4,0x6B,0x06,0xE8,0xF2},
{0xA5,0xEC,0x9A,0xC0,0xB8,0xD5,0xB5,0x4D,0x9F,0x5D,0x65,0x11,0x5D,0x17,0xE4,0x2C},
{0x9A,0x54,0x59,0x59,0xA4,0xB7,0x8C,0x99,0x17,0x84,0x7A,0xDA,0xF3,0x63,0x67,0x2F},
{0x63,0x29,0x55,0x06,0xFD,0xB7,0x98,0x8B,0x55,0x1F,0x2D,0x40,0x48,0x27,0x03,0xF2},
{0xD3,0x9C,0x12,0x92,0x4A,0xC6,0x8F,0xE1,0x42,0x68,0x96,0xD3,0x9C,0x56,0x68,0xF9},
{0xA8,0x41,0xD1,0x14,0x54,0x46,0x36,0x6F,0x6D,0xD2,0xF9,0xA2,0x3F,0xFC,0xF8,0x95},
{0x79,0x0A,0xF5,0x3E,0x69,0xFE,0xF9,0xBE,0x3A,0x9E,0x01,0xD8,0x81,0xDC,0xF1,0x87},
{0x83,0xD1,0x88,0x6D,0x96,0xD6,0xFF,0x48,0xF2,0x2E,0x6E,0x6C,0x5A,0xC5,0x7A,0x94},
{0xB7,0x2B,0x08,0x1B,0xA9,0xE6,0x65,0xAA,0x58,0xB7,0xE0,0x4E,0xBE,0x6D,0x09,0x79},
{0x99,0xF9,0x78,0x10,0x67,0x12,0x87,0x9D,0x0F,0xE1,0x38,0xD1,0xF3,0x45,0xD4,0x57},
{0xB1,0xBD,0x2C,0xBE,0x7F,0x41,0x3F,0x95,0xFE,0x1F,0xAF,0xBE,0xD6,0x43,0x8E,0xF4},
{0xD2,0xE2,0x0D,0xBB,0x04,0x81,0x48,0x26,0xBE,0xE0,0x5A,0x2B,0x06,0x9D,0x7F,0xB2},
{0x90,0x13,0x25,0x53,0x52,0x06,0xBE,0xF4,0xBD,0xAB,0xDD,0x27,0xF7,0x59,0x51,0x81},
{0x99,0xBE,0x1A,0x4A,0x5C,0xF0,0xC4,0x48,0x2B,0x0B,0x17,0x65,0x2A,0xB7,0x4A,0x11},
{0x5A,0xF8,0x56,0x2F,0x9C,0xE1,0xDD,0x8F,0x94,0xB2,0x96,0xE1,0x17,0xD8,0x7C,0x93},
{0x7B,0x0D,0x77,0x0E,0x33,0x56,0x80,0xBE,0xDC,0xBB,0xFC,0x77,0x85,0x01,0xAA,0x00},
{0xF0,0x7A,0xE7,0x5B,0xE2,0xC0,0x26,0x9A,0x5B,0xB8,0xE2,0xD5,0x69,0x1F,0xE8,0xF3},
{0xB8,0xEF,0x98,0xC9,0xA0,0xD7,0xB5,0x39,0x9D,0x59,0x65,0x6D,0x5A,0x15,0xF9,0x2D},
{0x9B,0x56,0x40,0x59,0xA5,0xAA,0x8F,0x9B,0x1E,0x9C,0x78,0xDB,0x87,0x61,0x63,0x2E},
{0x1F,0x2E,0x57,0x1B,0xFC,0xB6,0x9A,0x92,0x55,0x1E,0x30,0x43,0x4A,0x2E,0x1B,0xF0},
{0xD5,0xE8,0x10,0x96,0x48,0xBA,0x88,0xE3,0x5F,0x69,0x97,0xD1,0x85,0x56,0x69,0xE4},
{0xAB,0x43,0xD8,0x0C,0x56,0x41,0x42,0x6D,0x69,0xD1,0x85,0xA5,0x3D,0xE1,0xF9,0x94},
{0x7B,0x13,0xF5,0x3F,0x74,0xFD,0xFB,0xB7,0x22,0x9C,0x05,0xA3,0x83,0xD8,0xF5,0xFB},
{0x84,0xD3,0x95,0x6C,0x97,0xD4,0xE6,0x48,0xF3,0x33,0x6D,0x6E,0x53,0xDE,0x7C,0x96},
{0xCC,0x29,0x0C,0x1E,0xD5,0xE1,0x67,0xB7,0x59,0xB6,0xE2,0x57,0xBE,0x6C,0x14,0x7A},
{0x9B,0xF0,0x63,0x16,0x64,0x69,0x85,0x99,0x09,0x9D,0x3F,0xD3,0xEE,0x44,0xD5,0x55},
{0xA8,0xBD,0x2D,0xA3,0x7C,0x43,0x36,0x8E,0xF8,0x1F,0xD4,0xBC,0xD2,0x44,0xF2,0xF3},
{0xD0,0xFF,0x0C,0xBA,0x06,0x98,0x48,0x27,0xA3,0xE3,0x58,0x22,0x1D,0x9B,0x7E,0xC9},
{0x92,0x17,0x2D,0x2F,0x55,0x04,0xA3,0xF5,0xBC,0xA9,0xC4,0x27,0xF6,0x44,0x52,0x83},
{0x90,0xA5,0x1C,0x4C,0x27,0xF2,0xC0,0x41,0x57,0x0C,0x15,0x78,0x2B,0xB6,0x48,0x08},
{0x5A,0xF9,0x4B,0x2C,0x9E,0xE8,0xC6,0x89,0x93,0xC9,0x94,0xE4,0x17,0xA4,0x7B,0x91},
{0x66,0x0C,0x76,0x0C,0x2A,0x56,0x81,0xA3,0xDF,0xB9,0xF5,0x6C,0x83,0x05,0xD1,0x02},
{0xF5,0x7B,0x9B,0x5C,0xE0,0xDD,0x27,0x9B,0x59,0xA1,0xE2,0xD4,0x74,0x1C,0xEA,0xFA},
{0xA3,0xE9,0x9D,0xB2,0xA2,0xD2,0xB7,0x45,0x9A,0x5B,0x78,0x6C,0x5B,0x17,0xE0,0x2D},
{0x9A,0x4B,0x43,0x5B,0xAC,0xB1,0x89,0x91,0x65,0x9E,0x7D,0xD8,0xFB,0x66,0x61,0x33},
{0x1E,0x2F,0x55,0x02,0xFC,0xB7,0x87,0x91,0x57,0x17,0x2B,0x45,0x41,0x55,0x19,0xF5},
{0xD1,0x94,0x17,0x94,0x55,0xBB,0x89,0xE1,0x46,0x69,0x96,0xCC,0x86,0x54,0x60,0xFF},
{0xAE,0x41,0xA3,0x0E,0x53,0x44,0x3E,0x6A,0x6B,0xCC,0x84,0xA4,0x3F,0xF8,0xF9,0x95},
{0x66,0x10,0xF7,0x36,0x6F,0xF8,0xF8,0xCC,0x20,0x99,0x03,0xD0,0x84,0xDA,0xE8,0xFA},
{0x85,0xD1,0x8C,0x6C,0x96,0xC9,0xE5,0x4A,0xFA,0x28,0x68,0x6E,0x28,0xDF,0x7D,0x96},
{0xBF,0x2E,0x0E,0x03,0xD4,0xE0,0x65,0xAE,0x59,0xB7,0xFF,0x54,0xBC,0x65,0x0F,0x7F},
{0x9A,0x8B,0x62,0x17,0x65,0x1A,0x82,0x9B,0x14,0x9C,0x3E,0xD1,0xF7,0x44,0xD4,0x48},
{0xAB,0xBF,0x24,0xB8,0x79,0x45,0x4D,0x8F,0xF9,0x1D,0xA7,0xBB,0xD0,0x59,0xF3,0xF2},
{0xD2,0xE6,0x0C,0xBB,0x1B,0x9B,0x4A,0x2E,0xB8,0xE6,0x5F,0x59,0x1C,0x9A,0x7D,0xBA},
{0x95,0x15,0x30,0x2E,0x54,0x06,0xBA,0xF5,0xBD,0xB4,0xC7,0x25,0xFF,0x5F,0x57,0x87},
{0xEB,0xA4,0x1D,0x48,0x54,0xF5,0xC2,0x5C,0x56,0x0D,0x17,0x61,0x2B,0xB7,0x55,0x0B},
{0x58,0xF0,0x50,0x29,0x9B,0x93,0xC7,0x88,0x96,0xBA,0x93,0xE6,0x0A,0xA5,0x7A,0x93},
{0x7F,0x0C,0x77,0x11,0x29,0x54,0x88,0xB8,0xDA,0xB3,0x8E,0x6D,0x82,0x03,0xA2,0x05},
{0xF7,0x66,0x9A,0x5D,0xE2,0xC4,0x27,0x9A,0x44,0xA2,0xE0,0xDD,0x6F,0x19,0xE1,0x81},
{0xA2,0xE8,0x9A,0xC1,0xA5,0xD0,0xAA,0x44,0x9B,0x59,0x61,0x6C,0x5A,0x0A,0xE3,0x2F},
{0x93,0x50,0x47,0x59,0xD7,0xB0,0x88,0x99,0x16,0x99,0x7F,0xC5,0xFA,0x67,0x63,0x2A},
{0x1E,0x2E,0x48,0x01,0xFE,0xBE,0x9C,0x95,0x54,0x6C,0x2A,0x44,0x48,0x26,0x1E,0xF7},
{0xCC,0x95,0x16,0x96,0x4C,0xBB,0x88,0xFC,0x45,0x6B,0x9F,0xD7,0x82,0x54,0x1B,0xFE},
{0xAC,0x41,0xD0,0x09,0x51,0x59,0x3F,0x6B,0x69,0xD5,0x84,0xA5,0x22,0xFB,0xFB,0x9C},
{0x7D,0x14,0xF6,0x4D,0x6E,0xFA,0xF9,0xBF,0x27,0x9B,0x1E,0xD1,0x85,0xD8,0xF1,0xFA},
{0x84,0xCC,0x8F,0x6E,0x9F,0xD2,0xE1,0x4C,0x81,0x29,0x6A,0x6C,0x5B,0xD8,0x7F,0x8B},
{0xBE,0x2F,0x0C,0x1A,0xD4,0xE1,0x78,0xAD,0x5B,0xBE,0xE4,0x50,0xBB,0x1E,0x0E,0x7D},
{0x99,0xF8,0x65,0x15,0x78,0x1B,0x83,0x99,0x0D,0x9C,0x3F,0xCC,0xF4,0x46,0xDD,0x53},
{0xAF,0xBB,0x5F,0xB9,0x7B,0x41,0x3E,0x88,0xFB,0x00,0xA6,0xBA,0xD2,0x40,0xF3,0xF3},
{0xCF,0xE5,0x0E,0xB2,0x00,0x9F,0x4F,0x55,0xB9,0xE4,0x5A,0x2A,0x1B,0x98,0x60,0xBB},
{0x94,0x17,0x29,0x2E,0x55,0x1B,0xB9,0xF7,0xB4,0xAF,0xC3,0x2F,0x84,0x5E,0x55,0x81},
{0x98,0xA3,0x1F,0x55,0x55,0xF4,0xC0,0x45,0x56,0x0C,0x0A,0x62,0x29,0xBE,0x4E,0x0F},
{0x53,0x8B,0x51,0x2B,0x9C,0xE0,0xC0,0x8A,0x8B,0xBB,0x92,0xE4,0x13,0xA5,0x7B,0x8E},
{0x7C,0x0E,0x7E,0x0A,0x2A,0x56,0xF3,0xB9,0xD8,0xBB,0xFD,0x6A,0x80,0x1E,0xA3,0x04},
{0xF5,0x7F,0x9A,0x5C,0xFF,0xC7,0x25,0x93,0x5F,0xA1,0xE3,0xA6,0x6E,0x1B,0xE8,0xF2},
{0xA5,0xEA,0x87,0xC0,0xA4,0xD2,0xB3,0x44,0x9A,0x44,0x62,0x6E,0x53,0x11,0xE0,0x2F},
{0xE8,0x51,0x44,0x59,0xA4,0xB7,0x8A,0x84,0x17,0x98,0x7D,0xDC,0xFA,0x66,0x7E,0x29},
{0x1C,0x27,0x53,0x02,0xFF,0xC5,0x9D,0x96,0x55,0x1F,0x2D,0x46,0x55,0x27,0x1F,0xF5},
{0xD5,0x95,0x17,0x8B,0x4F,0xB9,0x81,0xE7,0x46,0x6D,0xE4,0xD6,0x81,0x56,0x68,0xF9},
{0xAE,0x5C,0xD1,0x08,0x53,0x40,0x3F,0x6A,0x74,0xD6,0x86,0xAC,0x39,0xF8,0xFC,0xE7},
{0x7C,0x17,0xF5,0x3E,0x69,0xF8,0xE4,0xBE,0x26,0x99,0x07,0xD1,0x84,0xC5,0xF2,0xF8},
{0x8D,0xD7,0x8C,0x6A,0xE4,0xD3,0xE2,0x48,0xF2,0x2E,0x68,0x71,0x5A,0xD9,0x7D,0x92},
{0xBE,0x2E,0x11,0x19,0xD6,0xE8,0x63,0xAE,0x5E,0xC5,0xE5,0x53,0xBE,0x6D,0x09,0x7F},
{0x84,0xF9,0x64,0x17,0x61,0x1B,0x82,0x84,0x0E,0x9E,0x36,0xD7,0xF7,0x4C,0xA6,0x52},
{0xAC,0xBD,0x2C,0xBE,0x79,0x5C,0x3F,0x89,0xF9,0x19,0xA6,0xBB,0xCF,0x43,0xF1,0xFA},
{0xD4,0xE6,0x05,0xC9,0x01,0x9C,0x48,0x26,0xBE,0xE6,0x47,0x2B,0x1A,0x9A,0x79,0xBB},
{0x95,0x0A,0x2A,0x2C,0x5C,0x00,0xBB,0xF5,0xCF,0xAE,0xC0,0x27,0xF7,0x59,0x57,0x9C},
{0x99,0xA2,0x1D,0x4C,0x55,0xF5,0xDD,0x46,0x54,0x05,0x11,0x60,0x2A,0xC5,0x4F,0x0C},
{0x5A,0xF8,0x56,0x29,0x81,0xE1,0xC1,0x88,0x92,0xBB,0x93,0xF9,0x10,0xA7,0x72,0x95},
{0x7E,0x0E,0x05,0x0B,0x2E,0x56,0x80,0xBE,0xDA,0xA6,0xFC,0x6B,0x82,0x07,0xA3,0x05},
{0xE8,0x7C,0x98,0x55,0xE4,0xC5,0x24,0xE8,0x5E,0xA5,0xE2,0xD5,0x69,0x19,0xF5,0xF3},
{0xA4,0xE8,0x9E,0xC0,0xA5,0xCF,0xB0,0x46,0x93,0x5F,0x60,0x68,0x28,0x10,0xE4,0x2D},
{0x9B,0x56,0x46,0x44,0xA5,0xB6,0x88,0x9D,0x17,0x99,0x60,0xDF,0xF8,0x6F,0x65,0x2B},
{0x1B,0x5C,0x52,0x06,0xFC,0xB6,0x9A,0x94,0x48,0x1E,0x2C,0x44,0x4C,0x27,0x1E,0xE8},
{0xD6,0x97,0x1E,0x90,0x4D,0xBD,0xEB,0xE6,0x42,0x69,0x97,0xD1,0x83,0x4B,0x69,0xF8},
{0xAC,0x45,0xD1,0x09,0x4E,0x43,0x3D,0x63,0x6F,0xD7,0x83,0xC6,0x38,0xFC,0xF9,0x94},
{0x7B,0x15,0xE8,0x3F,0x68,0xFA,0xFD,0xBE,0x27,0x84,0x04,0xD3,0x8D,0xDE,0xF3,0xF2},
{0xE7,0xD6,0x88,0x6C,0x97,0xD4,0xE0,0x55,0xF3,0x2F,0x6A,0x68,0x5A,0xD8,0x60,0x91},
{0xBC,0x27,0x0A,0x18,0xDD,0x82,0x62,0xAA,0x59,0xB6,0xE2,0x51,0xA3,0x6C,0x08,0x7D},
{0x9D,0xF9,0x65,0x0A,0x62,0x19,0x8B,0x9F,0x0E,0x9C,0x5C,0xD6,0xF3,0x44,0xD5,0x55},
{0xAE,0xA0,0x2D,0xBF,0x7B,0x45,0x3F,0x88,0xE4,0x1A,0xA4,0xB2,0xD4,0x43,0xF2,0x90},
{0xD5,0xE2,0x0C,0xBA,0x06,0x9E,0x55,0x27,0xBF,0xE4,0x5E,0x2B,0x1B,0x87,0x7A,0xB9},
{0x9C,0x11,0x2A,0x2C,0x36,0x01,0xBE,0xF5,0xBC,0xA9,0xC2,0x3A,0xF6,0x58,0x55,0x85},
{0x99,0xA3,0x00,0x4F,0x57,0xFC,0xC6,0x46,0x55,0x6F,0x10,0x65,0x2B,0xB6,0x48,0x0E},
{0x47,0xF9,0x57,0x2B,0x98,0xE1,0xC0,0x95,0x91,0xB9,0x9A,0xE2,0x10,0xA1,0x18,0x94},
{0x7B,0x0C,0x76,0x0C,0x2C,0x4B,0x81,0xBF,0xD8,0xBF,0xFC,0x6A,0x9F,0x04,0xA1,0x0C},
{0xF3,0x7C,0x9F,0x3F,0xE5,0xC0,0x27,0x9B,0x59,0xA7,0xFF,0xD4,0x68,0x1B,0xEC,0xF3},
{0xA5,0xF5,0x9D,0xC2,0xAC,0xD4,0xB0,0x42,0xEB,0x5E,0x65,0x6C,0x5B,0x17,0xE6,0x30},
{0x9A,0x57,0x44,0x5D,0xA5,0xB7,0x95,0x9E,0x15,0x90,0x7B,0xD0,0xFA,0x17,0x64,0x2E},
{0x1E,0x2F,0x55,0x04,0xE1,0xB7,0x9B,0x96,0x51,0x1E,0x2D,0x59,0x4F,0x25,0x17,0xF3},
{0xD9,0x94,0x66,0x91,0x48,0xBB,0x89,0xE1,0x40,0x74,0x96,0xD0,0x81,0x52,0x69,0xF9},
{0xB1,0x46,0xD3,0x00,0x55,0x4C,0x3D,0x1B,0x6E,0xD1,0x84,0xA4,0x3F,0xFE,0xE4,0x95},
{0x7A,0x17,0xF1,0x3F,0x69,0xE7,0xFE,0xBC,0x2E,0x9F,0x0B,0xD2,0xF5,0xDF,0xF5,0xFA},
{0x85,0xD1,0x8A,0x71,0x96,0xD5,0xE2,0x4C,0xF3,0x2E,0x77,0x6B,0x58,0xD1,0x7B,0x9E},
{0xBA,0x5F,0x0B,0x1E,0xD4,0xE0,0x65,0xA8,0x44,0xB7,0xE3,0x53,0xBA,0x6C,0x09,0x60},
{0x9E,0xFB,0x6C,0x11,0x6D,0x1E,0xF3,0x9E,0x09,0x9C,0x3E,0xD1,0xF1,0x59,0xD4,0x54},
{0xAC,0xB9,0x2D,0xBE,0x66,0x46,0x3D,0x81,0xFF,0x15,0xA0,0xCA,0xD5,0x44,0xF3,0xF2},
{0xD2,0xE0,0x11,0xBB,0x07,0x9C,0x4C,0x27,0xBE,0xF9,0x5D,0x29,0x12,0x9C,0x75,0xBC},
{0xE4,0x10,0x2D,0x2E,0x54,0x06,0xBC,0xE8,0xBD,0xA8,0xC0,0x23,0xF6,0x59,0x48,0x86},
{0x9B,0xAA,0x1B,0x40,0x5D,0x84,0xC7,0x41,0x56,0x0D,0x17,0x67,0x36,0xB7,0x49,0x0C},
{0x5E,0xF9,0x56,0x36,0x9B,0xE3,0xC9,0x8E,0x9E,0xB2,0xE2,0xE3,0x17,0xA5,0x7A,0x93},
{0x79,0x11,0x77,0x0D,0x2E,0x52,0x81,0xBE,0xC5,0xBC,0xFE,0x63,0x84,0x0A,0xA3,0x74},
{0xF2,0x7B,0x9A,0x5D,0xE2,0xC2,0x3A,0x9A,0x58,0xA5,0xE6,0xD4,0x69,0x06,0xEF,0xF1},
{0xAC,0xEE,0x93,0xC1,0xD4,0xD5,0xB7,0x44,0x9B,0x59,0x67,0x71,0x5A,0x16,0xE4,0x29},
{0x9A,0x56,0x59,0x5E,0xA7,0xBE,0x8E,0x90,0x15,0xE8,0x7A,0xD8,0xFA,0x67,0x63,0x2C},
{0x03,0x2E,0x54,0x06,0xF8,0xB7,0x9A,0x8B,0x52,0x1C,0x24,0x42,0x41,0x24,0x6F,0xF2},
{0xD1,0x95,0x16,0x96,0x4A,0xA6,0x88,0xE0,0x42,0x6D,0x96,0xD1,0x9C,0x51,0x6B,0xF0},
{0xAA,0x48,0xD5,0x78,0x54,0x44,0x3F,0x6B,0x69,0xD3,0x99,0xA5,0x3E,0xFC,0xFD,0x95},
{0x7B,0x0A,0xF2,0x3D,0x60,0xFC,0xF0,0xBB,0x56,0x9E,0x03,0xD1,0x85,0xD8,0xF7,0xE7},
{0x84,0xD0,0x88,0x68,0x96,0xD4,0xFF,0x4F,0xF1,0x27,0x6C,0x65,0x5C,0xA0,0x7A,0x96},
{0xBE,0x2F,0x0C,0x1C,0xC9,0xE1,0x64,0xAA,0x5D,0xB7,0xE2,0x4E,0xB9,0x6E,0x00,0x7B},
{0x90,0xFE,0x1D,0x10,0x65,0x1B,0x83,0x99,0x0B,0x81,0x3F,0xD0,0xF3,0x40,0xD4,0x55},
{0xB1,0xBA,0x2F,0xB7,0x7D,0x48,0x37,0xF0,0xFE,0x1D,0xA6,0xBA,0xD2,0x46,0xEE,0xF3},
{0xD3,0xE2,0x08,0xBB,0x06,0x81,0x4F,0x25,0xB7,0xE2,0x53,0x22,0x63,0x9D,0x7D,0xBB},
{0x94,0x17,0x2F,0x33,0x55,0x07,0xBE,0xF1,0xBD,0xA9,0xDD,0x20,0xF4,0x50,0x52,0x81},
{0x99,0xDB,0x1A,0x48,0x55,0xF4,0xC0,0x43,0x4B,0x0C,0x16,0x65,0x2F,0xB7,0x48,0x11},
{0x5D,0xFB,0x5F,0x2C,0x9C,0xE0,0xB8,0x8F,0x96,0xBB,0x92,0xE4,0x15,0xB8,0x7B,0x92},
{0x7B,0x08,0x77,0x0C,0x33,0x51,0x83,0xB7,0xDF,0xBB,0xFE,0x12,0x85,0x03,0xA3,0x04},
{0xF5,0x79,0x87,0x5C,0xE3,0xC0,0x23,0x9A,0x59,0xB8,0xE5,0xD6,0x60,0x1C,0xE8,0xF0},
{0xDD,0xEF,0x9A,0xC0,0xA4,0xD2,0xB5,0x59,0x9A,0x58,0x65,0x68,0x5A,0x17,0xF9,0x2A},
{0x98,0x5F,0x43,0x59,0xA1,0xCF,0x8F,0x99,0x17,0x98,0x7D,0xDA,0xE7,0x66,0x62,0x2E},
{0x1A,0x2E,0x55,0x1B,0xFB,0xB5,0x93,0x91,0x55,0x1B,0x55,0x43,0x48,0x27,0x1F,0xF5},
{0xD3,0x88,0x17,0x97,0x48,0xBF,0x88,0xE1,0x5F,0x6E,0x94,0xD8,0x86,0x56,0x6F,0x81},
{0xAB,0x41,0xD1,0x08,0x53,0x46,0x22,0x6A,0x68,0xD1,0x80,0xA5,0x3F,0xE1,0xFE,0x97},
{0x72,0x10,0xF5,0x38,0x11,0xFD,0xF9,0xBE,0x26,0x99,0x01,0xCC,0x84,0xD9,0xF5,0xFE},
{0x84,0xD1,0x95,0x6B,0x94,0xDD,0xE5,0x48,0xFB,0x56,0x6D,0x6C,0x5A,0xD9,0x7D,0x94},
{0xA3,0x2E,0x0D,0x1E,0xD0,0xE1,0x65,0xB7,0x5E,0xB5,0xEB,0x54,0xBE,0x65,0x71,0x7A},
{0x99,0xF9,0x64,0x17,0x67,0x06,0x82,0x98,0x09,0x98,0x3F,0xD1,0xEE,0x43,0xD6,0x5C},
{0xAB,0xBC,0x2D,0xC6,0x7C,0x41,0x3F,0x89,0xF9,0x1F,0xBB,0xBB,0xD3,0x44,0xF7,0xF3},
{0xD2,0xFF,0x0B,0xB9,0x0F,0x9B,0x49,0x26,0xC6,0xE3,0x5A,0x2B,0x1A,0x9A,0x7F,0xA6},
{0x95,0x16,0x2D,0x2A,0x55,0x06,0xA3,0xF2,0xBF,0xA0,0xC7,0x26,0xF4,0x21,0x52,0x81},
{0x99,0xA2,0x1D,0x4A,0x48,0xF5,0xC1,0x41,0x52,0x0C,0x17,0x78,0x2C,0xB5,0x41,0x0B},
{0x5B,0xFA,0x2E,0x2C,0x9C,0xE1,0xC1,0x88,0x94,0xA6,0x93,0xE5,0x17,0xA1,0x7B,0x93},
{0x66,0x0B,0x75,0x05,0x29,0x57,0x85,0xC6,0xDF,0xBB,0xFC,0x6B,0x82,0x01,0xBE,0x05},
{0xF4,0x7B,0x9E,0x5C,0xE2,0xDD,0x20,0x98,0x50,0xA2,0xE3,0xD1,0x11,0x1C,0xE8,0xF3},
{0xA4,0xE8,0x98,0xDD,0xA5,0xD3,0xB7,0x40,0x9A,0x59,0x78,0x6B,0x58,0x1E,0xE3,0x2C},
{0x9C,0x0B,0x43,0x59,0xA5,0xB6,0x88,0x9B,0x0A,0x99,0x7C,0xD8,0xFE,0x66,0x63,0x33},
{0x19,0x2C,0x5C,0x01,0xFF,0xBF,0xC7,0x91,0x55,0x1E,0x2C,0x44,0x4A,0x3A,0x1E,0xF4},
{0xD1,0x91,0x17,0x96,0x55,0xBC,0x8A,0xE8,0x45,0x6A,0x9F,0x8C,0x86,0x56,0x69,0xF8},
{0xAC,0x43,0xCC,0x09,0x52,0x44,0x3B,0x6A,0x69,0xCC,0x83,0xA7,0x36,0xFB,0xFD,0x95},
{0x26,0x10,0xF5,0x3F,0x68,0xFA,0xFB,0xA3,0x27,0x98,0x03,0xD5,0x84,0xD8,0xE8,0xFD},
{0x86,0xD8,0x8F,0x68,0x97,0x89,0xE5,0x48,0xF3,0x2F,0x6A,0x6E,0x47,0xD8,0x7C,0x96},
{0xBA,0x2E,0x0C,0x03,0xD3,0xE3,0x6C,0xAD,0x5D,0xB5,0xBF,0x54,0xBE,0x6C,0x08,0x7D},
{0x9B,0xE4,0x65,0x16,0x65,0x1F,0x82,0x99,0x14,0x9B,0x3D,0xD8,0xF4,0x40,0xD7,0x08},
{0xAB,0xBD,0x2D,0xBF,0x7B,0x43,0x22,0x88,0xF8,0x1D,0xA2,0xBB,0xD2,0x59,0xF4,0xF1},
{0xDB,0xE5,0x08,0xBF,0x5B,0x9B,0x48,0x27,0xBF,0xE4,0x58,0x36,0x1B,0x9B,0x7D,0xBF},
{0x95,0x17,0x30,0x29,0x57,0x0F,0xB9,0xF1,0xB8,0xF4,0xC7,0x27,0xF6,0x58,0x55,0x83},
{0x84,0xA3,0x1C,0x48,0x51,0xF5,0xC0,0x5C,0x51,0x0E,0x1E,0x62,0x2F,0xB1,0x15,0x0B},
{0x5A,0xF9,0x57,0x2B,0x9E,0xFC,0xC0,0x89,0x96,0xBF,0x93,0xE4,0x0A,0xA2,0x79,0x9A},
{0x7C,0x08,0x70,0x51,0x29,0x56,0x81,0xBF,0xD8,0xB9,0xE1,0x6A,0x83,0x03,0xA7,0x05},
{0xF5,0x66,0x9D,0x5E,0xEB,0xC7,0x23,0x92,0x04,0xA2,0xE2,0xD4,0x68,0x1B,0xEA,0xEE},
{0xA5,0xE9,0x9A,0xC4,0xA5,0xD2,0xAA,0x43,0x98,0x50,0x62,0x68,0x53,0x4A,0xE3,0x2D},
{0x9A,0x57,0x44,0x5B,0xB8,0xB7,0x89,0x99,0x13,0x99,0x7D,0xC5,0xFD,0x64,0x6A,0x29},
{0x1B,0x2E,0x08,0x01,0xFC,0xB7,0x9B,0x96,0x57,0x03,0x2D,0x45,0x48,0x23,0x1E,0xF5},
{0xCC,0x92,0x15,0x9F,0x4F,0xBE,0x89,0xBC,0x45,0x69,0x96,0xD0,0x81,0x54,0x74,0xF9},
{0xAD,0x41,0xD5,0x09,0x53,0x59,0x38,0x68,0x60,0xD6,0x81,0xA7,0x62,0xFB,0xF9,0x95},
{0x7A,0x17,0xF7,0x22,0x69,0xFB,0xF9,0xBA,0x27,0x99,0x1E,0xD6,0x86,0xD1,0xF2,0xFF},
{0x87,0x8C,0x8F,0x6C,0x96,0xD5,0xE2,0x4A,0xEE,0x2E,0x6B,0x6C,0x5E,0xD8,0x7D,0x8B},
{0xB9,0x2C,0x05,0x19,0xD1,0xE5,0x38,0xAD,0x59,0xB7,0xE3,0x53,0xBC,0x71,0x09,0x7C},
{0x99,0xFD,0x65,0x17,0x78,0x1C,0x80,0x90,0x0E,0x99,0x3A,0x8C,0xF4,0x44,0xD4,0x54},
{0xAC,0xBF,0x30,0xBE,0x7A,0x41,0x3B,0x88,0xF9,0x00,0xA1,0xB9,0xDB,0x43,0xF6,0xF5},
{0xAF,0xE5,0x0C,0xBB,0x04,0x9C,0x4A,0x3A,0xBE,0xE5,0x5A,0x2F,0x1B,0x9A,0x60,0xBC},
{0x97,0x1E,0x25,0x2E,0x52,0x7B,0xB9,0xF5,0xBD,0xAB,0xC0,0x25,0xEB,0x59,0x54,0x81},
{0x9D,0xA3,0x1D,0x55,0x52,0xF7,0xC9,0x49,0x56,0x04,0x6A,0x62,0x2B,0xB7,0x4A,0x0C},
{0x58,0xE4,0x56,0x2A,0x9C,0xE5,0xC0,0x88,0x8B,0xBC,0x91,0xED,0x1F,0xA5,0x72,0xEE},
{0x7C,0x0C,0x77,0x0E,0x2E,0x54,0x9C,0xBE,0xD9,0xBB,0xF8,0x6A,0x82,0x1E,0xA4,0x07},
{0xFC,0x73,0x9B,0x5C,0x9F,0xC7,0x27,0x9A,0x5B,0xA5,0xE0,0xC9,0x69,0x1A,0xE8,0xF7},
{0xA5,0xE8,0x87,0xC7,0xA7,0xDB,0xBF,0x45,0x9B,0x24,0x62,0x6C,0x5A,0x15,0xE4,0x2F},
{0x87,0x56,0x45,0x59,0xA1,0xB7,0x88,0x84,0x10,0x9B,0x74,0xD0,0xFB,0x64,0x1E,0x29},
{0x1E,0x2E,0x57,0x06,0xFE,0xAA,0x9A,0x97,0x55,0x1A,0x2D,0x44,0x55,0x20,0x1C,0xFC},
{0xD9,0x94,0x14,0xEB,0x4F,0xBB,0x88,0xE3,0x42,0x6B,0x8B,0xD1,0x80,0x56,0x6D,0xF9},
{0xAC,0x5C,0xD6,0x0B,0x5A,0x4C,0x3E,0x6E,0x14,0xD6,0x84,0xA5,0x3D,0xFC,0xFB,0x88},
{0x7B,0x16,0xF5,0x3B,0x69,0xFA,0xE4,0xB9,0x25,0x90,0x0B,0xD0,0x81,0xA5,0xF2,0xFA},
{0x84,0xD3,0x88,0x6E,0x8B,0xD4,0xE3,0x48,0xF7,0x2E,0x6A,0x71,0x5D,0xDA,0x74,0x9E},
{0xBF,0x28,0x71,0x19,0xD4,0xE1,0x67,0xAA,0x5B,0xAA,0xE2,0x52,0xBE,0x68,0x09,0x7D},
{0x84,0xFE,0x67,0x1E,0x6D,0x1A,0x85,0xE4,0x0E,0x9C,0x3F,0xD3,0xF3,0x46,0xC9,0x55},
{0xAD,0xBD,0x29,0xBE,0x7B,0x5C,0x38,0x8A,0xF0,0x15,0xA7,0xB3,0xAF,0x43,0xF3,0xF3},
{0xD0,0xE2,0x0E,0xA6,0x06,0x9D,0x48,0x23,0xBE,0xE4,0x47,0x2C,0x19,0x93,0x75,0xBA},
{0x9C,0x6A,0x2A,0x2E,0x55,0x04,0xBE,0xF7,0xA0,0xA9,0xC1,0x27,0xF2,0x59,0x55,0x9C},
{0x9E,0xA1,0x14,0x40,0x57,0xF5,0xBD,0x46,0x56,0x0C,0x15,0x65,0x29,0xAA,0x48,0x0D},
{0x5A,0xFD,0x56,0x2B,0x81,0xE6,0xC2,0x81,0x9E,0xB9,0x92,0x99,0x10,0xA5,0x7B,0x91},
{0x7B,0x0E,0x6A,0x0C,0x2F,0x56,0x85,0xBE,0xD8,0xA6,0xFB,0x68,0x8B,0x0B,0xA1,0x07},
{0x88,0x7C,0x9A,0x5C,0xE0,0xC0,0x25,0x87,0x59,0xA4,0xE2,0xD0,0x69,0x1B,0xF5,0xF4},
{0xA7,0xE1,0x92,0xC2,0xA6,0xAF,0xB0,0x44,0x9A,0x5B,0x65,0x6E,0x47,0x17,0xE5,0x2D},
{0x9E,0x56,0x44,0x44,0xA2,0xB5,0x81,0x91,0x15,0x9D,0x00,0xDF,0xFA,0x66,0x61,0x2E},
{0x1C,0x33,0x55,0x07,0xFC,0xB3,0x9A,0x96,0x48,0x19,0x2F,0x4D,0x40,0x25,0x1B,0x88},
{0xD6,0x95,0x17,0x94,0x48,0xB9,0x95,0xE1,0x43,0x69,0x92,0xD1,0x81,0x4B,0x6E,0xFB},
{0xA5,0x49,0xD3,0x0F,0x2E,0x43,0x3F,0x6A,0x6B,0xD1,0x86,0xB8,0x3F,0xFD,0xF9,0x91},
{0x7B,0x17,0xE8,0x38,0x6B,0xF3,0xF1,0xBC,0x20,0xE4,0x04,0xD1,0x84,0xDA,0xF5,0xF8},
{0x99,0xD1,0x89,0x6C,0x92,0xD4,0xE2,0x55,0xF4,0x2C,0x63,0x64,0x58,0xD0,0x00,0x91},
{0xBE,0x2E,0x0E,0x1E,0xD6,0xFC,0x65,0xAB,0x59,0xB3,0xE2,0x53,0xA3,0x6B,0x0B,0x74},
{0x91,0xFB,0x6C,0x6A,0x62,0x1B,0x82,0x9B,0x09,0x9E,0x22,0xD1,0xF2,0x44,0xD0,0x55},
{0xAC,0xA0,0x2A,0xBC,0x72,0x49,0x3C,0x88,0x84,0x1A,0xA6,0xBB,0xD0,0x44,0xF1,0xEE},
{0xD2,0xE3,0x0C,0xBF,0x06,0x9C,0x55,0x20,0xBC,0xED,0x52,0x28,0x1A,0xE7,0x7A,0xBB},
{0x95,0x15,0x2D,0x2C,0x48,0x06,0xBF,0xF5,0xB9,0xA9,0xC0,0x3A,0xF1,0x5B,0x5C,0x89},
{0x9A,0xA1,0x60,0x4F,0x55,0xF5,0xC2,0x41,0x54,0x11,0x17,0x64,0x2B,0xB3,0x48,0x0C},
{0x47,0xFE,0x54,0x22,0x94,0xE2,0xC3,0xF5,0x91,0xBB,0x93,0xE6,0x17,0xA7,0x66,0x93},
{0x7A,0x0C,0x73,0x0C,0x2E,0x4B,0x86,0xBC,0xD1,0xB3,0xFF,0x6E,0xFF,0x04,0xA3,0x05},
{0xF7,0x7B,0x98,0x41,0xE2,0xC1,0x27,0x9E,0x59,0xA5,0xFF,0xD3,0x6B,0x12,0xE0,0xF0},
{0xA0,0x95,0x9D,0xC0,0xA5,0xD0,0xB7,0x46,0x87,0x59,0x64,0x6C,0x5E,0x17,0xE4,0x30},
{0x9D,0x54,0x4D,0x51,0xA6,0xB1,0xF5,0x9E,0x17,0x99,0x7F,0xD8,0xF8,0x7B,0x63,0x2F},
{0x1E,0x2A,0x55,0x06,0xE1,0xB0,0x98,0x9F,0x5D,0x1D,0x2A,0x39,0x4F,0x27,0x1E,0xF7},
{0xD1,0x97,0x0A,0x96,0x49,0xBB,0x8C,0xE1,0x42,0x74,0x91,0xD3,0x88,0x5E,0x6A,0xF1},
{0xD1,0x46,0xD1,0x09,0x51,0x44,0x3D,0x77,0x69,0xD0,0x84,0xA1,0x3F,0xFC,0xE4,0x92},
{0x79,0x1E,0xFD,0x3C,0x60,0x87,0xFE,0xBE,0x27,0x9B,0x03,0xD3,0x99,0xD8,0xF4,0xFA},
{0x80,0xD1,0x88,0x71,0x91,0xD6,0xEB,0x40,0xF7,0x2E,0x17,0x6B,0x5A,0xD8,0x7F,0x96},
{0xBC,0x33,0x0C,0x1F,0xD4,0xE5,0x65,0xAA,0x44,0xB0,0xE0,0x5A,0xB6,0x68,0x08,0x00},
{0x9E,0xF9,0x65,0x15,0x65,0x19,0x9F,0x99,0x08,0x9C,0x3B,0xD1,0xF3,0x59,0xD3,0x57},
{0xA5,0xB5,0x29,0xBC,0x06,0x46,0x3F,0x88,0xFB,0x1D,0xA4,0xA6,0xD2,0x45,0xF3,0xF7},
{0xD2,0xE2,0x11,0xBC,0x04,0x95,0x40,0x23,0xBD,0x99,0x5D,0x2B,0x1B,0x98,0x7D,0xB9},
{0x88,0x17,0x2C,0x2E,0x51,0x06,0xBE,0xE8,0xBA,0xAB,0xC9,0x2F,0xF2,0x5D,0x28,0x86},
{0x99,0xA3,0x1F,0x48,0x57,0xE8,0xC0,0x40,0x56,0x08,0x17,0x65,0x36,0xB0,0x4A,0x05},
{0x52,0xFD,0x53,0x56,0x9B,0xE1,0xC0,0x8A,0x96,0xB9,0x8E,0xE4,0x16,0xA5,0x7F,0x93},
{0x7B,0x11,0x70,0x0E,0x27,0x5E,0x85,0xB8,0xA5,0xBC,0xFC,0x6A,0x80,0x03,0xA1,0x18},
{0xF5,0x7A,0x9A,0x58,0xE2,0xC0,0x3A,0x9D,0x5B,0xAC,0xEA,0xD0,0x6E,0x66,0xEF,0xF3},
{0xA5,0xEA,0x9A,0xC2,0xB8,0xD2,0xB6,0x44,0x9E,0x59,0x65,0x71,0x5D,0x15,0xED,0x25},
{0x9E,0x5E,0x39,0x5E,0xA5,0xB7,0x8A,0x99,0x15,0x84,0x7D,0xD9,0xFA,0x62,0x63,0x2E},
{0x03,0x29,0x57,0x0F,0xF4,0xB3,0x93,0xEB,0x52,0x1E,0x2D,0x46,0x48,0x25,0x03,0xF5},
{0xD0,0x95,0x13,0x96,0x48,0xA6,0x8F,0xE3,0x4B,0x61,0x93,0xD1,0xFC,0x51,0x69,0xF9},
{0xAE,0x41,0xD3,0x14,0x53,0x45,0x3F,0x6E,0x69,0xD1,0x99,0xA2,0x3D,0xF5,0xF1,0x90},
{0x7A,0x6A,0xF2,0x3F,0x69,0xF8,0xF9,0xBC,0x3A,0x99,0x02,0xD1,0x80,0xD8,0xF5,0xE7},
{0x83,0xD3,0x81,0x64,0x93,0xD6,0x9F,0x4F,0xF3,0x2E,0x68,0x6C,0x58,0xC5,0x7D,0x97},
{0xBE,0x2A,0x0C,0x1E,0xC9,0xE6,0x67,0xA3,0x51,0xB2,0xE1,0x2E,0xB9,0x6C,0x09,0x7F},
{0x99,0xFB,0x78,0x17,0x64,0x1B,0x86,0x99,0x09,0x81,0x38,0xD3,0xFA,0x4C,0xD1,0x51},
{0xD1,0xBA,0x2D,0xBE,0x79,0x41,0x3D,0x95,0xF9,0x1C,0xA6,0xBF,0xD2,0x44,0xEE,0xF4},
{0xD0,0xEB,0x04,0xBE,0x03,0xE1,0x4F,0x27,0xBE,0xE6,0x5A,0x29,0x06,0x9A,0x7C,0xBB},
{0x91,0x17,0x2D,0x33,0x52,0x04,0xB7,0xFD,0xB8,0xAF,0xB2,0x20,0xF6,0x59,0x57,0x81},
{0x9B,0xBE,0x1D,0x49,0x55,0xF1,0xC0,0x41,0x4B,0x0B,0x15,0x6C,0x22,0xB7,0x41,0x7E},
{0x5D,0xF9,0x56,0x29,0x9C,0xE3,0xDD,0x88,0x97,0xBB,0x97,0xE4,0x17,0xB8,0x7C,0x91},
{0x72,0x05,0x76,0x0C,0x5C,0x51,0x81,0xBE,0xDA,0xBB,0xFE,0x77,0x82,0x02,0xA3,0x01},
{0xF5,0x7B,0x87,0x5B,0xE0,0xC9,0x2E,0x9B,0x58,0xD7,0xE5,0xD4,0x69,0x19,0xE8,0xF1},
{0xB8,0xE8,0x9B,0xC0,0xA1,0xD2,0xB7,0x59,0x9D,0x5B,0x6C,0x65,0x5B,0x15,0x96,0x2A},
{0x9A,0x56,0x46,0x59,0xA7,0xAA,0x88,0x98,0x17,0x9D,0x7D,0xD8,0xE7,0x61,0x61,0x27},
{0x17,0x2F,0x56,0x74,0xFB,0xB7,0x9A,0x94,0x55,0x1C,0x30,0x44,0x49,0x27,0x1A,0xF5},
{0xD1,0x88,0x10,0x94,0x41,0xB2,0x89,0xE5,0x30,0x6E,0x96,0xD1,0x83,0x56,0x6B,0xE4},
{0xAC,0x40,0xD1,0x0D,0x53,0x44,0x22,0x6D,0x6B,0xD8,0x8D,0xA4,0x3A,0x8E,0xFE,0x95},
{0x7B,0x15,0xF5,0x3D,0x74,0xFA,0xF8,0xBE,0x23,0x99,0x03,0xCC,0x83,0xDA,0xFC,0xF3},
{0x85,0xD7,0xFA,0x6B,0x96,0xD4,0xE0,0x48,0xF1,0x33,0x6A,0x6D,0x5A,0xDC,0x7D,0x96},
{0xA3,0x29,0x0E,0x17,0xDD,0xE0,0x62,0xD8,0x5E,0xB7,0xE2,0x51,0xBE,0x6E,0x14,0x7D},
{0x98,0xF9,0x61,0x17,0x65,0x06,0x85,0x9B,0x00,0x95,0x3E,0xD9,0x81,0x43,0xD4,0x55},
{0xAE,0xBD,0x2F,0xA3,0x7B,0x40,0x3F,0x8C,0xF9,0x1D,0xBB,0xBC,0xD0,0x4D,0xFA,0xF2},
{0xDB,0x90,0x0B,0xBB,0x06,0x9E,0x48,0x25,0xA3,0xE4,0x5B,0x2B,0x1F,0x9A,0x7D,0xA6},
{0x92,0x15,0x24,0x27,0x57,0x06,0xCC,0xF2,0xBD,0xA9,0xC2,0x27,0xF4,0x44,0x55,0x80},
{0x99,0xA7,0x1D,0x48,0x48,0xF2,0xC2,0x48,0x5F,0x0E,0x16,0x17,0x2C,0xB7,0x48,0x0E},
{0x5A,0xFB,0x4B,0x2B,0x9D,0xE1,0xC4,0x88,0x96,0xA6,0x94,0xE6,0x1E,0xAC,0x79,0x91},
{0x09,0x0B,0x77,0x0C,0x2C,0x56,0x83,0xA3,0xD8,0xBA,0xFC,0x6E,0x82,0x03,0xBE,0x02},
{0xF7,0x72,0x93,0x5E,0xE1,0xB2,0x20,0x9A,0x59,0xA7,0xE2,0xD6,0x74,0x1B,0xE9,0xF3},
{0xA1,0xE8,0x9A,0xDD,0xA2,0xD0,0xBE,0x4D,0x98,0x5D,0x17,0x6B,0x5A,0x17,0xE6,0x2D},
{0x98,0x4B,0x44,0x58,0xA5,0xB3,0x88,0x99,0x0A,0x9E,0x7F,0xD1,0xF3,0x64,0x66,0x5C},
{0x19,0x2E,0x55,0x04,0xFC,0xB5,0x87,0x96,0x54,0x1E,0x29,0x44,0x48,0x3A,0x19,0xF7},
{0xD8,0x9C,0x15,0x90,0x3A,0xBC,0x88,0xE1,0x40,0x69,0x94,0xCC,0x81,0x57,0x69,0xFD},
{0xAC,0x41,0xCC,0x0E,0x51,0x4D,0x36,0x68,0x6E,0xA3,0x83,0xA5,0x3F,0xFE,0xF9,0x97},
{0x66,0x17,0xF4,0x3F,0x6D,0xFA,0xF9,0xA3,0x20,0x9B,0x0A,0xD8,0x86,0xD0,0x87,0xFD},
{0x84,0xD1,0x8A,0x6C,0x94,0xC9,0xE2,0x49,0xF3,0x2A,0x6A,0x6C,0x47,0xDF,0x7F,0x9F},
{0xB7,0x2C,0x05,0x6C,0xD3,0xE1,0x65,0xA8,0x59,0xB5,0xFF,0x53,0xBF,0x6C,0x0D,0x7D},
{0x99,0xE4,0x62,0x15,0x6C,0x12,0x81,0x99,0x7B,0x9B,0x3F,0xD1,0xF1,0x44,0xD6,0x48},
{0xAC,0xBC,0x2D,0xBA,0x7B,0x41,0x22,0x8F,0xFB,0x14,0xAF,0xB8,0xD3,0x36,0xF4,0xF3},
{0xD2,0xE0,0x0C,0xB9,0x1B,0x9C,0x49,0x27,0xBA,0xE4,0x5A,0x36,0x1C,0x98,0x74,0xB2},
{0x96,0x15,0x5F,0x29,0x55,0x06,0xBC,0xF5,0xBF,0xB4,0xC0,0x26,0xF6,0x5D,0x55,0x81},
{0x84,0xA4,0x1F,0x41,0x5C,0xF6,0xC3,0x33,0x51,0x0C,0x17,0x67,0x2B,0xB5,0x55,0x0C},
{0x5B,0xF9,0x52,0x2B,0x9C,0xFC,0xC7,0x8A,0x9F,0xB2,0x90,0xE0,0x65,0xA2,0x7B,0x93},
{0x79,0x0C,0x75,0x11,0x2E,0x57,0x81,0xBA,0xD8,0xBB,0xE1,0x6D,0x80,0x0A,0xAA,0x06},
{0xF0,0x09,0x9D,0x5C,0xE2,0xC2,0x27,0x98,0x44,0xA5,0xE3,0xD4,0x6D,0x1B,0xE8,0xEE},
{0xA2,0xEA,0x93,0xC9,0xA6,0xD4,0xC5,0x43,0x9A,0x59,0x67,0x6C,0x58,0x0A,0xE4,0x2C},
{0x9A,0x52,0x44,0x59,0xB8,0xB0,0x8A,0x90,0x1E,0x9A,0x7A,0xAA,0xFD,0x66,0x63,0x2C},
{0x1E,0x2C,0x48,0x06,0xFD,0xB7,0x9E,0x96,0x55,0x03,0x2A,0x46,0x41,0x2E,0x1D,0xFD},
{0xA3,0x92,0x17,0x96,0x4A,0xBB,0x8A,0xFC,0x42,0x68,0x96,0xD5,0x81,0x56,0x74,0xFE},
{0xAE,0x48,0xD8,0x0A,0x5A,0x36,0x38,0x6A,0x69,0xD3,0x84,0xA7,0x22,0xFC,0xF8,0x95},
{0x7F,0x17,0xF5,0x22,0x6E,0xF8,0xF0,0xB7,0x23,0x99,0x71,0xD6,0x84,0xD8,0xF7,0xFA},
{0x86,0xCC,0x88,0x6D,0x96,0xD0,0xE2,0x48,0xEE,0x29,0x68,0x65,0x53,0xDC,0x7C,0xE4},
{0xB9,0x2E,0x0C,0x1C,0xD4,0xE3,0x78,0xAA,0x58,0xB7,0xE6,0x53,0xBE,0x71,0x0E,0x7F},
{0x90,0xF0,0x61,0x15,0x17,0x1C,0x82,0x99,0x0B,0x9C,0x3D,0xCC,0xF3,0x45,0xD4,0x51},
{0xAC,0xBD,0x30,0xB9,0x79,0x48,0x36,0x8C,0xFA,0x6F,0xA1,0xBB,0xD2,0x46,0xF3,0xF1},
{0xCF,0xE2,0x0D,0xBB,0x02,0x9C,0x48,0x3A,0xB9,0xE6,0x53,0x22,0x1F,0x9E,0x0F,0xBC},
{0x95,0x17,0x2F,0x2E,0x57,0x1B,0xBE,0xF4,0xBD,0xAD,0xC0,0x27,0xEB,0x5E,0x57,0x88},
{0x90,0xA7,0x18,0x3A,0x52,0xF5,0xC0,0x43,0x56,0x0E,0x0A,0x65,0x2A,0xB7,0x4C,0x0C},
{0x5A,0xE4,0x51,0x29,0x95,0xE8,0xC4,0x8E,0xE4,0xBC,0x93,0xE4,0x15,0xA5,0x79,0x8E},
{0x7B,0x0D,0x77,0x08,0x2E,0x56,0x9C,0xB9,0xDA,0xB2,0xF5,0x6E,0x85,0x71,0xA4,0x05},
{0xF5,0x79,0x9A,0x5E,0xFF,0xC0,0x26,0x9A,0x5D,0xA5,0xE2,0xC9,0x6E,0x19,0xE1,0xFA},
{0xA1,0xE0,0xE8,0xC7,0xA5,0xD2,0xB5,0x44,0x98,0x44,0x65,0x6D,0x5A,0x13,0xE4,0x2D},
{0x87,0x51,0x46,0x50,0xAC,0xB3,0x81,0xEB,0x10,0x99,0x7D,0xDA,0xFA,0x64,0x7E,0x2E},
{0x1F,0x2E,0x51,0x06,0xFC,0xAA,0x9D,0x94,0x5C,0x17,0x28,0x44,0x3A,0x20,0x1E,0xF5},
{0xD3,0x95,0x15,0x8B,0x48,0xBA,0x88,0xE5,0x42,0x69,0x8B,0xD6,0x83,0x5F,0x60,0xFC},
{0xAD,0x33,0xD6,0x09,0x53,0x46,0x3F,0x68,0x74,0xD1,0x85,0xA5,0x3B,0xFC,0xF9,0x88},
{0x7C,0x15,0xFC,0x36,0x6C,0xF8,0x8B,0xB9,0x27,0x99,0x01,0xD1,0x86,0xC5,0xF5,0xFB},
{0x84,0xD5,0x88,0x6C,0x8B,0xD3,0xE0,0x41,0xFA,0x2B,0x69,0x1E,0x5D,0xD8,0x7D,0x94},
{0xBE,0x2C,0x11,0x1E,0xD5,0xE1,0x61,0xAA,0x59,0xAA,0xE5,0x51,0xB7,0x65,0x0C,0x79},
{0xEB,0xFE,0x65,0x17,0x67,0x1B,0x80,0x84,0x09,0x9D,0x3F,0xD5,0xF3,0x44,0xC9,0x52},
{0xAE,0xB4,0x24,0xBB,0x7E,0x33,0x38,0x88,0xF9,0x1F,0xA6,0xB9,0xCF,0x44,0xF2,0xF3},
{0xD6,0xE2,0x0C,0xA6,0x01,0x9E,0x41,0x2E,0xBB,0xE2,0x39,0x2C,0x1B,0x9A,0x7F,0xBB},
{0x97,0x0A,0x2D,0x2F,0x55,0x02,0xBE,0xF5,0xA0,0xAE,0xC2,0x2E,0xFF,0x5F,0x52,0xE2},
{0x9E,0xA3,0x1D,0x4A,0x55,0xF7,0xDD,0x41,0x57,0x0C,0x13,0x65,0x2B,0xAA,0x4F,0x0E},
{0x53,0xF0,0x50,0x23,0xFF,0xE6,0xC0,0x88,0x94,0xBB,0x91,0xF9,0x17,0xA4,0x7B,0x97},
{0x7B,0x0C,0x6A,0x0B,0x2C,0x5F,0x88,0xB8,0xD1,0xD8,0xFB,0x6A,0x82,0x01,0xA3,0x07},
{0xE8,0x7B,0x9B,0x5C,0xE6,0xC0,0x27,0x87,0x5E,0xA7,0xEB,0xDD,0x6E,0x1B,0x8B,0xF4},
{0xA5,0xE8,0x98,0xC0,0xA7,0xCF,0xB7,0x45,0x9A,0x5D,0x65,0x6C,0x47,0x10,0xE6,0x24},
{0x93,0x51,0x45,0x3A,0xA2,0xB7,0x88,0x9B,0x17,0x9B,0x60,0xD8,0xFB,0x66,0x67,0x2E},
{0x1E,0x33,0x52,0x04,0xF5,0xBE,0x9D,0x94,0x36,0x19,0x2D,0x44,0x4A,0x27,0x1C,0xE8},
{0xD1,0x94,0x17,0x92,0x48,0xBB,0x95,0xE6,0x40,0x60,0x9F,0xD6,0x82,0x35,0x6E,0xF9},
{0xAC,0x43,0xD1,0x0B,0x4E,0x44,0x3E,0x6A,0x6D,0xD1,0x84,0xB8,0x38,0xFE,0xF0,0x9C},
{0x7C,0x13,0x96,0x38,0x69,0xFA,0xFB,0xBE,0x25,0x84,0x03,0xD0,0x84,0xDC,0xF5,0xFA},
{0x99,0xD6,0x8A,0x65,0x9F,0xD3,0xE7,0x2B,0xF4,0x2E,0x6A,0x6E,0x5A,0xDA,0x60,0x96},
{0xBF,0x2E,0x08,0x1E,0xD4,0xFC,0x62,0xA8,0x50,0xBE,0xE5,0x55,0xCF,0x6B,0x09,0x7D},
{0x9B,0xF9,0x67,0x0A,0x65,0x1A,0x82,0x9D,0x09,0x9C,0x22,0xD6,0xF1,0x4D,0xDD,0x52},
{0xA5,0xCC,0x2A,0xBE,0x7B,0x43,0x3F,0x8A,0xE4,0x1D,0xA7,0xBB,0xD6,0x44,0xF3,0xEE},
{0xD5,0xE0,0x05,0xB2,0x0E,0x9C,0x39,0x20,0xBE,0xE4,0x58,0x2B,0x19,0x87,0x7D,0xBA},
{0x95,0x13,0x2D,0x2E,0x48,0x01,0xBC,0xFC,0xB4,0xA1,0xC1,0x56,0xF1,0x59,0x55,0x83},
{0x99,0xA1,0x00,0x48,0x54,0xF5,0xC4,0x41,0x56,0x11,0x10,0x67,0x22,0xBE,0x40,0x0E},
{0x2B,0xFE,0x56,0x2B,0x9E,0xE1,0xC2,0x95,0x96,0xBA,0x93,0xE0,0x17,0xA5,0x66,0x94},
{0x79,0x05,0x7E,0x04,0x2D,0x27,0x86,0xBE,0xD8,0xB9,0xFC,0x68,0x9F,0x03,0xA2,0x05},
{0xF1,0x7B,0x9A,0x41,0xE5,0xC2,0x2E,0x93,0x51,0xA1,0x93,0xD3,0x69,0x1B,0xEA,0xF3},
{0xA7,0xF5,0x9A,0xC1,0xA5,0xD6,0xB7,0x44,0x87,0x5E,0x67,0x65,0x53,0x1F,0xE1,0x5C},
{0x9D,0x56,0x44,0x5B,0xA5,0xB5,0x95,0x99,0x16,0x99,0x79,0xD8,0xFA,0x7B,0x64,0x2C},
{0x17,0x27,0x5D,0x00,0x8D,0xB0,0x9A,0x96,0x57,0x1E,0x2F,0x59,0x48,0x26,0x1E,0xF1},
{0xD1,0x95,0x0A,0x91,0x4A,0xB2,0x81,0xE9,0x45,0x18,0x91,0xD1,0x81,0x54,0x69,0xFB},
{0xB1,0x41,0xD0,0x09,0x57,0x44,0x3F,0x77,0x6E,0xD3,0x8D,0xAC,0x37,0xF4,0x88,0x92},
{0x7B,0x17,0xF7,0x3F,0x6B,0xE7,0xF9,0xBF,0x27,0x9D,0x03,0xD1,0x99,0xDF,0xF7,0xF3},
{0x8D,0xD9,0x81,0x1D,0x91,0xD4,0xE2,0x4A,0xF3,0x2C,0x77,0x6C,0x5B,0xD8,0x79,0x96},
{0xBE,0x33,0x0B,0x1C,0xDD,0xE8,0x6C,0xAA,0x28,0xB0,0xE2,0x53,0xBC,0x6C,0x0B,0x60},
{0x99,0xF8,0x65,0x13,0x65,0x1B,0x9F,0x9E,0x0B,0x95,0x36,0xD8,0xF2,0x35,0xD3,0x55},
{0xAC,0xBF,0x2D,0xBC,0x66,0x41,0x3E,0x88,0xFD,0x1D,0xA6,0xA6,0xD5,0x46,0xFA,0xFA},
{0xDB,0xE0,0x7D,0xBC,0x06,0x9C,0x4A,0x27,0xBC,0xF9,0x5A,0x2A,0x1B,0x9E,0x7D,0xBB},
{0x88,0x10,0x2F,0x27,0x5C,0x0F,0xBD,0x84,0xBA,0xA9,0xC0,0x25,0xF6,0x5B,0x48,0x81},
{0x98,0xA3,0x19,0x48,0x55,0xE8,0xC7,0x43,0x5F,0x05,0x1E,0x61,0x5A,0xB0,0x48,0x0C},
{0x58,0xF9,0x54,0x36,0x9C,0xE0,0xC0,0x8C,0x96,0xBB,0x8E,0xE3,0x15,0xAC,0x72,0x9A},
{0x7E,0x7D,0x70,0x0C,0x2E,0x54,0x81,0xBC,0xC5,0xBB,0xFD,0x6A,0x86,0x03,0xA3,0x18},
{0xF2,0x79,0x93,0x55,0xEB,0xC6,0x5F,0x9D,0x59,0xA5,0xE0,0xD4,0x6B,0x06,0xE8,0xF2},
{0xA5,0xEC,0x9A,0xC0,0xB8,0xD5,0xB5,0x4D,0x93,0x50,0x62,0x14,0x5D,0x17,0xE4,0x2F},
{0x9A,0x54,0x59,0x59,0xA4,0xB7,0x8C,0x99,0x17,0x84,0x7A,0xDA,0xF3,0x6F,0x6A,0x26},
{0x66,0x29,0x55,0x06,0xFE,0xB7,0x98,0x8B,0x55,0x1F,0x2D,0x40,0x48,0x27,0x03,0xF2},
{0xD3,0x9C,0x1E,0x9F,0x41,0xC3,0x8F,0xE1,0x42,0x6B,0x96,0xD3,0x9C,0x56,0x68,0xF9},
{0xA8,0x41,0xD1,0x14,0x54,0x47,0x3F,0x6A,0x69,0xD1,0xFC,0xA2,0x3F,0xFC,0xFB,0x95},
{0x79,0x0A,0xF5,0x3E,0x69,0xFE,0xF9,0xBE,0x3A,0x9E,0x00,0xD1,0x84,0xD8,0xF4,0x82},
{0x83,0xD1,0x88,0x6E,0x96,0xD6,0xFF,0x48,0xF2,0x2E,0x6E,0x6C,0x5A,0xC5,0x7A,0x95},
{0xBE,0x2E,0x0C,0x1C,0xAC,0xE6,0x65,0xAA,0x5B,0xB7,0xE0,0x4E,0xBE,0x6D,0x09,0x79},
{0x99,0xF9,0x78,0x10,0x66,0x1B,0x82,0x99,0x0A,0xE4,0x38,0xD1,0xF3,0x46,0xD4,0x57},
{0xB1,0xBD,0x2C,0xBE,0x7F,0x41,0x3F,0x95,0xFE,0x1E,0xA6,0xBB,0xD2,0x40,0x8B,0xF4},
{0xD2,0xE2,0x0E,0xBB,0x04,0x81,0x48,0x26,0xBE,0xE0,0x5A,0x2B,0x06,0x9D,0x7E,0xBB},
{0x95,0x17,0x28,0x56,0x52,0x06,0xBE,0xF7,0xBD,0xAB,0xDD,0x27,0xF7,0x59,0x51,0x81},
{0x99,0xBE,0x1A,0x4B,0x55,0xF5,0xC0,0x47,0x2E,0x0B,0x17,0x65,0x29,0xB7,0x4A,0x11},
{0x5A,0xF8,0x56,0x2F,0x9C,0xE1,0xDD,0x8F,0x95,0xBB,0x93,0xE4,0x10,0xDD,0x7C,0x93},
{0x7B,0x0E,0x77,0x0E,0x33,0x56,0x80,0xBE,0xDC,0xBB,0xFC,0x77,0x85,0x00,0xA3,0x05},
{0xF5,0x73,0xE2,0x5B,0xE2,0xC0,0x25,0x9A,0x5B,0xB8,0xE2,0xD5,0x69,0x1F,0xE8,0xF3},
{0xB8,0xEF,0x99,0xC0,0xA5,0xD2,0xBE,0x3C,0x9D,0x59,0x65,0x6E,0x5A,0x15,0xF9,0x2D},
{0x9B,0x56,0x40,0x59,0xA5,0xAA,0x8F,0x9A,0x17,0x99,0x7C,0xD8,0x82,0x61,0x63,0x2E},
{0x1C,0x2E,0x57,0x1B,0xFC,0xB6,0x9A,0x92,0x55,0x1E,0x30,0x43,0x4B,0x27,0x1E,0xF4},
{0xD0,0xED,0x10,0x96,0x48,0xB9,0x88,0xE3,0x5F,0x69,0x97,0xD1,0x85,0x56,0x69,0xE4},
{0xAB,0x42,0xD1,0x09,0x52,0x46,0x47,0x6D,0x69,0xD1,0x86,0xA5,0x3D,0xE1,0xF9,0x94},
{0x7B,0x13,0xF5,0x3F,0x74,0xFD,0xFA,0xBE,0x27,0x98,0x00,0xA9,0x83,0xD8,0xF5,0xF8},
{0x84,0xD3,0x95,0x6C,0x97,0xD4,0xE6,0x48,0xF3,0x33,0x6D,0x6F,0x5A,0xD8,0x7C,0x92},
{0xC6,0x29,0x0C,0x1E,0xD6,0xE1,0x67,0xB7,0x59,0xB6,0xE2,0x57,0xBE,0x6C,0x14,0x7A},
{0x9A,0xF9,0x65,0x16,0x60,0x63,0x85,0x99,0x09,0x9E,0x3F,0xD3,0xEE,0x44,0xD5,0x55},
{0xA8,0xBD,0x2D,0xA3,0x7C,0x42,0x3F,0x88,0xF8,0x1B,0xFB,0xBC,0xD2,0x44,0xF1,0xF3},
{0xD0,0xFF,0x0C,0xBA,0x06,0x98,0x48,0x27,0xA3,0xE3,0x59,0x2B,0x1B,0x99,0x7A,0xE6},
{0x92,0x17,0x2D,0x2C,0x55,0x04,0xA3,0xF5,0xBC,0xA9,0xC4,0x27,0xF6,0x44,0x52,0x82},
{0x99,0xA3,0x1E,0x40,0x08,0xF2,0xC0,0x41,0x54,0x0C,0x15,0x78,0x2B,0xB6,0x48,0x08},
{0x5A,0xF9,0x4B,0x2C,0x9F,0xE1,0xC0,0x8B,0x9F,0xE6,0x94,0xE4,0x17,0xA7,0x7B,0x91},
{0x66,0x0C,0x76,0x0C,0x2A,0x56,0x81,0xA3,0xDF,0xB8,0xFC,0x6A,0x86,0x03,0xFE,0x02},
{0xF5,0x7B,0x98,0x5C,0xE0,0xDD,0x27,0x9B,0x59,0xA1,0xE2,0xD4,0x74,0x1C,0xEB,0xF3},
{0xA5,0xEC,0x9B,0x9D,0xA2,0xD2,0xB7,0x46,0x9A,0x5B,0x78,0x6C,0x5B,0x17,0xE0,0x2D},
{0x9A,0x4B,0x43,0x5A,0xA5,0xB7,0x8C,0x9B,0x4A,0x9E,0x7D,0xD8,0xF8,0x66,0x61,0x33},
{0x1E,0x2F,0x55,