Table of Contents
netmdocm
Components and functions involved during check-out of a already imported song. (Song that is atrac encoded and encrypted).
+ UI
+ NetMD.dll
[helpstring("Method CheckOut")] HRESULT _stdcall CheckOut( [in] long cMax, [in] _OPD_CHECKOUTINFO* pCheckOutInfo);
+ OmgNetMD.dll
IOmgNetMD::{init, AttemptCheckOut, CompleteCheckOut1, CompleteCheckOut2}
+ Omgconv2.dll
IOmgOmgfToMsa::init([in] OmgfHeaderInfo* headerInfo);
+ pfcom.dll
IOmgPf::GET_KEK_ENCRYPTED_CKEY
+ salwrap.dll
EkbCapabilityTable::EkbCapabilityTable(void) void salApplyTokens(class std::vector, class OmgString>) void salApplyTokens(class OmgString const &) OmgEkb::getImage(unsigned long,void const * &,unsigned int &) void __cdecl salVerifyMacAndTranscrypt(class OmgString const &,class OmgString const &,class OmgString &)
+ maclist.ocm, querycif.ocm, + icv.ocm, netmd.ocm + nc_omgtomsa.ocm
Note: See below for what procedures used.
OCM Procedures called during check-out of ATRAC song.
- Start checkout process.
- maclist(1)
- maclist(8)
- icv(7)
- maclist(1)
- maclist(4)
- nc_omgtomsa(0)
- maclist(1)
- maclist(4)
- querycif(9)
- UI: Begin transfer
- netmd(0)
- netmd(1)
- UI: Transfer (90%)
- netmd(2)
- maclist(1)
- maclist(2)
- End checkout process.
Checkout process inputs
omglog.txt
2008/09/02 19:22:47 [C:\Program\Sony\Sonicstage\omgjbox.exe] 000001e0:000004c4 omgid generated: 010F500000040000000000C3244C6026
2008/09/02 19:22:47 [C:\Program\Sony\Sonicstage\omgjbox.exe] 000001e0:000004c4 OMGException: (0x106) C:\Program\Delade filer\Sony Shared\OpenMG/procfile/57/010F50000004000000EFF3C3244C602635178457.opf
2008/09/02 19:22:48 [C:\Program\Sony\Sonicstage\omgjbox.exe] 000001e0:000004c4 OMGException: (0x106) C:\Program\Delade filer\Sony Shared\OpenMG/procfile/57/010F50000004000000EFF3C3244C602635178457.opf
2008/09/06 14:27:15 [c:\Program\Sony\Sonicstage\omgjbox.exe] 00000094:00000248 mac-list newly created
0010001.ekb
unsigned char ekb_0010001[684] = {
0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x0F, 0xF4, 0x7D, 0x45, 0x9C, 0x72, 0xDA, 0x81, 0x85, 0x16, 0x9D, 0x73, 0x49, 0x00, 0xFF, 0x6C, 0x6A, 0xB9, 0x61, 0x6B, 0x03, 0x04, 0xF9, 0xCE, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00, 0x01, 0x34, 0xA4, 0x92, 0x48, 0x03, 0x9E, 0x4D, 0x20, 0x80, 0x40, 0x00, 0x7F, 0xFF, 0xFF, 0x82, 0x40, 0xE0, 0x02, 0x49, 0x24, 0x93, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x71, 0x4E, 0x87, 0x70, 0xBA, 0x7E, 0xE8, 0x1A, 0xFC, 0x79, 0xA7, 0xE2, 0xC0, 0x19, 0xF9, 0x01, 0xCA, 0xBE, 0x07, 0x2C, 0x4D, 0xA7, 0xAE, 0xF3, 0x6C, 0x8D, 0x73, 0xFA, 0x60, 0x2B, 0xD1, 0x2C, 0x4B, 0x6E, 0xBD, 0x8B, 0x8A, 0x8D, 0x6C, 0x37, 0x6C, 0x2F, 0xF5, 0xAA, 0x36, 0xA0, 0x36, 0xA8, 0xEC, 0xFB, 0x6C, 0x65, 0xC9, 0x49, 0xF7, 0xC4, 0x7D, 0xE8, 0xF9, 0x6D, 0xF6, 0xBD, 0x2B, 0x7D, 0x5B, 0x1A, 0x6E, 0xF4, 0x22, 0x53, 0x53, 0x8B, 0x6B, 0x1D, 0xFB, 0x81, 0x38, 0x0D, 0x4A, 0xE7, 0x21, 0x5B, 0x57, 0x91, 0x4E, 0xDF, 0xF8, 0xA3, 0xD9, 0x93, 0x0B, 0x5A, 0x4F, 0xAA, 0x55, 0x24, 0xAA, 0x87, 0x02, 0x69, 0x00, 0x96, 0x0A, 0xB3, 0xDF, 0x6A, 0x20, 0xA9, 0xF1, 0xEA, 0xD4, 0xE6, 0x64, 0x53, 0xA6, 0x45, 0x23, 0xF2, 0x44, 0xE2, 0x37, 0x8B, 0x87, 0xD3, 0x51, 0x8D, 0xC1, 0xBE, 0x2D, 0x2A, 0xF5, 0x0C, 0xF2, 0xA2, 0xD9, 0xBE, 0x91, 0x76, 0x9E, 0x83, 0x5E, 0x63, 0x00, 0x84, 0x6A, 0x3F, 0x49, 0x3E, 0x6D, 0xD0, 0xFD, 0xDA, 0xF8, 0x3B, 0xEB, 0x59, 0xF7, 0xC1, 0xCF, 0x56, 0x95, 0x01, 0x03, 0x5D, 0xBD, 0xC3, 0xE6, 0xA5, 0x79, 0x48, 0x2D, 0x76, 0x48, 0x98, 0x00, 0x79, 0x2E, 0x5D, 0x75, 0x7A, 0xCC, 0x07, 0xBA, 0xAF, 0x40, 0x8E, 0x4A, 0xFC, 0xC8, 0xFC, 0xE9, 0x06, 0x79, 0x43, 0x73, 0xE7, 0x17, 0x23, 0x3E, 0x24, 0x12, 0xE1, 0x1B, 0x9A, 0xB3, 0x67, 0xD0, 0x3E, 0xBE, 0x25, 0x3D, 0xE4, 0x44, 0xA4, 0x66, 0x2D, 0xBC, 0x3F, 0x4C, 0x37, 0x36, 0x97, 0x37, 0x56, 0x49, 0xF1, 0x68, 0xB4, 0xE8, 0x64, 0x9A, 0x49, 0x74, 0xB9, 0x57, 0xAB, 0x3C, 0xBD, 0xC7, 0x99, 0x13, 0xA4, 0xB6, 0x30, 0xE7, 0x10, 0xA5, 0x4C, 0xE5, 0xEA, 0xEF, 0xAD, 0xDA, 0x3A, 0x4D, 0xAC, 0x8C, 0x45, 0x6B, 0x0C, 0x3D, 0xD6, 0xA0, 0x9E, 0x2F, 0x9F, 0xAE, 0xD1, 0xB9, 0x62, 0x0B, 0xDD, 0x10, 0xBF, 0xEB, 0x7E, 0x19, 0x54, 0x22, 0xC8, 0x9E, 0x24, 0x6D, 0xB1, 0x9A, 0xD3, 0xB7, 0xD0, 0xC9, 0x41, 0x6D, 0xD6, 0x9D, 0x93, 0xF7, 0xE2, 0xAA, 0x1A, 0xA6, 0xD2, 0x4B, 0xEE, 0xF6, 0x00, 0x00, 0x00, 0x17, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x28, 0x7B, 0x51, 0x4F, 0x70, 0x84, 0x16, 0x4B, 0xC9, 0xE5, 0x06, 0x0E, 0xAF, 0x48, 0xBD, 0xCC, 0xD7, 0xC0, 0x0B, 0x26, 0x67, 0xEE, 0x82, 0x69, 0xC9, 0x70, 0xFB, 0x3A, 0xC7, 0xEB, 0x8E, 0x44, 0x74, 0x43, 0xC6, 0x78, 0x2D, 0xDD, 0xC1, 0x54, 0xCB, 0x00, 0x00, 0x00, 0xFB, 0x3F, 0x59, 0x0A, 0x27, 0x6C, 0x40, 0x01, 0x1E, 0x60, 0x0C, 0x00, 0x1E, 0x6B, 0x1D, 0x3B, 0x4F, 0x57, 0x77, 0x7A, 0x45, 0x6B, 0x24, 0x56, 0x6F, 0x7A, 0x5C, 0x53, 0x3E, 0x44, 0x5F, 0x1A, 0x62, 0x59, 0x3B, 0x64, 0x4B, 0x1F, 0x21, 0x53, 0x2A, 0x0C, 0x0A, 0x60, 0x30, 0x07, 0x23, 0x7A, 0x62, 0x44, 0x6B, 0x65, 0x29, 0x2A, 0x61, 0x48, 0x23, 0x61, 0x66, 0x06, 0x14, 0x6B, 0x5F, 0x6B, 0x41, 0x62, 0x03, 0x2D, 0x0E, 0x5C, 0x31, 0x15, 0x3C, 0x12, 0x05, 0x46, 0x47, 0x6E, 0x51, 0x2F, 0x4E, 0x02, 0x47, 0x5A, 0x03, 0x1E, 0x7C, 0x7D, 0x24, 0x1E, 0x2D, 0x04, 0x27, 0x66, 0x7A, 0x06, 0x1F, 0x44, 0x44, 0x21, 0x03, 0x03, 0x09, 0x5A, 0x03, 0x2A, 0x27, 0x37, 0x03, 0x7D, 0x08, 0x24, 0x20, 0x45, 0x0F, 0x07, 0x71, 0x09, 0x68, 0x5A, 0x5C, 0x2B, 0x32, 0x75, 0x38, 0x7A, 0x21, 0x49, 0x07, 0x4A, 0x0F, 0x6B, 0x38, 0x7E, 0x3A, 0x63, 0x11, 0x12, 0x18, 0x59, 0x2E, 0x70, 0x37, 0x7B, 0x01, 0x2C, 0x09, 0x44, 0x00, 0x09, 0x74, 0x22, 0x59, 0x12, 0x0D, 0x70, 0x2D, 0x41, 0x7A, 0x58, 0x48, 0x38, 0x6B, 0x3F, 0x03, 0x69, 0x4B, 0x5C, 0x35, 0x29, 0x7A, 0x38, 0x0E, 0x50, 0x7A, 0x46, 0x09, 0x53, 0x0C, 0x39, 0x30, 0x2A, 0x6E, 0x66, 0x1E, 0x7D, 0x6D, 0x6F, 0x23, 0x32, 0x4A, 0x18, 0x58, 0x18, 0x36, 0x1B, 0x09, 0x03, 0x03, 0x7D, 0x09, 0x71, 0x7C, 0x3C, 0x48, 0x6C, 0x1E, 0x14, 0x11, 0x53, 0x3E, 0x6C, 0x62, 0x68, 0x27, 0x6E, 0x36, 0x26, 0x24, 0x1B, 0x71, 0x27, 0x65, 0x5A, 0x03, 0x1C, 0x54, 0x24, 0x3B, 0x30, 0x50, 0x5B, 0x08, 0x0C, 0x3D, 0x0B, 0x14, 0x71, 0x0F, 0x5F, 0x23, 0x7F, 0x6B, 0x03, 0x72, 0x7D, 0x47, 0x21, 0x40, 0x7A, 0x62, 0x4A, 0x00 };
SalOmgId
/*
<OpenMG directory>\OMGKEY\omg_Id.dat
*/
unsigned char SalOmgId[22] = {
0x30, 0x80, 0x04, 0x10, 0x01, 0x0F, 0x50, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x24, 0x4C, 0x60, 0x26, 0x00, 0x00,
} ;
This is an ASN.1 sequence (0x30) with indeterminate length (0x80) that only contains a single blob (0x04) of 16 bytes (0x10). These 16 bytes are in fact the 16 bytes of unknown meaning after the MACLIST\0 header in the maclist.
Process file (OPF)
/* <OpenMG Dirctory>\procfile\57 010F50000004000000EFF3C3244C602635178457.opf
*/
unsigned char ProcessFile[191] = {
0x30, 0x80, 0x02, 0x02, 0x03, 0xE9, 0x04, 0x14, 0x43, 0xEA, 0x42, 0x8F, 0x71, 0xEE, 0x7B, 0x66, 0x5D, 0x10, 0x75, 0x2E, 0x85, 0xAB, 0x16, 0xE5, 0xA5, 0x0C, 0x62, 0x49, 0x04, 0x14, 0x63, 0x81, 0x63, 0xB8, 0x2C, 0x4E, 0x31, 0x81, 0x0F, 0xBE, 0xE0, 0x1B, 0x2E, 0x7F, 0xC2, 0x5B, 0x87, 0x95, 0x86, 0xE3, 0x30, 0x80, 0x02, 0x01, 0x6B, 0x02, 0x04, 0x48, 0xC2, 0x29, 0x8F, 0x02, 0x01, 0x07, 0x02, 0x04, 0x48, 0xC2, 0x29, 0x8F, 0x02, 0x01, 0x6D, 0x02, 0x01, 0x00, 0x02, 0x01, 0x65, 0x04, 0x14, 0xC0, 0x4B, 0x51, 0x3E, 0xDE, 0x54, 0x34, 0x2D, 0x70, 0x9D, 0x0C, 0xB8, 0x62, 0x1E, 0x64, 0x6F, 0xDD, 0xCB, 0x34, 0x5E, 0x02, 0x01, 0x00, 0x04, 0x14, 0x01, 0x0F, 0x50, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xEF, 0xF3, 0xC3, 0x24, 0x4C, 0x60, 0x26, 0x35, 0x17, 0x84, 0x57, 0x02, 0x01, 0x68, 0x02, 0x02, 0x1F, 0xD7, 0x02, 0x01, 0x06, 0x04, 0x15, 0x72, 0x61, 0x77, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x02, 0x01, 0x67, 0x02, 0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x01, 0x03, 0x02, 0x01, 0x08, 0x02, 0x01, 0x03, 0x02, 0x01, 0x05, 0x02, 0x01, 0x04, 0x00, 0x00, 0x30, 0x80, 0x00, 0x00, 0x00, 0x00,
} ;
ASN.1 Sequence with a data structure that is setup and manipulated by functions called through DICT 187 (these functions are in DICT 188).
30 80 02 02 03E9 04 14 43EA428F71EE7B665D10752E85AB16E5A50C6249 ; MAC 04 14 638163B82C4E31810FBEE01B2E7FC25B879586E3 ; Enc(CKEY) ? Offset 0x1E according to Jan (// key is at offset 0x1E! (OMGDecrypter.cpp) 30 80 02 01 6B ; 17 (some time stamp) 02 04 48C2298F 02 01 07 ; 7 == creation time of structure 02 04 48C2298F 02 01 6D ; 109 02 01 00 02 01 65 ; 101 04 14 C04B513EDE54342D709D0CB8621E646FDDCB345E 02 01 00 ; 0 == scrambled form of the maclist id == SalOmgId 04 14 010F50000004000000EFF3C3244C602635178457 02 01 68 ; 104 02 02 1FD7 02 01 06 ; 6 == source name 04 15 72617720636F6E74656E7420696D706F7274696E67 r a w c o n t e n t i m p o r t i n g 02 01 67 ; 103 == flags? 02 01 02 02 01 01 ; 1 == max checkout? 02 01 03 02 01 08 ; 8 == checkout count? 02 01 03 02 01 05 ; 5 == flags (1|2|4) 02 01 04 0000 ; End array 30 80 0000 ; Empty array 0000 ; End array
maclist1.dat
unsigned char maclist1_dat[72] = {
<0x4D, 0x41, 0x43, 0x4C, 0x49, 0x53, 0x54, 0x00>, salomgid <0x01, 0x0F, 0x50, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x24, 0x4C, 0x60, 0x26>, <0x02>, number-of-mac-ops <0x00, 0x00, 0x00, 0x03>, number-of-macs <0x00, 0x00, 0x00, 0x00>, macs-data <0x00, 0x00, 0x00, 0x00>, extension-type <0x00, 0x00, 0x00, 0x00>, extension-size <0x00, 0x00, 0x00, 0x18>, leaf-id <0x00, 0x00, 0x00, 0x02, 0x00, 0x00>, status-code <0x00, 0x01>, leaf-id <0x00, 0x00, 0x00, 0x01, 0x00, 0x01>, status-code <0x00, 0x03>, leaf-id <0x00, 0x00, 0x00, 0x02, 0x00, 0x01>, status-code <0x00, 0x01>, <0x00, 0x00, 0x00>,
} ;
There is a 40-byte header (MACLIST\0, followed by 16 bytes of the SalOmgID (omg_id.dat), followed by (DWORD)2, followed by the number of operations done on the maclist (in this case 3), followed by the number of MACs (here: 0), followed by 0 (unknown field). Then come the 8-byte macs, but in this case there are none. Then follow extensions, which have this structure: a DWORD with the type of the extension, and a DWORD with the length (excluding this 8 byte extension header). In this case, there is only an extension of type 0 which contains 0x18 bytes. The extension 0 maps ekb device/leaf IDs to status codes in a yet to be determined manner, in this case: 0x00000002 → 1, 0x00010001 → 3, 0x00010002 → 1.
maclist2.dat
unsigned char maclist2_dat[80] = {
0x4D, 0x41, 0x43, 0x4C, 0x49, 0x53, 0x54, 0x00, 0x01, 0x0F, 0x50, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x24, 0x4C, 0x60, 0x26, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xEA, 0x42, 0x8F, 0x71, 0xEE, 0x7B, 0x66, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
} ;
The update counter is bumped from 3 to 4 here, and the count of macs is 1. Indeed a MAC can be found here, namely 43EA428F71EE7B66. Then the 0-extension follows with unchanged content.
icv.dat
unsigned char icv_dat[20] = {
0x0C, 0xB0, 0x69, 0x7E, 0xB4, 0x9C, 0x67, 0xA1, 0x95, 0x13, 0xEA, 0x41, 0x38, 0x2D, 0xE4, 0x7F, 0x2F, 0x7F, 0x33, 0xC4,
} ;
OpenMG song
/* Atrac encoded OpenMG file. 2-3 seconds of sinus tone. */
unsigned char sine_400_omg[9270] = {
0x30, 0x80, 0x30, 0x80, 0x06, 0x07, 0x66, 0x6F, 0x70, 0x65, 0x6E, 0x4D, 0x47, 0x02, 0x02, 0x03, 0xEB, 0x04, 0x14, 0x01, 0x0F, 0x50, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xEF, 0xF3, 0xC3, 0x24, 0x4C, 0x60, 0x26, 0x35, 0x17, 0x84, 0x57, 0x06, 0x02, 0x67, 0x01, 0x02, 0x02, 0x3F, 0x00, 0x06, 0x02, 0x68, 0x01, 0x02, 0x04, 0x00, 0x00, 0x21, 0xC0, 0x02, 0x01, 0x01, 0x02, 0x03, 0x01, 0x01, 0xD0, 0x02, 0x02, 0x00, 0xC0, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x08, 0x1D, 0x89, 0x1A, 0x35, 0x25, 0x7C, 0x80, 0x17, 0x04, 0x84, 0x00, 0x00, 0x21, 0xD0, 0x86, 0x62, 0xB7, 0x3C, 0xCD, 0x0D, 0x2E, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xCF, 0xD3, 0x83, 0x7F, 0x35, 0xD2, 0x3B, 0x80, 0x41, 0x48, 0x8D, 0xE6, 0x53, 0x99, 0x8A, 0x11, 0x31, 0xB0, 0x79, 0x1B, 0x42, 0xB8, 0xFF, 0x6A, 0x2E, 0x4C, 0x74, 0x05, 0x1C, 0x69, 0x8E, 0x13, 0x79, 0xCE, 0xBF, 0xBF, 0x56, 0x05, 0xFE, 0x27, 0xCB, 0xCA, 0xAE, 0xEA, 0x89, 0xA8, 0x67, 0xB0, 0xFE, 0x32, 0xAC, 0x08, 0x4C, 0xEF, 0x6D, 0x1F, 0xFD, 0xA5, 0x2B, 0x5B, 0x05, 0x87, 0x9A, 0xBA, 0xDC, 0x9B, 0xD7, 0x6B, 0x65, 0x88, 0xF6, 0x76, 0xE6, 0x97, 0x06, 0x96, 0x78, 0xF3, 0x56, 0x38, 0xC3, 0x5E, 0x4E, 0xA4, 0x83, 0xAD, 0xF1, 0xF6, 0x58, 0xD0, 0x03, 0x9D, 0x0C, 0x03, 0xD7, 0x6C, 0x6E, 0xE8, 0x88, 0x83, 0x0B, 0xF5, 0x50, 0x28, 0x0E, 0x52, 0x58, 0x63, 0x1C, 0x3D, 0x38, 0xAF, 0x3D, 0x4A, 0x8D, 0xB1, 0x6D, 0xBC, 0xEB, 0x55, 0xE9, 0x6C, 0xD6, 0xDF, 0x44, 0xD4, 0x57, 0x74, 0x70, 0x30, 0x79, 0xC5, 0x88, 0x33, 0xF1, 0x38, 0x76, 0xE8, 0x94, 0x77, 0x6D, 0x3C, 0xE3, 0x70, 0xD2, 0x6F, 0x0A, 0x57, 0x4D, 0x5E, 0xA3, 0xAD, 0x56, 0xDF, 0x69, 0xAB, 0xEF, 0xDC, 0xE9, 0x7F, 0xA7, 0x29, 0xB0, 0x5B, 0x88, 0x8A, 0x07, 0x1A, 0x3D, 0x0D, 0x14, 0x1B, 0x99, 0xC6, 0x1F, 0x05, 0x2E, 0x42, 0x30, 0x2B, 0x15, 0x63, 0x4A, 0x17, 0xF8, 0x59, 0xE8, 0x80, 0x5A, 0xC4, 0x25, 0x23, 0x0A, 0x81, 0x46, 0x57, 0xC6, 0xA1, 0x50, 0x9A, 0xBF, 0xEB, 0xF9, 0x48, 0xEA, 0x0F, 0x02, 0x51, 0x5A, 0xA9, 0x55, 0x2E, 0x27, 0x3C, 0x0B, 0xA0, 0x38, 0x9B, 0x7A, 0x7E, 0x0A, 0xFD, 0x77, 0x83, 0x26, 0xDE, 0x1A, 0x74, 0xC1, 0xE6, 0x6B, 0x9E, 0xAA, 0xB1, 0xD0, 0x11, 0xF3, 0x82, 0x43, 0x42, 0x37, 0x39, 0xBD, 0x45, 0xFA, 0xF7, 0xF7, 0xF0, 0xD1, 0x39, 0xF5, 0xAD, 0x87, 0x74, 0x4E, 0xF1, 0xD9, 0x65, 0x57, 0x62, 0x4E, 0x3D, 0x8A, 0xEC, 0x29, 0x97, 0xC2, 0xE1, 0x47, 0x4D, 0xA0, 0xBE, 0x9A, 0x23, 0xC7, 0x59, 0x6F, 0x53, 0x67, 0xA6, 0x52, 0x05, 0xFE, 0x2C, 0xAF, 0x17, 0x3C, 0x4A, 0x22, 0x52, 0x5C, 0xC4, 0xFD, 0x4F, 0x8C, 0x41, 0xB0, 0x35, 0xDC, 0x2C, 0x8E, 0x61, 0xF4, 0x6D, 0xAA, 0xBF, 0x89, 0x84, 0xBB, 0x81, 0x87, 0xEB, 0xB6, 0x11, 0x03, 0x2C, 0x34, 0x19, 0x5D, 0x59, 0x02, 0xED, 0xAC, 0xB7, 0x3F, 0xD0, 0x2D, 0x62, 0x12, 0x81, 0x3B, 0x32, 0x8E, 0xC3, 0xE3, 0xE4, 0x21, 0xB9, 0x90, 0x9D, 0x44, 0x77, 0x42, 0x8D, 0x1D, 0x0A, 0xCF, 0x76, 0xFB, 0xE0, 0x11, 0x35, 0x38, 0x9C, 0xBE, 0x76, 0x77, 0x4E, 0xC8, 0x5C, 0xBC, 0xE8, 0x76, 0x71, 0xBB, 0x12, 0xEC, 0xA5, 0x6D, 0x44, 0x95, 0xA6, 0xE6, 0xF2, 0xCA, 0xC1, 0x9A, 0x74, 0x98, 0x66, 0xC4, 0xC5, 0xEA, 0xBF, 0xFF, 0x52, 0x11, 0xA4, 0x47, 0x8A, 0xEC, 0x1E, 0x52, 0x4D, 0xB6, 0xF7, 0xEB, 0xD4, 0x1C, 0xB4, 0xA6, 0x1B, 0xA4, 0x13, 0xE5, 0x35, 0xC5, 0x61, 0xE4, 0x8B, 0x66, 0x2B, 0x38, 0xB1, 0x9D, 0x17, 0xDE, 0x59, 0xC4, 0x10, 0x0F, 0x40, 0x97, 0x7F, 0x59, 0x1C, 0x13, 0xDA, 0x96, 0xE2, 0x68, 0x1E, 0xBE, 0xD7, 0x14, 0x5F, 0xD0, 0x74, 0x30, 0x97, 0x82, 0xFD, 0x81, 0x23, 0x06, 0x00, 0xC5, 0x69, 0x1C, 0x50, 0xA1, 0x0C, 0xD8, 0xDC, 0x7E, 0x1A, 0x4C, 0x5E, 0x82, 0x87, 0xFA, 0x04, 0xDA, 0x76, 0x45, 0xE0, 0x42, 0x69, 0x91, 0x45, 0x6E, 0x5C, 0xAC, 0x3A, 0x22, 0x97, 0x90, 0xAC, 0x37, 0x0B, 0xD6, 0xF6, 0x26, 0x12, 0x99, 0x58, 0x5E, 0x2D, 0x79, 0x12, 0xAD, 0xE0, 0x9A, 0x8C, 0x7F, 0x92, 0x09, 0x20, 0xB0, 0x41, 0xC2, 0xCC, 0x88, 0x8C, 0x92, 0x94, 0xC5, 0x22, 0x3A, 0x52, 0x68, 0xE9, 0x7C, 0x35, 0xBD, 0x43, 0x73, 0xBE, 0x94, 0xDD, 0x60, 0xF6, 0x3E, 0x05, 0xC1, 0xB6, 0x29, 0xC8, 0x42, 0xD9, 0x90, 0xD1, 0xE4, 0x58, 0x19, 0x6A, 0xB7, 0x3D, 0xC3, 0x8C, 0x15, 0x11, 0x27, 0xA6, 0xBE, 0xAA, 0x70, 0xA6, 0xA4, 0xD9, 0xC3, 0x4E, 0x44, 0x65, 0x7A, 0xFD, 0x01, 0xB1, 0xDE, 0xB6, 0xB9, 0xBD, 0x0F, 0x52, 0x1B, 0x03, 0xE5, 0xD0, 0xE0, 0xAA, 0x2B, 0x5C, 0x9E, 0x02, 0xBF, 0xF8, 0x26, 0xA3, 0xF2, 0x67, 0x68, 0x1D, 0x37, 0x87, 0x13, 0x10, 0xD1, 0xCB, 0x10, 0x6A, 0x21, 0x7A, 0x79, 0x68, 0xFB, 0x2D, 0xC2, 0x75, 0x23, 0xBD, 0x2F, 0x1B, 0x50, 0x40, 0xC5, 0xAB, 0xD7, 0x50, 0xA7, 0xE5, 0x0D, 0x47, 0x31, 0xE8, 0x06, 0x1C, 0x76, 0x01, 0x19, 0x99, 0x73, 0x2D, 0x56, 0xC0, 0x1A, 0x86, 0x5F, 0x6B, 0x44, 0xAF, 0xBA, 0x52, 0xD7, 0x28, 0x33, 0x83, 0x33, 0x6C, 0xD9, 0x07, 0x94, 0x16, 0x09, 0x64, 0x5F, 0x2D, 0xA3, 0x45, 0x8C, 0x42, 0x27, 0xD2, 0x31, 0xCC, 0x29, 0x6F, 0xA9, 0x72, 0x72, 0x63, 0xD9, 0x64, 0xA2, 0x01, 0xDB, 0x23, 0x33, 0x5E, 0x32, 0x71, 0x65, 0x28, 0xE9, 0x7E, 0xD5, 0xA2, 0x1F, 0xE0, 0x29, 0x3E, 0x50, 0x36, 0x69, 0xA5, 0x5D, 0x3D, 0x8E, 0xCE, 0x39, 0xD1, 0xF8, 0x87, 0x74, 0x9D, 0xC1, 0xE9, 0x6B, 0x89, 0x4F, 0x20, 0xE1, 0x81, 0x42, 0x72, 0x85, 0x73, 0x1A, 0xD7, 0xC8, 0x22, 0xE9, 0xCD, 0xE9, 0x0B, 0x64, 0xE1, 0x29, 0x68, 0x1A, 0x34, 0x8A, 0x2B, 0x1C, 0x54, 0x92, 0xC9, 0x33, 0xDD, 0x77, 0x17, 0x49, 0x0A, 0x6D, 0xC8, 0xE2, 0xFF, 0xE3, 0xAA, 0x28, 0xB7, 0xA2, 0x34, 0xCB, 0xE0, 0xD9, 0x38, 0x57, 0x92, 0x5E, 0x4E, 0x63, 0xB8, 0x95, 0xD2, 0x69, 0x88, 0x6F, 0x8E, 0x05, 0xEE, 0x7B, 0x8C, 0xA9, 0x6B, 0x4A, 0x78, 0x22, 0x24, 0x40, 0x3A, 0xD3, 0x42, 0xF3, 0x0B, 0xA9, 0x56, 0x19, 0xA1, 0x84, 0x82, 0xBD, 0x72, 0xF9, 0xD9, 0xEF, 0x43, 0xC6, 0x1F, 0xDE, 0xFE, 0x8A, 0xDD, 0xF4, 0x80, 0x6B, 0xC9, 0xCC, 0x6C, 0x53, 0x0F, 0xB9, 0x80, 0xAD, 0x91, 0x11, 0x86, 0xBD, 0x82, 0xDE, 0x2B, 0xF0, 0xF2, 0x1C, 0x91, 0x75, 0xD2, 0xFD, 0xEB, 0xA5, 0xBB, 0x54, 0xD2, 0x47, 0x72, 0x20, 0x77, 0xCE, 0x13, 0xC1, 0x43, 0xF5, 0xC1, 0x18, 0x92, 0x3E, 0xAD, 0xF2, 0x21, 0x8D, 0x1B, 0x26, 0xB2, 0xBA, 0x2E, 0x9D, 0x70, 0x22, 0xA4, 0x3E, 0xB2, 0x04, 0xB6, 0xC1, 0xC3, 0x55, 0x0F, 0xD4, 0xB9, 0xD1, 0x12, 0xB1, 0x56, 0x05, 0xA8, 0xF0, 0x8B, 0x39, 0xFF, 0xC0, 0x7B, 0x15, 0xFF, 0xE0, 0x63, 0x4B, 0x2B, 0x2A, 0x40, 0x48, 0xA6, 0x90, 0xAF, 0xB5, 0xA4, 0x53, 0x8A, 0xCF, 0xCF, 0xEE, 0x62, 0x86, 0x1D, 0x44, 0xF0, 0x90, 0x0D, 0xAD, 0x8D, 0x5D, 0x46, 0x8F, 0x0C, 0x6C, 0x5F, 0x6A, 0x1A, 0xB7, 0x7B, 0x29, 0xCB, 0x09, 0xEF, 0x0F, 0x3F, 0x8B, 0xA8, 0x08, 0x2A, 0x66, 0x18, 0x61, 0x4D, 0xCB, 0x71, 0x2E, 0xE5, 0x1C, 0x9B, 0xB4, 0x5B, 0x3A, 0x10, 0xD8, 0x05, 0x44, 0x7D, 0x41, 0x80, 0xB4, 0x8E, 0x1B, 0x99, 0x5B, 0x5E, 0xE7, 0xC8, 0x73, 0xCA, 0xAD, 0x25, 0x21, 0xB6, 0xF6, 0x3D, 0xB8, 0xDE, 0x07, 0x66, 0x89, 0x68, 0x1F, 0xC2, 0x6E, 0xA9, 0x35, 0xB0, 0x15, 0x65, 0x23, 0xDB, 0x9F, 0x8C, 0x59, 0xCF, 0x94, 0x15, 0x15, 0x35, 0x50, 0x65, 0x1E, 0x7E, 0xA2, 0x14, 0x3D, 0x94, 0x35, 0x3D, 0x08, 0xD1, 0xCA, 0x65, 0x5D, 0x8C, 0xE6, 0x25, 0xE3, 0xEA, 0x87, 0xC7, 0xD2, 0xE7, 0x12, 0xE3, 0x55, 0x03, 0x83, 0xB6, 0x24, 0xAC, 0xE6, 0xB2, 0x0D, 0xDA, 0x67, 0x3A, 0x07, 0xC1, 0x8F, 0x8C, 0xB1, 0x99, 0xD0, 0xBF, 0xBD, 0xFB, 0x80, 0x4F, 0x73, 0x29, 0xFA, 0x12, 0x1B, 0xE8, 0xE5, 0x55, 0xD5, 0xC4, 0x75, 0x86, 0x59, 0xA4, 0x2C, 0x12, 0xB0, 0xEB, 0x4A, 0xDC, 0xBB, 0xDA, 0x5C, 0x55, 0x96, 0xD4, 0x66, 0x8A, 0x3F, 0x77, 0x3B, 0x24, 0x14, 0x4D, 0x74, 0xF7, 0x4C, 0x1B, 0xE8, 0x9B, 0x92, 0x99, 0xDF, 0xFE, 0xD5, 0x7E, 0xBA, 0x46, 0xB5, 0x13, 0xCC, 0xD6, 0x97, 0xEE, 0xE3, 0xB1, 0x36, 0x4B, 0x31, 0xF7, 0x16, 0x1A, 0xF1, 0x7F, 0x63, 0xED, 0xFD, 0x8D, 0x83, 0xA4, 0x89, 0x79, 0x23, 0x97, 0xDA, 0x7D, 0x54, 0x16, 0x15, 0x46, 0xB9, 0xA4, 0x30, 0xA9, 0xF6, 0xEE, 0x0E, 0x1D, 0x97, 0xB2, 0xDC, 0x4D, 0x84, 0xB0, 0xFA, 0x47, 0x3B, 0x5E, 0xFB, 0xB6, 0xB8, 0xCF, 0x4C, 0xF6, 0xAA, 0x26, 0x4D, 0xCB, 0xB9, 0x78, 0x4D, 0x56, 0xCE, 0x9C, 0x0C, 0xD1, 0x3D, 0x45, 0xB4, 0xD6, 0xC0, 0xD5, 0x99, 0xB9, 0x30, 0x5B, 0x1E, 0xF0, 0xDC, 0x9A, 0x1B, 0x94, 0x80, 0xAB, 0xAC, 0x86, 0x49, 0x30, 0x74, 0x30, 0xDD, 0x75, 0x1B, 0xAD, 0xDF, 0xE4, 0x63, 0xCE, 0x91, 0x90, 0xF4, 0x98, 0xB9, 0xDB, 0x00, 0xAE, 0xAD, 0x85, 0x1B, 0xEE, 0x81, 0x9F, 0x95, 0xEA, 0x10, 0xA3, 0x79, 0xDC, 0xEF, 0x45, 0x35, 0x14, 0xF1, 0x73, 0xB0, 0x1A, 0xF4, 0x3B, 0x3C, 0xB2, 0x42, 0x51, 0x14, 0x6B, 0x2B, 0xAB, 0xED, 0xAF, 0xA3, 0x24, 0xC0, 0xDB, 0x95, 0xBA, 0x40, 0x01, 0xA2, 0xA6, 0xCA, 0x43, 0x0F, 0x45, 0xB8, 0x7D, 0x93, 0xB2, 0x67, 0xA8, 0xDA, 0x64, 0xAF, 0xC2, 0x9D, 0xCD, 0xAB, 0x5B, 0xCC, 0x2E, 0x98, 0xDE, 0xF9, 0x28, 0x4A, 0xB4, 0x39, 0x41, 0x1C, 0x5A, 0x79, 0xBA, 0xE7, 0x31, 0xEE, 0x0F, 0xF7, 0x5D, 0x62, 0x6C, 0x3A, 0xD3, 0x88, 0x2B, 0x8E, 0x9E, 0xB0, 0xD6, 0x49, 0x41, 0x5D, 0x8E, 0x9A, 0xC6, 0xA3, 0x90, 0x10, 0x3F, 0x8A, 0xE7, 0x20, 0xD0, 0x4F, 0xC3, 0x71, 0x67, 0x08, 0xD9, 0x42, 0xB6, 0xC1, 0x42, 0x16, 0xF0, 0x40, 0x56, 0x77, 0xDB, 0x65, 0xAC, 0x9B, 0x76, 0xC7, 0xDC, 0xFC, 0xF8, 0x5A, 0x89, 0x2B, 0x77, 0xF1, 0x2A, 0xEB, 0x27, 0x5C, 0x21, 0xC6, 0x08, 0x2C, 0x6F, 0x2D, 0xC0, 0xE7, 0x3B, 0x1D, 0xCA, 0xF0, 0x7B, 0x51, 0x39, 0x29, 0xE7, 0x2E, 0xEB, 0xBD, 0x81, 0xD7, 0x78, 0x27, 0x9D, 0xE7, 0x73, 0x62, 0xC4, 0x68, 0x50, 0x08, 0x66, 0x28, 0x89, 0x7F, 0x62, 0x67, 0x4C, 0x3A, 0x65, 0xE7, 0x9B, 0x2E, 0x3B, 0x85, 0x61, 0x34, 0x62, 0x02, 0x2C, 0x85, 0x55, 0x8B, 0x80, 0x6C, 0xF1, 0x35, 0xC2, 0x82, 0xE9, 0xE0, 0x29, 0x6B, 0x41, 0x42, 0xFF, 0xFF, 0x97, 0xBF, 0x19, 0xA1, 0xAE, 0xB7, 0xA3, 0xE8, 0xB5, 0x76, 0x83, 0xB8, 0xB4, 0x44, 0xE5, 0x76, 0x91, 0x60, 0x06, 0x85, 0x43, 0xFC, 0x20, 0x1C, 0xC5, 0x03, 0x0A, 0x42, 0x98, 0xF8, 0xC9, 0xD3, 0x59, 0x1D, 0x04, 0x5A, 0x60, 0x4C, 0xC7, 0xAF, 0xB3, 0xDA, 0xB4, 0x0E, 0x2A, 0x49, 0x43, 0xFA, 0x1A, 0xD3, 0xB3, 0xE9, 0x67, 0xA9, 0x74, 0xE1, 0x60, 0x78, 0xD4, 0x77, 0x13, 0xE1, 0xF9, 0x32, 0xE5, 0x8A, 0x35, 0xC4, 0x0C, 0x46, 0x66, 0x92, 0x15, 0xA4, 0x93, 0x30, 0x22, 0x42, 0x55, 0xB4, 0x5A, 0x28, 0x91, 0x7C, 0x58, 0xB9, 0x7A, 0x1F, 0xA5, 0x57, 0x8D, 0x2F, 0xF7, 0xAC, 0xE4, 0xC6, 0x65, 0x1A, 0x6D, 0x37, 0x3D, 0xB5, 0x95, 0xE1, 0xD5, 0x64, 0xD6, 0x7E, 0x27, 0x0D, 0x68, 0xA3, 0x40, 0x1E, 0x35, 0xBC, 0xC6, 0x65, 0xB1, 0x8B, 0xC4, 0x03, 0x37, 0x05, 0xE7, 0xE4, 0x39, 0x5C, 0x1C, 0x0B, 0x8D, 0xF7, 0x22, 0xF3, 0x31, 0x64, 0x44, 0x8D, 0x2B, 0x5B, 0x3F, 0x39, 0xE9, 0xEA, 0xF5, 0x15, 0x20, 0xC8, 0x4D, 0x6A, 0xEC, 0x52, 0x50, 0xF2, 0xDD, 0x6C, 0xDB, 0x35, 0x7F, 0xB3, 0xBF, 0x70, 0x74, 0x9C, 0x2E, 0xD4, 0xEA, 0x29, 0x61, 0x3E, 0xCC, 0xFF, 0xBA, 0xAC, 0x16, 0x63, 0x5F, 0x90, 0xF1, 0xBE, 0xF8, 0xB9, 0xEC, 0xA7, 0xB3, 0xF6, 0xE5, 0x33, 0xCA, 0x98, 0x41, 0xF0, 0xD4, 0xEA, 0x7A, 0x38, 0x88, 0x28, 0x74, 0x90, 0x3D, 0x6E, 0xA1, 0x11, 0xBA, 0x86, 0x7E, 0xB5, 0xFB, 0xCD, 0x12, 0xCD, 0x13, 0xE5, 0xE4, 0xEF, 0x75, 0x22, 0xFC, 0x45, 0x9A, 0x13, 0x04, 0x47, 0xE6, 0x12, 0x0E, 0x2B, 0xD1, 0x1F, 0xD2, 0xC1, 0x52, 0x03, 0xBE, 0x1E, 0xA9, 0xA8, 0xB9, 0xDA, 0x5A, 0x85, 0x1B, 0x66, 0x09, 0x1A, 0x14, 0xAD, 0xA5, 0x30, 0xCB, 0x74, 0x95, 0x95, 0x75, 0x17, 0xA4, 0xF1, 0x75, 0x69, 0x91, 0x7C, 0x4A, 0x79, 0xBF, 0xEB, 0x10, 0x3C, 0xFB, 0x66, 0xF4, 0x28, 0xBE, 0xC1, 0x7E, 0x9A, 0x2F, 0x60, 0x80, 0xC1, 0xE2, 0x48, 0x72, 0x9C, 0xEA, 0xEA, 0x93, 0x5E, 0x8B, 0xA8, 0x7F, 0x84, 0x7D, 0xB3, 0x0A, 0x9D, 0xC8, 0x21, 0xF4, 0xAF, 0xA2, 0x02, 0x1C, 0xE5, 0x08, 0x66, 0x57, 0x4E, 0xA9, 0xDC, 0x51, 0x16, 0xE5, 0x4B, 0x6C, 0xB2, 0x88, 0xF3, 0x8A, 0xDE, 0x2A, 0x0D, 0x0D, 0x06, 0x06, 0xA3, 0xEF, 0x8B, 0xDF, 0x6A, 0x4C, 0x96, 0x98, 0x13, 0xA3, 0x4C, 0x59, 0x37, 0xEB, 0x21, 0xFF, 0x1C, 0x75, 0x0C, 0x3F, 0xE8, 0x22, 0x0E, 0xD3, 0xE3, 0xAD, 0xA3, 0x6E, 0x7E, 0x67, 0x42, 0x26, 0xF1, 0x6F, 0x57, 0x44, 0x7B, 0x1D, 0x1F, 0x7F, 0x0E, 0xEE, 0x06, 0xA0, 0x00, 0x16, 0xA5, 0x10, 0x10, 0x1F, 0x10, 0x77, 0x70, 0x40, 0x08, 0x55, 0xCC, 0xA3, 0x07, 0x6E, 0xB5, 0x28, 0xBF, 0x37, 0x68, 0x62, 0x63, 0x98, 0x1A, 0x55, 0x99, 0x11, 0x1D, 0x8E, 0xE9, 0xD9, 0x85, 0xC4, 0xB1, 0x2D, 0x98, 0xC1, 0x2E, 0x90, 0x22, 0x7C, 0x4B, 0x7C, 0x8F, 0x89, 0x1D, 0x3E, 0x4D, 0x43, 0xF7, 0x47, 0x3E, 0x9A, 0x01, 0x23, 0xF1, 0x63, 0x48, 0x4C, 0x27, 0x50, 0x61, 0xBC, 0x7F, 0x82, 0xBE, 0x1D, 0x87, 0xC5, 0xD5, 0x25, 0x0A, 0x29, 0x77, 0xCA, 0x6C, 0x63, 0x22, 0x92, 0xF2, 0x16, 0x6C, 0xAA, 0x28, 0x35, 0xC7, 0x9A, 0x93, 0xB0, 0x08, 0x96, 0x85, 0x33, 0xBA, 0x49, 0xC1, 0x17, 0x71, 0x59, 0x94, 0xD4, 0x02, 0x42, 0x28, 0xB0, 0x2F, 0x39, 0xE5, 0x5D, 0x5B, 0xE4, 0x6C, 0x8F, 0x26, 0x0D, 0x0D, 0xC4, 0xF1, 0xB7, 0x14, 0x3D, 0xA8, 0x7B, 0x32, 0xCB, 0x90, 0x28, 0x44, 0xE6, 0x82, 0x0E, 0x07, 0xBB, 0x8F, 0xAD, 0x52, 0x79, 0x26, 0x6F, 0xC9, 0x09, 0xCF, 0x26, 0x23, 0xBA, 0x91, 0xAA, 0xFD, 0x09, 0x4E, 0xA9, 0x7C, 0xB6, 0xAD, 0xDD, 0xF0, 0x2F, 0x50, 0xDD, 0x10, 0xF5, 0x0B, 0xE0, 0xBE, 0x07, 0x42, 0x62, 0x09, 0xFA, 0x15, 0x4D, 0x58, 0x7C, 0xDE, 0xC3, 0xB8, 0x00, 0xF7, 0x24, 0x23, 0x98, 0x4F, 0x3A, 0xB0, 0xFC, 0x53, 0xD9, 0xB1, 0x5F, 0xAA, 0x1D, 0xA2, 0x3B, 0xC4, 0xCD, 0x88, 0x9A, 0x49, 0x40, 0x66, 0xBA, 0xB1, 0x4D, 0xE0, 0x8B, 0xAF, 0x6C, 0x59, 0x69, 0xC5, 0xAF, 0x42, 0x74, 0xC8, 0xB5, 0xB2, 0x6D, 0x65, 0x05, 0x93, 0x9B, 0xA7, 0xDD, 0x23, 0x91, 0x10, 0xD0, 0x2D, 0x04, 0x07, 0x3F, 0x64, 0xEA, 0xEA, 0x4C, 0xA5, 0xC1, 0xBC, 0xA4, 0x8C, 0x01, 0xFF, 0x7E, 0x41, 0xA0, 0xE5, 0xE7, 0xF0, 0xD8, 0x43, 0xBD, 0x42, 0xAD, 0xE0, 0x13, 0x63, 0xB4, 0x7B, 0xDD, 0x23, 0x18, 0x35, 0x1E, 0xBF, 0xE1, 0xD3, 0xFF, 0xBC, 0xB4, 0x4F, 0xDA, 0x53, 0x47, 0xFB, 0x2B, 0xFA, 0x71, 0xEB, 0x42, 0x57, 0xB4, 0xF2, 0x98, 0x5F, 0x40, 0xF9, 0xDA, 0xE8, 0x3E, 0xF6, 0xDD, 0x25, 0xA4, 0xAC, 0x8D, 0xF5, 0xF1, 0xB5, 0xAD, 0x96, 0xFD, 0x93, 0xD4, 0x45, 0x50, 0x3F, 0x96, 0x88, 0x2A, 0x11, 0x61, 0xA8, 0x84, 0xA6, 0x24, 0x2F, 0xE4, 0xBA, 0x4C, 0x5E, 0x3C, 0xDD, 0x5D, 0x75, 0xEF, 0xD5, 0x88, 0xFE, 0xFE, 0xCB, 0x5D, 0x91, 0x9C, 0x9A, 0x00, 0x88, 0x8A, 0xB2, 0x91, 0x23, 0x48, 0x0F, 0x85, 0xE8, 0xBA, 0xD5, 0x05, 0xF3, 0xCE, 0xCF, 0x92, 0x36, 0x28, 0x66, 0xDF, 0x14, 0x41, 0x88, 0xC6, 0x8C, 0x65, 0x58, 0x63, 0x71, 0x62, 0x08, 0x02, 0xD8, 0xC6, 0x03, 0xE5, 0xB6, 0xF1, 0x09, 0x45, 0xD8, 0x1A, 0xC5, 0xC8, 0x57, 0x3B, 0xE4, 0x13, 0x1E, 0xD4, 0xB3, 0x78, 0xC1, 0xA9, 0x20, 0xBE, 0x8C, 0xD1, 0x1C, 0xC7, 0x8A, 0x93, 0x49, 0x3E, 0x76, 0x08, 0xE2, 0x14, 0x77, 0x18, 0x8A, 0x09, 0x59, 0x9C, 0x0C, 0xE2, 0x9D, 0x75, 0xD3, 0xD8, 0x69, 0x8F, 0xC9, 0x15, 0x06, 0x8F, 0x4F, 0xD4, 0x9E, 0x1D, 0xB9, 0x63, 0x83, 0xA4, 0xDC, 0xD2, 0x49, 0x63, 0x16, 0x4B, 0xAC, 0x8F, 0x15, 0x08, 0xAC, 0xA8, 0x3B, 0xA8, 0x29, 0x67, 0x48, 0x43, 0xF5, 0xF9, 0x5E, 0xFD, 0xFC, 0x72, 0x13, 0xBD, 0xF2, 0x44, 0xC1, 0x93, 0x6B, 0x76, 0x72, 0xFE, 0xD0, 0xE0, 0x15, 0x8B, 0xAD, 0xFF, 0xB2, 0x09, 0xFB, 0x4C, 0x82, 0x9E, 0xA1, 0x10, 0xDD, 0xA3, 0x43, 0x65, 0x83, 0x91, 0xCF, 0x2E, 0xF6, 0x03, 0x07, 0x69, 0x97, 0x55, 0x9E, 0xB1, 0xF9, 0x45, 0x90, 0x7F, 0x4D, 0x87, 0x7E, 0xDE, 0xCB, 0xE4, 0x35, 0x97, 0x9C, 0x07, 0xB4, 0x64, 0xC1, 0x7C, 0x32, 0x67, 0x51, 0x90, 0x3C, 0x1C, 0x57, 0x63, 0xA2, 0xB0, 0x99, 0x5D, 0x83, 0x8F, 0xFC, 0xCA, 0xDC, 0x20, 0x37, 0x55, 0x67, 0x18, 0xB5, 0xDE, 0xBF, 0xF5, 0x60, 0x02, 0xEF, 0x37, 0xA7, 0x56, 0x2E, 0xFD, 0x1A, 0x82, 0xD6, 0x66, 0x86, 0x06, 0xFB, 0x41, 0x26, 0xD0, 0xA9, 0xDD, 0x72, 0xAE, 0x7C, 0x52, 0xCC, 0x46, 0x12, 0x57, 0x95, 0xD3, 0xB4, 0x12, 0xDE, 0xD2, 0xEC, 0x44, 0xA3, 0xB7, 0x0A, 0x1C, 0xF3, 0x1A, 0xAD, 0xDE, 0x00, 0x90, 0x38, 0xB0, 0xE5, 0xE8, 0xAF, 0xCF, 0x42, 0x32, 0x66, 0x75, 0xAA, 0xA9, 0x40, 0x7D, 0x32, 0x7F, 0xED, 0x2F, 0x4A, 0xF9, 0x5B, 0xB4, 0xE6, 0x9D, 0x67, 0x16, 0xFC, 0xE3, 0xA9, 0xD2, 0xD0, 0x81, 0x4E, 0x44, 0xF9, 0x4B, 0x0C, 0x73, 0xB0, 0x6B, 0x7C, 0xB9, 0xF9, 0x2C, 0xF1, 0x90, 0x27, 0xB8, 0x5F, 0xB3, 0x87, 0xAC, 0x57, 0x8E, 0xEA, 0x9C, 0x83, 0xCA, 0xC7, 0x17, 0xFA, 0x29, 0x78, 0x7A, 0xAF, 0xAA, 0xFE, 0x69, 0x51, 0xA1, 0x9A, 0xD0, 0x06, 0xD6, 0x81, 0xA8, 0xE0, 0x54, 0x0A, 0x53, 0xD1, 0x4F, 0x63, 0x14, 0x02, 0xF5, 0x81, 0xB3, 0x35, 0x99, 0x6E, 0x2B, 0x7D, 0x1A, 0x8F, 0x1A, 0xE5, 0x3D, 0x4E, 0x36, 0x2D, 0x0C, 0x27, 0x05, 0x42, 0xD6, 0x36, 0xDE, 0xE1, 0x81, 0x2F, 0xA3, 0x73, 0xC8, 0xCB, 0xB3, 0x41, 0xAC, 0x23, 0xB9, 0xD8, 0xF9, 0x24, 0x67, 0x88, 0x9B, 0xEB, 0x86, 0x06, 0x24, 0xBD, 0xB9, 0xEE, 0xFB, 0xC2, 0xEC, 0xDF, 0x28, 0x62, 0xD8, 0x77, 0xBA, 0xB7, 0x87, 0x50, 0x77, 0x73, 0x70, 0xB5, 0x6F, 0x43, 0x97, 0x2D, 0x51, 0x7B, 0x03, 0x30, 0xCC, 0xCF, 0x14, 0xD7, 0xE6, 0xB9, 0xEE, 0x31, 0xA8, 0x56, 0xB9, 0x81, 0x87, 0xB6, 0xC4, 0x98, 0x25, 0x05, 0xEE, 0x2C, 0xE9, 0xA6, 0x49, 0xAC, 0x1A, 0xD1, 0x8D, 0x94, 0xD3, 0x24, 0xDB, 0x41, 0x10, 0xFE, 0x9A, 0x4E, 0xE0, 0xBC, 0xFF, 0xC0, 0x4C, 0x04, 0x0C, 0x7E, 0x44, 0xA6, 0x2C, 0x3E, 0x3F, 0x14, 0x8B, 0x3A, 0xF0, 0x40, 0x85, 0xE3, 0xA3, 0x66, 0xD0, 0x12, 0xB4, 0xB4, 0xB8, 0x48, 0xEF, 0x63, 0x9C, 0x44, 0x4A, 0x1C, 0x5D, 0x14, 0xCA, 0x97, 0xAD, 0xDF, 0xFD, 0x4D, 0x4B, 0x07, 0xCF, 0x88, 0xD6, 0xB0, 0x8D, 0x77, 0xE3, 0xA8, 0x70, 0x27, 0xF8, 0x2E, 0x7A, 0x77, 0xFD, 0x47, 0x81, 0x5F, 0x3B, 0xF1, 0xF9, 0x82, 0xFE, 0xBB, 0x8F, 0xCB, 0x88, 0x91, 0xC6, 0xBA, 0x6D, 0xEC, 0xC1, 0x86, 0x84, 0xDC, 0xE2, 0x90, 0xFA, 0xF0, 0x20, 0xBE, 0x57, 0x57, 0x4B, 0x39, 0xF3, 0xD3, 0xCB, 0x2D, 0x55, 0x5F, 0xF5, 0xB0, 0x53, 0x50, 0x38, 0x5C, 0x47, 0xD0, 0x40, 0x04, 0xE8, 0xFA, 0x99, 0xEC, 0x34, 0x49, 0xEF, 0x64, 0x1B, 0xFC, 0x3C, 0x9C, 0x6C, 0xC9, 0x96, 0xAE, 0x1F, 0x23, 0x3F, 0x52, 0x96, 0x9B, 0x94, 0x7C, 0x8B, 0x13, 0xC3, 0xA9, 0x88, 0x05, 0x14, 0x9B, 0x12, 0x67, 0x95, 0x47, 0xFB, 0xE2, 0x53, 0x58, 0x6F, 0x20, 0xB0, 0xDA, 0x1F, 0x82, 0x2A, 0x0B, 0x4B, 0x5B, 0xDE, 0x63, 0xA2, 0x35, 0x3B, 0x36, 0xB3, 0xBA, 0x11, 0x44, 0x3D, 0xAD, 0xC9, 0x37, 0xBC, 0x35, 0xEE, 0x61, 0xA5, 0x83, 0x77, 0xC0, 0x61, 0xBA, 0x1E, 0x0E, 0x82, 0x2D, 0xD1, 0xD4, 0x82, 0x46, 0x56, 0x06, 0x4E, 0x0E, 0x0E, 0x6C, 0xAE, 0x4A, 0x5C, 0xDE, 0xDB, 0xFB, 0xA8, 0xE9, 0x06, 0xC2, 0xAD, 0x77, 0xAC, 0x89, 0x06, 0xA6, 0xF1, 0xB2, 0x03, 0x7D, 0x1B, 0xFE, 0xCC, 0xA3, 0x35, 0x84, 0x46, 0x92, 0xC4, 0xFD, 0xC2, 0x97, 0x0D, 0xDE, 0xAE, 0xC4, 0x51, 0xF7, 0xDB, 0xDE, 0xB7, 0x99, 0x0F, 0xAC, 0x47, 0xBF, 0xDE, 0xCA, 0x88, 0x17, 0x86, 0x54, 0x7C, 0xAF, 0x3D, 0xE7, 0x7C, 0xD7, 0xBB, 0x20, 0x92, 0x38, 0xDA, 0x5D, 0xC7, 0x68, 0x51, 0x2F, 0x06, 0x53, 0x8E, 0x66, 0x26, 0x75, 0x33, 0x2B, 0xF8, 0x4D, 0xA9, 0x36, 0xA0, 0xD6, 0x15, 0x39, 0x3D, 0xC9, 0xC0, 0xAE, 0xD1, 0xA7, 0x8B, 0xA9, 0x43, 0x33, 0xA6, 0xF9, 0x6F, 0xB4, 0x0F, 0xD6, 0x80, 0x36, 0xEF, 0xEC, 0xEE, 0xB2, 0x94, 0x24, 0xDE, 0xCF, 0x5D, 0x5E, 0xFB, 0x93, 0xC9, 0x4A, 0xBD, 0x1E, 0xD7, 0x8E, 0x51, 0x1E, 0x0D, 0xB1, 0x11, 0x4B, 0xC3, 0x27, 0xFF, 0x1C, 0x60, 0x42, 0x1C, 0x9E, 0x0E, 0xE3, 0x4D, 0xBA, 0xB6, 0x70, 0xF7, 0xF0, 0xC7, 0xB3, 0x16, 0x97, 0xF8, 0x91, 0x36, 0x23, 0x2F, 0x0A, 0x29, 0xBE, 0x4B, 0x6D, 0x10, 0xDC, 0x95, 0x28, 0xB8, 0x41, 0x66, 0x2E, 0x21, 0x61, 0xAE, 0xB2, 0xDC, 0x19, 0xFB, 0x25, 0x92, 0xEC, 0x56, 0xB0, 0x30, 0x0C, 0x1B, 0xB3, 0x30, 0xE6, 0xAD, 0xD4, 0x6F, 0xAF, 0xBF, 0x68, 0xAE, 0xCC, 0xA0, 0xFA, 0x8F, 0x16, 0x00, 0x0D, 0xE1, 0x89, 0xFA, 0x59, 0x8A, 0x9B, 0xDD, 0x4A, 0xBC, 0x12, 0x04, 0xB1, 0xA1, 0x34, 0x6D, 0x70, 0x21, 0xC9, 0x87, 0x3C, 0x00, 0x78, 0xFA, 0x2B, 0x3A, 0xBD, 0x4A, 0xFE, 0x0D, 0x88, 0xE8, 0x95, 0xCB, 0x91, 0x1D, 0xEE, 0x7A, 0x76, 0xD1, 0x65, 0xF5, 0xCA, 0x07, 0xC7, 0x26, 0x7D, 0x23, 0x6F, 0xCD, 0xE2, 0xAE, 0xB7, 0x1F, 0xFF, 0xE7, 0x2E, 0x47, 0x23, 0xB0, 0x39, 0x55, 0x01, 0x9B, 0x25, 0x51, 0x08, 0x6F, 0xB6, 0xB1, 0x65, 0xD7, 0xD6, 0x36, 0x60, 0xED, 0x30, 0xD9, 0xD8, 0xDD, 0x0F, 0xF4, 0xFF, 0x31, 0xED, 0x29, 0x4C, 0x5E, 0x71, 0x58, 0xF9, 0x36, 0x70, 0x03, 0x57, 0x43, 0x68, 0xA4, 0xF6, 0x5B, 0x0B, 0x79, 0xD3, 0x40, 0xAB, 0x55, 0x2B, 0x6D, 0xC2, 0x4B, 0x45, 0xE8, 0xDF, 0x68, 0x68, 0xCE, 0x64, 0x07, 0x6B, 0xF3, 0xF0, 0xB0, 0x22, 0x54, 0xB4, 0x71, 0x86, 0xB6, 0x96, 0xA2, 0x1D, 0x88, 0x2E, 0x66, 0xEB, 0x24, 0x1F, 0x7A, 0x4D, 0x68, 0x8D, 0xEF, 0x3C, 0x02, 0x8A, 0x31, 0x1A, 0xBF, 0x43, 0xA5, 0x38, 0xEF, 0x4D, 0x3E, 0x56, 0xB7, 0x18, 0x92, 0x6D, 0xDA, 0x8E, 0x9B, 0xA4, 0xF4, 0x93, 0xDC, 0xE6, 0x05, 0x97, 0x7D, 0x36, 0xCD, 0x02, 0xC5, 0x9C, 0x13, 0x49, 0x3A, 0xD1, 0xD5, 0xE6, 0xAB, 0xC2, 0xC5, 0x64, 0x6F, 0x82, 0xE1, 0xCE, 0xDB, 0x49, 0x39, 0x7A, 0x38, 0xCB, 0xF6, 0xD9, 0x2D, 0x69, 0xBA, 0x6A, 0x64, 0xF0, 0x32, 0xC4, 0x8C, 0x89, 0x38, 0xF5, 0x29, 0x80, 0x2C, 0x8A, 0x52, 0x72, 0x31, 0x7C, 0x48, 0xA4, 0xDE, 0xC3, 0x79, 0x0C, 0x6E, 0xE1, 0x7E, 0x16, 0xF8, 0x0B, 0x45, 0xF3, 0x59, 0x19, 0x87, 0x9D, 0x15, 0x35, 0x01, 0xE4, 0x79, 0x80, 0x2B, 0xA7, 0x6F, 0xB7, 0x14, 0xCD, 0x5C, 0xAE, 0xE3, 0x4D, 0xB1, 0xCA, 0x19, 0x07, 0xB0, 0x01, 0xCE, 0x26, 0x27, 0x2B, 0xB1, 0x56, 0xAC, 0x65, 0xA2, 0xB9, 0xC0, 0xD0, 0x78, 0x5D, 0xAA, 0xFB, 0x2C, 0x5A, 0xB1, 0x0B, 0x07, 0xDB, 0x57, 0xB7, 0x9A, 0x0C, 0x20, 0x2B, 0xC1, 0xAC, 0x9F, 0xF6, 0xD3, 0x8A, 0xF0, 0xA1, 0xCD, 0xEF, 0x92, 0x59, 0x2D, 0x23, 0x69, 0x41, 0x25, 0x00, 0x46, 0x3D, 0x68, 0x3F, 0x24, 0x74, 0x0D, 0x37, 0x14, 0x0F, 0x89, 0x6D, 0xDE, 0x12, 0x68, 0xA7, 0xD4, 0x78, 0x5B, 0x3F, 0x1A, 0xA8, 0xAC, 0x07, 0x39, 0x8D, 0x5E, 0xDE, 0xD6, 0xA6, 0x21, 0xCC, 0xFC, 0x88, 0x81, 0xAA, 0x8A, 0x61, 0xCE, 0x3F, 0xA3, 0x6A, 0x58, 0x8A, 0xBF, 0x46, 0xCC, 0x49, 0x32, 0xD0, 0x79, 0xFA, 0x7C, 0x4D, 0xFF, 0x19, 0x83, 0x45, 0x6E, 0xFA, 0x55, 0xFE, 0x8B, 0x5A, 0xBA, 0xA2, 0x66, 0x65, 0xDC, 0xE0, 0x59, 0x52, 0xE6, 0xDB, 0x47, 0x9F, 0xEE, 0x7F, 0xC5, 0x40, 0x0C, 0x99, 0x79, 0x44, 0xC7, 0x85, 0xCC, 0x92, 0xF3, 0x44, 0x5B, 0x08, 0x6E, 0xA6, 0x77, 0x08, 0x59, 0x97, 0x8D, 0x3C, 0xEF, 0xCA, 0x3F, 0xED, 0x8D, 0x00, 0xFD, 0x75, 0xC0, 0x10, 0xF6, 0x35, 0xA9, 0x3C, 0x59, 0xD7, 0x7F, 0xF7, 0xA1, 0xA3, 0x48, 0xC8, 0x8A, 0x0D, 0x22, 0x31, 0xDD, 0x0A, 0x33, 0x96, 0xF4, 0xF8, 0x74, 0x5F, 0x9A, 0x9D, 0x9B, 0xCF, 0x8A, 0xCF, 0x26, 0xD9, 0xD8, 0x66, 0xFE, 0x74, 0x3A, 0xAD, 0x33, 0x39, 0xA9, 0xCB, 0x01, 0xFC, 0xA4, 0xA8, 0xA3, 0xB4, 0x95, 0x21, 0xDE, 0xDA, 0x1B, 0x3A, 0x78, 0xFA, 0x8C, 0xF6, 0x14, 0x42, 0xD0, 0xB4, 0xAA, 0x07, 0xA1, 0x0C, 0xA5, 0xA0, 0x18, 0xFC, 0xB4, 0x32, 0x04, 0xC4, 0x87, 0xC0, 0x2D, 0x70, 0xD7, 0x33, 0xC8, 0x5D, 0x70, 0xE5, 0x9F, 0x88, 0x8F, 0x0B, 0xA4, 0x76, 0x3E, 0x1E, 0xE7, 0x5C, 0x4E, 0x87, 0xD6, 0xE1, 0x1B, 0x6F, 0xE5, 0x66, 0x30, 0xD0, 0x3B, 0x7E, 0x60, 0x43, 0x97, 0x92, 0x14, 0xA4, 0x77, 0x80, 0xF4, 0xBB, 0x8E, 0xB4, 0x49, 0x9F, 0xF5, 0x55, 0xE9, 0x32, 0x9B, 0x57, 0x9E, 0x16, 0xC3, 0x81, 0x85, 0xD3, 0xFA, 0x79, 0x63, 0xD4, 0x92, 0xA9, 0xAC, 0x01, 0x12, 0xFE, 0xAC, 0xC5, 0x3A, 0xB6, 0x13, 0xB5, 0x7F, 0xEC, 0x82, 0x76, 0xC6, 0x4C, 0x57, 0xBF, 0xE7, 0xFB, 0x61, 0x14, 0x97, 0x0A, 0x85, 0x88, 0x8F, 0x81, 0x78, 0x41, 0x89, 0x70, 0x90, 0x89, 0x06, 0x83, 0x54, 0xBB, 0x32, 0x66, 0x1C, 0x8D, 0xD2, 0x39, 0x62, 0x2D, 0xB5, 0xF6, 0xBD, 0xD0, 0xA0, 0x65, 0xDC, 0x93, 0x44, 0x1A, 0x5F, 0x93, 0xE7, 0x6D, 0xB6, 0x3E, 0x77, 0x15, 0xE1, 0xE2, 0xDC, 0x16, 0x33, 0xF9, 0xFC, 0xB0, 0x10, 0x60, 0xB6, 0x6E, 0x1E, 0xD9, 0xEC, 0x26, 0x89, 0x63, 0x22, 0x28, 0xE0, 0xAD, 0xC8, 0xB1, 0xB6, 0xBD, 0xBC, 0x86, 0x22, 0x95, 0x72, 0x39, 0x74, 0x03, 0xE7, 0xF5, 0xED, 0x17, 0xE1, 0xFD, 0xCA, 0xD5, 0x90, 0xDB, 0x99, 0x08, 0xE9, 0xE9, 0xB7, 0xE1, 0x8E, 0x9E, 0x02, 0xD5, 0x4F, 0xB5, 0x45, 0x5C, 0x19, 0x95, 0x9B, 0xC9, 0xA5, 0x92, 0xB8, 0x34, 0xCF, 0xF6, 0x40, 0x54, 0xE5, 0x83, 0x49, 0x32, 0xC8, 0xFC, 0x1B, 0x75, 0x38, 0x0C, 0x02, 0x9E, 0xD6, 0x52, 0xC5, 0x4C, 0xBC, 0x48, 0xC8, 0x27, 0xC3, 0x7B, 0x39, 0x07, 0x99, 0xA4, 0x0F, 0x8A, 0x25, 0x41, 0x29, 0xE4, 0x64, 0xAB, 0xC7, 0xB7, 0xC6, 0x44, 0x5D, 0xDE, 0xDF, 0xCB, 0xE5, 0xD1, 0xFE, 0x9D, 0x14, 0xD2, 0x99, 0x75, 0x9C, 0xD7, 0xCA, 0xA3, 0x28, 0x4C, 0x1D, 0x62, 0x9B, 0xD7, 0x71, 0x68, 0xDB, 0x2F, 0x70, 0xB2, 0x10, 0x9A, 0x01, 0xD4, 0x35, 0x74, 0xCF, 0x60, 0xE8, 0x77, 0x89, 0x6E, 0xBF, 0xC4, 0x5A, 0x79, 0xC6, 0xF4, 0xC6, 0x26, 0xCF, 0x1F, 0xE0, 0x55, 0xB0, 0x05, 0x55, 0x6A, 0x15, 0xD5, 0xEB, 0xE7, 0xB2, 0x61, 0xC5, 0x9A, 0x98, 0xB9, 0x77, 0x62, 0xFB, 0x46, 0xC4, 0xBC, 0x6B, 0x9F, 0xF9, 0x83, 0x7D, 0x83, 0x52, 0xCB, 0x6D, 0x42, 0x57, 0x87, 0xEB, 0x45, 0xEA, 0xA5, 0xAE, 0x1D, 0x16, 0x03, 0xC8, 0x1E, 0xDE, 0xC3, 0x20, 0x76, 0xA9, 0xBF, 0xA7, 0x05, 0x20, 0x1A, 0x56, 0xD6, 0xF1, 0x37, 0x74, 0x65, 0x3C, 0xC0, 0xA2, 0x01, 0x34, 0xF4, 0x99, 0xF0, 0x65, 0x47, 0x06, 0x9D, 0x0A, 0x07, 0xA3, 0xD4, 0xCA, 0xA5, 0x0A, 0x8F, 0x55, 0x62, 0x04, 0x93, 0x7A, 0x1D, 0xA9, 0x45, 0xFE, 0xB4, 0x5C, 0xEF, 0x86, 0x64, 0x70, 0x21, 0x51, 0xB4, 0x54, 0xDC, 0xFB, 0x5B, 0x94, 0xD0, 0x3E, 0x4F, 0x7F, 0xB4, 0x4A, 0xD5, 0xA8, 0x84, 0xA0, 0x7F, 0xA5, 0xEF, 0x41, 0x3B, 0x78, 0x8B, 0x00, 0x31, 0xA5, 0xDF, 0xE3, 0xDB, 0xF1, 0x0A, 0x90, 0x97, 0xA8, 0xA7, 0x62, 0x71, 0xF4, 0xD7, 0x23, 0xC7, 0x03, 0xB0, 0x39, 0x35, 0xDC, 0x66, 0x18, 0x81, 0x4A, 0x73, 0x49, 0x2E, 0x78, 0xD1, 0x8A, 0x33, 0x46, 0x59, 0x83, 0x25, 0xA6, 0xDD, 0xFA, 0x9E, 0x08, 0x98, 0x79, 0x2D, 0x64, 0x36, 0xFC, 0x5C, 0x4C, 0xE4, 0xAF, 0x55, 0x1D, 0xDD, 0xE1, 0x81, 0x5B, 0x8B, 0xB9, 0x13, 0x31, 0xB3, 0x2D, 0x44, 0x0E, 0xD6, 0xB6, 0xD3, 0xED, 0xEE, 0xED, 0x79, 0xFC, 0x93, 0x1C, 0x07, 0xAB, 0x67, 0xF9, 0x9E, 0xDC, 0x0A, 0x86, 0x0E, 0x35, 0x59, 0x58, 0xD8, 0x87, 0x32, 0x1A, 0x99, 0x67, 0xC8, 0xF8, 0x41, 0x2B, 0x49, 0xEE, 0xC1, 0xA2, 0x9E, 0xD6, 0xD4, 0xED, 0x6E, 0x1C, 0x09, 0xFD, 0xC0, 0xE7, 0x11, 0x0B, 0xCF, 0x4E, 0xA9, 0xB3, 0xD5, 0xCE, 0x80, 0x4D, 0x5F, 0x4D, 0xF9, 0xF0, 0x6B, 0x2E, 0xE6, 0xAF, 0xD6, 0x94, 0x50, 0x0A, 0xF5, 0x7E, 0x9B, 0x77, 0x6D, 0x4E, 0x90, 0x47, 0x3D, 0x62, 0xCD, 0x5F, 0x28, 0xD4, 0xC6, 0xC9, 0xD5, 0x28, 0xCF, 0x1B, 0x51, 0xF7, 0x34, 0x93, 0xFE, 0xD8, 0x44, 0xCB, 0xFB, 0x68, 0xA2, 0x72, 0x6D, 0x9D, 0x05, 0x52, 0xDD, 0x9A, 0xD3, 0x4B, 0x4A, 0x7A, 0x28, 0xB5, 0x0E, 0x37, 0xE2, 0xE6, 0xFB, 0xF8, 0x58, 0xA4, 0x28, 0x19, 0x46, 0xC5, 0x86, 0x12, 0xA8, 0x85, 0x5B, 0xE8, 0x04, 0xBC, 0x8A, 0x82, 0x7C, 0x07, 0xCB, 0x54, 0xBF, 0xC2, 0x4D, 0x71, 0x3B, 0x0D, 0x97, 0xCF, 0x78, 0x24, 0x2C, 0x34, 0xA4, 0x10, 0xA3, 0x7A, 0x97, 0xBF, 0xFC, 0xFA, 0x4C, 0xFB, 0xDC, 0x35, 0xA7, 0x9D, 0x6F, 0xA1, 0xD7, 0x5B, 0x62, 0x1B, 0x08, 0xF5, 0x46, 0x4B, 0x43, 0x8F, 0xFC, 0xC3, 0x6E, 0x62, 0xDC, 0xB0, 0x8A, 0xC4, 0xF8, 0xC6, 0x16, 0xBA, 0xD9, 0xF7, 0xED, 0x45, 0xEC, 0xDD, 0x3E, 0xFA, 0xD3, 0x21, 0x40, 0x4F, 0x1A, 0xEF, 0x61, 0x88, 0x23, 0x0A, 0x6A, 0x04, 0x17, 0xA5, 0x3C, 0xB1, 0x72, 0x9D, 0x9C, 0x83, 0xF0, 0x2E, 0x23, 0xE8, 0x1D, 0x33, 0x75, 0xCA, 0x00, 0xF8, 0xE9, 0x85, 0x62, 0x24, 0xD4, 0xB3, 0xFD, 0xF0, 0x5B, 0xBA, 0x74, 0x22, 0xF0, 0x3D, 0x15, 0x15, 0xFE, 0xF9, 0x12, 0x67, 0xDA, 0x16, 0x68, 0x9D, 0x2B, 0xD1, 0x6C, 0x53, 0xFC, 0x36, 0xB3, 0x76, 0x8E, 0xF5, 0xC5, 0x61, 0xC5, 0xE3, 0x2B, 0xE8, 0x2F, 0xDD, 0x33, 0xB1, 0xA1, 0x08, 0x44, 0x7A, 0x57, 0xC8, 0x51, 0x78, 0x22, 0x13, 0xE0, 0x67, 0x27, 0x6F, 0x68, 0x6D, 0x5C, 0x84, 0x5B, 0x13, 0xEA, 0xFD, 0xBE, 0x0D, 0xC2, 0x6D, 0x18, 0x6B, 0xE5, 0xB3, 0xA3, 0x15, 0x29, 0xD4, 0x06, 0x62, 0xBA, 0xBD, 0x30, 0x4B, 0x5C, 0x86, 0x3E, 0x33, 0xAD, 0x76, 0x18, 0x73, 0xCD, 0x58, 0xD0, 0x4E, 0xA9, 0x16, 0xD9, 0x21, 0x5E, 0x6A, 0xDB, 0x86, 0xA0, 0x8F, 0x4E, 0x97, 0x0F, 0xB5, 0x0A, 0x6A, 0xE0, 0xE3, 0x05, 0x21, 0x82, 0x1A, 0xFD, 0x2E, 0x21, 0x9C, 0x9A, 0x0A, 0xFD, 0x4E, 0x97, 0x08, 0xF4, 0x58, 0x87, 0x68, 0x88, 0x4F, 0x93, 0x2F, 0xE3, 0x4A, 0x86, 0x60, 0xDA, 0x70, 0xC8, 0xDE, 0x11, 0xFF, 0x0C, 0xD1, 0x56, 0xDD, 0xEE, 0x6C, 0x43, 0xBE, 0x97, 0x9A, 0xA8, 0x12, 0xD9, 0x10, 0xDC, 0xFC, 0x3D, 0x25, 0x58, 0x69, 0x71, 0xD5, 0x48, 0x2D, 0x7B, 0x3C, 0xDE, 0x2B, 0x47, 0x24, 0x6B, 0x5E, 0x6A, 0x06, 0x9E, 0xDA, 0xD6, 0xBA, 0x71, 0x3A, 0x92, 0xA8, 0x5C, 0xB7, 0xEF, 0x22, 0xE2, 0xD8, 0xF2, 0xE4, 0xA1, 0xB1, 0x78, 0xB7, 0xAF, 0x87, 0xD6, 0xB0, 0xE2, 0xD8, 0x4F, 0x13, 0x0D, 0x0C, 0xCA, 0xB3, 0x5D, 0xA0, 0x1F, 0x31, 0xFB, 0x4F, 0xF6, 0x08, 0x57, 0x59, 0xAB, 0xD2, 0x8B, 0x7F, 0xBE, 0x73, 0xD2, 0xDE, 0xE6, 0x27, 0x1B, 0x76, 0x52, 0x92, 0x75, 0x99, 0x39, 0xDA, 0x53, 0x28, 0xC0, 0xFF, 0x9D, 0x6F, 0x4E, 0xC9, 0xC7, 0x11, 0xCA, 0x74, 0x90, 0x72, 0x47, 0x09, 0xE8, 0xBB, 0x4B, 0x60, 0xEA, 0xA2, 0x98, 0x74, 0xDB, 0x65, 0xEF, 0x30, 0xDD, 0xDC, 0x17, 0x44, 0x7A, 0xD7, 0x20, 0x65, 0x6D, 0x43, 0xB3, 0xBB, 0xC6, 0x5F, 0x5A, 0x98, 0xC5, 0xD4, 0x9F, 0x7B, 0x5C, 0x1B, 0xAD, 0x0F, 0x9B, 0x18, 0x3A, 0x50, 0x27, 0xF3, 0x30, 0xC4, 0xDE, 0x1F, 0xDA, 0xC4, 0x09, 0xB4, 0x60, 0x28, 0xA4, 0x01, 0x35, 0x0F, 0x4B, 0xD0, 0xEF, 0x0F, 0x12, 0x70, 0x7B, 0x5F, 0x0F, 0xB4, 0x4C, 0xBD, 0xF3, 0x8A, 0x89, 0x2D, 0xB6, 0x91, 0xF7, 0xDB, 0x3A, 0x4E, 0xC8, 0x00, 0xFD, 0xC5, 0x05, 0xA7, 0xD7, 0xCD, 0x49, 0x9E, 0x20, 0x3B, 0xBC, 0xE6, 0x77, 0x92, 0x41, 0x67, 0xE1, 0x79, 0x46, 0x7F, 0x66, 0x70, 0xF1, 0x96, 0x47, 0x44, 0x42, 0x62, 0xBC, 0x8D, 0x77, 0x44, 0x38, 0x31, 0x88, 0x0D, 0xE2, 0x75, 0xF8, 0xCB, 0x27, 0xA4, 0x7C, 0xE0, 0x07, 0x56, 0xB5, 0xED, 0x98, 0x2F, 0x2B, 0x96, 0x9A, 0xAC, 0x48, 0x76, 0x00, 0x7C, 0x94, 0xF3, 0x51, 0x7B, 0x51, 0x1C, 0x7B, 0x48, 0x6F, 0x21, 0x7C, 0x29, 0x4F, 0xF8, 0x61, 0x14, 0xC1, 0xA0, 0xAD, 0x6A, 0x3A, 0x2C, 0xAF, 0x54, 0x55, 0x0C, 0x7D, 0x6B, 0xD1, 0x4A, 0xB6, 0xB3, 0xEC, 0xBE, 0x04, 0xA2, 0x06, 0xC8, 0x36, 0x1F, 0x8F, 0x38, 0xDE, 0x44, 0xED, 0xB1, 0xD3, 0x71, 0x09, 0x74, 0xC6, 0xF7, 0x15, 0x17, 0x10, 0xD8, 0xBF, 0x39, 0xCF, 0x0D, 0x85, 0xA3, 0x8C, 0x38, 0x60, 0x75, 0x6C, 0xED, 0xFB, 0x36, 0x24, 0x83, 0xD2, 0xB3, 0xA0, 0x3E, 0xB3, 0xAA, 0x22, 0x03, 0x1B, 0x86, 0x96, 0x41, 0x8C, 0x3D, 0x13, 0x63, 0x8A, 0x5C, 0xFF, 0xB7, 0x1F, 0xA7, 0x3B, 0x8C, 0x15, 0xAF, 0x19, 0x3E, 0x2F, 0x6C, 0xE8, 0x61, 0x7E, 0xF7, 0xF2, 0xF7, 0x2A, 0x50, 0xBC, 0x6F, 0x26, 0x52, 0x9D, 0x70, 0x2D, 0xBC, 0xA9, 0x46, 0xBF, 0x85, 0x5C, 0x2D, 0x49, 0xB7, 0x30, 0x9B, 0x82, 0x81, 0x55, 0x4E, 0x9C, 0x6E, 0xA1, 0xE3, 0x4E, 0x62, 0xE8, 0x2C, 0x78, 0xC4, 0x4C, 0x17, 0x5B, 0x88, 0x49, 0xB1, 0x2C, 0x88, 0xAC, 0xF1, 0xCD, 0x9D, 0xBC, 0x6D, 0xFD, 0xE0, 0xC8, 0xAC, 0x5C, 0x15, 0xC7, 0x3B, 0x28, 0x34, 0xA2, 0x32, 0x0C, 0x31, 0xE7, 0x84, 0xE6, 0xE7, 0x9F, 0x7F, 0x4B, 0xB0, 0x07, 0x77, 0x4B, 0x6D, 0x30, 0x76, 0x8D, 0x38, 0xF7, 0xFE, 0x3B, 0x5C, 0x08, 0xAB, 0x06, 0x53, 0x2F, 0x89, 0x66, 0x09, 0xAC, 0x43, 0x9B, 0xDC, 0x13, 0x33, 0xAF, 0x8D, 0xBF, 0xD3, 0x2E, 0xE8, 0x95, 0x0D, 0x60, 0x9F, 0xF8, 0x67, 0x92, 0xEC, 0x85, 0xC4, 0x6D, 0x94, 0xE8, 0xD1, 0x22, 0x5B, 0xB5, 0x23, 0x2E, 0x5D, 0x03, 0x73, 0x7B, 0xF4, 0xFF, 0x31, 0x92, 0xCA, 0xDA, 0xB1, 0x94, 0xE8, 0x47, 0xFD, 0x1B, 0x2E, 0x74, 0x25, 0xB9, 0x7A, 0x6B, 0xAA, 0x1F, 0xDF, 0xDA, 0x9C, 0xE3, 0x07, 0xA1, 0x1D, 0xAA, 0x45, 0x90, 0xB9, 0x02, 0x86, 0xE0, 0x25, 0x3C, 0xA8, 0x5C, 0xA1, 0x1C, 0x2C, 0x49, 0xC8, 0x9D, 0x08, 0x5F, 0x11, 0xB9, 0xDD, 0x6C, 0x0F, 0x5D, 0x07, 0x28, 0x0F, 0x17, 0x18, 0xAE, 0xD5, 0xEC, 0x07, 0x4E, 0xE3, 0xD9, 0xEC, 0xE9, 0xA5, 0x96, 0x5C, 0x4F, 0x5D, 0x3A, 0xF0, 0xA3, 0x20, 0xB6, 0x67, 0xCE, 0xF1, 0x12, 0x04, 0xED, 0x90, 0x04, 0xCB, 0x19, 0xF8, 0xE5, 0x62, 0x6C, 0xEB, 0x31, 0x39, 0x9B, 0x03, 0xA7, 0x35, 0x34, 0x33, 0xD2, 0xAC, 0x97, 0x0C, 0x53, 0xAE, 0x02, 0x81, 0xD1, 0xE7, 0x22, 0xA8, 0x29, 0x2F, 0xC5, 0x18, 0x8D, 0x3C, 0x72, 0x53, 0x4E, 0x58, 0x21, 0x84, 0x10, 0x98, 0xDB, 0xE9, 0x85, 0xCF, 0x9B, 0xC0, 0xA8, 0x0B, 0xF3, 0x69, 0x1C, 0x38, 0xE0, 0x5E, 0xED, 0xF4, 0x8C, 0x4F, 0xC2, 0xC8, 0x33, 0x0E, 0xD8, 0x7F, 0x36, 0xA3, 0xB4, 0x27, 0xEE, 0xD9, 0x74, 0x0C, 0x4B, 0x33, 0xE1, 0xEB, 0xDB, 0xF9, 0x34, 0x37, 0xBD, 0xE7, 0xF2, 0x7A, 0xA3, 0x8D, 0xF1, 0xC0, 0x2F, 0xF3, 0xF7, 0x91, 0x62, 0x0F, 0x48, 0x49, 0x7F, 0x08, 0x70, 0xF3, 0xCC, 0xB5, 0xCE, 0x8B, 0x08, 0xC4, 0xC4, 0xD7, 0x16, 0x4A, 0xB7, 0xE2, 0x5A, 0x7D, 0xAF, 0x56, 0xB9, 0x72, 0xB3, 0x4A, 0xD0, 0x99, 0x01, 0x53, 0x3D, 0xC2, 0xB2, 0x27, 0x8E, 0x5B, 0x7A, 0x72, 0xF9, 0xF3, 0xDE, 0x22, 0x9B, 0x38, 0x35, 0xCF, 0x7E, 0xDA, 0x18, 0x20, 0x06, 0x58, 0x29, 0x76, 0xAA, 0x00, 0x32, 0x7F, 0x94, 0x61, 0xF6, 0xC3, 0xC0, 0x2E, 0xD1, 0xBD, 0xAA, 0x28, 0x73, 0x53, 0x4F, 0x22, 0xA3, 0x19, 0xF3, 0x68, 0xFC, 0xEC, 0x25, 0x03, 0x7A, 0x96, 0xB9, 0x37, 0xEF, 0x58, 0x31, 0x95, 0x41, 0xDF, 0x98, 0x13, 0x6E, 0xA0, 0xB5, 0xBF, 0xD2, 0xAA, 0x99, 0x0D, 0xFD, 0xFF, 0xFF, 0xC0, 0x75, 0x08, 0xA0, 0xEC, 0x52, 0xA7, 0x41, 0x01, 0xDA, 0x31, 0xD6, 0xD4, 0x34, 0x27, 0xFF, 0xB4, 0x80, 0x8E, 0xE0, 0xCC, 0x75, 0xA6, 0xCB, 0x58, 0xCE, 0x4D, 0x5A, 0x89, 0xC9, 0x9E, 0xA2, 0xD4, 0xDE, 0xB0, 0x34, 0xF1, 0x89, 0x6C, 0xEE, 0x1D, 0xA5, 0xCF, 0xC5, 0xF2, 0x8B, 0xEF, 0x20, 0x41, 0xE6, 0x22, 0xA6, 0x08, 0x35, 0xD3, 0x48, 0x5B, 0xD1, 0x95, 0x6A, 0x6D, 0x71, 0xEF, 0xB6, 0x85, 0x38, 0xE0, 0x30, 0x0E, 0x6F, 0xEF, 0x2D, 0x28, 0xE2, 0xE0, 0x48, 0x3C, 0x83, 0x33, 0xCB, 0x80, 0x82, 0x35, 0xEA, 0xB9, 0x06, 0x6F, 0xDB, 0x88, 0x5B, 0x00, 0xD0, 0xBA, 0x7B, 0xEC, 0x77, 0x52, 0x92, 0x03, 0x50, 0x80, 0x2A, 0x97, 0x3D, 0x2B, 0x30, 0xEA, 0x5E, 0x4B, 0x23, 0x88, 0xE2, 0x4E, 0xA6, 0xF0, 0x34, 0x84, 0xBA, 0x79, 0xCC, 0x08, 0x60, 0xF9, 0x4E, 0x2C, 0x2E, 0x9D, 0xAE, 0x6C, 0x05, 0xD9, 0x6D, 0x34, 0x04, 0x38, 0x8A, 0x63, 0xC4, 0xD6, 0x6C, 0x0A, 0xB9, 0x6C, 0x5C, 0xFA, 0x16, 0x1E, 0x5E, 0x06, 0x68, 0x2D, 0x55, 0xF7, 0x21, 0x68, 0xE2, 0x88, 0x9D, 0xA2, 0xD2, 0x3B, 0xC2, 0xFE, 0x59, 0xBA, 0x6F, 0xFD, 0xB6, 0x47, 0xEE, 0x61, 0x57, 0x75, 0x06, 0xE3, 0x7F, 0x94, 0x53, 0x0F, 0x2E, 0x80, 0x32, 0x68, 0xFC, 0x2B, 0x18, 0xAC, 0x18, 0x70, 0x9F, 0xB0, 0x80, 0x92, 0x44, 0xA5, 0xBC, 0x6B, 0x86, 0xE6, 0xB1, 0x60, 0x83, 0x34, 0xD3, 0x47, 0x98, 0x34, 0x4D, 0xE2, 0x4A, 0x3C, 0x07, 0xEF, 0xD5, 0x63, 0x95, 0x51, 0x9D, 0x09, 0xB3, 0xEF, 0xB0, 0xB2, 0x6B, 0x90, 0x67, 0xBF, 0xD5, 0x57, 0xEB, 0x07, 0x21, 0x5C, 0x90, 0x3D, 0x3B, 0x8D, 0xF7, 0x58, 0x11, 0x0F, 0x13, 0x95, 0x1B, 0x9B, 0x69, 0x14, 0xA2, 0x75, 0xB3, 0x25, 0x34, 0x02, 0x9F, 0x07, 0x73, 0x6A, 0x0B, 0xC3, 0xFA, 0xD9, 0xB1, 0x76, 0x91, 0xE9, 0xE6, 0x4C, 0x43, 0x30, 0x04, 0x2B, 0x02, 0x32, 0x88, 0xEC, 0xAD, 0x09, 0x44, 0x5F, 0x1B, 0x28, 0x58, 0xEE, 0x2B, 0x5A, 0x7E, 0x9C, 0xB7, 0x82, 0x28, 0x54, 0x05, 0xE7, 0x0F, 0x62, 0x63, 0xE0, 0x16, 0x46, 0x42, 0x7B, 0x2B, 0x49, 0x9B, 0x0B, 0x78, 0x70, 0x06, 0xB5, 0x1D, 0xF6, 0x24, 0x3F, 0x30, 0xF0, 0x6F, 0x2F, 0x52, 0xF0, 0x65, 0x24, 0x11, 0x4A, 0x6D, 0x44, 0x58, 0x16, 0x3D, 0x75, 0xBF, 0xB2, 0xD0, 0x34, 0xB9, 0xA4, 0xF0, 0x9F, 0x44, 0xB8, 0xB6, 0xBE, 0x60, 0x05, 0x7C, 0x32, 0x84, 0xD3, 0x83, 0xC9, 0x36, 0xA5, 0x26, 0x31, 0xEB, 0xB0, 0xF1, 0xA5, 0xDB, 0xCC, 0xE8, 0x8D, 0x4F, 0xB0, 0x73, 0x0D, 0xFB, 0xEC, 0xD2, 0x55, 0xBA, 0x3E, 0xC6, 0x9F, 0x4F, 0xF0, 0x9E, 0x3B, 0xC5, 0x7B, 0xE2, 0x54, 0x40, 0x1F, 0x75, 0xF5, 0x44, 0xDD, 0x03, 0x0C, 0xD9, 0x26, 0xD7, 0xA6, 0x34, 0xC4, 0x32, 0x3D, 0xC8, 0x45, 0x27, 0x0B, 0xBB, 0x76, 0x56, 0x9B, 0xC4, 0xBF, 0x48, 0x14, 0x4A, 0xA3, 0x1F, 0x5A, 0xBF, 0x4D, 0x39, 0xF1, 0x3C, 0x2C, 0x9D, 0x29, 0x3B, 0x85, 0x83, 0x16, 0xE0, 0x02, 0xE5, 0x75, 0x1F, 0xFA, 0xA8, 0x2A, 0x3B, 0x5D, 0x91, 0xC9, 0xBD, 0x55, 0x37, 0xDE, 0x8C, 0xBC, 0x3B, 0xF5, 0xA7, 0x88, 0x05, 0x53, 0x60, 0x14, 0x82, 0x19, 0xEA, 0x94, 0x14, 0xA6, 0x21, 0x10, 0xAE, 0x75, 0x5E, 0xE4, 0xF2, 0x22, 0x38, 0xE2, 0x8A, 0xB2, 0x8F, 0xEC, 0x53, 0x3B, 0x63, 0x06, 0xE0, 0x3C, 0xDF, 0x09, 0xDA, 0xD3, 0xCC, 0x41, 0x08, 0xA7, 0xD8, 0xF2, 0x73, 0xC0, 0x57, 0xA2, 0x8C, 0x80, 0xD7, 0x70, 0x3E, 0x2A, 0xF4, 0xA0, 0x9C, 0x40, 0xD8, 0x01, 0x6F, 0x0B, 0x74, 0xF7, 0x80, 0x7C, 0xAC, 0xE9, 0xC3, 0x64, 0xCA, 0x23, 0xEA, 0x32, 0xCC, 0x66, 0x8D, 0x04, 0xB0, 0xA1, 0x09, 0x78, 0x0A, 0x8D, 0x3B, 0x67, 0x45, 0xEE, 0x3A, 0x16, 0x68, 0x38, 0x73, 0x39, 0xD5, 0xC8, 0x1B, 0xA5, 0xDB, 0x4B, 0xCD, 0x88, 0xFB, 0xC2, 0x42, 0x89, 0x1F, 0xEC, 0x34, 0x28, 0xDE, 0x69, 0x2A, 0x84, 0xD5, 0x2B, 0xA3, 0xC0, 0x08, 0xEA, 0x7E, 0x8C, 0x05, 0x27, 0x73, 0x7C, 0xC2, 0xDE, 0x74, 0x96, 0x31, 0xAA, 0x14, 0x8C, 0xF5, 0x02, 0xF3, 0x36, 0x8E, 0x16, 0xF2, 0xFC, 0xE2, 0x8C, 0x16, 0xB0, 0x69, 0x21, 0x29, 0x3E, 0xA3, 0xAB, 0x03, 0x51, 0x70, 0x60, 0x1B, 0xD8, 0x94, 0xB8, 0x10, 0xEB, 0x3C, 0x43, 0x27, 0x44, 0x37, 0xD2, 0xE5, 0x97, 0x62, 0x46, 0x8C, 0xD0, 0xD4, 0x0B, 0xDF, 0xC0, 0xF0, 0x0E, 0x8C, 0xEB, 0xBF, 0xB0, 0xE2, 0x28, 0xE6, 0xEF, 0x80, 0x4A, 0x8D, 0x12, 0x46, 0xC9, 0x7B, 0x1D, 0x88, 0xCC, 0x47, 0x7B, 0x5F, 0xB9, 0xDF, 0x5E, 0x4E, 0x7B, 0x51, 0xAD, 0x68, 0x63, 0x75, 0xE4, 0x7F, 0xB1, 0x62, 0x0D, 0x58, 0x71, 0xF1, 0x92, 0x5B, 0xC7, 0xDE, 0xA9, 0xB8, 0x4F, 0x4B, 0xC6, 0xFB, 0xF5, 0xC5, 0xE1, 0xA1, 0x89, 0x02, 0x56, 0x6E, 0x2F, 0xC0, 0x59, 0x18, 0x60, 0xF4, 0xE5, 0x4C, 0x6D, 0x9A, 0x2B, 0x99, 0xE0, 0x8D, 0x04, 0x6E, 0x28, 0x97, 0x20, 0x97, 0x01, 0xFD, 0x6B, 0xE3, 0x68, 0xB4, 0xE9, 0x6F, 0x09, 0x63, 0x8F, 0x64, 0xD6, 0x7D, 0xDF, 0x4D, 0x3F, 0x96, 0x6C, 0x7B, 0x09, 0xD4, 0xD2, 0xC3, 0x09, 0x58, 0x7D, 0xED, 0xD8, 0x7C, 0xCA, 0x01, 0x44, 0x08, 0x3E, 0x10, 0x11, 0x81, 0xED, 0x38, 0x27, 0xB7, 0x6F, 0xAB, 0x11, 0x93, 0x88, 0x31, 0x1F, 0xDE, 0x2E, 0x35, 0xE2, 0x8D, 0x59, 0x6F, 0xBD, 0x78, 0x77, 0x26, 0xC7, 0x8D, 0x21, 0xE8, 0x2F, 0x0F, 0xC5, 0x9E, 0xB4, 0x55, 0x4C, 0x37, 0x2D, 0xF2, 0xA8, 0x15, 0x0C, 0x8F, 0x8B, 0x0F, 0xC3, 0xFA, 0xA6, 0xFF, 0x7B, 0xB0, 0x09, 0xB7, 0x3A, 0xB7, 0x94, 0x78, 0xDE, 0x99, 0xCC, 0x45, 0xBB, 0x5F, 0x42, 0xC4, 0xB9, 0xAF, 0x71, 0x36, 0xE9, 0x1A, 0xC9, 0x90, 0x67, 0xD2, 0x79, 0xF2, 0xEC, 0x4C, 0xD9, 0xA5, 0x10, 0x5A, 0x84, 0xF4, 0x04, 0x8C, 0xF6, 0xBC, 0x02, 0xA1, 0x90, 0xC3, 0xCE, 0x4B, 0xDB, 0x1F, 0x08, 0xB3, 0x4E, 0x2D, 0xF3, 0xE2, 0x20, 0x42, 0x81, 0xF3, 0x43, 0x9B, 0x98, 0x4A, 0x8C, 0x13, 0x1D, 0xAE, 0xD2, 0x76, 0xC3, 0x8F, 0x0D, 0x21, 0x52, 0xC1, 0x3B, 0x7F, 0x5A, 0x90, 0x28, 0x42, 0xCB, 0x92, 0xCE, 0x97, 0x9C, 0x9B, 0xAA, 0x26, 0xB6, 0x5F, 0x5F, 0x34, 0xDA, 0x9E, 0xD8, 0xBA, 0x4E, 0x7F, 0x7E, 0x6E, 0x29, 0xF1, 0x09, 0xF5, 0x92, 0x6A, 0xE4, 0x6D, 0xE6, 0xD8, 0xED, 0x28, 0x6F, 0xBB, 0x14, 0x6F, 0x64, 0x8A, 0x47, 0x4B, 0x61, 0xB6, 0x1F, 0x3E, 0x49, 0x4B, 0xC8, 0x3C, 0xD9, 0xEF, 0x08, 0x10, 0x31, 0x6F, 0xCA, 0x4E, 0x60, 0x20, 0x22, 0xD3, 0xDF, 0xB2, 0x14, 0x25, 0xBA, 0xD4, 0xD4, 0x82, 0xA0, 0xD2, 0xC7, 0x3E, 0x58, 0xFE, 0xBE, 0xAC, 0xEA, 0xC0, 0x80, 0x2F, 0x67, 0x43, 0xD2, 0x70, 0x4F, 0xAE, 0xE7, 0x4C, 0xF1, 0x73, 0x47, 0xC6, 0x71, 0x5A, 0xC7, 0x33, 0xCF, 0xC7, 0x27, 0x70, 0x6B, 0x56, 0xD2, 0xE8, 0x97, 0x0A, 0x17, 0x7C, 0x8E, 0x62, 0xEC, 0xAB, 0x15, 0x74, 0x9D, 0xF5, 0x91, 0x24, 0x0E, 0x35, 0x41, 0xAC, 0x1C, 0x36, 0xB8, 0x21, 0x35, 0xFA, 0xD0, 0x07, 0x16, 0x04, 0xA7, 0x67, 0x18, 0xFA, 0x73, 0xBB, 0x26, 0x78, 0xBB, 0x4D, 0xFE, 0x42, 0x45, 0x15, 0x6A, 0x75, 0x1A, 0x44, 0x45, 0x36, 0xFD, 0xB7, 0xCB, 0x77, 0x6B, 0xEB, 0x3C, 0xA6, 0x87, 0xD1, 0xD8, 0xE2, 0x1E, 0x48, 0x67, 0x59, 0xAC, 0x4D, 0xE6, 0xED, 0x91, 0x42, 0x70, 0xFC, 0x6C, 0x45, 0xD9, 0xFA, 0x34, 0x16, 0x14, 0x36, 0x3F, 0xD1, 0xEC, 0xB3, 0x4F, 0x5F, 0xCF, 0x81, 0x4C, 0xAA, 0x07, 0x4D, 0x49, 0x3B, 0x43, 0xA0, 0x9A, 0x48, 0x2B, 0xF1, 0x32, 0x93, 0xDE, 0x20, 0xA4, 0x27, 0x27, 0x7D, 0x63, 0xF2, 0x8B, 0x1B, 0xCC, 0x23, 0x03, 0xB5, 0x6A, 0x12, 0xF4, 0xA0, 0x16, 0xBE, 0x30, 0xF8, 0x81, 0x24, 0xF0, 0x85, 0x5C, 0x52, 0xD3, 0xAD, 0x56, 0x22, 0xCB, 0x6D, 0xD7, 0x22, 0x0A, 0x73, 0x0A, 0xBC, 0x94, 0xC7, 0xCB, 0xEB, 0xE8, 0x1E, 0x19, 0x7A, 0xE1, 0x7C, 0x53, 0x9B, 0x75, 0xE7, 0xC5, 0x9A, 0x96, 0x7F, 0x3C, 0x19, 0x3D, 0x31, 0x4F, 0x5F, 0xAF, 0x9D, 0xDC, 0x30, 0x6F, 0xEF, 0x69, 0x57, 0x3A, 0x1D, 0xA1, 0x5B, 0xFD, 0xED, 0xF0, 0x3B, 0x76, 0x80, 0x26, 0xEA, 0xFC, 0xFF, 0xA6, 0xBF, 0xDF, 0xD4, 0x5A, 0xDF, 0xC6, 0xB6, 0xB1, 0xD0, 0xB3, 0x61, 0x99, 0xFC, 0xA4, 0xA2, 0x55, 0x00, 0x9F, 0x85, 0xE0, 0x43, 0x23, 0xC5, 0xD6, 0xB6, 0x88, 0x1D, 0x16, 0xFE, 0x74, 0xB4, 0x39, 0x52, 0xD6, 0x56, 0xB7, 0x56, 0x0B, 0xBA, 0x76, 0xEB, 0x40, 0xD5, 0xD5, 0xC7, 0x7D, 0x70, 0xD2, 0xC9, 0xE8, 0x98, 0xF8, 0xA9, 0xD5, 0x6F, 0x7B, 0x09, 0x4C, 0x70, 0x8B, 0x53, 0x53, 0x97, 0x75, 0x96, 0xD2, 0x7B, 0x9E, 0x57, 0xC9, 0x2D, 0x08, 0xDD, 0xF4, 0xA9, 0x77, 0x8D, 0x75, 0x5A, 0x34, 0xEA, 0xF6, 0xD6, 0xC1, 0xF4, 0x6F, 0x08, 0xBE, 0xF3, 0x52, 0xEF, 0x45, 0xB1, 0x19, 0xA9, 0x08, 0xE6, 0x97, 0x22, 0x77, 0xE3, 0x06, 0x25, 0xF2, 0x03, 0xD2, 0x22, 0xD0, 0xCD, 0x73, 0xFB, 0x01, 0x15, 0x97, 0x60, 0x28, 0x2C, 0x31, 0xFC, 0x91, 0xE8, 0x33, 0x1F, 0x45, 0x2A, 0xD6, 0x99, 0x1D, 0xFB, 0x00, 0x22, 0x0F, 0x18, 0xEA, 0xB9, 0x80, 0xFE, 0x51, 0x7C, 0x81, 0x01, 0xD7, 0xD0, 0x22, 0xC5, 0x7E, 0xCB, 0x6C, 0x66, 0xD7, 0xDE, 0xD4, 0x76, 0x65, 0x2F, 0x30, 0x91, 0x83, 0x0C, 0xB6, 0x15, 0xFD, 0x98, 0x4A, 0x16, 0x8F, 0x64, 0x9F, 0x3C, 0x5C, 0x1A, 0x68, 0x19, 0xA6, 0x89, 0xB1, 0x76, 0xA1, 0x5F, 0xDC, 0x63, 0xE6, 0x0D, 0x3C, 0x0E, 0x13, 0x01, 0x91, 0x66, 0x30, 0x9B, 0xB7, 0xAC, 0xA4, 0x36, 0x26, 0x0A, 0x5C, 0x14, 0x6C, 0xEE, 0x86, 0x77, 0xEA, 0x19, 0xFD, 0x73, 0x87, 0x03, 0x85, 0x76, 0x06, 0x33, 0x0F, 0xB2, 0xAB, 0xDD, 0x2F, 0x0C, 0x82, 0x38, 0xDF, 0x43, 0x2E, 0xB6, 0x4C, 0x5C, 0xF5, 0x30, 0x6F, 0xF2, 0x88, 0x34, 0xA4, 0xE0, 0xB2, 0xCD, 0x99, 0xF9, 0x74, 0xD9, 0xD0, 0x4C, 0x1F, 0xCB, 0xE9, 0x20, 0x7F, 0x87, 0xC5, 0xD9, 0x77, 0x2D, 0x1D, 0xB1, 0x64, 0xDD, 0x65, 0x3C, 0x3C, 0x6C, 0xA0, 0xF0, 0x2B, 0x82, 0x5B, 0x9B, 0x5F, 0x09, 0x9C, 0xE4, 0x90, 0x7E, 0x35, 0x56, 0x96, 0xB2, 0x50, 0x46, 0xFB, 0xE4, 0xD9, 0x50, 0xAF, 0xE4, 0x34, 0x34, 0x2A, 0xDF, 0x99, 0x21, 0x3F, 0xD0, 0x78, 0x71, 0x7E, 0x44, 0x06, 0x19, 0x98, 0x3F, 0xFA, 0xF1, 0xF8, 0xFC, 0xF9, 0x1E, 0x82, 0xB6, 0x5D, 0xB6, 0x3B, 0xF2, 0xF1, 0x5A, 0x17, 0xB3, 0x61, 0x79, 0x8B, 0xFD, 0xE3, 0x08, 0x6A, 0x24, 0x53, 0x08, 0x74, 0x2A, 0x63, 0xDC, 0xA1, 0xFF, 0x99, 0x63, 0x14, 0x3D, 0x6B, 0x71, 0x82, 0x8A, 0x89, 0xAF, 0xA9, 0xD7, 0xD7, 0xD8, 0xC8, 0x86, 0x9B, 0xC7, 0x54, 0x66, 0x76, 0x66, 0xAB, 0x68, 0x24, 0x4A, 0x14, 0xA7, 0x30, 0x70, 0xAC, 0xEE, 0x54, 0xAA, 0x35, 0x8B, 0x2C, 0x58, 0x20, 0x51, 0x36, 0x9A, 0xAC, 0x06, 0xB2, 0xF2, 0x6B, 0x56, 0xA6, 0x70, 0xAA, 0x31, 0x07, 0x9E, 0x7F, 0xDD, 0x89, 0xC8, 0xF4, 0x6F, 0xE2, 0x2F, 0xC8, 0x41, 0x71, 0x6E, 0x72, 0x62, 0x4C, 0xB5, 0x48, 0xB8, 0x61, 0x7E, 0xDE, 0x36, 0x9E, 0x0D, 0xF9, 0xF2, 0x34, 0x9E, 0x06, 0x41, 0xA2, 0x98, 0x55, 0x24, 0xF7, 0xF5, 0xCA, 0x8A, 0xAD, 0xEC, 0x9F, 0x8B, 0x9E, 0xE7, 0x0F, 0x83, 0x06, 0xFB, 0x44, 0x57, 0x54, 0x81, 0xF4, 0xF2, 0xC1, 0x1F, 0x5A, 0x7C, 0x22, 0xDE, 0xF4, 0x9E, 0xF8, 0x4E, 0xD0, 0x67, 0x7D, 0xD1, 0x66, 0x81, 0xE3, 0x01, 0x45, 0x21, 0x9D, 0xA0, 0xCE, 0xD4, 0x62, 0x41, 0x2C, 0x35, 0xDB, 0xD0, 0x12, 0xC0, 0x6A, 0xD8, 0xD1, 0x4B, 0xA9, 0x62, 0x29, 0x02, 0x8A, 0x43, 0xD4, 0x28, 0x6B, 0x9B, 0x51, 0x03, 0xF5, 0x0A, 0x93, 0xC3, 0xB0, 0xB0, 0xCD, 0xA2, 0x35, 0x70, 0x9A, 0x37, 0xE6, 0xF1, 0x6D, 0x08, 0x07, 0x80, 0x7C, 0x15, 0xC4, 0xF9, 0x7D, 0xE2, 0x40, 0x5C, 0x4E, 0xF9, 0xB7, 0x7B, 0x96, 0x06, 0xDB, 0x7E, 0xF0, 0xDF, 0x1D, 0xC9, 0xF8, 0x7B, 0x67, 0xFA, 0xAE, 0x0B, 0x71, 0xE2, 0x97, 0x7F, 0xA2, 0x1E, 0xF3, 0x71, 0x39, 0xCD, 0x26, 0x38, 0x0C, 0x45, 0x7A, 0xCD, 0xB9, 0x44, 0x50, 0xC9, 0x83, 0x2C, 0x89, 0x50, 0xDC, 0x8E, 0x7F, 0x6C, 0x1E, 0xB7, 0xB6, 0xF7, 0x94, 0x21, 0x64, 0x56, 0xC6, 0x30, 0x3E, 0x89, 0x9C, 0xB9, 0x8E, 0xA1, 0x32, 0x9D, 0xA6, 0xE0, 0x0F, 0xCD, 0x48, 0x17, 0xCE, 0xC6, 0xBF, 0xDC, 0x30, 0x3C, 0x04, 0x8F, 0xDE, 0xD5, 0x50, 0xFD, 0xB6, 0x13, 0xA0, 0x13, 0x87, 0x93, 0x4C, 0xA0, 0x71, 0x5E, 0x5D, 0x3D, 0x8E, 0xED, 0x36, 0x64, 0xD8, 0x60, 0xA8, 0x03, 0xCE, 0x86, 0x97, 0x6E, 0x41, 0x7B, 0x51, 0xD3, 0x21, 0xB2, 0xBC, 0xBF, 0x93, 0xD7, 0x9E, 0x0F, 0xB4, 0xA0, 0x29, 0xCE, 0x54, 0xB1, 0xD0, 0xE5, 0x9D, 0x39, 0x35, 0x17, 0x3C, 0xCA, 0x35, 0x91, 0xD3, 0xDF, 0x11, 0xF9, 0x3B, 0x72, 0x2D, 0xCD, 0xB1, 0x8E, 0x53, 0xE8, 0x4A, 0xB7, 0x19, 0x4B, 0xFF, 0x69, 0x02, 0x6F, 0x55, 0xDC, 0xBD, 0x06, 0x1A, 0x12, 0xFA, 0x0B, 0xD2, 0x00, 0x65, 0x5F, 0xBB, 0x63, 0x2E, 0x43, 0x16, 0x60, 0xE3, 0xB8, 0x90, 0x5D, 0x8F, 0x11, 0x44, 0x19, 0x11, 0xB2, 0xBA, 0xB4, 0x74, 0x53, 0xB6, 0x7A, 0xA5, 0xC5, 0xD9, 0x51, 0xE6, 0x43, 0x20, 0x7D, 0x1C, 0x2D, 0x77, 0xCC, 0x5B, 0x50, 0x72, 0xDB, 0x58, 0x12, 0xFE, 0xB0, 0x12, 0x27, 0x3D, 0x8A, 0xE8, 0x1E, 0x40, 0x63, 0x8C, 0x4F, 0x1B, 0xFA, 0x8E, 0x9A, 0x31, 0x48, 0xC2, 0x26, 0x34, 0x4A, 0x7B, 0x76, 0x5E, 0x21, 0x42, 0x0E, 0xD9, 0x7D, 0xAF, 0x79, 0xD0, 0x6E, 0xC4, 0x4B, 0x74, 0xC0, 0x7D, 0xC3, 0x90, 0x81, 0xB2, 0xE8, 0x82, 0x81, 0x2B, 0xE8, 0x8D, 0x16, 0xD0, 0x16, 0x40, 0xD7, 0x66, 0x29, 0x9C, 0xB1, 0x4C, 0xA6, 0xF4, 0xFE, 0x48, 0x19, 0x21, 0x41, 0x74, 0x0A, 0x9A, 0x3A, 0x7D, 0xED, 0xE5, 0x6B, 0x6D, 0x44, 0x45, 0xF7, 0x55, 0xED, 0xA5, 0xD5, 0x6D, 0xCA, 0xC8, 0x83, 0x46, 0x9E, 0x71, 0x72, 0xAB, 0x3A, 0x4E, 0xA0, 0x43, 0x47, 0x64, 0x91, 0x42, 0x3A, 0xA4, 0xA2, 0x40, 0x90, 0x54, 0xD4, 0xB9, 0xBB, 0xE1, 0xEF, 0xDE, 0xF9, 0xA4, 0xE1, 0x3D, 0x48, 0x2C, 0xE8, 0xFF, 0xBD, 0x2F, 0x13, 0x1D, 0x45, 0xD2, 0x62, 0x58, 0xA8, 0x5D, 0x4E, 0x3F, 0xC2, 0x84, 0x3F, 0x66, 0x6A, 0x28, 0x93, 0x86, 0xF5, 0xE0, 0xC7, 0xC5, 0xB6, 0x04, 0xE8, 0xDB, 0x35, 0x36, 0x83, 0x38, 0x52, 0xAF, 0xC2, 0x21, 0xF0, 0x05, 0x8D, 0xCC, 0x1A, 0x8A, 0xF6, 0xA9, 0x59, 0x32, 0xC0, 0xBB, 0xE0, 0x48, 0xC0, 0xE0, 0x1C, 0x68, 0xB8, 0xBC, 0x5C, 0x4E, 0xAA, 0xDD, 0x35, 0x98, 0xEE, 0xBE, 0x2D, 0x1D, 0xE7, 0xC6, 0xEF, 0x4F, 0x6E, 0x8F, 0xA5, 0xCD, 0x8C, 0x05, 0xFD, 0x0C, 0xF1, 0x02, 0x57, 0xA2, 0x91, 0x82, 0x7F, 0xD0, 0x52, 0x52, 0x1B, 0xD7, 0x98, 0x1F, 0xF9, 0x86, 0x6A, 0xBB, 0x82, 0xA6, 0xA3, 0x72, 0x0B, 0x88, 0x51, 0x7F, 0x55, 0x5C, 0x95, 0x16, 0x0F, 0x59, 0x38, 0xA1, 0xFA, 0xB5, 0x47, 0xF0, 0x14, 0xE3, 0x45, 0x9A, 0xC2, 0x7E, 0x18, 0xEF, 0x1E, 0xEE, 0x20, 0xBC, 0x54, 0xD6, 0xC5, 0x42, 0xAE, 0x87, 0xBB, 0xB8, 0x4E, 0x79, 0x72, 0x90, 0xC8, 0xE9, 0xCD, 0x2A, 0x84, 0xE3, 0x73, 0x60, 0x22, 0x92, 0x08, 0xDA, 0x28, 0x9E, 0xBC, 0x7B, 0x84, 0xBF, 0x8A, 0xBB, 0x3C, 0xC1, 0x28, 0xAC, 0x15, 0x6D, 0x83, 0xE3, 0x2B, 0xA0, 0xA4, 0x66, 0xE1, 0x9A, 0x7B, 0xB1, 0xDF, 0x7C, 0xF8, 0x57, 0xA7, 0x02, 0x80, 0xD1, 0x39, 0x24, 0x85, 0xC5, 0x58, 0x0C, 0x7E, 0xCF, 0x67, 0xEA, 0xFE, 0x0F, 0x4F, 0xB7, 0x1B, 0x03, 0x87, 0xA1, 0x89, 0x05, 0x28, 0xCF, 0xFB, 0x16, 0xA3, 0xF3, 0x87, 0x83, 0x88, 0x8D, 0x87, 0xCC, 0x7F, 0x5B, 0xEC, 0xF6, 0x6C, 0x42, 0x34, 0x1C, 0xA4, 0xBE, 0x65, 0xD8, 0xA6, 0x77, 0x0A, 0x06, 0xB1, 0xBA, 0x0B, 0xE0, 0x60, 0x42, 0x82, 0x04, 0x52, 0x7C, 0xD4, 0x97, 0xFC, 0x2F, 0x16, 0x3C, 0x92, 0x75, 0x85, 0xCF, 0x42, 0x14, 0x1F, 0x57, 0xE9, 0xE7, 0x42, 0x2B, 0x4A, 0x58, 0xEE, 0x5B, 0x3A, 0x86, 0x5C, 0x5E, 0xCC, 0x63, 0xB4, 0x29, 0xC3, 0x7E, 0x20, 0x1C, 0x98, 0xEB, 0xA6, 0x29, 0x28, 0xC0, 0x76, 0x79, 0x41, 0xDE, 0xB9, 0x81, 0x88, 0x09, 0x2D, 0x04, 0x5A, 0x1C, 0x9D, 0x0A, 0x53, 0xD5, 0x2A, 0x49, 0xBD, 0x72, 0x7C, 0xF9, 0x8E, 0x2C, 0x96, 0xA2, 0x66, 0xBB, 0x4B, 0x7E, 0xC3, 0x61, 0x05, 0x1C, 0xF3, 0x41, 0xF0, 0x11, 0xD4, 0x08, 0xDE, 0x10, 0xE2, 0x16, 0x98, 0xE9, 0xD8, 0x5D, 0xFE, 0x55, 0x72, 0x90, 0x96, 0x6C, 0x07, 0xC4, 0x18, 0x20, 0x4E, 0xAE, 0x04, 0xC8, 0x96, 0x04, 0xEB, 0x21, 0x82, 0xCD, 0x23, 0xA0, 0x07, 0x91, 0x6B, 0x2F, 0x1A, 0xD1, 0x76, 0xDA, 0xCD, 0x80, 0xC7, 0x83, 0xE4, 0xC0, 0x82, 0x67, 0x03, 0x07, 0x3E, 0x94, 0xE4, 0x65, 0xCD, 0x5E, 0x98, 0x86, 0x67, 0x88, 0xF3, 0x89, 0x47, 0xBC, 0xF8, 0xBE, 0xA4, 0x87, 0x36, 0x05, 0xEA, 0x80, 0xDC, 0xC3, 0xAA, 0xE4, 0x40, 0x8B, 0x4E, 0xAB, 0xFB, 0x70, 0x51, 0xD9, 0xE0, 0xF5, 0x57, 0xD4, 0x5A, 0x09, 0x17, 0x3F, 0xB9, 0x66, 0xBA, 0x7A, 0xEB, 0xF1, 0x76, 0x91, 0x4D, 0x25, 0x76, 0x6F, 0x98, 0x99, 0x87, 0x1D, 0xF3, 0x3F, 0x09, 0x4B, 0xAC, 0x4C, 0x0E, 0x89, 0x06, 0x83, 0x60, 0x8D, 0xD2, 0x8E, 0x82, 0xBB, 0xDF, 0xC6, 0xBF, 0x9B, 0xDB, 0xA7, 0x0B, 0xC9, 0xB4, 0xAF, 0x26, 0x30, 0x34, 0xF8, 0x98, 0x84, 0xA7, 0xDF, 0x5D, 0x60, 0x00, 0x45, 0x0B, 0xC1, 0x7D, 0xB1, 0xF0, 0x76, 0x23, 0x38, 0xF0, 0x47, 0x9C, 0xF5, 0x49, 0xD4, 0xF2, 0x0A, 0xCE, 0x9B, 0xEA, 0xBE, 0x13, 0xFF, 0x82, 0x94, 0x1C, 0x82, 0xD4, 0xAB, 0x26, 0x39, 0x81, 0xC3, 0x7A, 0x6A, 0x8A, 0x77, 0xC8, 0x00, 0x12, 0xC9, 0xDF, 0x0B, 0xDD, 0xB5, 0xE3, 0xBC, 0x97, 0x5D, 0x69, 0x6E, 0x4C, 0x5E, 0x6D, 0x00, 0x97, 0xA4, 0x6D, 0x56, 0x4C, 0x9E, 0xA3, 0x9B, 0xF2, 0x6D, 0x63, 0xF2, 0xC1, 0x53, 0x65, 0x70, 0x26, 0x64, 0x32, 0x47, 0x09, 0xBD, 0x60, 0x26, 0x1E, 0x28, 0x24, 0x13, 0xBC, 0xE7, 0x2D, 0x29, 0xE1, 0x58, 0xDE, 0x93, 0x15, 0x50, 0x4D, 0x7D, 0xF0, 0x5F, 0x7B, 0xF1, 0xB7, 0xE7, 0x11, 0x54, 0xC1, 0x99, 0xBC, 0xC5, 0xCD, 0x6F, 0x7F, 0xBF, 0x8B, 0x00, 0x95, 0x6D, 0x97, 0x94, 0x1C, 0x74, 0x83, 0x2E, 0x94, 0x03, 0x2D, 0x53, 0xFF, 0x67, 0xBB, 0x68, 0x08, 0x8B, 0xD3, 0xBF, 0x87, 0x51, 0xCC, 0x3A, 0x01, 0x7D, 0xD1, 0x46, 0x0D, 0xCA, 0x85, 0xA5, 0x5D, 0x3A, 0x9B, 0xEB, 0x5A, 0x44, 0x41, 0xF3, 0x21, 0xAA, 0x81, 0x12, 0x3D, 0xB1, 0x47, 0x6B, 0xA6, 0x10, 0xA4, 0x0B, 0xA9, 0x40, 0xCF, 0xBB, 0x8F, 0x13, 0x1F, 0x04, 0xFB, 0x8D, 0x78, 0xBA, 0x82, 0x6C, 0x6F, 0xBA, 0x15, 0xE9, 0x1E, 0x4F, 0x64, 0xFA, 0xF2, 0x0A, 0xB0, 0xFF, 0x79, 0x87, 0x80, 0xF2, 0x95, 0xC9, 0x3D, 0xE4, 0xD7, 0x65, 0x30, 0x15, 0xCA, 0x7E, 0x00, 0xAC, 0x5B, 0x6C, 0x9B, 0xC4, 0x93, 0xC4, 0x74, 0x34, 0xD4, 0x45, 0x7F, 0x4F, 0x52, 0xC2, 0xF9, 0x89, 0xE3, 0xAA, 0xBB, 0x29, 0x9C, 0x9A, 0x5B, 0xAE, 0xDB, 0xD6, 0xC9, 0x5B, 0x13, 0xBA, 0x0B, 0x28, 0x5A, 0xD9, 0xBC, 0x80, 0xB8, 0xB9, 0x1D, 0xD8, 0xFB, 0x64, 0xC2, 0x9B, 0xC4, 0xA0, 0xF5, 0xBB, 0x05, 0xEB, 0xD1, 0x8F, 0xB9, 0x42, 0x4C, 0xE5, 0x67, 0xBE, 0xE5, 0x7D, 0xC5, 0xD5, 0x1A, 0x29, 0x45, 0x08, 0x2A, 0xE3, 0xA2, 0x08, 0x47, 0x5E, 0x8D, 0xF6, 0xD6, 0xDE, 0x4E, 0x09, 0xA4, 0x58, 0x4B, 0x62, 0x5C, 0x9E, 0xD4, 0x7E, 0xC4, 0x4F, 0x64, 0x18, 0x2A, 0x76, 0x7F, 0x55, 0xC4, 0x48, 0x11, 0x61, 0x87, 0xD9, 0x92, 0x08, 0xE4, 0x1A, 0xED, 0xA7, 0x59, 0xE6, 0xA9, 0xB2, 0xD6, 0xE1, 0x17, 0x5D, 0xAE, 0x90, 0xFC, 0x49, 0x30, 0xD3, 0x40, 0xFB, 0x47, 0x9E, 0x46, 0x71, 0x30, 0x96, 0x7B, 0x12, 0x47, 0x30, 0x34, 0xC9, 0x53, 0xFD, 0xBC, 0x12, 0x1B, 0xE2, 0x44, 0x95, 0x55, 0x26, 0xF5, 0x6A, 0x58, 0x74, 0x2D, 0x59, 0x3C, 0x71, 0x4F, 0x5E, 0xEA, 0x8A, 0x0E, 0x8D, 0x68, 0x88, 0x13, 0xA4, 0x68, 0x16, 0x34, 0xAF, 0x2F, 0x35, 0x19, 0x74, 0x7C, 0x18, 0x85, 0x27, 0x0A, 0xDF, 0x04, 0xCA, 0x6F, 0x85, 0x4F, 0x1C, 0x60, 0xE0, 0x9C, 0xF8, 0x3F, 0x83, 0xFA, 0x62, 0x41, 0x2B, 0x66, 0x13, 0xA4, 0x0F, 0x8C, 0x8A, 0x5D, 0x72, 0xB0, 0x10, 0x10, 0xAF, 0x2C, 0x97, 0xFC, 0x24, 0x96, 0xAB, 0x3E, 0x04, 0x0E, 0x08, 0x1B, 0x92, 0xCA, 0x17, 0x56, 0xC2, 0x91, 0xC7, 0x89, 0xD1, 0x66, 0xDE, 0xD0, 0x0F, 0xB2, 0xC1, 0x44, 0x1A, 0x68, 0x11, 0x3E, 0x30, 0xC3, 0xDC, 0x48, 0x37, 0x89, 0x0C, 0x94, 0x71, 0x00, 0xFD, 0x83, 0x76, 0x12, 0xE9, 0xAB, 0xE8, 0x31, 0xDE, 0xA6, 0xC8, 0x6B, 0x2E, 0xAC, 0xCC, 0xE5, 0x59, 0x6E, 0xD7, 0x99, 0xFC, 0x70, 0xCA, 0xF2, 0x94, 0x4B, 0x8A, 0xC4, 0x70, 0xE7, 0xD2, 0x6F, 0xAB, 0x62, 0xCB, 0xCA, 0xB2, 0xC2, 0x82, 0xE4, 0xBD, 0xBD, 0xCF, 0xB9, 0xE2, 0x0C, 0x6F, 0x49, 0x0F, 0x2A, 0xBF, 0xAA, 0xEE, 0x30, 0x25, 0x43, 0x97, 0x00, 0x8E, 0xAE, 0x5B, 0x5B, 0xC6, 0x9B, 0x57, 0xD6, 0xEE, 0xFB, 0xCE, 0xA4, 0x9A, 0x1D, 0xB8, 0xD3, 0xE2, 0x6C, 0x1E, 0x5F, 0xE2, 0x39, 0x11, 0xB9, 0x82, 0x2E, 0x97, 0xF4, 0xB1, 0x1E, 0x73, 0x72, 0xA2, 0xEA, 0x57, 0xD3, 0x65, 0x5D, 0x47, 0x14, 0x65, 0xFB, 0x35, 0x5B, 0xF1, 0xC3, 0xF3, 0x1F, 0xA2, 0x06, 0x76, 0xD6, 0x88, 0x7C, 0xB9, 0x83, 0xE7, 0x16, 0x00, 0x1A, 0x52, 0xD2, 0x4B, 0x22, 0x01, 0xBA, 0x2B, 0xAF, 0x85, 0xE7, 0x68, 0xB1, 0xEF, 0x7D, 0xC1, 0x40, 0xE5, 0x9F, 0xE2, 0xA3, 0xE1, 0x7C, 0x64, 0x9E, 0xC2, 0x28, 0x4D, 0x68, 0xE3, 0x75, 0xEB, 0xB1, 0x9C, 0xFF, 0x1F, 0x62, 0xB3, 0xEE, 0x65, 0xE9, 0x1F, 0x93, 0xE1, 0x04, 0x79, 0x8F, 0xE5, 0x99, 0x34, 0x93, 0x6F, 0x54, 0xCD, 0x08, 0x63, 0xC8, 0x4E, 0x5B, 0x35, 0x75, 0xC9, 0xA2, 0xFE, 0x92, 0x02, 0xAB, 0x21, 0xDC, 0xB6, 0x0D, 0x16, 0x9B, 0x03, 0x1A, 0x6A, 0xBD, 0x86, 0xD7, 0xA5, 0x03, 0xFF, 0x33, 0x9C, 0xB5, 0x5E, 0x47, 0x98, 0xA8, 0x54, 0x66, 0x42, 0xE3, 0xA7, 0xED, 0x8B, 0x8F, 0xAF, 0x06, 0xA5, 0xBD, 0xF5, 0xED, 0x77, 0x51, 0x6A, 0xAC, 0x16, 0x5E, 0xBC, 0x69, 0xCB, 0xE7, 0xF0, 0xD0, 0x83, 0x8F, 0x17, 0x8E, 0x7D, 0x82, 0xC7, 0x17, 0xAF, 0xF9, 0x59, 0x1A, 0x5A, 0xE0, 0x70, 0xDE, 0x22, 0x4A, 0xC1, 0x5F, 0x49, 0x3D, 0x59, 0xF0, 0xD0, 0x89, 0x7E, 0xF2, 0x66, 0x6A, 0x67, 0x7C, 0xFA, 0xE8, 0x39, 0x0F, 0x88, 0xC6, 0xF0, 0xCE, 0x13, 0xCB, 0x15, 0x2F, 0x53, 0x23, 0x9C, 0xC5, 0x48, 0x12, 0x22, 0x91, 0xC3, 0x3A, 0x9B, 0x1F, 0xCA, 0xEC, 0x90, 0x4F, 0xAF, 0x33, 0xEC, 0xDD, 0xC8, 0xEC, 0x96, 0xAD, 0xC1, 0x6B, 0x61, 0x64, 0x52, 0xDA, 0xE6, 0xA9, 0xF2, 0x2E, 0xB4, 0x55, 0x86, 0x31, 0xF6, 0xCF, 0xFB, 0xA2, 0x71, 0xC3, 0x93, 0x39, 0xD3, 0x02, 0x42, 0x82, 0x0A, 0x8D, 0xC3, 0x57, 0x83, 0xFC, 0xDD, 0x7F, 0xA7, 0xEA, 0x19, 0xBC, 0x6B, 0xBC, 0xA0, 0xE7, 0x53, 0x06, 0xC2, 0xF9, 0xAA, 0xF3, 0x20, 0xF8, 0x9D, 0xB7, 0x58, 0xCB, 0x35, 0x99, 0x3E, 0x2B, 0x78, 0x7F, 0xE7, 0x08, 0x8F, 0x93, 0x6D, 0x9B, 0x3B, 0xE5, 0xD7, 0x34, 0x9C, 0x0C, 0xDE, 0x7D, 0xA3, 0xF4, 0x2D, 0x27, 0x1F, 0xE5, 0xD7, 0xD0, 0xBB, 0xC8, 0x73, 0xDC, 0x0E, 0xAC, 0xBB, 0x8D, 0x6E, 0x11, 0xEC, 0x8E, 0x40, 0xA5, 0xAD, 0xAC, 0x71, 0xA9, 0x54, 0xBE, 0xFA, 0x68, 0xCF, 0x6E, 0x98, 0x89, 0xE4, 0x85, 0x27, 0x98, 0xDE, 0x8F, 0x74, 0x3B, 0x37, 0x80, 0x88, 0xE0, 0x39, 0xC4, 0x85, 0xD9, 0x96, 0x4F, 0x9E, 0x1E, 0xA6, 0xDE, 0x29, 0x4A, 0xAF, 0xDA, 0x1B, 0x61, 0x3F, 0xBA, 0x62, 0x37, 0x2F, 0x53, 0xFA, 0xD6, 0x80, 0x9C, 0x59, 0x64, 0xBB, 0x8B, 0xBA, 0x7E, 0xD4, 0x86, 0x4E, 0x22, 0x4C, 0x7D, 0xEE, 0x55, 0x2E, 0x76, 0x29, 0x20, 0xCB, 0x73, 0x53, 0x70, 0xE8, 0x5F, 0x3E, 0xE5, 0x09, 0xFB, 0x0A, 0x06, 0xFD, 0x5F, 0x76, 0x43, 0x71, 0x5D, 0x7B, 0xE7, 0xA1, 0xB4, 0x8F, 0xBF, 0x89, 0x05, 0xE5, 0x30, 0x54, 0x9F, 0x3B, 0x63, 0x8C, 0x92, 0x5E, 0xF5, 0x5B, 0xB2, 0x2B, 0x5F, 0x97, 0x86, 0x81, 0x3E, 0x2A, 0x6F, 0x33, 0x8D, 0xF7, 0x65, 0x63, 0x67, 0xD6, 0xB6, 0xC8, 0x44, 0x8F, 0x7A, 0x70, 0x93, 0xD8, 0x03, 0x17, 0xFC, 0x67, 0x39, 0xCE, 0xDD, 0x2A, 0xE4, 0x4D, 0x2F, 0xFF, 0xB3, 0x30, 0xBE, 0xD7, 0x7B, 0x37, 0x2B, 0xC3, 0x89, 0x37, 0xB0, 0x83, 0x00, 0x9C, 0x59, 0xE1, 0xB1, 0xC8, 0xF7, 0x38, 0x9F, 0x5F, 0x4B, 0x54, 0x01, 0x78, 0xC5, 0x9A, 0x9F, 0x4C, 0x7A, 0xB3, 0xCF, 0x34, 0xA2, 0x8D, 0x93, 0x4C, 0x6A, 0xEE, 0x8C, 0x9C, 0x17, 0x7B, 0x0D, 0xD2, 0x73, 0x52, 0xB3, 0x3B, 0x0F, 0x3E, 0xB1, 0x66, 0xF6, 0xF8, 0xEA, 0xF5, 0x06, 0x3B, 0x89, 0xE9, 0x7C, 0xB2, 0x37, 0x24, 0x04, 0x1F, 0x99, 0x22, 0x3B, 0x7B, 0x60, 0x04, 0x89, 0x39, 0x95, 0xF4, 0xC8, 0x81, 0x6E, 0xD5, 0x4A, 0xFE, 0xBB, 0x20, 0x32, 0x93, 0xD2, 0xD9, 0xED, 0xD2, 0x9C, 0x69, 0x97, 0xB9, 0x25, 0x06, 0xAF, 0x48, 0xE7, 0xBB, 0xCB, 0x66, 0x1E, 0xC6, 0xD2, 0xF2, 0x7B, 0xC4, 0xD3, 0xFC, 0x07, 0x21, 0x94, 0x3E, 0xB8, 0x8D, 0xDB, 0xD1, 0x24, 0x2D, 0x19, 0x7F, 0xEC, 0x08, 0x70, 0x8A, 0x5C, 0x3E, 0x0A, 0xD6, 0x51, 0x3A, 0x26, 0xF4, 0x70, 0x57, 0xBB, 0x51, 0x0F, 0x64, 0x38, 0x0A, 0x77, 0x21, 0x12, 0x5C, 0x04, 0x36, 0xD1, 0x58, 0xF5, 0x80, 0x09, 0x59, 0x20, 0x6C, 0x31, 0x27, 0xBF, 0xDD, 0x54, 0x18, 0x34, 0x4F, 0xAE, 0xF7, 0x52, 0x30, 0x80, 0x04, 0x17, 0x4F, 0x4D, 0x47, 0x3A, 0x46, 0x52, 0x49, 0x4E, 0x47, 0x45, 0x3A, 0x55, 0x53, 0x52, 0x3A, 0x75, 0x73, 0x65, 0x72, 0x2E, 0x78, 0x6D, 0x6C, 0x04, 0x82, 0x01, 0xE9, 0x3C, 0x3F, 0x78, 0x6D, 0x6C, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x3D, 0x20, 0x22, 0x31, 0x2E, 0x30, 0x22, 0x20, 0x65, 0x6E, 0x63, 0x6F, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x3D, 0x20, 0x22, 0x55, 0x54, 0x46, 0x2D, 0x38, 0x22, 0x20, 0x3F, 0x3E, 0x0A, 0x3C, 0x70, 0x61, 0x63, 0x6B, 0x61, 0x67, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x3D, 0x20, 0x22, 0x32, 0x2E, 0x30, 0x22, 0x3E, 0x0A, 0x3C, 0x70, 0x69, 0x64, 0x3E, 0x30, 0x31, 0x30, 0x46, 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x45, 0x46, 0x46, 0x33, 0x43, 0x33, 0x32, 0x34, 0x34, 0x43, 0x36, 0x30, 0x32, 0x36, 0x33, 0x35, 0x31, 0x37, 0x38, 0x34, 0x35, 0x37, 0x3C, 0x2F, 0x70, 0x69, 0x64, 0x3E, 0x0A, 0x3C, 0x74, 0x72, 0x61, 0x63, 0x6B, 0x6C, 0x69, 0x73, 0x74, 0x3E, 0x0A, 0x3C, 0x74, 0x72, 0x61, 0x63, 0x6B, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x3D, 0x20, 0x22, 0x31, 0x22, 0x3E, 0x0A, 0x3C, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x3C, 0x67, 0x65, 0x6E, 0x72, 0x65, 0x3E, 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x3C, 0x2F, 0x67, 0x65, 0x6E, 0x72, 0x65, 0x3E, 0x0A, 0x3C, 0x2F, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x3C, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x3C, 0x74, 0x69, 0x74, 0x6C, 0x65, 0x20, 0x68, 0x61, 0x6C, 0x66, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x3D, 0x20, 0x22, 0x73, 0x69, 0x6E, 0x65, 0x5F, 0x34, 0x30, 0x30, 0x22, 0x20, 0x3E, 0x73, 0x69, 0x6E, 0x65, 0x5F, 0x34, 0x30, 0x30, 0x3C, 0x2F, 0x74, 0x69, 0x74, 0x6C, 0x65, 0x3E, 0x0A, 0x3C, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x20, 0x72, 0x6F, 0x6C, 0x65, 0x20, 0x3D, 0x20, 0x22, 0x70, 0x72, 0x69, 0x6E, 0x63, 0x69, 0x70, 0x61, 0x6C, 0x22, 0x20, 0x3E, 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x3C, 0x2F, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x3E, 0x0A, 0x3C, 0x2F, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x3C, 0x72, 0x65, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x6C, 0x69, 0x73, 0x74, 0x3E, 0x0A, 0x3C, 0x72, 0x65, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x3D, 0x20, 0x22, 0x61, 0x75, 0x64, 0x69, 0x6F, 0x2F, 0x61, 0x74, 0x72, 0x61, 0x63, 0x33, 0x22, 0x3E, 0x0A, 0x3C, 0x63, 0x69, 0x64, 0x3E, 0x30, 0x31, 0x30, 0x46, 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x45, 0x46, 0x46, 0x33, 0x43, 0x33, 0x32, 0x34, 0x34, 0x43, 0x36, 0x30, 0x32, 0x36, 0x33, 0x35, 0x31, 0x37, 0x38, 0x34, 0x35, 0x37, 0x3C, 0x2F, 0x63, 0x69, 0x64, 0x3E, 0x0A, 0x3C, 0x2F, 0x72, 0x65, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x3C, 0x2F, 0x72, 0x65, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x6C, 0x69, 0x73, 0x74, 0x3E, 0x0A, 0x3C, 0x2F, 0x74, 0x72, 0x61, 0x63, 0x6B, 0x3E, 0x0A, 0x3C, 0x2F, 0x74, 0x72, 0x61, 0x63, 0x6B, 0x6C, 0x69, 0x73, 0x74, 0x3E, 0x0A, 0x3C, 0x2F, 0x70, 0x61, 0x63, 0x6B, 0x61, 0x67, 0x65, 0x3E, 0x0A, 0x00, 0x00, 0x00, 0x00,
} ;
30 80 30 80 06 07 666F70656E4D47 ; "fopenMG" 02 02 03EB 04 14 010F50000004000000EFF3C3244C602635178457 06 02 6701 02 02 3F00 06 02 6801 02 04 000021C0 02 01 01 02 03 0101D0 02 02 00C0 02 01 00 0000 04 08 1D891A35257C8017 04 84000021D0 8662B73CCD0D ; 6 2EB500000000000000003FCFD3837F35 ; 22 D23B8041488DE653998A1131B0791B42 ; ... ... 0A7721125C0436D158F5800959206C31 27BFDD5418344FAEF752 30 80 04 17 4F4D473A4652494E47453A5553523A757365722E786D6C ; OMG:FRINGE:USR:user.xml 04 8201E9 3C3F786D6C2076 657273696F6E203D2022312E30222065 ... 6B6C6973743E0A3C2F7061636B616765 3E0A ; <1.0" encoding = "UTF-8" ?> ; <package version = "2.0"> ; <pid>010F50000004000000EFF3C3244C602635178457</pid> ; <tracklist> ; <track number = "1"> ; <description> ; <genre>Unknown</genre> ; </description> ; <caption> ; <title half-width = "sine_400" >sine_400</title> ; <artist role = "principal" >Unknown</artist> ; </caption> ; <renditionlist> ; <rendition format = "audio/atrac3"> ; <cid>010F50000004000000EFF3C3244C602635178457</cid> ; </rendition> ; </renditionlist> ; </track> ; </tracklist> ; </package> 0000
0000
OMGRIGHT icv values
/* <OpenMG directory>\OMGRIGHT\9E8978DDFDC9B092091806987EC6BD907317BEEAF9E7A6A57185BE112F12375E7766AE382A009197.ICV */
unsigned char ICV_9E89[4] = {
0x30, 0x7A, 0xC2, 0x48,
} ;
/* <OpenMG directory>\OMGRIGHT\CF9517018A217F16B90558297B089EA0FB21D58DFAB8643E93F7086EA1B301B7236B96E69248F373.ICV */
unsigned char ICV_CF95[4] = {
0x61, 0x7A, 0xC2, 0x48,
} ;
Function declarations
maclist(1)
XOR the SalOmgId with a constant key, expand that to a symmetric key and apply to the SHA-1 hash of MACLIST. Compare the result with param3 and return 1 if they are equal. In other words, param3 is a complicated hash of the MACLIST.
Sample input:
unsigned char param1_SalOmgId[16] = {
0x01, 0x0F, 0x50, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x24, 0x4C, 0x60, 0x26,
} ;
unsigned char param2_MACLIST2[80] = {
0x4D, 0x41, 0x43, 0x4C, 0x49, 0x53, 0x54, 0x00, 0x01, 0x0F, 0x50, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x24, 0x4C, 0x60, 0x26, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xEA, 0x42, 0x8F, 0x71, 0xEE, 0x7B, 0x66, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
} ;
unsigned char param3[20] = {
0x8F, 0x94, 0xDF, 0x98, 0xF5, 0x48, 0x49, 0x19, 0xF2, 0x92, 0xB7, 0x53, 0xC8, 0x2D, 0x75, 0x13, 0x54, 0xB1, 0x2C, 0xC4,
} ;
maclist(8)
This first does the same integrity check as maclist(1), if that does not succeed, it returns ASN.1 of an array with just the single number "3" (an error code). Otherwise it returns the ASN.1 of [0, blob1, blob2], where blob1 is the 0-extension (a type of mapping) of the provided MACLIST (see above), and blob2 is a SHA-1 hash of blob1 which is DES/ocmmod encrypted using the omgid (in its raw form, *not* xor'ed with a constant).
In other words, this extracts the 0-extension of a MACLIST and an encrypted hash of that.
See pcmaclist(6)
/* Procedure prototype: maclist(08)
Input:
SalOmgId const &, SalPointer const &, SalNonConstPointer const &, long, SalExtrinsicsProg const &,
Output:
SalAsnSeqBegin, long &, OmgString &, OmgString &
*/
/* Parameters: */
char param1_unkownblob[20] = {
0x8F, 0x94, 0xDF, 0x98, 0xF5, 0x48, 0x49, 0x19, 0xF2, 0x92, 0xB7, 0x53, 0xC8, 0x2D, 0x75, 0x13, 0x54, 0xB1, 0x2C, 0xC4,
} ;
/* Return value */
unsigned char unkown_blob[59] = {
0x30, 0x80, 0x02, 0x01, 0x00, 0x04, 0x18, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x18, 0x46, 0x73, 0xE4, 0x89, 0x6A, 0xA9, 0x0B, 0x96, 0x69, 0x43, 0xAA, 0x39, 0x99, 0xE2, 0x08, 0xC4, 0xF8, 0xCA, 0x19, 0x2E, 0x38, 0xE2, 0x3E, 0x4C, 0x00, 0x00,
} ; /
icv(7)
/* EKB_00010002 → 0x10001
icv(07)
Input:
SalPointer const &, long, SalExtrinsicsProg const &
Output: long &
*/
maclist(4)
/*Procedure prototype: maclist(04)
Input:
SalOmgId const &, OmgString const &, SalPointer const &, OmgString const &, long, SalExtrinsicsProg const &,
Output:
SalAsnSeqBegin, long &, OmgString & */
unsigned char param1[20] = {
0x43, 0xEA, 0x42, 0x8F, 0x71, 0xEE, 0x7B, 0x66, 0x5D, 0x10, 0x75, 0x2E, 0x85, 0xAB, 0x16, 0xE5, 0xA5, 0x0C, 0x62, 0x49,
} ;
unsigned char param3[20] = {
0x63, 0x81, 0x63, 0xB8, 0x2C, 0x4E, 0x31, 0x81, 0x0F, 0xBE, 0xE0, 0x1B, 0x2E, 0x7F, 0xC2, 0x5B, 0x87, 0x95, 0x86, 0xE3,
} ;
/* Return values */
unsigned char return_value[33] = {
0x30, 0x80, 0x02, 0x01, 0x00, 0x04, 0x18, 0xE3, 0xB5, 0x07, 0x43, 0x19, 0x09, 0x8B, 0x88, 0x6A, 0x92, 0x40, 0xF9, 0xC1, 0x1A, 0x82, 0xD8, 0x4A, 0x8F, 0x91, 0x0A, 0xA7, 0x2C, 0x7C, 0x55, 0x00, 0x00,
} ;
nc_omgtomsa(0)
/*
Procedure prototype: nc_omgtomsa(00)
Input:
SalPointer const &, OmgString const &, long, SalExtrinsicsProg const &,
Output:
SalNonConstPointer &
*/
unsigned char param2[24] = {
0xE3, 0xB5, 0x07, 0x43, 0x19, 0x09, 0x8B, 0x88, 0x6A, 0x92, 0x40, 0xF9, 0xC1, 0x1A, 0x82, 0xD8, 0x4A, 0x8F, 0x91, 0x0A, 0xA7, 0x2C, 0x7C, 0x55,
} ;
unsigned char param3[8] = {
0x86, 0x62, 0xB7, 0x3C, 0xCD, 0x0D, 0x2E, 0xB5,
} ;
/* Return values */
unsigned char return_value[8] = {
0x93, 0x33, 0x23, 0x83, 0xF1, 0x0C, 0xFF, 0xBE,
} ;
querycif(09) - Get KEK encrypted content key
Array ProcessFile[5] = { 0: short int 1001b; 1: blob_t key_or_id_20; // = HMAC(ProcessFile[3], SalEnc(Key)) = HMAC(ProcessFile[3], ProcessFile[2]) // // = SHA1( dec_pf2 + SHA1( dec_pf2 + Pf3_serialized ) ) 2: blob_t key_or_id_20; // Key // 3: struct { // 26 dd 6Bh const_107 dd 4400AFA0h timestamp dd 7 dd 4400AF9Eh dd 6Dh dd 0 dd 65h dd 8400C5A0h 10031680 A7 D2 81 AD 4B E1 8B B8 91 67 6D 74 83 6D 8D 0E F8 42 28 41 dd 0 dd 8400C59Ch 10031670 (CID) 01 0F 50 00 00 04 00 00 00 AC D3 FB 2C 1C B4 2E 0D 5D 95 A7 00 dd 68h dd 1F06h dd 6 dd 8400C598h 10031660: 'raw content importing' dd 67h dd 2 dd 1 dd 3 dd 8 dd 3 dd 5 dd 4 dd 66h dd 0C400AF9Ch 1002be70 1002BE70 word_1002BE70 dw 0BE00h 1002BE72 dw 0 1002BE74 dd 0 dd 6Ch dd 7 }; 4: blob_t 0C400AF9Ah; }; };
netmd(0): AttemptCheckout0
/*
netmd(0)
Process file, unknown blob, Ekb capability table, 00010002ekb, unknown blob, Content id, SalOmgId → ASN.1([status,nonce,checkout_context])
status = 0: Success, nonce will be used to authenticate NetMD unit, checkout_context contains all data to continue processing. status != 0: Error, nonce and checkout_context don't exist
Procedure prototype: netmd(01)
Input:
SalOmgId const &, SalPointer const &, SalPointer const &, SalPointer const &, long, SalExtrinsicsProg const &
Output:
SalAsnSeqBegin, long &, SalNonConstPointer &, OmgString &
*/
unsigned char param2[24] = {
0x46, 0x73, 0xE4, 0x89, 0x6A, 0xA9, 0x0B, 0x96, 0x69, 0x43, 0xAA, 0x39, 0x99, 0xE2, 0x08, 0xC4, 0xF8, 0xCA, 0x19, 0x2E, 0x38, 0xE2, 0x3E, 0x4C,
} ;
unsigned char param3[24] = {
0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
} ;
unsigned char param5[8] = {
0x82, 0x19, 0x23, 0xFD, 0xB7, 0xFE, 0xCB, 0x2E,
} ;
unsigned char param6_CIF[20] = {
0x01, 0x0F, 0x50, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xEF, 0xF3, 0xC3, 0x24, 0x4C, 0x60, 0x26, 0x35, 0x17, 0x84, 0x57,
} ;
/* Return values */
unsigned char return_value[67] = {
0x30, 0x80, 0x02, 0x01, 0x00, 0x04, 0x08, 0xE2, 0xAA, 0x5E, 0x05, 0xAB, 0x2D, 0xDA, 0xB8, 0x04, 0x30, 0xFF, 0xFA, 0x5A, 0xA4, 0xC5, 0xDE, 0xDB, 0xB2, 0x0B, 0x18, 0x40, 0x09, 0x9E, 0xD3, 0xC3, 0x3F, 0xF7, 0xE1, 0x46, 0x8D, 0x5C, 0x64, 0xFC, 0x35, 0xC9, 0xBC, 0x0D, 0xA4, 0x4F, 0xBD, 0xB2, 0x70, 0x3C, 0xEA, 0x97, 0x09, 0x2A, 0x1D, 0xEF, 0xAD, 0xE4, 0x20, 0x56, 0xB4, 0x5D, 0x31, 0x65, 0xF2, 0x00, 0x00,
} ;
netmd(1) - AttemptCheckout1
/* netmd(1)
unkown blob, unknown blob, 00010002ekb, SalOmgId - > unknown blob
Procedure prototype: netmd(01)
Input:
SalOmgId const &, SalPointer const &, SalPointer const &, SalPointer const &, long, SalExtrinsicsProg const &
Output:
SalAsnSeqBegin, long &, SalNonConstPointer &, OmgString &
*/
unsigned char param1[48] = {
0xFF, 0xFA, 0x5A, 0xA4, 0xC5, 0xDE, 0xDB, 0xB2, 0x0B, 0x18, 0x40, 0x09, 0x9E, 0xD3, 0xC3, 0x3F, 0xF7, 0xE1, 0x46, 0x8D, 0x5C, 0x64, 0xFC, 0x35, 0xC9, 0xBC, 0x0D, 0xA4, 0x4F, 0xBD, 0xB2, 0x70, 0x3C, 0xEA, 0x97, 0x09, 0x2A, 0x1D, 0xEF, 0xAD, 0xE4, 0x20, 0x56, 0xB4, 0x5D, 0x31, 0x65, 0xF2,
} ;
unsigned char param2[8] = {
0xC2, 0xC2, 0xF3, 0xA8, 0xE2, 0xC2, 0x8D, 0x51,
} ;
/* Return values */
unsigned char return_value[83] = {
0x30, 0x80, 0x02, 0x01, 0x00, 0x04, 0x20, 0x96, 0x00, 0xE9, 0x56, 0x68, 0x1F, 0xEF, 0xF5, 0x97, 0x1B, 0xA1, 0x16, 0x18, 0xB2, 0x49, 0x8E, 0x45, 0xEA, 0x4F, 0x56, 0x95, 0xB9, 0xA0, 0xB0, 0xF1, 0xEA, 0xF5, 0x1A, 0xC2, 0x3A, 0xF6, 0x69, 0x04, 0x28, 0x79, 0xC7, 0x59, 0xBF, 0x06, 0xE7, 0xBB, 0x71, 0x69, 0x50, 0xE5, 0x7A, 0x2B, 0x7B, 0xCC, 0xEA, 0xFF, 0xD8, 0xE6, 0xB1, 0x6A, 0x74, 0x6F, 0x45, 0x95, 0x89, 0x70, 0xB8, 0x86, 0x25, 0x26, 0x58, 0xE6, 0x41, 0xCB, 0xFB, 0x6E, 0x31, 0x95, 0x3D, 0x00, 0x00,
} ;
netmd(2) - CompleteCheckOut
/* netmd(2)
unknown blob, unknown blob, Content Identifier, Process file, SalOmgId -> TODO
Procedure prototype: netmd(02)
Input:
SalOmgId const &, OmgString const &, SalString const &, SalPointer const &, SalPointer const &, long, SalExtrinsicsProg const &,
Output:
SalAsnSeqBegin, long &, OmgString &, OmgString &, SalNonConstPointer &, SalNonConstPointer &
*/
unsigned char param1[40] = {
0x79, 0xC7, 0x59, 0xBF, 0x06, 0xE7, 0xBB, 0x71, 0x69, 0x50, 0xE5, 0x7A, 0x2B, 0x7B, 0xCC, 0xEA, 0xFF, 0xD8, 0xE6, 0xB1, 0x6A, 0x74, 0x6F, 0x45, 0x95, 0x89, 0x70, 0xB8, 0x86, 0x25, 0x26, 0x58, 0xE6, 0x41, 0xCB, 0xFB, 0x6E, 0x31, 0x95, 0x3D,
} ;
unsigned char param2[32] = {
0x39, 0x22, 0x9C, 0x09, 0x3E, 0xA6, 0x9B, 0x84, 0x98, 0x5D, 0x45, 0x91, 0xBB, 0x96, 0xDB, 0x7A, 0x8A, 0x0C, 0x6C, 0x3A, 0x94, 0xB8, 0xE7, 0x6E, 0x2D, 0x05, 0x0A, 0x93, 0x3C, 0x27, 0xC3, 0x88,
} ;
unsigned char param3_CIF[20] = {
0x01, 0x0F, 0x50, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xEF, 0xF3, 0xC3, 0x24, 0x4C, 0x60, 0x26, 0x35, 0x17, 0x84, 0x57,
} ;
/* Return values */
OCM Applications and procedures used in OpenMG modules
salwrap
20 calls to salExec0
OCM procedures used in API functions of salwrap.
* salApplyTokens: maclist(2,3) modify process-file
* salVerifyMacAndTranscrypt: maclist(4)
*salGetRightsNum: icv(9)
*OmgEkb::getOmgDeviceId: icv(5)
*getSalOmgId: icv(12)
OCM procedures used in internal functions of salwrap.
* OmgIcvCache::OmgIcvCache(): maclist(7,0) -create-new-maclist
*OmgIcvCache::OmgIcvCache() maclist(5) Restore ICV icv(4)
*internal: verifyMacListIcv - Oh My God maclist(1,6), icv(10)
*internal func: Xrefs: EkbSetImage, verifyEkbImages maclist(7)
*internal func: Xrefs: EkbSetImage, EkbCapabilityTable, verifyEkbImages maclist(8)
*internal func: icv(7) Xrefs OmgEkb::getImage, OmgEkb::setImage
OmgNetMD
16 calls to salExec0
*OCM procedures used in API functions of OmgNetMD.
*IOmgNetMD::AttemptCheckOut netmd(0,1) *IOmgNetMD::CompleteCheckOut2 netmd(2)
*IOmgNetMD::MultiCheckin netmd(3) Xrefs to: CompleteCheckIn, NextCheckIn
*OCM procedures used in internal functions of OmgNetMD.
NextCheckIn netmd(6)
CompleteCheckIn netmd(7)