M7350v7_en_gpl

This commit is contained in:
T
2024-09-09 08:59:52 +00:00
parent f75098198c
commit 46ba6f09ec
1372 changed files with 1231198 additions and 1184 deletions

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,108 @@
#ifndef __INC_RA_H
#define __INC_RA_H
/*++
Copyright (c) Realtek Semiconductor Corp. All rights reserved.
Module Name:
RateAdaptive.h
Abstract:
Prototype of RA and related data structure.
Major Change History:
When Who What
---------- --------------- -------------------------------
2011-08-12 Page Create.
--*/
// Rate adaptive define
#define PERENTRY 23
#define RETRYSIZE 5
#define RATESIZE 28
#define TX_RPT2_ITEM_SIZE 8
#if (DM_ODM_SUPPORT_TYPE != ODM_WIN)
//
// TX report 2 format in Rx desc
//
#define GET_TX_RPT2_DESC_PKT_LEN_88E(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc, 0, 9)
#define GET_TX_RPT2_DESC_MACID_VALID_1_88E(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+16, 0, 32)
#define GET_TX_RPT2_DESC_MACID_VALID_2_88E(__pRxStatusDesc) LE_BITS_TO_4BYTE( __pRxStatusDesc+20, 0, 32)
#define GET_TX_REPORT_TYPE1_RERTY_0(__pAddr) LE_BITS_TO_4BYTE( __pAddr, 0, 16)
#define GET_TX_REPORT_TYPE1_RERTY_1(__pAddr) LE_BITS_TO_1BYTE( __pAddr+2, 0, 8)
#define GET_TX_REPORT_TYPE1_RERTY_2(__pAddr) LE_BITS_TO_1BYTE( __pAddr+3, 0, 8)
#define GET_TX_REPORT_TYPE1_RERTY_3(__pAddr) LE_BITS_TO_1BYTE( __pAddr+4, 0, 8)
#define GET_TX_REPORT_TYPE1_RERTY_4(__pAddr) LE_BITS_TO_1BYTE( __pAddr+4+1, 0, 8)
#define GET_TX_REPORT_TYPE1_DROP_0(__pAddr) LE_BITS_TO_1BYTE( __pAddr+4+2, 0, 8)
#define GET_TX_REPORT_TYPE1_DROP_1(__pAddr) LE_BITS_TO_1BYTE( __pAddr+4+3, 0, 8)
#endif
// End rate adaptive define
VOID
ODM_RASupport_Init(
IN PDM_ODM_T pDM_Odm
);
int
ODM_RAInfo_Init_all(
IN PDM_ODM_T pDM_Odm
);
int
ODM_RAInfo_Init(
IN PDM_ODM_T pDM_Odm,
IN u1Byte MacID
);
u1Byte
ODM_RA_GetShortGI_8188E(
IN PDM_ODM_T pDM_Odm,
IN u1Byte MacID
);
u1Byte
ODM_RA_GetDecisionRate_8188E(
IN PDM_ODM_T pDM_Odm,
IN u1Byte MacID
);
u1Byte
ODM_RA_GetHwPwrStatus_8188E(
IN PDM_ODM_T pDM_Odm,
IN u1Byte MacID
);
VOID
ODM_RA_UpdateRateInfo_8188E(
IN PDM_ODM_T pDM_Odm,
IN u1Byte MacID,
IN u1Byte RateID,
IN u4Byte RateMask,
IN u1Byte SGIEnable
);
VOID
ODM_RA_SetRSSI_8188E(
IN PDM_ODM_T pDM_Odm,
IN u1Byte MacID,
IN u1Byte Rssi
);
VOID
ODM_RA_TxRPT2Handle_8188E(
IN PDM_ODM_T pDM_Odm,
IN pu1Byte TxRPT_Buf,
IN u2Byte TxRPT_Len,
IN u4Byte MacIDValidEntry0,
IN u4Byte MacIDValidEntry1
);
VOID
ODM_RA_Set_TxRPT_Time(
IN PDM_ODM_T pDM_Odm,
IN u2Byte minRptTime
);
#endif

View File

@ -0,0 +1,57 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
*
******************************************************************************/
//============================================================
// File Name: Hal8188EReg.h
//
// Description:
//
// This file is for RTL8188E register definition.
//
//
//============================================================
#ifndef __HAL_8188E_REG_H__
#define __HAL_8188E_REG_H__
//
// Register Definition
//
#define TRX_ANTDIV_PATH 0x860
#define RX_ANTDIV_PATH 0xb2c
#define ODM_R_A_AGC_CORE1_8188E 0xc50
//
// Bitmap Definition
//
#define BIT_FA_RESET_8188E BIT0
#define REG_ADAPTIVE_DATA_RATE_0 0x2B0
#define REG_DBI_WDATA_8188 0x0348 // DBI Write Data
#define REG_DBI_RDATA_8188 0x034C // DBI Read Data
#define REG_DBI_ADDR_8188 0x0350 // DBI Address
#define REG_DBI_FLAG_8188 0x0352 // DBI Read/Write Flag
#define REG_MDIO_WDATA_8188E 0x0354 // MDIO for Write PCIE PHY
#define REG_MDIO_RDATA_8188E 0x0356 // MDIO for Reads PCIE PHY
#define REG_MDIO_CTL_8188E 0x0358 // MDIO for Control
// [0-63]
#define REG_MACID_NO_LINK 0x484 // No Link register (bit[x] enabled means dropping packets for MACID in HW queue)
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,59 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
*
******************************************************************************/
/*Image2HeaderVersion: 2.14*/
#if (RTL8188E_SUPPORT == 1)
#ifndef __INC_MP_BB_HW_IMG_8188E_H
#define __INC_MP_BB_HW_IMG_8188E_H
/******************************************************************************
* AGC_TAB.TXT
******************************************************************************/
void
ODM_ReadAndConfig_MP_8188E_AGC_TAB(/* TC: Test Chip, MP: MP Chip*/
IN PDM_ODM_T pDM_Odm
);
u4Byte ODM_GetVersion_MP_8188E_AGC_TAB(void);
/******************************************************************************
* PHY_REG.TXT
******************************************************************************/
void
ODM_ReadAndConfig_MP_8188E_PHY_REG(/* TC: Test Chip, MP: MP Chip*/
IN PDM_ODM_T pDM_Odm
);
u4Byte ODM_GetVersion_MP_8188E_PHY_REG(void);
/******************************************************************************
* PHY_REG_PG.TXT
******************************************************************************/
void
ODM_ReadAndConfig_MP_8188E_PHY_REG_PG(/* TC: Test Chip, MP: MP Chip*/
IN PDM_ODM_T pDM_Odm
);
u4Byte ODM_GetVersion_MP_8188E_PHY_REG_PG(void);
#endif
#endif /* end of HWIMG_SUPPORT*/

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,63 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
*
******************************************************************************/
#if (RTL8188E_SUPPORT == 1)
#ifndef __INC_FW_8188E_HW_IMG_H
#define __INC_FW_8188E_HW_IMG_H
/******************************************************************************
* FW_AP.TXT
******************************************************************************/
#ifdef CONFIG_POWER_SAVE
#define ArrayLength_8188E_FW_AP_T 16220
#define ArrayLength_8188E_FW_AP_S 22192
#elif defined(SDIO_AP_OFFLOAD)
#define ArrayLength_8188E_FW_AP 14062
#else
#define ArrayLength_8188E_FW_AP_T 16220
#define ArrayLength_8188E_FW_AP_S 22192
#endif
extern u1Byte Array_8188E_FW_AP_T[ArrayLength_8188E_FW_AP_T];
extern u1Byte Array_8188E_FW_AP_S[ArrayLength_8188E_FW_AP_S];
/******************************************************************************
* FW_NIC.TXT
******************************************************************************/
#if 0
#define ArrayLength_8188E_FW_NIC 14490
extern u1Byte Array_8188E_FW_NIC[ArrayLength_8188E_FW_NIC];
#endif
/******************************************************************************
* FW_WoWLAN.TXT
******************************************************************************/
#if 0
#define ArrayLength_8188E_FW_WoWLAN 14702
extern u1Byte Array_8188E_FW_WoWLAN[ArrayLength_8188E_FW_WoWLAN];
#endif
#endif
#endif // end of HWIMG_SUPPORT

View File

@ -0,0 +1,286 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
*
******************************************************************************/
/*Image2HeaderVersion: 2.14*/
#include "Mp_Precomp.h"
#include "../phydm_precomp.h"
#if (RTL8188E_SUPPORT == 1)
static BOOLEAN
CheckPositive(
IN PDM_ODM_T pDM_Odm,
IN const u4Byte Condition1,
IN const u4Byte Condition2,
IN const u4Byte Condition3,
IN const u4Byte Condition4
)
{
u1Byte _BoardType = ((pDM_Odm->BoardType & BIT4) >> 4) << 0 | /* _GLNA*/
((pDM_Odm->BoardType & BIT3) >> 3) << 1 | /* _GPA*/
((pDM_Odm->BoardType & BIT7) >> 7) << 2 | /* _ALNA*/
((pDM_Odm->BoardType & BIT6) >> 6) << 3 | /* _APA */
((pDM_Odm->BoardType & BIT2) >> 2) << 4; /* _BT*/
u4Byte cond1 = Condition1, cond2 = Condition2, cond3 = Condition3, cond4 = Condition4;
u4Byte driver1 = pDM_Odm->CutVersion << 24 |
(pDM_Odm->SupportInterface & 0xF0) << 16 |
pDM_Odm->SupportPlatform << 16 |
pDM_Odm->PackageType << 12 |
(pDM_Odm->SupportInterface & 0x0F) << 8 |
_BoardType;
u4Byte driver2 = (pDM_Odm->TypeGLNA & 0xFF) << 0 |
(pDM_Odm->TypeGPA & 0xFF) << 8 |
(pDM_Odm->TypeALNA & 0xFF) << 16 |
(pDM_Odm->TypeAPA & 0xFF) << 24;
u4Byte driver3 = 0;
u4Byte driver4 = (pDM_Odm->TypeGLNA & 0xFF00) >> 8 |
(pDM_Odm->TypeGPA & 0xFF00) |
(pDM_Odm->TypeALNA & 0xFF00) << 8 |
(pDM_Odm->TypeAPA & 0xFF00) << 16;
ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
("===> CheckPositive (cond1, cond2, cond3, cond4) = (0x%X 0x%X 0x%X 0x%X)\n", cond1, cond2, cond3, cond4));
ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
("===> CheckPositive (driver1, driver2, driver3, driver4) = (0x%X 0x%X 0x%X 0x%X)\n", driver1, driver2, driver3, driver4));
ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
(" (Platform, Interface) = (0x%X, 0x%X)\n", pDM_Odm->SupportPlatform, pDM_Odm->SupportInterface));
ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
(" (Board, Package) = (0x%X, 0x%X)\n", pDM_Odm->BoardType, pDM_Odm->PackageType));
/*============== Value Defined Check ===============*/
/*QFN Type [15:12] and Cut Version [27:24] need to do value check*/
if (((cond1 & 0x0000F000) != 0) && ((cond1 & 0x0000F000) != (driver1 & 0x0000F000)))
return FALSE;
if (((cond1 & 0x0F000000) != 0) && ((cond1 & 0x0F000000) != (driver1 & 0x0F000000)))
return FALSE;
/*=============== Bit Defined Check ================*/
/* We don't care [31:28] */
cond1 &= 0x00FF0FFF;
driver1 &= 0x00FF0FFF;
if ((cond1 & driver1) == cond1) {
u4Byte bitMask = 0;
if ((cond1 & 0x0F) == 0) /* BoardType is DONTCARE*/
return TRUE;
if ((cond1 & BIT0) != 0) /*GLNA*/
bitMask |= 0x000000FF;
if ((cond1 & BIT1) != 0) /*GPA*/
bitMask |= 0x0000FF00;
if ((cond1 & BIT2) != 0) /*ALNA*/
bitMask |= 0x00FF0000;
if ((cond1 & BIT3) != 0) /*APA*/
bitMask |= 0xFF000000;
if (((cond2 & bitMask) == (driver2 & bitMask)) && ((cond4 & bitMask) == (driver4 & bitMask))) /* BoardType of each RF path is matched*/
return TRUE;
else
return FALSE;
} else
return FALSE;
}
static BOOLEAN
CheckNegative(
IN PDM_ODM_T pDM_Odm,
IN const u4Byte Condition1,
IN const u4Byte Condition2
)
{
return TRUE;
}
/******************************************************************************
* MAC_REG.TXT
******************************************************************************/
u4Byte Array_MP_8188E_MAC_REG[] = {
0x026, 0x00000041,
0x027, 0x00000035,
0x80000003, 0x00000000, 0x40000000, 0x00000000,
0x040, 0x0000000C,
0x90000001, 0x00000000, 0x40000000, 0x00000000,
0x040, 0x0000000C,
0xA0000000, 0x00000000,
0x040, 0x00000000,
0xB0000000, 0x00000000,
0x421, 0x0000000F,
0x428, 0x0000000A,
0x429, 0x00000010,
0x430, 0x00000000,
0x431, 0x00000001,
0x432, 0x00000002,
0x433, 0x00000004,
0x434, 0x00000005,
0x435, 0x00000006,
0x436, 0x00000007,
0x437, 0x00000008,
0x438, 0x00000000,
0x439, 0x00000000,
0x43A, 0x00000001,
0x43B, 0x00000002,
0x43C, 0x00000004,
0x43D, 0x00000005,
0x43E, 0x00000006,
0x43F, 0x00000007,
0x440, 0x0000005D,
0x441, 0x00000001,
0x442, 0x00000000,
0x444, 0x00000015,
0x445, 0x000000F0,
0x446, 0x0000000F,
0x447, 0x00000000,
0x458, 0x00000041,
0x459, 0x000000A8,
0x45A, 0x00000072,
0x45B, 0x000000B9,
0x460, 0x00000066,
0x461, 0x00000066,
0x480, 0x00000008,
0x4C8, 0x000000FF,
0x4C9, 0x00000008,
0x4CC, 0x000000FF,
0x4CD, 0x000000FF,
0x4CE, 0x00000001,
0x4D3, 0x00000001,
0x500, 0x00000026,
0x501, 0x000000A2,
0x502, 0x0000002F,
0x503, 0x00000000,
0x504, 0x00000028,
0x505, 0x000000A3,
0x506, 0x0000005E,
0x507, 0x00000000,
0x508, 0x0000002B,
0x509, 0x000000A4,
0x50A, 0x0000005E,
0x50B, 0x00000000,
0x50C, 0x0000004F,
0x50D, 0x000000A4,
0x50E, 0x00000000,
0x50F, 0x00000000,
0x512, 0x0000001C,
0x514, 0x0000000A,
0x516, 0x0000000A,
0x525, 0x0000004F,
0x550, 0x00000010,
0x551, 0x00000010,
0x559, 0x00000002,
0x55D, 0x000000FF,
0x605, 0x00000030,
0x608, 0x0000000E,
0x609, 0x0000002A,
0x620, 0x000000FF,
0x621, 0x000000FF,
0x622, 0x000000FF,
0x623, 0x000000FF,
0x624, 0x000000FF,
0x625, 0x000000FF,
0x626, 0x000000FF,
0x627, 0x000000FF,
0x63C, 0x00000008,
0x63D, 0x00000008,
0x63E, 0x0000000C,
0x63F, 0x0000000C,
0x640, 0x00000040,
0x652, 0x00000020,
0x66E, 0x00000005,
0x700, 0x00000021,
0x701, 0x00000043,
0x702, 0x00000065,
0x703, 0x00000087,
0x708, 0x00000021,
0x709, 0x00000043,
0x70A, 0x00000065,
0x70B, 0x00000087,
};
void
ODM_ReadAndConfig_MP_8188E_MAC_REG(
IN PDM_ODM_T pDM_Odm
)
{
u4Byte i = 0;
u1Byte cCond;
BOOLEAN bMatched = TRUE, bSkipped = FALSE;
u4Byte ArrayLen = sizeof(Array_MP_8188E_MAC_REG)/sizeof(u4Byte);
pu4Byte Array = Array_MP_8188E_MAC_REG;
u4Byte v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;
ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ReadAndConfig_MP_8188E_MAC_REG\n"));
while ((i + 1) < ArrayLen) {
v1 = Array[i];
v2 = Array[i + 1];
if (v1 & (BIT31 | BIT30)) {/*positive & negative condition*/
if (v1 & BIT31) {/* positive condition*/
cCond = (u1Byte)((v1 & (BIT29|BIT28)) >> 28);
if (cCond == COND_ENDIF) {/*end*/
bMatched = TRUE;
bSkipped = FALSE;
ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ENDIF\n"));
} else if (cCond == COND_ELSE) { /*else*/
bMatched = bSkipped?FALSE:TRUE;
ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ELSE\n"));
}
else {/*if , else if*/
pre_v1 = v1;
pre_v2 = v2;
ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("IF or ELSE IF\n"));
}
} else if (v1 & BIT30) { /*negative condition*/
if (bSkipped == FALSE) {
if (CheckPositive(pDM_Odm, pre_v1, pre_v2, v1, v2)) {
bMatched = TRUE;
bSkipped = TRUE;
} else {
bMatched = FALSE;
bSkipped = FALSE;
}
} else
bMatched = FALSE;
}
} else {
if (bMatched)
odm_ConfigMAC_8188E(pDM_Odm, v1, (u1Byte)v2);
}
i = i + 2;
}
}
u4Byte
ODM_GetVersion_MP_8188E_MAC_REG(void)
{
return 63;
}
#endif /* end of HWIMG_SUPPORT*/

