Compare commits

...

2 commits

Author SHA1 Message Date
pictures2333
354dd9c38d feat(mesh): (broken) transfer message via mesh network 2025-12-28 03:04:27 +08:00
0c0b5101e4 feat(tcpclient): auto get gateway addr 2025-12-17 15:20:05 +08:00
15 changed files with 518 additions and 1315 deletions

6
.gitignore vendored
View file

@ -8,4 +8,8 @@ __pycache__
.vscode
main/old
main/drop_mqtt
main/drop_mqtt
tcp_client_image.py
tcp_client.py
tcp_server.py

View file

@ -2,10 +2,11 @@ file(GLOB_RECURSE MY_LIB_SOURCES
"ESP32epdx/src/*.cpp"
"ESP32epdx/src/GUI/*.cpp"
"pubsubclient/src/*.cpp",
"mpack/src/mpack/*.c"
"mpack/src/mpack/*.c",
"sha256/*.c"
)
idf_component_register(
SRCS "main.cpp" "EPD.cpp" "mesh_main.c" "mesh_netif.c" "tcphelper.c" ${MY_LIB_SOURCES}
INCLUDE_DIRS "" "ESP32epdx/src" "ESP32epdx/src/GUI" "mpack/src/mpack"
SRCS "processor.c" "main.cpp" "EPD.cpp" "mesh_main.c" "mesh_netif.c" "mesh_msg.c" ${MY_LIB_SOURCES}
INCLUDE_DIRS "" "ESP32epdx/src" "ESP32epdx/src/GUI" "mpack/src/mpack" "sha256"
)

View file