View File

@ -0,0 +1,39 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
*
******************************************************************************/
/*Image2HeaderVersion: 2.14*/
#if (RTL8188E_SUPPORT == 1)
#ifndef __INC_MP_MAC_HW_IMG_8188E_H
#define __INC_MP_MAC_HW_IMG_8188E_H
/******************************************************************************
* MAC_REG.TXT
******************************************************************************/
void
ODM_ReadAndConfig_MP_8188E_MAC_REG(/* TC: Test Chip, MP: MP Chip*/
IN PDM_ODM_T pDM_Odm
);
u4Byte ODM_GetVersion_MP_8188E_MAC_REG(void);
#endif
#endif /* end of HWIMG_SUPPORT*/

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,99 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
*
******************************************************************************/
/*Image2HeaderVersion: 2.14*/
#if (RTL8188E_SUPPORT == 1)
#ifndef __INC_MP_RF_HW_IMG_8188E_H
#define __INC_MP_RF_HW_IMG_8188E_H
/******************************************************************************
* RadioA.TXT
******************************************************************************/
void
ODM_ReadAndConfig_MP_8188E_RadioA(/* TC: Test Chip, MP: MP Chip*/
IN PDM_ODM_T pDM_Odm
);
u4Byte ODM_GetVersion_MP_8188E_RadioA(void);
/******************************************************************************
* TxPowerTrack_AP.TXT
******************************************************************************/
void
ODM_ReadAndConfig_MP_8188E_TxPowerTrack_AP(/* TC: Test Chip, MP: MP Chip*/
IN PDM_ODM_T pDM_Odm
);
u4Byte ODM_GetVersion_MP_8188E_TxPowerTrack_AP(void);
/******************************************************************************
* TxPowerTrack_PCIE.TXT
******************************************************************************/
void
ODM_ReadAndConfig_MP_8188E_TxPowerTrack_PCIE(/* TC: Test Chip, MP: MP Chip*/
IN PDM_ODM_T pDM_Odm
);
u4Byte ODM_GetVersion_MP_8188E_TxPowerTrack_PCIE(void);
/******************************************************************************
* TxPowerTrack_SDIO.TXT
******************************************************************************/
void
ODM_ReadAndConfig_MP_8188E_TxPowerTrack_SDIO(/* TC: Test Chip, MP: MP Chip*/
IN PDM_ODM_T pDM_Odm
);
u4Byte ODM_GetVersion_MP_8188E_TxPowerTrack_SDIO(void);
/******************************************************************************
* TxPowerTrack_USB.TXT
******************************************************************************/
void
ODM_ReadAndConfig_MP_8188E_TxPowerTrack_USB(/* TC: Test Chip, MP: MP Chip*/
IN PDM_ODM_T pDM_Odm
);
u4Byte ODM_GetVersion_MP_8188E_TxPowerTrack_USB(void);
/******************************************************************************
* TXPWR_LMT.TXT
******************************************************************************/
void
ODM_ReadAndConfig_MP_8188E_TXPWR_LMT(/* TC: Test Chip, MP: MP Chip*/
IN PDM_ODM_T pDM_Odm
);
u4Byte ODM_GetVersion_MP_8188E_TXPWR_LMT(void);
/******************************************************************************
* TXPWR_LMT_88EE_M2_for_MSI.TXT
******************************************************************************/
void
ODM_ReadAndConfig_MP_8188E_TXPWR_LMT_88EE_M2_for_MSI(/* TC: Test Chip, MP: MP Chip*/
IN PDM_ODM_T pDM_Odm
);
u4Byte ODM_GetVersion_MP_8188E_TXPWR_LMT_88EE_M2_for_MSI(void);
#endif
#endif /* end of HWIMG_SUPPORT*/

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,136 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
*
******************************************************************************/
#ifndef __HAL_PHY_RF_8188E_H__
#define __HAL_PHY_RF_8188E_H__
/*--------------------------Define Parameters-------------------------------*/
#define IQK_DELAY_TIME_88E 10 //ms
#define index_mapping_NUM_88E 15
#define AVG_THERMAL_NUM_88E 4
#include "../HalPhyRf_AP.h"
void ConfigureTxpowerTrack_8188E(
PTXPWRTRACK_CFG pConfig
);
void DoIQK_8188E(
PVOID pDM_VOID,
u1Byte DeltaThermalIndex,
u1Byte ThermalValue,
u1Byte Threshold
);
VOID
ODM_TxPwrTrackSetPwr88E(
PDM_ODM_T pDM_Odm,
PWRTRACK_METHOD Method,
u1Byte RFPath,
u1Byte ChannelMappedIndex
);
//1 7. IQK
void
PHY_IQCalibrate_8188E(
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
IN PDM_ODM_T pDM_Odm,
#else
IN PADAPTER Adapter,
#endif
IN BOOLEAN bReCovery);
//
// LC calibrate
//
void
PHY_LCCalibrate_8188E(
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
IN PDM_ODM_T pDM_Odm
#else
IN PADAPTER pAdapter
#endif
);
//
// AP calibrate
//
void
PHY_APCalibrate_8188E(
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
IN PDM_ODM_T pDM_Odm,
#else
IN PADAPTER pAdapter,
#endif
IN s1Byte delta);
void
PHY_DigitalPredistortion_8188E( IN PADAPTER pAdapter);
VOID
_PHY_SaveADDARegisters(
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
IN PDM_ODM_T pDM_Odm,
#else
IN PADAPTER pAdapter,
#endif
IN pu4Byte ADDAReg,
IN pu4Byte ADDABackup,
IN u4Byte RegisterNum
);
VOID
_PHY_PathADDAOn(
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
IN PDM_ODM_T pDM_Odm,
#else
IN PADAPTER pAdapter,
#endif
IN pu4Byte ADDAReg,
IN BOOLEAN isPathAOn,
IN BOOLEAN is2T
);
VOID
_PHY_MACSettingCalibration(
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
IN PDM_ODM_T pDM_Odm,
#else
IN PADAPTER pAdapter,
#endif
IN pu4Byte MACReg,
IN pu4Byte MACBackup
);
VOID
_PHY_PathAStandBy(
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
IN PDM_ODM_T pDM_Odm
#else
IN PADAPTER pAdapter
#endif
);
#endif // #ifndef __HAL_PHY_RF_8188E_H__

View File

@ -0,0 +1,479 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
*
******************************************************************************/
//============================================================
// include files
//============================================================
#include "Mp_Precomp.h"
#include "../phydm_precomp.h"
#if (RTL8188E_SUPPORT == 1)
VOID
ODM_DIG_LowerBound_88E(
IN PDM_ODM_T pDM_Odm
)
{
pDIG_T pDM_DigTable = &pDM_Odm->DM_DigTable;
if(pDM_Odm->AntDivType == CG_TRX_HW_ANTDIV)
{
pDM_DigTable->rx_gain_range_min = (u1Byte) pDM_DigTable->AntDiv_RSSI_max;
ODM_RT_TRACE(pDM_Odm,ODM_COMP_ANT_DIV, ODM_DBG_LOUD, ("ODM_DIG_LowerBound_88E(): pDM_DigTable->AntDiv_RSSI_max=%d \n",pDM_DigTable->AntDiv_RSSI_max));
}
//If only one Entry connected
}
/*=============================================================
* AntDiv Before Link
===============================================================*/
VOID
ODM_SwAntDivResetBeforeLink(
IN PDM_ODM_T pDM_Odm
)
{
pSWAT_T pDM_SWAT_Table = &pDM_Odm->DM_SWAT_Table;
pDM_SWAT_Table->SWAS_NoLink_State = 0;
}
//3============================================================
//3 Dynamic Primary CCA
//3============================================================
VOID
odm_PrimaryCCA_Init(
IN PDM_ODM_T pDM_Odm)
{
pPri_CCA_T PrimaryCCA = &(pDM_Odm->DM_PriCCA);
PrimaryCCA->DupRTS_flag = 0;
PrimaryCCA->intf_flag = 0;
PrimaryCCA->intf_type = 0;
PrimaryCCA->Monitor_flag = 0;
PrimaryCCA->PriCCA_flag = 0;
}
BOOLEAN
ODM_DynamicPrimaryCCA_DupRTS(
IN PDM_ODM_T pDM_Odm
)
{
pPri_CCA_T PrimaryCCA = &(pDM_Odm->DM_PriCCA);
return PrimaryCCA->DupRTS_flag;
}
VOID
odm_DynamicPrimaryCCA(
IN PDM_ODM_T pDM_Odm
)
{
#if(DM_ODM_SUPPORT_TYPE !=ODM_CE)
PADAPTER Adapter = pDM_Odm->Adapter; // for NIC
#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN))
PRT_WLAN_STA pEntry;
#endif
PFALSE_ALARM_STATISTICS FalseAlmCnt = (PFALSE_ALARM_STATISTICS)PhyDM_Get_Structure( pDM_Odm , PHYDM_FALSEALMCNT);
pPri_CCA_T PrimaryCCA = &(pDM_Odm->DM_PriCCA);
BOOLEAN Is40MHz;
BOOLEAN Client_40MHz = FALSE, Client_tmp = FALSE; // connected client BW
BOOLEAN bConnected = FALSE; // connected or not
static u1Byte Client_40MHz_pre = 0;
static u8Byte lastTxOkCnt = 0;
static u8Byte lastRxOkCnt = 0;
static u4Byte Counter = 0;
static u1Byte Delay = 1;
u8Byte curTxOkCnt;
u8Byte curRxOkCnt;
u1Byte SecCHOffset;
u1Byte i;
if(!(pDM_Odm->SupportAbility & ODM_BB_PRIMARY_CCA))
return;
if(pDM_Odm->SupportICType != ODM_RTL8188E)
return;
Is40MHz = *(pDM_Odm->pBandWidth);
SecCHOffset = *(pDM_Odm->pSecChOffset);
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("Second CH Offset = %d\n", SecCHOffset));
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
if(Is40MHz==1)
SecCHOffset = SecCHOffset%2+1; // NIC's definition is reverse to AP 1:secondary below, 2: secondary above
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("Second CH Offset = %d\n", SecCHOffset));
//3 Check Current WLAN Traffic
curTxOkCnt = Adapter->TxStats.NumTxBytesUnicast - lastTxOkCnt;
curRxOkCnt = Adapter->RxStats.NumRxBytesUnicast - lastRxOkCnt;
lastTxOkCnt = Adapter->TxStats.NumTxBytesUnicast;
lastRxOkCnt = Adapter->RxStats.NumRxBytesUnicast;
#elif (DM_ODM_SUPPORT_TYPE == ODM_AP)
//3 Check Current WLAN Traffic
curTxOkCnt = *(pDM_Odm->pNumTxBytesUnicast)-lastTxOkCnt;
curRxOkCnt = *(pDM_Odm->pNumRxBytesUnicast)-lastRxOkCnt;
lastTxOkCnt = *(pDM_Odm->pNumTxBytesUnicast);
lastRxOkCnt = *(pDM_Odm->pNumRxBytesUnicast);
#endif
//==================Debug Message====================
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("TP = %llu\n", curTxOkCnt+curRxOkCnt));
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("Is40MHz = %d\n", Is40MHz));
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("BW_LSC = %d\n", FalseAlmCnt->Cnt_BW_LSC));
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("BW_USC = %d\n", FalseAlmCnt->Cnt_BW_USC));
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("CCA OFDM = %d\n", FalseAlmCnt->Cnt_OFDM_CCA));
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("CCA CCK = %d\n", FalseAlmCnt->Cnt_CCK_CCA));
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("OFDM FA = %d\n", FalseAlmCnt->Cnt_Ofdm_fail));
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("CCK FA = %d\n", FalseAlmCnt->Cnt_Cck_fail));
//================================================
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
if (ACTING_AS_AP(Adapter)) // primary cca process only do at AP mode
#endif
{
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("ACTING as AP mode=%d\n", ACTING_AS_AP(Adapter)));
//3 To get entry's connection and BW infomation status.
for(i=0;i<ASSOCIATE_ENTRY_NUM;i++)
{
if(IsAPModeExist(Adapter)&&GetFirstExtAdapter(Adapter)!=NULL)
pEntry=AsocEntry_EnumStation(GetFirstExtAdapter(Adapter), i);
else
pEntry=AsocEntry_EnumStation(GetDefaultAdapter(Adapter), i);
if(pEntry!=NULL)
{
Client_tmp = pEntry->BandWidth; // client BW
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("Client_BW=%d\n", Client_tmp));
if(Client_tmp>Client_40MHz)
Client_40MHz = Client_tmp; // 40M/20M coexist => 40M priority is High
if(pEntry->bAssociated)
{
bConnected=TRUE; // client is connected or not
break;
}
}
else
{
break;
}
}
#elif (DM_ODM_SUPPORT_TYPE == ODM_AP)
//3 To get entry's connection and BW infomation status.
PSTA_INFO_T pstat;
for(i=0; i<ODM_ASSOCIATE_ENTRY_NUM; i++)
{
pstat = pDM_Odm->pODM_StaInfo[i];
if(IS_STA_VALID(pstat) )
{
Client_tmp = pstat->tx_bw;
if(Client_tmp>Client_40MHz)
Client_40MHz = Client_tmp; // 40M/20M coexist => 40M priority is High
bConnected = TRUE;
}
}
#endif
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("bConnected=%d\n", bConnected));
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("Is Client 40MHz=%d\n", Client_40MHz));
//1 Monitor whether the interference exists or not
if(PrimaryCCA->Monitor_flag == 1)
{
if(SecCHOffset == 1) // secondary channel is below the primary channel
{
if((FalseAlmCnt->Cnt_OFDM_CCA > 500)&&(FalseAlmCnt->Cnt_BW_LSC > FalseAlmCnt->Cnt_BW_USC+500))
{
if(FalseAlmCnt->Cnt_Ofdm_fail > FalseAlmCnt->Cnt_OFDM_CCA>>1)
{
PrimaryCCA->intf_type = 1;
PrimaryCCA->PriCCA_flag = 1;
ODM_SetBBReg(pDM_Odm, 0xc6c, BIT8|BIT7, 2); // USC MF
if(PrimaryCCA->DupRTS_flag == 1)
PrimaryCCA->DupRTS_flag = 0;
}
else
{
PrimaryCCA->intf_type = 2;
if(PrimaryCCA->DupRTS_flag == 0)
PrimaryCCA->DupRTS_flag = 1;
}
}
else // interferecne disappear
{
PrimaryCCA->DupRTS_flag = 0;
PrimaryCCA->intf_flag = 0;
PrimaryCCA->intf_type = 0;
}
}
else if(SecCHOffset == 2) // secondary channel is above the primary channel
{
if((FalseAlmCnt->Cnt_OFDM_CCA > 500)&&(FalseAlmCnt->Cnt_BW_USC > FalseAlmCnt->Cnt_BW_LSC+500))
{
if(FalseAlmCnt->Cnt_Ofdm_fail > FalseAlmCnt->Cnt_OFDM_CCA>>1)
{
PrimaryCCA->intf_type = 1;
PrimaryCCA->PriCCA_flag = 1;
ODM_SetBBReg(pDM_Odm, 0xc6c, BIT8|BIT7, 1); // LSC MF
if(PrimaryCCA->DupRTS_flag == 1)
PrimaryCCA->DupRTS_flag = 0;
}
else
{
PrimaryCCA->intf_type = 2;
if(PrimaryCCA->DupRTS_flag == 0)
PrimaryCCA->DupRTS_flag = 1;
}
}
else // interferecne disappear
{
PrimaryCCA->DupRTS_flag = 0;
PrimaryCCA->intf_flag = 0;
PrimaryCCA->intf_type = 0;
}
}
PrimaryCCA->Monitor_flag = 0;
}
//1 Dynamic Primary CCA Main Function
if(PrimaryCCA->Monitor_flag == 0)
{
if(Is40MHz) // if RFBW==40M mode which require to process primary cca
{
//2 STA is NOT Connected
if(!bConnected)
{
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("STA NOT Connected!!!!\n"));
if(PrimaryCCA->PriCCA_flag == 1) // reset primary cca when STA is disconnected
{
PrimaryCCA->PriCCA_flag = 0;
ODM_SetBBReg(pDM_Odm, 0xc6c, BIT8|BIT7, 0);
}
if(PrimaryCCA->DupRTS_flag == 1) // reset Duplicate RTS when STA is disconnected
PrimaryCCA->DupRTS_flag = 0;
if(SecCHOffset == 1) // secondary channel is below the primary channel
{
if((FalseAlmCnt->Cnt_OFDM_CCA > 800)&&(FalseAlmCnt->Cnt_BW_LSC*5 > FalseAlmCnt->Cnt_BW_USC*9))
{
PrimaryCCA->intf_flag = 1; // secondary channel interference is detected!!!
if(FalseAlmCnt->Cnt_Ofdm_fail > FalseAlmCnt->Cnt_OFDM_CCA>>1)
PrimaryCCA->intf_type = 1; // interference is shift
else
PrimaryCCA->intf_type = 2; // interference is in-band
}
else
{
PrimaryCCA->intf_flag = 0;
PrimaryCCA->intf_type = 0;
}
}
else if(SecCHOffset == 2) // secondary channel is above the primary channel
{
if((FalseAlmCnt->Cnt_OFDM_CCA > 800)&&(FalseAlmCnt->Cnt_BW_USC*5 > FalseAlmCnt->Cnt_BW_LSC*9))
{
PrimaryCCA->intf_flag = 1; // secondary channel interference is detected!!!
if(FalseAlmCnt->Cnt_Ofdm_fail > FalseAlmCnt->Cnt_OFDM_CCA>>1)
PrimaryCCA->intf_type = 1; // interference is shift
else
PrimaryCCA->intf_type = 2; // interference is in-band
}
else
{
PrimaryCCA->intf_flag = 0;
PrimaryCCA->intf_type = 0;
}
}
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("PrimaryCCA=%d\n",PrimaryCCA->PriCCA_flag));
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("Intf_Type=%d\n", PrimaryCCA->intf_type));
}
//2 STA is Connected
else
{
if(Client_40MHz == 0) //3 // client BW = 20MHz
{
if(PrimaryCCA->PriCCA_flag == 0)
{
PrimaryCCA->PriCCA_flag = 1;
if(SecCHOffset==1)
ODM_SetBBReg(pDM_Odm, 0xc6c, BIT8|BIT7, 2);
else if(SecCHOffset==2)
ODM_SetBBReg(pDM_Odm, 0xc6c, BIT8|BIT7, 1);
}
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("STA Connected 20M!!! PrimaryCCA=%d\n", PrimaryCCA->PriCCA_flag));
}
else //3 // client BW = 40MHz
{
if(PrimaryCCA->intf_flag == 1) // interference is detected!!
{
if(PrimaryCCA->intf_type == 1)
{
if(PrimaryCCA->PriCCA_flag!=1)
{
PrimaryCCA->PriCCA_flag = 1;
if(SecCHOffset==1)
ODM_SetBBReg(pDM_Odm, 0xc6c, BIT8|BIT7, 2);
else if(SecCHOffset==2)
ODM_SetBBReg(pDM_Odm, 0xc6c, BIT8|BIT7, 1);
}
}
else if(PrimaryCCA->intf_type == 2)
{
if(PrimaryCCA->DupRTS_flag!=1)
PrimaryCCA->DupRTS_flag = 1;
}
}
else // if intf_flag==0
{
if((curTxOkCnt+curRxOkCnt)<10000) //idle mode or TP traffic is very low
{
if(SecCHOffset == 1)
{
if((FalseAlmCnt->Cnt_OFDM_CCA > 800)&&(FalseAlmCnt->Cnt_BW_LSC*5 > FalseAlmCnt->Cnt_BW_USC*9))
{
PrimaryCCA->intf_flag = 1;
if(FalseAlmCnt->Cnt_Ofdm_fail > FalseAlmCnt->Cnt_OFDM_CCA>>1)
PrimaryCCA->intf_type = 1; // interference is shift
else
PrimaryCCA->intf_type = 2; // interference is in-band
}
}
else if(SecCHOffset == 2)
{
if((FalseAlmCnt->Cnt_OFDM_CCA > 800)&&(FalseAlmCnt->Cnt_BW_USC*5 > FalseAlmCnt->Cnt_BW_LSC*9))
{
PrimaryCCA->intf_flag = 1;
if(FalseAlmCnt->Cnt_Ofdm_fail > FalseAlmCnt->Cnt_OFDM_CCA>>1)
PrimaryCCA->intf_type = 1; // interference is shift
else
PrimaryCCA->intf_type = 2; // interference is in-band
}
}
}
else // TP Traffic is High
{
if(SecCHOffset == 1)
{
if(FalseAlmCnt->Cnt_BW_LSC > (FalseAlmCnt->Cnt_BW_USC+500))
{
if(Delay == 0) // add delay to avoid interference occurring abruptly, jump one time
{
PrimaryCCA->intf_flag = 1;
if(FalseAlmCnt->Cnt_Ofdm_fail > FalseAlmCnt->Cnt_OFDM_CCA>>1)
PrimaryCCA->intf_type = 1; // interference is shift
else
PrimaryCCA->intf_type = 2; // interference is in-band
Delay = 1;
}
else
Delay = 0;
}
}
else if(SecCHOffset == 2)
{
if(FalseAlmCnt->Cnt_BW_USC > (FalseAlmCnt->Cnt_BW_LSC+500))
{
if(Delay == 0) // add delay to avoid interference occurring abruptly
{
PrimaryCCA->intf_flag = 1;
if(FalseAlmCnt->Cnt_Ofdm_fail > FalseAlmCnt->Cnt_OFDM_CCA>>1)
PrimaryCCA->intf_type = 1; // interference is shift
else
PrimaryCCA->intf_type = 2; // interference is in-band
Delay = 1;
}
else
Delay = 0;
}
}
}
}
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("Primary CCA=%d\n", PrimaryCCA->PriCCA_flag));
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("Duplicate RTS=%d\n", PrimaryCCA->DupRTS_flag));
}
}// end of connected
}
}
//1 Dynamic Primary CCA Monitor Counter
if((PrimaryCCA->PriCCA_flag == 1)||(PrimaryCCA->DupRTS_flag == 1))
{
if(Client_40MHz == 0) // client=20M no need to monitor primary cca flag
{
Client_40MHz_pre = Client_40MHz;
return;
}
Counter++;
ODM_RT_TRACE(pDM_Odm,ODM_COMP_DYNAMIC_PRICCA, ODM_DBG_LOUD, ("Counter=%d\n", Counter));
if((Counter == 30)||((Client_40MHz -Client_40MHz_pre)==1)) // Every 60 sec to monitor one time
{
PrimaryCCA->Monitor_flag = 1; // monitor flag is triggered!!!!!
if(PrimaryCCA->PriCCA_flag == 1)
{
PrimaryCCA->PriCCA_flag = 0;
ODM_SetBBReg(pDM_Odm, 0xc6c, BIT8|BIT7, 0);
}
Counter = 0;
}
}
}
Client_40MHz_pre = Client_40MHz;
#endif
}
#else //#if (RTL8188E_SUPPORT == 1)
VOID
odm_PrimaryCCA_Init(
IN PDM_ODM_T pDM_Odm)
{
}
VOID
odm_DynamicPrimaryCCA(
IN PDM_ODM_T pDM_Odm
)
{
}
BOOLEAN
ODM_DynamicPrimaryCCA_DupRTS(
IN PDM_ODM_T pDM_Odm
)
{
return FALSE;
}
#endif //#if (RTL8188E_SUPPORT == 1)

View File

@ -0,0 +1,69 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
*
******************************************************************************/
#ifndef __ODM_RTL8188E_H__
#define __ODM_RTL8188E_H__
#define MAIN_ANT_CG_TRX 1
#define AUX_ANT_CG_TRX 0
#define MAIN_ANT_CGCS_RX 0
#define AUX_ANT_CGCS_RX 1
VOID
ODM_DIG_LowerBound_88E(
IN PDM_ODM_T pDM_Odm
);
#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))
#define SwAntDivResetBeforeLink ODM_SwAntDivResetBeforeLink
VOID ODM_SwAntDivResetBeforeLink(IN PDM_ODM_T pDM_Odm);
VOID
ODM_SetTxAntByTxInfo_88E(
IN PDM_ODM_T pDM_Odm,
IN pu1Byte pDesc,
IN u1Byte macId
);
#else// (DM_ODM_SUPPORT_TYPE == ODM_AP)
VOID
ODM_SetTxAntByTxInfo_88E(
IN PDM_ODM_T pDM_Odm
);
#endif
VOID
odm_PrimaryCCA_Init(
IN PDM_ODM_T pDM_Odm);
BOOLEAN
ODM_DynamicPrimaryCCA_DupRTS(
IN PDM_ODM_T pDM_Odm);
VOID
odm_DynamicPrimaryCCA(
IN PDM_ODM_T pDM_Odm);
#endif

View File

@ -0,0 +1,245 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
*
******************************************************************************/
#include "Mp_Precomp.h"
#include "../phydm_precomp.h"
#if (RTL8188E_SUPPORT == 1)
void
odm_ConfigRFReg_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Addr,
IN u4Byte Data,
IN ODM_RF_RADIO_PATH_E RF_PATH,
IN u4Byte RegAddr
)
{
#if (DM_ODM_SUPPORT_TYPE == ODM_AP)
#ifndef SMP_SYNC
unsigned long x;
#endif
struct rtl8192cd_priv *priv = pDM_Odm->priv;
#endif
if(Addr == 0xffe)
{
#ifdef CONFIG_LONG_DELAY_ISSUE
ODM_sleep_ms(50);
#else
ODM_delay_ms(50);
#endif
}
else if (Addr == 0xfd)
{
ODM_delay_ms(5);
}
else if (Addr == 0xfc)
{
ODM_delay_ms(1);
}
else if (Addr == 0xfb)
{
ODM_delay_us(50);
}
else if (Addr == 0xfa)
{
ODM_delay_us(5);
}
else if (Addr == 0xf9)
{
ODM_delay_us(1);
}
else
{
#if (DM_ODM_SUPPORT_TYPE == ODM_AP)
SAVE_INT_AND_CLI(x);
ODM_SetRFReg(pDM_Odm, RF_PATH, RegAddr, bRFRegOffsetMask, Data);
RESTORE_INT(x);
#else
ODM_SetRFReg(pDM_Odm, RF_PATH, RegAddr, bRFRegOffsetMask, Data);
#endif
// Add 1us delay between BB/RF register setting.
ODM_delay_us(1);
}
}
void
odm_ConfigRF_RadioA_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Addr,
IN u4Byte Data
)
{
u4Byte content = 0x1000; // RF_Content: radioa_txt
u4Byte maskforPhySet= (u4Byte)(content&0xE000);
odm_ConfigRFReg_8188E(pDM_Odm, Addr, Data, ODM_RF_PATH_A, Addr|maskforPhySet);
ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_TRACE, ("===> ODM_ConfigRFWithHeaderFile: [RadioA] %08X %08X\n", Addr, Data));
}
void
odm_ConfigRF_RadioB_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Addr,
IN u4Byte Data
)
{
u4Byte content = 0x1001; // RF_Content: radiob_txt
u4Byte maskforPhySet= (u4Byte)(content&0xE000);
odm_ConfigRFReg_8188E(pDM_Odm, Addr, Data, ODM_RF_PATH_B, Addr|maskforPhySet);
ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_TRACE, ("===> ODM_ConfigRFWithHeaderFile: [RadioB] %08X %08X\n", Addr, Data));
}
void
odm_ConfigMAC_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Addr,
IN u1Byte Data
)
{
ODM_Write1Byte(pDM_Odm, Addr, Data);
ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_TRACE, ("===> ODM_ConfigMACWithHeaderFile: [MAC_REG] %08X %08X\n", Addr, Data));
}
void
odm_ConfigBB_AGC_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Addr,
IN u4Byte Bitmask,
IN u4Byte Data
)
{
ODM_SetBBReg(pDM_Odm, Addr, Bitmask, Data);
// Add 1us delay between BB/RF register setting.
ODM_delay_us(1);
ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_TRACE, ("===> ODM_ConfigBBWithHeaderFile: [AGC_TAB] %08X %08X\n", Addr, Data));
}
void
odm_ConfigBB_PHY_REG_PG_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Band,
IN u4Byte RfPath,
IN u4Byte TxNum,
IN u4Byte Addr,
IN u4Byte Bitmask,
IN u4Byte Data
)
{
if (Addr == 0xfe){
#ifdef CONFIG_LONG_DELAY_ISSUE
ODM_sleep_ms(50);
#else
ODM_delay_ms(50);
#endif
}
else if (Addr == 0xfd){
ODM_delay_ms(5);
}
else if (Addr == 0xfc){
ODM_delay_ms(1);
}
else if (Addr == 0xfb){
ODM_delay_us(50);
}
else if (Addr == 0xfa){
ODM_delay_us(5);
}
else if (Addr == 0xf9){
ODM_delay_us(1);
}
else {
ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ConfigBBWithHeaderFile: [PHY_REG] %08X %08X %08X\n", Addr, Bitmask, Data));
#if !(DM_ODM_SUPPORT_TYPE&ODM_AP)
PHY_StoreTxPowerByRate(pDM_Odm->Adapter, Band, RfPath, TxNum, Addr, Bitmask, Data);
#endif
}
}
void
odm_ConfigBB_TXPWR_LMT_8188E(
IN PDM_ODM_T pDM_Odm,
IN pu1Byte Regulation,
IN pu1Byte Band,
IN pu1Byte Bandwidth,
IN pu1Byte RateSection,
IN pu1Byte RfPath,
IN pu1Byte Channel,
IN pu1Byte PowerLimit
)
{
#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))
PHY_SetTxPowerLimit(pDM_Odm, Regulation, Band,
Bandwidth, RateSection, RfPath, Channel, PowerLimit);
#endif
}
void
odm_ConfigBB_PHY_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Addr,
IN u4Byte Bitmask,
IN u4Byte Data
)
{
if (Addr == 0xfe){
#ifdef CONFIG_LONG_DELAY_ISSUE
ODM_sleep_ms(50);
#else
ODM_delay_ms(50);
#endif
}
else if (Addr == 0xfd){
ODM_delay_ms(5);
}
else if (Addr == 0xfc){
ODM_delay_ms(1);
}
else if (Addr == 0xfb){
ODM_delay_us(50);
}
else if (Addr == 0xfa){
ODM_delay_us(5);
}
else if (Addr == 0xf9){
ODM_delay_us(1);
}
else {
if (Addr == 0xa24)
pDM_Odm->RFCalibrateInfo.RegA24 = Data;
ODM_SetBBReg(pDM_Odm, Addr, Bitmask, Data);
// Add 1us delay between BB/RF register setting.
ODM_delay_us(1);
ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_TRACE, ("===> ODM_ConfigBBWithHeaderFile: [PHY_REG] %08X %08X\n", Addr, Data));
}
}
#endif

View File

@ -0,0 +1,96 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
*
******************************************************************************/
#ifndef __INC_ODM_REGCONFIG_H_8188E
#define __INC_ODM_REGCONFIG_H_8188E
#if (RTL8188E_SUPPORT == 1)
void
odm_ConfigRFReg_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Addr,
IN u4Byte Data,
IN ODM_RF_RADIO_PATH_E RF_PATH,
IN u4Byte RegAddr
);
void
odm_ConfigRF_RadioA_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Addr,
IN u4Byte Data
);
void
odm_ConfigRF_RadioB_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Addr,
IN u4Byte Data
);
void
odm_ConfigMAC_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Addr,
IN u1Byte Data
);
void
odm_ConfigBB_AGC_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Addr,
IN u4Byte Bitmask,
IN u4Byte Data
);
void
odm_ConfigBB_PHY_REG_PG_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Band,
IN u4Byte RfPath,
IN u4Byte TxNum,
IN u4Byte Addr,
IN u4Byte Bitmask,
IN u4Byte Data
);
void
odm_ConfigBB_PHY_8188E(
IN PDM_ODM_T pDM_Odm,
IN u4Byte Addr,
IN u4Byte Bitmask,
IN u4Byte Data
);
void
odm_ConfigBB_TXPWR_LMT_8188E(
IN PDM_ODM_T pDM_Odm,
IN pu1Byte Regulation,
IN pu1Byte Band,
IN pu1Byte Bandwidth,
IN pu1Byte RateSection,
IN pu1Byte RfPath,
IN pu1Byte Channel,
IN pu1Byte PowerLimit
);
#endif
#endif // end of SUPPORT

View File

@ -0,0 +1,5 @@
/*RTL8188E PHY Parameters*/
#define SVN_COMMIT_VERSION_8188E 65
#define RELEASE_DATE_8188E 20150610
#define COMMIT_BY_8188E "BB_LUKE"
#define RELEASE_VERSION_8188E 63