@ -8,9 +8,11 @@
#include "ESP32epdx.h"
#include "EPD.h"
#include "mesh_netif.h"
#include "tcphelper.h"
#include "esp_mesh.h"
#include "main.h"
#include "sha256.h"
std::mutex epd_mtx;
/*
@ -20,71 +22,25 @@ EPD: RES = 22 ; DC = 23 ; CS = 1 ; BUSY = 0
uint8_t *image_buf = nullptr;
typedef struct request_t {
// command : update_image, push_image, ping
char *command;
#if CONFIG_MESH_ROOT == 0
extern "C" void req_release(request_t *req) {
free(req->command);
req->command = 0;
free(req->data);
req->data = 0;
// arguments for update_image
uint64_t index;
char *data;
size_t data_len;
} request_t;
free(req);
extern "C" request_t* parse_data(char *buf, size_t len) {
// variables
char *command = NULL;
uint64_t index = 0;
char *data = NULL;
size_t data_len = 0;
// init reader
mpack_reader_t reader;
mpack_reader_init_data(&reader, buf, len);
size_t count = mpack_expect_map_max(&reader, 100);
if (mpack_reader_error(&reader) != mpack_ok) {
return NULL;
}
// read data
for (size_t i = 0; i < count; i++) {
char *key = mpack_expect_cstr_alloc(&reader, 100);
if (strcmp(key, "command") == 0) {
command = mpack_expect_cstr_alloc(&reader, 32);
} else if (strcmp(key, "index") == 0) {
index = mpack_expect_u64(&reader);
} else if (strcmp(key, "data") == 0) {
data = mpack_expect_bin_alloc(&reader, CONFIG_IMAGE_BUF_SLICE_SIZE, &data_len);
} else {
mpack_discard(&reader);
}
free(key);
}
// finish
mpack_done_map(&reader);
if (mpack_reader_destroy(&reader) != mpack_ok) {
return NULL;
}
// return
request_t *result = (request_t *)malloc(sizeof(request_t));
if (!result) {
return NULL;
}
memset(result, 0, sizeof(request_t));
result->command = command;
result->index = index;
result->data = data;
result->data_len = data_len;
return result;
return;
}
extern "C" int command_update_image(uint64_t index, char *buf, size_t len) {
// check
if (!buf) {
return -2;
}
// main
if (!epd_mtx.try_lock()) {
return -3; // locked
}
@ -106,6 +62,11 @@ extern "C" int command_update_image(uint64_t index, char *buf, size_t len) {
}
extern "C" int command_push_image() {
#if DEBUG == 1
printf("sha256 of image_buf: ");
show_sha256((char *)image_buf, CONFIG_IMAGE_BUF_SIZE);
#endif
if (epd_mtx.try_lock()) {
EPD_HW_Init_Fast();
EPD_Display((unsigned char *)(image_buf));
@ -118,30 +79,139 @@ extern "C" int command_push_image() {
}
}
extern "C" int tcp_client_callback(char *buf, size_t len) {
request_t *req = parse_data(buf, len);
extern "C" int mesh_client_callback(char *buf, size_t len) {
request_t *req = client_parse_data(buf, len);
if (!req) { // error -> invalid data
return -2;
}
int ret = 0;
// execute command
if (strcmp(req->command, "ping") == 0)
{
return 0;
goto mesh_client_callback_ret;
}
else if (strcmp(req->command, "update_image") == 0)
{
return command_update_image(req->index, req->data, req->data_len);
ret = command_update_image(req->index, req->data, req->data_len);
goto mesh_client_callback_ret;
}
else if (strcmp(req->command, "push_image") == 0)
{
return command_push_image();
ret = command_push_image();
goto mesh_client_callback_ret;
}
else
{
return -2;
ret = -2;
goto mesh_client_callback_ret;
}
mesh_client_callback_ret:
req_release(req);
return ret;
}
#else // root -> 送測試資料
#define PAYLOAD_SIZE 1024
#include "IMAGE.h"
void mesh_server_send_test_data() {
/*
mpack_writer_t *writer = (mpack_writer_t *)malloc(sizeof(mpack_writer_t));
char *payload = (char *)malloc(PAYLOAD_SIZE);
if (!writer || !payload) {
printf("failed to allocate memory\n");
return;
}
const unsigned char *image_start = &gImage_1[0];
const unsigned char *image_end = image_start + sizeof(gImage_1);
printf("sha256 of gImage_1: ");
show_sha256((char *)image_start, sizeof(gImage_1));
uint32_t counter = 0;
for (const unsigned char *image = image_start; image < image_end; image += 950) {
vTaskDelay(2000 / portTICK_PERIOD_MS);
memset(writer, 0, sizeof(mpack_writer_t));
memset(payload, 0, PAYLOAD_SIZE);
mpack_writer_init(writer, payload, PAYLOAD_SIZE);
mpack_start_map(writer, 3);
mpack_write_cstr(writer,"command");
mpack_write_cstr(writer,"update_image");
mpack_write_cstr(writer,"index");
printf("index -> %d\n", image - image_start);
mpack_write_u64(writer, image - image_start);
//mpack_write_cstr(writer,"data");
//size_t count = 950;
//if (image + 950 > image_end)
// count = image_end - image;
//mpack_start_bin(writer, count);
//mpack_write_bin(writer, (const char *)image, count);
//mpack_finish_bin(writer);
char testdata[64];
memset(testdata, 0, sizeof(testdata));
snprintf(testdata, sizeof(testdata), "Hello, World! -> %lu", counter++);
mpack_start_bin(writer, sizeof(testdata));
mpack_write_bin(writer, testdata, sizeof(testdata));
mpack_finish_bin(writer);
mpack_finish_map(writer);
if (mpack_writer_destroy(writer) != mpack_ok) {
printf("error!\n");
continue;
}
//fwrite("payload: ", 1, 9, stdout);
//fwrite(payload, 1, PAYLOAD_SIZE, stdout);
//fwrite("\n", 1, 1, stdout);
esp_err_t err = esp_mesh_boardcast_to_nodes((uint8_t *)payload, PAYLOAD_SIZE);
printf("mesh_server_send_test_data result -> %d\n", err);
}
vTaskDelay(1500 / portTICK_PERIOD_MS);
memset(writer, 0, sizeof(mpack_writer_t));
memset(payload, 0, PAYLOAD_SIZE);
mpack_writer_init(writer, payload, PAYLOAD_SIZE);
mpack_start_map(writer, 1);
mpack_write_cstr(writer,"command");
mpack_write_cstr(writer,"push_image");
mpack_finish_map(writer);
if (mpack_writer_destroy(writer) != mpack_ok) {
printf("error!\n");
} else {
esp_err_t err = esp_mesh_boardcast_to_nodes((uint8_t *)payload, PAYLOAD_SIZE);
printf("mesh_server_send_test_data result -> %d\n", err);
}
free(writer);
free(payload);
*/
char payload[64] = {0};
for (int i = 0; i < 6; i++) {
memset(payload, 0, sizeof(payload));
snprintf(payload, sizeof(payload), "Hello, World! -> %d", i);
esp_err_t err = esp_mesh_boardcast_to_nodes((uint8_t *)payload, sizeof(payload));
printf("[i=%d] result -> %d\n", i, err);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
return;
}
#endif
extern "C" void app_main() {
initArduino();
@ -164,18 +234,26 @@ extern "C" void app_main() {
// Initialize EPD
EPD_Pin_Init(6, 2, 7, 16,
22, 23, 1, 0);
// start mesh network
mesh_main();
// tcp client
tcp_client_initialize();
xTaskCreate(esp_mesh_p2p_rx_main, "MPRX", 3072, NULL, 5, NULL);
// Arduino-like setup()
// Arduino-like loop()
int32_t counter = 6;
while (true)
{
vTaskDelay(500);
{
#if CONFIG_MESH_ROOT == 1
printf("counter -> %ld\n", counter);
if (counter == 0)
mesh_server_send_test_data();
if (counter >= 0)
counter--;
#endif
printf("Am I root? -> %d\n", esp_mesh_is_root());
vTaskDelay(5 * 1000 / portTICK_PERIOD_MS);
}
// WARNING: if program reaches end of function app_main() the MCU will restart.

View file

@ -1,6 +1,4 @@
#ifndef MAIN_H
#define MAIN_H
#pragma once
#include <stdint.h>
/*******************************************************
@ -22,11 +20,9 @@ static const uint8_t MESH_ID[6] = { 0x77, 0x77, 0x77, 0x77, 0x77, 0x76 };
#define CONFIG_MESH_AP_CONNECTIONS 6 // number of nodes
#define CONFIG_MESH_NON_MESH_AP_CONNECTIONS 0 // number of non-node devices
#define CONFIG_TCP_DEBUG 0
#define CONFIG_TCP_SERVER_ADDRESS "10.0.0.1"
#define CONFIG_TCP_SERVER_PORT "3030"
#define CONFIG_TCP_RXBUFFER_SIZE 4096 // tcp raw data max size
#define CONFIG_IMAGE_BUF_SLICE_SIZE 2048 // map["data"] max size
#define DEBUG 1
#define CONFIG_MESH_ROOT 1
#define CONFIG_IMAGE_BUF_SLICE_SIZE 950 // map["data"] max size
#define CONFIG_IMAGE_BUF_SIZE 5624
/*******************************************************
@ -37,10 +33,20 @@ static const uint8_t MESH_ID[6] = { 0x77, 0x77, 0x77, 0x77, 0x77, 0x76 };
extern "C" {
#endif
int tcp_client_callback(char *buf, size_t len);
typedef struct request_t {
// command : update_image, push_image, ping
char *command;
// arguments for update_image
uint64_t index;
char *data;
size_t data_len;
} request_t;
request_t *client_parse_data(char *buf, size_t len);
int mesh_client_callback(char *buf, size_t len);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -1,167 +0,0 @@
#include<ESP32epdx.h> //E-paper SPI etc
//EPD
#include"EPD.h" //E-paper driver
#include"IMAGE.h" //E-paper image data
/*
SPI: SCK = 6 ; MISO = 2 ; MOSI = 7 ; SS = 16
EPD: RES = 22 ; DC = 23 ; CS = 1 ; BUSY = 0
*/
unsigned char ImageBW[EPD_ARRAY]; //Define canvas space
void setup()
{
Serial.begin(115200);
EPD_Pin_Init(6, 2, 7, 16,
22, 23, 1, 0);
}
//Tips//
/*
1.Flickering is normal when EPD is performing a full screen update to clear ghosting from the previous image so to ensure better clarity and legibility for the new image.
2.There will be no flicker when EPD performs a partial update.
3.Please make sue that EPD enters sleep mode when update is completed and always leave the sleep mode command. Otherwise, this may result in a reduced lifespan of EPD.
4.Please refrain from inserting EPD to the FPC socket or unplugging it when the MCU is being powered to prevent potential damage.)
5.Re-initialization is required for every full screen update.
6.When porting the program, set the BUSY pin to input mode and other pins to output mode.
*/
void loop() {
unsigned char i;
#if 0 //Full screen update, fast update, and partial update demostration.
EPD_HW_Init(); //Full screen update initialization.
EPD_WhiteScreen_White(); //Clear screen function.
EPD_DeepSleep(); //Enter the sleep mode and please do not delete it, otherwise it will reduce the lifespan of the screen.
delay(2000); //Delay for 2s.
/************Full display(2s)*******************/
EPD_HW_Init(); //Full screen update initialization.
EPD_WhiteScreen_ALL(gImage_1); //To Display one image using full screen update.
EPD_DeepSleep(); //Enter the sleep mode and please do not delete it, otherwise it will reduce the lifespan of the screen.
delay(2000); //Delay for 2s.
/************Fast update mode(1.5s)*******************/
EPD_HW_Init_Fast(); //Fast update initialization.
EPD_WhiteScreen_ALL_Fast(gImage_2); //To display the second image using fast update.
EPD_DeepSleep(); //Enter the sleep mode and please do not delete it, otherwise it will reduce the lifespan of the screen.
delay(2000); //Delay for 2s.
/************4 Gray update mode*******************/
#if 1 //To enable this feature, please change 0 to 1
EPD_HW_Init_4G(); //4 Gray update initialization.
EPD_WhiteScreen_ALL_4G(gImage_4G1); //To display one image using fast update.
EPD_DeepSleep(); //Enter the sleep mode and please do not delete it, otherwise it will reduce the lifespan of the screen.
delay(2000); //Delay for 2s.
#endif
#if 1 //Partial update demostration.
//Partial update demo support displaying a clock at 5 locations with 00:00. If you need to perform partial update more than 5 locations, please use the feature of using partial update at the full screen demo.
//After 5 partial updates, implement a full screen update to clear the ghosting caused by partial updates.
//////////////////////Partial update time demo/////////////////////////////////////
EPD_HW_Init(); //Electronic paper initialization.
EPD_SetRAMValue_BaseMap(gImage_basemap); //Please do not delete the background color function, otherwise it will cause unstable display during partial update.
for(i=0;i<6;i++)
EPD_Dis_Part_Time(48,92+32*0,Num[i], //x-A,y-A,DATA-A
48,92+32*1,Num[0], //x-B,y-B,DATA-B
48,92+32*2,gImage_numdot, //x-C,y-C,DATA-C
48,92+32*3,Num[0], //x-D,y-D,DATA-D
48,92+32*4,Num[1],32,64); //x-E,y-E,DATA-E,Resolution 32*64
EPD_DeepSleep(); //Enter the sleep mode and please do not delete it, otherwise it will reduce the lifespan of the screen.
delay(2000); //Delay for 2s.
#endif
#if 1 //Demo of using partial update to update the full screen, to enable this feature, please change 0 to 1.
//After 5 partial updates, implement a full screen update to clear the ghosting caused by partial updates.
//////////////////////Partial update time demo/////////////////////////////////////
EPD_HW_Init(); //E-paper initialization
EPD_SetRAMValue_BaseMap(gImage_p1); //Please do not delete the background color function, otherwise it will cause an unstable display during partial update.
EPD_Dis_PartAll(gImage_p1); //Image 1
EPD_Dis_PartAll(gImage_p2); //Image 2
EPD_Dis_PartAll(gImage_p3); //Image 3
EPD_Dis_PartAll(gImage_p4); //Image 4
EPD_Dis_PartAll(gImage_p5); //Image 5
EPD_DeepSleep();//Enter the sleep mode and please do not delete it, otherwise it will reduce the lifespan of the screen.
delay(2000); //Delay for 2s.
#endif
#if 1 //Demonstration of full screen update with 180-degree rotation, to enable this feature, please change 0 to 1.
/************Full display(2s)*******************/
EPD_HW_Init_180(); //Full screen update initialization.
EPD_WhiteScreen_ALL(gImage_1); //To Display one image using full screen update.
EPD_DeepSleep(); //Enter the sleep mode and please do not delete it, otherwise it will reduce the lifespan of the screen.
delay(2000);//Delay for 2s.
#endif
#endif
#if 0 //GUI demostration.
///////////////////////////GUI///////////////////////////////////////////////////////////////////////////////////
//Data initialization settings
Paint_NewImage(ImageBW, EPD_WIDTH, EPD_HEIGHT, 270, WHITE); //Set screen size and display orientation
/**************Drawing**********************/
Paint_SelectImage(ImageBW);//Set the virtual canvas data storage location
Paint_Clear(WHITE);
//Point.
Paint_DrawPoint(5, 10, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); //point 1x1.
Paint_DrawPoint(5, 25, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); //point 2x2.
Paint_DrawPoint(5, 40, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); //point 3x3.
Paint_DrawPoint(5, 55, BLACK, DOT_PIXEL_4X4, DOT_STYLE_DFT); //point 4x4.
//Line.
Paint_DrawLine(20, 5, 50, 35, BLACK, LINE_STYLE_SOLID, DOT_PIXEL_1X1); //1x1line 1.
Paint_DrawLine(50, 5, 20, 35, BLACK, LINE_STYLE_SOLID, DOT_PIXEL_1X1); //1x1line 2.
//Rectangle.
Paint_DrawRectangle(20, 5, 50, 35, BLACK, DRAW_FILL_EMPTY, DOT_PIXEL_1X1); //Hollow rectangle 1.
Paint_DrawRectangle(70, 5, 100, 35, BLACK, DRAW_FILL_FULL, DOT_PIXEL_1X1); //Hollow rectangle 2.
//Circle.
Paint_DrawCircle(30, 50, 10, BLACK, DRAW_FILL_EMPTY, DOT_PIXEL_1X1); //Hollow circle.
Paint_DrawCircle(80, 50, 10, BLACK, DRAW_FILL_FULL, DOT_PIXEL_1X1); //solid circle.
EPD_HW_Init_GUI(); //EPD init GUI
EPD_Display(ImageBW);//display image
EPD_DeepSleep();//EPD_DeepSleep,Sleep instruction is necessary, please do not delete!!!
delay(2000); //2s
/***********String&Number***************************/
Paint_SelectImage(ImageBW);//Set the virtual canvas data storage location
Paint_Clear(WHITE);
Paint_DrawString_EN(0, 0, "Good Display", &Font8, BLACK, WHITE); //Font8
Paint_DrawString_EN(0, 10, "Good Display", &Font12, BLACK, WHITE); //Font12
Paint_DrawString_EN(0, 25, "Good Display", &Font16, BLACK, WHITE); //Font16
Paint_DrawString_EN(0, 45, "Good Display", &Font20, BLACK, WHITE); //Font20
Paint_DrawNum(0, 70, 123456789, &Font8, BLACK, WHITE); //Font8
Paint_DrawNum(0, 80, 123456789, &Font12, BLACK, WHITE); //Font12
Paint_DrawNum(0, 95, 123456789, &Font16, BLACK, WHITE); //Font16
Paint_DrawNum(0, 115, 123456789, &Font20, BLACK, WHITE); //Font20
EPD_HW_Init_GUI(); //EPD init GUI
EPD_Display(ImageBW); //display image
EPD_DeepSleep();//EPD_DeepSleep,Sleep instruction is necessary, please do not delete!!!
delay(2000); //2s
#endif
////Clear
//EPD_HW_Init(); //EPD init
//EPD_WhiteScreen_White();//EPD Clear
//EPD_DeepSleep();//EPD_DeepSleep,Sleep instruction is necessary, please do not delete!!!
//delay(2000); //2s
Serial.printf("Init\n");
EPD_HW_Init_Fast();
//EPD_WhiteScreen_White();
//EPD_WhiteScreen_ALL_Fast(gImage_1);
Serial.printf("Display Image 1\n");
EPD_Display((unsigned char *)gImage_1);
EPD_DeepSleep();
delay(2000);
EPD_HW_Init_Fast();
//EPD_WhiteScreen_White();
//EPD_WhiteScreen_ALL_Fast(gImage_2);
Serial.printf("Display Image 2\n");
EPD_Display((unsigned char *)gImage_2);
EPD_DeepSleep();
while (1)
{
Serial.println("fin");
delay(1000);
}
//while(1); // The program stops here
}

View file

@ -19,7 +19,7 @@
#include "freertos/semphr.h"
#include "main.h"
#include "tcphelper.h"
//#include "tcphelper.h"
/*******************************************************
* Macros
@ -35,7 +35,7 @@
/*******************************************************
* Constants
*******************************************************/
static const char *MESH_TAG = "mesh_main";
const char *MESH_TAG = "mesh_main";
/*******************************************************
* Variable Definitions
@ -49,6 +49,8 @@ static int s_route_table_size = 0;
static SemaphoreHandle_t s_route_table_lock = NULL;
static uint8_t s_mesh_tx_payload[CONFIG_MESH_ROUTE_TABLE_SIZE*6+1];
char *s_current_gateway_ip = NULL;
/*******************************************************
* Function Declarations
@ -158,6 +160,24 @@ void mesh_event_handler(void *arg, esp_event_base_t event_base,
ESP_LOGI(MESH_TAG,
"<MESH_EVENT_PARENT_DISCONNECTED>reason:%d",
disconnected->reason);
#if CONFIG_TCP_DEBUG == 0
// 如果當前是 Root且發生了認證相關錯誤 (例如 210 或 WIFI_REASON_CONNECTION_FAIL)
// 代表這個節點雖然當選了 Root但因為沒有密碼根本連不上 Router
if (esp_mesh_is_root()) {
if (disconnected->reason == 210 ||
disconnected->reason == WIFI_REASON_CONNECTION_FAIL ||
disconnected->reason == WIFI_REASON_HANDSHAKE_TIMEOUT ||
disconnected->reason == WIFI_REASON_AUTH_EXPIRE) {
ESP_LOGW(MESH_TAG, "Root auth failed (reason:%d), waiving root status to scan for new parent...", disconnected->reason);
// 關鍵:主動放棄 Root 資格,強制重新掃描
esp_mesh_waive_root(NULL, MESH_VOTE_REASON_ROOT_INITIATED);
}
}
#endif
mesh_layer = esp_mesh_get_layer();
mesh_netifs_stop();
}
@ -269,17 +289,23 @@ void ip_event_handler(void *arg, esp_event_base_t event_base,
int32_t event_id, void *event_data)
{
ip_event_got_ip_t *event = (ip_event_got_ip_t *) event_data;
ESP_LOGI(MESH_TAG, "<IP_EVENT_STA_GOT_IP>IP:" IPSTR, IP2STR(&event->ip_info.ip));
ESP_LOGI(MESH_TAG, "<IP_EVENT_STA_GOT_IP>IP:" IPSTR " Gateway:" IPSTR, IP2STR(&event->ip_info.ip), IP2STR(&event->ip_info.gw));
s_current_ip.addr = event->ip_info.ip.addr;
if (s_current_gateway_ip) {
free(s_current_gateway_ip);
s_current_gateway_ip = NULL;
}
s_current_gateway_ip = (char *)malloc(32);
memset(s_current_gateway_ip, 0, 32);
snprintf(s_current_gateway_ip, 32, IPSTR, IP2STR(&event->ip_info.gw));
//#if !CONFIG_MESH_USE_GLOBAL_DNS_IP
esp_netif_t *netif = event->esp_netif;
esp_netif_dns_info_t dns;
ESP_ERROR_CHECK(esp_netif_get_dns_info(netif, ESP_NETIF_DNS_MAIN, &dns));
mesh_netif_start_root_ap(esp_mesh_is_root(), dns.ip.u_addr.ip4.addr);
//#endif
// tcp client
start_tcp_client();
}
@ -323,13 +349,12 @@ void mesh_main(void)
cfg.channel = CONFIG_MESH_CHANNEL;
cfg.router.ssid_len = strlen(CONFIG_MESH_ROUTER_SSID);
memcpy((uint8_t *) &cfg.router.ssid, CONFIG_MESH_ROUTER_SSID, cfg.router.ssid_len);
#if CONFIG_TCP_DEBUG
#if CONFIG_MESH_ROOT == 0
memset((uint8_t *)&cfg.router.password, 0, 64);
#else
memcpy((uint8_t *) &cfg.router.password, CONFIG_MESH_ROUTER_PASSWD,
strlen(CONFIG_MESH_ROUTER_PASSWD));
#else
memset((uint8_t *) &cfg.router.password, 0, 64);
#endif
#endif
/* mesh softAP */
ESP_ERROR_CHECK(esp_mesh_set_ap_authmode(CONFIG_MESH_AP_AUTHMODE));

186
main/mesh_msg.c Normal file
View file

@ -0,0 +1,186 @@
/* Mesh Internal Communication Example
This example code is in the Public Domain (or CC0 licensed, at your option.)
Unless required by applicable law or agreed to in writing, this
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied.
*/
#include <string.h>
#include <inttypes.h>
#include "esp_wifi.h"
#include "esp_mac.h"
#include "esp_event.h"
#include "esp_log.h"
#include "esp_mesh.h"
#include "esp_mesh_internal.h"
#include "nvs_flash.h"
#include "mesh_netif.h"
#include "main.h"
/*******************************************************
* Macros
*******************************************************/
/*******************************************************
* Constants
*******************************************************/
#define RX_SIZE (1500)
#define TX_SIZE (1460)
/*******************************************************
* Variable Definitions
*******************************************************/
static uint8_t tx_buf[TX_SIZE] = { 0, };
static uint8_t rx_buf[RX_SIZE] = { 0, };
static bool is_running = true;
static bool is_mesh_connected = false;
static mesh_addr_t mesh_parent_addr;
static int mesh_layer = -1;
static esp_netif_t *netif_sta = NULL;
//mesh_light_ctl_t light_on = {
// .cmd = MESH_CONTROL_CMD,
// .on = 1,
// .token_id = MESH_TOKEN_ID,
// .token_value = MESH_TOKEN_VALUE,
//};
//
//mesh_light_ctl_t light_off = {
// .cmd = MESH_CONTROL_CMD,
// .on = 0,
// .token_id = MESH_TOKEN_ID,
// .token_value = MESH_TOKEN_VALUE,
//};
/*******************************************************
* Function Declarations
*******************************************************/
/*******************************************************
* Function Definitions
*******************************************************/
#if CONFIG_MESH_ROOT == 1
esp_err_t esp_mesh_boardcast_to_nodes(uint8_t *payload, uint16_t payload_len)
{
int i;
esp_err_t err;
mesh_addr_t route_table[CONFIG_MESH_ROUTE_TABLE_SIZE];
int route_table_size = 0;
mesh_data_t data;
data.data = payload;
data.size = payload_len;
data.proto = MESH_PROTO_BIN;
data.tos = MESH_TOS_P2P;
esp_mesh_get_routing_table((mesh_addr_t *) &route_table,
CONFIG_MESH_ROUTE_TABLE_SIZE * 6, &route_table_size);
printf("route table size -> %d\n", route_table_size);
for (i = 0; i < route_table_size; i++) {
err = esp_mesh_send(&route_table[i], &data, MESH_DATA_P2P, NULL, 0);
if (err) {
ESP_LOGE(MESH_TAG,
"[ROOT-2-UNICAST][L:%d]parent:"MACSTR" to "MACSTR", heap:%" PRId32 "[err:0x%x, proto:%d, tos:%d]",
mesh_layer, MAC2STR(mesh_parent_addr.addr),
MAC2STR(route_table[i].addr), esp_get_minimum_free_heap_size(),
err, data.proto, data.tos);
return err;
}
}
return ESP_OK;
}
#else
esp_err_t esp_mesh_send_to_root(uint8_t *payload, uint16_t payload_len)
{
esp_err_t err;
mesh_data_t data;
data.data = payload;
data.size = payload_len;
data.proto = MESH_PROTO_BIN;
data.tos = MESH_TOS_P2P;
err = esp_mesh_send(NULL, &data, MESH_DATA_P2P, NULL, 0);
if (err) {
//ESP_LOGE(MESH_TAG,
// "[ROOT-2-UNICAST][L:%d]parent:"MACSTR" to "MACSTR", heap:%" PRId32 "[err:0x%x, proto:%d, tos:%d]",
// mesh_layer, MAC2STR(mesh_parent_addr.addr),
// MAC2STR(route_table[i].addr), esp_get_minimum_free_heap_size(),
// err, data.proto, data.tos);
ESP_LOGE(MESH_TAG, "Error while sending message to root, heap:%" PRId32 "[err:0x%x, proto:%d, tos:%d]",
esp_get_minimum_free_heap_size(), err,
data.proto, data.tos);
return err;
}
return ESP_OK;
}
#endif
void esp_mesh_p2p_rx_main(void *arg)
{
esp_err_t err;
mesh_addr_t from;
mesh_data_t data;
int flag = 0;
data.data = rx_buf;
data.size = RX_SIZE;
is_running = true;
while (is_running) {
data.size = RX_SIZE;
memset(rx_buf, 0, sizeof(rx_buf));
err = esp_mesh_recv(&from, &data, portMAX_DELAY, &flag, NULL, 0);
if (err != ESP_OK || !data.size) {
ESP_LOGE(MESH_TAG, "err:0x%x, size:%d", err, data.size);
continue;
}
//if (data.size > sizeof(packet_t)) {
// ESP_LOGE(MESH_TAG, "err:data.size > sizeof(packet_t), size:%d", data.size);
// continue;
//}
// extract data and process
//packet_t *packet = calloc(1, sizeof(packet_t));
//if (!packet) {
// ESP_LOGE(MESH_TAG, "failed to allocate memory");
// continue;
//}
//memcpy(packet, data.data, data.size);
#if CONFIG_MESH_ROOT == 1
printf("[root] received:%s\n", data.data);
#else
printf("recvived aaa\n");
printf("[root] received:%s\n", data.data);
char result_str[128] = {0};
int result = mesh_client_callback((char *)data.data, data.size);
switch (result) {
case 0:
strcpy(result_str, "ok\n");
break;
case -2:
strcpy(result_str, "invalid request\n");
break;
case -3:
strcpy(result_str, "locked\n");
break;
default:
strcpy(result_str, "unknown error\n");
break;
}
printf("returned -> %s\n", result_str);
esp_mesh_send_to_root((uint8_t *)result_str, strlen(result_str)+1);
#endif
//free(packet);
//packet = NULL;
// log
ESP_LOGW(MESH_TAG,
"[#RX][L:%d] parent:"MACSTR", receive from "MACSTR", size:%d, heap:%" PRId32 ", flag:%d[err:0x%x, proto:%d, tos:%d]",
mesh_layer,
MAC2STR(mesh_parent_addr.addr), MAC2STR(from.addr),
data.size, esp_get_minimum_free_heap_size(), flag, err, data.proto,
data.tos);
}
vTaskDelete(NULL);
}

View file

@ -13,6 +13,10 @@
#include "esp_mesh.h"
#include "esp_mac.h"
#include "main.h"
extern const char *MESH_TAG;
/*******************************************************
* Macros
*******************************************************/
@ -32,6 +36,8 @@ typedef void (mesh_raw_recv_cb_t)(mesh_addr_t *from, mesh_data_t *data);
extern "C" {
#endif
extern char *s_current_gateway_ip;
/**
* @brief Initializes netifs in a default way before knowing if we are going to be a root
*
@ -88,6 +94,20 @@ uint8_t* mesh_netif_get_station_mac(void);
// mesh main function
void mesh_main(void);
// mesh_msg.c
void esp_mesh_p2p_rx_main(void *arg);
#if CONFIG_MESH_ROOT == 1
esp_err_t esp_mesh_boardcast_to_nodes(uint8_t *payload, uint16_t payload_len);
#else
#endif
typedef struct packet_t {
uint32_t packet_id;
uint8_t data[1024];
} packet_t;
#ifdef __cplusplus
}
#endif

View file

@ -1 +1,3 @@
must enable "use external log wrapper"
must enable "use external log wrapper"
我是寫 client 的,所以我這裡的「模擬 master」採用直接 unicast 的方式

68
main/processor.c Normal file
View file

@ -0,0 +1,68 @@
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
#include <stdio.h>
#include <stdlib.h>
#include "mpack/src/mpack/mpack.h"
#include "main.h"
request_t *client_parse_data(char *buf, size_t len) {
mpack_reader_t reader;
// initialize
mpack_reader_init_data(&reader, buf, len);
if (mpack_reader_error(&reader) != mpack_ok) {
goto parse_data_finish;
}
size_t count = mpack_expect_map_max(&reader, 100);
if (mpack_reader_error(&reader) != mpack_ok) {
goto parse_data_finish;
}
// variables
char *command = NULL;
uint64_t index = 0;
char *data = NULL;
size_t data_len = 0;
// read data
for (size_t i = 0; i < count; i++) {
char key[32] = {0};
mpack_expect_cstr(&reader, key, sizeof(key));
if (mpack_reader_error(&reader) != mpack_ok) {
goto parse_data_finish;
}
if (strcmp(key, "command") == 0) {
command = mpack_expect_cstr_alloc(&reader, 32);
} else if (strcmp(key, "index") == 0) {
index = mpack_expect_u64(&reader);
} else if (strcmp(key, "data") == 0) {
mpack_expect_bin(&reader);
data = mpack_expect_bin_alloc(&reader, CONFIG_IMAGE_BUF_SLICE_SIZE, &data_len);
} else {
mpack_discard(&reader);
}
}
parse_data_finish:
if (mpack_reader_destroy(&reader) != mpack_ok)
return NULL;
if (!command)
return NULL;
request_t *req = malloc(sizeof(request_t));
if (!req)
return NULL;
memset(req, 0, sizeof(request_t));
req->command = command;
req->index = index;
req->data = data;
req->data_len = data_len;
return req;
}

24
main/sha256/sha256.c Normal file
View file

@ -0,0 +1,24 @@
#include <stdio.h>
#include <string.h>
#include <mbedtls/md.h>
void show_sha256(char *buf, size_t len) {
uint8_t output[32];
memset(output, 0, sizeof(output));
mbedtls_md_context_t ctx;
mbedtls_md_init(&ctx);
mbedtls_md_setup(&ctx, mbedtls_md_info_from_type(MBEDTLS_MD_SHA256), 0);
mbedtls_md_starts(&ctx);
mbedtls_md_update(&ctx, (const unsigned char *)buf, len);
mbedtls_md_finish(&ctx, output);
mbedtls_md_free(&ctx);
for (int i = 0; i < sizeof(output); i++) {
printf("%02x", output[i]);
}
printf("\n");
return;
}

View file

@ -1,12 +1,13 @@
#pragma once
#include <stdint.h>
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
// functions
void tcp_client_initialize(void);
void start_tcp_client(void);
void show_sha256(char *buf, size_t len);
#ifdef __cplusplus
}

View file

@ -1,261 +0,0 @@
/* BSD non-blocking socket example
This example code is in the Public Domain (or CC0 licensed, at your option.)
Unless required by applicable law or agreed to in writing, this
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied.
*/
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "sys/socket.h"
#include "netdb.h"
#include "errno.h"
#include "esp_system.h"
#include "esp_event.h"
#include "esp_log.h"
#include "nvs_flash.h"
#include "main.h"
/**
* @brief Indicates that the file descriptor represents an invalid (uninitialized or closed) socket
*
* Used in the TCP server structure `sock[]` which holds list of active clients we serve.
*/
#define INVALID_SOCK (-1)
/**
* @brief Time in ms to yield to all tasks when a non-blocking socket would block
*
* Non-blocking socket operations are typically executed in a separate task validating
* the socket status. Whenever the socket returns `EAGAIN` (idle status, i.e. would block)
* we have to yield to all tasks to prevent lower priority tasks from starving.
*/
#define YIELD_TO_ALL_MS 50
/**
* @brief Utility to log socket errors
*
* @param[in] tag Logging tag
* @param[in] sock Socket number
* @param[in] err Socket errno
* @param[in] message Message to print
*/
static void log_socket_error(const char *tag, const int sock, const int err, const char *message)
{
ESP_LOGE(tag, "[sock=%d]: %s\n"
"error=%d: %s", sock, message, err, strerror(err));
}
/**
* @brief Tries to receive data from specified sockets in a non-blocking way,
* i.e. returns immediately if no data.
*
* @param[in] tag Logging tag
* @param[in] sock Socket for reception
* @param[out] data Data pointer to write the received data
* @param[in] max_len Maximum size of the allocated space for receiving data
* @return
* >0 : Size of received data
* =0 : No data available
* -1 : Error occurred during socket read operation
* -2 : Socket is not connected, to distinguish between an actual socket error and active disconnection
*/
static int try_receive(const char *tag, const int sock, char * data, size_t max_len)
{
int len = recv(sock, data, max_len, 0);
if (len < 0) {
if (errno == EINPROGRESS || errno == EAGAIN || errno == EWOULDBLOCK) {
return 0; // Not an error
}
if (errno == ENOTCONN) {
ESP_LOGW(tag, "[sock=%d]: Connection closed", sock);
return -2; // Socket has been disconnected
}
log_socket_error(tag, sock, errno, "Error occurred during receiving");
return -1;
}
return len;
}
/**
* @brief Sends the specified data to the socket. This function blocks until all bytes got sent.
*
* @param[in] tag Logging tag
* @param[in] sock Socket to write data
* @param[in] data Data to be written
* @param[in] len Length of the data
* @return
* >0 : Size the written data
* -1 : Error occurred during socket write operation
*/
static int socket_send(const char *tag, const int sock, const char * data, const size_t len)
{
int to_write = len;
while (to_write > 0) {
int written = send(sock, data + (len - to_write), to_write, 0);
if (written < 0 && errno != EINPROGRESS && errno != EAGAIN && errno != EWOULDBLOCK) {
log_socket_error(tag, sock, errno, "Error occurred during sending");
return -1;
}
to_write -= written;
}
return len;
}
// variables
static const char *TAG = "nonblocking-socket-client";
SemaphoreHandle_t lock = NULL;
TaskHandle_t *task_handle = NULL;
// tcp client
void tcp_client_initialize() {
lock = xSemaphoreCreateMutex();
return;
}
static void tcp_client_task(void *pvParameters)
{
static char rx_buffer[CONFIG_TCP_RXBUFFER_SIZE];
int sock = INVALID_SOCK;
struct addrinfo hints = { .ai_socktype = SOCK_STREAM };
struct addrinfo *address_info;
int res = getaddrinfo(CONFIG_TCP_SERVER_ADDRESS, CONFIG_TCP_SERVER_PORT, &hints, &address_info);
if (res != 0 || address_info == NULL) {
ESP_LOGE(TAG, "couldn't get hostname for `%s` "
"getaddrinfo() returns %d, addrinfo=%p", CONFIG_TCP_SERVER_ADDRESS, res, address_info);
goto error;
}
// Creating client's socket
sock = socket(address_info->ai_family, address_info->ai_socktype, address_info->ai_protocol);
if (sock < 0) {
log_socket_error(TAG, sock, errno, "Unable to create socket");
goto error;
}
ESP_LOGI(TAG, "Socket created, connecting to %s:%s", CONFIG_TCP_SERVER_ADDRESS, CONFIG_TCP_SERVER_PORT);
// Marking the socket as non-blocking
int flags = fcntl(sock, F_GETFL);
if (fcntl(sock, F_SETFL, flags | O_NONBLOCK) == -1) {
log_socket_error(TAG, sock, errno, "Unable to set socket non blocking");
}
if (connect(sock, address_info->ai_addr, address_info->ai_addrlen) != 0) {
if (errno == EINPROGRESS) {
ESP_LOGD(TAG, "connection in progress");
fd_set fdset;
FD_ZERO(&fdset);
FD_SET(sock, &fdset);
// Connection in progress -> have to wait until the connecting socket is marked as writable, i.e. connection completes
res = select(sock+1, NULL, &fdset, NULL, NULL);
if (res < 0) {
log_socket_error(TAG, sock, errno, "Error during connection: select for socket to be writable");
goto error;
} else if (res == 0) {
log_socket_error(TAG, sock, errno, "Connection timeout: select for socket to be writable");
goto error;
} else {
int sockerr;
socklen_t len = (socklen_t)sizeof(int);
if (getsockopt(sock, SOL_SOCKET, SO_ERROR, (void*)(&sockerr), &len) < 0) {
log_socket_error(TAG, sock, errno, "Error when getting socket error using getsockopt()");
goto error;
}
if (sockerr) {
log_socket_error(TAG, sock, sockerr, "Connection error");
goto error;
}
}
} else {
log_socket_error(TAG, sock, errno, "Socket is unable to connect");
goto error;
}
}
// Keep receiving message
do {
// receive
int len = 0;
memset(rx_buffer, 0, sizeof(rx_buffer));
do {
len = try_receive(TAG, sock, rx_buffer, sizeof(rx_buffer));
if (len < 0) {
ESP_LOGE(TAG, "Error occurred during try_receive");
goto error;
}
vTaskDelay(pdMS_TO_TICKS(YIELD_TO_ALL_MS));
} while (len == 0);
ESP_LOGI(TAG, "Received message (len=%d)", len);
// execute command
char tx_buffer[128] = {0};
int result = tcp_client_callback(rx_buffer, len);
switch (result) {
case 0:
strcpy(tx_buffer, "ok\n");
break;
case -2:
strcpy(tx_buffer, "invalid request\n");
break;
case -3:
strcpy(tx_buffer, "locked\n");
break;
default:
strcpy(tx_buffer, "unknown error\n");
break;
}
// send result
len = socket_send(TAG, sock, tx_buffer, strlen(tx_buffer));
if (len < 0) {
ESP_LOGE(TAG, "Error occurred during socket_send");
goto error;
}
ESP_LOGI(TAG, "Written: %.*s", len, tx_buffer);
} while (true);
error:
if (sock != INVALID_SOCK) {
close(sock);
}
free(address_info);
free(task_handle);
task_handle = NULL;
vTaskDelete(NULL);
}
void start_tcp_client(void) {
if (xSemaphoreTake(lock, 1000 / portTICK_PERIOD_MS) == false)
{
return;
}
// stop old task
if (task_handle) {
ESP_LOGI(TAG, "Detected old task, deleting...");
vTaskDelete(*task_handle);
free(task_handle);
task_handle = NULL;
}
// new task
task_handle = malloc(sizeof(TaskHandle_t));
memset(task_handle, 0, sizeof(TaskHandle_t));
xTaskCreate(tcp_client_task, "tcp_client", 4096, NULL, 5, task_handle);
xSemaphoreGive(lock);
return;
}

View file

@ -1,76 +0,0 @@
from typing import Dict, Any
import socket
import msgpack
import tcp_client_image
SERVER_ADDRESS = ('172.16.0.249', 8888)
def send_request(data:Dict[str, Any]):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(SERVER_ADDRESS)
try:
message:bytes = msgpack.packb(data)
client_socket.sendall(message)
rx = client_socket.recv(1024)
if data:
print(f"Received message: {rx.decode('utf-8').strip()}")
else:
print("Connection closed")
return
except ConnectionResetError:
print("Connection reset")
finally:
client_socket.close()
print("Connection closed")
def image():
image = b""
try:
choice = int(input("image > "))
if choice == 1:
image = tcp_client_image.image1
elif choice == 2:
image = tcp_client_image.image2
else:
raise ValueError
except:
print("invalid choice")
return
chunk_size = 2048
for i in range(0, len(image), chunk_size):
data = {
"command": "update_image",
"index": i,
"data": bytes(image[i:i+chunk_size])
}
send_request(data)
send_request({"command":"push_image"})
def main():
while True:
print("Command:")
print("(1) update + push image")
print("(2) ping")
print("(3) invalid request")
print("(4) exit")
choice:int = int(input("> "))
data = {}
if choice == 1:
image()
elif choice == 2:
send_request({"command":"ping"})
elif choice == 3:
send_request({"command":"invalid_command"})
else:
break
if __name__ == "__main__":
main()

View file

@ -1,708 +0,0 @@
image1 = [
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xe0, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0x80, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x7f, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0,
0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3f, 0xe0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x1f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x00,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xf0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xf8, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xfc, 0x00, 0x0f,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
0xfc, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x07, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x07, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe,
0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,
0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0xff, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0x80, 0x03,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff,
0xff, 0x80, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xff, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff,
0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff,
0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff,
0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff,
0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f,
0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff,
0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff,
0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff,
0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x01, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff,
0x80, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff,
0xff, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x03, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x80, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x07,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xfe, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x7f,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xf0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x03, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf0, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x3f,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xe0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x1f,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x7f, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x01,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xfc, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x80, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x07, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x07,
0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xe0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x1f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff,
0xfc, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x3f,
0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xf8, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0xff,
0xff, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xf0, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x80, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xc0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
]
image2 = [ #0X01,0X01,0X28,0X01,0X98,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,
0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,
0XF8,0X0F,0XF3,0XFF,0X01,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X9F,0XFB,0XBF,0XF3,0XFF,0X6F,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFB,0XBF,0XF3,0XFF,0X6F,0XFF,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFB,0XBF,0XF3,0XFF,0X6F,0XFF,0X3F,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFB,0XBF,0XF3,0XFF,
0X67,0XFF,0X3F,0XFF,0XF8,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFC,
0X7F,0XF3,0XFF,0X99,0XFF,0X3F,0XFF,0XF8,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XF8,0X00,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0XDF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XF9,0XCF,0X3F,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0XAF,0XF3,0XFF,0XE3,0XFF,0X3F,0XFF,
0XF9,0XCF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0XAF,0XF3,0XFF,0XD5,
0XFF,0X3F,0XFF,0XF9,0X87,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0XAF,
0XF3,0XFF,0XD5,0XFF,0X3F,0XFF,0XF8,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X9F,0XFF,0X0F,0XF3,0XFF,0XD5,0XFF,0X3F,0XFF,0XFC,0X30,0X7F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XE5,0XFF,0X3F,0XFF,0XFE,0X78,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0X0F,0XF3,0XFF,0XED,0XFF,
0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0XFF,0XF3,
0XFF,0XD5,0XFF,0X3F,0XFF,0XF8,0X00,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0XFF,0X9F,
0XFE,0XFF,0XF3,0XFF,0XD5,0XFF,0X3F,0XFF,0XF8,0X00,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,
0X01,0XFF,0X9F,0XFE,0XFF,0XF3,0XFF,0XDB,0XFF,0X3F,0XFF,0XF8,0X00,0X3F,0XFF,0XFF,
0XFF,0XF0,0X00,0X01,0XFF,0X9F,0XFC,0X1F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0XFF,0X9F,0XFE,0XEF,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0X9F,0XFE,0XFF,0XF3,0XFF,
0XE3,0XFF,0X3F,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0X9F,0XFF,
0XFF,0XF3,0XFF,0XDD,0XFF,0X3F,0XFF,0XFF,0X38,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,
0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XDD,0XFF,0X3F,0XFF,0XFF,0X38,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XE1,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XDD,0XFF,0X3F,0XFF,0XFF,0X33,0X3F,
0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XDD,0XFF,0X3F,0XFF,
0XFF,0X33,0X3F,0XFF,0XFF,0XFC,0X00,0X01,0XE1,0XFF,0X9F,0XF8,0X0F,0XF3,0XFF,0XE3,
0XFF,0X3F,0XFF,0XFF,0X00,0X3F,0XFF,0XFF,0XFC,0X00,0X01,0XE1,0XFF,0X9F,0XFD,0XFF,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X80,0X3F,0XFF,0XFF,0XFC,0X00,0X01,0XE1,0XFF,
0X9F,0XFE,0XFF,0XF3,0XFF,0X01,0XFF,0X3F,0XFF,0XFF,0XC0,0X3F,0XFF,0XFF,0XFC,0X00,
0X01,0XE1,0XFF,0X9F,0XFF,0X7F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFC,0X1F,0XF1,0XE1,0XFF,0X9F,0XFF,0XBF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFC,0X1F,0XF1,0XE1,0XFF,0X9F,0XFF,0XDF,0XF3,0XFF,0XC3,0XFF,
0X3F,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFC,0X1F,0XF1,0XE1,0XFF,0X9F,0XF8,0X0F,0XF3,
0XFF,0XFD,0XFF,0X3F,0XFF,0XFF,0X80,0X7F,0XFF,0XFF,0XFC,0X1F,0XF1,0XE1,0XFF,0X9F,
0XFF,0XFF,0XF3,0XFF,0XFD,0XFF,0X3F,0XFF,0XFF,0X80,0X3F,0XFF,0XFF,0XFC,0X1F,0XF1,
0XE1,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFD,0XFF,0X3F,0XFF,0XFF,0X1E,0X3F,0XFF,0XFF,
0XFC,0X1F,0XF1,0XFF,0XFF,0X9F,0XFE,0X1F,0XF3,0XFF,0XC1,0XFF,0X3F,0XFF,0XFF,0X3F,
0X3F,0XFF,0XFF,0XFC,0X1F,0XF1,0XFF,0XFF,0X9F,0XFF,0XEF,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFF,0XFF,0X3F,0X3F,0XFF,0XFF,0XFC,0X1F,0XF1,0XFF,0XFF,0X9F,0XFF,0XEF,0XF3,0XFF,
0XDF,0XFF,0X3F,0XFF,0XFF,0X3F,0X3F,0XFF,0XFF,0XFC,0X1F,0XF1,0XFF,0XFF,0X9F,0XFF,
0XEF,0XF3,0XFF,0X83,0XFF,0X3F,0XFF,0XFF,0X3F,0X3F,0XFF,0XFF,0XFF,0XF0,0XFF,0XE1,
0XFF,0X9F,0XFE,0X0F,0XF3,0XFF,0XDD,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XF0,0XFF,0XE1,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XDF,0XFF,0X3F,0XFF,0XF0,0X00,0X3F,
0XFF,0XFF,0XFF,0XF0,0XFF,0XE1,0XFF,0X9F,0XFE,0X0F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,
0XF0,0X00,0X3F,0XFF,0XFF,0XFF,0XF0,0XFF,0XE1,0XFF,0X9F,0XFE,0XFF,0XF3,0XFF,0X41,
0XFF,0X3F,0XFF,0XF0,0X00,0X3F,0XFF,0XFF,0XFF,0XF0,0XFF,0XE1,0XFF,0X9F,0XFE,0XFF,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XC1,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0XE1,0XFF,
0X9F,0XFE,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X80,0X7F,0XFF,0XFF,0XFF,0XF0,
0XFF,0XE1,0XFF,0X9F,0XFF,0X0F,0XF3,0XFF,0XE3,0XFF,0X3F,0XFF,0XFF,0X08,0X3F,0XFF,
0XFF,0XFF,0XF0,0XFF,0XE1,0XFF,0X9F,0XFE,0XFF,0XF3,0XFF,0XDD,0XFF,0X3F,0XFF,0XFF,
0X3E,0X3F,0XFF,0XFF,0XFF,0XF0,0XFF,0XE1,0XFF,0X9F,0XFE,0XFF,0XF3,0XFF,0XDD,0XFF,
0X3F,0XFF,0XFF,0X7F,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0XFF,0X9F,0XFE,0XFF,0XF3,
0XFF,0XDD,0XFF,0X3F,0XFF,0XFF,0XFF,0XBF,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0XFF,0X9F,
0XFF,0X0F,0XF3,0XFF,0XDD,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,
0X01,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XE3,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XF0,0X00,0X01,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XF8,0X0F,0XF3,0XFF,0XC1,0XFF,0X3F,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0XEF,0XF3,0XFF,
0XDF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,
0XEF,0XF3,0XFF,0XDF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0X9F,0XFE,0XEF,0XF3,0XFF,0XDF,0XFF,0X3F,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0XEF,0XF3,0XFF,0XE1,0XFF,0X3F,0XFF,0XFF,0X38,0X3F,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0X1F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,
0XFF,0X38,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,
0XFF,0X3F,0XFF,0XFF,0X33,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X33,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X9F,0XFF,0X1F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0X9F,0XFE,0XAF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X80,0X3F,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0XAF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,
0XC0,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0XAF,0XF3,0XFF,0XFF,0XFF,
0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0X2F,0XF3,
0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,
0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X9F,0XFE,0X0F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X00,0X3F,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X00,
0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,
0XFF,0XFF,0X3F,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,
0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X3F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0X00,0X3F,0XFF,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0X00,0X3F,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,
0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,
0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XE0,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X80,0X7F,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,
0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
0X3F,0XFF,0XFF,0X1E,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,
0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X3F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,
0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X3F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XF0,0X00,0X3F,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XF0,0X00,
0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFF,0XF0,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,
0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,
0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,
0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XF8,0X1F,0XFF,0XFF,0X00,0X00,0X00,
0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XF8,0X01,0XFF,0XFF,
0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XE7,0XF9,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFE,
0X00,0X3F,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XCF,0XF1,0XF3,0XFE,0X7F,0X9F,
0X3F,0XFF,0XFF,0XF0,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XCF,0XE1,0XF3,
0XFC,0XFF,0X1F,0X3F,0XFF,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,
0XCF,0X89,0XF3,0XFC,0XFE,0X1F,0X3F,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X9F,0XCF,0X19,0XF3,0XFC,0XF8,0X9F,0X3F,0XFF,0XF8,0X0F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XE0,0X39,0XF3,0XFC,0XF1,0X9F,0X3F,0XFF,0XF8,0X07,
0XFF,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XF0,0XF9,0XF3,0XFE,0X03,0X9F,0X3F,
0XFF,0XF8,0X00,0X7F,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,
0X0F,0X9F,0X3F,0XFF,0XFF,0XC0,0X3F,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,
0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XF0,0X3F,0XFF,0X00,0X00,0X00,0X00,0X07,
0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFE,0X00,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XF9,0XF3,0XFF,0X87,0XFF,0X3F,0XFF,0XF8,0X01,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1B,0X9F,0XFF,0XF1,0XF3,0XFE,0X03,0X9F,0X3F,0XFF,
0XF8,0X1F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X04,0X19,0X9F,0XFF,0XFF,0XF3,0XFC,0XF1,
0X9F,0X3F,0XFF,0XF9,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X04,0X3D,0X9F,0XFF,0XFF,
0XF3,0XFC,0XF9,0X9F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XBD,
0X9F,0XFE,0X0F,0XF3,0XFC,0XFB,0X3F,0X3F,0XFF,0XF0,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFD,0XBD,0X9F,0XF8,0X03,0XF3,0XFC,0X72,0X3F,0X3F,0XFF,0XF0,0X00,0X3F,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFD,0X99,0X9F,0XF6,0X71,0XF3,0XFE,0X00,0X7F,0X3F,0XFF,0XF0,
0X00,0X3F,0XFF,0X00,0X00,0X00,0X00,0X05,0XC3,0X9F,0XE4,0XF9,0XF3,0XFF,0X81,0XFF,
0X3F,0XFF,0XFF,0X3F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X07,0XC7,0X9F,0XEC,0XF9,0XF3,
0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X3F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,
0XCC,0X79,0XF3,0XFF,0XE0,0XFF,0X3F,0XFF,0XFF,0X3F,0XFF,0XFF,0X00,0X00,0X00,0X00,
0X07,0XFF,0X9F,0XCE,0X03,0XF3,0XFF,0X80,0X3F,0X3F,0XFF,0XFF,0X00,0X3F,0XFF,0X00,
0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0X0F,0XF3,0XFF,0X67,0X1F,0X3F,0XFF,0XFF,0X00,
0X3F,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFE,0X4F,0X9F,0X3F,
0XFF,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFE,
0XCF,0X9F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,
0XFF,0XF3,0XFC,0XC7,0X9F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,
0X23,0X9F,0XFF,0XFF,0XF3,0XFC,0XE0,0X3F,0X3F,0XFF,0XF9,0X00,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFC,0X21,0X9F,0XFF,0XFF,0XF3,0XFF,0XF0,0XFF,0X3F,0XFF,0XF9,0X00,0X3F,
0XFF,0X00,0X00,0X00,0X00,0X05,0XDD,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,
0XF9,0X00,0X3F,0XFF,0X00,0X00,0X00,0X00,0X05,0XDD,0X9F,0XFF,0XFF,0XF3,0XFF,0XBF,
0XDF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XDD,0X9F,0XC8,0X01,
0XF3,0XFF,0X9F,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XDD,
0X9F,0XC8,0X01,0XF3,0XFF,0XC6,0X3F,0X3F,0XFF,0XFF,0X3F,0XFF,0XFF,0X00,0X00,0X00,
0X00,0X04,0X21,0X9F,0XFF,0XFF,0XF3,0XFF,0XE0,0XFF,0X3F,0XFF,0XFC,0X00,0X7F,0XFF,
0X00,0X00,0X00,0X00,0X06,0X23,0X9F,0XFF,0XFF,0XF3,0XFF,0XF0,0XFF,0X3F,0XFF,0XFC,
0X00,0X3F,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XF8,0X01,0XF3,0XFF,0XC6,0X3F,
0X3F,0XFF,0XFC,0X00,0X3F,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XF8,0X01,0XF3,
0XFF,0X9F,0X1F,0X3F,0XFF,0XFF,0X3F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,
0XFD,0XFF,0XF3,0XFF,0XBF,0XDF,0X3F,0XFF,0XFF,0X3F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X9F,0XF9,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XF9,0XFF,0XF3,0XFE,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XF9,0XFF,0XF3,0XFE,0X7F,0XFF,0X3F,
0XFF,0XFF,0XE0,0XFF,0XFF,0X00,0X00,0X00,0X00,0X07,0X07,0X9F,0XF8,0X01,0XF3,0XFE,
0XFF,0XFF,0X3F,0XFF,0XFF,0X80,0X7F,0XFF,0X00,0X00,0X00,0X00,0X06,0X03,0X9F,0XFE,
0X01,0XF3,0XFC,0X00,0X1F,0X3F,0XFF,0XFF,0X00,0X3F,0XFF,0X00,0X00,0X00,0X00,0X04,
0X99,0X9F,0XFF,0XFF,0XF3,0XFC,0X00,0X1F,0X3F,0XFF,0XFF,0X33,0X3F,0XFF,0X00,0X00,
0X00,0X00,0X05,0XBD,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X33,0X3F,
0XFF,0X00,0X00,0X00,0X00,0X05,0XBD,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,
0XFF,0X03,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0X9D,0X9F,0XFF,0X0F,0XF3,0XFF,0XFF,
0XFF,0X3F,0XFF,0XFF,0X83,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XC3,0X9F,0XFC,0X03,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XC3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XC3,
0X9F,0XFC,0XF1,0XF3,0XFF,0XC7,0X9F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0X9F,0XF9,0XF9,0XF3,0XFC,0X07,0X9F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XF9,0XF9,0XF3,0XFC,0XE7,0X9F,0X3F,0XFF,0XFF,
0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XF9,0XF9,0XF3,0XFC,0XE7,0X9F,
0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XF9,0XF9,0XF3,
0XFC,0XF3,0X1F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,
0XFF,0XFF,0XF3,0XFC,0XF0,0X3F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X9F,0X80,0X01,0XF3,0XFC,0XF8,0X7F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFE,0X23,0X9F,0X80,0X01,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,
0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X21,0X9F,0XFD,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X05,0XDD,0X9F,0XF9,0XFF,0XF3,0XFE,
0X7F,0X9F,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X05,0XDD,0X9F,0XF9,
0XFF,0XF3,0XFC,0XFF,0X1F,0X3F,0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,
0XDD,0X9F,0XF9,0XFF,0XF3,0XFC,0XFE,0X1F,0X3F,0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFD,0XDD,0X9F,0XF8,0X01,0XF3,0XFC,0XF8,0X9F,0X3F,0XFE,0X00,0X00,0X03,
0XFF,0X00,0X00,0X00,0X00,0X04,0X21,0X9F,0XFE,0X01,0XF3,0XFC,0XF1,0X9F,0X3F,0XFE,
0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X06,0X23,0X9F,0XFF,0XFF,0XF3,0XFE,0X03,
0X9F,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,
0XF3,0XFF,0X0F,0X9F,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,
0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,
0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
0X3F,0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XC0,0X01,0XF3,
0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0XF8,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFF,0X9F,
0XC0,0X01,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X03,0XFE,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFD,0XFF,0X9F,0XCE,0X79,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X07,0X07,0X03,0XFF,0X00,
0X00,0X00,0X00,0X05,0XF1,0X9F,0XCE,0X79,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X06,0X03,
0X83,0XFF,0X00,0X00,0X00,0X00,0X05,0XC1,0X9F,0XCE,0X79,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFE,0X0C,0X01,0X83,0XFF,0X00,0X00,0X00,0X00,0X05,0X0F,0X9F,0XCE,0X79,0XF3,0XFF,
0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0X00,0X00,0X00,0X00,0X04,0X3F,0X9F,0XCF,
0XF9,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X31,0X83,0XFF,0X00,0X00,0X00,0X00,0X04,
0XFF,0X9F,0XFF,0X9F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X31,0X83,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFD,0XFF,0X9F,0XFF,0X9F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X3F,0X83,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0X9F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,
0X08,0X3F,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0X9F,0XF3,0XFF,0XFF,
0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0X9F,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0XF8,0X03,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X03,0XFE,0X03,0XFF,
0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XC0,0X01,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X07,
0X07,0X03,0XFF,0X00,0X00,0X00,0X00,0X06,0XFB,0X9F,0XC0,0X01,0XF3,0XFF,0XFF,0XFF,
0X3F,0XFE,0X0C,0X01,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XF9,0X9F,0XCF,0X3F,0XF3,
0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0X9F,
0XCF,0X3F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0X00,0X00,0X00,0X00,
0X05,0XBD,0X9F,0XCF,0X3F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0X00,
0X00,0X00,0X00,0X05,0XBD,0X9F,0XCE,0X7F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X07,0X07,
0X03,0XFF,0X00,0X00,0X00,0X00,0X05,0X99,0X9F,0XE0,0X7F,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFE,0X03,0XFE,0X03,0XFF,0X00,0X00,0X00,0X00,0X04,0X03,0X9F,0XF0,0XFF,0XF3,0XFF,
0XFF,0XFF,0X3F,0XFE,0X00,0XF8,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X47,0X9F,0XFF,
0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,
0XFF,0X9F,0XFF,0XE3,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0XF8,0X03,0XFF,0X00,0X00,
0X00,0X00,0X07,0XFF,0X9F,0XF9,0XC1,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X03,0XFE,0X03,
0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XF9,0XD9,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,
0X07,0X07,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XF9,0X99,0XF3,0XFF,0XFF,
0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XF9,0X9B,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X9F,0XFC,0X01,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X07,0X9F,0XFE,0X01,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFE,0X03,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X07,
0X07,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XF9,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
0X3F,0XFE,0X03,0XFE,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0X9F,0XF8,0X00,0X13,
0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0XF8,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0X9F,
0XF8,0X00,0X13,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFC,0XF9,0X9F,0XFC,0XFB,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,
0X00,0X00,0X00,0X06,0X03,0X9F,0XF9,0XF9,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0F,0XFF,
0X83,0XFF,0X00,0X00,0X00,0X00,0X07,0X07,0X9F,0XF9,0XF9,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFE,0X0F,0XFF,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XF9,0XF9,0XF3,0XFF,
0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XF8,
0XF1,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0X00,0X00,0X00,0X00,0X07,
0XFF,0X9F,0XFC,0X03,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0X0F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,
0X0E,0X03,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,
0XFF,0X3F,0XFE,0X07,0X07,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X23,0X9F,0XFF,0X07,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X03,0XFE,0X03,0XFF,0X00,0X00,0X00,0X00,0X04,0X21,
0X9F,0XFC,0X03,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0XF8,0X03,0XFF,0X00,0X00,0X00,
0X00,0X05,0XDD,0X9F,0XF9,0X99,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,
0X00,0X00,0X00,0X00,0X05,0XDD,0X9F,0XF9,0X99,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,
0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X05,0XDD,0X9F,0XF9,0X99,0XF3,0XFF,0XFF,0XFF,
0X3F,0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XDD,0X9F,0XFC,0X19,0XF3,
0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X21,0X9F,
0XFE,0X1F,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,
0X06,0X23,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0F,0XFF,0X83,0XFF,0X00,
0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0F,0XFF,
0X83,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XF8,0X01,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFE,0X0C,0X01,0X83,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XF8,0X01,0XF3,0XFF,
0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFC,
0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0X00,0X00,0X00,0X00,0X07,
0XFF,0X9F,0XF9,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X01,0X83,0XFF,0X00,0X00,
0X00,0X00,0X07,0XFF,0X9F,0XF9,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0E,0X03,0X03,
0XFF,0X00,0X00,0X00,0X00,0X07,0XE7,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,
0X07,0X07,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC7,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,
0XFF,0X3F,0XFE,0X03,0XFE,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0X97,0X9F,0XFF,0XFF,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0XF8,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0X37,
0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,
0X00,0X06,0X77,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,
0X00,0X00,0X00,0X00,0X04,0X01,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0F,
0XFF,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X01,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
0X3F,0XFE,0X0F,0XFF,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0X9F,0XFF,0XFF,0XF3,
0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,
0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,
0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X03,0X81,0X83,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X07,0XC1,
0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFE,0X0C,0X61,0X83,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,
0XFF,0XFF,0X3F,0XFE,0X0C,0X61,0X83,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,
0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X31,0X83,0XFF,0X00,0X00,0X00,0X00,0X06,
0X23,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X3F,0X03,0XFF,0X00,0X00,
0X00,0X00,0X04,0X21,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X0E,0X03,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XDD,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,
0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XDD,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,
0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XDD,0X9F,0XFF,0XFF,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0F,0XFF,0X83,0XFF,0X00,0X00,0X00,0X00,0X05,0XDD,
0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0F,0XFF,0X83,0XFF,0X00,0X00,0X00,
0X00,0X04,0X21,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X30,0X03,0XFF,
0X00,0X00,0X00,0X00,0X06,0X23,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,
0X30,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
0X3F,0XFE,0X0C,0X30,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,
0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X60,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,
0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X07,0XE0,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X03,0XC0,0X03,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,
0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFE,0X0F,0XFF,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,
0XFF,0XFF,0X3F,0XFE,0X0F,0XFF,0X83,0XFF,0X00,0X00,0X00,0X00,0X07,0X3F,0X9F,0XFF,
0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X01,0X83,0XFF,0X00,0X00,0X00,0X00,0X06,
0X7F,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X01,0X83,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFE,0X7F,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X01,0X83,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X01,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,
0X00,0X01,0X83,0XFF,0X00,0X00,0X00,0X00,0X04,0X01,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,
0XFF,0X3F,0XFE,0X00,0X01,0X83,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X01,0X83,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,
0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X0F,0X83,0XFF,0X00,0X00,0X00,
0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X7E,0X03,0XFF,
0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X07,
0XFC,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
0X3F,0XFE,0X0F,0X0C,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,
0XFF,0XFF,0XFF,0X3F,0XFE,0X0E,0X0C,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,
0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X07,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X7F,0X03,0XFF,0X00,
0X00,0X00,0X00,0X06,0XFD,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X0F,
0X83,0XFF,0X00,0X00,0X00,0X00,0X04,0XF9,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFE,0X00,0X01,0X83,0XFF,0X00,0X00,0X00,0X00,0X05,0XF1,0X9F,0XFF,0XFF,0XF3,0XFF,
0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X05,0XE5,0X9F,0XFF,
0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X08,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X05,
0XCD,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0C,0X00,0X03,0XFF,0X00,0X00,
0X00,0X00,0X05,0X8D,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0F,0X00,0X03,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X1D,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,
0X03,0XC0,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3D,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,
0XFF,0X3F,0XFE,0X00,0X7F,0X83,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X7F,0X83,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,
0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X01,0XC0,0X03,0XFF,0X00,0X00,0X00,
0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X07,0X80,0X03,0XFF,
0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X0E,
0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
0X3F,0XFE,0X08,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,
0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,
0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,
0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,
0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,
0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,
0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,
0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,
0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,
0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,
0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,
0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,
0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,
0XF3,0XFF,0XFF,0XFF,0X3F,0XFE,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X9F,0XFF,0XFF,0XF3,
0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,
0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0X3F,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,
0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF]