From e56335837071a02e5b91e29e0fcad80344a5b78d Mon Sep 17 00:00:00 2001 From: jjwbruijn Date: Sun, 28 Jan 2024 11:08:42 +0100 Subject: [PATCH] Sorry bit much. Major rewrite of the 88MZ100 firmware, now with compression support. Added beta M2 2.7" (sleep current needs work) and 1.6"(200px). Probably broke M3 building, it's font files have moved to a new 'common' directory --- .gitmodules | 3 + .../12x20_horizontal_LSB_1.h | 98 - .../88MZ100_7.5 M2_7.5_v0027_beta.bin | Bin 0 -> 100044 bytes .../88MZ100_OpenEpaperLink_7.4/Makefile | 119 +- .../88MZ100_OpenEpaperLink_7.4/bitmaps.h | 185 ++ ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/board.h | 2 +- ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/comms.c | 4 +- .../compression.cpp | 37 + .../88MZ100_OpenEpaperLink_7.4/compression.h | 9 + .../88MZ100_OpenEpaperLink_7.4/drawing.c | 68 - .../88MZ100_OpenEpaperLink_7.4/drawing.cpp | 824 ++++++++ .../88MZ100_OpenEpaperLink_7.4/drawing.h | 130 +- ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.c | 818 -------- ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.h | 58 - .../epd_interface.cpp | 265 +++ .../epd_interface.h | 55 + ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/font.h | 260 --- .../{main.c => main.cpp} | 116 +- ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.h | 39 +- ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.c | 223 ++ ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.h | 21 + .../mkfsOEPL/img_tbird.bin | Bin 0 -> 7124 bytes .../mkfsOEPL/mkfs.oepl | Bin 0 -> 134320 bytes .../mkfsOEPL/mkfs.oepl.cpp | 253 +++ .../mkfsOEPL/mkfs.oepl.sh | 4 + .../mkfsOEPL/testcompress.cpp | 57 + .../{ => mz100}/adc_reg.h | 0 .../{ => mz100}/aes_reg.h | 0 .../{ => mz100}/cauclk_reg.h | 0 .../{ => mz100}/core_cm3.c | 0 .../{ => mz100}/core_cm3.h | 0 .../{ => mz100}/core_cmFunc.h | 0 .../{ => mz100}/core_cmInstr.h | 0 .../{ => mz100}/eeprom.h | 20 +- .../{ => mz100}/gpio.c | 4 +- .../{ => mz100}/gpio.h | 0 .../{ => mz100}/gpio_reg.h | 0 .../{ => mz100}/gpt_reg.h | 0 .../{ => mz100}/mz100.h | 0 .../{ => mz100}/mz100.ld | 0 .../{ => mz100}/mz100_adc.c | 0 .../{ => mz100}/mz100_adc.h | 0 .../{ => mz100}/mz100_aes.c | 0 .../{ => mz100}/mz100_aes.h | 0 .../{ => mz100}/mz100_aon_ram.c | 9 +- .../{ => mz100}/mz100_aon_ram.h | 0 .../{ => mz100}/mz100_clock.c | 0 .../{ => mz100}/mz100_clock.h | 0 .../{ => mz100}/mz100_driver.c | 0 .../{ => mz100}/mz100_driver.h | 0 .../{ => mz100}/mz100_driver_isr.h | 0 .../{ => mz100}/mz100_drv_config.h | 0 .../{ => mz100}/mz100_flash.c | 0 .../{ => mz100}/mz100_flash.h | 0 .../{ => mz100}/mz100_gpio.c | 0 .../{ => mz100}/mz100_gpio.h | 0 .../{ => mz100}/mz100_gpt.c | 0 .../{ => mz100}/mz100_gpt.h | 0 .../{ => mz100}/mz100_interrupt.h | 0 .../{ => mz100}/mz100_pinmux.c | 0 .../{ => mz100}/mz100_pinmux.h | 0 .../{ => mz100}/mz100_pmu.c | 0 .../{ => mz100}/mz100_pmu.h | 0 .../{ => mz100}/mz100_qspi.c | 0 .../{ => mz100}/mz100_qspi.h | 0 .../{ => mz100}/mz100_rtc.c | 0 .../{ => mz100}/mz100_rtc.h | 0 .../{ => mz100}/mz100_sleep.c | 12 +- .../{ => mz100}/mz100_sleep.h | 0 .../{ => mz100}/mz100_ssp.c | 0 .../{ => mz100}/mz100_ssp.h | 0 .../{ => mz100}/mz100_uart.c | 0 .../{ => mz100}/mz100_uart.h | 0 .../{ => mz100}/mz100_wdt.c | 0 .../{ => mz100}/mz100_wdt.h | 0 .../{ => mz100}/nfc.c | 0 .../{ => mz100}/nfc.h | 0 .../{ => mz100}/pinmux_reg.h | 0 .../{ => mz100}/pmu_reg.h | 0 .../{ => mz100}/printf.c | 0 .../{ => mz100}/printf.h | 0 .../{ => mz100}/qspi_reg.h | 0 .../{ => mz100}/rc32m_reg.h | 0 .../{ => mz100}/rtc_reg.h | 0 .../{ => mz100}/ssp_reg.h | 0 .../{ => mz100}/sysctrl_reg.h | 0 .../{ => mz100}/timer.c | 0 .../{ => mz100}/timer.h | 0 .../{ => mz100}/uart_reg.h | 0 .../{ => mz100}/util.c | 4 +- .../{ => mz100}/util.h | 0 .../{ => mz100}/wdt_reg.h | 0 .../{ => mz100}/xtal32m_reg.h | 0 .../88MZ100_OpenEpaperLink_7.4/oepl_fs.cpp | 168 ++ .../88MZ100_OpenEpaperLink_7.4/oepl_fs.h | 51 + .../88MZ100_OpenEpaperLink_7.4/powermgt.c | 10 +- .../88MZ100_OpenEpaperLink_7.4/settings.c | 8 +- .../88MZ100_OpenEpaperLink_7.4/settings.h | 9 +- .../88MZ100_OpenEpaperLink_7.4/syncedproto.c | 116 +- .../88MZ100_OpenEpaperLink_7.4/syncedproto.h | 2 +- .../uc8159-var-m2.cpp | 476 +++++ .../uc8159-var-m2.h | 35 + .../userinterface.c | 154 -- .../userinterface.cpp | 166 ++ .../88MZ100_OpenEpaperLink_7.4/zigbee.c | 6 +- ARM_Tag_FW/common/bitmaps.h | 1867 +++++++++++++++++ ARM_Tag_FW/common/compression.cpp | 175 ++ ARM_Tag_FW/common/compression.h | 39 + ARM_Tag_FW/common/eeprom_struct.h | 8 + .../include => common/fonts}/FreeSans9pt7b.h | 0 .../fonts}/FreeSansBold18pt7b.h | 0 .../fonts}/FreeSansBold24pt7b.h | 0 ARM_Tag_FW/common/uzlib | 1 + Tag_Flasher/88MZ100-Serial-Flasher.py | 23 +- oepl-definitions.h | 3 + zbs243_Tag_FW/Makefile | 3 + zbs243_Tag_FW/aes.h | 20 + zbs243_Tag_FW/ccm.c | 177 ++ zbs243_Tag_FW/ccm.h | 32 + zbs243_Tag_FW/drawing.c | 48 +- zbs243_Tag_FW/i2cdevices.c | 5 + zbs243_Tag_FW/main.c | 13 +- zbs243_Tag_FW/settings.c | 3 + zbs243_Tag_FW/settings.h | 16 +- zbs243_Tag_FW/syncedproto.c | 76 +- zbs243_Tag_FW/userinterface.c | 132 +- zbs243_shared/bitmaps.h | 16 + zbs243_shared/board/ssd1619.c | 27 +- zbs243_shared/board/uc-var-27.c | 824 ++++++++ zbs243_shared/board/uc-var-27.h | 74 + zbs243_shared/board/uc8151.c | 3 + zbs243_shared/board/zbs154_ssd1619/screen.h | 13 +- zbs243_shared/board/zbs16_ssd1619/board.c | 1 + zbs243_shared/board/zbs16_ssd1619/board.h | 35 + zbs243_shared/board/zbs16_ssd1619/make.mk | 7 + zbs243_shared/board/zbs16_ssd1619/screen.c | 1 + zbs243_shared/board/zbs16_ssd1619/screen.h | 11 + zbs243_shared/board/zbs27_ucvar/board.c | 1 + zbs243_shared/board/zbs27_ucvar/board.h | 33 + zbs243_shared/board/zbs27_ucvar/make.mk | 7 + zbs243_shared/board/zbs27_ucvar/screen.c | 1 + zbs243_shared/board/zbs27_ucvar/screen.h | 13 + zbs243_shared/board/zbs29_ssd1619/screen.h | 19 +- zbs243_shared/board/zbs42_ssd1619/screen.h | 13 +- zbs243_shared/cpu/8051/aes.c | 451 ++++ zbs243_shared/eeprom.c | 69 +- zbs243_shared/soc/zbs243/make.mk | 2 +- 147 files changed, 7375 insertions(+), 1785 deletions(-) create mode 100644 .gitmodules delete mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/12x20_horizontal_LSB_1.h create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/88MZ100_7.5 M2_7.5_v0027_beta.bin create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.cpp create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.h delete mode 100755 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.c create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.cpp delete mode 100755 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.c delete mode 100755 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.h create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.cpp create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.h delete mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/font.h rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{main.c => main.cpp} (86%) mode change 100755 => 100644 create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.c create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.h create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/img_tbird.bin create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.cpp create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.sh create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/testcompress.cpp rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/adc_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/aes_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/cauclk_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/core_cm3.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/core_cm3.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/core_cmFunc.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/core_cmInstr.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/eeprom.h (60%) mode change 100755 => 100644 rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/gpio.c (99%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/gpio.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/gpio_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/gpt_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100.ld (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_adc.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_adc.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_aes.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_aes.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_aon_ram.c (74%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_aon_ram.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_clock.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_clock.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_driver.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_driver.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_driver_isr.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_drv_config.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_flash.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_flash.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_gpio.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_gpio.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_gpt.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_gpt.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_interrupt.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_pinmux.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_pinmux.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_pmu.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_pmu.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_qspi.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_qspi.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_rtc.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_rtc.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_sleep.c (88%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_sleep.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_ssp.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_ssp.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_uart.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_uart.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_wdt.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/mz100_wdt.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/nfc.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/nfc.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/pinmux_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/pmu_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/printf.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/printf.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/qspi_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/rc32m_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/rtc_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/ssp_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/sysctrl_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/timer.c (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/timer.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/uart_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/util.c (98%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/util.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/wdt_reg.h (100%) rename ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/{ => mz100}/xtal32m_reg.h (100%) create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.cpp create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.h create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.cpp create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.h delete mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.c create mode 100644 ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.cpp create mode 100644 ARM_Tag_FW/common/bitmaps.h create mode 100644 ARM_Tag_FW/common/compression.cpp create mode 100644 ARM_Tag_FW/common/compression.h create mode 100644 ARM_Tag_FW/common/eeprom_struct.h rename ARM_Tag_FW/{Newton_M3_nRF52811/include => common/fonts}/FreeSans9pt7b.h (100%) rename ARM_Tag_FW/{Newton_M3_nRF52811/include => common/fonts}/FreeSansBold18pt7b.h (100%) rename ARM_Tag_FW/{Newton_M3_nRF52811/include => common/fonts}/FreeSansBold24pt7b.h (100%) create mode 160000 ARM_Tag_FW/common/uzlib create mode 100644 zbs243_Tag_FW/aes.h create mode 100644 zbs243_Tag_FW/ccm.c create mode 100644 zbs243_Tag_FW/ccm.h create mode 100644 zbs243_shared/board/uc-var-27.c create mode 100644 zbs243_shared/board/uc-var-27.h create mode 100644 zbs243_shared/board/zbs16_ssd1619/board.c create mode 100644 zbs243_shared/board/zbs16_ssd1619/board.h create mode 100644 zbs243_shared/board/zbs16_ssd1619/make.mk create mode 100644 zbs243_shared/board/zbs16_ssd1619/screen.c create mode 100644 zbs243_shared/board/zbs16_ssd1619/screen.h create mode 100644 zbs243_shared/board/zbs27_ucvar/board.c create mode 100644 zbs243_shared/board/zbs27_ucvar/board.h create mode 100644 zbs243_shared/board/zbs27_ucvar/make.mk create mode 100644 zbs243_shared/board/zbs27_ucvar/screen.c create mode 100644 zbs243_shared/board/zbs27_ucvar/screen.h create mode 100644 zbs243_shared/cpu/8051/aes.c diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..997df955 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "ARM_Tag_FW/common/uzlib"] + path = ARM_Tag_FW/common/uzlib + url = https://github.com/pfalcon/uzlib.git diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/12x20_horizontal_LSB_1.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/12x20_horizontal_LSB_1.h deleted file mode 100644 index c8f9d8a2..00000000 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/12x20_horizontal_LSB_1.h +++ /dev/null @@ -1,98 +0,0 @@ -const char font[256][40]={ -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x20 -{0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x21 -{0x00,0x00,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x22 -{0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x22,0x00,0x11,0x00,0x11,0x00,0x11,0xE0,0xFF,0x80,0x08,0x80,0x08,0x80,0x08,0xE0,0x7F,0x40,0x04,0x40,0x04,0x20,0x02,0x20,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x23 -{0x00,0x00,0x00,0x04,0x00,0x1F,0x80,0x3F,0xC0,0x24,0xC0,0x04,0xC0,0x04,0x80,0x07,0x00,0x07,0x00,0x1C,0x00,0x1C,0x00,0x34,0x00,0x34,0x40,0x34,0xC0,0x1F,0x80,0x0F,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x24 -{0x00,0x00,0x00,0x00,0xE0,0x81,0x30,0x43,0x30,0x23,0x30,0x13,0x30,0x0B,0x30,0x0B,0xE0,0x05,0x00,0x7A,0x00,0xCD,0x00,0xCD,0x80,0xCC,0x40,0xCC,0x20,0xCC,0x10,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x25 -{0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x1F,0x80,0x19,0x80,0x19,0x80,0x0D,0x00,0x07,0xC0,0x03,0x60,0xC6,0x30,0xCE,0x30,0xCC,0x30,0x78,0x70,0x78,0xE0,0x7F,0xC0,0xEF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x26 -{0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x27 -{0x00,0x00,0x00,0x30,0x00,0x3C,0x00,0x0E,0x00,0x06,0x00,0x03,0x00,0x03,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x03,0x00,0x03,0x00,0x06,0x00,0x0E,0x00,0x3C,0x00,0x30,0x00,0x00}, // 0x28 -{0x00,0x00,0xC0,0x00,0xC0,0x03,0x00,0x07,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x0C,0x00,0x06,0x00,0x07,0xC0,0x03,0xC0,0x00,0x00,0x00}, // 0x29 -{0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x60,0x33,0xE0,0x3C,0x00,0x00,0x80,0x0D,0xC0,0x19,0x80,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x2A -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0xE0,0x7F,0xE0,0x7F,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x2B -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x06,0x00,0x02,0x00,0x03,0x00,0x00}, // 0x2C -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x2D -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x2E -{0x00,0x00,0x00,0x60,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x0C,0x00,0x06,0x00,0x06,0x00,0x03,0x00,0x03,0x80,0x01,0x80,0x01,0x80,0x01,0xC0,0x00,0xC0,0x00,0x60,0x00,0x00,0x00}, // 0x2F -{0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x1F,0xC0,0x30,0xC0,0x30,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xC0,0x30,0xC0,0x30,0x80,0x1F,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x30 -{0x00,0x00,0x00,0x00,0x00,0x06,0xC0,0x07,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0xE0,0x7F,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x31 -{0x00,0x00,0x00,0x00,0x80,0x0F,0xC0,0x1F,0x40,0x38,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x0C,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0xC0,0x3F,0xC0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x32 -{0x00,0x00,0x00,0x00,0x80,0x0F,0xC0,0x3F,0x40,0x30,0x00,0x30,0x00,0x18,0x80,0x0F,0x80,0x0F,0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x30,0x40,0x38,0xC0,0x1F,0xC0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x33 -{0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1C,0x00,0x1E,0x00,0x1A,0x00,0x19,0x80,0x19,0xC0,0x18,0x40,0x18,0xE0,0x7F,0xE0,0x7F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x34 -{0x00,0x00,0x00,0x00,0x80,0x3F,0x80,0x3F,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x0F,0x80,0x1F,0x00,0x38,0x00,0x30,0x00,0x30,0x00,0x38,0x80,0x1F,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x35 -{0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x1F,0xC0,0x11,0xC0,0x00,0x60,0x00,0x60,0x0E,0x60,0x1F,0xE0,0x38,0x60,0x30,0x60,0x30,0x60,0x30,0xC0,0x38,0xC0,0x1F,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x36 -{0x00,0x00,0x00,0x00,0xC0,0x7F,0xC0,0x7F,0x00,0x60,0x00,0x30,0x00,0x10,0x00,0x18,0x00,0x0C,0x00,0x04,0x00,0x06,0x00,0x02,0x00,0x03,0x00,0x03,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x37 -{0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x1F,0xC0,0x18,0xC0,0x18,0xC0,0x19,0x80,0x0F,0x00,0x07,0xC0,0x1E,0x60,0x38,0x60,0x30,0x60,0x30,0xE0,0x38,0xC0,0x1F,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x38 -{0x00,0x00,0x00,0x00,0x80,0x07,0xC0,0x1F,0xE0,0x18,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x38,0xC0,0x37,0x80,0x33,0x00,0x30,0x00,0x18,0x40,0x1C,0xC0,0x0F,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x39 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3A -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x06,0x00,0x02,0x00,0x03,0x00,0x00}, // 0x3B -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x70,0x00,0x3C,0x00,0x0E,0x80,0x03,0xE0,0x00,0x80,0x03,0x00,0x0E,0x00,0x3C,0x00,0x70,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3C -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0xE0,0x7F,0x00,0x00,0x00,0x00,0xE0,0x7F,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3D -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xE0,0x00,0xC0,0x03,0x00,0x07,0x00,0x1C,0x00,0x70,0x00,0x1C,0x00,0x07,0xC0,0x03,0xE0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3E -{0x00,0x00,0x00,0x00,0xE0,0x0F,0xE0,0x3F,0x20,0x38,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x0C,0x00,0x06,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3F -{0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x31,0xC0,0x60,0x60,0x7C,0x30,0x66,0x30,0x63,0x30,0x63,0x30,0x73,0x30,0x73,0x30,0x6F,0x60,0xE6,0x60,0x00,0xC0,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x40 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0F,0x00,0x0F,0x00,0x0D,0x80,0x19,0x80,0x19,0xC0,0x38,0xC0,0x30,0xC0,0x3F,0xE0,0x7F,0x60,0x60,0x60,0x60,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x41 -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0xE0,0x1F,0x60,0x18,0x60,0x18,0x60,0x0C,0xE0,0x07,0xE0,0x0F,0x60,0x18,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x1F,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x42 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x80,0x7F,0xC0,0x41,0xC0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xC0,0x00,0xC0,0x43,0x80,0x7F,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x43 -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0xE0,0x1F,0x60,0x38,0x60,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x30,0x60,0x38,0xE0,0x1F,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x44 -{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x7F,0xC0,0x7F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x3F,0xC0,0x3F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x7F,0xC0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x45 -{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x7F,0xC0,0x7F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x3F,0xC0,0x3F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x46 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x80,0x7F,0xC0,0x41,0xC0,0x00,0x60,0x00,0x60,0x00,0x60,0x78,0x60,0x78,0x60,0x60,0xC0,0x60,0xC0,0x61,0x80,0x7F,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x47 -{0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x3F,0xE0,0x3F,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x48 -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0xE0,0x1F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0xE0,0x1F,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x49 -{0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x80,0x1F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x1C,0xC0,0x0F,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4A -{0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x70,0x60,0x38,0x60,0x1C,0x60,0x0E,0x60,0x06,0x60,0x03,0xE0,0x03,0x60,0x07,0x60,0x0E,0x60,0x1C,0x60,0x38,0x60,0x70,0x60,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4B -{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x7F,0xC0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4C -{0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x70,0x70,0xF0,0x78,0xB0,0x68,0xB0,0x68,0xB0,0x6D,0x30,0x65,0x30,0x65,0x30,0x67,0x30,0x62,0x30,0x60,0x30,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4D -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x60,0xE0,0x60,0xE0,0x61,0xE0,0x61,0x60,0x63,0x60,0x67,0x60,0x66,0x60,0x6E,0x60,0x6C,0x60,0x78,0x60,0x78,0x60,0x70,0x60,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4E -{0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0xC0,0x1F,0xE0,0x38,0x70,0x70,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x70,0x70,0xE0,0x38,0xC0,0x1F,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4F -{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0xC0,0x3F,0xC0,0x70,0xC0,0x60,0xC0,0x60,0xC0,0x70,0xC0,0x3F,0xC0,0x0F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x50 -{0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0xC0,0x1F,0xE0,0x38,0x70,0x70,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x60,0x30,0xE0,0x38,0xC0,0x1F,0x80,0x0F,0x00,0x38,0x00,0xF0,0x00,0x40,0x00,0x00}, // 0x51 -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0xE0,0x1F,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x1C,0xE0,0x0F,0xE0,0x07,0x60,0x0E,0x60,0x1C,0x60,0x38,0x60,0x70,0x60,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x52 -{0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0xC0,0x1F,0x60,0x10,0x60,0x00,0xE0,0x00,0xC0,0x03,0x80,0x0F,0x00,0x3C,0x00,0x30,0x00,0x30,0x60,0x38,0xE0,0x1F,0xC0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x53 -{0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xF0,0xFF,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x54 -{0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x38,0xC0,0x1F,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x55 -{0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xC0,0x60,0x60,0x60,0x60,0xE0,0x60,0xC0,0x30,0xC0,0x30,0xC0,0x31,0x80,0x19,0x80,0x1B,0x00,0x0B,0x00,0x0F,0x00,0x0F,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x56 -{0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x20,0x46,0x20,0x46,0x20,0x6E,0x60,0x6F,0x60,0x69,0x60,0x69,0x60,0x39,0xC0,0x39,0xC0,0x39,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x57 -{0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0xE0,0x60,0xC0,0x30,0x80,0x19,0x80,0x0F,0x00,0x0F,0x00,0x06,0x00,0x0F,0x80,0x1D,0x80,0x19,0xC0,0x30,0x60,0x70,0x30,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x58 -{0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xC0,0x60,0x60,0xC0,0x30,0xC0,0x31,0x80,0x19,0x00,0x0F,0x00,0x0F,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x59 -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0xE0,0x7F,0x00,0x60,0x00,0x30,0x00,0x18,0x00,0x0C,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0x60,0x00,0xE0,0x7F,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x5A -{0x00,0x00,0x00,0x3F,0x00,0x3F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x3F,0x00,0x3F,0x00,0x00}, // 0x5B -{0x00,0x00,0x60,0x00,0xC0,0x00,0xC0,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x03,0x00,0x03,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x60,0x00,0x00}, // 0x5C -{0x00,0x00,0xC0,0x0F,0xC0,0x0F,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0xC0,0x0F,0xC0,0x0F,0x00,0x00}, // 0x5D -{0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0x0A,0x00,0x0B,0x00,0x1B,0x80,0x11,0x80,0x31,0xC0,0x30,0xC0,0x20,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x5E -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xF0,0xFF,0x00,0x00,0x00,0x00}, // 0x5F -{0x00,0x06,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x60 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0xC0,0x3F,0x40,0x30,0x00,0x30,0x00,0x30,0x80,0x3F,0xC0,0x30,0x60,0x30,0x60,0x38,0xE0,0xFF,0xC0,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x61 -{0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x0E,0x60,0x1F,0xE0,0x39,0xE0,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x18,0xE0,0x1F,0x60,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x62 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC0,0x3F,0xC0,0x21,0xE0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xE0,0x00,0xC0,0x01,0xC0,0x3F,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x63 -{0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x80,0x37,0xC0,0x3F,0xC0,0x38,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x38,0xC0,0x3F,0x80,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x64 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x1F,0xC0,0x38,0x60,0x30,0xE0,0x3F,0xE0,0x3F,0x60,0x00,0x60,0x00,0xC0,0x20,0xC0,0x3F,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x65 -{0x00,0x00,0x00,0x7E,0x00,0x7F,0x00,0x03,0x00,0x03,0xE0,0x7F,0xE0,0x7F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x66 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x37,0xC0,0x3F,0xC0,0x38,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x38,0xC0,0x3F,0x80,0x37,0x00,0x30,0x40,0x38,0xC0,0x1F,0x80,0x0F}, // 0x67 -{0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x1E,0x60,0x3F,0xE0,0x31,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x68 -{0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0xC0,0x0F,0xC0,0x0F,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x69 -{0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x80,0x1F,0x80,0x1F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x1C,0xC0,0x0F,0xC0,0x07}, // 0x6A -{0x00,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x70,0xC0,0x38,0xC0,0x1C,0xC0,0x0E,0xC0,0x06,0xC0,0x07,0xC0,0x0E,0xC0,0x1C,0xC0,0x38,0xC0,0x70,0xC0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6B -{0x00,0x00,0xC0,0x0F,0xC0,0x0F,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6C -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0x39,0xF0,0x7F,0x70,0x67,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6D -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x1E,0x60,0x3F,0xE0,0x31,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6E -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x3F,0xC0,0x30,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xC0,0x30,0xC0,0x3F,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6F -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x0F,0xE0,0x1F,0xE0,0x38,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x18,0xE0,0x1F,0x60,0x0F,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00}, // 0x70 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x37,0xC0,0x3F,0xC0,0x38,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0xE0,0x38,0xC0,0x37,0x80,0x33,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30}, // 0x71 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3C,0xC0,0x3E,0xC0,0x23,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x72 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0xC0,0x1F,0xC0,0x00,0xC0,0x00,0xC0,0x03,0x00,0x1F,0x00,0x38,0x00,0x30,0x40,0x30,0xC0,0x1F,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x73 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0xE0,0x7F,0xE0,0x7F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x7F,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x74 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x3C,0xE0,0x37,0xC0,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x75 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0xC0,0x20,0xC0,0x30,0xC0,0x30,0x80,0x11,0x80,0x19,0x80,0x19,0x00,0x0B,0x00,0x0F,0x00,0x0F,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x76 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC0,0x30,0xC6,0x30,0xC6,0x20,0x4E,0x60,0x4F,0x60,0x49,0x60,0x69,0x60,0x79,0xC0,0x39,0xC0,0x30,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x77 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x70,0xC0,0x30,0x80,0x19,0x80,0x0B,0x00,0x0F,0x00,0x06,0x00,0x0F,0x80,0x1D,0x80,0x19,0xC0,0x30,0x60,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x78 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0xC0,0x20,0xC0,0x30,0xC0,0x31,0x80,0x19,0x80,0x19,0x00,0x0B,0x00,0x0F,0x00,0x0F,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x03,0xC0,0x03,0xC0,0x01}, // 0x79 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x3F,0xE0,0x3F,0x00,0x30,0x00,0x18,0x00,0x0C,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x3F,0xE0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x7A -{0x00,0x00,0x00,0x3C,0x00,0x3E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0xC0,0x03,0xC0,0x03,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3E,0x00,0x3C,0x00,0x00}, // 0x7B -{0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00}, // 0x7C -{0x00,0x00,0xC0,0x03,0xC0,0x07,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3C,0x00,0x3C,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0xC0,0x07,0xC0,0x03,0x00,0x00}, // 0x7D -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x43,0xE0,0x7F,0x20,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x7E -{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0xC0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} // 0x7F -}; \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/88MZ100_7.5 M2_7.5_v0027_beta.bin b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/88MZ100_7.5 M2_7.5_v0027_beta.bin new file mode 100644 index 0000000000000000000000000000000000000000..57bf070e416b8548f5ca4f87511b8730d5acac98 GIT binary patch literal 100044 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

^1`rnCNeGj}3fe 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 a!dv04*U+Gg^=e=9*UB literal 0 HcmV?d00001 diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/Makefile b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/Makefile index b96f748c..ae681145 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/Makefile +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/Makefile @@ -1,21 +1,25 @@ + MZ_FLASHER=python ../88MZ100_Flasher/88MZ100_Uart_flasher.py ARMGCC=/usr/bin/ CC=$(ARMGCC)arm-none-eabi-gcc +GPLUSPLUS=$(ARMGCC)arm-none-eabi-g++ AS=$(ARMGCC)arm-none-eabi-as OBJCOPY=$(ARMGCC)arm-none-eabi-objcopy -#-Wall +#-Wall CC_WARNING_FLAGS=-Wall -Wformat=0 -Wattributes -Wstrict-aliasing=0 -CC_FlAGS=-mcpu=cortex-m3 -g -O0 -mthumb -fdata-sections -ffunction-sections -std=c99 -CC_END_FLAGS=-lc -lnosys -L. -T mz100.ld -fPIE --specs=nosys.specs -mcpu=cortex-m3 -mthumb -Wl,--gc-sections -O0 -flto -ffunction-sections -fdata-sections -DARM_GNU +CPP_FLAGS=-lstdc++ -mcpu=cortex-m3 -g -O3 -mthumb -fdata-sections -ffunction-sections -std=c++98 -std=gnu++0x +CC_FLAGS=-mcpu=cortex-m3 -g -O0 -mthumb -fdata-sections -ffunction-sections -std=c99 +CC3_FLAGS=-mcpu=cortex-m3 -g -O3 -mthumb -fdata-sections -ffunction-sections -std=c99 +CC_END_FLAGS=-lstdc++ -lc -lnosys -L. -T mz100/mz100.ld -fPIE --specs=nosys.specs -mcpu=cortex-m3 -mthumb -Wl,--gc-sections -O0 -flto -ffunction-sections -fdata-sections -DARM_GNU C_SOURCES :=$(wildcard *.c) C_EXECUTABLE :=$(C_SOURCES:.c=) COMPORT = COM12 - + build: compile only: clean compile create_ota_img @@ -27,44 +31,79 @@ uart: clean compile flash_uart compile: - @mkdir -p build - @$(AS) -mcpu=cortex-m3 --gdwarf-2 -mthumb-interwork -o build/startup.o startup.S +# @mkdir -p build + @$(AS) -mcpu=cortex-m3 --gdwarf-2 -mthumb-interwork -o build/startup.o startup.S + @$(CC) $(CC3_FLAGS) -c mz100/core_cm3.c -o build/core_cm3.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_ssp.c -o build/mz100_ssp.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_wdt.c -o build/mz100_wdt.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_gpio.c -o build/mz100_gpio.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_driver.c -o build/mz100_driver.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_adc.c -o build/mz100_adc.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_flash.c -o build/mz100_flash.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_clock.c -o build/mz100_clock.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_rtc.c -o build/mz100_rtc.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_pinmux.c -o build/mz100_pinmux.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_pmu.c -o build/mz100_pmu.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_qspi.c -o build/mz100_qspi.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_aes.c -o build/mz100_aes.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_gpt.c -o build/mz100_gpt.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_sleep.c -o build/mz100_sleep.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_uart.c -o build/mz100_uart.o + @$(CC) $(CC3_FLAGS) -c mz100/mz100_aon_ram.c -o build/mz100_aon_ram.o + @$(CC) $(CC3_FLAGS) -c mz100/printf.c -o build/printf.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c zigbee.c -o build/zigbee.o +# @$(CC) $(CC_FLAGS) $(CC_WARNING_FLAGS) -c ccm.c -o build/ccm.o - @$(CC) $(CC_FlAGS) -c core_cm3.c -o build/core_cm3.o - @$(CC) $(CC_FlAGS) -c mz100_ssp.c -o build/mz100_ssp.o - @$(CC) $(CC_FlAGS) -c mz100_wdt.c -o build/mz100_wdt.o - @$(CC) $(CC_FlAGS) -c mz100_gpio.c -o build/mz100_gpio.o - @$(CC) $(CC_FlAGS) -c mz100_driver.c -o build/mz100_driver.o - @$(CC) $(CC_FlAGS) -c mz100_adc.c -o build/mz100_adc.o - @$(CC) $(CC_FlAGS) -c mz100_flash.c -o build/mz100_flash.o - @$(CC) $(CC_FlAGS) -c mz100_clock.c -o build/mz100_clock.o - @$(CC) $(CC_FlAGS) -c mz100_rtc.c -o build/mz100_rtc.o - @$(CC) $(CC_FlAGS) -c mz100_pinmux.c -o build/mz100_pinmux.o - @$(CC) $(CC_FlAGS) -c mz100_pmu.c -o build/mz100_pmu.o - @$(CC) $(CC_FlAGS) -c mz100_qspi.c -o build/mz100_qspi.o - @$(CC) $(CC_FlAGS) -c mz100_aes.c -o build/mz100_aes.o - @$(CC) $(CC_FlAGS) -c mz100_gpt.c -o build/mz100_gpt.o - @$(CC) $(CC_FlAGS) -c mz100_sleep.c -o build/mz100_sleep.o - @$(CC) $(CC_FlAGS) -c mz100_uart.c -o build/mz100_uart.o - @$(CC) $(CC_FlAGS) -c mz100_aon_ram.c -o build/mz100_aon_ram.o - @$(CC) $(CC_FlAGS) -c printf.c -o build/printf.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c zigbee.c -o build/zigbee.o -# @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c ccm.c -o build/ccm.o -# @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c chars.c -o build/chars.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c drawing.c -o build/drawing.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c powermgt.c -o build/powermgt.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c syncedproto.c -o build/syncedproto.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c comms.c -o build/comms.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c settings.c -o build/settings.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c timer.c -o build/timer.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c util.c -o build/util.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c gpio.c -o build/gpio.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c epd.c -o build/epd.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c userinterface.c -o build/userinterface.o - @$(CC) $(CC_FlAGS) $(CC_WARNING_FLAGS) -c main.c -o build/main.o - @$(CC) $(CC_END_FLAGS) $(CC_WARNING_FLAGS) build/main.o build/userinterface.o build/printf.o build/mz100_aon_ram.o build/zigbee.o build/drawing.o build/powermgt.o build/syncedproto.o build/comms.o build/settings.o build/timer.o build/util.o build/gpio.o build/epd.o build/mz100_sleep.o build/core_cm3.o build/mz100_ssp.o build/mz100_wdt.o build/mz100_gpio.o build/mz100_driver.o build/mz100_adc.o build/mz100_flash.o build/mz100_clock.o build/mz100_rtc.o build/mz100_pinmux.o build/mz100_pmu.o build/mz100_qspi.o build/mz100_aes.o build/mz100_gpt.o build/mz100_uart.o build/startup.o -o main.axf + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/adler32.c -o build/uz-adler32.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/crc32.c -o build/uz-crc32.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/defl_static.c -o build/uz-defl_static.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/genlz77.c -o build/uz-genlz77.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/tinfgzip.c -o build/uz-tinfgzip.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/tinflate.c -o build/uz-tinflate.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c ../common/uzlib/src/tinfzlib.c -o build/uz-tinfzlib.o + + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c compression.cpp -o build/compression.o + + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c drawing.cpp -o build/drawing.o + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c epd_interface.cpp -o build/epd_interface.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c powermgt.c -o build/powermgt.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c syncedproto.c -o build/syncedproto.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c comms.c -o build/comms.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c md5.c -o build/md5.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c settings.c -o build/settings.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c mz100/timer.c -o build/timer.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c mz100/util.c -o build/util.o + @$(CC) $(CC3_FLAGS) $(CC_WARNING_FLAGS) -c mz100/gpio.c -o build/gpio.o + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c uc8159-var-m2.cpp -o build/uc8159-var-m2.o + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c userinterface.cpp -o build/userinterface.o + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c main.cpp -o build/main.o + @$(GPLUSPLUS) $(CPP_FLAGS) $(CC_WARNING_FLAGS) -c oepl_fs.cpp -o build/oepl_fs.o + @$(GPLUSPLUS) $(CC_END_FLAGS) $(CC_WARNING_FLAGS) \ + build/main.o \ + build/epd_interface.o \ + build/oepl_fs.o\ + build/userinterface.o \ + build/printf.o \ + build/mz100_aon_ram.o \ + build/zigbee.o \ + build/compression.o \ + build/drawing.o \ + build/powermgt.o \ + build/syncedproto.o \ + build/comms.o \ + build/settings.o \ + build/timer.o \ + build/util.o \ + build/md5.o \ + build/gpio.o \ + build/uc8159-var-m2.o \ + build/mz100_sleep.o \ + build/core_cm3.o \ + build/uz-adler32.o build/uz-crc32.o build/uz-defl_static.o build/uz-genlz77.o build/uz-tinfgzip.o build/uz-tinflate.o build/uz-tinfzlib.o \ + build/mz100_ssp.o build/mz100_wdt.o build/mz100_gpio.o build/mz100_driver.o build/mz100_adc.o build/mz100_flash.o build/mz100_clock.o build/mz100_rtc.o build/mz100_pinmux.o build/mz100_pmu.o build/mz100_qspi.o build/mz100_aes.o build/mz100_gpt.o build/mz100_uart.o \ + build/startup.o -o main.axf @$(OBJCOPY) -v -O binary main.axf main.bin - + @cat build/fs.img >> main.bin clean: @rm -rf build/* diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/bitmaps.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/bitmaps.h index 618e0acb..1b8525bc 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/bitmaps.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/bitmaps.h @@ -104,4 +104,189 @@ static const uint8_t batlow[] = { 0x00, 0x00, 0x00, }; + +static const uint8_t tbird2[] = { + +0x40,0x01,178,0, + 0xb6, 0xdb, 0x6d, 0xb5, 0xad, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x52, 0xa5, 0x54, 0xaa, 0xaa, 0xaa, 0x55, 0x4a, + 0xdb, 0x6d, 0xb6, 0xd6, 0xd6, 0xee, 0xee, 0xdb, 0x6d, 0xad, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa4, 0xa4, 0x92, 0x49, 0x24, 0x92, 0x22, 0x4a, 0x54, 0x8a, 0x92, 0x44, 0x91, 0x48, 0xa9, + 0x6d, 0xaa, 0xaa, 0xaa, 0xb5, 0x55, 0x55, 0x6a, 0xaa, 0xb5, 0x5b, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x49, 0x49, 0x24, 0x92, 0x44, 0x52, 0x95, 0x55, 0x2a, 0x92, 0x49, 0x55, 0x29, 0x22, 0x52, 0x49, 0x2a, 0x4a, 0xa5, 0x14, + 0xaa, 0xb6, 0xd5, 0x6d, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xad, 0x55, 0x55, 0x55, 0x55, 0x55, 0x29, 0x29, 0x24, 0xaa, 0xaa, 0xaa, 0xa9, 0x33, 0x2a, 0x52, 0x49, 0x52, 0x55, 0x55, 0x24, 0x94, 0x95, 0x49, 0x2a, 0xa5, 0x29, 0x14, 0xa2, + 0xb6, 0xdb, 0x5b, 0xb6, 0xda, 0xb6, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x52, 0x92, 0xa5, 0x55, 0x52, 0x95, 0x25, 0x52, 0x4a, 0x88, 0x95, 0x49, 0x24, 0x89, 0x49, 0x22, 0x92, 0x42, 0xa9, 0x2a, 0xa4, 0x50, 0xa4, 0xa2, 0x95, + 0xdb, 0x55, 0x6d, 0x55, 0x55, 0x55, 0x5b, 0x56, 0xda, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x4a, 0x55, 0x55, 0x4a, 0x95, 0x52, 0x94, 0x8a, 0xa9, 0x6a, 0xa2, 0x55, 0x52, 0x54, 0xa4, 0x94, 0x49, 0x5a, 0x44, 0x91, 0x12, 0x8a, 0x92, 0x54, 0x48, + 0x55, 0x6a, 0xaa, 0xaa, 0xab, 0x55, 0x55, 0x5a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x92, 0xaa, 0xaa, 0x4a, 0x52, 0x54, 0xa9, 0x55, 0x54, 0x94, 0x95, 0x55, 0x24, 0x95, 0x4a, 0x12, 0x4a, 0xa5, 0x21, 0x2a, 0x4a, 0x49, 0x24, 0x49, 0x0a, 0xa5, + 0xb5, 0xad, 0xaa, 0xd5, 0xb5, 0x6a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa9, 0x55, 0x55, 0x52, 0xa9, 0x4a, 0xa5, 0x14, 0xa4, 0xa5, 0x4a, 0x44, 0x24, 0x92, 0x49, 0x21, 0x4a, 0xa1, 0x14, 0x94, 0x91, 0x24, 0xa4, 0x92, 0xa4, 0xa1, 0x12, + 0xd6, 0xb5, 0x5b, 0x5a, 0xaa, 0xab, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x4a, 0xaa, 0x49, 0x2a, 0x55, 0x29, 0x2a, 0xa5, 0x2a, 0x52, 0x52, 0xaa, 0x92, 0x49, 0x24, 0x95, 0x28, 0x54, 0xa2, 0x4a, 0x4a, 0x92, 0x2a, 0x54, 0x12, 0x54, 0xa8, + 0x5a, 0xaa, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x52, 0xa9, 0x2a, 0x49, 0x55, 0x49, 0x4a, 0xaa, 0x91, 0x52, 0x92, 0x89, 0x29, 0x21, 0x49, 0x24, 0x92, 0x48, 0xa5, 0x0a, 0x55, 0x21, 0x24, 0x49, 0x41, 0x22, 0xc9, 0x0a, 0x05, + 0xab, 0x56, 0xaa, 0xaa, 0xab, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x2a, 0x4a, 0xa9, 0x55, 0x54, 0xaa, 0xa4, 0x92, 0x54, 0x8a, 0x49, 0x55, 0x44, 0x94, 0xa4, 0xaa, 0x49, 0x25, 0x12, 0xa1, 0x08, 0x94, 0x92, 0xa4, 0x94, 0x94, 0x24, 0xa1, 0x50, + 0xb5, 0x6a, 0xb5, 0x55, 0xb5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x52, 0xaa, 0xaa, 0xa5, 0x4a, 0x4a, 0x92, 0x52, 0x55, 0x4a, 0x55, 0x54, 0x48, 0xaa, 0x4a, 0x15, 0x11, 0x24, 0x92, 0xa4, 0x54, 0xa5, 0x25, 0x49, 0x12, 0x4a, 0x42, 0x92, 0x54, 0x8a, + 0xaa, 0xab, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa5, 0x52, 0x55, 0x29, 0x52, 0x55, 0x2a, 0xa4, 0xa5, 0x48, 0x93, 0x25, 0x11, 0x25, 0x50, 0xa4, 0x92, 0x48, 0x49, 0x0a, 0x50, 0x90, 0x24, 0xa9, 0x21, 0x29, 0x24, 0x82, 0x51, + 0xad, 0x55, 0x56, 0xad, 0x55, 0x55, 0x55, 0x55, 0x52, 0x55, 0x25, 0x2a, 0x4a, 0x94, 0xa5, 0x29, 0x49, 0x49, 0x12, 0x28, 0xa5, 0x48, 0x92, 0xa4, 0x90, 0x8a, 0x92, 0x49, 0x25, 0x24, 0xa1, 0x0a, 0x4a, 0x92, 0x04, 0x94, 0x84, 0x92, 0x29, 0x0a, + 0x6a, 0xda, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x95, 0x49, 0x54, 0xa9, 0x55, 0x52, 0x94, 0xa5, 0x24, 0xa4, 0xd5, 0x45, 0x12, 0x25, 0x48, 0x4a, 0x4a, 0x52, 0x49, 0x24, 0x92, 0x92, 0x54, 0xa5, 0x22, 0x49, 0x52, 0x42, 0x52, 0x21, 0x44, 0x50, + 0xab, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x2a, 0x95, 0x28, 0x95, 0x52, 0x94, 0xaa, 0x15, 0x09, 0x2a, 0x49, 0x52, 0x25, 0x21, 0x25, 0x24, 0x94, 0x92, 0x48, 0x49, 0x05, 0x10, 0x89, 0x24, 0x24, 0x29, 0x08, 0x94, 0x29, 0x0a, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa9, 0x2a, 0xaa, 0xa5, 0x52, 0xa6, 0x52, 0x4a, 0x52, 0x49, 0x52, 0x64, 0x91, 0x24, 0x89, 0x52, 0x94, 0x90, 0x92, 0x42, 0x49, 0x25, 0x10, 0xa8, 0xa4, 0x52, 0x42, 0x91, 0x44, 0x52, 0x42, 0x84, 0xa1, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x4a, 0xa4, 0x92, 0x54, 0xa9, 0x51, 0x49, 0x29, 0x49, 0x25, 0x49, 0x12, 0x4a, 0x92, 0x54, 0x88, 0x4a, 0x4a, 0x49, 0x29, 0x24, 0x90, 0x8a, 0x04, 0x12, 0x08, 0x94, 0x44, 0x22, 0x89, 0x14, 0x52, 0x14, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x49, 0x24, 0xaa, 0x55, 0x4a, 0xa5, 0x15, 0x15, 0x2a, 0xa5, 0x25, 0x52, 0x24, 0xa9, 0x24, 0x49, 0x02, 0x55, 0x21, 0x25, 0x22, 0x04, 0x48, 0x45, 0x21, 0x52, 0x89, 0x44, 0x42, 0x22, 0x90, 0x44, 0x42, 0x08, 0xa2, + 0x5a, 0xaa, 0xaa, 0xaa, 0x92, 0xaa, 0xaa, 0x92, 0xa9, 0x29, 0x2a, 0xa4, 0xaa, 0xa4, 0x92, 0x94, 0x89, 0x52, 0x44, 0x92, 0xa4, 0xa9, 0x02, 0x94, 0x90, 0x89, 0x52, 0x22, 0x90, 0x94, 0x20, 0x50, 0x29, 0x11, 0x14, 0x4a, 0x21, 0x29, 0x52, 0x11, + 0xaa, 0xaa, 0xaa, 0x94, 0xaa, 0xaa, 0xaa, 0x55, 0x25, 0x55, 0x48, 0xaa, 0x91, 0x2a, 0x48, 0x52, 0x54, 0x89, 0x2a, 0x48, 0x12, 0x4a, 0x54, 0x42, 0x4a, 0x24, 0x24, 0x88, 0x4a, 0x42, 0x8a, 0x85, 0x42, 0x48, 0x81, 0x01, 0x14, 0x04, 0x24, 0x88, + 0x55, 0x55, 0x55, 0x52, 0xaa, 0x52, 0x49, 0x54, 0xaa, 0x4a, 0x55, 0x22, 0x4a, 0x91, 0x2b, 0x25, 0x22, 0x54, 0x81, 0x25, 0x49, 0x21, 0x22, 0x29, 0x21, 0x11, 0x49, 0x25, 0x01, 0x10, 0x44, 0x20, 0x11, 0x12, 0x54, 0xaa, 0x42, 0xa1, 0x49, 0x25, + 0xaa, 0xaa, 0xaa, 0xaa, 0xa5, 0x4a, 0xaa, 0xa2, 0x92, 0xa5, 0x24, 0x95, 0x28, 0x4a, 0x90, 0x90, 0x94, 0x82, 0x54, 0x92, 0x44, 0x94, 0x89, 0x44, 0x48, 0xa4, 0x22, 0x48, 0xa8, 0x4a, 0x21, 0x15, 0x48, 0x44, 0x82, 0x01, 0x28, 0x14, 0x20, 0x90, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x29, 0x4a, 0x55, 0x49, 0x28, 0x92, 0xa8, 0xa5, 0x51, 0x4a, 0x4a, 0x42, 0x54, 0x92, 0x49, 0x28, 0x42, 0x24, 0x22, 0x25, 0x12, 0x88, 0x22, 0x05, 0x01, 0x14, 0x80, 0x22, 0x21, 0x28, 0xa8, 0x02, 0x82, 0x8a, 0x05, + 0xaa, 0xaa, 0xa9, 0x24, 0x92, 0xaa, 0x52, 0x94, 0xaa, 0x95, 0x54, 0x95, 0x12, 0x24, 0x25, 0x25, 0x29, 0x12, 0x49, 0x24, 0x45, 0x11, 0x11, 0x14, 0x80, 0x40, 0x22, 0x88, 0xa8, 0xa8, 0x82, 0x55, 0x09, 0x14, 0x04, 0x05, 0x50, 0x50, 0x21, 0x50, + 0x55, 0x55, 0x4a, 0x95, 0x54, 0x95, 0x49, 0x4a, 0x49, 0x49, 0x25, 0x42, 0xa9, 0x4a, 0x90, 0x90, 0x88, 0xa4, 0x84, 0x89, 0x10, 0xa8, 0xa4, 0xa2, 0x55, 0x15, 0x48, 0x22, 0x02, 0x04, 0x50, 0x00, 0xa0, 0x81, 0x51, 0x50, 0x0a, 0x0a, 0x88, 0x0a, + 0xaa, 0xaa, 0x55, 0x54, 0xaa, 0xa2, 0x54, 0xa2, 0xa4, 0x54, 0x92, 0x28, 0x44, 0x91, 0x4a, 0x4a, 0x55, 0x12, 0x28, 0x44, 0xa5, 0x05, 0x09, 0x08, 0x02, 0x40, 0x12, 0x88, 0xa8, 0xa2, 0x0a, 0xaa, 0x0a, 0x54, 0x08, 0x0a, 0xa1, 0x40, 0x45, 0x50, + 0x55, 0x49, 0x52, 0x52, 0x92, 0x55, 0x25, 0x19, 0x15, 0x22, 0x49, 0x4a, 0x92, 0x4a, 0x25, 0x21, 0x00, 0x88, 0x92, 0x92, 0x10, 0x50, 0x44, 0x52, 0xa8, 0x95, 0x40, 0x22, 0x02, 0x11, 0x40, 0x00, 0xa0, 0x01, 0x45, 0x40, 0x14, 0x2a, 0x90, 0x0a, + 0xaa, 0xaa, 0xaa, 0xaa, 0x49, 0x49, 0x52, 0xa4, 0xa2, 0x95, 0x24, 0xa4, 0x49, 0x24, 0x90, 0x94, 0xaa, 0x52, 0x44, 0x48, 0x8a, 0x85, 0x21, 0x04, 0x04, 0x20, 0x15, 0x48, 0xa8, 0x88, 0x2a, 0xaa, 0x0a, 0xa8, 0x20, 0x2a, 0x81, 0x10, 0x4a, 0xa1, + 0x52, 0x55, 0x25, 0x25, 0x55, 0x24, 0x89, 0x2a, 0x54, 0x48, 0x92, 0x12, 0xa4, 0x92, 0x4a, 0x42, 0x21, 0x09, 0x11, 0x12, 0x40, 0x20, 0x94, 0x51, 0x52, 0x8a, 0xa0, 0x02, 0x02, 0x25, 0x00, 0x00, 0xa0, 0x05, 0x15, 0x00, 0x54, 0xa5, 0x21, 0x14, + 0xaa, 0x92, 0x94, 0x92, 0x49, 0x55, 0x54, 0x81, 0x0a, 0xa5, 0x49, 0x48, 0x12, 0x49, 0x21, 0x14, 0x94, 0xa2, 0x48, 0x84, 0x2a, 0x94, 0x02, 0x08, 0x08, 0x20, 0x0a, 0xa9, 0x69, 0x00, 0xaa, 0xaa, 0x15, 0x50, 0x80, 0xaa, 0x02, 0x10, 0x8a, 0x42, + 0x4a, 0xa9, 0x52, 0xa9, 0x54, 0x92, 0x22, 0x5a, 0xa1, 0x10, 0x24, 0xa5, 0x49, 0x24, 0x94, 0xa2, 0x42, 0x11, 0x12, 0x51, 0x40, 0x42, 0xa9, 0x45, 0x42, 0x8a, 0xd5, 0x77, 0xbe, 0xf4, 0x00, 0x01, 0x40, 0x04, 0x55, 0x01, 0x54, 0x8a, 0x21, 0x29, + 0x54, 0xa5, 0x2a, 0x4a, 0x8a, 0x49, 0x55, 0x24, 0x54, 0xaa, 0x92, 0x11, 0x24, 0x90, 0x42, 0x11, 0x14, 0xa4, 0x44, 0x08, 0x2a, 0x10, 0x04, 0x20, 0x28, 0x23, 0x5b, 0xad, 0x55, 0xaf, 0xb5, 0x54, 0x15, 0x52, 0x80, 0xaa, 0x22, 0x41, 0x4a, 0x44, + 0xa5, 0x2a, 0xa5, 0x29, 0x51, 0x24, 0x88, 0x92, 0x8a, 0x04, 0xa9, 0x4a, 0x49, 0x0a, 0x94, 0x8a, 0x42, 0x12, 0x22, 0xa2, 0x81, 0x4a, 0xa1, 0x15, 0x45, 0x16, 0xa4, 0x56, 0xea, 0xd5, 0x6a, 0x81, 0x40, 0x08, 0x54, 0x01, 0x11, 0x2a, 0x21, 0x12, + 0x54, 0xa4, 0x92, 0xa4, 0x4a, 0x92, 0x52, 0x48, 0x51, 0x52, 0x04, 0x21, 0x24, 0x50, 0x42, 0x51, 0x28, 0x89, 0x10, 0x11, 0x2a, 0x20, 0x14, 0x80, 0x10, 0xab, 0x12, 0xaa, 0xb7, 0x76, 0xdd, 0x7d, 0x15, 0x52, 0x09, 0x54, 0x88, 0x84, 0x94, 0x48, + 0x4a, 0x95, 0x54, 0x92, 0xa4, 0x49, 0x25, 0x25, 0x0a, 0x29, 0x52, 0x94, 0x89, 0x0a, 0x94, 0x84, 0x04, 0x50, 0xa5, 0x4a, 0x40, 0x8a, 0xa2, 0x55, 0x4a, 0x1d, 0xa9, 0x12, 0xaa, 0x9b, 0x6b, 0xab, 0xe8, 0x81, 0x42, 0x08, 0x44, 0x22, 0x02, 0x22, + 0x52, 0x52, 0x25, 0x4a, 0x12, 0xa4, 0x90, 0x92, 0xa1, 0x44, 0x48, 0x42, 0x24, 0xa0, 0x42, 0x29, 0x52, 0x84, 0x10, 0x81, 0x15, 0x20, 0x48, 0x08, 0x91, 0x56, 0x94, 0xa9, 0x40, 0x55, 0xb6, 0xf6, 0xb7, 0x6c, 0x28, 0xa2, 0x92, 0x90, 0xa9, 0x08, + 0x4a, 0xa9, 0x52, 0x29, 0x49, 0x12, 0x4a, 0x48, 0x54, 0x22, 0x92, 0x94, 0x91, 0x15, 0x28, 0x84, 0x24, 0x52, 0xa5, 0x2a, 0x40, 0x95, 0x25, 0x52, 0x48, 0x3b, 0x22, 0x94, 0xd5, 0x22, 0x5b, 0x5b, 0x5b, 0xb7, 0x82, 0x08, 0x20, 0x0a, 0x00, 0x41, + 0x54, 0x95, 0x29, 0x44, 0xa4, 0xa9, 0x25, 0x25, 0x05, 0x54, 0x49, 0x22, 0x44, 0x42, 0x05, 0x29, 0x49, 0x08, 0x88, 0x88, 0x95, 0x04, 0x91, 0x29, 0x25, 0x56, 0x95, 0x22, 0x48, 0x88, 0xa8, 0xaa, 0xed, 0x5a, 0xfd, 0x42, 0x8a, 0xa0, 0xaa, 0x10, + 0x4a, 0x48, 0x84, 0xaa, 0x2a, 0x04, 0x90, 0x90, 0xa8, 0x82, 0x24, 0x49, 0x12, 0x94, 0xa8, 0x84, 0x22, 0x45, 0x24, 0x52, 0x44, 0xa9, 0x24, 0x84, 0x91, 0x7a, 0xc8, 0x94, 0xc5, 0x45, 0x31, 0x15, 0x57, 0xed, 0x56, 0xf8, 0x00, 0x08, 0x00, 0x84, + 0x51, 0x55, 0x55, 0x11, 0x41, 0x52, 0x4a, 0x4a, 0x22, 0x29, 0x42, 0x24, 0x48, 0x42, 0x44, 0x52, 0x94, 0xa8, 0x92, 0x89, 0x11, 0x12, 0x4a, 0x52, 0x4a, 0xaf, 0x7e, 0xa8, 0xa8, 0x28, 0x94, 0x40, 0xaa, 0x57, 0xbb, 0x57, 0xea, 0x42, 0x88, 0x10, + 0x4a, 0x89, 0x28, 0xa4, 0x94, 0xa9, 0x21, 0x21, 0x49, 0x44, 0x29, 0x49, 0x22, 0x29, 0x12, 0x88, 0x42, 0x04, 0x48, 0x44, 0x4a, 0x49, 0x21, 0x09, 0x21, 0x75, 0xdf, 0xd6, 0xc2, 0xa5, 0x62, 0x95, 0x05, 0x5a, 0xd5, 0xdd, 0x7d, 0xa0, 0x22, 0x42, + 0x54, 0x54, 0x92, 0x4a, 0x4a, 0x04, 0x94, 0x94, 0x94, 0x29, 0x44, 0x24, 0x95, 0x44, 0x48, 0x52, 0x94, 0xaa, 0x92, 0xa9, 0x21, 0x24, 0x94, 0xa4, 0x95, 0xae, 0xeb, 0xe1, 0x39, 0x01, 0x30, 0x20, 0x56, 0x25, 0x5e, 0xb7, 0xae, 0xfd, 0x00, 0x00, + 0x4a, 0xa2, 0x4a, 0x91, 0x21, 0x52, 0x4a, 0x42, 0x42, 0x84, 0x29, 0x42, 0x20, 0x29, 0x25, 0x24, 0x49, 0x10, 0x49, 0x04, 0x94, 0x91, 0x22, 0x12, 0x21, 0x77, 0x7d, 0xf4, 0x45, 0xda, 0x25, 0x0a, 0x02, 0x84, 0x22, 0xda, 0xf7, 0xb6, 0x92, 0x48, + 0x22, 0x55, 0x51, 0x24, 0x94, 0x94, 0x91, 0x29, 0x28, 0x52, 0x84, 0x28, 0x95, 0x44, 0x92, 0x92, 0xa4, 0xa5, 0x24, 0xa9, 0x22, 0x44, 0x89, 0x48, 0x95, 0xad, 0xab, 0x61, 0x00, 0x2a, 0xb0, 0x41, 0x56, 0x52, 0x94, 0x7f, 0xba, 0xff, 0xc0, 0x02, + 0xa9, 0x08, 0x8a, 0x52, 0x4a, 0x42, 0x48, 0x8a, 0x45, 0x24, 0x52, 0x85, 0x42, 0x2a, 0x48, 0x49, 0x12, 0x12, 0x92, 0x12, 0x49, 0x12, 0x52, 0x25, 0x22, 0xdb, 0xfe, 0xb4, 0xaa, 0x01, 0x57, 0x28, 0x05, 0x09, 0x49, 0x59, 0x5f, 0xdb, 0x49, 0x20, + 0x4a, 0xa5, 0x51, 0x09, 0x21, 0x29, 0x25, 0x21, 0x28, 0x92, 0x88, 0xa8, 0x29, 0x41, 0x25, 0x24, 0xa4, 0xa8, 0x48, 0xa4, 0x94, 0xa9, 0x09, 0x50, 0x95, 0x76, 0xab, 0xf2, 0x11, 0x54, 0x08, 0xa4, 0x94, 0xa4, 0x22, 0xff, 0xaa, 0xaa, 0xc0, 0x08, + 0x24, 0x52, 0x2a, 0xa4, 0x94, 0x94, 0x92, 0x54, 0x85, 0x49, 0x25, 0x15, 0x4a, 0x2a, 0x92, 0x92, 0x49, 0x05, 0x25, 0x12, 0x42, 0x04, 0xa4, 0x0a, 0x47, 0xbd, 0xfe, 0xa9, 0x4a, 0x02, 0xa2, 0x56, 0xa6, 0x09, 0x55, 0xdb, 0xbf, 0xff, 0xc4, 0x82, + 0x92, 0x89, 0x44, 0x52, 0x4a, 0x42, 0x49, 0x0a, 0x52, 0x24, 0x92, 0x42, 0x25, 0x48, 0x48, 0xa9, 0x24, 0xa9, 0x48, 0xa4, 0x94, 0xa9, 0x12, 0xa5, 0x29, 0x6b, 0xb7, 0xf2, 0x21, 0x54, 0x15, 0x08, 0xaa, 0xa2, 0x09, 0xff, 0xed, 0xb6, 0x90, 0x20, + 0x49, 0x54, 0xa9, 0x15, 0x21, 0x29, 0x24, 0xa1, 0x29, 0x52, 0x49, 0x29, 0x50, 0xa5, 0x2a, 0x44, 0x92, 0x54, 0x25, 0x12, 0x49, 0x24, 0xa9, 0x28, 0x87, 0xbe, 0xfe, 0xb4, 0x94, 0x49, 0x40, 0xa2, 0x04, 0xac, 0xa7, 0x6d, 0x36, 0xdb, 0x42, 0x08, + 0x54, 0x92, 0x25, 0x48, 0x95, 0x55, 0x52, 0x95, 0x44, 0x89, 0x2a, 0x94, 0x8a, 0x12, 0xa5, 0x2a, 0x49, 0x22, 0x92, 0x49, 0x24, 0x92, 0x44, 0x85, 0x2a, 0xd7, 0x5b, 0xe9, 0x42, 0xa4, 0x95, 0x14, 0xa0, 0x12, 0xab, 0xff, 0xab, 0xff, 0xc8, 0xa2, + 0x25, 0x4a, 0x92, 0x55, 0x54, 0x92, 0x4a, 0x54, 0x95, 0x24, 0x90, 0x49, 0x21, 0x49, 0x10, 0x91, 0x54, 0x95, 0x49, 0x54, 0x92, 0x49, 0x29, 0x52, 0x4d, 0x7b, 0xff, 0x72, 0x29, 0x10, 0x24, 0x41, 0x12, 0x40, 0xae, 0xea, 0xfe, 0xa4, 0x22, 0x08, + 0x92, 0x24, 0xa9, 0x22, 0x4a, 0x49, 0x29, 0x22, 0x52, 0x92, 0x4a, 0xa0, 0x48, 0x2a, 0xaa, 0x4a, 0x4a, 0x48, 0x54, 0x8a, 0x49, 0x24, 0x92, 0x29, 0x2b, 0xad, 0x6b, 0xd9, 0x44, 0x82, 0x12, 0xaa, 0x44, 0x8a, 0x17, 0xff, 0xf8, 0x09, 0x11, 0x52, + 0x55, 0x52, 0x95, 0x55, 0x25, 0x55, 0x4a, 0x95, 0x28, 0x49, 0x20, 0x14, 0x22, 0x91, 0x01, 0x25, 0x22, 0xa5, 0x22, 0x51, 0x2a, 0x92, 0x49, 0x44, 0x96, 0xf7, 0xfe, 0xf4, 0x12, 0x20, 0x8a, 0x11, 0x21, 0x20, 0x9d, 0xbd, 0xb2, 0xa2, 0x4a, 0x08, + 0x49, 0x2a, 0x52, 0x94, 0xa9, 0x24, 0xa4, 0x52, 0x85, 0x2a, 0x92, 0x81, 0x08, 0x4a, 0x54, 0x11, 0x54, 0x95, 0x55, 0x4a, 0xa4, 0x55, 0x54, 0x92, 0x5b, 0x5d, 0x5b, 0xb2, 0x88, 0x84, 0x52, 0xaa, 0x14, 0x95, 0x6f, 0xf7, 0xe9, 0x11, 0x24, 0xa5, + 0x54, 0xa9, 0x4a, 0x4a, 0x94, 0x92, 0x52, 0x94, 0x50, 0x90, 0x44, 0x52, 0x42, 0x20, 0x91, 0x4a, 0x4a, 0x52, 0x95, 0x55, 0x52, 0xa4, 0x8a, 0x55, 0x55, 0xf7, 0xff, 0xf9, 0x20, 0x10, 0x09, 0x00, 0x40, 0x48, 0xbf, 0xff, 0xe4, 0xaa, 0x52, 0xa8, + 0x4a, 0x95, 0x55, 0x52, 0x52, 0xaa, 0x89, 0x4a, 0xaa, 0x4a, 0x11, 0x00, 0x28, 0x8a, 0x24, 0x01, 0x2a, 0xad, 0x6a, 0xb5, 0x5d, 0x55, 0x61, 0x24, 0xae, 0xae, 0xd6, 0xd4, 0x8a, 0x82, 0xa4, 0xa9, 0x25, 0x25, 0x7b, 0xbf, 0x92, 0x41, 0x08, 0x92, + 0x55, 0x4a, 0x49, 0x29, 0x4a, 0x49, 0x54, 0xa1, 0x01, 0x21, 0x44, 0x4a, 0x02, 0x20, 0x89, 0x5a, 0xaa, 0xd5, 0x56, 0xdb, 0x6b, 0x6d, 0xbd, 0x52, 0x37, 0xfb, 0xff, 0xb8, 0x50, 0x54, 0x12, 0x02, 0x48, 0x92, 0xef, 0xfd, 0xa9, 0x14, 0xa5, 0x4a, + 0xa9, 0x29, 0x54, 0x95, 0x29, 0x24, 0x4a, 0x2a, 0xaa, 0x88, 0x10, 0x10, 0xa8, 0x8a, 0x25, 0x55, 0x55, 0x55, 0xb5, 0x55, 0xaa, 0xb6, 0xab, 0xaa, 0xad, 0x5e, 0xb5, 0xf2, 0x8a, 0x21, 0x49, 0x48, 0x82, 0x4b, 0xff, 0xf7, 0x45, 0x55, 0x52, 0x25, + 0x4a, 0xa5, 0x25, 0x48, 0xa5, 0x55, 0x22, 0x90, 0x40, 0x45, 0x42, 0x80, 0x00, 0x21, 0x5a, 0xaa, 0xda, 0xad, 0x5b, 0x6d, 0x6d, 0xaa, 0xd5, 0x6d, 0xb7, 0xeb, 0xff, 0x78, 0x51, 0x14, 0x24, 0x80, 0x29, 0x2e, 0xfd, 0xbe, 0xb4, 0xa4, 0x8a, 0x92, + 0x54, 0x94, 0xaa, 0x55, 0x52, 0x49, 0x54, 0xa5, 0x15, 0x10, 0x08, 0x25, 0x4a, 0x84, 0x2a, 0xab, 0x55, 0xb5, 0xad, 0xb5, 0xb6, 0xdb, 0x5d, 0xb6, 0xda, 0xbf, 0x5b, 0xd5, 0x2a, 0xc9, 0x2a, 0x21, 0x04, 0xab, 0xdf, 0xfe, 0x4a, 0x52, 0x54, 0x54, + 0x4a, 0x55, 0x49, 0x4a, 0x29, 0x24, 0x8a, 0x12, 0x82, 0x41, 0x21, 0x00, 0x2a, 0xb2, 0x02, 0xaa, 0xaa, 0xd6, 0xb5, 0x56, 0xab, 0x6d, 0x6a, 0xdb, 0x6d, 0xab, 0xfe, 0xf9, 0x55, 0x24, 0xa0, 0x84, 0x12, 0xbf, 0xff, 0xf9, 0x52, 0x89, 0x21, 0x0a, + 0x52, 0xaa, 0x55, 0x25, 0x45, 0x52, 0x51, 0x48, 0x50, 0x04, 0x00, 0x2b, 0xaa, 0xda, 0x90, 0xad, 0x56, 0xaa, 0xd6, 0xdb, 0x6d, 0x56, 0xaf, 0x6d, 0xb6, 0xf6, 0xb7, 0xda, 0xa4, 0xaa, 0x94, 0x10, 0x0a, 0xb7, 0x76, 0xed, 0x49, 0x44, 0x54, 0x51, + 0xaa, 0x91, 0x49, 0x52, 0xa8, 0x89, 0x24, 0x92, 0x8a, 0x90, 0x4a, 0x94, 0xaa, 0xaa, 0xc2, 0x2a, 0xb5, 0x5b, 0x5a, 0xad, 0xb6, 0xdb, 0xb5, 0xb6, 0xdb, 0x5b, 0xdd, 0xf9, 0x2a, 0x91, 0x40, 0x00, 0x81, 0x7f, 0xff, 0xf5, 0x2a, 0x52, 0x88, 0x0d, + 0x49, 0x55, 0x25, 0x29, 0x25, 0x24, 0x92, 0x44, 0x50, 0x01, 0x05, 0x6a, 0xaa, 0xab, 0x50, 0x15, 0xab, 0x6d, 0x6b, 0x75, 0x55, 0x6c, 0xda, 0xdb, 0x55, 0xad, 0x6a, 0xb5, 0x55, 0x4a, 0x21, 0x48, 0x25, 0xdb, 0xdf, 0xea, 0xaa, 0xa9, 0x25, 0x52, + 0x55, 0x4a, 0xaa, 0xaa, 0x94, 0xaa, 0x49, 0x22, 0x89, 0x48, 0x55, 0x2a, 0xad, 0x54, 0xac, 0x45, 0x5d, 0xb5, 0xad, 0xab, 0x6f, 0xb7, 0x6d, 0x55, 0xba, 0xf6, 0xb7, 0x5a, 0xa4, 0xa4, 0x88, 0x12, 0x0b, 0x7f, 0x57, 0xa5, 0x55, 0x54, 0xa8, 0x09, + 0x55, 0x2a, 0xa9, 0x4a, 0x55, 0x41, 0x12, 0x14, 0x54, 0x05, 0xb5, 0x55, 0x56, 0xd6, 0xaa, 0x02, 0xd5, 0x56, 0xb5, 0x5d, 0xb4, 0xda, 0xb6, 0xee, 0xd7, 0x5b, 0xdd, 0xed, 0x55, 0x52, 0xd7, 0xc0, 0xad, 0xff, 0x6e, 0xca, 0xa4, 0x4a, 0xa5, 0x44, + 0xa4, 0xa9, 0x55, 0x29, 0x52, 0x54, 0x88, 0xa2, 0x82, 0xb5, 0x4a, 0xaa, 0xda, 0xaa, 0xab, 0x09, 0x55, 0x6a, 0xd6, 0xea, 0xd7, 0x6d, 0xd5, 0x5b, 0x6d, 0xad, 0x6b, 0x55, 0x4a, 0xaf, 0x7e, 0xa8, 0x2f, 0xdd, 0xdf, 0x95, 0x29, 0x2a, 0xaa, 0x23, + 0x55, 0x55, 0x2a, 0xa5, 0x55, 0x4a, 0x52, 0x94, 0x54, 0x95, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xc0, 0xb6, 0xad, 0x5b, 0x56, 0xb5, 0x56, 0xbb, 0xb5, 0xb6, 0xf6, 0xbd, 0xfb, 0xb6, 0xfa, 0xef, 0xf1, 0x5b, 0x7f, 0x7e, 0x09, 0x40, 0x05, 0x51, 0x14, + 0x55, 0x55, 0x52, 0x55, 0x4a, 0xa9, 0x4a, 0x49, 0x2a, 0xaa, 0xaa, 0xd6, 0xaa, 0xaa, 0xab, 0x40, 0x55, 0xb6, 0xea, 0xeb, 0x5b, 0x75, 0xad, 0x5a, 0xdb, 0x5b, 0xd6, 0xad, 0x6f, 0xaf, 0xbb, 0xdc, 0x6f, 0xfb, 0xba, 0xa4, 0x12, 0xa8, 0xac, 0xaa, + 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x29, 0x24, 0x91, 0x55, 0x5a, 0xaa, 0xaa, 0xdb, 0x55, 0x71, 0x2a, 0xd5, 0x5b, 0x5d, 0xed, 0xae, 0xd6, 0xef, 0x6d, 0xee, 0xbb, 0xdb, 0xbb, 0xfd, 0xfe, 0xf5, 0xbd, 0xee, 0xfc, 0x0a, 0x40, 0x05, 0x52, 0x92, + 0x55, 0x49, 0x55, 0x55, 0x55, 0x4a, 0xa5, 0x52, 0x40, 0x15, 0x55, 0x55, 0x56, 0xaa, 0xb5, 0x50, 0x16, 0xab, 0x6d, 0xb6, 0xaa, 0xd5, 0x75, 0x55, 0xb6, 0xbb, 0xd6, 0xbe, 0xdf, 0xef, 0xb7, 0xfa, 0xf7, 0xbe, 0xe8, 0xa0, 0x08, 0xa5, 0x55, 0x55, + 0x55, 0x2a, 0x95, 0x52, 0xaa, 0xa9, 0x55, 0x4a, 0x80, 0x12, 0xaa, 0xaa, 0xda, 0xaa, 0xd6, 0xac, 0x0a, 0xb5, 0xaa, 0xdb, 0x77, 0x6d, 0xae, 0xed, 0x5b, 0x56, 0xfb, 0x6b, 0x6a, 0xfe, 0xff, 0x6f, 0xdf, 0xfb, 0x78, 0x15, 0x02, 0x15, 0x55, 0x55, + 0x4a, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x54, 0xa9, 0x10, 0x2a, 0xaa, 0xb6, 0xaa, 0xdb, 0x5a, 0xd4, 0x0d, 0xae, 0xb6, 0xb6, 0xad, 0x56, 0xd5, 0xb7, 0xed, 0xff, 0x56, 0xf7, 0xb7, 0xbb, 0xdd, 0xf5, 0x7e, 0xea, 0xf2, 0x80, 0x48, 0xaa, 0xaa, 0xaa, + 0x54, 0xaa, 0xa9, 0x55, 0x52, 0xaa, 0x92, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6a, 0xb5, 0x05, 0x55, 0x5b, 0x5b, 0xd5, 0xbb, 0x7a, 0xda, 0xb6, 0xaa, 0xed, 0xad, 0x76, 0xef, 0xf7, 0xdf, 0xf7, 0xff, 0xe0, 0x48, 0x00, 0x52, 0x4a, 0xa9, + 0x52, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa9, 0x40, 0x25, 0x55, 0x55, 0x55, 0xad, 0xad, 0x56, 0xd6, 0x02, 0xeb, 0xad, 0xed, 0x7b, 0x6a, 0xaf, 0x6b, 0x5b, 0x6f, 0xbb, 0xbb, 0xdb, 0xfe, 0xff, 0x6b, 0xbf, 0xff, 0xca, 0x23, 0xfd, 0x0a, 0xaa, 0x44, + 0xad, 0x55, 0x55, 0x55, 0x55, 0x55, 0x4a, 0x80, 0x15, 0x25, 0x55, 0x55, 0x55, 0x6b, 0xaa, 0xaa, 0x83, 0x5c, 0xea, 0xae, 0xad, 0xad, 0xd5, 0xb5, 0xed, 0xb5, 0x6e, 0xee, 0xfd, 0xb7, 0xdf, 0xbe, 0xfd, 0xb7, 0x95, 0xbf, 0x76, 0xaa, 0xa9, 0x22, + 0x52, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x58, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xac, 0xb5, 0x55, 0x40, 0xab, 0x5b, 0x55, 0xd6, 0xda, 0xba, 0xde, 0xb6, 0xde, 0xf5, 0xb7, 0x56, 0xff, 0x7d, 0x6f, 0xef, 0xff, 0x56, 0xff, 0xff, 0x92, 0xa9, 0x14, + 0xad, 0x55, 0x55, 0x52, 0xaa, 0xa9, 0x24, 0xa6, 0x52, 0x54, 0x95, 0x55, 0x5b, 0x55, 0x2b, 0x6d, 0x81, 0x6d, 0x6d, 0xb6, 0xbb, 0x6d, 0xd7, 0x6a, 0xdb, 0x6b, 0xae, 0xda, 0xfe, 0xed, 0xfa, 0xfb, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0xd5, 0x44, 0xa2, + 0x55, 0x55, 0x55, 0x49, 0x55, 0x55, 0x52, 0x52, 0x95, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0xd5, 0x56, 0xa0, 0xb5, 0xaa, 0xdb, 0x6d, 0xb6, 0xba, 0xb7, 0x6d, 0xbd, 0x7b, 0xef, 0xad, 0x7f, 0xbb, 0xaf, 0xfd, 0xda, 0xff, 0xfd, 0xdb, 0xea, 0x28, 0x14, + 0xaa, 0xaa, 0xaa, 0x84, 0xaa, 0xa4, 0x95, 0x4a, 0x52, 0xa9, 0x52, 0xaa, 0xaa, 0xb6, 0xad, 0x55, 0x44, 0xaa, 0xb7, 0x6a, 0xd5, 0x5a, 0xd7, 0xda, 0xb6, 0xeb, 0xd6, 0xba, 0xff, 0xb6, 0xed, 0xfd, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xb1, 0x12, 0x8a, + 0x55, 0x55, 0x55, 0x2a, 0xaa, 0x92, 0x52, 0xa9, 0x4a, 0x55, 0x2a, 0x55, 0x55, 0x55, 0x6a, 0xaa, 0xb0, 0x5b, 0x5a, 0xad, 0x6e, 0xed, 0x6d, 0x6f, 0xdb, 0xbe, 0xbf, 0xdf, 0xb5, 0xff, 0xd7, 0x6f, 0xff, 0x7f, 0xef, 0xfb, 0x7e, 0xd4, 0xa0, 0x42, + 0xaa, 0xaa, 0xaa, 0xa9, 0x55, 0x55, 0x49, 0x15, 0x29, 0x49, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xd5, 0xa0, 0x55, 0xd5, 0xb7, 0xb5, 0x57, 0xb6, 0xb5, 0x6e, 0xd7, 0xea, 0xf5, 0xde, 0xab, 0x5d, 0xfe, 0xf7, 0xff, 0xfb, 0xef, 0xf7, 0xf2, 0x09, 0x14, + 0xb6, 0xaa, 0xaa, 0xaa, 0xaa, 0x24, 0xa4, 0xa4, 0xa5, 0x25, 0x25, 0x4a, 0xaa, 0xaa, 0xad, 0x5a, 0xb2, 0x2d, 0x6e, 0xd9, 0x5b, 0xba, 0xdb, 0xde, 0xfb, 0xfa, 0xbf, 0x5e, 0xb5, 0xfe, 0xb7, 0xb7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x80, 0x42, + 0x55, 0x55, 0x55, 0x55, 0x51, 0x52, 0x55, 0x52, 0x54, 0xa9, 0x54, 0xa9, 0x55, 0x55, 0x55, 0x55, 0x58, 0x16, 0xb5, 0x6d, 0xed, 0x6d, 0x6d, 0x75, 0xad, 0x5f, 0xeb, 0xab, 0x6e, 0xda, 0xfd, 0xff, 0x7e, 0xff, 0xfb, 0xff, 0x7f, 0xda, 0x24, 0x11, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x95, 0x24, 0x89, 0x2a, 0x94, 0x95, 0x55, 0x2a, 0xaa, 0xaa, 0xab, 0x68, 0x5a, 0xd6, 0xaa, 0xab, 0xab, 0xbb, 0xaf, 0x77, 0xea, 0xbd, 0x75, 0xb5, 0xb6, 0xaf, 0x7b, 0xff, 0xd6, 0xff, 0xf7, 0xf6, 0xf8, 0x00, 0x8a, + 0xa9, 0x55, 0x55, 0x55, 0x4a, 0x49, 0x52, 0x54, 0x92, 0x4a, 0x52, 0xaa, 0xaa, 0xaa, 0xaa, 0xd5, 0x54, 0x0b, 0x5b, 0x6e, 0xdd, 0x7d, 0xae, 0xf5, 0xdd, 0x5d, 0xd7, 0xad, 0x5b, 0x6f, 0xf5, 0xde, 0xd5, 0x7d, 0xb5, 0xff, 0xff, 0xe9, 0x10, 0x20, + 0x64, 0xaa, 0x95, 0x55, 0x29, 0x55, 0x09, 0x02, 0x55, 0x52, 0xaa, 0x49, 0x55, 0x55, 0x55, 0x40, 0xaa, 0x15, 0xad, 0xb5, 0x6a, 0xa6, 0xdb, 0x5e, 0xb7, 0xb6, 0xba, 0xf6, 0xed, 0xba, 0xbf, 0x6b, 0xff, 0xdf, 0xff, 0xff, 0x7f, 0xfc, 0x42, 0x05, + 0xaa, 0xaa, 0x49, 0x2a, 0xab, 0xe8, 0xea, 0xab, 0x69, 0x29, 0x15, 0x55, 0x25, 0x5a, 0xaa, 0x80, 0x2a, 0x0a, 0xd5, 0x56, 0xb7, 0xdb, 0x5d, 0xeb, 0x6a, 0xdb, 0xd6, 0xab, 0x5a, 0xdf, 0xeb, 0xff, 0x5d, 0xf5, 0xae, 0xff, 0xff, 0xe8, 0x00, 0x40, + 0x55, 0x55, 0x55, 0x54, 0xad, 0x5b, 0x7e, 0xcd, 0xd5, 0x44, 0xa2, 0xaa, 0xaa, 0xab, 0x55, 0x40, 0x2c, 0x46, 0xbb, 0x6b, 0x5a, 0xbd, 0xd6, 0xb5, 0xbd, 0x6d, 0x6b, 0x75, 0x6f, 0x6a, 0xbe, 0xdb, 0xf7, 0x5f, 0xff, 0xff, 0xff, 0x7a, 0x08, 0x15, + 0xaa, 0xaa, 0xaa, 0xaa, 0x57, 0xb5, 0xdb, 0x56, 0xb4, 0xaa, 0x95, 0x24, 0xa9, 0x55, 0x55, 0x02, 0x15, 0x05, 0x55, 0xb5, 0x6d, 0xd6, 0xb5, 0x5e, 0xd7, 0xb6, 0xbd, 0xae, 0xaa, 0xdd, 0xf7, 0xfe, 0xdf, 0xfd, 0xfe, 0xfb, 0xef, 0xf8, 0x80, 0x80, + 0x55, 0x55, 0x55, 0x52, 0x95, 0xe5, 0xfe, 0xcb, 0x6a, 0x44, 0x52, 0xaa, 0x95, 0x55, 0x56, 0xc2, 0x16, 0x83, 0xdd, 0x5e, 0xb6, 0xaa, 0xd6, 0xeb, 0x6a, 0xdb, 0xaa, 0xd5, 0xb7, 0x77, 0x7f, 0x6f, 0xfb, 0x6f, 0xbf, 0xff, 0xff, 0xe8, 0x22, 0x04, + 0xaa, 0xaa, 0xdb, 0x54, 0xa8, 0x57, 0xb7, 0x55, 0xa9, 0x2a, 0x94, 0xaa, 0x55, 0x55, 0x54, 0x54, 0x15, 0x0a, 0x6b, 0xab, 0x55, 0x55, 0x5b, 0x5d, 0xbb, 0x6d, 0x6d, 0x6d, 0x5a, 0xdd, 0xdb, 0xfd, 0xbf, 0xfd, 0xff, 0xff, 0xff, 0xfa, 0x08, 0x11, + 0x6d, 0xb6, 0xad, 0xa5, 0x56, 0x8a, 0xad, 0x54, 0xa5, 0x51, 0x4a, 0x92, 0xaa, 0xaa, 0x80, 0x2a, 0x2a, 0x81, 0xad, 0x75, 0xaa, 0xb6, 0xad, 0xaa, 0xd5, 0xaa, 0xb7, 0xb6, 0xef, 0x77, 0xff, 0xbf, 0xed, 0xaf, 0xee, 0xff, 0xde, 0xf0, 0x80, 0x00, + 0xaa, 0xda, 0xd5, 0x52, 0x91, 0x54, 0x42, 0x92, 0x4a, 0x8a, 0x24, 0xaa, 0xa4, 0x00, 0x00, 0x28, 0x15, 0x41, 0x75, 0x95, 0x6d, 0xaa, 0xd5, 0x6e, 0xae, 0xb7, 0x59, 0x5b, 0x5a, 0xde, 0xb6, 0xf7, 0x7f, 0xff, 0xbf, 0xff, 0x7f, 0xd2, 0x22, 0x44, + 0xb6, 0xab, 0x6d, 0x09, 0x4a, 0x4a, 0xaa, 0x42, 0xa9, 0x55, 0x52, 0x49, 0x10, 0x00, 0x11, 0x14, 0x0b, 0x40, 0x95, 0x6a, 0xaa, 0xab, 0x5a, 0xb5, 0xb5, 0xaa, 0xee, 0xd5, 0xed, 0xf7, 0xff, 0xff, 0xf6, 0xf6, 0xff, 0xf7, 0xff, 0xe0, 0x88, 0x00, + 0xab, 0x6d, 0x56, 0xa4, 0x24, 0xa1, 0x29, 0x29, 0x14, 0xa1, 0x2a, 0xa0, 0x00, 0x22, 0x00, 0x18, 0x25, 0x40, 0xda, 0xad, 0x6a, 0xac, 0xab, 0x56, 0xda, 0xdd, 0x55, 0x6e, 0xbb, 0x7d, 0xdf, 0xfd, 0xdf, 0xdf, 0xf5, 0xff, 0xff, 0xca, 0x00, 0x24, + 0xba, 0xb6, 0xf8, 0x95, 0x52, 0x14, 0x84, 0x94, 0xa2, 0x14, 0x92, 0x00, 0x00, 0x80, 0x00, 0x50, 0x05, 0x40, 0x55, 0x55, 0xaa, 0xb5, 0x55, 0xb5, 0x6d, 0x6b, 0xb7, 0xb7, 0xdf, 0xdf, 0xfd, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x20, 0x49, 0x00, + 0xd7, 0xdb, 0x55, 0x52, 0x09, 0x42, 0x22, 0x42, 0x15, 0x52, 0xa9, 0x00, 0x00, 0x01, 0x57, 0x51, 0x55, 0x62, 0x2d, 0xaa, 0xb5, 0x55, 0xb6, 0xab, 0xab, 0xad, 0x6d, 0x6d, 0x75, 0xf6, 0xf7, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0x95, 0x00, 0x09, + 0x6d, 0x6d, 0x69, 0x29, 0x50, 0x10, 0x90, 0x29, 0x49, 0x2a, 0x4a, 0x22, 0x20, 0x2a, 0xa9, 0x55, 0x55, 0x50, 0x35, 0x55, 0x56, 0xaa, 0xaa, 0xdd, 0x75, 0x76, 0xb6, 0xde, 0xdf, 0x7f, 0xdf, 0xf6, 0xdf, 0xbf, 0xff, 0xff, 0xad, 0x40, 0x24, 0x80, + 0xb6, 0xb5, 0xaa, 0x84, 0x8a, 0x84, 0x05, 0x04, 0x54, 0x92, 0xa5, 0x00, 0x0a, 0xaa, 0xad, 0x6a, 0xaa, 0xa0, 0x15, 0x5a, 0xaa, 0xaa, 0xaa, 0xaa, 0xae, 0xab, 0xdb, 0xb7, 0xfb, 0xdb, 0xff, 0x7f, 0xfa, 0xff, 0xef, 0xf5, 0x6a, 0x95, 0x00, 0x22, + 0xdb, 0xda, 0xa4, 0x52, 0x20, 0x00, 0x40, 0xa2, 0x82, 0x49, 0x29, 0x12, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x98, 0x4a, 0xaa, 0xab, 0x55, 0x55, 0x56, 0xdb, 0xbd, 0x6e, 0xfa, 0xdf, 0xff, 0x7d, 0xfd, 0xab, 0x5f, 0xff, 0x56, 0xab, 0x52, 0x54, 0x80, + 0x6d, 0x6d, 0xd2, 0x88, 0x80, 0x11, 0x14, 0x10, 0x55, 0x2a, 0xa5, 0x4a, 0xaa, 0xaa, 0xd5, 0x55, 0x55, 0x48, 0x0b, 0x55, 0x55, 0x5a, 0xdb, 0xbb, 0x6d, 0x6b, 0xbb, 0xaf, 0xf6, 0xef, 0xf7, 0xd6, 0xad, 0x6f, 0x55, 0x5a, 0xdd, 0x48, 0x80, 0x08, + 0xb6, 0xaa, 0xa9, 0x22, 0x00, 0x00, 0x01, 0x4a, 0x92, 0xa4, 0x95, 0x55, 0x49, 0x55, 0x55, 0xb6, 0xd5, 0x54, 0x25, 0x55, 0xaa, 0xab, 0x55, 0x55, 0xb6, 0xdd, 0xee, 0xfd, 0x7f, 0xbf, 0xdf, 0x6b, 0x75, 0xb5, 0xb6, 0xeb, 0x6b, 0xe5, 0x24, 0x82, + 0xdb, 0xb7, 0x4a, 0x40, 0x00, 0x02, 0x48, 0x21, 0x48, 0x92, 0x54, 0xa9, 0x2a, 0xaa, 0xaa, 0xaa, 0xaa, 0x52, 0x02, 0xad, 0x55, 0xad, 0x6d, 0xb6, 0xdb, 0xb7, 0x7f, 0xef, 0xdd, 0xfd, 0xfa, 0xbd, 0xad, 0x5a, 0xdb, 0x5d, 0xad, 0x58, 0x80, 0x20, + 0x6d, 0x5a, 0xa4, 0x80, 0x00, 0x08, 0x05, 0x14, 0x25, 0x4a, 0xaa, 0x95, 0x55, 0x55, 0x55, 0x55, 0x52, 0x95, 0x01, 0x6a, 0xad, 0x6a, 0xb6, 0xdb, 0x6e, 0xfd, 0xd5, 0x37, 0x7f, 0xff, 0x6d, 0xd5, 0x56, 0xef, 0x6d, 0xb6, 0xda, 0xea, 0x54, 0x84, + 0xb6, 0xed, 0x92, 0x00, 0x00, 0x41, 0x50, 0xa2, 0x94, 0xa9, 0x49, 0x54, 0xaa, 0xaa, 0xb6, 0xaa, 0xaa, 0x55, 0x00, 0xaa, 0xd5, 0xad, 0xdb, 0x6d, 0xbb, 0xae, 0xb5, 0xdd, 0xf7, 0x6f, 0xf6, 0xb7, 0xfb, 0x55, 0xb6, 0xdb, 0x6f, 0x5b, 0x10, 0x10, + 0xdb, 0x56, 0xa8, 0x00, 0x04, 0x14, 0x0a, 0x14, 0xa5, 0x25, 0x2a, 0xaa, 0xa5, 0x55, 0x55, 0x5a, 0x92, 0xa4, 0x84, 0xb6, 0xb6, 0xb6, 0xad, 0xb7, 0x6e, 0xea, 0xda, 0xab, 0xff, 0xfe, 0xdb, 0xda, 0xad, 0xfa, 0xdb, 0x6d, 0xba, 0xed, 0xc9, 0x00, + 0x6d, 0xbb, 0x44, 0xaa, 0xa2, 0x82, 0xa1, 0x4a, 0x52, 0x95, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xd5, 0xe8, 0x15, 0x40, 0x5a, 0xd5, 0x6b, 0x76, 0xdd, 0xf5, 0x2b, 0x56, 0xd5, 0xbb, 0xfb, 0xed, 0x6f, 0x6e, 0xaf, 0x6d, 0xdb, 0x6f, 0x56, 0x52, 0x4a, + 0xb6, 0xd5, 0xa9, 0x04, 0x10, 0x50, 0x14, 0xa1, 0x2a, 0x55, 0x54, 0x92, 0xaa, 0xaa, 0xab, 0x57, 0xbf, 0xc5, 0x40, 0x6b, 0x5b, 0xbd, 0xab, 0x76, 0x96, 0xda, 0xab, 0x5b, 0xff, 0xf5, 0x77, 0xb5, 0xb5, 0xf5, 0xdf, 0x76, 0xf5, 0xfb, 0xa8, 0x00, + 0xd5, 0x6e, 0x94, 0xb2, 0xaa, 0x95, 0xa5, 0x2d, 0x49, 0x52, 0x4a, 0xaa, 0xaa, 0xaa, 0xd5, 0x5f, 0xff, 0xf0, 0xa2, 0x2d, 0xad, 0x56, 0xfd, 0xda, 0xda, 0xaa, 0xb5, 0x55, 0x7f, 0xdf, 0xad, 0x5e, 0xef, 0x5f, 0x75, 0xbb, 0xbe, 0xaa, 0xd5, 0x52, + 0x5b, 0xb5, 0xaa, 0x95, 0x4a, 0x54, 0x52, 0x92, 0xa5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xfe, 0xff, 0xfe, 0x40, 0x35, 0x75, 0xdb, 0x4b, 0x65, 0x55, 0x55, 0x55, 0x55, 0x5f, 0xf5, 0x77, 0xf7, 0x7b, 0xb5, 0xbe, 0xde, 0xd5, 0xd6, 0xb5, 0x08, + 0xed, 0x5e, 0xd5, 0x54, 0xa9, 0x53, 0x4a, 0x54, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6b, 0xb7, 0xfe, 0xbb, 0x31, 0x16, 0xae, 0xb5, 0xbd, 0x9a, 0xaa, 0xaa, 0xaa, 0xaa, 0xfd, 0xdf, 0xbd, 0x5b, 0xad, 0x6e, 0xd5, 0xeb, 0xfe, 0xbb, 0x6c, 0xa2, + 0x56, 0xeb, 0x6a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xad, 0xff, 0x6f, 0x4a, 0xc4, 0x3b, 0xb5, 0xae, 0xd6, 0xc5, 0x55, 0x55, 0x55, 0x55, 0x2f, 0xb5, 0xd7, 0x6d, 0xf7, 0xb7, 0x7e, 0xbd, 0x57, 0x55, 0xb6, 0x94, + 0xfb, 0x55, 0xb6, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0xd7, 0xb7, 0xfa, 0xb6, 0xa8, 0x95, 0x5a, 0xf5, 0x7b, 0xf5, 0x55, 0x6a, 0xaa, 0xaa, 0xd7, 0xde, 0xfa, 0xdb, 0x5a, 0xda, 0xd7, 0xd7, 0xfb, 0xee, 0xda, 0xa2, + 0x4d, 0xbd, 0x5d, 0xbb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0xaa, 0xaa, 0xab, 0x5e, 0xfd, 0xbe, 0x55, 0x50, 0x2d, 0xef, 0x5b, 0xde, 0xda, 0x55, 0x55, 0x55, 0x55, 0x5d, 0x77, 0x5f, 0x76, 0xef, 0x7f, 0x7a, 0xfa, 0xad, 0x5b, 0x6b, 0x54, + 0xb6, 0xd6, 0xeb, 0xed, 0xb6, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xda, 0xb7, 0xdf, 0xf6, 0xaa, 0xaa, 0x96, 0xb5, 0xef, 0x77, 0xff, 0x2a, 0xaa, 0xaa, 0xaa, 0xab, 0xdb, 0xeb, 0xdf, 0x5a, 0xd5, 0xdf, 0x5f, 0xfe, 0xed, 0xbd, 0xaa, + 0xdb, 0x6b, 0x5d, 0x7e, 0xdb, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0xa2, 0xbd, 0xb6, 0xfd, 0x56, 0xd0, 0x5b, 0x5e, 0xbd, 0xff, 0xfd, 0xca, 0xaa, 0xaa, 0xaa, 0xd6, 0xfd, 0x7d, 0x75, 0xf7, 0xff, 0x75, 0xea, 0xab, 0x56, 0xd6, 0xd5, + 0x6d, 0xbd, 0xab, 0x57, 0xf5, 0xed, 0xaa, 0xaa, 0xaa, 0xbe, 0xdb, 0x55, 0xba, 0xc2, 0xaf, 0x7f, 0xb6, 0xab, 0x2a, 0xae, 0xf7, 0xff, 0xee, 0xb7, 0xe5, 0x4a, 0x94, 0x95, 0x5b, 0x57, 0xaf, 0xdf, 0x5d, 0x55, 0xde, 0xbf, 0xfd, 0xfb, 0x7b, 0xaa, + 0xb6, 0xd6, 0xf5, 0xed, 0x7f, 0x5a, 0xdb, 0x6d, 0x76, 0xd7, 0xf7, 0xfe, 0xd5, 0x7d, 0xbb, 0xd5, 0xfc, 0x55, 0x5a, 0xbb, 0xff, 0xef, 0xbf, 0xfe, 0xfa, 0x29, 0x52, 0xaa, 0xaa, 0xfd, 0xf5, 0x75, 0xf7, 0xff, 0x77, 0xeb, 0x56, 0xad, 0xae, 0xea, + 0xda, 0xb5, 0xae, 0xb7, 0xaf, 0xff, 0x6d, 0xb5, 0xab, 0x7d, 0xbb, 0xbb, 0x5b, 0xaa, 0xdd, 0x7f, 0x6f, 0x56, 0xaa, 0xbf, 0xdd, 0xbd, 0xfb, 0xdb, 0xbd, 0x55, 0x55, 0x55, 0x5b, 0x6f, 0x5f, 0xdf, 0x7d, 0xab, 0xda, 0xbe, 0xf5, 0xd7, 0x77, 0x55, + 0x6b, 0xde, 0xdb, 0xba, 0xf5, 0x6f, 0xf7, 0x6e, 0xdd, 0xb7, 0xd7, 0xee, 0xed, 0x6f, 0xab, 0xdb, 0xf5, 0x29, 0x5f, 0x7d, 0xff, 0xff, 0xee, 0xff, 0xf7, 0x8a, 0xaa, 0xaa, 0xaa, 0xfb, 0xf5, 0x77, 0xaf, 0x7e, 0xff, 0xeb, 0xbe, 0xbd, 0xdb, 0xed, + 0xb6, 0xab, 0x6d, 0x6d, 0x5b, 0xba, 0xdf, 0xdb, 0x6b, 0x7e, 0xfe, 0xbd, 0xb7, 0xba, 0xf5, 0x6d, 0x5a, 0xa5, 0x75, 0xef, 0xff, 0xee, 0xbf, 0xde, 0xff, 0xf2, 0x95, 0x55, 0x6b, 0x1d, 0x5f, 0xdd, 0xfb, 0xdb, 0x55, 0x7e, 0xd5, 0xeb, 0x7d, 0x55, + 0xdb, 0x75, 0xb7, 0xb7, 0xad, 0xd7, 0x7d, 0xff, 0xff, 0xef, 0xaf, 0xf6, 0xed, 0xef, 0xbf, 0x55, 0x55, 0x55, 0xff, 0xfd, 0xfe, 0xfb, 0xfd, 0xfb, 0xde, 0xfa, 0x54, 0xaa, 0x94, 0xaf, 0xf6, 0xf7, 0x5d, 0x77, 0xff, 0xd7, 0x7e, 0xbe, 0xd7, 0xfa, + 0x6d, 0xae, 0xda, 0xda, 0xf6, 0xbb, 0xab, 0x7d, 0xdd, 0xfd, 0xfd, 0xdd, 0xff, 0x7f, 0xf7, 0xf6, 0xff, 0xff, 0xff, 0x6a, 0x5b, 0xbf, 0xf7, 0xef, 0xfb, 0xdd, 0x55, 0x55, 0x22, 0xaa, 0xdf, 0xbd, 0xf7, 0xdd, 0x55, 0x7d, 0xd7, 0xd7, 0xfa, 0xaf, + 0xb6, 0xdb, 0x6f, 0x6f, 0x5d, 0xed, 0x7e, 0xd7, 0x7f, 0xbf, 0xaf, 0xff, 0xbf, 0xfe, 0xff, 0xff, 0xed, 0xb7, 0x7b, 0xd5, 0x7f, 0xff, 0x7f, 0x7f, 0xef, 0x77, 0x92, 0x88, 0x55, 0x7f, 0xf5, 0xef, 0x5d, 0xf7, 0xff, 0xd7, 0x7a, 0xfa, 0xaf, 0xf9, + 0xdb, 0x6d, 0xb5, 0xb5, 0xeb, 0x5f, 0xd7, 0xbd, 0xeb, 0xed, 0xfe, 0xf7, 0xfd, 0xfb, 0xfd, 0xbf, 0xbf, 0xed, 0xef, 0x55, 0xbf, 0xed, 0xff, 0xfd, 0x7d, 0xdd, 0xea, 0xa2, 0xaf, 0xd6, 0xbf, 0x75, 0xf7, 0x5e, 0xdb, 0x7d, 0xdf, 0x5f, 0xfa, 0xb6, + 0x6d, 0xb6, 0xde, 0xde, 0xbd, 0xea, 0xba, 0xef, 0x7e, 0xbb, 0xb7, 0xbd, 0xef, 0xdf, 0xb7, 0xf5, 0xff, 0xf7, 0xff, 0x6f, 0xf6, 0xff, 0xf7, 0xdf, 0xd7, 0x77, 0x74, 0x0a, 0xda, 0xbd, 0xed, 0xdf, 0x5d, 0xfb, 0xee, 0xef, 0x6b, 0xea, 0xaf, 0xef, + 0xb6, 0xdb, 0x6b, 0x6b, 0x56, 0xbd, 0xdf, 0xbb, 0xab, 0xee, 0xfa, 0xef, 0x7f, 0xea, 0xff, 0xfe, 0xaa, 0xdb, 0xbd, 0xff, 0xff, 0xff, 0xfe, 0xf5, 0x7d, 0xdd, 0xbe, 0x2b, 0x6d, 0xef, 0xbf, 0x77, 0xf7, 0xae, 0xbb, 0xbb, 0xbd, 0x7f, 0xfa, 0xba, + 0xdb, 0x6d, 0xba, 0xdd, 0xed, 0xd6, 0xea, 0xed, 0xfe, 0xbb, 0xaf, 0xbb, 0xbf, 0x7f, 0xdf, 0xd5, 0xdf, 0xad, 0xff, 0xfd, 0xbf, 0xde, 0xdb, 0xbf, 0xd7, 0x6b, 0x6b, 0x8d, 0xbf, 0x7b, 0x75, 0xdd, 0x7e, 0xff, 0xef, 0xee, 0xef, 0xad, 0x6f, 0xee, + 0xb6, 0xdb, 0x6f, 0x6a, 0xb6, 0xed, 0xbf, 0x76, 0xab, 0xee, 0xfa, 0xed, 0xd5, 0xdb, 0x7f, 0xff, 0x75, 0xdb, 0xf7, 0xb7, 0xf7, 0x7b, 0xfe, 0xeb, 0x7d, 0xfe, 0xf6, 0xeb, 0xeb, 0xdf, 0xdf, 0x7f, 0xd7, 0xda, 0xfd, 0x7b, 0xba, 0xff, 0xda, 0xbb, + 0xdd, 0xb6, 0xd5, 0xbf, 0x5b, 0x5b, 0x6b, 0xbb, 0xfd, 0x77, 0x5f, 0xbf, 0x7f, 0x7f, 0xd5, 0xb5, 0xdf, 0x6f, 0xff, 0xff, 0xff, 0xef, 0x57, 0xbf, 0xd7, 0x57, 0xbd, 0xbe, 0xbe, 0xf5, 0xf7, 0xeb, 0x7d, 0x7f, 0xaf, 0xde, 0xef, 0xb5, 0xff, 0xed, + 0xb6, 0xed, 0xbe, 0xd5, 0xed, 0xb6, 0xdd, 0x6d, 0x57, 0xba, 0xea, 0xeb, 0xed, 0xea, 0xff, 0xff, 0xf7, 0xb7, 0xde, 0xff, 0x76, 0xfd, 0xfd, 0xf5, 0x7d, 0xfa, 0xef, 0xeb, 0xf7, 0xbf, 0x7d, 0xbf, 0xef, 0xea, 0xfb, 0x77, 0xba, 0xef, 0x5b, 0x56, + 0xdb, 0xb7, 0x6b, 0x6d, 0x5b, 0x5b, 0x6b, 0xb7, 0xba, 0xdf, 0x7f, 0xbe, 0xbf, 0xbf, 0xb6, 0xde, 0xdf, 0xdf, 0x7f, 0xf7, 0xdf, 0xaf, 0xb7, 0x5f, 0xdf, 0x5f, 0xb5, 0x7f, 0x6d, 0xed, 0xd7, 0xf5, 0xbb, 0x7f, 0xaf, 0xdd, 0xef, 0xbd, 0xff, 0xfb, + 0x6d, 0x6d, 0xdd, 0xb6, 0xed, 0xed, 0xb6, 0xdd, 0xdf, 0xea, 0xd5, 0xf7, 0xea, 0xed, 0xdf, 0xb7, 0xfd, 0x7f, 0xff, 0xdd, 0xf5, 0xfa, 0xfd, 0xfb, 0x75, 0xf6, 0xff, 0xdb, 0xff, 0x7f, 0x7e, 0xbf, 0xff, 0xdb, 0xfa, 0xf7, 0x5a, 0xf7, 0x6a, 0xad, + 0xdf, 0xbb, 0x6a, 0xdb, 0x56, 0xaa, 0xdb, 0x76, 0xea, 0xbb, 0xbf, 0x5d, 0x7f, 0xbe, 0xf5, 0xfd, 0xef, 0xbb, 0xf5, 0x7f, 0x5f, 0x6f, 0xdf, 0xbf, 0xff, 0xbf, 0xb6, 0xfe, 0xb7, 0xdb, 0xef, 0xed, 0x55, 0xfe, 0xbf, 0xbd, 0xf7, 0xbd, 0xff, 0xf6, + 0xb5, 0x6d, 0xbf, 0x6a, 0xb5, 0x55, 0x56, 0xdb, 0x5f, 0xd6, 0xed, 0xf7, 0xd6, 0xf7, 0xbf, 0x6f, 0x7b, 0xff, 0x5f, 0xeb, 0xfd, 0xfd, 0xf5, 0xea, 0xad, 0xea, 0xff, 0xab, 0xfd, 0xfe, 0xfa, 0xff, 0xff, 0x57, 0xeb, 0xd7, 0x5d, 0xef, 0x55, 0x5d, + 0xdb, 0xb6, 0xd2, 0xaa, 0xdb, 0x6e, 0xed, 0xbd, 0xf5, 0x7b, 0xbb, 0x7d, 0xbf, 0xdd, 0xed, 0xfb, 0xde, 0xdb, 0xfb, 0x7e, 0xd7, 0xaf, 0x5f, 0x7f, 0xff, 0x7f, 0xd5, 0xff, 0x6f, 0x57, 0xbf, 0xb6, 0xed, 0xfd, 0x7e, 0xfd, 0xee, 0xbb, 0xff, 0xf7, + 0xbd, 0xdb, 0x6d, 0xb6, 0xaa, 0xaa, 0xb6, 0xeb, 0x5b, 0x56, 0xef, 0xd7, 0xf5, 0x77, 0x7f, 0x5e, 0xf7, 0xfe, 0xdf, 0xdb, 0xfe, 0xfb, 0xfb, 0xdb, 0x6b, 0xdb, 0x7f, 0x6d, 0xfb, 0xfe, 0xed, 0xff, 0xbf, 0xb7, 0xd7, 0x56, 0xb7, 0xee, 0xaa, 0xbd, + 0xd6, 0xed, 0xb6, 0xaa, 0xad, 0x55, 0xab, 0x5d, 0xed, 0xdf, 0x7a, 0xfd, 0x5f, 0xdd, 0xd5, 0xf7, 0xbd, 0x6b, 0xf5, 0x7f, 0x6f, 0xde, 0xde, 0xff, 0xfe, 0xff, 0xed, 0xff, 0xae, 0xdb, 0xff, 0x6b, 0xf6, 0xed, 0x7b, 0xff, 0xda, 0xbb, 0xff, 0xd6, + 0x7b, 0x5e, 0xda, 0xd5, 0xb5, 0xb6, 0xb5, 0xeb, 0x5b, 0x6b, 0xaf, 0xaf, 0xf6, 0xff, 0x7f, 0xbd, 0xef, 0xff, 0x5f, 0xed, 0xfa, 0xf7, 0xf7, 0xaa, 0xb7, 0xaa, 0xff, 0xb6, 0xff, 0xff, 0x6b, 0xfe, 0xdf, 0xbf, 0xdd, 0x55, 0x7f, 0xee, 0xaa, 0xbb, + 0xd6, 0xeb, 0x6b, 0x5a, 0xaa, 0xaa, 0xde, 0xb6, 0xed, 0xbd, 0xfa, 0xfa, 0xdf, 0xab, 0xda, 0xef, 0x7b, 0x5b, 0xfb, 0xbf, 0x5f, 0xbd, 0x5d, 0xff, 0xfd, 0xff, 0xad, 0xff, 0xdb, 0x6d, 0xff, 0x6f, 0xf5, 0xea, 0xef, 0xff, 0xaa, 0xbb, 0xfd, 0xd6, + 0xbb, 0x5d, 0xad, 0x55, 0x55, 0x5b, 0x52, 0xdb, 0x5b, 0x6b, 0x57, 0xaf, 0xba, 0xfe, 0xff, 0xfb, 0xdf, 0xfe, 0xde, 0xf5, 0xf6, 0xef, 0xff, 0x6d, 0xaf, 0x6d, 0xff, 0x5a, 0xff, 0xff, 0xb7, 0xfa, 0xbe, 0xbf, 0xba, 0xaa, 0xf6, 0xd6, 0xab, 0x7b, + 0xd5, 0xea, 0xb5, 0x6a, 0xaa, 0xd5, 0x5b, 0x6d, 0xed, 0xb6, 0xfa, 0xfa, 0xef, 0xb7, 0xab, 0x5e, 0xf6, 0xdb, 0xf7, 0xdf, 0xdf, 0xfb, 0xb5, 0xff, 0xfb, 0xff, 0x6b, 0xff, 0xda, 0xaa, 0xfd, 0x5f, 0xeb, 0xea, 0xef, 0xf7, 0x5b, 0x7b, 0xb6, 0xad, + 0x6e, 0xbf, 0x55, 0xad, 0xb5, 0x55, 0x55, 0xae, 0xb6, 0xdb, 0x57, 0x5f, 0xba, 0xed, 0xff, 0xf7, 0xbf, 0xff, 0x7d, 0xfb, 0x7b, 0x5e, 0xff, 0xb5, 0x6e, 0xb7, 0xfe, 0xdb, 0x7f, 0xff, 0xdf, 0xfb, 0xbe, 0xbf, 0xba, 0xad, 0xed, 0xad, 0x6d, 0xeb, + 0xb5, 0xa9, 0xda, 0xaa, 0xaa, 0xb6, 0xaa, 0xb5, 0x5a, 0xad, 0xbd, 0xea, 0xef, 0xbe, 0xb5, 0x7d, 0xea, 0xad, 0xd7, 0x6f, 0xef, 0xf7, 0xdb, 0xff, 0xff, 0xfd, 0xb7, 0xff, 0xed, 0xad, 0xf6, 0xee, 0xeb, 0xeb, 0xef, 0xf6, 0xb6, 0xf7, 0xb6, 0xbd, + 0xdb, 0x6e, 0xad, 0x55, 0x56, 0xd5, 0x55, 0x5b, 0xab, 0x6a, 0xd7, 0x7f, 0xbd, 0xeb, 0xff, 0xd7, 0x7f, 0xff, 0x7f, 0xfd, 0xbd, 0xbe, 0xfe, 0xad, 0xb5, 0xaf, 0xfe, 0xda, 0xff, 0xfb, 0x5f, 0xbf, 0xbe, 0xbd, 0x7a, 0xad, 0xdb, 0x5a, 0xdb, 0xd6, + 0x56, 0xdb, 0x6b, 0x6d, 0xaa, 0xaa, 0xaa, 0xd5, 0x6d, 0x5b, 0x7b, 0xaa, 0xef, 0x7e, 0xd6, 0xfd, 0xdb, 0x6d, 0xf6, 0xb7, 0xf7, 0xef, 0xb7, 0xff, 0xff, 0xfa, 0xab, 0xff, 0xaa, 0xdf, 0xfb, 0xf5, 0xeb, 0xd7, 0xaf, 0xdb, 0x6d, 0xef, 0x6d, 0x6b, + 0xbb, 0x6a, 0xb5, 0xb6, 0xb5, 0x5b, 0x55, 0x6d, 0xb5, 0xad, 0xad, 0xff, 0x7b, 0xab, 0xbb, 0xaf, 0x7f, 0xff, 0xbf, 0xfd, 0x7d, 0x7b, 0xfd, 0xb5, 0x56, 0xdf, 0xff, 0x6d, 0xff, 0xf6, 0xee, 0xdf, 0x7e, 0xfd, 0xfa, 0xbd, 0xb6, 0xb5, 0xb7, 0xbd, + 0xd5, 0xb7, 0x5a, 0xaa, 0xd6, 0xd5, 0x6b, 0x56, 0xaa, 0xb5, 0xf6, 0xaa, 0xd6, 0xfd, 0xd5, 0x7b, 0xea, 0xd6, 0xed, 0xdf, 0xdf, 0xde, 0xae, 0xff, 0xff, 0x76, 0xed, 0xff, 0xbb, 0x7f, 0xbf, 0xf7, 0xd5, 0xae, 0xaf, 0xd7, 0x6d, 0xda, 0xda, 0xd6, + 0x5d, 0x5a, 0xed, 0x55, 0x55, 0x5a, 0xad, 0x5a, 0xd5, 0x56, 0xaf, 0xb7, 0x7b, 0x44, 0x55, 0xae, 0xbf, 0xff, 0xff, 0x76, 0xf6, 0xf7, 0xf7, 0xab, 0x6b, 0xff, 0xbf, 0xb6, 0xef, 0xd5, 0xf6, 0xbd, 0x7e, 0xf7, 0xf5, 0x7a, 0xdb, 0x6f, 0x6e, 0xb5, + 0xab, 0xab, 0x55, 0xb6, 0xaa, 0xab, 0x55, 0x6b, 0x55, 0x55, 0xb5, 0x59, 0xad, 0x12, 0x92, 0xb7, 0xf6, 0xb5, 0x5b, 0xdf, 0xbb, 0x5d, 0x5a, 0xf6, 0xfe, 0xd6, 0xf6, 0xff, 0xfd, 0xff, 0x7f, 0xef, 0xd7, 0x5a, 0xbf, 0xaf, 0x76, 0xb5, 0xb5, 0xdb, + 0xda, 0xb5, 0x56, 0xaa, 0xb6, 0xd5, 0x55, 0xad, 0x5a, 0xad, 0x5b, 0xaa, 0xa2, 0x88, 0x4a, 0xaa, 0xbf, 0xff, 0xfe, 0xf5, 0xd5, 0xaa, 0xad, 0x5b, 0xab, 0xff, 0xdf, 0xdb, 0x6f, 0x6d, 0xdb, 0x7a, 0xfa, 0xef, 0xd5, 0x75, 0xdd, 0xda, 0xde, 0xad, + 0x6d, 0x55, 0x6a, 0xaa, 0xd5, 0x5a, 0xaa, 0xaa, 0xd5, 0x56, 0xed, 0x69, 0x14, 0x45, 0x22, 0x55, 0x6a, 0xaa, 0xab, 0xbe, 0x6e, 0xdb, 0x56, 0xd6, 0xfe, 0xaa, 0xfb, 0x7f, 0xfd, 0xff, 0xff, 0xdf, 0x57, 0xb5, 0x7b, 0xbb, 0x6b, 0x6f, 0x6b, 0xf6, + 0xb5, 0xad, 0xaa, 0x95, 0x56, 0xd5, 0x5b, 0x55, 0x55, 0xb5, 0xaa, 0xa4, 0xa9, 0x10, 0x94, 0x8a, 0xab, 0x75, 0x56, 0xd5, 0xaa, 0xad, 0x55, 0x6b, 0x57, 0xff, 0xaf, 0xed, 0xb7, 0xb6, 0xdb, 0x75, 0xfa, 0xde, 0xd6, 0xd6, 0xdd, 0xb5, 0xb5, 0x5b, + 0xad, 0x55, 0x55, 0x55, 0x5a, 0xaa, 0xd5, 0x6d, 0x55, 0x56, 0xb6, 0xaa, 0x44, 0x45, 0x22, 0x52, 0xa9, 0x4d, 0xbb, 0xba, 0x55, 0x6a, 0xab, 0x5d, 0xf5, 0x2a, 0xfd, 0xbf, 0xff, 0xff, 0xff, 0xfe, 0xaf, 0x75, 0xbb, 0x7b, 0x6e, 0xde, 0xde, 0xd6, + 0xb5, 0x6a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0x55, 0x41, 0x12, 0x10, 0x91, 0x09, 0x15, 0x56, 0xad, 0x6d, 0x56, 0xb5, 0x55, 0x6a, 0xaa, 0xdb, 0x57, 0x76, 0xda, 0xdb, 0x6d, 0xab, 0xf5, 0xae, 0xed, 0xae, 0xf5, 0xb5, 0x6b, 0x7b, + 0x56, 0xb7, 0x6a, 0x55, 0x55, 0x55, 0x55, 0x55, 0xb5, 0xba, 0xaa, 0xaa, 0x44, 0x8a, 0x4a, 0x54, 0xaa, 0x52, 0xb6, 0xb5, 0x55, 0x55, 0x55, 0x57, 0x5b, 0x6d, 0x6d, 0xdf, 0xff, 0xff, 0xff, 0xfe, 0xae, 0xf7, 0x5b, 0xf5, 0xae, 0xef, 0xbd, 0xad, + 0xdb, 0x59, 0x55, 0x55, 0x55, 0x55, 0x56, 0xaa, 0xaa, 0xab, 0x55, 0x48, 0x21, 0x21, 0x11, 0x25, 0x52, 0xad, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xed, 0x55, 0xb7, 0x7a, 0xad, 0xaa, 0xaa, 0xb7, 0xf7, 0x5b, 0xee, 0xaf, 0x77, 0x5a, 0xd6, 0xee, + 0x6d, 0xad, 0x55, 0x55, 0x54, 0xaa, 0xaa, 0xd5, 0x55, 0x6d, 0x54, 0x92, 0x94, 0x14, 0x4a, 0x92, 0x4a, 0x92, 0xaa, 0xaa, 0xd5, 0x55, 0x55, 0x55, 0x2a, 0xad, 0x5a, 0xdf, 0xff, 0xff, 0xff, 0xfd, 0x5a, 0xed, 0x5b, 0x75, 0xba, 0xed, 0x75, 0xb5, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x95, 0x55, 0x56, 0xab, 0x55, 0x52, 0x41, 0x21, 0x41, 0x20, 0x4a, 0xa9, 0x55, 0x55, 0x6b, 0x54, 0xaa, 0xaa, 0xab, 0xd5, 0xb6, 0xef, 0x76, 0xda, 0xdb, 0xb6, 0xd7, 0xef, 0x77, 0x75, 0xae, 0xd7, 0x77, 0xae, 0xdf, + 0xb6, 0xd5, 0x6a, 0xa9, 0x55, 0x55, 0x5a, 0xaa, 0xb5, 0x6d, 0x4a, 0x94, 0x88, 0x14, 0x95, 0x29, 0x25, 0x55, 0x5b, 0xaa, 0xaa, 0xa5, 0x55, 0x55, 0x5a, 0xab, 0x55, 0xdb, 0xf7, 0xfe, 0xff, 0xfd, 0x5b, 0xad, 0xae, 0xf7, 0x7b, 0xad, 0x77, 0x6a, + 0xab, 0x55, 0xab, 0x55, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa8, 0x49, 0x25, 0x42, 0x42, 0x84, 0xaa, 0xaa, 0xaa, 0xad, 0x55, 0x55, 0x4a, 0xad, 0x55, 0x55, 0x5a, 0xbe, 0xbe, 0xab, 0xb5, 0x57, 0xed, 0x76, 0xfb, 0x5a, 0xdd, 0x77, 0xba, 0xdf, + 0xba, 0xaa, 0xad, 0x55, 0x54, 0xaa, 0xaa, 0xaa, 0xab, 0x55, 0x55, 0x22, 0x10, 0x29, 0x28, 0x52, 0x95, 0x55, 0xad, 0x75, 0x55, 0x55, 0x55, 0x55, 0x6a, 0xb5, 0xaf, 0xd7, 0xdb, 0xfe, 0xef, 0xfd, 0x77, 0xbb, 0xad, 0xef, 0x6b, 0xba, 0xd7, 0x75, + 0xd6, 0xda, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xb6, 0x92, 0x88, 0x85, 0x04, 0x85, 0x09, 0x55, 0x56, 0xb5, 0x95, 0x55, 0x55, 0x55, 0x56, 0xad, 0x56, 0xd5, 0x7a, 0xee, 0xab, 0xbb, 0x57, 0xba, 0xdd, 0x77, 0x75, 0xbd, 0xd7, 0x7b, 0xbb, + 0x5b, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x48, 0x42, 0x50, 0xa9, 0x20, 0xa4, 0x4a, 0xaa, 0xd6, 0xed, 0xb5, 0x55, 0x55, 0x6a, 0xd5, 0xaa, 0xba, 0xab, 0x7b, 0xfe, 0xee, 0xfd, 0x5f, 0x6b, 0xdb, 0xae, 0xeb, 0x7b, 0xad, 0xd6, + 0xaa, 0xad, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xd4, 0xa5, 0x10, 0x0a, 0x12, 0x14, 0x12, 0xa9, 0x55, 0x55, 0x2a, 0xd5, 0x6a, 0xaa, 0xaa, 0xaa, 0xb6, 0xd7, 0xad, 0xae, 0xab, 0xbb, 0xaf, 0xea, 0xfe, 0xb6, 0xf7, 0x5d, 0xad, 0x76, 0xbd, + 0xdb, 0x75, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x28, 0x8a, 0xa0, 0x88, 0xa2, 0x89, 0x55, 0x55, 0x55, 0xb6, 0xaa, 0xaa, 0x95, 0x55, 0x56, 0xd5, 0x5a, 0xdb, 0x75, 0xfd, 0xdd, 0xf5, 0x7f, 0xab, 0xdd, 0xad, 0xf6, 0xf7, 0xdf, 0xd7, + 0x6d, 0x55, 0x5a, 0xab, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xaa, 0x92, 0x40, 0x0a, 0x44, 0x10, 0x55, 0x2a, 0xaa, 0xda, 0xab, 0x5b, 0x55, 0x52, 0xaa, 0xaa, 0xab, 0x6a, 0xad, 0xaf, 0x56, 0xee, 0xbf, 0xaa, 0xf6, 0xf7, 0x7b, 0x5b, 0xad, 0x6a, 0xfa, + 0xaa, 0xaa, 0xaa, 0xb5, 0x6a, 0xaa, 0xaa, 0xaa, 0xab, 0x55, 0x49, 0x2a, 0xa0, 0x29, 0x4a, 0x89, 0x55, 0x5b, 0x55, 0x5a, 0xaa, 0xaa, 0xaa, 0x49, 0x55, 0x55, 0x57, 0x76, 0xda, 0xfb, 0x77, 0xd5, 0x7f, 0x5d, 0xad, 0xdd, 0xee, 0xf7, 0xbf, 0x5f, + 0x55, 0xad, 0xaa, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x68, 0xa4, 0x00, 0x0a, 0x84, 0x91, 0x55, 0x55, 0x6a, 0xad, 0xad, 0xb5, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xba, 0xab, 0x6f, 0x57, 0xad, 0x7f, 0xd5, 0xee, 0xff, 0x6e, 0xbb, 0x5d, 0xea, 0xea, + 0xaa, 0xb5, 0x55, 0x55, 0x5b, 0x6b, 0x6b, 0x55, 0x55, 0x55, 0x12, 0xaa, 0xa0, 0x52, 0x4a, 0x25, 0x55, 0x56, 0xd6, 0xd5, 0x56, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xcb, 0x5a, 0xb5, 0xed, 0x77, 0xaa, 0xfe, 0xb7, 0xab, 0xb7, 0xdd, 0xee, 0xbf, 0x7f, + 0x56, 0xaa, 0xaa, 0xaa, 0xaa, 0xad, 0x55, 0x55, 0x55, 0x54, 0xa4, 0x00, 0x15, 0x29, 0x25, 0x54, 0xaa, 0xaa, 0xb5, 0x6d, 0xb5, 0x6a, 0xaa, 0xaa, 0xab, 0x55, 0x75, 0xad, 0x56, 0xb6, 0xda, 0xff, 0x55, 0xfa, 0xfd, 0xfa, 0xeb, 0x77, 0xd5, 0xaa, + 0xaa, 0xaa, 0xaa, 0xab, 0x6a, 0xaa, 0xad, 0x6a, 0xaa, 0xaa, 0x91, 0x55, 0x42, 0x94, 0x94, 0xaa, 0x95, 0x56, 0xdb, 0x56, 0xdb, 0x5b, 0x6d, 0x55, 0x55, 0x56, 0x9a, 0xd5, 0xb5, 0x5b, 0x6f, 0x55, 0xff, 0x5f, 0xae, 0xaf, 0x7f, 0xba, 0xbe, 0xff, + 0x5a, 0xaa, 0xad, 0x55, 0x55, 0x55, 0xb5, 0xaa, 0xdb, 0x52, 0x48, 0x00, 0x28, 0x42, 0x52, 0xa5, 0x55, 0x55, 0x55, 0xb5, 0x55, 0xad, 0x55, 0xb5, 0x6d, 0x6a, 0xeb, 0x56, 0xad, 0xad, 0xb5, 0xfe, 0xaa, 0xea, 0xf7, 0xfb, 0xaa, 0xdf, 0xeb, 0xab, + 0xaa, 0xd5, 0x55, 0x6d, 0x5b, 0x6d, 0x56, 0xab, 0x55, 0x55, 0x25, 0x55, 0x45, 0x29, 0x2a, 0x55, 0x55, 0x55, 0x6d, 0x56, 0xda, 0xd5, 0xb6, 0xdb, 0x55, 0xab, 0x2d, 0x5a, 0xd6, 0xf6, 0xda, 0xab, 0xff, 0xbf, 0x5a, 0xad, 0xff, 0xea, 0xbe, 0xfd, + 0x55, 0x55, 0x6a, 0xaa, 0xd5, 0xb5, 0xaa, 0xad, 0x55, 0x52, 0x90, 0x02, 0x29, 0x55, 0x45, 0x55, 0x55, 0x56, 0xaa, 0xdb, 0x56, 0xb6, 0xda, 0xad, 0xb6, 0xaa, 0xd5, 0x6b, 0x75, 0x5b, 0x6f, 0xdd, 0x55, 0x6b, 0xff, 0xfe, 0xaa, 0xbf, 0xd7, 0xaf, + 0xad, 0xaa, 0xab, 0x57, 0x6d, 0x56, 0xba, 0xb5, 0x55, 0x48, 0x4a, 0xa9, 0x44, 0x88, 0xaa, 0xaa, 0xaa, 0xaa, 0xdb, 0x6a, 0xb5, 0x5a, 0xaa, 0xaa, 0xaa, 0xb5, 0x6a, 0xad, 0x56, 0xad, 0xb5, 0x77, 0xfb, 0xfd, 0x55, 0x57, 0xff, 0xd5, 0x7a, 0xfa, +}; + + #endif \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/board.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/board.h index 0720392d..fc9e9764 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/board.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/board.h @@ -4,7 +4,7 @@ #include #include "proto.h" #include "main.h" -#include "gpio.h" +#include "mz100/gpio.h" #define eepromByte spiByte #define eepromPrvSelect() do { /*digitalWrite(FLASH_CS,LOW);*/ } while(0) diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/comms.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/comms.c index fd315b03..69af48ae 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/comms.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/comms.c @@ -18,12 +18,12 @@ int8_t commsGetLastPacketRSSI(void) { return mLastRSSI; } -static inline void __attribute__((always_inline)) macCopy(uint8_t *restrict dst, const uint8_t *restrict src) { +static inline void __attribute__((always_inline)) macCopy(uint8_t* dst, const uint8_t* src) { ((uint32_t *)dst)[0] = ((const uint32_t *)src)[0]; ((uint32_t *)dst)[1] = ((const uint32_t *)src)[1]; } -static inline bool __attribute__((always_inline)) macIsEq(const uint8_t *restrict dst, const uint8_t *restrict src) { +static inline bool __attribute__((always_inline)) macIsEq(const uint8_t* dst, const uint8_t* src) { return ((uint32_t *)dst)[0] == ((const uint32_t *)src)[0] && ((uint32_t *)dst)[1] == ((const uint32_t *)src)[1]; } diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.cpp new file mode 100644 index 00000000..596d602a --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.cpp @@ -0,0 +1,37 @@ +#include "drawing.h" +#include +#include +#include +#include +#include + +#include "epd_interface.h" + +#include "mz100/printf.h" + +#include "mz100/eeprom.h" + +#include "oepl_fs.h" + +#include "compression.h" + +#include "../../oepl-definitions.h" +#include "../../oepl-proto.h" + +#include "settings.h" + +extern "C" { +extern void dump(const uint8_t *a, const uint16_t l); +#include "mz100/util.h" +#include "mz100/mz100_flash.h" +#include "../common/uzlib/src/uzlib.h" +} + +#define MAX_WINDOW_SIZE 8192 +#define ZLIB_CACHE_SIZE 512 + +uint32_t __attribute__((always_inline)) inline HAL_flashRead(uint32_t address, uint8_t *buffer, uint32_t num){ + return FLASH_Read(FLASH_FAST_READ_QUAD_OUT, address, buffer, num); +} + +#include "../common/compression.cpp" \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.h new file mode 100644 index 00000000..d42675f1 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/compression.h @@ -0,0 +1,9 @@ +#pragma once + +#define ENABLE_OEPLFS + +#ifdef ENABLE_OEPLFS +#include "oepl_fs.h" +#endif + +#include "../common/compression.h" \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.c deleted file mode 100755 index c8e47e13..00000000 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.c +++ /dev/null @@ -1,68 +0,0 @@ -#include "drawing.h" - -#include - -#include "board.h" -#include "eeprom.h" -#include "epd.h" -#include "printf.h" -#include "proto.h" -#include "screen.h" -#include "timer.h" -#include "util.h" - -struct BitmapClutEntry { - uint8_t b, g, r, x; -}; - -uint8_t mPassNo = 0; - -static uint8_t mClutMap[256]; -static uint8_t mClutMapRed[256]; - -void drawImageAtAddress(uint32_t addr, uint8_t lut) { - struct EepromImageHeader *eih = (struct EepromImageHeader *)mClutMap; - eepromRead(addr, mClutMap, sizeof(struct EepromImageHeader)); - switch (eih->dataType) { - case DATATYPE_IMG_RAW_1BPP: - printf("Doing raw 1bpp\n"); - - init_epd(); - display_send_start(1); - for (uint32_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { - if (c % 256 == 0) { - eepromRead(addr + sizeof(struct EepromImageHeader) + c, mClutMap, 256); - } - - uint8_t curr_byte = mClutMap[c % 256]; // this one holds 8 pixel, we will translate them to 4 sendings - - interleaveColor(curr_byte, 0x00); - } - display_send_stop(); - epd_refresh_and_sleep(lut); - break; - case DATATYPE_IMG_RAW_2BPP: - printf("Doing raw 2bpp\n"); - init_epd(); - display_send_start(1); - for (uint32_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { - if (c % 256 == 0) { - eepromRead(addr + sizeof(struct EepromImageHeader) + c, mClutMap, 256); - eepromRead(addr + sizeof(struct EepromImageHeader) + (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)) + c, mClutMapRed, 256); - } - - uint8_t curr_byte = mClutMap[c % 256]; // this one holds 8 pixel, we will translate them to 4 sendings - uint8_t curr_byteRed = mClutMapRed[c % 256]; // this one holds 8 pixel, we will translate them to 4 sendings - - interleaveColor(curr_byte, curr_byteRed); - } - display_send_stop(); - epd_refresh_and_sleep(lut); - break; - default: // prevent drawing from an unknown file image type - printf("Image with type 0x%02X was requested, but we don't know what to do with that currently...\n", eih->dataType); - return; - } - // addOverlay(); - // drawWithSleep(); -} \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.cpp new file mode 100644 index 00000000..0655f393 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.cpp @@ -0,0 +1,824 @@ +// #pragma pack(1) + +#include "drawing.h" +#include +#include +#include +#include +#include + +#include "epd_interface.h" + +#include "mz100/printf.h" + +#include "mz100/eeprom.h" + +#include "compression.h" +#include "oepl_fs.h" + +#include "../../oepl-definitions.h" +#include "../../oepl-proto.h" + +extern "C" { +extern void dump(const uint8_t *a, const uint16_t l); +#include "mz100/util.h" +#include "mz100/mz100_flash.h" +} + +#include "userinterface.h" + +#include "epd_interface.h" +#define EEPROM_XFER_BLOCKSIZE 512 // shouldn't be any less than 256 bytes probably +#define DRAWITEM_LIST_SIZE 24 + +struct __attribute__((packed)) imageHeader { + uint16_t width; + uint16_t height; + uint8_t bpp : 4; + uint8_t reserved : 4; +}; + +static drawItem *drawItems[DRAWITEM_LIST_SIZE] = {0}; + +void addBufferedImage(uint16_t x, uint16_t y, bool color, enum rotation ro, const uint8_t *image, bool mask) { + drawItem *di = new drawItem; + + di->setRotation(ro); + if (di->direction ^ epd->drawDirectionRight) { + int16_t temp = x; + x = y; + y = temp; + } + + uint16_t originalWidthBytes = (((uint16_t *)image)[0]) / 8; + uint16_t size = 0; + uint16_t width = ((uint16_t *)image)[0]; + + // find out if the original data was aligned in one byte; if not, add a byte + if (((uint16_t *)image)[0] % 8) originalWidthBytes++; + + // if we're drawing in X direction, we shift the content here. Add extra space for shifting! + if (!di->direction) { + width += x % 8; + } + + // check if the size is aligned in bytes; if not, add an extra for good measure; + if (width % 8) { + width /= 8; + width++; + } else { + width /= 8; + } + + size = width * ((uint16_t *)image)[1]; + size += 2; // not needed + + uint8_t *im = (uint8_t *)calloc(size, 1); + + for (uint16_t copyY = 0; copyY < ((uint16_t *)image)[1]; copyY++) { + memcpy(im + (copyY * width), image + 4 + (copyY * originalWidthBytes), originalWidthBytes); + + // if we draw in X direction, we need to shift bytes in the array + if (!di->direction && (x % 8)) { + drawItem::shiftBytesRight(im + (copyY * width), x % 8, width); + } + } + + di->addItem(im, width * 8, ((uint16_t *)image)[1]); + + di->xpos = x; + di->ypos = y; + di->color = color; + if (mask) + di->type = drawItem::drawType::DRAW_MASK; + else + di->type = drawItem::drawType::DRAW_BUFFERED_1BPP; + + di->addToList(); +} + +void addFlashImage(uint16_t x, uint16_t y, bool color, enum rotation ro, const uint8_t *image) { + drawItem *di = new drawItem; + + di->setRotation(ro); + + if (di->direction ^ epd->drawDirectionRight) { + int16_t temp = x; + x = y; + y = temp; + } + + di->addItem((uint8_t *)(image + 4), ((uint16_t *)image)[0], ((uint16_t *)image)[1]); + + di->xpos = x; + di->ypos = y; + di->color = color; + di->cleanUp = false; + di->type = drawItem::drawType::DRAW_BUFFERED_1BPP; + di->addToList(); +} + +void addFSImage(uint16_t x, uint16_t y, uint8_t color, enum rotation ro, char *name) { + drawItem *di = new drawItem; + + di->setRotation(ro); + + if (di->direction ^ epd->drawDirectionRight) { + int16_t temp = x; + x = y; + y = temp; + } + + OEPLFile *file = fs->getFile(name); + if (!file) { + delete di; + return; + } + uint16_t width, height; + + file->getBlock(0, (uint8_t *)&width, 2); + file->getBlock(2, (uint8_t *)&height, 2); + + di->addItem((uint8_t *)file, width, height); + di->xpos = x; + di->ypos = y; + di->color = color; + di->cleanUp = true; + if (color == 2) { + di->type = drawItem::drawType::DRAW_OEPLFS_2BPP; + } else { + di->type = drawItem::drawType::DRAW_OEPLFS_1BPP; + } + di->addToList(); +} + +void addCompressedFSImage(uint16_t x, uint16_t y, enum rotation ro, char *name) { + drawItem *di = new drawItem; + di->type = drawItem::drawType::DRAW_COMPRESSED; + + di->setRotation(ro); + + if (di->direction ^ epd->drawDirectionRight) { + int16_t temp = x; + x = y; + y = temp; + } + + decompress *decomp = new decompress; + if (!decomp->openFromFile(name)) { + delete di; + delete decomp; + return; + } + + di->imageHeaderOffset = decomp->readByte(0); + + struct imageHeader imgheader; + decomp->getBlock(1, (uint8_t *)&imgheader, sizeof(struct imageHeader)); + + di->addItem((uint8_t *)decomp, imgheader.width, imgheader.height); + + di->xpos = x; + di->ypos = y; + di->color = imgheader.bpp; + di->cleanUp = true; + di->addToList(); +} + +void drawImageAtAddressWrap(uint32_t addr, uint8_t lut) { + // powerUp(INIT_EEPROM); + epdSetup(); + selectLUT(lut); + uint8_t *xferbuffer = (uint8_t *)malloc(EEPROM_XFER_BLOCKSIZE); + struct EepromImageHeader *eih = (struct EepromImageHeader *)xferbuffer; + FLASH_Read(FLASH_NORMAL_READ, addr, xferbuffer, sizeof(struct EepromImageHeader)); + switch (eih->dataType) { + case DATATYPE_IMG_RAW_1BPP: { + drawItem *di = new drawItem; + // di->setRotation(ro); + di->xpos = 0; + di->ypos = 0; + di->color = 0; + di->addItem((uint8_t *)addr, epd->effectiveXRes, epd->effectiveYRes); + di->type = drawItem::drawType::DRAW_EEPROM_1BPP; + di->direction = false; + di->cleanUp = false; + di->addToList(); + } break; + case DATATYPE_IMG_RAW_2BPP: { + drawItem *di = new drawItem; + // di->setRotation(ro); + di->xpos = 0; + di->ypos = 0; + di->color = 0; + di->addItem((uint8_t *)addr, epd->effectiveXRes, epd->effectiveYRes); + di->type = drawItem::drawType::DRAW_EEPROM_2BPP; + di->direction = false; + di->cleanUp = false; + di->addToList(); + } break; + case DATATYPE_IMG_ZLIB: { + drawItem *di = new drawItem; + decompress *decomp = new decompress; + di->type = drawItem::drawType::DRAW_COMPRESSED; + + addr += sizeof(struct EepromImageHeader); + + if (!decomp->openFromFlash(addr, eih->size)) { + delete di; + delete decomp; + return; + } + + di->imageHeaderOffset = decomp->readByte(0); + + struct imageHeader imgheader; + decomp->getBlock(1, (uint8_t *)&imgheader, sizeof(struct imageHeader)); + + di->addItem((uint8_t *)decomp, imgheader.width, imgheader.height); + + di->xpos = 0; + di->ypos = 0; + if (imgheader.bpp == 1) di->color = 0; + if (imgheader.bpp == 2) di->color = 2; + di->cleanUp = true; + di->addToList(); + } break; + } + free(xferbuffer); + addOverlay(); + + draw(); + epdEnterSleep(); +} + +extern "C" { +void drawImageAtAddress(uint32_t addr, uint8_t lut) { + drawImageAtAddressWrap(addr, lut); +} +} + +void drawRoundedRectangle(uint16_t xpos, uint16_t ypos, uint16_t width, uint16_t height, bool color) { + uint16_t widthBytes = width / 8; + if (width % 8) widthBytes++; + uint32_t framebufferSize = (widthBytes + 1) * height; + uint8_t *framebuffer = (uint8_t *)calloc(framebufferSize + 4, 1); + if (framebuffer == NULL) { + return; + } + + ((uint16_t *)framebuffer)[0] = width + 1; + ((uint16_t *)framebuffer)[1] = height; + + framebuffer += 4; + + uint16_t w = width - 1; + uint16_t x = 1; + while (w--) { + framebuffer[(x / 8)] |= (uint8_t)(1 << (7 - ((uint8_t)x % 8))); + x++; + } + for (uint16_t curY = 1; curY < (height - 1); curY++) { + framebuffer[widthBytes * curY] = 0x80; + if (width % 8) + framebuffer[(widthBytes * curY) + widthBytes - 1] = (uint8_t)(1 << (7 - ((uint8_t)width % 8))); + else + framebuffer[(widthBytes * curY) + widthBytes - 1] = 0x01; + } + w = width - 1; + x = 1; + while (w--) { + framebuffer[(x / 8) + ((height - 1) * widthBytes)] |= (uint8_t)(1 << (7 - ((uint8_t)x % 8))); + x++; + } + framebuffer -= 4; + addBufferedImage(xpos, ypos, color, rotation::ROTATE_0, framebuffer, DRAW_NORMAL); + free(framebuffer); +} + +void drawMask(uint16_t xpos, uint16_t ypos, uint16_t width, uint16_t height, bool color) { + uint16_t widthBytes = width / 8; + if (width % 8) widthBytes++; + uint32_t framebufferSize = widthBytes * height; + uint8_t *framebuffer = (uint8_t *)calloc(framebufferSize + 4, 1); + if (framebuffer == NULL) { + return; + } + + ((uint16_t *)framebuffer)[0] = width; + ((uint16_t *)framebuffer)[1] = height; + + framebuffer += 4; + + for (uint16_t curY = 0; curY < height; curY++) { + uint16_t w = width; + uint16_t x = 0; + while (w--) { + framebuffer[(x / 8) + (curY * widthBytes)] |= (uint8_t)(1 << (7 - ((uint8_t)x % 8))); + x++; + } + } + + framebuffer -= 4; + addBufferedImage(xpos, ypos, color, rotation::ROTATE_0, framebuffer, DRAW_INVERTED); + free(framebuffer); +} + +// drawItem (sprite) functions +void drawItem::shiftBytesRight(uint8_t *data, uint8_t shift, uint8_t len) { + // Ensure the shift value is within bounds (0 to 7) + shift = shift % 8; + + // Handle the case where shift is 0 or len is 0 + if (shift == 0 || len == 0) { + return; + } + + // Loop through the array from right to left + for (int i = len - 1; i > 0; i--) { + // Perform the shift by combining bits from the current byte + // and the next byte to its right + data[i] = (data[i] >> shift) | (data[i - 1] << (8 - shift)); + } + + // For the leftmost byte, simply shift it to the right + data[0] >>= shift; +} + +uint8_t drawItem::bitReverse(uint8_t byte) { + byte = ((byte >> 1) & 0x55) | ((byte << 1) & 0xAA); + byte = ((byte >> 2) & 0x33) | ((byte << 2) & 0xCC); + byte = (byte >> 4) | (byte << 4); + return byte; +} + +void drawItem::reverseBytes(uint8_t *src, uint8_t src_len) { + // Check for valid input + if (src == NULL || src_len == 0) { + return; + } + + // Reverse the entire source array + for (uint8_t i = 0; i < src_len / 2; i++) { + uint8_t temp = src[i]; + src[i] = src[src_len - i - 1]; + src[src_len - i - 1] = temp; + } + // Reverse the bits within the bytes + for (uint8_t i = 0; i < src_len; i++) { + src[i] = bitReverse(src[i]); + } +} + +void drawItem::copyWithByteShift(uint8_t *dst, uint8_t *src, uint8_t src_len, uint8_t offset) { + switch (type) { + case DRAW_MASK: + for (uint8_t i = 0; i < src_len; i++) { + dst[i + offset] &= ~(src[i]); + } + break; + default: + for (uint8_t i = 0; i < src_len; i++) { + dst[i + offset] |= src[i]; + } + break; + } +} + +void drawItem::renderDrawLine(uint8_t *line, uint16_t number, uint8_t c) { + drawItem *curDrawItem; + for (uint8_t i = 0; i < DRAWITEM_LIST_SIZE; i++) { + curDrawItem = drawItems[i]; + if (curDrawItem != nullptr) { + curDrawItem->getDrawLine(line, number, c); + } + } +} + +void drawItem::flushDrawItems() { + drawItem *curDrawItem; + for (uint8_t i = 0; i < DRAWITEM_LIST_SIZE; i++) { + curDrawItem = drawItems[i]; + if (curDrawItem != nullptr) { + delete curDrawItem; + drawItems[i] = nullptr; + } + } +} + +void drawItem::getXLine(uint8_t *line, uint16_t y, uint8_t c) { + switch (type) { + case DRAW_FONT: + case DRAW_BUFFERED_1BPP: + case DRAW_MASK: + if (c != color) return; + if ((y >= ypos) && (y < height + ypos)) { // was y > ypos, not >= + // y = height-y; + if (mirrorV) { + if (mirrorH) { + reverseBytes(&buffer[((height - (y - ypos)) * widthBytes)], widthBytes); + // reverseBytes(&buffer[((y - ypos) * widthBytes)], widthBytes); + } else { + reverseBytes(&buffer[((y - ypos) * widthBytes)], widthBytes); + } + } + if (mirrorH) { + copyWithByteShift(line, &buffer[((height - (y - ypos)) * widthBytes)], widthBytes, xpos / 8); + } else { + copyWithByteShift(line, &buffer[((y - ypos) * widthBytes)], widthBytes, xpos / 8); + } + } + break; + case DRAW_OEPLFS_1BPP: + case DRAW_OEPLFS_2BPP: + if ((color < 2) && (c != color)) return; + if ((y >= ypos) && (y < height + ypos)) { // was y > ypos, not >= + uint32_t offset = 4; + offset += c * height * widthBytes; + OEPLFile *file = (OEPLFile *)this->buffer; + uint8_t *dbuffer = (uint8_t *)malloc(widthBytes); + if (mirrorH) { + file->getBlock(offset + (height - (y - ypos)) * widthBytes, dbuffer, widthBytes); + } else { + file->getBlock(offset + (y - ypos) * widthBytes, dbuffer, widthBytes); + } + if (mirrorV) { + reverseBytes(dbuffer, widthBytes); + } + copyWithByteShift(line, dbuffer, widthBytes, xpos / 8); + free(dbuffer); + } + break; + case DRAW_COMPRESSED: + if ((color < 2) && (c != color)) return; + if ((y >= ypos) && (y < height + ypos)) { + uint32_t offset = this->imageHeaderOffset; + offset += c * height * widthBytes; + decompress *decomp = (decompress *)this->buffer; + uint8_t *dbuffer = (uint8_t *)malloc(widthBytes); + if (mirrorH) { + decomp->getBlock(offset + (height - (y - ypos)) * widthBytes, dbuffer, widthBytes); + } else { + decomp->getBlock(offset + (y - ypos) * widthBytes, dbuffer, widthBytes); + } + if (mirrorV) { + reverseBytes(dbuffer, widthBytes); + } + copyWithByteShift(line, dbuffer, widthBytes, xpos / 8); + free(dbuffer); + } + break; + case DRAW_EEPROM_1BPP: + if (c != color) return; + if (epd->drawDirectionRight) + y = epd->effectiveYRes - 1 - y; + FLASH_Read(FLASH_NORMAL_READ, (uint32_t)buffer + sizeof(struct EepromImageHeader) + (y * (epd->effectiveXRes / 8)), line, (epd->effectiveXRes / 8)); + break; + case DRAW_EEPROM_2BPP: + if (epd->drawDirectionRight) + y = epd->effectiveYRes - 1 - y; + FLASH_Read(FLASH_NORMAL_READ, (uint32_t)(buffer + sizeof(struct EepromImageHeader) + ((y + (c * epd->effectiveYRes)) * (epd->effectiveXRes / 8))), line, (epd->effectiveXRes / 8)); + break; + default: + printf("Not supported mode!\n"); + break; + } +} + +void drawItem::getYLine(uint8_t *line, uint16_t x, uint8_t c) { + switch (type) { + case DRAW_FONT: + case DRAW_BUFFERED_1BPP: + if (c != color) return; + if ((x >= xpos) && (x < width + xpos)) { + x -= xpos; + for (uint16_t curY = 0; curY < height; curY++) { + uint16_t curYMirrored = curY; + if (!mirrorH) curYMirrored = height - 1 - curY; + if (mirrorV) { + if (buffer[((width - x) / 8) + (curYMirrored * widthBytes)] & (1 << (7 - ((width - x) % 8)))) { + line[(curY + ypos) / 8] |= (1 << (7 - ((curY + ypos) % 8))); + } + } else { + if (buffer[(x / 8) + (curYMirrored * widthBytes)] & (1 << (7 - (x % 8)))) { + line[(curY + ypos) / 8] |= (1 << (7 - ((curY + ypos) % 8))); + } + } + } + } + break; + case DRAW_MASK: + if (c != color) return; + if ((x >= xpos) && (x < width + xpos)) { + x -= xpos; + for (uint16_t curY = 0; curY < height; curY++) { + uint16_t curYMirrored = curY; + if (!mirrorH) curYMirrored = height - 1 - curY; + if (mirrorV) { + if (buffer[((width - x) / 8) + (curYMirrored * widthBytes)] & (1 << (7 - ((width - x) % 8)))) { + line[(curY + ypos) / 8] &= ~(1 << (7 - ((curY + ypos) % 8))); + } + } else { + if (buffer[(x / 8) + (curYMirrored * widthBytes)] & (1 << (7 - (x % 8)))) { + line[(curY + ypos) / 8] &= ~(1 << (7 - ((curY + ypos) % 8))); + } + } + } + } + break; + case DRAW_OEPLFS_1BPP: + case DRAW_OEPLFS_2BPP: + // this is incredibly slow. For larger images, it'll probably read 128 bytes of eeprom for every -bit- in the image. + if ((color < 2) && (c != color)) return; + if ((x >= xpos) && (x < width + xpos)) { + uint32_t offset = 4; + offset += c * height * widthBytes; + OEPLFile *file = (OEPLFile *)this->buffer; + x -= xpos; + for (uint16_t curY = 0; curY < height; curY++) { + uint16_t curYMirrored = curY; + if (!mirrorH) curYMirrored = height - 1 - curY; + if (mirrorV) { + if (file->readByte(offset + ((width - x) / 8) + (curYMirrored * widthBytes)) & (1 << (7 - ((width - x) % 8)))) { + line[(curY + ypos) / 8] |= (1 << (7 - ((curY + ypos) % 8))); + } + } else { + if (file->readByte(offset + (x / 8) + (curYMirrored * widthBytes)) & (1 << (7 - (x % 8)))) { + line[(curY + ypos) / 8] |= (1 << (7 - ((curY + ypos) % 8))); + } + } + } + } + break; + + default: + break; + } +} + +void drawItem::getDrawLine(uint8_t *line, uint16_t number, uint8_t c) { + if (direction) { + getYLine(line, number, c); + } else { + getXLine(line, number, c); + } +} + +void drawItem::addItem(uint8_t *data, uint16_t w, uint16_t h) { + width = w; + height = h; + widthBytes = w / 8; + if (w % 8) widthBytes++; + buffer = data; +} + +bool drawItem::addToList() { + for (uint8_t i = 0; i < DRAWITEM_LIST_SIZE; i++) { + if (drawItems[i] == nullptr) { + drawItems[i] = this; + return true; + }; + } + return false; +} + +drawItem::~drawItem() { + if (cleanUp) { + switch (this->type) { + case drawItem::drawType::DRAW_OEPLFS_1BPP: + case drawItem::drawType::DRAW_OEPLFS_2BPP: { + OEPLFile *file = (OEPLFile *)this->buffer; + if (file) delete file; + } break; + case drawItem::drawType::DRAW_COMPRESSED: { + decompress *dec = (decompress *)this->buffer; + if (dec) delete dec; + } break; + default: + free(buffer); + break; + } + } +} + +drawItem::drawItem() { + if (epd->drawDirectionRight) { + direction = true; + mirrorH = true; + } +} + +void drawItem::setRotation(enum rotation ro) { + if (epd->drawDirectionRight) { + direction = true; + mirrorH = true; + } + + switch (ro) { + case ROTATE_0: + break; + case ROTATE_270: + direction = !direction; + mirrorH = !mirrorH; + mirrorV = !mirrorV; + break; + case ROTATE_180: + mirrorH = !mirrorH; + mirrorV = !mirrorV; + break; + case ROTATE_90: + direction = !direction; + break; + }; +} + +// font rendering functions +fontrender::fontrender(char *name) { + this->setFont(name); +} + +void fontrender::setFont(char *name) { + if (this->glyphFile) delete this->glyphFile; + if (this->bitmapFile) delete this->bitmapFile; + OEPLFile *font = fs->getFile(name); + if (!font) + printf("Couldn't open font file %s\n", name); + // else + // printf("Opened %s\n", name); + font->getBlock(0, (uint8_t *)&this->gfxFont, sizeof(GFXFontOEPL)); + this->glyphFile = fs->getFile(this->gfxFont.glyphFile); + this->bitmapFile = fs->getFile(this->gfxFont.bitmapFile); + + if (!this->glyphFile) printf("Couldn't open font file %s\n", name); + if (!this->bitmapFile) printf("Couldn't open font file %s\n", name); + if (font) delete (font); +} + +fontrender::~fontrender() { + if (this->glyphFile) delete this->glyphFile; + if (this->bitmapFile) delete this->bitmapFile; +} + +void fontrender::drawFastHLine(uint16_t x, uint16_t y, uint16_t w) { + while (w--) { + fb[(x / 8) + (y * bufferByteWidth)] |= (uint8_t)(1 << (7 - ((uint8_t)x % 8))); + x++; + } +} + +void fontrender::fillRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h) { + for (uint16_t curY = y; curY < y + h; curY++) { + drawFastHLine(x, curY, w); + } +} + +uint8_t fontrender::getCharWidth(uint16_t c) { + if ((c >= gfxFont.first) && (c <= gfxFont.last)) { + c -= gfxFont.first; + // GFXglyph *glyph = &(((GFXglyph *)pgm_read_dword(&gfxFont->glyph))[c]); + GFXglyph glyph = this->getGlyph(c); + return glyph.xAdvance; + } + return 0; +} + +uint8_t fontrender::drawChar(int32_t x, int32_t y, uint16_t c, uint8_t size) { + // Filter out bad characters not present in font + if ((c >= gfxFont.first) && (c <= gfxFont.last)) { + c -= gfxFont.first; + GFXglyph glyph = this->getGlyph(c); + // uint8_t *bitmap = (uint8_t *)gfxFont->bitmap; + uint32_t bo = glyph.bitmapOffset; + uint8_t w = glyph.width, + h = glyph.height; + int8_t xo = glyph.xOffset, + yo = glyph.yOffset; + uint8_t xx, yy, bits = 0, bit = 0; + int16_t xo16 = 0, yo16 = 0; + + if (size > 1) { + xo16 = xo; + yo16 = yo; + } + + // GFXFF rendering speed up + uint16_t hpc = 0; // Horizontal foreground pixel count + for (yy = 0; yy < h; yy++) { + for (xx = 0; xx < w; xx++) { + if (bit == 0) { + // bits = bitmap[bo++]; + bits = (*this->bitmapFile)(bo++); + bit = 0x80; + } + if (bits & bit) + hpc++; + else { + if (hpc) { + if (size == 1) + drawFastHLine(x + xo + xx - hpc, y + yo + yy, hpc); + else + fillRect(x + (xo16 + xx - hpc) * size, y + (yo16 + yy) * size, size * hpc, size); + hpc = 0; + } + } + bit >>= 1; + } + // Draw pixels for this line as we are about to increment yy + if (hpc) { + if (size == 1) + drawFastHLine(x + xo + xx - hpc, y + yo + yy, hpc); + else + fillRect(x + (xo16 + xx - hpc) * size, y + (yo16 + yy) * size, size * hpc, size); + hpc = 0; + } + } + return glyph.xAdvance; + } + return 0; +} + +void fontrender::epdPrintf(uint16_t x, uint16_t y, bool color, enum rotation ro, const char *c, ...) { + drawItem *di = new drawItem; + if (di == nullptr) return; + di->setRotation(ro); + + // prepare a drawItem, exchange x/y if necessary. + if (di->direction ^ epd->drawDirectionRight) { + int16_t temp = x; + x = y; + y = temp; + } + + // output string using vsnprintf + char out_buffer[256]; + va_list lst; + va_start(lst, c); + uint8_t len = vsnprintf(out_buffer, 255, c, lst); + va_end(lst); + + // account for offset in font rendering + if (!di->direction) { + Xpixels = x % 8; // total drawing width increased by x%8 + } else { + Xpixels = 0; + } + + // find out the total length of the string + for (uint8_t c = 0; c < len; c++) { + Xpixels += (uint16_t)getCharWidth(out_buffer[c]); + } + + // find out the high and low points for given font + int8_t high = 0; + int8_t low = 0; + for (uint8_t curchar = 0; curchar < len; curchar++) { + uint8_t c = out_buffer[curchar]; + if ((c >= gfxFont.first) && (c <= gfxFont.last)) { + c -= gfxFont.first; + GFXglyph g = this->getGlyph(c); + int8_t glyphUL = g.yOffset; + if (glyphUL < high) high = glyphUL; + int8_t glyphHeight = g.height; + if ((glyphUL + glyphHeight) > low) low = glyphUL + glyphHeight; + } + } + // Actual font height (reduces memory footprint) + int8_t height = -1 * (high - low) + 1; + + // determine actual width + bufferByteWidth = Xpixels / 8; + if (Xpixels % 8) bufferByteWidth++; + + // allocate framebuffer + fb = (uint8_t *)calloc(bufferByteWidth * height, 1); + + if (!fb) { + printf("Failed to allocate buffer for drawitem, we can't render this text!\n"); + printf("Tried to allocate a buffer %d x %d\n", bufferByteWidth, height); + delete di; + return; + } + + uint16_t curX; + if (!di->direction) { + curX = x % 8; // start drawing at x%8s + } else { + curX = 0; + } + for (uint8_t c = 0; c < len; c++) { + curX += (uint16_t)drawChar(curX, height - low, out_buffer[c], 1); + } + + di->addItem(fb, curX, height); + di->ypos = y; + di->xpos = x; + di->color = color; + di->type = drawItem::drawType::DRAW_FONT; + di->addToList(); +} + +GFXglyph fontrender::getGlyph(uint16_t c) { + GFXglyph g; + this->glyphFile->getBlock(sizeof(GFXglyph) * c, (uint8_t *)&g, sizeof(GFXglyph)); + return g; +} \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.h index b8a590e9..a83e9bc2 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/drawing.h @@ -2,12 +2,132 @@ #define _DRAWING_H_ #include -#include +#include "oepl_fs.h" -#define DRAWING_MIN_BITMAP_SIZE (128) //minimum size we'll consider +#define COLOR_RED 1 +#define COLOR_BLACK 0 +#define COLOR_DUAL 2 -void set_offline(bool state); -void drawImageAtAddress(uint32_t addr, uint8_t lut); -void drawImageFromBuffer(uint8_t* buffer, const uint8_t lut); +#define IMAGE_OR 1 +#define IMAGE_REPLACE 0 + +#define DRAW_INVERTED 1 +#define DRAW_NORMAL 0 + +#define FILENAME_LENGTH 32 + +typedef struct __attribute__ ((packed)) { + uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap + uint8_t width; ///< Bitmap dimensions in pixels + uint8_t height; ///< Bitmap dimensions in pixels + uint8_t xAdvance; ///< Distance to advance cursor (x axis) + int8_t xOffset; ///< X dist from cursor pos to UL corner + int8_t yOffset; ///< Y dist from cursor pos to UL corner +} GFXglyph; + +enum rotation { + ROTATE_0, + ROTATE_90, + ROTATE_180, + ROTATE_270 +}; + +typedef struct __attribute__ ((packed)) { + uint16_t first; + uint16_t last; + uint8_t yAdvance; + char glyphFile[FILENAME_LENGTH]; + char bitmapFile[FILENAME_LENGTH]; +} GFXFontOEPL; + + +extern "C"{ + void drawImageAtAddress(uint32_t addr, uint8_t lut); +} + +void addBufferedImage(uint16_t x, uint16_t y, bool color, enum rotation ro, const uint8_t *image, bool mask); +// void addFlashImage(uint16_t x, uint16_t y, bool color, enum rotation ro, const uint8_t *image); +void addQR(uint16_t x, uint16_t y, uint8_t version, uint8_t scale, const char *c, ...); +void drawRoundedRectangle(uint16_t xpos, uint16_t ypos, uint16_t width, uint16_t height, bool color); +void drawMask(uint16_t xpos, uint16_t ypos, uint16_t width, uint16_t height, bool color); +void addFSImage(uint16_t x, uint16_t y, uint8_t color, enum rotation ro, char *name); +void addCompressedFSImage(uint16_t x, uint16_t y, enum rotation ro, char *name); + +class drawItem { + public: + drawItem(); + ~drawItem(); + void setRotation(enum rotation ro); + void addItem(uint8_t *data, uint16_t width, uint16_t height); + bool addToList(); + + static void shiftBytesRight(uint8_t *data, uint8_t shift, uint8_t len); + static void renderDrawLine(uint8_t *line, uint16_t number, uint8_t c); + static void flushDrawItems(); + + // these are also used for rotated screens + static void reverseBytes(uint8_t *src, uint8_t src_len); + static uint8_t bitReverse(uint8_t byte); + + enum drawType { + DRAW_FONT, + DRAW_BUFFERED_1BPP, + DRAW_MASK, + DRAW_EEPROM_1BPP, + DRAW_EEPROM_2BPP, + DRAW_COMPRESSED, + DRAW_OEPLFS_1BPP, + DRAW_OEPLFS_2BPP + } type; + + int16_t xpos; + int16_t ypos; + + enum rotation rotate = ROTATE_0; + + uint8_t color = 0; + + bool direction = false; + + bool mirrorH = false; + bool mirrorV = false; + uint16_t width; + uint16_t height; + + uint8_t imageHeaderOffset = 0; + + // if this is true, clean up the reference (free memory). + bool cleanUp = true; + + protected: + void copyWithByteShift(uint8_t *dst, uint8_t *src, uint8_t src_len, uint8_t offset); + + void getDrawLine(uint8_t *line, uint16_t number, uint8_t c); + void getXLine(uint8_t *line, uint16_t yPos, uint8_t color); + void getYLine(uint8_t *line, uint16_t xPos, uint8_t color); + uint8_t widthBytes = 0; + uint8_t *buffer = nullptr; +}; + +class fontrender { + public: + void epdPrintf(uint16_t x, uint16_t y, bool color, enum rotation ro, const char *c, ...); + fontrender(char* name); + ~fontrender(); + void setFont(char* name); + + protected: + GFXFontOEPL gfxFont; + uint16_t bufferByteWidth = 0; + uint8_t *fb = nullptr; + uint16_t Xpixels; + uint8_t drawChar(int32_t x, int32_t y, uint16_t c, uint8_t size); + uint8_t getCharWidth(uint16_t c); + void drawFastHLine(uint16_t x, uint16_t y, uint16_t w); + void fillRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h); + GFXglyph getGlyph(uint16_t c); + OEPLFile *glyphFile = nullptr; + OEPLFile *bitmapFile = nullptr; +}; #endif diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.c deleted file mode 100755 index 8e9e4c71..00000000 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.c +++ /dev/null @@ -1,818 +0,0 @@ -#include "epd.h" - -#include -#include -// #include -#include -#include - -#include "12x20_horizontal_LSB_1.h" -#include "core_cm3.h" -#include "gpio.h" -#include "main.h" -#include "mz100_clock.h" -#include "mz100_gpio.h" -#include "mz100_pinmux.h" -#include "mz100_ssp.h" -#include "mz100_wdt.h" -#include "printf.h" -#include "stdarg.h" -#include "util.h" - -#define EPD_PANEL_SETTING 0x00 -#define EPD_POWER_SETTING 0x01 -#define EPD_POWER_OFF 0x02 -#define EPD_POWER_OFF_SEQUENCE 0x03 -#define EPD_POWER_ON 0x04 -#define EPD_BOOSTER_SOFT_START 0x06 -#define EPD_DEEP_SLEEP 0x07 -#define EPD_START_DATA 0x10 -#define EPD_DATA_STOP 0x11 -#define EPD_REFRESH 0x12 -#define EPD_IMAGE_PROCESS 0x13 -#define EPD_LUT_VCOM 0x20 -#define EPD_LUT_B 0x21 -#define EPD_LUT_W 0x22 -#define EPD_LUT_G1 0x23 -#define EPD_LUT_G2 0x24 -#define EPD_LUT_R0 0x25 -#define EPD_LUT_R1 0x26 -#define EPD_LUT_R2 0x27 -#define EPD_LUT_R3 0x28 -#define EPD_LUT_XON 0x29 -#define EPD_PLL_CONTROL 0x30 -#define EPD_TEMP_CALIB 0x40 -#define EPD_TEMP_SELECT 0x41 -#define EPD_TEMP_WRITE 0x42 -#define EPD_TEMP_READ 0x43 -#define EPD_VCOM_DATA_INTERVAL 0x50 -#define EPD_LPD 0x51 -#define EPD_TCON_SET 0x60 -#define EPD_TRES 0x61 -#define EPD_SPI_FLASH_CONTROL 0x65 -#define EPD_REVISION 0x70 -#define EPD_GET_STATUS 0x71 -#define EPD_AUTOMEASURE_VCOM 0x80 -#define EPD_READ_VCOM 0x81 -#define EPD_VCOM_DC_SET 0x82 -#define EPD_SET_WINDOW 0x90 - -#define EPD_WAKE_EEPROM 0xAB -#define EPD_EEPROM_SLEEP 0xB9 -#define EPD_UNKNOWN_1 0xE5 - -static uint8_t EPDtempBracket = 0; - -#define CHAR_WIDTH_BYTES 2 -#define CHAR_HEIGHT 20 -#define CHAR_WIDTH 12 -#define SCREEN_WIDTH 640 - -uint8_t buffer[CHAR_HEIGHT][640 / 8]; -uint8_t charbuffer[CHAR_HEIGHT][CHAR_WIDTH_BYTES + 1]; - -#define CHAR_SPACING 1 -#define EMPTY_SPACING 3 - -struct epd_colorlutpart { - uint8_t repeat; - uint8_t lvl0 : 4; - uint8_t lvl1 : 4; - uint8_t lvl2 : 4; - uint8_t lvl3 : 4; - uint8_t lvl4 : 4; - uint8_t lvl5 : 4; - uint8_t lvl6 : 4; - uint8_t lvl7 : 4; - uint8_t length[8]; -} __packed; - -struct epd_colorlut { - struct epd_colorlutpart part[20]; -} __packed; - -struct epd_vcomlutpart { - uint8_t repeat; - uint8_t lvl0 : 2; - uint8_t lvl1 : 2; - uint8_t lvl2 : 2; - uint8_t lvl3 : 2; - uint8_t lvl4 : 2; - uint8_t lvl5 : 2; - uint8_t lvl6 : 2; - uint8_t lvl7 : 2; - uint8_t length[8]; -} __packed; - -struct epd_vcomlut { - struct epd_vcomlutpart part[20]; -} __packed; - -struct epd_xonlutpart { - uint8_t repeat; - uint8_t lvl0 : 1; - uint8_t lvl1 : 1; - uint8_t lvl2 : 1; - uint8_t lvl3 : 1; - uint8_t lvl4 : 1; - uint8_t lvl5 : 1; - uint8_t lvl6 : 1; - uint8_t lvl7 : 1; - uint8_t length[8]; -} __packed; - -struct epd_xonlut { - struct epd_xonlutpart part[20]; -} __packed; - -void interleaveBW(uint8_t b) { - b ^= 0xFF; - uint8_t b_out = 0; - for (uint8_t shift = 0; shift < 4; shift++) { - b_out = 0; - if ((b >> 2 * shift) & 0x01) b_out |= 0x30; // 0x30 - if ((b >> 2 * shift) & 0x02) b_out |= 0x03; // 0x03 - display_tx_byte(b_out); - } -} - -void interleaveColor(uint8_t b, uint8_t r) { - b ^= 0xFF; - uint8_t b_out = 0; - for (int8_t shift = 3; shift >= 0; shift--) { - b_out = 0; - if (((b >> 2 * shift) & 0x01) && ((r >> 2 * shift) & 0x01)) { - b_out |= 0x04; // 0x30 - } else if ((b >> 2 * shift) & 0x01) { - b_out |= 0x03; // 0x30 - } else if ((r >> 2 * shift) & 0x01) { // 4 or 5 - b_out |= 0x04; // 0x30 - } else { - } - - if (((b >> 2 * shift) & 0x02) && ((r >> 2 * shift) & 0x02)) { - b_out |= 0x40; // 0x30 - } else if ((b >> 2 * shift) & 0x02) { - b_out |= 0x30; // 0x30 - } else if ((r >> 2 * shift) & 0x02) { - b_out |= 0x40; // 0x30 - } else { - } - display_tx_byte(b_out); - } -} - -void epdWrite(uint8_t reg, uint8_t len, ...) { - va_list valist; - va_start(valist, len); - epd_pin_enable(1); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); - GPIO_WritePinOutput(EPD_DC, GPIO_IO_LOW); - SSP_SendData(SSP2_ID, reg); - for (int i = 0; i < 0xF; ++i) - __ISB(); - GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); - for (uint8_t i = 0; i < len; i++) { - SSP_SendData(SSP2_ID, va_arg(valist, int)); - } - - for (int j = 0; j < 0xF; ++j) - __ISB(); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); - epd_pin_enable(0); - va_end(valist); -} - -void epd_reset() { - uint8_t v0 = 5; - printf("Resetting..."); - while (1) { - GPIO_WritePinOutput(EPD_RESET, GPIO_IO_HIGH); - delay(100); - GPIO_WritePinOutput(EPD_RESET, GPIO_IO_LOW); - delay(3000); - GPIO_WritePinOutput(EPD_RESET, GPIO_IO_HIGH); - delay(3000); - if (GPIO_ReadPinLevel(EPD_BUSY)) - break; - v0--; - if (!v0) { - printf("EPD reset failure\r\n"); - break; - } - } - delay(5000); - printf(" Reset complete\n"); -} - -void EPD_cmd(char a1) { - epd_pin_enable(1); - - GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); - GPIO_WritePinOutput(EPD_DC, GPIO_IO_LOW); - SSP_SendData(SSP2_ID, a1); - for (int i = 0; i < 0xF; ++i) - __ISB(); - - epd_pin_enable(0); - - GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); -} - -void EPD_data(char a1) { - epd_pin_enable(1); - - GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); - SSP_SendData(SSP2_ID, a1); - for (int i = 0; i < 0xF; ++i) - __ISB(); - - epd_pin_enable(0); - - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); -} - -void spi_soft_send_byte(char a1) { - uint8_t v2 = 0; - do { - if ((a1 & 0x80) != 0) - GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_HIGH); - else - GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_LOW); - delay_us(1); - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); - delay_us(1); - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); - a1 *= 2; - v2++; - } while (v2 < 8); - GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_LOW); - delay_us(1); -} - -void BUSY_wait(unsigned int a1) { - unsigned int v2 = 0; - while (GPIO_ReadPinLevel(EPD_BUSY) == GPIO_IO_LOW) { - delay(10000); - v2++; - if (v2 > a1) - break; - if (((v2 % 1000) / 10) == 0) - WDT_RestartCounter(); - } -} - -void spi_soft_read_buffer(char a1, uint16_t readaddress, uint8_t *target, uint16_t length) { - char v9; - unsigned int v10; - - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_LOW); - spi_soft_send_byte(3); - spi_soft_send_byte(a1); - spi_soft_send_byte(readaddress >> 8); - spi_soft_send_byte(readaddress); - delay_us(5); - for (uint16_t i = 0; i < length; i++) { - v9 = 0; - v10 = 0; - do { - v9 *= 2; - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); - delay_us(1); - if (GPIO_ReadPinLevel(EPD_MISO)) - v9 |= 1u; - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); - delay_us(1); - v10++; - } while (v10 < 8); - delay_us(1); - *target++ = v9; - } - - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); -} - -int spi_soft_read_byte() { - int v0; - unsigned int v1; - - v0 = 0; - GPIO_WritePinOutput(EPD_BS, GPIO_IO_HIGH); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); - delay_us(1); - GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_HIGH); - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); - delay_us(1); - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); - delay_us(1); - GPIO_SetPinDir(EPD_MOSI, GPIO_INPUT); - GPIO_PinMuxFun(EPD_MOSI, 0); - delay_us(3); - v1 = 0; - do { - v0 = (uint8_t)(2 * v0); - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); - if (GPIO_ReadPinLevel(EPD_MOSI)) - v0 |= 1u; - GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); - delay_us(1); - v1++; - } while (v1 < 8); - GPIO_SetPinDir(EPD_MOSI, GPIO_OUTPUT); - GPIO_PinMuxFun(EPD_MOSI, 0); - GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_LOW); - delay_us(1); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); - delay_us(1); - GPIO_WritePinOutput(EPD_BS, GPIO_IO_LOW); - return v0; -} - -uint8_t getTempBracket() { - uint8_t v0; - uint8_t v1; - uint8_t temptable[40]; - - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(1); - delay_us(1000); - spi_soft_read_buffer(0, 25002, temptable, 10); - delay_us(1000); - delay_us(1000); - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(0); - - EPD_cmd(EPD_TEMP_CALIB); - BUSY_wait(0xAu); - v0 = spi_soft_read_byte(); - v1 = (uint8_t)(2 * v0) + ((uint8_t)spi_soft_read_byte() >> 7); - - uint8_t bracket = 0; - for (int i = 0; i < 9; i++) { - if ((((char)v1 - (uint8_t)temptable[i]) & 0x80) != 0) { - bracket = i; - break; - } - } - return bracket; -} - -void loadFrameRatePLL(uint8_t bracket) { - uint8_t pllvalue; - uint8_t plltable[12]; - - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(1); - delay_us(1000); - spi_soft_read_buffer(0, 25039, plltable, 10); - delay_us(1000); - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(0); - - pllvalue = plltable[bracket]; - - EPD_cmd(EPD_PLL_CONTROL); - EPD_data(pllvalue); -} - -extern void dump(const uint8_t *a, const uint16_t l); - -void loadTempVCOMDC(uint8_t bracket) { - uint8_t vcomvalue; - uint8_t vcomtable[12]; - - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(1); - delay_us(1000); - spi_soft_read_buffer(0, 25049, vcomtable, 10); - delay_us(1000); - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(0); - - vcomvalue = vcomtable[bracket]; - - EPD_cmd(EPD_VCOM_DC_SET); - EPD_data(vcomvalue); -} - -uint8_t *loadLUT(uint8_t index, uint8_t bracket) { - uint16_t adr = 0; - uint16_t len = 0; - uint8_t *lutBuffer; - switch (index) { - case EPD_LUT_VCOM: - // VCOM LUT - adr = 20800 + (220 * bracket); - len = 220; - break; - case EPD_LUT_B: - case EPD_LUT_W: - case EPD_LUT_G1: - case EPD_LUT_G2: - case EPD_LUT_R0: - case EPD_LUT_R1: - case EPD_LUT_R2: - case EPD_LUT_R3: - adr = (bracket * 2080); - adr += (index - 0x21) * 260; - len = 260; - break; - case EPD_LUT_XON: - // XON LUT - adr = 23000 + (200 * bracket); - len = 200; - break; - } - - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(1); - delay_us(1000); - lutBuffer = malloc(len); - if (lutBuffer) spi_soft_read_buffer(0, adr, lutBuffer, len); - delay_us(1000); - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(0); - return lutBuffer; -} - -void shiftRightByX(uint8_t *data, int X, int N) { - if (X < 0 || X >= 8) { - // Invalid shift value, X should be between 0 and 7 (inclusive) - return; - } - - // Perform the shift operation on each byte in the range - for (int i = 0; i < N; i++) { - data[i] = (data[i] >> X) | ((data[i + 1] & ((1 << X) - 1)) << (8 - X)); - } -} -void shiftLeftByX(uint8_t *data, int X, int N) { - if (X < 0 || X >= 8) { - // Invalid shift value, X should be between 0 and 7 (inclusive) - return; - } - - // Perform the shift operation on each byte in the range - for (int i = N - 1; i >= 0; i--) { - data[i] = (data[i] << X) | ((data[i - 1] >> (8 - X)) & ((1 << X) - 1)); - } -} - -uint16_t loadCharacter(uint8_t currentChar, uint16_t curX, bool first) { - currentChar -= 0x20; - - memset(charbuffer, 0, sizeof(charbuffer)); - for (uint8_t d = 0; d < CHAR_HEIGHT; d++) { - for (uint8_t c = 0; c < CHAR_WIDTH_BYTES; c++) { - charbuffer[d][c] = font[currentChar][c + (2 * d)]; - } - } - - // find amount of left whitespace and compensate - uint8_t leftShift = 0; - for (uint8_t left = 0; left < CHAR_WIDTH; left++) { - bool leftAdjusted = false; - for (uint8_t height = 0; height < CHAR_HEIGHT; height++) { - if (charbuffer[height][0] & 0x01) { - leftAdjusted = true; - break; - } - } - if (leftAdjusted) { - break; - } else { - for (uint8_t height = 0; height < CHAR_HEIGHT; height++) { - shiftRightByX(&(charbuffer[height][0]), 1, CHAR_WIDTH_BYTES); - } - leftShift++; - } - } - - // find width for character - uint8_t width = 0; - for (int8_t curBit = CHAR_WIDTH + 1; curBit > 0; curBit--) { - bool widthFound = false; - for (uint8_t height = 0; height < CHAR_HEIGHT; height++) { - if (charbuffer[height][curBit / 8] & (1 << (curBit % 8))) { - widthFound = true; - break; - } - } - if (widthFound) { - width = curBit + 1; - break; - } - } - - if (!first) { - curX += CHAR_SPACING; - } - - for (uint8_t height = 0; height < CHAR_HEIGHT; height++) { - shiftLeftByX(&(charbuffer[height][0]), curX % 8, CHAR_WIDTH_BYTES + 1); - } - - for (uint8_t d = 0; d < CHAR_HEIGHT; d++) { - for (uint8_t c = 0; c < CHAR_WIDTH_BYTES + 1; c++) { - buffer[d][(curX / 8) + c] |= charbuffer[d][c]; - } - } - if (width == 0) width = EMPTY_SPACING; - curX += width; - return curX; -} - -void dumpBuffer(uint16_t xloc, uint16_t yloc, uint16_t width) { - xloc = SCREEN_WIDTH - xloc; - - setDisplayWindow(xloc - width, yloc, xloc, yloc + CHAR_HEIGHT); - display_send_start(0); - for (uint8_t curY = 0; curY < CHAR_HEIGHT; curY++) { - for (uint16_t curX = 0; curX < width; curX += 8) { - interleaveBW(buffer[curY][curX / 8]); - } - } - display_send_stop(); -} - -void loadLUTSfromEEPROM(uint8_t bracket) { - for (uint8_t c = EPD_LUT_B; c <= EPD_LUT_R3; c++) { - struct epd_colorlut *colorlut = (struct epd_colorlut *)loadLUT(c, bracket); - - for (uint8_t d = 0; d < 8; d++) { - colorlut->part[1].length[d] = 1; - colorlut->part[0].length[d] = 1; - } - - for (uint8_t part = 0; part < 4; part++) { - if (colorlut->part[part].repeat) colorlut->part[part].repeat = 1; - } - - for (uint8_t part = 4; part < 20; part++) { - if (colorlut->part[part].repeat) colorlut->part[part].repeat = 0; - } - - lutBeginTX(c); - for (uint16_t d = 0; d < 260; d++) { - display_tx_byte(((uint8_t *)colorlut)[d]); - } - lutEndTX(); - if (colorlut) free(colorlut); - } - - struct epd_vcomlut *vcomlut = (struct epd_vcomlut *)loadLUT(EPD_LUT_VCOM, bracket); - - for (uint8_t part = 0; part < 20; part++) { - if (vcomlut->part[part].repeat) vcomlut->part[part].repeat = 0; - } - lutBeginTX(EPD_LUT_VCOM); - for (uint16_t d = 0; d < 220; d++) { - display_tx_byte(((uint8_t *)vcomlut)[d]); - } - lutEndTX(); - if (vcomlut) free(vcomlut); - - struct epd_xonlut *xonlut = (struct epd_xonlut *)loadLUT(EPD_LUT_XON, bracket); - - // memset(&(xonlut->part[0].repeat), 0x00, sizeof(struct epd_xonlutpart)); - // memset(&(xonlut->part[1].repeat), 0x00, sizeof(struct epd_xonlutpart)); - - for (uint8_t part = 0; part < 20; part++) { - if (xonlut->part[part].repeat) xonlut->part[part].repeat = 0; - } - lutBeginTX(EPD_LUT_XON); - for (uint16_t d = 0; d < 200; d++) { - display_tx_byte(((uint8_t *)xonlut)[d]); - } - lutEndTX(); - if (xonlut) free(xonlut); -} - -void init_GPIO_EPD() { - SSP_CFG_Type v0; - SPI_Param_Type spiParaStruct; - GPIO_PinMuxFun(EPD_MOSI, 0); - GPIO_SetPinDir(EPD_MOSI, GPIO_OUTPUT); - GPIO_PinMuxFun(EPD_CLK, 0); - GPIO_SetPinDir(EPD_CLK, GPIO_OUTPUT); - GPIO_PinMuxFun(EPD_CS, 0); - GPIO_SetPinDir(EPD_CS, GPIO_OUTPUT); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); - GPIO_PinMuxFun(EPD_BUSY, 0); - GPIO_SetPinDir(EPD_BUSY, GPIO_INPUT); - GPIO_PinModeConfig(EPD_BUSY, PINMODE_PULLUP); - GPIO_PinMuxFun(EPD_RESET, 0); - GPIO_SetPinDir(EPD_RESET, GPIO_OUTPUT); - GPIO_WritePinOutput(EPD_RESET, GPIO_IO_HIGH); - GPIO_PinMuxFun(EPD_DC, 0); - GPIO_SetPinDir(EPD_DC, GPIO_OUTPUT); - GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); - GPIO_PinMuxFun(EPD_BS, 0); - GPIO_SetPinDir(EPD_BS, GPIO_OUTPUT); - GPIO_WritePinOutput(EPD_BS, GPIO_IO_LOW); - GPIO_PinMuxFun(EPD_HLT_CTRL, 0); - GPIO_SetPinDir(EPD_HLT_CTRL, GPIO_OUTPUT); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); - GPIO_PinMuxFun(EPD_MISO, 0); - GPIO_SetPinDir(EPD_MISO, GPIO_INPUT); - GPIO_PinModeConfig(EPD_MISO, PINMODE_DEFAULT); - memset(&v0, 0, 9); - v0.timeOutVal = 0; - SSP_Init(SSP2_ID, &v0); - spiParaStruct.spiClkPhase = SPI_SCPHA_1; - spiParaStruct.spiClkPolarity = SPI_SCPOL_LOW; - SPI_Config(SSP2_ID, &spiParaStruct); - CLK_I2SClkSrc(CLK_I2S_XTAL32M); - CLK_SSPClkSrc(CLK_SSP_ID_2, CLK_SSP_I2S); - CLK_I2SClkDivider(1, 1); -} - -void fillWindow(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye, uint8_t color) { - setDisplayWindow(x, y, xe, ye); - display_send_start(0); - - for (uint32_t c = 0; c < (xe - x) * (ye - y) / 8; c++) { - interleaveBW(0x00); - } - - display_send_stop(); -} - -void epd_refresh_and_sleep(uint8_t lut) { - if (lut) { - epdWrite(EPD_PANEL_SETTING, 2, 0xC3, 0x88); // 0xC3-0x88 // lut from register - loadLUTSfromEEPROM(EPDtempBracket); - } else { - epdWrite(EPD_PANEL_SETTING, 2, 0xC3, 0x08); // 0xC3-0x88 // lut from EEPROM - epdWrite(EPD_UNKNOWN_1, 1, 0x03); // load lut, probably - } - - // epdPrintf(50,100,false,"Blaat! Dit is een test %d", 6); - - EPD_cmd(EPD_REFRESH); - - unsigned int v2 = 0; - while (GPIO_ReadPinLevel(EPD_BUSY) == GPIO_IO_HIGH) { - WDT_RestartCounter(); - delay(10000); - v2++; - if (v2 > 10) - break; - } - do_sleeped_epd_refresh(); - init_GPIO_EPD(); - epd_reset(); - // epd_reset(); - EPD_cmd(EPD_POWER_SETTING); - EPD_data(2); - EPD_data(0); - EPD_data(0); - EPD_data(0); - delay_us(50000); - EPD_cmd(EPD_POWER_OFF); - delay_us(100000); - BUSY_wait(0x32u); - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(1); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_LOW); - spi_soft_send_byte(EPD_EEPROM_SLEEP); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); - EPD_cmd(EPD_SPI_FLASH_CONTROL); - EPD_data(0); - EPD_cmd(EPD_DEEP_SLEEP); - EPD_data(0xA5); -} - -void epd_pin_enable(int a1) { - if (a1) { - GPIO_PinMuxFun(EPD_CLK, GPIO22_SSP2_SCK); - GPIO_PinMuxFun(EPD_MOSI, GPIO12_SSP2_TXD); - GPIO_PinMuxFun(EPD_MISO, GPIO13_SSP2_RXD); - SSP_Enable(SSP2_ID); - } else { - SSP_Disable(SSP2_ID); - GPIO_PinMuxFun(EPD_MOSI, 0); - GPIO_SetPinDir(EPD_MOSI, GPIO_OUTPUT); - GPIO_PinMuxFun(EPD_CLK, 0); - GPIO_SetPinDir(EPD_CLK, GPIO_OUTPUT); - GPIO_PinMuxFun(EPD_MISO, 0); - GPIO_SetPinDir(EPD_MISO, GPIO_INPUT); - GPIO_PinModeConfig(EPD_MISO, PINMODE_DEFAULT); - } -} - -void lutBeginTX(uint8_t reg) { - EPD_cmd(reg); - epd_pin_enable(1); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); -} - -void lutEndTX() { - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); - epd_pin_enable(0); -} - -void setDisplayWindow(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye) { - x &= 0xFFF8; // byte boundary - xe = (xe - 1) | 0x0007; // byte boundary - 1 - EPD_cmd(0x91); - epdWrite(0x90, 9, x / 256, x % 256, xe / 256, xe % 256, y / 256, y % 256, ye / 256, ye % 256, 0x01); -} - -void display_tx_byte(uint8_t data) { - SSP_SendData(SSP2_ID, data); -} - -void display_send_start(uint8_t inverted) { - EPD_cmd(EPD_START_DATA); - epd_pin_enable(1); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); -} - -void display_send_stop() { - for (int i = 0; i < 0xF; ++i) - __ISB(); - GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); - epd_pin_enable(0); -} - -void init_epd(void) { - printf("EPD Powerup begin\n"); - init_GPIO_EPD(); - epd_reset(); - - EPD_cmd(EPD_POWER_ON); - BUSY_wait(0x32u); - - // wake the eeprom - epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x01); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_LOW); - epdWrite(EPD_WAKE_EEPROM, 0x00); - GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); - epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x00); - - epdWrite(EPD_POWER_SETTING, 4, 0x37, 0x00, 0x05, 0x05); // 0x37 - 00- 05 05 - // epdWrite(EPD_POWER_SETTING, 4, 0x07, 0x00, 0x05, 0x05); // 0x37 - 00- 05 05 - - epdWrite(EPD_PANEL_SETTING, 2, 0xC3, 0x08); // 0xC3-0x88 // lut from EEPROM - - epdWrite(EPD_POWER_OFF_SEQUENCE, 1, 0x00); - epdWrite(EPD_BOOSTER_SOFT_START, 0x03, 199, 204, 45); - - epdWrite(EPD_PLL_CONTROL, 0x01, 60); - epdWrite(EPD_TEMP_SELECT, 0x01, 0x00); - epdWrite(EPD_VCOM_DATA_INTERVAL, 0x01, 119); - epdWrite(EPD_TCON_SET, 0x01, 34); - epdWrite(EPD_TRES, 0x04, 2, 128, 1, 128); - - EPDtempBracket = getTempBracket(); - loadFrameRatePLL(EPDtempBracket); - loadTempVCOMDC(EPDtempBracket); -} - -void epdPrintf(uint16_t x, uint16_t y, bool color, const char *c, ...) { - // Render the text - char out_buffer[96]; - - uint16_t curX = 0; - memset(buffer, 0, sizeof(buffer)); - memset(charbuffer, 0, sizeof(charbuffer)); - va_list lst; - va_start(lst, c); - vsnprintf(out_buffer, 256, c, lst); - va_end(lst); - - curX = x % 8; - - char *text = (char *)out_buffer; - memset(charbuffer, 0, sizeof(charbuffer)); - curX = loadCharacter(*text, curX, true); - text++; - - while (*text != '\0') { - memset(charbuffer, 0, sizeof(charbuffer)); - curX = loadCharacter(*text, curX, false); - text++; - } - - x /= 8; - x *= 8; - dumpBuffer(x, y, curX); -} - -void drawImg(uint16_t x, uint16_t y, const uint8_t *img) { - uint16_t width = img[0]; - uint16_t height = img[1]; - img += 2; - setDisplayWindow(x, y, x + width, y + height); - display_send_start(0); - for (uint8_t curY = 0; curY < height; curY++) { - for (uint16_t curX = 0; curX < width; curX += 8) { - interleaveColor(*(img++), 0x00); - } - } - display_send_stop(); -} \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.h deleted file mode 100755 index 29f36499..00000000 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd.h +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once -//#include -#include -#include -#include - -#define DISPLAY_WIDTH (640) -#define DISPLAY_HEIGHT (384) -#define DISPLAY_WIDTH_MM (164) -#define DISPLAY_HEIGHT_MM (97) - -#define MAGNIFY1 3 -#define MAGNIFY2 2 -#define MAGNIFY3 1 -#define BACK_COLOR 3 -#define FORE_COLOR_1 0 -#define FORE_COLOR_2 4 -#define FORE_COLOR_3 0 - -#define EPD_LUT_DEFAULT 0 -#define EPD_LUT_NO_REPEATS 1 -#define EPD_LUT_FAST_NO_REDS 2 -#define EPD_LUT_FAST 3 - -#define EPD_DIRECTION_X false -#define EPD_DIRECTION_Y true -#define EPD_SIZE_SINGLE false -#define EPD_SIZE_DOUBLE true -#define EPD_COLOR_RED true -#define EPD_COLOR_BLACK false - -void init_GPIO_EPD(); -void display_send_buffer(); - -void epd_refresh_and_sleep(uint8_t lut); - -void display_tx_byte(uint8_t data); -void display_send_start(uint8_t inverted); -void display_send_stop(); - -void setDisplayWindow(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye); - -void init_epd(); -void refresh_epd(); - -void lutBeginTX(uint8_t reg); -void lutEndTX(); - -void epd_pin_enable(int a1); - - -void fillWindow(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye, uint8_t color); -void epdPrintf(uint16_t x, uint16_t y, bool color, const char* c, ...); - -void interleaveColor(uint8_t b, uint8_t r); -void interleaveBW(uint8_t); - -void drawImg(uint16_t x, uint16_t y, const uint8_t *img); \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.cpp new file mode 100644 index 00000000..561d2048 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.cpp @@ -0,0 +1,265 @@ +#include "drawing.h" +#include +#include +#include +#include +#include + +#include "epd_interface.h" +#include "uc8159-var-m2.h" + +#include "mz100/printf.h" +#include "mz100/eeprom.h" + +#include "main.h" + +extern "C" { +#include "mz100/mz100_clock.h" + +#include "mz100/mz100_gpio.h" +#include "mz100/mz100_pinmux.h" +#include "mz100/mz100_ssp.h" +#include "mz100/mz100_wdt.h" +#include "mz100/util.h" +} + +#include "../../oepl-definitions.h" +#include "../../oepl-proto.h" + +epdInterface *epd; + +epdInterface::~epdInterface(){ + +} + +void epdSetup() { + epd = new uc8159; + epd->effectiveXRes = 640; + epd->effectiveYRes = 384; + epd->Xres = 640; + epd->Yres = 384; + epd->epdSetup(); +} + +void epdEnterSleep() { + epd->epdEnterSleep(); + delete epd; +} +void draw() { + epd->draw(); +} +void drawNoWait() { + epd->drawNoWait(); +} + +void epdWaitRdy() { + epd->epdWaitRdy(); +} + +void selectLUT(uint8_t sel) { + epd->selectLUT(sel); +} + +static void busyWaitUntilHigh(uint32_t timeout) { + uint32_t v2 = 0; + while (GPIO_ReadPinLevel(EPD_BUSY) == GPIO_IO_LOW) { + delay(10000); + v2++; + if (v2 > timeout) + break; + if (((v2 % 1000) / 10) == 0) + WDT_RestartCounter(); + } +} + +static void busyWaitUntilLow(uint32_t timeout) { + uint32_t v2 = 0; + while (GPIO_ReadPinLevel(EPD_BUSY) == GPIO_IO_HIGH) { + delay(10000); + v2++; + if (v2 > timeout) + break; + if (((v2 % 1000) / 10) == 0) + WDT_RestartCounter(); + } +} + +void busyWaitUntil(bool high, uint32_t timeout) { + if (high) + busyWaitUntilHigh(timeout); + else + busyWaitUntilLow(timeout); +} + +void softSPIWriteByte(char byteOut) { + uint8_t loopCount = 0; + do { + if ((byteOut & 0x80) != 0) + GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_HIGH); + else + GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_LOW); + delay_us(1); + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); + delay_us(1); + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); + byteOut *= 2; + loopCount++; + delay(1); + } while (loopCount < 8); + GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_LOW); + delay_us(1); +} + +uint8_t softSPIReadByte() { + uint8_t readByte = 0; + uint8_t loopCount = 0; + GPIO_WritePinOutput(EPD_BS, GPIO_IO_HIGH); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); + delay_us(1); + GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_HIGH); + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); + delay_us(1); + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); + delay_us(1); + GPIO_SetPinDir(EPD_MOSI, GPIO_INPUT); + GPIO_PinMuxFun(EPD_MOSI, PINMUX_FUNCTION_0); + delay_us(3); + do { + readByte *= 2; + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); + if (GPIO_ReadPinLevel(EPD_MOSI)) + readByte |= 1u; + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); + delay_us(1); + delay(1); + loopCount++; + } while (loopCount < 8); + GPIO_SetPinDir(EPD_MOSI, GPIO_OUTPUT); + GPIO_PinMuxFun(EPD_MOSI, PINMUX_FUNCTION_0); + GPIO_WritePinOutput(EPD_MOSI, GPIO_IO_LOW); + delay_us(1); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + delay_us(1); + GPIO_WritePinOutput(EPD_BS, GPIO_IO_LOW); + delay(1); + return readByte; +} + +void enableHardSPI(bool enable) { + if (enable) { + GPIO_PinMuxFun(EPD_CLK, GPIO22_SSP2_SCK); + GPIO_PinMuxFun(EPD_MOSI, GPIO12_SSP2_TXD); + GPIO_PinMuxFun(EPD_MISO, GPIO13_SSP2_RXD); + SSP_Enable(SSP2_ID); + } else { + SSP_Disable(SSP2_ID); + GPIO_PinMuxFun(EPD_MOSI, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_MOSI, GPIO_OUTPUT); + GPIO_PinMuxFun(EPD_CLK, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_CLK, GPIO_OUTPUT); + GPIO_PinMuxFun(EPD_MISO, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_MISO, GPIO_INPUT); + GPIO_PinModeConfig(EPD_MISO, PINMODE_DEFAULT); + } +} + +void initEPDGPIO() { + SSP_CFG_Type v0; + SPI_Param_Type spiParaStruct; + GPIO_PinMuxFun(EPD_MOSI, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_MOSI, GPIO_OUTPUT); + GPIO_PinMuxFun(EPD_CLK, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_CLK, GPIO_OUTPUT); + GPIO_PinMuxFun(EPD_CS, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_CS, GPIO_OUTPUT); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + GPIO_PinMuxFun(EPD_BUSY, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_BUSY, GPIO_INPUT); + GPIO_PinModeConfig(EPD_BUSY, PINMODE_PULLUP); + GPIO_PinMuxFun(EPD_RESET, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_RESET, GPIO_OUTPUT); + GPIO_WritePinOutput(EPD_RESET, GPIO_IO_HIGH); + GPIO_PinMuxFun(EPD_DC, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_DC, GPIO_OUTPUT); + GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); + GPIO_PinMuxFun(EPD_BS, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_BS, GPIO_OUTPUT); + GPIO_WritePinOutput(EPD_BS, GPIO_IO_LOW); + GPIO_PinMuxFun(EPD_HLT_CTRL, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_HLT_CTRL, GPIO_OUTPUT); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); + GPIO_PinMuxFun(EPD_MISO, PINMUX_FUNCTION_0); + GPIO_SetPinDir(EPD_MISO, GPIO_INPUT); + GPIO_PinModeConfig(EPD_MISO, PINMODE_DEFAULT); + memset(&v0, 0, 9); + v0.timeOutVal = 0; + SSP_Init(SSP2_ID, &v0); + spiParaStruct.spiClkPhase = SPI_SCPHA_1; + spiParaStruct.spiClkPolarity = SPI_SCPOL_LOW; + SPI_Config(SSP2_ID, &spiParaStruct); + CLK_I2SClkSrc(CLK_I2S_XTAL32M); + CLK_SSPClkSrc(CLK_SSP_ID_2, CLK_SSP_I2S); + CLK_I2SClkDivider(1, 1); +} + +void epdWrite(uint8_t reg, uint8_t len, ...) { + va_list valist; + va_start(valist, len); + enableHardSPI(true); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); + GPIO_WritePinOutput(EPD_DC, GPIO_IO_LOW); + + SSP_SendData(SSP2_ID, reg); + while (SSP_GetTxFifoLevel(SSP2_ID)) + ; + + GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); + + for (uint8_t i = 0; i < len; i++) { + SSP_SendData(SSP2_ID, va_arg(valist, int)); + } + while (SSP_GetTxFifoLevel(SSP2_ID)) + ; + delay_us(1); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + enableHardSPI(false); + va_end(valist); +} +void epdBlockWrite(uint8_t reg, uint8_t *buffer, uint16_t len) { + enableHardSPI(true); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); + GPIO_WritePinOutput(EPD_DC, GPIO_IO_LOW); + + SSP_SendData(SSP2_ID, reg); + while (SSP_GetTxFifoLevel(SSP2_ID)) + ; + + GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); + + for (uint16_t i = 0; i < len; i++) { + SSP_SendData(SSP2_ID, buffer[i]); + while (SSP_GetTxFifoLevel(SSP2_ID) > 8) + ; + } + while (SSP_GetTxFifoLevel(SSP2_ID)) + ; + delay_us(1); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + enableHardSPI(false); +} +void epdBlockWrite(uint8_t *buffer, uint16_t len) { + enableHardSPI(true); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); + GPIO_WritePinOutput(EPD_DC, GPIO_IO_HIGH); + + for (uint16_t i = 0; i < len; i++) { + SSP_SendData(SSP2_ID, buffer[i]); + while (SSP_GetTxFifoLevel(SSP2_ID) > 8) + ; + } + while (SSP_GetTxFifoLevel(SSP2_ID)) + ; + delay_us(1); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + enableHardSPI(false); +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.h new file mode 100644 index 00000000..ac9738f3 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/epd_interface.h @@ -0,0 +1,55 @@ +#pragma once +//#include +#include +#include +#include + +class epdInterface { + public: + virtual ~epdInterface() = 0; + virtual void epdSetup() = 0; + virtual void epdEnterSleep() = 0; + virtual void draw() = 0; + virtual void drawNoWait() = 0; + virtual void epdWaitRdy() = 0; + virtual void selectLUT(uint8_t lut) = 0; + uint8_t controllerType = 0; + uint16_t Xres; + uint16_t Yres; + uint16_t effectiveXRes; + uint16_t effectiveYRes; + uint16_t XOffset = 0; + uint16_t YOffset = 0; + bool drawDirectionRight = false; + bool epdMirrorV = false; + bool epdMirrorH = false; +}; + +//__attribute__((section(".aonshadow"))) +extern epdInterface* epd; + +void epdSetup(); +void epdEnterSleep(); + +void draw(); +void drawNoWait(); +void drawWithSleep(); +void epdWaitRdy(); + +#define EPD_LUT_DEFAULT 0 +#define EPD_LUT_NO_REPEATS 1 +#define EPD_LUT_FAST_NO_REDS 2 +#define EPD_LUT_FAST 3 + +void selectLUT(uint8_t lut); + +void initEPDGPIO(); + +void busyWaitUntil(bool high, uint32_t timeout); +void softSPIWriteByte(char byteOut); +uint8_t softSPIReadByte(); + +void enableHardSPI(bool enable); +void epdWrite(uint8_t reg, uint8_t len, ...); +void epdBlockWrite(uint8_t reg, uint8_t *buffer, uint16_t len); +void epdBlockWrite(uint8_t *buffer, uint16_t len); \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/font.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/font.h deleted file mode 100644 index 8e40237b..00000000 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/font.h +++ /dev/null @@ -1,260 +0,0 @@ -#pragma once -#include -static const uint8_t font[256][20]={ // https://raw.githubusercontent.com/basti79/LCD-fonts/master/10x16_vertikal_MSB_1.h -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x00 -{0xE0,0x01,0x30,0x03,0x50,0x02,0x28,0x05,0x28,0x04,0x28,0x04,0x28,0x05,0x50,0x02,0x30,0x03,0xE0,0x01}, // 0x01 -{0xE0,0x01,0xF0,0x03,0xB0,0x03,0xD8,0x06,0xD8,0x07,0xD8,0x07,0xD8,0x06,0xB0,0x03,0xF0,0x03,0xE0,0x01}, // 0x02 -{0x00,0x3E,0x80,0x7F,0xE0,0x7F,0xF0,0x7F,0xF8,0x3F,0xF8,0x3F,0xF0,0x7F,0xE0,0x7F,0x80,0x7F,0x00,0x3E}, // 0x03 -{0x00,0x01,0x80,0x03,0xC0,0x0F,0xE0,0x1F,0xF8,0x7F,0xF0,0x1F,0xE0,0x0F,0xC0,0x07,0x80,0x03,0x00,0x01}, // 0x04 -{0x80,0x03,0xC0,0x07,0xC0,0x07,0xC0,0x3F,0xF8,0x7F,0xB8,0x7F,0xC0,0x3F,0xC0,0x07,0xC0,0x07,0x80,0x03}, // 0x05 -{0x80,0x03,0xC0,0x07,0xC0,0x0F,0xC0,0x1F,0xF8,0x3F,0xB8,0x7F,0xC0,0x1F,0xC0,0x0F,0xC0,0x07,0x80,0x03}, // 0x06 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x07 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x08 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x09 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x0A -{0xE0,0x01,0x10,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x08,0x24,0x10,0x2E,0xE0,0x71,0x00,0x70,0x00,0x18}, // 0x0B -{0x00,0x00,0x00,0x1E,0x20,0x21,0xA0,0x40,0xF8,0x40,0xA0,0x40,0xA0,0x41,0x00,0x21,0x00,0x1E,0x00,0x00}, // 0x0C -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x0D -{0x06,0x00,0x0E,0x00,0x0E,0x00,0xFC,0x1F,0x00,0x18,0x30,0x10,0x70,0x30,0x70,0x20,0xE0,0x7F,0x00,0x00}, // 0x0E -{0x00,0x01,0xC0,0x0F,0xC0,0x04,0x40,0x08,0x60,0x18,0x40,0x08,0x40,0x04,0xC0,0x0C,0xC0,0x0B,0x00,0x01}, // 0x0F -{0xF8,0x0F,0xF0,0x07,0xF0,0x07,0xE0,0x03,0xE0,0x03,0xE0,0x03,0xC0,0x01,0xC0,0x01,0x80,0x00,0x80,0x00}, // 0x10 -{0x80,0x00,0x80,0x00,0xC0,0x01,0xC0,0x01,0xE0,0x03,0xE0,0x03,0xE0,0x03,0xF0,0x07,0xF0,0x07,0xF8,0x0F}, // 0x11 -{0x00,0x00,0x00,0x00,0x08,0x10,0x04,0x20,0xFE,0x7F,0x04,0x20,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x12 -{0x00,0x00,0x00,0x00,0xD8,0x7F,0x00,0x00,0x00,0x00,0xD8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x13 -{0x00,0x00,0x00,0x38,0x00,0x7C,0x00,0x7E,0xFE,0x7F,0x00,0x40,0x00,0x40,0xFE,0x7F,0x00,0x00,0x00,0x00}, // 0x14 -{0x00,0x00,0x00,0x00,0x86,0x3B,0xC2,0x4C,0x42,0x44,0x62,0x46,0x32,0x42,0xDC,0x41,0x00,0x00,0x00,0x00}, // 0x15 -{0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00}, // 0x16 -{0x00,0x00,0x00,0x00,0x11,0x10,0x09,0x20,0xFD,0x7F,0x09,0x20,0x11,0x10,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x17 -{0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x20,0xFE,0x7F,0x00,0x20,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x18 -{0x00,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0xFE,0x7F,0x04,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x19 -{0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xA0,0x02,0xC0,0x01,0x80,0x00,0x00,0x00}, // 0x1A -{0x00,0x00,0x80,0x00,0xC0,0x01,0xA0,0x02,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00}, // 0x1B -{0x00,0x00,0xF8,0x07,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00}, // 0x1C -{0x00,0x00,0x80,0x00,0xC0,0x01,0xA0,0x02,0x80,0x00,0x80,0x00,0xA0,0x02,0xC0,0x01,0x80,0x00,0x00,0x00}, // 0x1D -{0x08,0x00,0x18,0x00,0x78,0x00,0xF8,0x01,0xF8,0x03,0xF8,0x0F,0xF8,0x03,0xF8,0x00,0x38,0x00,0x08,0x00}, // 0x1E -{0x00,0x08,0x00,0x0C,0x00,0x0F,0xC0,0x0F,0xE0,0x0F,0xF8,0x0F,0xE0,0x0F,0x80,0x0F,0x00,0x0E,0x00,0x08}, // 0x1F -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x20 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x21 -{0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x22 -{0x80,0x00,0x98,0x04,0xE0,0x05,0x80,0x1E,0x98,0x64,0xE0,0x05,0x80,0x1E,0x80,0x64,0x80,0x04,0x00,0x00}, // 0x23 -{0x00,0x00,0x00,0x00,0x18,0x38,0x08,0x64,0x08,0x42,0xFC,0xFF,0x88,0x41,0xF0,0x40,0x00,0x00,0x00,0x00}, // 0x24 -{0x08,0x38,0x10,0x44,0x20,0x44,0xC0,0x44,0x00,0x39,0x70,0x02,0x88,0x0C,0x88,0x10,0x88,0x20,0x70,0x40}, // 0x25 -{0xE0,0x00,0x10,0x01,0x08,0x3A,0x08,0x46,0x88,0x45,0xC8,0x4C,0x38,0x38,0x18,0x00,0x68,0x00,0x80,0x01}, // 0x26 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x27 -{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x18,0x18,0x0C,0x30,0x04,0x20,0x02,0x40,0x02,0x40,0x00,0x00}, // 0x28 -{0x00,0x00,0x02,0x40,0x02,0x40,0x04,0x20,0x0C,0x30,0x18,0x18,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x29 -{0x00,0x00,0x00,0x10,0x00,0x18,0x00,0x0F,0x00,0x72,0x00,0x0F,0x00,0x18,0x00,0x10,0x00,0x00,0x00,0x00}, // 0x2A -{0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xF8,0x07,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00}, // 0x2B -{0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x2C -{0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00}, // 0x2D -{0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x2E -{0x00,0x00,0x02,0x00,0x0C,0x00,0x30,0x00,0xC0,0x00,0x00,0x03,0x00,0x0C,0x00,0x30,0x00,0x40,0x00,0x00}, // 0x2F -{0x00,0x00,0xC0,0x0F,0x30,0x30,0x08,0x40,0x08,0x40,0x08,0x40,0x30,0x30,0xC0,0x0F,0x00,0x00,0x00,0x00}, // 0x30 -{0x00,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0xF8,0x7F,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x31 -{0x00,0x00,0x18,0x60,0x28,0x40,0x48,0x40,0x88,0x40,0x08,0x43,0x08,0x3C,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x32 -{0x00,0x00,0x00,0x00,0x08,0x40,0x08,0x42,0x08,0x42,0x08,0x42,0xF0,0x3D,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x33 -{0xC0,0x00,0x40,0x03,0x40,0x04,0x40,0x18,0x40,0x20,0xF8,0x7F,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00}, // 0x34 -{0x00,0x00,0x00,0x00,0x08,0x7C,0x08,0x44,0x08,0x44,0x10,0x42,0xE0,0x41,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x35 -{0x00,0x00,0xE0,0x0F,0x10,0x32,0x08,0x44,0x08,0x44,0x08,0x44,0x10,0x42,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x36 -{0x00,0x00,0x00,0x40,0x18,0x40,0xE0,0x40,0x00,0x43,0x00,0x4C,0x00,0x50,0x00,0x60,0x00,0x00,0x00,0x00}, // 0x37 -{0x00,0x00,0xF0,0x38,0x08,0x45,0x08,0x42,0x08,0x42,0x08,0x45,0x90,0x45,0x60,0x38,0x00,0x00,0x00,0x00}, // 0x38 -{0x00,0x00,0x00,0x1E,0x08,0x21,0x88,0x40,0x88,0x40,0x88,0x40,0x30,0x21,0xC0,0x1F,0x00,0x00,0x00,0x00}, // 0x39 -{0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x06,0x18,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3A -{0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x06,0x1E,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x3B -{0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0x20,0x01,0x20,0x01,0x10,0x02,0x10,0x02,0x08,0x04,0x00,0x00}, // 0x3C -{0x00,0x00,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x00,0x00}, // 0x3D -{0x00,0x00,0x08,0x04,0x10,0x02,0x10,0x02,0x20,0x01,0x20,0x01,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00}, // 0x3E -{0x00,0x00,0x00,0x70,0x00,0x40,0xD8,0x40,0x00,0x41,0x00,0x42,0x00,0x64,0x00,0x38,0x00,0x00,0x00,0x00}, // 0x3F -{0xC0,0x0F,0x30,0x18,0x18,0x20,0xC8,0x47,0x28,0x48,0x68,0x50,0xD8,0x51,0xE0,0x3F,0x20,0x00,0x20,0x00}, // 0x40 -{0x08,0x00,0x70,0x00,0xC0,0x01,0x40,0x0E,0x40,0x18,0x40,0x0C,0x40,0x03,0xC0,0x00,0x30,0x00,0x08,0x00}, // 0x41 -{0x00,0x00,0xF8,0x1F,0x08,0x11,0x08,0x11,0x08,0x11,0x08,0x11,0x88,0x12,0x70,0x0C,0x00,0x00,0x00,0x00}, // 0x42 -{0xC0,0x03,0x30,0x0C,0x10,0x08,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x18,0x00,0x00,0x00,0x00}, // 0x43 -{0x00,0x00,0xF8,0x1F,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x10,0x08,0xE0,0x07,0x00,0x00,0x00,0x00}, // 0x44 -{0x00,0x00,0xF8,0x1F,0x88,0x10,0x88,0x10,0x88,0x10,0x88,0x10,0x88,0x10,0x08,0x10,0x00,0x00,0x00,0x00}, // 0x45 -{0x00,0x00,0xF8,0x1F,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x00,0x10,0x00,0x00,0x00,0x00}, // 0x46 -{0x00,0x00,0xC0,0x03,0x30,0x0C,0x10,0x08,0x08,0x10,0x08,0x10,0x88,0x10,0x88,0x10,0xF8,0x18,0x00,0x00}, // 0x47 -{0x00,0x00,0xF8,0x1F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00}, // 0x48 -{0x00,0x00,0x08,0x10,0x08,0x10,0x08,0x10,0xF8,0x1F,0x08,0x10,0x08,0x10,0x08,0x10,0x00,0x00,0x00,0x00}, // 0x49 -{0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x10,0x08,0x10,0x08,0x10,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x4A -{0x00,0x00,0xF8,0x1F,0x00,0x01,0x80,0x01,0x40,0x02,0x20,0x04,0x20,0x08,0x10,0x10,0x08,0x00,0x00,0x00}, // 0x4B -{0x00,0x00,0xF8,0x1F,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x4C -{0xF8,0x1F,0x00,0x1C,0x80,0x07,0xE0,0x00,0x60,0x00,0x80,0x03,0x00,0x1C,0xF8,0x1F,0x00,0x00,0x00,0x00}, // 0x4D -{0x00,0x00,0xF8,0x1F,0x00,0x08,0x00,0x06,0x80,0x01,0x60,0x00,0x10,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00}, // 0x4E -{0x00,0x00,0xE0,0x07,0x10,0x08,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x10,0x08,0xE0,0x07,0x00,0x00}, // 0x4F -{0x00,0x00,0xF8,0x1F,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x00,0x11,0x00,0x0E,0x00,0x00,0x00,0x00}, // 0x50 -{0x00,0x00,0xE0,0x07,0x10,0x08,0x08,0x10,0x08,0x10,0x08,0x10,0x0C,0x10,0x12,0x08,0xE2,0x07,0x00,0x00}, // 0x51 -{0x00,0x00,0xF8,0x1F,0x80,0x10,0x80,0x10,0xC0,0x10,0x20,0x11,0x10,0x0E,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x52 -{0x00,0x00,0x18,0x0E,0x08,0x12,0x08,0x11,0x08,0x11,0x88,0x10,0x90,0x10,0x70,0x18,0x00,0x00,0x00,0x00}, // 0x53 -{0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xF8,0x1F,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00}, // 0x54 -{0x00,0x00,0xE0,0x1F,0x18,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00}, // 0x55 -{0x00,0x10,0x00,0x0C,0x80,0x03,0x60,0x00,0x18,0x00,0x18,0x00,0xE0,0x00,0x00,0x03,0x00,0x0C,0x00,0x10}, // 0x56 -{0x00,0x18,0xC0,0x07,0x38,0x00,0xF0,0x00,0x00,0x07,0x80,0x03,0x70,0x00,0x38,0x00,0xC0,0x07,0x00,0x18}, // 0x57 -{0x08,0x10,0x10,0x08,0x20,0x04,0x40,0x02,0x80,0x01,0x80,0x01,0x40,0x02,0x20,0x04,0x10,0x08,0x08,0x10}, // 0x58 -{0x00,0x10,0x00,0x08,0x00,0x06,0x00,0x01,0xF8,0x00,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10}, // 0x59 -{0x00,0x00,0x18,0x10,0x28,0x10,0x48,0x10,0x88,0x10,0x08,0x11,0x08,0x12,0x08,0x14,0x08,0x18,0x00,0x00}, // 0x5A -{0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x00,0x00,0x00}, // 0x5B -{0x00,0x00,0x00,0x40,0x00,0x30,0x00,0x0C,0x00,0x03,0xC0,0x00,0x30,0x00,0x0C,0x00,0x02,0x00,0x00,0x00}, // 0x5C -{0x00,0x00,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x5D -{0x00,0x00,0x20,0x00,0xC0,0x00,0x00,0x07,0x00,0x1C,0x00,0x70,0x00,0x0E,0xC0,0x01,0x20,0x00,0x00,0x00}, // 0x5E -{0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00}, // 0x5F -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x60 -{0x00,0x00,0x30,0x00,0x48,0x04,0x88,0x04,0x88,0x04,0x90,0x04,0xF8,0x03,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x61 -{0x00,0x00,0xF8,0x7F,0x10,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x10,0x06,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x62 -{0x00,0x00,0xE0,0x01,0x10,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x08,0x04,0x08,0x04,0x00,0x00,0x00,0x00}, // 0x63 -{0x00,0x00,0xE0,0x01,0x18,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x10,0x02,0xF8,0x7F,0x00,0x00,0x00,0x00}, // 0x64 -{0x00,0x00,0xE0,0x01,0x90,0x02,0x88,0x04,0x88,0x04,0x88,0x04,0x88,0x04,0x88,0x03,0x00,0x00,0x00,0x00}, // 0x65 -{0x00,0x00,0x00,0x04,0x00,0x04,0xF8,0x3F,0x00,0x24,0x00,0x44,0x00,0x44,0x00,0x44,0x00,0x44,0x00,0x00}, // 0x66 -{0x00,0x00,0xE0,0x01,0x19,0x02,0x09,0x04,0x09,0x04,0x09,0x04,0x12,0x02,0xFC,0x07,0x00,0x00,0x00,0x00}, // 0x67 -{0x00,0x00,0xF8,0x7F,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x04,0xF8,0x03,0x00,0x00,0x00,0x00}, // 0x68 -{0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x64,0xF8,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x69 -{0x00,0x00,0x01,0x00,0x01,0x04,0x01,0x04,0x01,0x64,0xFE,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6A -{0x00,0x00,0xF8,0x7F,0x80,0x00,0xC0,0x00,0x20,0x01,0x20,0x02,0x10,0x02,0x08,0x04,0x00,0x00,0x00,0x00}, // 0x6B -{0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x6C -{0xF8,0x07,0x00,0x02,0x00,0x04,0x00,0x04,0xF8,0x03,0x00,0x02,0x00,0x04,0x00,0x04,0xF8,0x03,0x00,0x00}, // 0x6D -{0x00,0x00,0xF8,0x07,0x00,0x03,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x04,0xF8,0x03,0x00,0x00,0x00,0x00}, // 0x6E -{0x00,0x00,0xE0,0x01,0x10,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x10,0x02,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x6F -{0x00,0x00,0xFF,0x07,0x10,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x10,0x06,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x70 -{0x00,0x00,0xE0,0x01,0x18,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x10,0x02,0xFF,0x07,0x00,0x00,0x00,0x00}, // 0x71 -{0x00,0x00,0x00,0x00,0xF8,0x07,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x00}, // 0x72 -{0x00,0x00,0x18,0x03,0x88,0x04,0x88,0x04,0x48,0x04,0x48,0x04,0x30,0x04,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x73 -{0x00,0x00,0x00,0x04,0x00,0x04,0xF0,0x1F,0x08,0x04,0x08,0x04,0x08,0x04,0x08,0x04,0x00,0x00,0x00,0x00}, // 0x74 -{0x00,0x00,0xF0,0x07,0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x75 -{0x00,0x04,0x80,0x03,0x60,0x00,0x18,0x00,0x08,0x00,0x30,0x00,0xC0,0x00,0x00,0x03,0x00,0x04,0x00,0x00}, // 0x76 -{0x00,0x06,0xE0,0x01,0x18,0x00,0x70,0x00,0x80,0x03,0x80,0x01,0x70,0x00,0x18,0x00,0xE0,0x01,0x00,0x06}, // 0x77 -{0x00,0x00,0x08,0x04,0x10,0x02,0x20,0x01,0xC0,0x00,0xC0,0x00,0x20,0x01,0x10,0x02,0x08,0x04,0x00,0x00}, // 0x78 -{0x01,0x04,0x01,0x03,0xC1,0x00,0x62,0x00,0x1C,0x00,0x18,0x00,0x60,0x00,0x80,0x00,0x00,0x03,0x00,0x04}, // 0x79 -{0x00,0x00,0x08,0x04,0x18,0x04,0x28,0x04,0x48,0x04,0x88,0x04,0x08,0x05,0x08,0x06,0x08,0x04,0x00,0x00}, // 0x7A -{0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x7C,0x3F,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x00,0x00,0x00}, // 0x7B -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x7C -{0x00,0x00,0x00,0x00,0x02,0x40,0x02,0x40,0x02,0x40,0x7C,0x3F,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00}, // 0x7D -{0xC0,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x80,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x80,0x01}, // 0x7E -{0x00,0x00,0xF8,0x01,0x08,0x03,0x08,0x04,0x08,0x08,0x08,0x04,0x08,0x03,0xF8,0x01,0x00,0x00,0x00,0x00}, // 0x7F -{0xC0,0x03,0x30,0x0C,0x10,0x08,0x08,0x10,0x08,0x10,0x09,0x10,0x0D,0x10,0x0B,0x18,0x00,0x00,0x00,0x00}, // 0x80 -{0x00,0x00,0xF0,0x07,0x08,0x20,0x08,0x00,0x08,0x00,0x10,0x20,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x81 -{0x00,0x00,0xE0,0x01,0x90,0x02,0x88,0x04,0x88,0x24,0x88,0x44,0x88,0x04,0x88,0x03,0x00,0x00,0x00,0x00}, // 0x82 -{0x00,0x00,0x30,0x00,0x48,0x24,0x88,0x44,0x88,0x44,0x90,0x24,0xF8,0x03,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x83 -{0x00,0x00,0x30,0x00,0x48,0x24,0x88,0x04,0x88,0x04,0x90,0x24,0xF8,0x03,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x84 -{0x00,0x00,0x30,0x00,0x48,0x44,0x88,0x24,0x88,0x04,0x90,0x04,0xF8,0x03,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x85 -{0x00,0x00,0x30,0x00,0x48,0x04,0x88,0x44,0x88,0xA4,0x90,0x44,0xF8,0x03,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x86 -{0x00,0x00,0xE0,0x01,0x10,0x02,0x08,0x04,0x09,0x04,0x0D,0x04,0x0B,0x04,0x08,0x04,0x00,0x00,0x00,0x00}, // 0x87 -{0x00,0x00,0xE0,0x01,0x90,0x22,0x88,0x44,0x88,0x44,0x88,0x24,0x88,0x04,0x88,0x03,0x00,0x00,0x00,0x00}, // 0x88 -{0x00,0x00,0xE0,0x01,0x90,0x02,0x88,0x24,0x88,0x04,0x88,0x04,0x88,0x24,0x88,0x03,0x00,0x00,0x00,0x00}, // 0x89 -{0x00,0x00,0xE0,0x01,0x90,0x02,0x88,0x44,0x88,0x24,0x88,0x04,0x88,0x04,0x88,0x03,0x00,0x00,0x00,0x00}, // 0x8A -{0x00,0x00,0x00,0x04,0x00,0x24,0x00,0x04,0xF8,0x07,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x8B -{0x00,0x00,0x00,0x04,0x00,0x24,0x00,0x44,0xF8,0x47,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x8C -{0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x44,0xF8,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x8D -{0x08,0x00,0x70,0x00,0xC0,0x81,0x40,0x0E,0x40,0x18,0x40,0x0C,0x40,0x83,0xC0,0x00,0x30,0x00,0x08,0x00}, // 0x8E -{0x08,0x00,0x70,0x00,0xC0,0x01,0x40,0x4E,0x40,0xB0,0x40,0xB8,0x40,0x4F,0xC0,0x01,0x70,0x00,0x08,0x00}, // 0x8F -{0x00,0x00,0xF8,0x1F,0x88,0x10,0x88,0x10,0x88,0x50,0x88,0x90,0x88,0x10,0x08,0x10,0x00,0x00,0x00,0x00}, // 0x90 -{0x70,0x04,0xC8,0x04,0x88,0x04,0x88,0x04,0xF0,0x03,0x98,0x04,0x88,0x04,0x88,0x04,0x88,0x03,0x00,0x00}, // 0x91 -{0x08,0x00,0x30,0x00,0xE0,0x01,0x20,0x06,0x20,0x18,0xF8,0x1F,0x88,0x10,0x88,0x10,0x08,0x10,0x00,0x00}, // 0x92 -{0x00,0x00,0xE0,0x01,0x10,0x22,0x08,0x44,0x08,0x44,0x08,0x24,0x10,0x02,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x93 -{0x00,0x00,0xE0,0x01,0x10,0x22,0x08,0x04,0x08,0x04,0x08,0x24,0x10,0x02,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x94 -{0x00,0x00,0xE0,0x01,0x10,0x42,0x08,0x24,0x08,0x04,0x08,0x04,0x10,0x02,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0x95 -{0x00,0x00,0xF0,0x07,0x08,0x20,0x08,0x40,0x08,0x40,0x10,0x20,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x96 -{0x00,0x00,0xF0,0x07,0x08,0x40,0x08,0x20,0x08,0x00,0x10,0x00,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x97 -{0x01,0x04,0x01,0x03,0xC1,0x20,0x62,0x00,0x1C,0x00,0x18,0x20,0x60,0x00,0x80,0x00,0x00,0x03,0x00,0x04}, // 0x98 -{0x00,0x00,0xE0,0x07,0x10,0x88,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x90,0x10,0x08,0xE0,0x07,0x00,0x00}, // 0x99 -{0x00,0x00,0xE0,0x1F,0x18,0x80,0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x80,0xE0,0x1F,0x00,0x00,0x00,0x00}, // 0x9A -{0x00,0x00,0xE8,0x01,0x10,0x02,0x28,0x04,0xC8,0x04,0x08,0x05,0x10,0x02,0xE0,0x05,0x00,0x00,0x00,0x00}, // 0x9B -{0x00,0x00,0x00,0x00,0x08,0x00,0x18,0x02,0xE8,0x3F,0x08,0x42,0x08,0x42,0x08,0x40,0x00,0x00,0x00,0x00}, // 0x9C -{0x00,0x00,0xE8,0x07,0x30,0x08,0x68,0x10,0x88,0x10,0x08,0x11,0x08,0x16,0x10,0x0C,0xE0,0x17,0x00,0x00}, // 0x9D -{0x00,0x00,0x08,0x04,0x10,0x02,0x20,0x01,0xC0,0x00,0xC0,0x00,0x20,0x01,0x10,0x02,0x08,0x04,0x00,0x00}, // 0x9E -{0x00,0x00,0x01,0x00,0x01,0x04,0x01,0x04,0xFE,0x7F,0x00,0x84,0x00,0x84,0x00,0x80,0x00,0x00,0x00,0x00}, // 0x9F -{0x00,0x00,0x30,0x00,0x48,0x04,0x88,0x04,0x88,0x24,0x90,0x44,0xF8,0x03,0x08,0x00,0x00,0x00,0x00,0x00}, // 0xA0 -{0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0xF8,0x27,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xA1 -{0x00,0x00,0xE0,0x01,0x10,0x02,0x08,0x04,0x08,0x24,0x08,0x44,0x10,0x02,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0xA2 -{0x00,0x00,0xF0,0x07,0x08,0x00,0x08,0x00,0x08,0x20,0x10,0x40,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xA3 -{0x00,0x00,0xF8,0x07,0x00,0x23,0x00,0x42,0x00,0x24,0x00,0x24,0x00,0x44,0xF8,0x03,0x00,0x00,0x00,0x00}, // 0xA4 -{0x00,0x00,0xF8,0x1F,0x00,0x48,0x00,0x86,0x80,0xC1,0x60,0x40,0x10,0x80,0xF8,0x1F,0x00,0x00,0x00,0x00}, // 0xA5 -{0x00,0x00,0x00,0x00,0x00,0x4C,0x00,0x52,0x00,0x52,0x00,0x52,0x00,0x3E,0x00,0x02,0x00,0x00,0x00,0x00}, // 0xA6 -{0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x3C,0x00,0x00,0x00,0x00}, // 0xA7 -{0x00,0x00,0x0E,0x00,0x13,0x00,0x11,0x00,0x21,0x00,0xC1,0x06,0x01,0x00,0x07,0x00,0x00,0x00,0x00,0x00}, // 0xA8 -{0x00,0x00,0x00,0x1C,0x00,0x22,0x00,0x5D,0x00,0x55,0x00,0x5D,0x00,0x22,0x00,0x1C,0x00,0x00,0x00,0x00}, // 0xA9 -{0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0xE0,0x01,0x00,0x00}, // 0xAA -{0x08,0x40,0x30,0x7E,0x40,0x00,0x80,0x01,0x00,0x06,0x00,0x08,0x08,0x31,0x38,0x41,0x28,0x01,0xC8,0x00}, // 0xAB -{0x08,0x40,0x30,0x7E,0x40,0x00,0x80,0x01,0x00,0x06,0x60,0x08,0xA0,0x30,0x20,0x41,0xF8,0x01,0x20,0x00}, // 0xAC -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xAD -{0x00,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x00,0x00}, // 0xAE -{0x00,0x00,0x10,0x04,0x20,0x02,0x40,0x01,0x80,0x00,0x10,0x04,0x20,0x02,0x40,0x01,0x80,0x00,0x00,0x00}, // 0xAF -{0x36,0xDB,0x36,0xDB,0x00,0x00,0x36,0xDB,0x36,0xDB,0x00,0x00,0x36,0xDB,0x36,0xDB,0x00,0x00,0x00,0x00}, // 0xB0 -{0xDB,0x36,0xDB,0x36,0x36,0xDB,0xFF,0xFF,0xDB,0x36,0x36,0xDB,0xFF,0xFF,0xDB,0x36,0x36,0xDB,0x36,0xDB}, // 0xB1 -{0xFF,0xFF,0xFF,0xFF,0x36,0xDB,0xFF,0xFF,0xFF,0xFF,0x36,0xDB,0xFF,0xFF,0xFF,0xFF,0x36,0xDB,0x36,0xDB}, // 0xB2 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xB3 -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xB4 -{0x08,0x00,0x70,0x00,0xC0,0x01,0x40,0x0E,0x40,0x58,0x40,0x8C,0x40,0x03,0xC0,0x00,0x30,0x00,0x08,0x00}, // 0xB5 -{0x08,0x00,0x70,0x00,0xC0,0x01,0x40,0x4E,0x40,0x98,0x40,0x8C,0x40,0x43,0xC0,0x00,0x30,0x00,0x08,0x00}, // 0xB6 -{0x08,0x00,0x70,0x00,0xC0,0x01,0x40,0x8E,0x40,0x58,0x40,0x0C,0x40,0x03,0xC0,0x00,0x30,0x00,0x08,0x00}, // 0xB7 -{0xC0,0x0F,0x30,0x30,0x98,0x67,0xC8,0x4C,0x48,0x48,0x48,0x48,0x58,0x68,0x30,0x30,0xC0,0x0F,0x00,0x00}, // 0xB8 -{0x40,0x01,0x40,0x01,0x40,0x01,0x7F,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xB9 -{0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xBA -{0x40,0x01,0x40,0x01,0x40,0x01,0x7F,0x01,0x00,0x01,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xBB -{0x40,0x01,0x40,0x01,0x40,0x01,0x40,0xFF,0x40,0x00,0xC0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xBC -{0x00,0x00,0xC0,0x0F,0x20,0x10,0x30,0x20,0x10,0x20,0xF8,0x7F,0x10,0x20,0x10,0x20,0x00,0x00,0x00,0x00}, // 0xBD -{0x00,0x40,0x00,0x20,0x20,0x19,0x20,0x05,0xF8,0x03,0x20,0x05,0x20,0x09,0x00,0x10,0x00,0x20,0x00,0x40}, // 0xBE -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xBF -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xC0 -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0xFF,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xC1 -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xC2 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xC3 -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xC4 -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0xFF,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xC5 -{0x00,0x00,0x30,0x00,0x48,0x24,0x88,0x44,0x88,0x24,0x90,0x24,0xF8,0x43,0x08,0x00,0x00,0x00,0x00,0x00}, // 0xC6 -{0x08,0x00,0x70,0x00,0xC0,0x41,0x40,0x8E,0x40,0xD8,0x40,0x4C,0x40,0x83,0xC0,0x00,0x30,0x00,0x08,0x00}, // 0xC7 -{0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x40,0x00,0x40,0xFF,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xC8 -{0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x01,0x7F,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xC9 -{0x40,0x01,0x40,0x01,0x40,0x01,0x40,0xFF,0x40,0x00,0x40,0xFF,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xCA -{0x40,0x01,0x40,0x01,0x40,0x01,0x7F,0x01,0x00,0x01,0x7F,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xCB -{0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFF,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xCC -{0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xCD -{0x40,0x01,0x40,0x01,0x40,0x01,0x7F,0xFF,0x00,0x00,0x7F,0xFF,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01}, // 0xCE -{0x00,0x00,0x20,0x10,0xC0,0x0F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0xC0,0x0F,0x20,0x10,0x00,0x00}, // 0xCF -{0x00,0x00,0xE0,0x41,0x10,0x52,0x08,0x74,0x08,0x24,0x08,0x54,0x10,0x0E,0xE0,0x03,0x00,0x00,0x00,0x00}, // 0xD0 -{0x00,0x01,0xF8,0x1F,0x08,0x11,0x08,0x11,0x08,0x10,0x08,0x10,0x10,0x08,0xE0,0x07,0x00,0x00,0x00,0x00}, // 0xD1 -{0x00,0x00,0xF8,0x1F,0x88,0x10,0x88,0x50,0x88,0x90,0x88,0x90,0x88,0x50,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xD2 -{0x00,0x00,0xF8,0x1F,0x88,0x90,0x88,0x10,0x88,0x10,0x88,0x10,0x88,0x90,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xD3 -{0x00,0x00,0xF8,0x1F,0x88,0x10,0x88,0x10,0x88,0x90,0x88,0x50,0x88,0x10,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xD4 -{0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xD5 -{0x00,0x00,0x08,0x10,0x08,0x10,0x08,0x10,0xF8,0x5F,0x08,0x90,0x08,0x10,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xD6 -{0x00,0x00,0x08,0x10,0x08,0x10,0x08,0x50,0xF8,0x9F,0x08,0x90,0x08,0x50,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xD7 -{0x00,0x00,0x08,0x10,0x08,0x90,0x08,0x10,0xF8,0x1F,0x08,0x10,0x08,0x90,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xD8 -{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xD9 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00}, // 0xDA -{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, // 0xDB -{0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00}, // 0xDC -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xDD -{0x00,0x00,0x08,0x10,0x08,0x10,0x08,0x90,0xF8,0x5F,0x08,0x10,0x08,0x10,0x08,0x10,0x00,0x00,0x00,0x00}, // 0xDE -{0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF}, // 0xDF -{0x00,0x00,0xE0,0x07,0x10,0x08,0x08,0x10,0x08,0x50,0x08,0x90,0x08,0x10,0x10,0x08,0xE0,0x07,0x00,0x00}, // 0xE0 -{0x00,0x00,0xF8,0x3F,0x00,0x40,0x00,0x40,0x08,0x47,0x88,0x38,0x48,0x00,0x30,0x00,0x00,0x00,0x00,0x00}, // 0xE1 -{0x00,0x00,0xE0,0x07,0x10,0x08,0x08,0x50,0x08,0x90,0x08,0x90,0x08,0x50,0x10,0x08,0xE0,0x07,0x00,0x00}, // 0xE2 -{0x00,0x00,0xE0,0x07,0x10,0x08,0x08,0x90,0x08,0x50,0x08,0x10,0x08,0x10,0x10,0x08,0xE0,0x07,0x00,0x00}, // 0xE3 -{0x00,0x00,0xE0,0x01,0x10,0x22,0x08,0x44,0x08,0x24,0x08,0x24,0x10,0x42,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0xE4 -{0x00,0x00,0xE0,0x07,0x10,0x48,0x08,0x90,0x08,0xD0,0x08,0x50,0x08,0x90,0x10,0x08,0xE0,0x07,0x00,0x00}, // 0xE5 -{0x00,0x00,0xFF,0x07,0x10,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0xF8,0x07,0x00,0x00,0x00,0x00}, // 0xE6 -{0x00,0x00,0xFF,0x7F,0x10,0x02,0x08,0x04,0x08,0x04,0x08,0x04,0x10,0x06,0xE0,0x01,0x00,0x00,0x00,0x00}, // 0xE7 -{0x00,0x00,0xF8,0x1F,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x40,0x04,0x80,0x03,0x00,0x00,0x00,0x00}, // 0xE8 -{0x00,0x00,0xE0,0x1F,0x18,0x00,0x08,0x00,0x08,0x40,0x08,0x80,0x10,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00}, // 0xE9 -{0x00,0x00,0xE0,0x1F,0x18,0x00,0x08,0x40,0x08,0x80,0x08,0x80,0x10,0x40,0xE0,0x1F,0x00,0x00,0x00,0x00}, // 0xEA -{0x00,0x00,0xE0,0x1F,0x18,0x00,0x08,0x80,0x08,0x40,0x08,0x00,0x10,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00}, // 0xEB -{0x01,0x04,0x01,0x03,0xC1,0x00,0x62,0x00,0x1C,0x20,0x18,0x40,0x60,0x00,0x80,0x00,0x00,0x03,0x00,0x04}, // 0xEC -{0x00,0x10,0x00,0x08,0x00,0x06,0x00,0x01,0xF8,0x40,0x00,0x81,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10}, // 0xED -{0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80}, // 0xEE -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xEF -{0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00}, // 0xF0 -{0x00,0x00,0x08,0x01,0x08,0x01,0x08,0x01,0x08,0x01,0xC8,0x07,0x08,0x01,0x08,0x01,0x08,0x01,0x00,0x00}, // 0xF1 -{0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00}, // 0xF2 -{0x08,0x42,0x10,0x52,0x20,0x5A,0xC0,0x6C,0x00,0x01,0x60,0x02,0xA0,0x0C,0x20,0x11,0xF8,0x21,0x20,0x40}, // 0xF3 -{0x00,0x00,0x00,0x38,0x00,0x7C,0x00,0x7E,0xFE,0x7F,0x00,0x40,0x00,0x40,0xFE,0x7F,0x00,0x00,0x00,0x00}, // 0xF4 -{0x00,0x00,0x00,0x00,0x86,0x3B,0xC2,0x4C,0x42,0x44,0x62,0x46,0x32,0x42,0xDC,0x41,0x00,0x00,0x00,0x00}, // 0xF5 -{0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x58,0x06,0x58,0x06,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00}, // 0xF6 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x05,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xF7 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x48,0x00,0x48,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xF8 -{0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xF9 -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xFA -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xFB -{0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x52,0x00,0x52,0x00,0x52,0x00,0x6C,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xFC -{0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x46,0x00,0x4A,0x00,0x4A,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xFD -{0x00,0x00,0xF8,0x07,0xF8,0x07,0xF8,0x07,0xF8,0x07,0xF8,0x07,0xF8,0x07,0xF8,0x07,0xF8,0x07,0x00,0x00}, // 0xFE -{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} // 0xFF -}; \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.cpp old mode 100755 new mode 100644 similarity index 86% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.cpp index 53be5514..04a2d21a --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.cpp @@ -1,33 +1,46 @@ -#include "main.h" +// #include "main.h" #include #include #include +#include +#include "epd_interface.h" + +extern "C" { + +#include "main.h" #include "comms.h" -#include "core_cm3.h" -#include "eeprom.h" -#include "epd.h" -#include "gpio.h" -#include "mz100.h" -#include "mz100_aon_ram.h" -#include "mz100_clock.h" -#include "mz100_flash.h" -#include "mz100_gpio.h" -#include "mz100_pinmux.h" -#include "mz100_pmu.h" -#include "mz100_sleep.h" -#include "mz100_ssp.h" -#include "mz100_uart.h" +#include "mz100/core_cm3.h" +#include "mz100/eeprom.h" + +#include "mz100/gpio.h" +#include "mz100/mz100.h" +#include "mz100/mz100_aon_ram.h" +#include "mz100/mz100_clock.h" +#include "mz100/mz100_flash.h" +#include "mz100/mz100_gpio.h" +#include "mz100/mz100_pinmux.h" +#include "mz100/mz100_pmu.h" +#include "mz100/mz100_sleep.h" +#include "mz100/mz100_ssp.h" +#include "mz100/mz100_uart.h" #include "powermgt.h" -#include "printf.h" +#include "mz100/printf.h" #include "proto.h" #include "settings.h" #include "syncedproto.h" -#include "timer.h" -#include "userinterface.h" -#include "util.h" +#include "mz100/timer.h" + +#include "mz100/util.h" #include "zigbee.h" +extern void dump(const uint8_t *a, const uint16_t l); +} + +#include "compression.h" +#include "userinterface.h" + +#include "oepl_fs.h" #define SW_VER_CURRENT (0x0000011300000000ull) // top 16 bits are off limits, xxxx.VV.tt.vvvv.mmmm means version V.t.v.m #define SW_DEFAULT_MAC (0x0000000000000014ull) @@ -51,8 +64,8 @@ bool protectedFlashWrite(uint32_t address, uint8_t *buffer, uint32_t num) { while (attempt--) { qspiEraseRange(address, num); delay(50); - FLASH_Write(false, address, buffer, num); - FLASH_Read(0, address, buf2, num); + FLASH_Write((FLASH_ProgramMode_Type) false, address, buffer, num); + FLASH_Read((FLASH_ReadMode_Type)0, address, buf2, num); if (memcmp(buffer, buf2, num) == 0) { printf("Flash block at %06X written successfully\n", address); free(buf2); @@ -66,14 +79,14 @@ bool protectedFlashWrite(uint32_t address, uint8_t *buffer, uint32_t num) { } static void prvGetSelfMac(void) { - FLASH_Read(0, EEPROM_MAC_INFO_START, mSelfMac, 8); + FLASH_Read((FLASH_ReadMode_Type)0, EEPROM_MAC_INFO_START, mSelfMac, 8); if ((((uint32_t *)mSelfMac)[0] | ((uint32_t *)mSelfMac)[1]) == 0 || (((uint32_t *)mSelfMac)[0] & ((uint32_t *)mSelfMac)[1]) == 0xffffffff) { // fastest way to check for all ones or all zeroes printf("mac unknown\r\n"); // Write a blank mac to have something to work with. memcpy(&mSelfMac, (uint8_t *)&default_mac, 8); - FLASH_Write(0, EEPROM_MAC_INFO_START, mSelfMac, 8); + FLASH_Write((FLASH_ProgramMode_Type)0, EEPROM_MAC_INFO_START, mSelfMac, 8); // sleep_with_with_wakeup(0); } } @@ -210,18 +223,18 @@ void setupUART() { UART_CFG_Type uartcfg; uartcfg.baudRate = 115200; uartcfg.dataBits = UART_DATABITS_8; - uartcfg.stopBits = 1; + uartcfg.stopBits = (UART_StopBits_Type)1; uartcfg.parity = UART_PARITY_NONE; uartcfg.autoFlowControl = DISABLE; - UART_Init(1, &uartcfg); + UART_Init((UART_ID_Type)1, &uartcfg); UART_FIFO_Type uartFifo; - uartFifo.FIFO_ResetRx = 1; - uartFifo.FIFO_ResetTx = 1; - uartFifo.FIFO_Function = 1; - uartFifo.FIFO_RcvrTrigger = 2; - uartFifo.FIFO_TxEmptyTrigger = 3; - UART_FIFOConfig(1, &uartFifo); + uartFifo.FIFO_ResetRx = (FunctionalState)1; + uartFifo.FIFO_ResetTx = (FunctionalState)1; + uartFifo.FIFO_Function = (FunctionalState)1; + uartFifo.FIFO_RcvrTrigger = (UART_RxFIFOLevel_Type)2; + uartFifo.FIFO_TxEmptyTrigger = (UART_TxFIFOLevel_Type)3; + UART_FIFOConfig((UART_ID_Type)1, &uartFifo); // UART 1 DEBUG OUT } @@ -242,9 +255,9 @@ void setupGPIO() { // NFC POWER Should be on if NFC is wanted to be used GPIO_PinOutputModeConfig(NFC_POWER, PIN_OUTPUT_MODE_NORMAL_FUNCTION); GPIO_PinModeConfig(NFC_POWER, PINMODE_DEFAULT); - GPIO_PinMuxFun(NFC_POWER, 0); + GPIO_PinMuxFun(NFC_POWER, (GPIO_PinMuxFunc_Type)0); GPIO_SetPinDir(NFC_POWER, GPIO_OUTPUT); - GPIO_WritePinOutput(NFC_POWER, 1); // Better power NFC up so IRQ will work unpowered later + GPIO_WritePinOutput(NFC_POWER, (GPIO_IO_Type)1); // Better power NFC up so IRQ will work unpowered later //** GPIOS if (!(~(*(volatile unsigned int *)0x4A080000) << 30)) { NVIC_EnableIRQ(ExtPin5_IRQn); @@ -269,6 +282,7 @@ void setupCLKCalib() { void TagAssociated() { // associated struct AvailDataInfo *avail; + printf("longDataReqCounter = %d\n", longDataReqCounter); // Is there any reason why we should do a long (full) get data request (including reason, status)? if ((longDataReqCounter > LONG_DATAREQ_INTERVAL) || wakeUpReason != WAKEUP_REASON_TIMED) { // check if we should do a voltage measurement (those are pretty expensive) @@ -298,6 +312,7 @@ void TagAssociated() { } powerUp(INIT_RADIO); + printf("full request\n"); avail = getAvailDataInfo(); powerDown(INIT_RADIO); @@ -416,29 +431,31 @@ int main(void) { setupGPIO(); setupCLKCalib(); setupUART(); + // fs = new OEPLFs(); printf("Rst reason: %i\r\n", PMU_GetLastResetCause()); printf("AON is not valid!\n"); setupRTC(); clearAonRam(); - + prvGetSelfMac(); showSplashScreen(); + delay(10000); currentChannel = 0; zigbeeCalibData.isValid = false; wakeUpReason = WAKEUP_REASON_FIRSTBOOT; - prvGetSelfMac(); initializeProto(); printf("Erz data\r\n"); initPowerSaving(INTERVAL_BASE); loadDefaultSettings(); doVoltageReading(); - qspiEraseRange(EEPROM_SETTINGS_AREA_START, EEPROM_SETTINGS_AREA_LEN); + // qspiEraseRange(EEPROM_SETTINGS_AREA_START, EEPROM_SETTINGS_AREA_LEN); sprintf(macStr, "(" MACFMT ")", MACCVT(mSelfMac)); currentChannel = showChannelSelect(); WDT_RestartCounter(); if (currentChannel) { printf("AP Found\r\n"); + delay(10000); showAPFound(); sprintf(macStr1, "OpenEPaperLink Ch: %i", currentChannel); timerDelay(TIMER_TICKS_PER_MSEC * 1000); @@ -449,17 +466,20 @@ int main(void) { sleep_with_with_wakeup(120000UL); currentTagMode = TAG_MODE_CHANSEARCH; } + powerUp(INIT_UART); } else { - // setupWDT(); + setupWDT(); // turn me off setupGPIO(); - // setupCLKCalib(); - // setupUART(); - // setupRTC(); + setupCLKCalib(); // turn me off + // setupUART();// turn me off + // setupRTC();// turn me off memset(curBlock.requestedParts, 0x00, BLOCK_REQ_PARTS_BYTES); + powerUp(INIT_UART); + + // fs = new OEPLFs(); } - powerUp(INIT_UART); while (1) { wdt10s(); switch (currentTagMode) { @@ -475,7 +495,7 @@ int main(void) { } int _write(int file, char *ptr, int len) { - UART_SendBytes(1, ptr, len); + UART_SendBytes((UART_ID_Type)1, ptr, len); return len; } @@ -492,18 +512,24 @@ void applyUpdate() { // apparently, the flash process is more reliable if we do these two first setupCLKCalib(); setupRTC(); - + showApplyUpdate(); + + printf("Applying update\r\n"); + qspiEraseRange(EEPROM_OS_START, EEPROM_OS_LEN); + size = EEPROM_OS_LEN; for (ofst = 0; ofst < size; ofst += now) { now = size - ofst; if (now > pieceSz) now = pieceSz; printf("Cpy 0x%06x + 0x%04x to 0x%06x\r\n", EEPROM_UPDATE_START + ofst, now, EEPROM_OS_START + ofst); - FLASH_Read(0, EEPROM_UPDATE_START + ofst, chunkStore, now); + FLASH_Read((FLASH_ReadMode_Type)0, EEPROM_UPDATE_START + ofst, chunkStore, now); protectedFlashWrite(EEPROM_OS_START + ofst, chunkStore, now); WDT_RestartCounter(); } - NVIC_SystemReset(); + printf("Resetting!\n"); + delay(1000); + sleep_with_with_wakeup(1000); } diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.h index 91e07da8..a1e3f4b3 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/main.h @@ -3,32 +3,31 @@ #include #include #include -#include "core_cm3.h" +//#include "core_cm3.h" #define NO_GUI 0 // Set this to one for faster developing, not Refresh on the E-Paper while showing Full screen messages -#define TEST_PIN 3 -#define RF_WAKEUP_PIN 5 +#define TEST_PIN GPIO_3 +#define RF_WAKEUP_PIN GPIO_5 -#define UART_TX 4 -#define UART_RX 6 +#define UART_TX GPIO_4 +#define UART_RX GPIO_6 -#define NFC_POWER 1 -#define NFC_IRQ 7 -#define NFC_SCL 28 -#define NFC_SDA 29 +#define NFC_POWER GPIO_1 +#define NFC_IRQ GPIO_7 +#define NFC_SCL GPIO_28 +#define NFC_SDA GPIO_29 -#define EPD_BS 2 -#define EPD_MOSI 12 -#define EPD_MISO 13 -#define EPD_CLK 22 -#define EPD_CS 23 -#define EPD_RESET 24 -#define EPD_DC 26 -#define EPD_BUSY 27 -#define EPD_HLT_CTRL 25 +#define EPD_BS GPIO_2 +#define EPD_MOSI GPIO_12 +#define EPD_MISO GPIO_13 +#define EPD_CLK GPIO_22 +#define EPD_CS GPIO_23 +#define EPD_RESET GPIO_24 +#define EPD_DC GPIO_26 +#define EPD_BUSY GPIO_27 +#define EPD_HLT_CTRL GPIO_25 #define RADIO_FIRST_CHANNEL (11) //2.4-GHz channels start at 11 - -void applyUpdate(); \ No newline at end of file +void applyUpdate(); diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.c new file mode 100644 index 00000000..f79a427b --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.c @@ -0,0 +1,223 @@ +/* + * Derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm + * and modified slightly to be functionally identical but condensed into control structures. + */ + +#include "md5.h" + +/* + * Constants defined by the MD5 algorithm + */ +#define A 0x67452301 +#define B 0xefcdab89 +#define C 0x98badcfe +#define D 0x10325476 + +static uint32_t S[] = {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, + 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, + 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, + 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}; + +static uint32_t K[] = {0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, + 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, + 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, + 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, + 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, + 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8, + 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, + 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a, + 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, + 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, + 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, + 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, + 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, + 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1, + 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, + 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391}; + +/* + * Padding used to make the size (in bits) of the input congruent to 448 mod 512 + */ +static uint8_t PADDING[] = {0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + +/* + * Bit-manipulation functions defined by the MD5 algorithm + */ +#define F(X, Y, Z) ((X & Y) | (~X & Z)) +#define G(X, Y, Z) ((X & Z) | (Y & ~Z)) +#define H(X, Y, Z) (X ^ Y ^ Z) +#define I(X, Y, Z) (Y ^ (X | ~Z)) + +/* + * Rotates a 32-bit word left by n bits + */ +uint32_t rotateLeft(uint32_t x, uint32_t n){ + return (x << n) | (x >> (32 - n)); +} + + +/* + * Initialize a context + */ +void md5Init(MD5Context *ctx){ + ctx->size = (uint64_t)0; + + ctx->buffer[0] = (uint32_t)A; + ctx->buffer[1] = (uint32_t)B; + ctx->buffer[2] = (uint32_t)C; + ctx->buffer[3] = (uint32_t)D; +} + +/* + * Add some amount of input to the context + * + * If the input fills out a block of 512 bits, apply the algorithm (md5Step) + * and save the result in the buffer. Also updates the overall size. + */ +void md5Update(MD5Context *ctx, uint8_t *input_buffer, size_t input_len){ + uint32_t input[16]; + unsigned int offset = ctx->size % 64; + ctx->size += (uint64_t)input_len; + + // Copy each byte in input_buffer into the next space in our context input + for(unsigned int i = 0; i < input_len; ++i){ + ctx->input[offset++] = (uint8_t)*(input_buffer + i); + + // If we've filled our context input, copy it into our local array input + // then reset the offset to 0 and fill in a new buffer. + // Every time we fill out a chunk, we run it through the algorithm + // to enable some back and forth between cpu and i/o + if(offset % 64 == 0){ + for(unsigned int j = 0; j < 16; ++j){ + // Convert to little-endian + // The local variable `input` our 512-bit chunk separated into 32-bit words + // we can use in calculations + input[j] = (uint32_t)(ctx->input[(j * 4) + 3]) << 24 | + (uint32_t)(ctx->input[(j * 4) + 2]) << 16 | + (uint32_t)(ctx->input[(j * 4) + 1]) << 8 | + (uint32_t)(ctx->input[(j * 4)]); + } + md5Step(ctx->buffer, input); + offset = 0; + } + } +} + +/* + * Pad the current input to get to 448 bytes, append the size in bits to the very end, + * and save the result of the final iteration into digest. + */ +void md5Finalize(MD5Context *ctx){ + uint32_t input[16]; + unsigned int offset = ctx->size % 64; + unsigned int padding_length = offset < 56 ? 56 - offset : (56 + 64) - offset; + + // Fill in the padding and undo the changes to size that resulted from the update + md5Update(ctx, PADDING, padding_length); + ctx->size -= (uint64_t)padding_length; + + // Do a final update (internal to this function) + // Last two 32-bit words are the two halves of the size (converted from bytes to bits) + for(unsigned int j = 0; j < 14; ++j){ + input[j] = (uint32_t)(ctx->input[(j * 4) + 3]) << 24 | + (uint32_t)(ctx->input[(j * 4) + 2]) << 16 | + (uint32_t)(ctx->input[(j * 4) + 1]) << 8 | + (uint32_t)(ctx->input[(j * 4)]); + } + input[14] = (uint32_t)(ctx->size * 8); + input[15] = (uint32_t)((ctx->size * 8) >> 32); + + md5Step(ctx->buffer, input); + + // Move the result into digest (convert from little-endian) + for(unsigned int i = 0; i < 4; ++i){ + ctx->digest[(i * 4) + 0] = (uint8_t)((ctx->buffer[i] & 0x000000FF)); + ctx->digest[(i * 4) + 1] = (uint8_t)((ctx->buffer[i] & 0x0000FF00) >> 8); + ctx->digest[(i * 4) + 2] = (uint8_t)((ctx->buffer[i] & 0x00FF0000) >> 16); + ctx->digest[(i * 4) + 3] = (uint8_t)((ctx->buffer[i] & 0xFF000000) >> 24); + } +} + +/* + * Step on 512 bits of input with the main MD5 algorithm. + */ +void md5Step(uint32_t *buffer, uint32_t *input){ + uint32_t AA = buffer[0]; + uint32_t BB = buffer[1]; + uint32_t CC = buffer[2]; + uint32_t DD = buffer[3]; + + uint32_t E; + + unsigned int j; + + for(unsigned int i = 0; i < 64; ++i){ + switch(i / 16){ + case 0: + E = F(BB, CC, DD); + j = i; + break; + case 1: + E = G(BB, CC, DD); + j = ((i * 5) + 1) % 16; + break; + case 2: + E = H(BB, CC, DD); + j = ((i * 3) + 5) % 16; + break; + default: + E = I(BB, CC, DD); + j = (i * 7) % 16; + break; + } + + uint32_t temp = DD; + DD = CC; + CC = BB; + BB = BB + rotateLeft(AA + E + K[i] + input[j], S[i]); + AA = temp; + } + + buffer[0] += AA; + buffer[1] += BB; + buffer[2] += CC; + buffer[3] += DD; +} + +/* + * Functions that run the algorithm on the provided input and put the digest into result. + * result should be able to store 16 bytes. + */ +void md5String(char *input, uint8_t *result){ + MD5Context ctx; + md5Init(&ctx); + md5Update(&ctx, (uint8_t *)input, strlen(input)); + md5Finalize(&ctx); + + memcpy(result, ctx.digest, 16); +} + +void md5File(FILE *file, uint8_t *result){ + char *input_buffer = malloc(1024); + size_t input_size = 0; + + MD5Context ctx; + md5Init(&ctx); + + while((input_size = fread(input_buffer, 1, 1024, file)) > 0){ + md5Update(&ctx, (uint8_t *)input_buffer, input_size); + } + + md5Finalize(&ctx); + + free(input_buffer); + + memcpy(result, ctx.digest, 16); +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.h new file mode 100644 index 00000000..ad18e931 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/md5.h @@ -0,0 +1,21 @@ +#ifndef MD5_H +#define MD5_H + +#include +#include +#include +#include + +typedef struct{ + uint64_t size; // Size of input in bytes + uint32_t buffer[4]; // Current accumulation of hash + uint8_t input[64]; // Input to be used in the next step + uint8_t digest[16]; // Result of algorithm +}MD5Context; + +void md5Init(MD5Context *ctx); +void md5Update(MD5Context *ctx, uint8_t *input, size_t input_len); +void md5Finalize(MD5Context *ctx); +void md5Step(uint32_t *buffer, uint32_t *input); + +#endif \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/img_tbird.bin b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/img_tbird.bin new file mode 100644 index 0000000000000000000000000000000000000000..72798458ea9bab17402c604d734def5304a0049e GIT binary patch literal 7124 zcmZ{JZ)hu7cBgD?ur&m1A@%Nl2w0jDSk>FfhL8;*U-X2WRaF?UYwMP0RO@FF639qX z7FpJIc*d6Bi<{Vj1-rI1ELj%(j5KTA>XNceS5=UZH4GWZOjuZkDT%07t^{_VN2083 zGm^Tck#3IsI-7jSH3rqyt>5``&-tBmuc8YddkkCBHT2I9uE=AI5o=3Ev-$L7OBy`> z(@`kM3?+wHJ}1X-5+w<~(-BHxUHt!`3@nIqc|^+$ii9|ZW{ZAoSQ2`N^G%1|-ujxln4AMX4;C{tiqJ)x<1lz7zscXRtW5Jh{yvGV zFBbt6%^-%wH=KMG34(7DMK20c%!|+uyvwTatlxYs&4OaMAoDo}#gzhP!oIgFid;|> z>g~3k(vkj*$YERrDI8)EpTKNjostWDG0gbb7`zI)eQ5+Pawx(fx=>8~m+*RcyC5eR z@AfrS3Pz|mI~o$6_klxUnpKJshVg9{6LR4?Co^H{t(TRTlnXiHO?~O$JOggylphE_M^=Vi#|pO@&Pbca(OR2s5`&<}X>6iBQ+MCEtn?4_)~= z|1%y#LBtjV0lFCGs1n62qF^|*l-LS#SMgZrIv!iOn+E{wzFdmX1@N(Q#l_`9X;Hbp z;zHNT#&%@g&jushIxJJ*AB9l@-_Qw;zoHX9mXEO%b;-tZAI1`|7yL`qCFsXtj^Qzj zLhQ}^;Sm2i%mhP`;5rjtSc`A0`*<9C%Y^6p6uco=FUOUuc%l$W+_S+z zBK~G!)4y^3Y;S}`%%*%_++o=mFEg7lDirozhL#un=b_-{{oUH{&-fi+r2$;_~XsV$^qef9J(se#QGXy0wiMj+0UNUj;%8E3@IC z=Ter}w&UD=J{nqFk9uwwwxWLe8t^b?7!ER&DlpWwg1LAi_hE2pX(N!hzofDEeuI9! z#=eEP3nS`^<`c57AhWUH>bftwq3m$E+r`DO$8);q!WD-6m=vVF% z7qqgtva;bVeba++VEY^|uH|BEi7WAPDEW4cDl(LE7hCu3L}R6`Sk5|r_?c%Rx`Y<^ zTrk2HX%_N};<3C=UB}k_h4>1+wzRSNRZ&9~oeyy5IP`*z7lDm-s7pDwRAL#gl8gC5 zcdyyEfvxunLf1;Yj;`vYh^11mr>CU&@`AhjLa*}Pg?r#JlPYpM^MN1f9Ex5{5$ zC<)jNxxj?O-Uz2$d6kQ$?IIh^-68fDOFsPH((0$LV=M8{Vu<6ytgmn_zl|qi)NL%n zU97zhY$R501f>*3#?buM=AC?9S^;|_kP-<#Br7+8%?pYv(orDF#BYWaD3X& z7RAL&)WyxKzf``z^(%p0SNPns;xoZa7VDp9;! z+wI0K*VwDgf>H_wnRtW=MSPdBr9_-%f~&zpr}@3&@8*}2R_F9K6ytfBWtS91iNvXV zJOP0%mx7d1$d`M6`x^`YW|MMFwMT}W2%#NHQEnoe+{I=-F3W`?RSLzg5_wJi9S{9yF9c4>R>^l4ODj1*OXR@J z4`XzK@%dyQpi%=PO3i=4U}Zu!8SaiECVM0NnioTjEb+g}ndPrxKO?-ZZVj_3Xb z`FwSq1ChXyY<`p3@P}>|!l7bl2kL$N+oRdfd>gs-;KqNie|*QTFf^x>r~>yPEx%r2 z`E@=IoDQ0Zd*a8J7aaEIGozobQ$@bSvWm%rmj#{9#l)i_4hbotwKhC|GNBT)aez77WFoI?Hw+q2IySQ-$L`_q!Y$d)3IArwpF%eA%pTo`CrN7zuY_EP^W7i1D|ew&Q85F}+W zoG7Bub#yCs?g=JwTN5P-Tawu$f3)ML&Lh7xefXpR9fyJul!anoZ6(ZJ&??e3-LUtJ zc0;u2AJD-i)tNyH!UNN@5h~|<^CIY>KVHPRsSB!*d=2sicNO$

Qy= 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 literal 0 HcmV?d00001 diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl new file mode 100644 index 0000000000000000000000000000000000000000..fb5ef57e2d48f89623ddce8ff2d9f44d6037e1a3 GIT binary patch literal 134320 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 literal 0 HcmV?d00001 diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.cpp new file mode 100644 index 00000000..b6cfd50d --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.cpp @@ -0,0 +1,253 @@ +#include +#include +#include +//#include +#include +#include +#include + +#pragma pack(1) + + +/* + This prepares a FS binary for use with the 88mz100-based OEPL Tag Firmware + Jelmer Bruijn 2024 +*/ + +#define PROGMEM +#define WINDOW_SIZE 12 // 4096 bytes +#define FILENAME_LENGTH 32 + + +typedef struct { + uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap + uint8_t width; ///< Bitmap dimensions in pixels + uint8_t height; ///< Bitmap dimensions in pixels + uint8_t xAdvance; ///< Distance to advance cursor (x axis) + int8_t xOffset; ///< X dist from cursor pos to UL corner + int8_t yOffset; ///< Y dist from cursor pos to UL corner +} GFXglyph; + +/// Data stored for FONT AS A WHOLE +typedef struct { + uint8_t *bitmap; ///< Glyph bitmaps, concatenated + GFXglyph *glyph; ///< Glyph array + uint16_t first; ///< ASCII extents (first char) + uint16_t last; ///< ASCII extents (last char) + uint8_t yAdvance; ///< Newline distance (y axis) +} GFXfont; + + +typedef struct { + uint16_t first; + uint16_t last; + uint8_t yAdvance; + char glyphFile[FILENAME_LENGTH]; + char bitmapFile[FILENAME_LENGTH]; +} GFXFontOEPL; + +typedef struct { + char name[FILENAME_LENGTH]; + uint32_t offset; + uint32_t len; +} OEPLFile; + +std::vector files; +uint8_t* buffer = nullptr; // temporary holds the entire FS +uint32_t curOffset = 0; +char OEPLHeader[12] = "---OEPL_FS!"; +FILE *wptr; + + +void dump(const uint8_t *a, const uint16_t l) { + printf("\n "); +#define ROWS 16 + for (uint8_t c = 0; c < ROWS; c++) { + printf(" %02X", c); + } + printf("\n--------"); + for (uint8_t c = 0; c < ROWS; c++) { + printf("---"); + } + for (uint16_t c = 0; c < l; c++) { + if ((c % ROWS) == 0) { + printf("\n0x%04X | ", c); + } + printf("%02X ", a[c]); + } + printf("\n--------"); + for (uint8_t c = 0; c < ROWS; c++) { + printf("---"); + } + printf("\n"); +} + + +unsigned long doCompress(uint8_t* in, uint32_t in_len, uint8_t* out) { + *((uint32_t*)out) = in_len; + z_stream stream; + stream.zalloc = Z_NULL; + stream.zfree = Z_NULL; + stream.opaque = Z_NULL; + stream.avail_in = (uInt)in_len; + stream.next_in = (Bytef*)in; + stream.avail_out = (uInt)(in_len+1337); + stream.next_out = (Bytef*)(out+4); + *((uint32_t*)out) = in_len; + + if (deflateInit2(&stream, Z_BEST_COMPRESSION, Z_DEFLATED, WINDOW_SIZE, 8, Z_DEFAULT_STRATEGY) != Z_OK) { + fprintf(stderr, "Error initializing zlib for compression\n"); + return 1; + } + if (deflate(&stream, Z_FINISH) != Z_STREAM_END) { + fprintf(stderr, "Error compressing data\n"); + deflateEnd(&stream); + return 1; + } + if (deflateEnd(&stream) != Z_OK) { + fprintf(stderr, "Error finalizing compression\n"); + return 1; + } + dump(out, 16); + return stream.total_out+4; +} + + + +void addFile(uint8_t* filedata, uint16_t len, char* filename, bool compress){ + char newfilename[FILENAME_LENGTH]; + if(compress){ + if(strlen(filename)>(FILENAME_LENGTH-3)){ + printf("Filename '%s' is too long\n", filename); + return; + } + uint8_t* tmpbuffer = (uint8_t*)malloc(len + 1337); + unsigned long out_len = doCompress(filedata, len, tmpbuffer); + if(out_len==1){ + printf("Compression of %s failed\n", filename); + return; + } + filedata = tmpbuffer; + uint8_t rounded = (uint8_t)((float)100*out_len/len); + printf("Compressed %s \033[50D\033[40C: %u \033[50D\033[47C -> %lu \033[70D\033[58C(%d%%)\n", filename, len, out_len, rounded); + len = out_len; + uint8_t flen = strlen(filename); + strncpy(newfilename,filename,FILENAME_LENGTH-3); + strcpy(newfilename + flen, ".z"); + filename = newfilename; + } + + + + if(strlen(filename)>(FILENAME_LENGTH-1)){ + printf("Filename '%s' is too long\n", filename); + return; + } + if(!buffer){ + buffer = (uint8_t*)malloc(len); + } else { + buffer = (uint8_t*)realloc((void*)buffer, curOffset + len); + } + memcpy(buffer+curOffset, filedata, len); + if(compress)free(filedata); + OEPLFile* file = new OEPLFile; + strcpy(file->name,filename); + file->offset = curOffset; + file->len = len; + files.push_back(file); + curOffset+=len; +} + +void addFileFromFS(const char* filename, bool compress){ + FILE* file = fopen(filename, "rb"); + + if (file == NULL) { + fprintf(stderr, "Error opening file: %s\n", filename); + return; + } + + fseek(file, 0, SEEK_END); + long fileSize = ftell(file); + rewind(file); + + char* fileContent = (char*)malloc(fileSize); + + if (fileContent == NULL) { + fprintf(stderr, "Error allocating memory for file content\n"); + fclose(file); + return; + } + + size_t bytesRead = fread(fileContent, 1, fileSize, file); + addFile((uint8_t*)fileContent, fileSize, (char*)filename, compress); +} + + +void printFAT(){ + printf("OEPL Filesystem Summary:\n"); + uint16_t tableSize = files.size() * sizeof(OEPLFile); + tableSize += sizeof(OEPLHeader)-1; + fwrite(OEPLHeader,sizeof(OEPLHeader)-1,1,wptr); + uint32_t fssize = 0; + for(OEPLFile* file : files){ + file->offset += tableSize; + fwrite((uint8_t*)file,sizeof(OEPLFile),1,wptr); + printf("file: %s \033[50D\033[37C size=%u \033[50D\033[51C offset=0x%04X\n",file->name, file->len, file->offset); + fssize = file->len + file->offset; + } + printf("Total FS size: %u\n", fssize); +} + +void saveFontData(const GFXfont* font, char* name){ + if(strlen(name)>(FILENAME_LENGTH-7)){ + printf("Font filename '%s' is too long\n", name); + return; + } + GFXFontOEPL fontdata; + fontdata.first = font->first; + fontdata.last = font->last; + fontdata.yAdvance = font->yAdvance; + strcpy(fontdata.glyphFile, name); + strcpy(fontdata.bitmapFile, name); + uint8_t len = strlen(fontdata.glyphFile); + strcpy(fontdata.glyphFile + len, ".glyph"); + strcpy(fontdata.bitmapFile + len, ".bmp"); + addFile((uint8_t*)&fontdata, sizeof(GFXFontOEPL), name, false); + + + uint16_t glyphLen = font->last - font->first; + uint16_t lastOffset = font->glyph[glyphLen].bitmapOffset; + uint16_t lastBitmapSize = font->glyph[glyphLen].width * font->glyph[glyphLen].height; + uint8_t lastBitmapBytes = lastBitmapSize/8; + if(lastBitmapSize%8)lastBitmapBytes++; + uint16_t bitmapSize = lastOffset + lastBitmapBytes; + int16_t glyphSize = (glyphLen + 1) * sizeof(GFXglyph); + + addFile((uint8_t*)font->glyph, glyphSize, fontdata.glyphFile, false); + addFile((uint8_t*)font->bitmap, bitmapSize, fontdata.bitmapFile, false); +} + + + +#include "../../common/fonts/FreeSans9pt7b.h" +#include "../../common/fonts/FreeSansBold18pt7b.h" +#include "../../common/fonts/FreeSansBold24pt7b.h" +#include "../../common/bitmaps.h" + +int main(){ + wptr = fopen("../build/fs.img","wb"); // w for write, b for binary + + /* FONTS */ + saveFontData(&FreeSansBold24pt7b, (char*)"font/FreeSansBold24pt7b"); + saveFontData(&FreeSansBold18pt7b, (char*)"font/FreeSansBold18pt7b"); + saveFontData(&FreeSans9pt7b, (char*)"font/FreeSans9pt7b"); + + /* OTHER STUFF */ + addFile((uint8_t*)sadpanda, sizeof(sadpanda), "img/sadpanda", true); + //addFileFromFS("img_tbird.bin", true); + printFAT(); + fwrite(buffer,curOffset,1,wptr); + fclose(wptr); + + return 0; +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.sh b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.sh new file mode 100644 index 00000000..343a0699 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/mkfs.oepl.sh @@ -0,0 +1,4 @@ +rm mkfs.oepl +g++ mkfs.oepl.cpp -lz -o mkfs.oepl +./mkfs.oepl + diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/testcompress.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/testcompress.cpp new file mode 100644 index 00000000..110ccbd5 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mkfsOEPL/testcompress.cpp @@ -0,0 +1,57 @@ +#include +#include +#include +#include + +int main() { + // Input string to compress + const char* inputString = "This is a sample string to compress and add a gzip header.werugweroiguie;wroigj;eworijg;oewirjg;oeiwrjg;oiewrj;goiewjr;ogiejw;rojig;ewoirjg;oewijrg;oewirj;goeiwj;roiwheg;orihg"; + + // Length of the input string + size_t inputLength = strlen(inputString); + + // Allocate memory for compressed data + size_t compressedBufferSize = compressBound(inputLength) + 18; // Additional space for gzip header + char* compressedBuffer = (char*)malloc(compressedBufferSize); + + // Compression parameters with reduced window size (8 bits) + z_stream stream; + stream.zalloc = Z_NULL; + stream.zfree = Z_NULL; + stream.opaque = Z_NULL; + stream.avail_in = (uInt)inputLength; + stream.next_in = (Bytef*)inputString; + stream.avail_out = (uInt)compressedBufferSize; + stream.next_out = (Bytef*)compressedBuffer; + + // Initialize compression with gzip header and reduced window size (8 bits) + if (deflateInit2(&stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 8, 8, Z_DEFAULT_STRATEGY) != Z_OK) { + fprintf(stderr, "Error initializing zlib for compression\n"); + free(compressedBuffer); + return 1; + } + + // Perform compression + if (deflate(&stream, Z_FINISH) != Z_STREAM_END) { + fprintf(stderr, "Error compressing data\n"); + deflateEnd(&stream); + free(compressedBuffer); + return 1; + } + + // Finalize compression + if (deflateEnd(&stream) != Z_OK) { + fprintf(stderr, "Error finalizing compression\n"); + free(compressedBuffer); + return 1; + } + + // Display results + printf("Original string length: %zu bytes\n", inputLength); + printf("Compressed data length: %lu bytes\n", (unsigned long)stream.total_out); + + // Clean up + free(compressedBuffer); + + return 0; +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/adc_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/adc_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/adc_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/adc_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/aes_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/aes_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/aes_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/aes_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/cauclk_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/cauclk_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/cauclk_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/cauclk_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cm3.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cm3.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cm3.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cm3.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cm3.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cm3.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cm3.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cm3.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cmFunc.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cmFunc.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cmFunc.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cmFunc.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cmInstr.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cmInstr.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/core_cmInstr.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/core_cmInstr.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/eeprom.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/eeprom.h old mode 100755 new mode 100644 similarity index 60% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/eeprom.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/eeprom.h index f048d116..81fbf849 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/eeprom.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/eeprom.h @@ -11,14 +11,14 @@ #define EEPROM_PAGE_SIZE (0x01000UL) #define EEPROM_OS_START (0x00000UL) -#define EEPROM_OS_LEN (0x13FFFUL) //0xE820 of image, rounded up to 4K +#define EEPROM_OS_LEN (0x1FFFFUL) //0xE820 of image, rounded up to 4K -#define EEPROM_IMG_START (0x17000UL) +#define EEPROM_IMG_START (0x20000UL) #define EEPROM_IMG_EACH (0x1F000UL) #define EEPROM_IMG_LEN (EEPROM_IMG_START + 0x13FFFUL) -#define EEPROM_UPDATE_START (0x17000UL) //same header as images -#define EEPROM_UPDATE_LEN (0x13FFFUL) +#define EEPROM_UPDATE_START (0x20000UL) //same header as images +#define EEPROM_UPDATE_LEN (0x1FFFFUL) #define EEPROM_SETTINGS_AREA_START (0x14000UL) #define EEPROM_SETTINGS_AREA_LEN (0x03000UL) @@ -33,16 +33,6 @@ //#define EEPROM_PIECE_SZ (88) -struct EepromImageHeader { //each image space is 0x17000 bytes, we have space for ten of them - uint64_t version; - uint32_t validMarker; - uint32_t size; - uint8_t dataType; - uint32_t id; - - //image data here - //we pre-erase so progress can be calculated by finding the first non-0xff byte -}; - +#include "../../common/eeprom_struct.h" #endif diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio.c similarity index 99% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio.c index 8d1c19cb..53d06e39 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio.c @@ -5,7 +5,7 @@ #include #include #include "core_cm3.h" -#include "main.h" +#include "../main.h" #include "mz100_rtc.h" #include "mz100_wdt.h" #include "mz100_pmu.h" @@ -194,4 +194,4 @@ void do_sleeped_epd_refresh() PMU_ClearWakeupExtpin(PMU_GPIO5_INT); wait_busy_sleep(2000); printf("uDisTime : %d ms\r\n", gSleepRtcCounter); -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpio_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpio_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpt_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpt_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/gpt_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/gpt_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100.ld b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100.ld similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100.ld rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100.ld diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_adc.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_adc.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_adc.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_adc.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_adc.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_adc.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_adc.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_adc.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aes.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aes.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aes.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aes.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aes.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aes.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aes.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aes.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aon_ram.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aon_ram.c similarity index 74% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aon_ram.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aon_ram.c index bdd147ff..378beea1 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aon_ram.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aon_ram.c @@ -11,19 +11,20 @@ bool aonRamValid = false; void clearAonRam() { memset((void *)0x130000, 0, 4096); + //memcpy((void *)(0x128000 - AONSHADOW_SIZE), (uint8_t *)aonShadow, AONSHADOW_SIZE); } bool loadValidateAonRam() { uint32_t testchecksum = aonChecksum; aonChecksum = 0x00000000; - uint32_t checksum = 0xABBA5FF5; + uint32_t checksum = 0xABBA5FF7; for (uint32_t c = 0x130000; c < 0x131000; c += 4) { checksum += *(uint32_t *)c; } if (checksum == testchecksum) { // immediately invalidate the checksum; if we reboot, we want a clean reboot aonChecksum = 0x5445A00A; - memcpy((void *)(0x128000 - AONSHADOW_SIZE), (uint8_t*)aonShadow, AONSHADOW_SIZE); + memcpy((void *)(0x128000 - AONSHADOW_SIZE), (uint8_t *)aonShadow, AONSHADOW_SIZE); return true; } else { clearAonRam(); @@ -33,9 +34,9 @@ bool loadValidateAonRam() { } void saveAonRam() { - memcpy((uint8_t*)aonShadow, (void *)(0x128000 - AONSHADOW_SIZE), AONSHADOW_SIZE); + memcpy((uint8_t *)aonShadow, (void *)(0x128000 - AONSHADOW_SIZE), AONSHADOW_SIZE); aonChecksum = 0x00000000; - uint32_t checksum = 0xABBA5FF5; + uint32_t checksum = 0xABBA5FF7; for (uint32_t c = 0x130000; c < 0x131000; c += 4) { checksum += *(uint32_t *)c; } diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aon_ram.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aon_ram.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_aon_ram.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_aon_ram.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_clock.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_clock.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_clock.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_clock.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_clock.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_clock.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_clock.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_clock.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_driver.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_driver.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_driver.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_driver.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_driver.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_driver.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_driver.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_driver.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_driver_isr.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_driver_isr.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_driver_isr.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_driver_isr.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_drv_config.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_drv_config.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_drv_config.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_drv_config.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_flash.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_flash.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_flash.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_flash.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_flash.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_flash.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_flash.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_flash.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpio.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpio.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpio.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpio.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpio.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpio.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpio.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpio.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpt.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpt.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpt.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpt.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpt.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpt.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_gpt.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_gpt.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_interrupt.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_interrupt.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_interrupt.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_interrupt.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pinmux.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pinmux.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pinmux.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pinmux.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pinmux.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pinmux.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pinmux.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pinmux.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pmu.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pmu.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pmu.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pmu.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pmu.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pmu.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_pmu.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_pmu.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_qspi.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_qspi.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_qspi.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_qspi.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_qspi.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_qspi.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_qspi.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_qspi.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_rtc.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_rtc.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_rtc.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_rtc.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_rtc.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_rtc.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_rtc.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_rtc.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_sleep.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_sleep.c similarity index 88% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_sleep.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_sleep.c index 58eaf6c6..e1fd150c 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_sleep.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_sleep.c @@ -12,8 +12,8 @@ #include "mz100_sleep.h" #include "util.h" #include "gpio.h" -#include "main.h" -#include "proto.h" +#include "../main.h" +//#include "proto.h" #include "printf.h" extern void saveAonRam(); @@ -88,9 +88,9 @@ void Set_Wakeup_pin_nfc() NVIC_EnableIRQ(ExtPin7_IRQn); } -extern struct blockRequest curBlock; // used by the block-requester, contains the next request that we'll send -extern struct AvailDataInfo curDataInfo; // last 'AvailDataInfo' we received from the AP -extern bool requestPartialBlock; // if we should ask the AP to get this block from the host or not +//extern struct blockRequest curBlock; // used by the block-requester, contains the next request that we'll send +//extern struct AvailDataInfo xferDataInfo; // last 'AvailDataInfo' we received from the AP +//extern bool requestPartialBlock; // if we should ask the AP to get this block from the host or not void sleep_with_with_wakeup(uint32_t sleep_time_ms) { saveAonRam(); @@ -122,4 +122,4 @@ void sleep_with_with_wakeup(uint32_t sleep_time_ms) Set_Wakeup_pin_rf(1); Set_Wakeup_pin_nfc(); __WFI(); -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_sleep.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_sleep.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_sleep.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_sleep.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_ssp.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_ssp.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_ssp.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_ssp.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_ssp.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_ssp.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_ssp.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_ssp.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_uart.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_uart.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_uart.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_uart.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_uart.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_uart.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_uart.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_uart.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_wdt.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_wdt.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_wdt.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_wdt.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_wdt.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_wdt.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100_wdt.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/mz100_wdt.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/nfc.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/nfc.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/nfc.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/nfc.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/nfc.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/nfc.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/nfc.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/nfc.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/pinmux_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/pinmux_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/pinmux_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/pinmux_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/pmu_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/pmu_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/pmu_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/pmu_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/printf.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/printf.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/printf.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/printf.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/printf.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/printf.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/printf.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/printf.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/qspi_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/qspi_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/qspi_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/qspi_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/rc32m_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/rc32m_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/rc32m_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/rc32m_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/rtc_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/rtc_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/rtc_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/rtc_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/ssp_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/ssp_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/ssp_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/ssp_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/sysctrl_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/sysctrl_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/sysctrl_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/sysctrl_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/timer.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/timer.c similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/timer.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/timer.c diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/timer.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/timer.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/timer.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/timer.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uart_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/uart_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uart_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/uart_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/util.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/util.c similarity index 98% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/util.c rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/util.c index e17bdc90..128f9823 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/util.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/util.c @@ -160,7 +160,7 @@ void qspiEraseRange(uint32_t addr, uint32_t len) { } bool eepromWrite(uint32_t addr, const void *srcP, uint16_t len) { - FLASH_Write(false, addr, (void*)srcP, len); + FLASH_Write(0, addr, (void*)srcP, len); return true; } @@ -182,4 +182,4 @@ void radioShutdown(void) { *(volatile uint32_t *)0x4C000000 = 0; *(volatile uint32_t *)0x4C010000 = 0; *(volatile uint32_t *)0x4C010004 = 0x10000000; -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/util.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/util.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/util.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/util.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/wdt_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/wdt_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/wdt_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/wdt_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/xtal32m_reg.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/xtal32m_reg.h similarity index 100% rename from ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/xtal32m_reg.h rename to ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/mz100/xtal32m_reg.h diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.cpp new file mode 100644 index 00000000..16b096a7 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.cpp @@ -0,0 +1,168 @@ +#include +#include +#include +#include +extern "C" { +#include "mz100/mz100_flash.h" +#include "mz100/printf.h" +} + +// #pragma pack(1) + +#include "oepl_fs.h" + +extern "C" { +__attribute__((section(".aonshadow"))) uint32_t fsEntry; +__attribute__((section(".aonshadow"))) uint32_t fsEnd; +extern void dump(const uint8_t *a, const uint16_t l); +} + +OEPLFs oeplfs; +OEPLFs *fs = &oeplfs; + +void OEPLFs::init() { + if (!this->isStarted) { + this->files.clear(); + if (fsEntry == 0) { + silent = false; + fsEntry = this->findEntry(); + } else { + silent = true; + } + if (fsEntry) this->populateFiles(); + this->isStarted = true; + } +} + +OEPLFs::OEPLFs() { +} + +OEPLFs::~OEPLFs() { +} + +uint32_t OEPLFs::findEntry() { + printf("FS: Trying to find OEPL FS...\n"); + uint8_t *scan = (uint8_t *)malloc(1024); + uint32_t offset = 0; + // scan flash with some overlap, to ensure the entire string is in the buffer at some point + for (uint32_t c = 60000; c < 180000; c += 512) { + FLASH_Read(FLASH_FAST_READ_QUAD_OUT, c, scan, 1024); + uint32_t scan_offset = 0; + bool nextblock = false; + while (!nextblock) { + uint8_t *p = (uint8_t *)memchr(scan + scan_offset, '-', 1024 - scan_offset); + if (p) { + // see if the rest of the string is also there + int8_t match = memcmp(p + 1, "--OEPL_FS!", 10); + if (match == 0) { + offset = (uint32_t)(p - scan); + offset += c; + nextblock = true; + break; + } else { + scan_offset = (p - scan) + 1; + } + } else { + nextblock = true; + } + } + } + + if (offset) { + printf("FS: Found at 0x%08X\n", offset); + } else { + printf("FS: Not found. Did you forget to add it?\n"); + FLASH_Read(FLASH_FAST_READ_QUAD_OUT, 0x109C0, scan, 1024); + dump(scan, 1024); + } + free(scan); + return offset; +} + +void OEPLFs::populateFiles() { + // get file list inside of the vector + uint8_t *buffer = (uint8_t *)malloc(1024); + FLASH_Read(FLASH_FAST_READ_QUAD_OUT, fsEntry, buffer, 1024); + bool done = false; + bool firstFile = true; + uint8_t *fatEnd = nullptr; + uint8_t *curFileP = buffer; + curFileP += 11; // set to begin file table + uint32_t fsend = 0; + while (!done) { + OEPLFSFile *file; + file = new OEPLFSFile; + memcpy((void *)file, curFileP, sizeof(OEPLFSFile)); + this->files.push_back(file); + if (firstFile) { + firstFile = false; + fatEnd = buffer + file->offset - 1; + } + curFileP += sizeof(OEPLFSFile); + + // print reference + char tmp[32]; + memcpy(tmp, file->name, 32); + tmp[31] = 0x00; + if(!silent)printf("name=%s, size=%u, offset=%u\n", tmp, file->len, file->offset); + + fsend = file->len + file->offset; + if (curFileP > fatEnd) { + done = true; + break; + } + } + fsEnd = fsend + fsEntry; + free(buffer); +} + +OEPLFile *OEPLFs::getFile(char *name) { + // if (files.size() == 0) this->init(); + for (uint8_t c = 0; c < files.size(); c++) { + if (strncmp(name, files.at(c)->name, FILENAME_LENGTH) == 0) { + OEPLFile *file = new OEPLFile(files.at(c)->offset + fsEntry); + file->length = files.at(c)->len; + return file; + } + } + printf("file '%s' not found in %d files\n", name, files.size()); + return nullptr; +} + +uint8_t OEPLFile::operator()(uint32_t i) { + return this->readByte(i); +} + +void OEPLFile::getBlock(uint32_t offset, uint8_t *target, uint32_t len) { + // get a block of data from within the 'file' + FLASH_Read(FLASH_FAST_READ_QUAD_OUT, this->eepromOffset + offset, target, len); +} + +uint8_t OEPLFile::readByte(uint32_t i) { + if (!buffer) { + this->buffer = (uint8_t *)malloc(OEPLFS_CACHE_SIZE); + } + + // calculate requested eeprom position + uint32_t eepromPos = i + this->eepromOffset; + + // check if this currently buffered + if ((eepromPos >= this->bufferBegin) && (eepromPos < (this->bufferBegin + OEPLFS_CACHE_SIZE))) { + // cache hit + } else { + // cache miss + FLASH_Read(FLASH_FAST_READ_QUAD_OUT, this->eepromOffset + i, buffer, OEPLFS_CACHE_SIZE); + this->bufferBegin = this->eepromOffset + i; + } + return buffer[(this->eepromOffset + i) - this->bufferBegin]; +} + +OEPLFile::OEPLFile(uint32_t offset) { + this->eepromOffset = offset; +} + +OEPLFile::~OEPLFile() { + if (this->buffer) { + free(this->buffer); + } +} \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.h new file mode 100644 index 00000000..a22b7878 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/oepl_fs.h @@ -0,0 +1,51 @@ +#pragma once + +#include +#include + +extern "C" { +extern __attribute__((section(".aonshadow"))) uint32_t fsEntry; +extern __attribute__((section(".aonshadow"))) uint32_t fsEnd; +} +#define OEPLFS_CACHE_SIZE 128 + +#define FILENAME_LENGTH 32 + +typedef struct __attribute__((packed)) { + char name[FILENAME_LENGTH]; + uint32_t offset; + uint32_t len; +} OEPLFSFile; + +class OEPLFile { + public: + ~OEPLFile(); + OEPLFile(uint32_t begin); + uint32_t length; + uint8_t operator()(uint32_t i); + uint8_t readByte(uint32_t i); + void getBlock(uint32_t offset, uint8_t* target, uint32_t len); + + protected: + uint8_t* buffer = nullptr; + uint32_t bufferBegin = 0; + uint32_t eepromOffset = 0; +}; + +class OEPLFs { + public: + ~OEPLFs(); + OEPLFs(); + std::vector files; + OEPLFile* getFile(char* name); + void init(); + bool isStarted = false; + + protected: + bool silent; + uint32_t findEntry(); + void populateFiles(); +}; + +// extern __attribute__((section(".aonshadow"))) OEPLFs fs; +extern OEPLFs* fs; \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/powermgt.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/powermgt.c index 2b74a077..4a92ef07 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/powermgt.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/powermgt.c @@ -7,13 +7,13 @@ #include #include "board.h" -#include "eeprom.h" +#include "mz100/eeprom.h" #include "main.h" -#include "mz100_sleep.h" -#include "printf.h" +#include "mz100/mz100_sleep.h" +#include "mz100/printf.h" #include "screen.h" #include "syncedproto.h" -#include "util.h" +#include "mz100/util.h" #include "zigbee.h" __attribute__((section(".aonshadow"))) uint16_t dataReqAttemptArr[POWER_SAVING_SMOOTHING] = {0}; // Holds the amount of attempts required per data_req/check-in @@ -148,4 +148,4 @@ uint16_t getNextSleep() { } avg /= POWER_SAVING_SMOOTHING; return avg; -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.c index 7191d5f3..3aba475d 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.c @@ -1,9 +1,9 @@ #include "settings.h" #include "proto.h" #include -#include "eeprom.h" -#include "util.h" -#include "mz100_flash.h" +#include "mz100/eeprom.h" +#include "mz100/util.h" +#include "mz100/mz100_flash.h" #include "powermgt.h" @@ -25,4 +25,4 @@ void loadDefaultSettings() { tagSettings.minimumCheckInTime = INTERVAL_BASE; tagSettings.fixedChannel = 0; tagSettings.batLowVoltage = BATTERY_VOLTAGE_MINIMUM; -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.h index 4df94c04..a606f906 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/settings.h @@ -3,11 +3,18 @@ #include -#define FW_VERSION 20 // version number (max 2.5.5 :) ) +#define FW_VERSION 0x0027 // version number (max 2.5.5 :) ) #define FW_VERSION_SUFFIX "-75" // suffix, like -RC1 or whatever. // #define DEBUGBLOCKS // uncomment to enable extra debug information on the block transfers // #define PRINT_LUT // uncomment if you want the tag to print the LUT for the current temperature bracket + +#define DEBUG_EPD +#define DEBUG_FS +#define DEBUG_BUILD +#define DEBUG_COMPRESSION + + #define SETTINGS_STRUCT_VERSION 0x01 #define DEFAULT_SETTING_FASTBOOT 0 diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.c index 9f4893c8..0589b9cb 100755 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.c @@ -3,21 +3,22 @@ #include "board.h" #include "comms.h" -#include "drawing.h" -#include "eeprom.h" +#include "mz100/eeprom.h" #include "main.h" -#include "mz100_sleep.h" +#include "mz100/mz100_sleep.h" #include "powermgt.h" -#include "printf.h" +#include "mz100/printf.h" #include "proto.h" -#include "timer.h" -#include "util.h" +#include "mz100/timer.h" +#include "mz100/util.h" +#include "mz100/mz100_flash.h" #include "zigbee.h" +#include "md5.h" // download-stuff uint8_t blockXferBuffer[BLOCK_XFER_BUFFER_SIZE] = {0}; __attribute__((section(".aonshadow"))) struct blockRequest curBlock = {0}; // used by the block-requester, contains the next request that we'll send -__attribute__((section(".aonshadow"))) struct AvailDataInfo curDataInfo = {0}; // last 'AvailDataInfo' we received from the AP +__attribute__((section(".aonshadow"))) struct AvailDataInfo xferDataInfo = {0}; // last 'AvailDataInfo' we received from the AP bool requestPartialBlock = false; // if we should ask the AP to get this block from the host or not #define BLOCK_TRANSFER_ATTEMPTS 10 @@ -41,6 +42,9 @@ static uint8_t outBuffer[128] = {0}; // #define DEBUGBLOCKS 1 +// from drawing.cpp +extern void drawImageAtAddress(uint32_t addr, uint8_t lut); + // tools static uint8_t getPacketType(const void *buffer) { const struct MacFcs *fcs = buffer; @@ -186,6 +190,7 @@ static void sendAvailDataReq() { availreq->temperature = temperature; availreq->batteryMv = batteryVoltage; availreq->capabilities = capabilities; + availreq->tagSoftwareVersion = FW_VERSION; addCRC(availreq, sizeof(struct AvailDataReq)); commsTxNoCpy(outBuffer); } @@ -204,7 +209,6 @@ struct AvailDataInfo *getAvailDataInfo() { memcpy(APmac, f->src, 8); APsrcPan = f->pan; dataReqLastAttempt = c; - printf("%d", dataReqLastAttempt); return (struct AvailDataInfo *)(inBuffer + sizeof(struct MacFrameNormal) + 1); } } @@ -399,6 +403,33 @@ static bool validateBlockData() { } // EEprom related stuff +static bool validateEepromMD5(uint64_t ver, uint32_t eepromstart, uint32_t flen) { +#define CHUNK_SIZE 512 + uint8_t chunk[CHUNK_SIZE]; + MD5Context ctx; + md5Init(&ctx); + + // Open the executable itself for reading + for (uint32_t offset = 0; offset < flen; offset += CHUNK_SIZE) { + uint32_t len = flen - offset; + if (len > CHUNK_SIZE) len = CHUNK_SIZE; + FLASH_Read(FLASH_FAST_READ_QUAD_OUT, eepromstart + offset, chunk, len); + eepromRead(eepromstart + offset, chunk, 512); + md5Update(&ctx, chunk, len); + } + + // Retrieve the final hash + md5Finalize(&ctx); + + bool isValid = ver == *((uint64_t *)ctx.digest); + if (!isValid) { + printf("MD5 failed check! This is what we should get:\n"); + dump((const uint8_t *)&(xferDataInfo.dataVer), 8); + printf("This is what we got:\n"); + dump(ctx.digest, 16); + } + return isValid; +} static uint32_t getAddressForSlot(const uint8_t s) { return EEPROM_IMG_START + (EEPROM_IMG_EACH * s); } @@ -478,6 +509,7 @@ static uint32_t getHighSlotId() { return temp; } + static bool getDataBlock(const uint16_t blockSize) { static uint8_t partsThisBlock = 0; static uint8_t blockAttempts = 0; @@ -574,28 +606,31 @@ static bool getDataBlock(const uint16_t blockSize) { return false; } uint16_t dataRequestSize = 0; +uint32_t curXferSize = 0; + static bool downloadFWUpdate(const struct AvailDataInfo *avail) { // check if we already started the transfer of this information & haven't completed it - if (!memcmp((const void *)&avail->dataVer, (const void *)&curDataInfo.dataVer, 8) && curDataInfo.dataSize) { + if (!memcmp((const void *)&avail->dataVer, (const void *)&xferDataInfo.dataVer, 8) && xferDataInfo.dataSize) { // looks like we did. We'll carry on where we left off. } else { // start, or restart the transfer from 0. Copy data from the AvailDataInfo struct, and the struct intself. This forces a new transfer curBlock.blockId = 0; memcpy(&(curBlock.ver), &(avail->dataVer), 8); curBlock.type = avail->dataType; - memcpy(&curDataInfo, (void *)avail, sizeof(struct AvailDataInfo)); + memcpy(&xferDataInfo, (void *)avail, sizeof(struct AvailDataInfo)); + curXferSize = avail->dataSize; eraseUpdateBlock(); delay(100); } - while (curDataInfo.dataSize) { + while (xferDataInfo.dataSize) { wdt10s(); - if (curDataInfo.dataSize > BLOCK_DATA_SIZE) { + if (xferDataInfo.dataSize > BLOCK_DATA_SIZE) { // more than one block remaining dataRequestSize = BLOCK_DATA_SIZE; } else { // only one block remains - dataRequestSize = curDataInfo.dataSize; + dataRequestSize = xferDataInfo.dataSize; } if (getDataBlock(dataRequestSize)) { // succesfully downloaded datablock, save to eeprom @@ -603,20 +638,27 @@ static bool downloadFWUpdate(const struct AvailDataInfo *avail) { saveUpdateBlockData(curBlock.blockId); powerDown(INIT_EEPROM); curBlock.blockId++; - curDataInfo.dataSize -= dataRequestSize; + xferDataInfo.dataSize -= dataRequestSize; } else { // failed to get the block we wanted, we'll stop for now, maybe resume later return false; } } // no more data, download complete - return true; + if (validateEepromMD5(xferDataInfo.dataVer, EEPROM_UPDATE_START, curXferSize)) { + // md5 matches + return true; + } else { + // md5 does not match, invalidate current transfer result, forcing a restart of the transfer + memset((void *)&xferDataInfo, 0, sizeof(struct AvailDataInfo)); + return false; + } } uint16_t imageSize = 0; static bool downloadImageDataToEEPROM(const struct AvailDataInfo *avail) { // check if we already started the transfer of this information & haven't completed it - if (!memcmp((const void *)&avail->dataVer, (const void *)&curDataInfo.dataVer, 8) && curDataInfo.dataSize) { + if (!memcmp((const void *)&avail->dataVer, (const void *)&xferDataInfo.dataVer, 8) && xferDataInfo.dataSize) { // looks like we did. We'll carry on where we left off. printf("restarting image download"); curImgSlot = nextImgSlot; @@ -643,19 +685,19 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *avail) { memcpy(&(curBlock.ver), &(avail->dataVer), 8); curBlock.type = avail->dataType; - memcpy(&curDataInfo, (void *)avail, sizeof(struct AvailDataInfo)); + memcpy(&xferDataInfo, (void *)avail, sizeof(struct AvailDataInfo)); - imageSize = curDataInfo.dataSize; + imageSize = xferDataInfo.dataSize; } - while (curDataInfo.dataSize) { + while (xferDataInfo.dataSize) { wdt10s(); - if (curDataInfo.dataSize > BLOCK_DATA_SIZE) { + if (xferDataInfo.dataSize > BLOCK_DATA_SIZE) { // more than one block remaining dataRequestSize = BLOCK_DATA_SIZE; } else { // only one block remains - dataRequestSize = curDataInfo.dataSize; + dataRequestSize = xferDataInfo.dataSize; } if (getDataBlock(dataRequestSize)) { // succesfully downloaded datablock, save to eeprom @@ -666,7 +708,7 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *avail) { saveImgBlockData(curImgSlot, curBlock.blockId); powerDown(INIT_EEPROM); curBlock.blockId++; - curDataInfo.dataSize -= dataRequestSize; + xferDataInfo.dataSize -= dataRequestSize; } else { // failed to get the block we wanted, we'll stop for now, probably resume later return false; @@ -676,20 +718,27 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *avail) { // borrow the blockXferBuffer temporarily struct EepromImageHeader *eih = (struct EepromImageHeader *)blockXferBuffer; - memcpy(&eih->version, &curDataInfo.dataVer, 8); + memcpy(&eih->version, &xferDataInfo.dataVer, 8); eih->validMarker = EEPROM_IMG_VALID; eih->id = ++curHighSlotId; eih->size = imageSize; - eih->dataType = curDataInfo.dataType; + eih->dataType = xferDataInfo.dataType; #ifdef DEBUGBLOCKS printf("Now writing datatype 0x%02X to slot %d\n", curDataInfo.dataType, curImgSlot); #endif - powerUp(INIT_EEPROM); - eepromWrite(getAddressForSlot(curImgSlot), eih, sizeof(struct EepromImageHeader)); - powerDown(INIT_EEPROM); - - return true; + if (validateEepromMD5(xferDataInfo.dataVer, getAddressForSlot(curImgSlot) + sizeof(struct EepromImageHeader), imageSize)) { + // md5 matches + eepromWrite(getAddressForSlot(curImgSlot), eih, sizeof(struct EepromImageHeader)); + powerDown(INIT_EEPROM); + printf("md5 okay"); + return true; + } else { + // md5 does not match, invalidate current transfer result, forcing a restart of the transfer + memset((void *)&xferDataInfo, 0, sizeof(struct AvailDataInfo)); + powerDown(INIT_EEPROM); + return false; + } } bool processAvailDataInfo(struct AvailDataInfo *avail) { @@ -698,8 +747,9 @@ bool processAvailDataInfo(struct AvailDataInfo *avail) { case DATATYPE_IMG_DIFF: case DATATYPE_IMG_RAW_1BPP: case DATATYPE_IMG_RAW_2BPP: + case DATATYPE_IMG_ZLIB: // check if this download is currently displayed or active - if (curDataInfo.dataSize == 0 && !memcmp((const void *)&avail->dataVer, (const void *)&curDataInfo.dataVer, 8)) { + if (xferDataInfo.dataSize == 0 && !memcmp((const void *)&avail->dataVer, (const void *)&xferDataInfo.dataVer, 8)) { // we've downloaded this already, we're guessing it's already displayed printf("currently shown image, send xfc\n"); powerUp(INIT_RADIO); @@ -721,8 +771,8 @@ bool processAvailDataInfo(struct AvailDataInfo *avail) { printf("already seen, drawing from eeprom slot %d\n", curImgSlot); // mark as completed and draw from EEPROM - memcpy(&curDataInfo, (void *)avail, sizeof(struct AvailDataInfo)); - curDataInfo.dataSize = 0; // mark as transfer not pending + memcpy(&xferDataInfo, (void *)avail, sizeof(struct AvailDataInfo)); + xferDataInfo.dataSize = 0; // mark as transfer not pending drawWithLut = avail->dataTypeArgument; wdt60s(); @@ -786,4 +836,4 @@ bool processAvailDataInfo(struct AvailDataInfo *avail) { void initializeProto() { getNumSlots(); curHighSlotId = getHighSlotId(); -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.h index f0eafddc..d1532d33 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.h +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/syncedproto.h @@ -8,7 +8,7 @@ extern __attribute__((section(".aonshadow"))) uint8_t mSelfMac[]; extern __attribute__((section(".aonshadow"))) volatile uint8_t currentChannel; extern __attribute__((section(".aonshadow"))) struct blockRequest curBlock; // used by the block-requester, contains the next request that we'll send -extern __attribute__((section(".aonshadow"))) struct AvailDataInfo curDataInfo; // last 'AvailDataInfo' we received from the AP // __attribute__((section(".aon"))) +extern __attribute__((section(".aonshadow"))) struct AvailDataInfo xferDataInfo; // last 'AvailDataInfo' we received from the AP // __attribute__((section(".aon"))) extern uint8_t APmac[]; diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.cpp new file mode 100644 index 00000000..3e6e422a --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.cpp @@ -0,0 +1,476 @@ + +#include "uc8159-var-m2.h" + +extern "C" { + +#include +#include +#include +#include + +#include "main.h" +#include "mz100/gpio.h" +#include "mz100/mz100_gpio.h" +#include "mz100/mz100_pinmux.h" +#include "mz100/printf.h" +#include "mz100/util.h" +} + +#include "drawing.h" +#include "epd_interface.h" + +#define EPD_PANEL_SETTING 0x00 +#define EPD_POWER_SETTING 0x01 +#define EPD_POWER_OFF 0x02 +#define EPD_POWER_OFF_SEQUENCE 0x03 +#define EPD_POWER_ON 0x04 +#define EPD_BOOSTER_SOFT_START 0x06 +#define EPD_DEEP_SLEEP 0x07 +#define EPD_START_DATA 0x10 +#define EPD_DATA_STOP 0x11 +#define EPD_REFRESH 0x12 +#define EPD_IMAGE_PROCESS 0x13 +#define EPD_LUT_VCOM 0x20 +#define EPD_LUT_B 0x21 +#define EPD_LUT_W 0x22 +#define EPD_LUT_G1 0x23 +#define EPD_LUT_G2 0x24 +#define EPD_LUT_R0 0x25 +#define EPD_LUT_R1 0x26 +#define EPD_LUT_R2 0x27 +#define EPD_LUT_R3 0x28 +#define EPD_LUT_XON 0x29 +#define EPD_PLL_CONTROL 0x30 +#define EPD_TEMP_CALIB 0x40 +#define EPD_TEMP_SELECT 0x41 +#define EPD_TEMP_WRITE 0x42 +#define EPD_TEMP_READ 0x43 +#define EPD_VCOM_DATA_INTERVAL 0x50 +#define EPD_LPD 0x51 +#define EPD_TCON_SET 0x60 +#define EPD_TRES 0x61 +#define EPD_SPI_FLASH_CONTROL 0x65 +#define EPD_REVISION 0x70 +#define EPD_GET_STATUS 0x71 +#define EPD_AUTOMEASURE_VCOM 0x80 +#define EPD_READ_VCOM 0x81 +#define EPD_VCOM_DC_SET 0x82 +#define EPD_SET_WINDOW 0x90 + +#define EPD_WAKE_EEPROM 0xAB +#define EPD_EEPROM_SLEEP 0xB9 +#define EPD_UNKNOWN_1 0xE5 + +#define EPD_IS_BUSY false +#define EPD_IS_NOT_BUSY true + +extern "C" { +extern void dump(const uint8_t *a, const uint16_t l); +} + +struct __attribute__((packed)) epd_colorlutpart { + uint8_t repeat; + uint8_t lvl0 : 4; + uint8_t lvl1 : 4; + uint8_t lvl2 : 4; + uint8_t lvl3 : 4; + uint8_t lvl4 : 4; + uint8_t lvl5 : 4; + uint8_t lvl6 : 4; + uint8_t lvl7 : 4; + uint8_t length[8]; +}; + +struct __attribute__((packed)) epd_colorlut { + struct epd_colorlutpart part[20]; +}; + +struct __attribute__((packed)) epd_vcomlutpart { + uint8_t repeat; + uint8_t lvl0 : 2; + uint8_t lvl1 : 2; + uint8_t lvl2 : 2; + uint8_t lvl3 : 2; + uint8_t lvl4 : 2; + uint8_t lvl5 : 2; + uint8_t lvl6 : 2; + uint8_t lvl7 : 2; + uint8_t length[8]; +}; + +struct __attribute__((packed)) epd_vcomlut { + struct epd_vcomlutpart part[20]; +}; + +struct __attribute__((packed)) epd_xonlutpart { + uint8_t repeat; + uint8_t lvl0 : 1; + uint8_t lvl1 : 1; + uint8_t lvl2 : 1; + uint8_t lvl3 : 1; + uint8_t lvl4 : 1; + uint8_t lvl5 : 1; + uint8_t lvl6 : 1; + uint8_t lvl7 : 1; + uint8_t length[8]; +}; + +struct __attribute__((packed)) epd_xonlut { + struct epd_xonlutpart part[20]; +}; + +void uc8159::epdSetup() { + printf("EPD: Init begin\n"); + initEPDGPIO(); + this->epdReset(); + epdWrite(EPD_POWER_ON, 0); + busyWaitUntil(EPD_IS_NOT_BUSY, 100); + + epdWrite(EPD_TRES, 0x04, 2, 128, 1, 128); + + // wake the eeprom + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x01); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_LOW); + epdWrite(EPD_WAKE_EEPROM, 0x00); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x00); + + epdWrite(EPD_POWER_SETTING, 4, 0x37, 0x00, 0x05, 0x05); // 0x37 - 00- 05 05 this one worked + + epdWrite(EPD_PANEL_SETTING, 2, 0xC3, 0x08); // 0xC3-0x88 // lut from EEPROM + epdWrite(EPD_POWER_OFF_SEQUENCE, 1, 0x00); + epdWrite(EPD_BOOSTER_SOFT_START, 0x03, 199, 204, 45); + epdWrite(EPD_PLL_CONTROL, 0x01, 60); + epdWrite(EPD_TEMP_SELECT, 0x01, 0x00); + epdWrite(EPD_VCOM_DATA_INTERVAL, 0x01, 119); + epdWrite(EPD_TCON_SET, 0x01, 34); + + EPDtempBracket = this->getTempBracket(); + this->loadFrameRatePLL(EPDtempBracket); + this->loadTempVCOMDC(EPDtempBracket); + + // this->loadTempVSH(EPDtempBracket); + // epdWrite(EPD_POWER_SETTING, 4, 0x37, 0x00, this->vshc, this->vslc); // this doesn't work + + printf("EPD: Init complete\n"); +} + +void uc8159::selectLUT(uint8_t lut) { + this->drawLut = lut; +} + +uc8159::~uc8159() { +} + +uint8_t uc8159::getTempBracket() { + uint8_t v0; + uint8_t v1; + uint8_t temptable[40]; + + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x01); + eepromReadBlock(0, 25002, temptable, 10); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x00); + + epdWrite(EPD_TEMP_CALIB, 0); + busyWaitUntil(EPD_IS_NOT_BUSY, 10); + v0 = softSPIReadByte(); + v1 = (uint8_t)(2 * v0) + ((uint8_t)softSPIReadByte() >> 7); + + uint8_t bracket = 0; + for (int i = 0; i < 9; i++) { + if ((((char)v1 - (uint8_t)temptable[i]) & 0x80) != 0) { + bracket = i; + break; + } + } + printf("EPD: Temp bracket = %d\n", bracket); + return bracket; +} +void uc8159::loadFrameRatePLL(uint8_t bracket) { + uint8_t pllvalue; + uint8_t plltable[12]; + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x01); + eepromReadBlock(0, 25039, plltable, 10); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0x00); + pllvalue = plltable[bracket]; + printf("loading pll value 0x%02X\n", pllvalue); + pllvalue = 0x3A; // was 0x3C + epdWrite(EPD_PLL_CONTROL, 1, pllvalue); +} +void uc8159::loadTempVCOMDC(uint8_t bracket) { + uint8_t vcomvalue; + uint8_t vcomtable[12]; + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 1); + eepromReadBlock(0, 25049, vcomtable, 10); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0); + vcomvalue = vcomtable[bracket]; + epdWrite(EPD_VCOM_DC_SET, 1, vcomvalue); +} +void uc8159::loadTempVSH(uint8_t bracket) { + uint8_t vshtable[20]; + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 1); + eepromReadBlock(0, 25011, vshtable, 20); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0); + this->vshc = vshtable[bracket * 2]; + this->vslc = vshtable[(bracket * 2) + 1]; +} +uint8_t *uc8159::loadLUT(uint8_t index, uint8_t bracket) { + uint16_t adr = 0; + uint16_t len = 0; + uint8_t *lutBuffer; + switch (index) { + case EPD_LUT_VCOM: + // VCOM LUT + adr = 20800 + (220 * bracket); + len = 220; + break; + case EPD_LUT_B: + case EPD_LUT_W: + case EPD_LUT_G1: + case EPD_LUT_G2: + case EPD_LUT_R0: + case EPD_LUT_R1: + case EPD_LUT_R2: + case EPD_LUT_R3: + adr = (bracket * 2080); + adr += (index - 0x21) * 260; + len = 260; + break; + case EPD_LUT_XON: + // XON LUT + adr = 23000 + (200 * bracket); + len = 200; + break; + } + + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 1); + lutBuffer = (uint8_t *)malloc(len); + if (lutBuffer) eepromReadBlock(0, adr, lutBuffer, len); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0); + return lutBuffer; +} + +void colorLutSkip(struct epd_colorlut *colorlut, uint8_t skip) { + for (uint8_t shift = skip; shift < 19; shift++) { + colorlut->part[shift] = colorlut->part[shift + 1]; + } +} + +void vcomLutSkip(struct epd_vcomlut *colorlut, uint8_t skip) { + for (uint8_t shift = skip; shift < 19; shift++) { + colorlut->part[shift] = colorlut->part[shift + 1]; + } +} + +void xonLutSkip(struct epd_xonlut *colorlut, uint8_t skip) { + for (uint8_t shift = skip; shift < 19; shift++) { + colorlut->part[shift] = colorlut->part[shift + 1]; + } +} + +void uc8159::loadLUTSfromEEPROM(uint8_t bracket, bool doRed) { + for (uint8_t c = EPD_LUT_B; c <= EPD_LUT_R3; c++) { + struct epd_colorlut *colorlut = (struct epd_colorlut *)loadLUT(c, bracket); + + colorLutSkip(colorlut, 0); + colorLutSkip(colorlut, 0); + colorlut->part[0].repeat = 1; + colorLutSkip(colorlut, 2); + if (!doRed) { + colorLutSkip(colorlut, 3); + colorLutSkip(colorlut, 3); + colorLutSkip(colorlut, 3); + } + + // colorLutSkip(colorlut, 3); + // 0 0 2 3 was okay // 00034 okay reds? + epdBlockWrite(c, (uint8_t *)colorlut, 260); + if (colorlut) free(colorlut); + } + + struct epd_vcomlut *vcomlut = (struct epd_vcomlut *)loadLUT(EPD_LUT_VCOM, bracket); + vcomLutSkip(vcomlut, 0); + vcomLutSkip(vcomlut, 0); + vcomlut->part[0].repeat = 1; + + vcomLutSkip(vcomlut, 2); + if (!doRed) { + vcomLutSkip(vcomlut, 3); + vcomLutSkip(vcomlut, 3); + vcomLutSkip(vcomlut, 3); + } + epdBlockWrite(EPD_LUT_VCOM, (uint8_t *)vcomlut, 220); + if (vcomlut) free(vcomlut); + + struct epd_xonlut *xonlut = (struct epd_xonlut *)loadLUT(EPD_LUT_XON, bracket); + + xonLutSkip(xonlut, 0); + xonLutSkip(xonlut, 0); + xonlut->part[0].repeat = 1; + xonLutSkip(xonlut, 2); + if (!doRed) { + xonLutSkip(xonlut, 3); + xonLutSkip(xonlut, 3); + xonLutSkip(xonlut, 3); + } + epdBlockWrite(EPD_LUT_XON, (uint8_t *)xonlut, 200); + if (xonlut) free(xonlut); +} +void uc8159::epdReset() { + uint8_t v0 = 5; + printf("EPD: Reset... "); + while (1) { + GPIO_WritePinOutput(EPD_RESET, GPIO_IO_HIGH); + delay(100); + GPIO_WritePinOutput(EPD_RESET, GPIO_IO_LOW); + delay(3000); + GPIO_WritePinOutput(EPD_RESET, GPIO_IO_HIGH); + delay(3000); + if (GPIO_ReadPinLevel(EPD_BUSY)) + break; + v0--; + if (!v0) { + printf(" - EPD reset failure!\r\n"); + break; + } + } + delay(5000); + printf("complete.\n"); +} + +void uc8159::eepromReadBlock(char a1, uint16_t readaddress, uint8_t *target, uint16_t length) { + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_LOW); + softSPIWriteByte(3); + softSPIWriteByte(a1); + softSPIWriteByte(readaddress >> 8); + softSPIWriteByte(readaddress); + delay_us(5); + for (uint16_t i = 0; i < length; i++) { + uint8_t readbyte = 0; + uint8_t loopCount = 0; + do { + readbyte *= 2; + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); + delay_us(1); + if (GPIO_ReadPinLevel(EPD_MISO)) + readbyte |= 1u; + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_HIGH); + delay_us(1); + delay(1); + loopCount++; + } while (loopCount < 8); + delay_us(1); + *target++ = readbyte; + } + + GPIO_WritePinOutput(EPD_CLK, GPIO_IO_LOW); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); + delay(1); +} + +void uc8159::interleaveColorToBuffer(uint8_t *dst, uint8_t b, uint8_t r) { + b ^= 0xFF; + uint8_t b_out = 0; + for (int8_t shift = 3; shift >= 0; shift--) { + b_out = 0; + if (((b >> 2 * shift) & 0x01) && ((r >> 2 * shift) & 0x01)) { + b_out |= 0x04; // 0x30 + } else if ((b >> 2 * shift) & 0x01) { + b_out |= 0x03; // 0x30 + } else if ((r >> 2 * shift) & 0x01) { // 4 or 5 + b_out |= 0x04; // 0x30 + } else { + } + + if (((b >> 2 * shift) & 0x02) && ((r >> 2 * shift) & 0x02)) { + b_out |= 0x40; // 0x30 + } else if ((b >> 2 * shift) & 0x02) { + b_out |= 0x30; // 0x30 + } else if ((r >> 2 * shift) & 0x02) { + b_out |= 0x40; // 0x30 + } else { + } + *dst++ = b_out; + } +} + +void uc8159::epdWriteDisplayData() { + uint8_t blocksize = 32; + uint16_t byteWidth = this->effectiveXRes / 8; + uint8_t screenrow_bw[byteWidth * blocksize]; + uint8_t screenrow_r[byteWidth * blocksize]; + uint8_t screenrowInterleaved[byteWidth * 4]; + // setDisplayWindow(0, 0, 640, 384); + epdWrite(EPD_START_DATA, 0); + enableHardSPI(true); + GPIO_WritePinOutput(EPD_CS, GPIO_IO_LOW); + for (uint16_t curY = 0; curY < this->effectiveYRes; curY += blocksize) { // + memset(screenrow_bw, 0, byteWidth * blocksize); + memset(screenrow_r, 0, byteWidth * blocksize); + + for (uint8_t bcount = 0; bcount < blocksize; bcount++) { + drawItem::renderDrawLine(screenrow_bw + (byteWidth * bcount), curY + bcount, 0); + } + for (uint8_t bcount = 0; bcount < blocksize; bcount++) { + drawItem::renderDrawLine(screenrow_r + (byteWidth * bcount), curY + bcount, 1); + } + + for (uint8_t bcount = 0; bcount < blocksize; bcount++) { + for (uint16_t curX = 0; curX < (byteWidth); curX++) { + interleaveColorToBuffer(screenrowInterleaved + (curX * 4), screenrow_bw[curX + (byteWidth * bcount)], screenrow_r[curX + (byteWidth * bcount)]); + } + epdBlockWrite(screenrowInterleaved, byteWidth * 4); + } + } + GPIO_WritePinOutput(EPD_CS, GPIO_IO_HIGH); + enableHardSPI(false); + + drawItem::flushDrawItems(); +} + +void uc8159::draw() { + this->drawNoWait(); + this->epdWaitRdy(); +} + +void uc8159::drawNoWait() { + wdt60s(); + epdWriteDisplayData(); + if (drawLut) { + epdWrite(EPD_PANEL_SETTING, 2, 0xC3, 0x88); // 0xC3-0x88 // lut from register + bool doReds = true; + if (drawLut == 2) doReds = false; + loadLUTSfromEEPROM(EPDtempBracket, doReds); + } else { + epdWrite(EPD_PANEL_SETTING, 2, 0xC3, 0x08); // 0xC3-0x88 // lut from EEPROM + epdWrite(EPD_UNKNOWN_1, 1, 0x03); // load lut, probably + busyWaitUntil(EPD_IS_BUSY, 10); + busyWaitUntil(!EPD_IS_BUSY, 100); + } + printf("EPD: Draw start\n"); + epdWrite(EPD_REFRESH, 0); + busyWaitUntil(EPD_IS_BUSY, 10); +} + +void uc8159::epdWaitRdy() { + // do_sleeped_epd_refresh(); + busyWaitUntil(!EPD_IS_BUSY, 300000); + printf("EPD: Draw done!\n"); +} + +void uc8159::epdEnterSleep() { + initEPDGPIO(); + this->epdReset(); + epdWrite(EPD_POWER_SETTING, 4, 0x02, 0x00, 0x00, 0x00); + delay_us(50000); + epdWrite(EPD_POWER_OFF, 0); + delay_us(100000); + busyWaitUntil(EPD_IS_NOT_BUSY, 100000); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 1); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_LOW); + softSPIWriteByte(EPD_EEPROM_SLEEP); + GPIO_WritePinOutput(EPD_HLT_CTRL, GPIO_IO_HIGH); + epdWrite(EPD_SPI_FLASH_CONTROL, 1, 0); + epdWrite(EPD_DEEP_SLEEP, 1, 0xA5); +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.h b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.h new file mode 100644 index 00000000..ba21b6ba --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/uc8159-var-m2.h @@ -0,0 +1,35 @@ +#pragma once +// #include +#include +#include +#include + +#include "epd_interface.h" + +class uc8159 : public epdInterface { + public: + ~uc8159(); + void epdSetup(); + void epdEnterSleep(); + void draw(); + void drawNoWait(); + void epdWaitRdy(); + void selectLUT(uint8_t lut); + + protected: + void initPartTwo(); + uint8_t drawLut; + void epdWriteDisplayData(); + void interleaveColorToBuffer(uint8_t *dst, uint8_t b, uint8_t r); + void eepromReadBlock(char a1, uint16_t readaddress, uint8_t *target, uint16_t length); + void epdReset(); + void loadLUTSfromEEPROM(uint8_t bracket, bool doRed); + uint8_t *loadLUT(uint8_t index, uint8_t bracket); + void loadTempVSH(uint8_t bracket); + void loadTempVCOMDC(uint8_t bracket); + void loadFrameRatePLL(uint8_t bracket); + uint8_t getTempBracket(); + uint8_t EPDtempBracket = 0; + uint8_t vshc; + uint8_t vslc; +}; diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.c deleted file mode 100644 index a6f28ffa..00000000 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.c +++ /dev/null @@ -1,154 +0,0 @@ -#include "userinterface.h" - -#include -#include - -#include "bitmaps.h" -#include "board.h" -#include "comms.h" -#include "epd.h" -#include "font.h" -#include "powermgt.h" -#include "printf.h" -#include "proto.h" -#include "screen.h" -#include "settings.h" -#include "syncedproto.h" // for APmac / Channel -#include "timer.h" - -const uint16_t fwVersion = FW_VERSION; -const char fwVersionSuffix[] = FW_VERSION_SUFFIX; - -extern uint8_t capabilities; - -bool __attribute__((section(".aonshadow"))) lowBatteryShown = false; -bool __attribute__((section(".aonshadow"))) noAPShown = false; - -void addCapabilities() { - // if (capabilities) epdpr("Options: "); - if (capabilities & CAPABILITY_HAS_NFC) { - // epdpr("-NFC"); - if (capabilities & CAPABILITY_NFC_WAKE) { - // epdpr("+WAKE"); - } else { - // epdpr(" "); - } - } - if (capabilities & CAPABILITY_HAS_WAKE_BUTTON) { - // epdpr("-WAKE BUTTON"); - } -} - -void addOverlay() { - if ((currentChannel == 0) && (tagSettings.enableNoRFSymbol)) { - drawImg(0, 3, norf); - noAPShown = true; - } else { - noAPShown = false; - } - if ((batteryVoltage < tagSettings.batLowVoltage) && (tagSettings.enableLowBatSymbol)) { - drawImg(0, 366, batlow); - lowBatteryShown = true; - } else { - lowBatteryShown = false; - } -} - -void afterFlashScreenSaver() { - // selectLUT(EPD_LUT_DEFAULT); - // clearScreen(); - -#if (SCREEN_WIDTH == 400) // 4.2" - epdPrintBegin(3, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); - epdpr("OpenEPaperLink"); - epdPrintEnd(); -#endif - // drawWithSleep(); -} - -void showSplashScreen() { - init_epd(); - fillWindow(0, 0, 640, 384, 1); - epdPrintf(10, 10, 1, "OpenEPaperLink starting!"); - addOverlay(); - epd_refresh_and_sleep(1); -} - -void showApplyUpdate() { - init_epd(); - - fillWindow(0, 0, 640, 384, 1); - - - epdPrintf(90, 170, 1, "Performing update... This shouldn't take too long!"); - - - addOverlay(); - epd_refresh_and_sleep(1); -} - -void showAPFound() { - init_epd(); - - fillWindow(0, 0, 640, 384, 1); - - epdPrintf(10, 10, 1, "OpenEPaperLink"); - epdPrintf(10, 40, 1, "AP Found at channel %d", currentChannel); - epdPrintf(10, 60, 1, "AP MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", APmac[7], APmac[6], APmac[5], APmac[4], APmac[3], APmac[2], APmac[1], APmac[0]); - - epdPrintf(10, 330, 1, "Battery: %d.%dV", batteryVoltage / 1000, batteryVoltage % 1000); - epdPrintf(10, 350, 1, "Tag MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", mSelfMac[7], mSelfMac[6], mSelfMac[5], mSelfMac[4], mSelfMac[3], mSelfMac[2], mSelfMac[1], mSelfMac[0]); - addOverlay(); - epd_refresh_and_sleep(1); -} - -void showNoAP() { - init_epd(); - fillWindow(0, 0, 640, 384, 1); - epdPrintf(10, 10, 1, "OpenEPaperLink "); - epdPrintf(10, 40, 1, "No AP found... We'll try again in a little while though!"); - epdPrintf(10, 350, 1, "Tag MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", mSelfMac[7], mSelfMac[6], mSelfMac[5], mSelfMac[4], mSelfMac[3], mSelfMac[2], mSelfMac[1], mSelfMac[0]); - addOverlay(); - epd_refresh_and_sleep(1); -} - -void showLongTermSleep() { - // selectLUT(EPD_LUT_NO_REPEATS); - // clearScreen(); - - // epdPrintBegin(2, SCREEN_HEIGHT - 16, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); - // epdpr("zZ"); - // epdPrintEnd(); - - addOverlay(); - // drawWithSleep(); -} -void showNoEEPROM() { - // selectLUT(EPD_LUT_NO_REPEATS); - // clearScreen(); -#if (SCREEN_WIDTH == 400) // 4.2" - epdPrintBegin(50, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); - epdpr("EEPROM FAILED :("); - epdPrintEnd(); - loadRawBitmap(failed, 176, 126, EPD_COLOR_RED); - epdPrintBegin(100, 284, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); - epdpr("Sleeping forever :'("); - epdPrintEnd(); -#endif - // drawWithSleep(); -} - -void showNoMAC() { - // selectLUT(EPD_LUT_NO_REPEATS); - // clearScreen(); -#if (SCREEN_WIDTH == 400) // 4.2" - epdPrintBegin(100, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); - epdpr("NO MAC SET :("); - epdPrintEnd(); - loadRawBitmap(failed, 176, 126, EPD_COLOR_RED); - epdPrintBegin(100, 284, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); - epdpr("Sleeping forever :'("); - epdPrintEnd(); -#endif - // drawWithSleep(); -} \ No newline at end of file diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.cpp b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.cpp new file mode 100644 index 00000000..4141b1a4 --- /dev/null +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/userinterface.cpp @@ -0,0 +1,166 @@ +#include "userinterface.h" + +#include +#include + +#include "bitmaps.h" +#include "board.h" +#include "comms.h" +#include "epd_interface.h" +#include "powermgt.h" +#include "mz100/printf.h" +#include "proto.h" +#include "screen.h" +#include "settings.h" +#include "syncedproto.h" // for APmac / Channel +#include "mz100/timer.h" + +#include "drawing.h" + +const uint16_t fwVersion = FW_VERSION; +const char fwVersionSuffix[] = FW_VERSION_SUFFIX; + +extern uint8_t capabilities; + +bool __attribute__((section(".aonshadow"))) lowBatteryShown = false; +bool __attribute__((section(".aonshadow"))) noAPShown = false; + +void addOverlay() { + if ((currentChannel == 0) && (tagSettings.enableNoRFSymbol)) { + // drawImg(0, 3, norf); + noAPShown = true; + } else { + noAPShown = false; + } + if ((batteryVoltage < tagSettings.batLowVoltage) && (tagSettings.enableLowBatSymbol)) { + // drawImg(0, 366, batlow); + lowBatteryShown = true; + } else { + lowBatteryShown = false; + } +#ifdef DEBUG_BUILD + fs->init(); + fontrender fr((char *)"font/FreeSansBold18pt7b"); + drawMask(15, epd->Yres - 45, 129, 33, COLOR_BLACK); + drawMask(15, epd->Yres - 45, 129, 33, COLOR_RED); + drawRoundedRectangle(15, epd->Yres - 45, 129, 33, COLOR_RED); + fr.epdPrintf(17, epd->Yres - 42, COLOR_RED, rotation::ROTATE_0, "DEBUG"); +#endif +} + +void afterFlashScreenSaver() { + // selectLUT(EPD_LUT_DEFAULT); + // clearScreen(); + +#if (SCREEN_WIDTH == 400) // 4.2" + epdPrintBegin(3, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("OpenEPaperLink"); + epdPrintEnd(); +#endif + // drawWithSleep(); +} + +void showSplashScreen() { + fs->init(); + epdSetup(); + // addCompressedFSImage(300, 80,rotation::ROTATE_0, (char *)"img_tbird.bin.z"); + + // addCompressedFSImage(228, 24, rotation::ROTATE_0, (char *)"img/sadpanda.z"); + // addCompressedFSImage(0, 0, rotation::ROTATE_0, (char *)"forecast75.raw.z"); + + fontrender fr((char *)"font/FreeSansBold24pt7b"); + fr.epdPrintf(5, 5, 0, rotation::ROTATE_0, (char *)"OpenEPaperLink"); + fr.setFont((char *)"font/FreeSansBold18pt7b"); + fr.epdPrintf(20, 70, 1, rotation::ROTATE_0, "M2 7.5\""); + fr.epdPrintf(10, 350, 0, rotation::ROTATE_0, "Tag MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", mSelfMac[7], mSelfMac[6], mSelfMac[5], mSelfMac[4], mSelfMac[3], mSelfMac[2], mSelfMac[1], mSelfMac[0]); + selectLUT(1); + draw(); + epdEnterSleep(); +} + +void showApplyUpdate() { + epdSetup(); + fontrender fr((char *)"font/FreeSansBold24pt7b"); + fr.epdPrintf(5, 5, 0, rotation::ROTATE_0, (char *)"Updating..."); + fr.setFont((char *)"font/FreeSansBold18pt7b"); + fr.epdPrintf(40, 160, 1, rotation::ROTATE_0, "This shouldn't take too long!"); + // epdPrintf(90, 170, 1, "Performing update... This shouldn't take too long!"); + + addOverlay(); + drawNoWait(); +} + +void showAPFound() { + fs->init(); + epdSetup(); + fontrender fr((char *)"font/FreeSansBold24pt7b"); + fr.epdPrintf(5, 5, 0, rotation::ROTATE_0, (char *)"OpenEPaperLink"); + fr.setFont((char *)"font/FreeSansBold18pt7b"); + fr.epdPrintf(20, 70, 0, rotation::ROTATE_0, "AP Found at channel %d", currentChannel); + fr.epdPrintf(20, 110, 0, rotation::ROTATE_0, "AP MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", APmac[7], APmac[6], APmac[5], APmac[4], APmac[3], APmac[2], APmac[1], APmac[0]); + fr.epdPrintf(10, 315, 0, rotation::ROTATE_0, "Battery: %d.%dV", batteryVoltage / 1000, batteryVoltage % 1000); + fr.epdPrintf(10, 350, 0, rotation::ROTATE_0, "Tag MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", mSelfMac[7], mSelfMac[6], mSelfMac[5], mSelfMac[4], mSelfMac[3], mSelfMac[2], mSelfMac[1], mSelfMac[0]); + selectLUT(1); + draw(); + epdEnterSleep(); +} + +void showNoAP() { + fs->init(); + + epdSetup(); + addCompressedFSImage(228, 24, rotation::ROTATE_0, (char *)"img/sadpanda.z"); + // addCompressedFSImage(0, 0, rotation::ROTATE_0, (char *)"forecast75.raw.z"); + + fontrender fr((char *)"font/FreeSansBold24pt7b"); + fr.epdPrintf(5, 5, 0, rotation::ROTATE_0, (char *)"No AP Found!"); + fr.setFont((char *)"font/FreeSansBold18pt7b"); + fr.epdPrintf(20, 70, 1, rotation::ROTATE_0, "We'll try again later\""); + // epdPrintf(10, 10, 1, "OpenEPaperLink "); + // epdPrintf(10, 40, 1, "No AP found... We'll try again in a little while though!"); + // epdPrintf(10, 350, 1, "Tag MAC: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", mSelfMac[7], mSelfMac[6], mSelfMac[5], mSelfMac[4], mSelfMac[3], mSelfMac[2], mSelfMac[1], mSelfMac[0]); + addOverlay(); + draw(); + epdEnterSleep(); +} + +void showLongTermSleep() { + // selectLUT(EPD_LUT_NO_REPEATS); + // clearScreen(); + + // epdPrintBegin(2, SCREEN_HEIGHT - 16, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + // epdpr("zZ"); + // epdPrintEnd(); + + addOverlay(); + // drawWithSleep(); +} +void showNoEEPROM() { + // selectLUT(EPD_LUT_NO_REPEATS); + // clearScreen(); +#if (SCREEN_WIDTH == 400) // 4.2" + epdPrintBegin(50, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("EEPROM FAILED :("); + epdPrintEnd(); + loadRawBitmap(failed, 176, 126, EPD_COLOR_RED); + epdPrintBegin(100, 284, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("Sleeping forever :'("); + epdPrintEnd(); +#endif + // drawWithSleep(); +} + +void showNoMAC() { + // selectLUT(EPD_LUT_NO_REPEATS); + // clearScreen(); +#if (SCREEN_WIDTH == 400) // 4.2" + epdPrintBegin(100, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("NO MAC SET :("); + epdPrintEnd(); + loadRawBitmap(failed, 176, 126, EPD_COLOR_RED); + epdPrintBegin(100, 284, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("Sleeping forever :'("); + epdPrintEnd(); +#endif + // drawWithSleep(); +} diff --git a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/zigbee.c b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/zigbee.c index 59f5b80b..47af6576 100644 --- a/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/zigbee.c +++ b/ARM_Tag_FW/88MZ100_OpenEpaperLink_7.4/zigbee.c @@ -1,8 +1,8 @@ //#include #include -#include "util.h" +#include "mz100/util.h" #include "zigbee.h" -#include "printf.h" +#include "mz100/printf.h" volatile uint8_t calibration_irq_ocoured = 0; volatile uint8_t zigbee_tx_done = 0; @@ -551,4 +551,4 @@ void radioRxEnable(uint8_t state) void radioRxFlush() { -} \ No newline at end of file +} diff --git a/ARM_Tag_FW/common/bitmaps.h b/ARM_Tag_FW/common/bitmaps.h new file mode 100644 index 00000000..080d99ec --- /dev/null +++ b/ARM_Tag_FW/common/bitmaps.h @@ -0,0 +1,1867 @@ + +// images generated by https://lvgl.io/tools/imageconverter, prepended with width, height. "CF_INDEXED_1_BIT"-mode, little-endian +#include + +static const uint8_t oepli[] = { + 128,0x00, 26,0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x9f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x01, 0xc0, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x9f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x01, 0xc0, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x9f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x01, 0xc0, + 0xf7, 0x80, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x01, 0xc0, + 0xe3, 0x80, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x01, 0xc0, + 0xe3, 0x9d, 0xc1, 0xc7, 0x70, 0x1f, 0x9c, 0xe7, 0x73, 0xb8, 0x71, 0xd0, 0x38, 0x73, 0xb9, 0xc7, + 0xe3, 0x9f, 0xe3, 0xe7, 0xf8, 0x1f, 0x9f, 0xef, 0xf3, 0xfc, 0xf9, 0xf0, 0x38, 0x73, 0xfd, 0xce, + 0xe3, 0x9f, 0xe7, 0x77, 0xf8, 0x1f, 0x9f, 0xcf, 0xf3, 0xfd, 0xdd, 0xf0, 0x38, 0x73, 0xfd, 0xdc, + 0xe3, 0x9c, 0xe7, 0xf7, 0x38, 0x1c, 0x1f, 0x8e, 0x73, 0x9d, 0xfd, 0xc0, 0x38, 0x73, 0x9d, 0xf8, + 0xe3, 0x9c, 0xe7, 0xf7, 0x38, 0x1c, 0x1c, 0x0e, 0x73, 0x9d, 0xfd, 0xc0, 0x38, 0x73, 0x9d, 0xf8, + 0xf7, 0x9c, 0xe7, 0x07, 0x38, 0x1c, 0x1c, 0x0e, 0x73, 0x9d, 0xc1, 0xc0, 0x38, 0x73, 0x9d, 0xdc, + 0x7f, 0x1f, 0xe7, 0xf7, 0x38, 0x1f, 0x9c, 0x0f, 0xf3, 0xfd, 0xfd, 0xc0, 0x3f, 0x73, 0x9d, 0xdc, + 0x7f, 0x1f, 0xe3, 0xe7, 0x38, 0x1f, 0x9c, 0x0f, 0xf3, 0xfc, 0xf9, 0xc0, 0x3f, 0x73, 0x9d, 0xce, + 0x1e, 0x1d, 0xc1, 0xc7, 0x38, 0x1f, 0x9c, 0x07, 0x73, 0xb8, 0x71, 0xc0, 0x3f, 0x73, 0x9d, 0xc7, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; + +static const uint8_t cloud[] = { + 128,0x00, 50,0x00 , + 0x00, 0x08, 0x82, 0xa2, 0xab, 0x55, 0xbf, 0xff, 0xff, 0xff, 0x7d, 0xb4, 0x62, 0x28, 0x00, 0x00, + 0x00, 0x10, 0x10, 0x11, 0x76, 0xff, 0x7b, 0xff, 0xff, 0x7f, 0xb7, 0xa9, 0x55, 0x50, 0x51, 0x00, + 0x00, 0x29, 0x22, 0x96, 0x6f, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0xea, 0xe6, 0x22, 0xaa, 0x08, 0x00, + 0x00, 0x02, 0x54, 0x2a, 0xbf, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xfd, 0x59, 0xb4, 0x10, 0x20, 0x00, + 0x00, 0x24, 0x23, 0xb5, 0xb5, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf6, 0xae, 0x48, 0x55, 0x10, 0x00, + 0x00, 0x88, 0x90, 0x54, 0x6a, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xf5, 0xa3, 0x82, 0x00, 0x00, + 0x00, 0x01, 0x2d, 0xa3, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0xbe, 0x4e, 0x52, 0x09, 0x00, + 0x04, 0x90, 0x02, 0x0d, 0x55, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xdd, 0x68, 0xa9, 0x00, 0x10, + 0x00, 0x49, 0x0c, 0xfb, 0xab, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xeb, 0x95, 0x5a, 0x00, 0x20, + 0x00, 0x12, 0x91, 0x22, 0xbf, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x65, 0x81, 0x40, 0x40, + 0x00, 0x28, 0x12, 0x7d, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xab, 0x28, 0x00, 0x00, + 0x00, 0x42, 0x0a, 0x97, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x4a, 0xc2, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x02, 0x9c, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x6a, 0x8d, 0x00, 0x20, + 0x00, 0x04, 0x4d, 0x72, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0xd5, 0x74, 0x80, 0x00, + 0x02, 0x40, 0x12, 0x8e, 0xdf, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xae, 0xaa, 0x0a, 0x11, 0x20, + 0x00, 0x20, 0x52, 0x5f, 0xf5, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x72, 0x94, 0xaa, 0x24, 0x00, + 0x00, 0x01, 0x0a, 0xab, 0x6f, 0x77, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xaf, 0x54, 0x54, 0x88, 0x00, + 0x00, 0x04, 0x80, 0x4d, 0x95, 0xeb, 0xff, 0xff, 0xff, 0xff, 0x5b, 0x58, 0xb5, 0x51, 0x40, 0x00, + 0x00, 0x08, 0x08, 0xa6, 0xb3, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xad, 0x4a, 0xa0, 0x10, 0x00, + 0x00, 0x02, 0x96, 0x41, 0xdc, 0xae, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xbf, 0xea, 0x48, 0x02, 0x00, + 0x00, 0x00, 0x09, 0x3e, 0xab, 0x75, 0xef, 0xff, 0xff, 0xff, 0xff, 0xd4, 0xb1, 0x21, 0x08, 0x00, + 0x00, 0x00, 0x0a, 0xc3, 0x5d, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xef, 0xef, 0x44, 0x4a, 0x64, 0x80, + 0x00, 0x00, 0xa1, 0x52, 0xa6, 0xef, 0xef, 0xff, 0xff, 0xff, 0xd6, 0xca, 0xf5, 0x10, 0x18, 0x00, + 0x00, 0x00, 0x02, 0x15, 0x4b, 0xd5, 0xdf, 0xff, 0xff, 0xf7, 0xeb, 0xd4, 0xd8, 0x85, 0x00, 0x00, +}; + +static const uint8_t receive[] = { + 56, 0x00, 56,0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xf0, + 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xf0, + 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xc0, + 0x00, 0x00, 0x00, 0x1f, 0xff, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x03, 0xe0, + 0x00, 0x00, 0x7f, 0x80, 0x00, 0x7f, 0xf0, + 0x00, 0x00, 0xfe, 0x00, 0x03, 0xff, 0xf0, + 0x00, 0x01, 0xfc, 0x00, 0x0f, 0xff, 0xf0, + 0x00, 0x01, 0xf8, 0x00, 0x3f, 0xff, 0xf0, + 0x00, 0x03, 0xf8, 0x00, 0xff, 0xff, 0x80, + 0x00, 0x07, 0xf0, 0x01, 0xff, 0xe0, 0x00, + 0x00, 0x0f, 0xe0, 0x03, 0xff, 0x00, 0x00, + 0x00, 0x0f, 0xc0, 0x0f, 0xf8, 0x00, 0x00, + 0x00, 0x1f, 0x80, 0x1f, 0xf0, 0x00, 0x00, + 0x00, 0x1f, 0x80, 0x3f, 0xc0, 0x00, 0x00, + 0x00, 0x3f, 0x00, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x3f, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0x7e, 0x00, 0xfe, 0x00, 0x07, 0xe0, + 0x00, 0x7e, 0x01, 0xfc, 0x00, 0x1f, 0xf0, + 0x00, 0xfc, 0x01, 0xf8, 0x00, 0x7f, 0xf0, + 0x00, 0xfc, 0x03, 0xf0, 0x01, 0xff, 0xf0, + 0x00, 0xf8, 0x03, 0xf0, 0x03, 0xff, 0xf0, + 0x01, 0xf8, 0x07, 0xe0, 0x07, 0xff, 0x00, + 0x01, 0xf8, 0x07, 0xe0, 0x0f, 0xf0, 0x00, + 0x01, 0xf0, 0x0f, 0xc0, 0x1f, 0xe0, 0x00, + 0x01, 0xf0, 0x0f, 0xc0, 0x3f, 0x80, 0x00, + 0x03, 0xf0, 0x0f, 0x80, 0x3f, 0x00, 0x00, + 0x03, 0xf0, 0x1f, 0x80, 0x7e, 0x00, 0x00, + 0x03, 0xe0, 0x1f, 0x80, 0x7e, 0x00, 0x00, + 0x03, 0xe0, 0x1f, 0x00, 0xfc, 0x01, 0xe0, + 0x03, 0xe0, 0x1f, 0x00, 0xfc, 0x07, 0xf8, + 0x03, 0xe0, 0x1f, 0x00, 0xf8, 0x0f, 0xfc, + 0x03, 0xe0, 0x3f, 0x00, 0xf8, 0x0f, 0xfc, + 0x03, 0xe0, 0x3f, 0x01, 0xf8, 0x1f, 0xfe, + 0x03, 0xe0, 0x3f, 0x01, 0xf8, 0x1f, 0xfe, + 0x03, 0xe0, 0x3f, 0x01, 0xf8, 0x1f, 0xfe, + 0x03, 0xc0, 0x3e, 0x01, 0xf0, 0x1f, 0xfe, + 0x01, 0xc0, 0x1e, 0x00, 0xf0, 0x0f, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + + +static const uint8_t failed[] = { + 48, 0x00,48,0x00, + 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x03, 0xff, 0xff, 0xe0, 0x00, + 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, + 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, + 0x00, 0x7f, 0xf0, 0x0f, 0xfe, 0x00, + 0x00, 0xff, 0x80, 0x01, 0xff, 0x00, + 0x01, 0xfe, 0x00, 0x00, 0x7f, 0x80, + 0x03, 0xf8, 0x00, 0x00, 0x1f, 0xc0, + 0x07, 0xf0, 0x00, 0x00, 0x3f, 0xe0, + 0x0f, 0xe0, 0x00, 0x00, 0x7f, 0xf0, + 0x0f, 0xc0, 0x00, 0x00, 0xff, 0xf0, + 0x1f, 0x80, 0x00, 0x01, 0xff, 0xf8, + 0x1f, 0x00, 0x00, 0x03, 0xff, 0xf8, + 0x3f, 0x00, 0x00, 0x07, 0xfe, 0xfc, + 0x3e, 0x00, 0x00, 0x0f, 0xfc, 0x7c, + 0x7e, 0x00, 0x00, 0x1f, 0xf8, 0x7e, + 0x7c, 0x00, 0x00, 0x3f, 0xf0, 0x3e, + 0x7c, 0x00, 0x00, 0x7f, 0xe0, 0x3e, + 0xfc, 0x00, 0x00, 0xff, 0xc0, 0x3f, + 0xf8, 0x00, 0x01, 0xff, 0x80, 0x1f, + 0xf8, 0x00, 0x03, 0xff, 0x00, 0x1f, + 0xf8, 0x00, 0x07, 0xfe, 0x00, 0x1f, + 0xf8, 0x00, 0x0f, 0xfc, 0x00, 0x1f, + 0xf8, 0x00, 0x1f, 0xf8, 0x00, 0x1f, + 0xf8, 0x00, 0x3f, 0xf0, 0x00, 0x1f, + 0xf8, 0x00, 0x7f, 0xe0, 0x00, 0x1f, + 0xf8, 0x00, 0xff, 0xc0, 0x00, 0x1f, + 0xfc, 0x01, 0xff, 0x80, 0x00, 0x3f, + 0x7c, 0x03, 0xff, 0x00, 0x00, 0x3e, + 0x7c, 0x07, 0xfe, 0x00, 0x00, 0x3e, + 0x7e, 0x0f, 0xfc, 0x00, 0x00, 0x7e, + 0x3e, 0x1f, 0xf8, 0x00, 0x00, 0x7c, + 0x3f, 0x3f, 0xf0, 0x00, 0x00, 0xfc, + 0x3f, 0x7f, 0xe0, 0x00, 0x00, 0xfc, + 0x1f, 0xff, 0xc0, 0x00, 0x01, 0xf8, + 0x0f, 0xff, 0x80, 0x00, 0x03, 0xf0, + 0x0f, 0xff, 0x00, 0x00, 0x07, 0xf0, + 0x07, 0xfe, 0x00, 0x00, 0x0f, 0xe0, + 0x03, 0xfc, 0x00, 0x00, 0x1f, 0xc0, + 0x01, 0xfe, 0x00, 0x00, 0x7f, 0x80, + 0x00, 0xff, 0x80, 0x01, 0xff, 0x00, + 0x00, 0x7f, 0xf0, 0x0f, 0xfe, 0x00, + 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, + 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, + 0x00, 0x03, 0xff, 0xff, 0xe0, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, +}; + +static const uint8_t ant[] = { + 16,0x00, 16,0x00, + 0x00, 0x40, + 0x02, 0x20, + 0x01, 0x20, + 0x11, 0x20, + 0x11, 0x20, + 0x12, 0x20, + 0x28, 0x40, + 0x28, 0x00, + 0x28, 0x00, + 0x44, 0x00, + 0x44, 0x00, + 0x44, 0x00, + 0x44, 0x00, + 0x82, 0x00, + 0x82, 0x00, + 0xfe, 0x00, +}; + +static const uint8_t cross[] = { + 8,0x00, 8,0x00, + 0x00, + 0x63, + 0x77, + 0x3e, + 0x1c, + 0x3e, + 0x77, + 0x63 +}; + +static const uint8_t battery[] = { + 16,0x00,10,0x00, + 0x00, 0x00, + 0x7f, 0xfc, + 0x40, 0x04, + 0x58, 0x06, + 0x58, 0x06, + 0x58, 0x06, + 0x58, 0x06, + 0x40, 0x04, + 0x7f, 0xfc, + 0x00, 0x00, +}; +static const uint8_t pandablack[] = { + 0x58,0x02,0x62,0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdf, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0xd3, 0xbf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xbb, 0x6c, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf6, 0xc9, 0x24, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfd, 0x94, 0xcc, 0x93, 0x21, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe4, 0xd9, 0x32, 0xc8, 0x90, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x9b, 0x26, 0x42, 0x28, 0x8c, 0x8f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf6, 0xd9, 0x24, 0x99, 0x26, 0x22, 0x61, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xd9, 0x24, 0x91, 0x84, 0x01, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x49, 0x24, 0x92, 0x20, 0xc8, 0x44, 0x92, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf9, 0x66, 0xc8, 0x08, 0x22, 0x04, 0x81, 0x24, 0x87, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xcc, 0x92, 0x02, 0x41, 0x08, 0x21, 0x28, 0x09, 0x13, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe6, 0x98, 0x20, 0x10, 0x41, 0x08, 0x02, 0x41, 0x48, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x31, 0x21, 0x09, 0x04, 0x04, 0x06, 0xd0, 0x10, 0x48, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x12, 0x44, 0x40, 0x41, 0x00, 0xf7, 0xff, 0x84, 0x23, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd9, 0xc8, 0x80, 0x10, 0x00, 0x0b, 0xff, 0x6f, 0x61, 0x08, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf4, 0x24, 0x21, 0x00, 0x00, 0x1f, 0xfb, 0x79, 0xdc, 0x42, 0x83, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xa6, 0x21, 0x00, 0x00, 0x00, 0x3f, 0x9b, 0x9e, 0xdf, 0x00, 0x98, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xa9, 0x80, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xf7, 0x67, 0x88, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x48, 0x04, 0x00, 0x00, 0x00, 0x7f, 0xef, 0xfd, 0xf9, 0xe2, 0x11, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x52, 0x10, 0x00, 0x00, 0x00, 0x77, 0x7b, 0x6f, 0xbe, 0x70, 0x04, 0x8f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xdf, 0xfe, 0xef, 0xdc, 0x42, 0x4f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x20, 0x40, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xdb, 0xfb, 0xff, 0x10, 0x53, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xee, 0xff, 0xff, 0x7e, 0xed, 0xc4, 0x91, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcc, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xbb, 0x6d, 0xdf, 0xbf, 0x70, 0x24, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xbf, 0xff, 0xf7, 0xf6, 0xe1, 0x0b, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdc, 0xed, 0xb6, 0xfd, 0xde, 0xe0, 0x48, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf7, 0xff, 0xff, 0xbf, 0x7b, 0x62, 0x04, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf6, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x76, 0xdb, 0xef, 0xef, 0xa0, 0x24, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfd, 0x20, 0x20, 0x00, 0x00, 0x00, 0x01, 0xdd, 0xdf, 0xfe, 0xfb, 0xbd, 0xe0, 0x02, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xed, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0xff, 0xbb, 0x67, 0xbe, 0xff, 0x61, 0x11, 0x19, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe6, 0xef, 0xff, 0xef, 0xee, 0xc0, 0x44, 0x43, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xba, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfd, 0xbb, 0xfb, 0x7b, 0xc0, 0x00, 0x48, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xdd, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb7, 0x77, 0xef, 0x7f, 0xdf, 0x40, 0x09, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf7, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xed, 0xde, 0xfd, 0xdd, 0xf7, 0x40, 0x80, 0x26, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xfe, 0xc8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0xef, 0xfb, 0xb7, 0xf7, 0x7d, 0x80, 0x00, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xbf, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbb, 0x6f, 0xff, 0x7f, 0xdf, 0x80, 0x01, 0x10, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfb, 0xed, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfd, 0xdb, 0xdb, 0xfb, 0x80, 0x10, 0x06, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdd, 0xb7, 0x7e, 0xfe, 0xef, 0x00, 0x00, 0x20, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfd, 0xb7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf7, 0xff, 0xef, 0xb7, 0xbd, 0x00, 0x00, 0x00, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xef, 0xfd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbe, 0xdb, 0x7b, 0xff, 0xff, 0x00, 0x02, 0x04, 0x21, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xbf, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xeb, 0xff, 0x76, 0xdb, 0xee, 0x00, 0x00, 0x01, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xfb, 0xef, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdf, 0x6d, 0xdf, 0xfe, 0xfc, 0x00, 0x00, 0x40, 0x40, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0xfb, 0x7f, 0xbc, 0x00, 0x00, 0x00, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xdd, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xb6, 0xef, 0xdb, 0xf8, 0x00, 0x00, 0x08, 0x82, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xf7, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xbd, 0xfe, 0xf8, 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfd, 0xbe, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdb, 0xf7, 0xb7, 0xe0, 0x00, 0x00, 0x00, 0x21, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xef, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0xde, 0xff, 0xe0, 0x00, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xef, 0x7b, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0xbf, 0xfb, 0xdb, 0xc0, 0x00, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7b, 0xdf, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xed, 0xbf, 0xff, 0x80, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x7f, 0xed, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb7, 0xbb, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xdb, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfd, 0xef, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x1f, 0xff, 0xf6, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xfb, 0x7e, 0xf8, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xf9, 0x0e, 0xed, 0xdf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xee, 0xdf, 0xec, 0x00, 0x00, 0x00, 0x06, 0xff, 0xff, 0xff, 0xef, 0xbf, 0x7b, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7b, 0xf7, 0xb8, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xff, 0xdf, 0xfb, 0xf7, 0xee, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfd, 0xbd, 0xf8, 0x00, 0x00, 0x00, 0x0f, 0xf7, 0xf6, 0xff, 0x7f, 0xff, 0xbd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xbe, 0xef, 0xfc, 0x00, 0x00, 0x00, 0x0e, 0xdf, 0x7f, 0xbb, 0xdf, 0xfb, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfb, 0xfe, 0xd0, 0x00, 0x00, 0x00, 0x1f, 0xfb, 0xdb, 0xfe, 0xf7, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xb7, 0xf8, 0x00, 0x00, 0x00, 0x17, 0x6e, 0xfe, 0xdf, 0xfd, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb8, 0x00, 0x00, 0x00, 0x1d, 0xff, 0xb6, 0xf7, 0x6f, 0x6f, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xde, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0xb7, 0x6d, 0xb5, 0xff, 0xfd, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1e, 0xfd, 0xd9, 0x2d, 0x97, 0xdf, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfb, 0xf8, 0x00, 0x00, 0x00, 0x3b, 0xdb, 0x77, 0x6a, 0x74, 0xf7, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xef, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0xfb, 0x64, 0xca, 0xdf, 0x7f, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0x6d, 0x9b, 0x11, 0x25, 0xde, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x11, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xf0, 0x00, 0x00, 0x00, 0x3d, 0xfd, 0xd2, 0x45, 0x6d, 0xbf, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x37, 0xdb, 0x64, 0xc9, 0x9b, 0x79, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x3f, 0x7b, 0x39, 0xaa, 0xdb, 0xfe, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3f, 0xfd, 0xce, 0x66, 0x6c, 0xfa, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0xf6, 0xd3, 0x59, 0xb7, 0xfb, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3f, 0xbb, 0x3d, 0x9e, 0xb7, 0xb7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1f, 0xfb, 0x6d, 0xe6, 0xdf, 0xe5, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1d, 0xf6, 0xd6, 0x7b, 0x7f, 0x6d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3f, 0xbd, 0xb7, 0x9b, 0x7f, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x02, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1e, 0xed, 0xb9, 0xed, 0xfc, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1f, 0xfb, 0x6e, 0x77, 0xf7, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0f, 0xdb, 0x7b, 0xdf, 0xcb, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x0e, 0xfd, 0xdb, 0xff, 0x3b, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0f, 0xb7, 0x6d, 0xb6, 0x66, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0f, 0xfb, 0x6f, 0x7c, 0xdd, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x84, 0x12, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x0e, 0xfb, 0xbb, 0xeb, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0xbe, 0xfe, 0xeb, 0x36, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x10, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0xef, 0xdf, 0xdd, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x7b, 0x7f, 0x56, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x04, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0xdf, 0xff, 0xb3, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0xf7, 0xfc, 0xbf, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0xbf, 0xf7, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x03, 0xff, 0xf6, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x04, 0x02, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x03, 0xff, 0x9f, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x00, 0x10, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x40, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x01, 0xdf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x01, 0xfd, 0xe4, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x24, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x01, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x20, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x01, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc0, 0x00, 0x00, 0x00, 0x13, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x10, 0x00, 0x01, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x22, 0x00, 0x00, 0x00, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x84, 0x80, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xec, 0x99, 0x80, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x20, 0x20, 0x01, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x6e, 0xcf, 0x60, 0x00, 0x00, 0x09, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x09, 0x08, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xdb, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x92, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x04, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x44, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x49, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x77, 0xff, 0xb4, 0xfc, 0x00, 0x00, 0x02, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0xfb, 0x6f, 0x7e, 0x00, 0x00, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xff, 0xee, 0xdb, 0x7e, 0x00, 0x00, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xff, 0xbd, 0xb4, 0xdf, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x6f, 0xfe, 0xe7, 0x6f, 0xb7, 0x80, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0xfb, 0xbb, 0x6a, 0xb7, 0xc0, 0x00, 0x02, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xee, 0xdb, 0x9a, 0xdb, 0xc0, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xff, 0xb6, 0xdc, 0xf7, 0x6d, 0xe0, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xfe, 0xdb, 0x67, 0x2d, 0x6d, 0xf0, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xfe, 0xdb, 0x7b, 0xc9, 0x9b, 0x70, 0x00, 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf7, 0x6d, 0x9a, 0x7b, 0xb6, 0xf8, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0xff, 0xf5, 0xb6, 0xed, 0xb6, 0x6d, 0xfc, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xbd, 0xb6, 0xed, 0x95, 0xdb, 0x7c, 0x00, 0x00, 0x97, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xce, 0x6d, 0x9b, 0x7d, 0x9b, 0x7e, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x73, 0xd9, 0xf3, 0x6d, 0xb6, 0xde, 0x00, 0x00, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfd, 0xbd, 0x9e, 0x6d, 0xad, 0xed, 0xbe, 0x00, 0x00, 0x47, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x0d, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0xcd, 0x67, 0x9c, 0xee, 0x6d, 0xbf, 0x00, 0x00, 0x10, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x7f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf6, 0xf6, 0xf9, 0xe7, 0x73, 0xb6, 0xdf, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x13, 0xf2, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf7, 0x33, 0x9e, 0x6d, 0x9d, 0xb6, 0xff, 0x00, 0x00, 0x48, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x9d, 0xb3, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xd9, 0xcd, 0x66, 0xdb, 0xbd, 0xdb, 0x3f, 0x80, 0x00, 0x02, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x0c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbf, 0xde, 0x76, 0x79, 0xb2, 0xe6, 0x6f, 0xdf, 0x80, 0x00, 0x11, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xec, 0xe7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x67, 0x33, 0x9f, 0x6e, 0xdf, 0xbc, 0xf7, 0x80, 0x00, 0x04, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf2, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7f, 0xb9, 0xcd, 0xe5, 0xdb, 0x79, 0xef, 0xbf, 0x80, 0x00, 0x21, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xd3, 0x1d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0xdb, 0x6d, 0x36, 0x77, 0x6f, 0x73, 0xef, 0xc0, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xd9, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xfe, 0xd6, 0x66, 0xdb, 0xad, 0xb7, 0x9e, 0xff, 0xc0, 0x00, 0x04, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe4, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xfb, 0x65, 0x9b, 0xdb, 0xbb, 0xbc, 0xff, 0x37, 0xc0, 0x00, 0x10, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe4, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfd, 0xb9, 0xb9, 0x6c, 0xda, 0xef, 0xed, 0xff, 0xc0, 0x00, 0x41, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xf6, 0x9a, 0xcf, 0x37, 0x6e, 0xdb, 0x3b, 0xcf, 0xc0, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x6c, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xff, 0xfb, 0x66, 0x66, 0xdb, 0x6d, 0xdf, 0xf6, 0xfb, 0xe0, 0x00, 0x04, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xdc, 0x00, 0x00, 0x64, 0x00, 0x00, 0x01, 0xff, 0xed, 0x6d, 0xb9, 0xdb, 0xb7, 0x74, 0xdf, 0xbf, 0xc0, 0x00, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x03, 0x80, 0x00, 0x00, 0x03, 0x7f, 0xf5, 0x91, 0x2f, 0x66, 0xdb, 0x6f, 0xdb, 0x6f, 0xc0, 0x00, 0x20, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0xdf, 0xdc, 0x96, 0xcd, 0xbd, 0xdb, 0xdb, 0x7f, 0xfb, 0xc0, 0x00, 0x04, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x40, 0x38, 0x40, 0x00, 0x00, 0x18, 0x3f, 0xda, 0x66, 0x76, 0xb7, 0x6e, 0xdd, 0xed, 0xbf, 0xe0, 0x00, 0x01, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x74, 0x1f, 0x66, 0x49, 0x33, 0x99, 0xbd, 0xb6, 0xbf, 0xed, 0xc0, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe6, 0xc8, 0x00, 0x00, 0x01, 0xe1, 0x1f, 0xb1, 0x33, 0x9d, 0xee, 0xdd, 0xf6, 0xf6, 0xff, 0xe0, 0x00, 0x04, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfb, 0x80, 0x00, 0x00, 0x0f, 0x88, 0x5e, 0x99, 0x94, 0xed, 0x6e, 0xe7, 0x5f, 0xdf, 0xb7, 0xe0, 0x00, 0x10, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xb4, 0x80, 0x00, 0x6c, 0x02, 0x1f, 0xcc, 0x4d, 0x37, 0x73, 0x3f, 0x79, 0xfb, 0xfd, 0xe0, 0x00, 0x00, 0x33, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x24, 0x83, 0x00, 0x00, 0xbd, 0x66, 0x67, 0x76, 0xdd, 0xfb, 0xcf, 0x6e, 0xdf, 0xe0, 0x00, 0x00, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xfe, 0xd0, 0x00, 0x04, 0x3f, 0x31, 0x99, 0xda, 0xdd, 0xce, 0xff, 0xff, 0xf7, 0xe0, 0x00, 0x00, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xbf, 0xff, 0xf2, 0x00, 0x00, 0x21, 0x7b, 0x89, 0x2c, 0xdb, 0x67, 0x7d, 0xb6, 0xb5, 0xbd, 0xe0, 0x00, 0x00, 0x4c, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfb, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xcc, 0xce, 0xdd, 0xbd, 0xb7, 0xdf, 0xff, 0xef, 0xe0, 0x00, 0x00, 0x13, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7b, 0xc0, 0x00, 0x00, 0x00, 0x04, 0xf6, 0x64, 0x93, 0x66, 0xdb, 0xfa, 0xfb, 0x6e, 0x7b, 0xe0, 0x00, 0x00, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xde, 0x80, 0x00, 0x00, 0x00, 0x21, 0xfb, 0x13, 0x37, 0x7b, 0x6e, 0xcf, 0xbf, 0xfb, 0xdf, 0xe0, 0x00, 0x02, 0x24, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x89, 0xed, 0x92, 0x6d, 0xbb, 0x6d, 0xfd, 0xdd, 0xbf, 0xf7, 0xe0, 0x00, 0x00, 0x09, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbd, 0x80, 0x00, 0x00, 0x00, 0x03, 0xf4, 0xcc, 0xcc, 0xed, 0xdd, 0xb7, 0x77, 0xe6, 0xfd, 0xe0, 0x00, 0x00, 0x0a, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, 0x01, 0x13, 0xdb, 0x25, 0xb7, 0x6d, 0xb7, 0xb7, 0xfa, 0xff, 0xbf, 0xe0, 0x00, 0x00, 0x82, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x76, 0x00, 0x00, 0x00, 0x00, 0x07, 0xda, 0x64, 0xb7, 0x6e, 0xf6, 0xed, 0xaf, 0xbb, 0xef, 0xe0, 0x00, 0x00, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf6, 0x00, 0x00, 0x00, 0x02, 0x27, 0xec, 0x9a, 0xcc, 0xdb, 0x5e, 0xef, 0xfd, 0xee, 0xfb, 0xe0, 0x00, 0x00, 0x05, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x6d, 0x93, 0x7b, 0xb7, 0x73, 0xbb, 0x77, 0x7f, 0xbf, 0xe0, 0x00, 0x02, 0x04, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcc, 0x00, 0x00, 0x00, 0x04, 0x4f, 0xd3, 0x65, 0x2b, 0x6d, 0xdf, 0xbf, 0xbf, 0xdd, 0xed, 0xe0, 0x00, 0x00, 0x13, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x18, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x17, 0xb6, 0x4c, 0xed, 0xdb, 0x6d, 0xed, 0xed, 0xf7, 0xff, 0xe0, 0x00, 0x00, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xed, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x1f, 0x6c, 0xb3, 0x9d, 0xb6, 0xef, 0x7f, 0x7f, 0x7f, 0x77, 0xc0, 0x00, 0x00, 0x08, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xd8, 0x00, 0x00, 0x00, 0x08, 0x4f, 0x59, 0xa6, 0x76, 0xb6, 0xdb, 0x76, 0xdb, 0xdd, 0xdf, 0xc0, 0x00, 0x00, 0x43, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x9c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xd8, 0x00, 0x00, 0x00, 0x02, 0x1e, 0xd6, 0x6d, 0xd6, 0xdb, 0xde, 0xdf, 0xee, 0xf7, 0xff, 0xe0, 0x00, 0x00, 0x01, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8c, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xb3, 0x59, 0xbb, 0x6e, 0xf6, 0xf9, 0xbf, 0xbf, 0xbf, 0xc0, 0x00, 0x00, 0x08, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb2, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xf0, 0x00, 0x00, 0x00, 0x08, 0x7d, 0xad, 0x96, 0xad, 0xb6, 0xb7, 0xbf, 0xf5, 0xfe, 0xf7, 0xc0, 0x00, 0x00, 0x02, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x39, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x02, 0x3e, 0xcc, 0xe6, 0xed, 0xb7, 0xbd, 0xed, 0xbf, 0x77, 0xff, 0x80, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4c, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xb0, 0x00, 0x00, 0x00, 0x10, 0xbb, 0x73, 0x3b, 0x6e, 0xd9, 0xed, 0xef, 0xef, 0xdf, 0xdf, 0x80, 0x00, 0x00, 0x24, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd2, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x7d, 0x9b, 0x4d, 0xb3, 0x6f, 0x7b, 0x7b, 0x7b, 0xfe, 0xff, 0x80, 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x62, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xe0, 0x00, 0x00, 0x00, 0x09, 0x76, 0xcc, 0xd4, 0xdd, 0xbd, 0xdf, 0xdf, 0xde, 0xfb, 0xff, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0xa8, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xa0, 0x00, 0x00, 0x00, 0x04, 0xfe, 0xe6, 0xb7, 0x6d, 0xb6, 0xd6, 0xf6, 0xf7, 0xbf, 0xde, 0x00, 0x00, 0x00, 0x08, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0xcc, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x24, 0xfb, 0x33, 0x29, 0xb3, 0x6e, 0xff, 0xbf, 0xbd, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x51, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xdb, 0x59, 0xde, 0xde, 0xdb, 0xab, 0xed, 0xef, 0xee, 0xf8, 0x00, 0x00, 0x00, 0x04, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x92, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xc0, 0x00, 0x00, 0x00, 0x12, 0xf4, 0xcc, 0xd2, 0x6d, 0xb7, 0xbe, 0x7f, 0x7b, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x86, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x09, 0xf7, 0x36, 0x6f, 0xb7, 0x7d, 0xf7, 0xdb, 0xff, 0x7d, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x36, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xe9, 0x98, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x49, 0xdb, 0x67, 0x39, 0xb6, 0xce, 0x6d, 0xfe, 0xdd, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x18, 0xe4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x07, 0xec, 0xc9, 0xce, 0xdb, 0xbb, 0xef, 0x6f, 0xf7, 0xef, 0x80, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x46, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x23, 0xb6, 0xba, 0x76, 0xdb, 0x7b, 0xbb, 0xfb, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x67, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x0b, 0xdb, 0xa7, 0x9b, 0x6d, 0xce, 0xfe, 0xdf, 0xdf, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x04, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xd9, 0x74, 0xed, 0xb6, 0xfe, 0xd7, 0xf7, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0x19, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xd8, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x17, 0x6f, 0x5b, 0x66, 0xdb, 0x33, 0xfd, 0xbd, 0xfb, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x70, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xec, 0xdb, 0xf7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x97, 0xaa, 0xce, 0x5b, 0x6d, 0xff, 0x3f, 0xef, 0x7f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x61, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xbb, 0xfe, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x27, 0xbb, 0x33, 0xdb, 0x6d, 0xad, 0xed, 0xfb, 0xef, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x02, 0x19, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x41, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xef, 0x6f, 0xcd, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x67, 0xdd, 0x6d, 0xb6, 0xef, 0xff, 0x7f, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc4, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x6d, 0xfb, 0xf7, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x79, 0x67, 0x36, 0xdb, 0xda, 0xdb, 0xdd, 0xdf, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x26, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x7f, 0xbf, 0x3b, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x9f, 0x3a, 0xdb, 0x6d, 0x7e, 0xfe, 0xf7, 0xfd, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0xd6, 0xef, 0xce, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe6, 0xdb, 0xdb, 0x6d, 0xe7, 0xb7, 0xbf, 0xbf, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x19, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbd, 0xb7, 0xfe, 0xfd, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x04, 0x5e, 0xec, 0xd6, 0x6d, 0xb6, 0xfd, 0xfd, 0xfe, 0xfb, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xed, 0xfd, 0xbc, 0xb7, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x3b, 0x75, 0xb6, 0xdb, 0x9b, 0x6f, 0x77, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x7e, 0x5f, 0xff, 0x36, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x02, 0x3d, 0xdb, 0x5d, 0xb6, 0xdb, 0xfb, 0xfb, 0xff, 0xed, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xdb, 0xf6, 0xd9, 0x6d, 0xbd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xbd, 0xb6, 0xd6, 0x6d, 0xbc, 0xec, 0xde, 0xee, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xfb, 0x27, 0xfc, 0xfb, 0x6f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x08, 0xb6, 0xed, 0xb7, 0xbb, 0x67, 0xb7, 0xf7, 0xff, 0xdf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xfd, 0x8b, 0x76, 0x9b, 0xfb, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x7b, 0x5b, 0x69, 0xb6, 0xdf, 0x77, 0x7d, 0xfd, 0xf7, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xf6, 0x83, 0xf3, 0xfe, 0xbe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x7d, 0xda, 0x6e, 0xd6, 0xf5, 0xdd, 0xdf, 0xbf, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xfa, 0x03, 0xbd, 0xe7, 0xef, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x09, 0x76, 0xb7, 0xb6, 0xdb, 0x37, 0x7d, 0xf7, 0xfb, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x7b, 0x13, 0xf7, 0x81, 0xfb, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x01, 0x7b, 0x6c, 0xd9, 0xbb, 0xde, 0xef, 0x7d, 0xff, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x76, 0x07, 0xf7, 0x36, 0xdd, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x14, 0xed, 0x6b, 0x5b, 0x6c, 0xdb, 0xbb, 0xdf, 0xef, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0xfc, 0x8d, 0xbd, 0x04, 0xf7, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x04, 0xf7, 0xbb, 0x6e, 0xdf, 0x6f, 0xde, 0xf6, 0xfe, 0xef, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xee, 0x4f, 0xee, 0x49, 0xbe, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x23, 0xf6, 0xdb, 0x6d, 0xb3, 0x7a, 0xf7, 0xbf, 0xdf, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xf6, 0x13, 0xf6, 0x25, 0xeb, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x89, 0xec, 0xd6, 0xd7, 0x6d, 0xb7, 0xbd, 0xfb, 0xfb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf7, 0xb6, 0x9f, 0x76, 0x96, 0xfb, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x09, 0xef, 0x76, 0xb5, 0xdd, 0xb7, 0x6f, 0x7f, 0xbe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfb, 0xfe, 0x4f, 0xfe, 0x53, 0xde, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x27, 0xf3, 0x6d, 0xad, 0xb6, 0xdd, 0xfb, 0xed, 0xff, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x6f, 0x3d, 0xb6, 0x0d, 0xf7, 0xbe, 0x59, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x02, 0x11, 0xdd, 0xbb, 0x6e, 0x6e, 0xf7, 0xbf, 0xbf, 0x77, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7d, 0xdb, 0xf7, 0xdc, 0xad, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x69, 0x92, 0x00, 0x97, 0xf0, 0x00, 0x00, 0x00, 0x4b, 0xdd, 0xae, 0xdb, 0xdb, 0xbb, 0xed, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xdc, 0xde, 0xee, 0x67, 0xaf, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x41, 0x0b, 0xe6, 0xe6, 0xb6, 0xdb, 0x6e, 0x7f, 0xed, 0xef, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x02, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf6, 0xf7, 0xfb, 0xb7, 0x1f, 0xfb, 0xdd, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xe0, 0x00, 0x02, 0x00, 0x27, 0xbb, 0xb9, 0xb6, 0xed, 0xf7, 0xdb, 0x7f, 0xbf, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x88, 0x20, 0x10, 0x20, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xbd, 0xbf, 0xdb, 0xfe, 0x76, 0xfc, 0xd9, 0x82, 0x49, 0x2d, 0xb7, 0xd9, 0x2f, 0xe0, 0x00, 0x00, 0x02, 0x27, 0xdb, 0x6f, 0x6d, 0xb7, 0x3d, 0xef, 0xdb, 0xfd, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x22, 0x08, 0x40, 0x09, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x90, 0x91, 0xb0, 0x00, 0x00, 0x00, 0x07, 0x6d, 0xef, 0xed, 0xee, 0xf9, 0xdf, 0xbe, 0x4d, 0x7b, 0x6d, 0x24, 0x94, 0x4d, 0xbf, 0xe0, 0x00, 0x00, 0x08, 0x1b, 0xdd, 0xd3, 0x6d, 0xb6, 0xef, 0x7e, 0xff, 0xef, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x20, 0x00, 0x01, 0x00, 0x00, 0x02, 0x10, + 0x00, 0x08, 0x00, 0x00, 0x13, 0x59, 0x20, 0x64, 0x00, 0x66, 0x80, 0x00, 0x00, 0x0d, 0xf7, 0x7b, 0x6f, 0x3b, 0xef, 0xdb, 0xdf, 0xb6, 0x4d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdf, 0xe0, 0x00, 0x00, 0x20, 0xc7, 0x66, 0xdd, 0xb6, 0xde, 0xf3, 0xdb, 0xf7, 0x7e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x01, 0x40, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x10, 0x08, 0x08, 0x40, 0x04, 0x90, 0x10, 0x00, + 0x09, 0x20, 0x84, 0x92, 0x48, 0xcd, 0x92, 0x21, 0x26, 0x40, 0xb0, 0x00, 0x00, 0x0e, 0x9f, 0xde, 0xfb, 0xf7, 0x7b, 0x7e, 0xfc, 0xb3, 0xb4, 0x92, 0xdb, 0x6b, 0x32, 0xcf, 0xc0, 0x00, 0x08, 0x80, 0x1f, 0xbb, 0x36, 0xdb, 0x6b, 0xdf, 0xff, 0xbd, 0xf7, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x04, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x02, 0x42, 0x40, 0x12, 0x00, 0x04, 0x44, 0x48, + 0x00, 0x04, 0xa0, 0x02, 0xc0, 0x00, 0x5a, 0x9b, 0x7b, 0x9f, 0x06, 0x92, 0x4e, 0x8f, 0xf9, 0xdb, 0xbc, 0xdd, 0x9d, 0xef, 0xbe, 0xcc, 0xb7, 0x6d, 0x24, 0x99, 0xcf, 0x7f, 0xe0, 0x04, 0x00, 0x02, 0x4f, 0xbd, 0xeb, 0x6d, 0xbb, 0x7d, 0xbf, 0xef, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x12, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x48, 0x10, 0x04, 0x80, 0x92, 0x41, 0x01, 0x02, + 0x36, 0x90, 0x6b, 0x68, 0x16, 0x72, 0x42, 0xc8, 0x49, 0xb5, 0x6c, 0x02, 0xd0, 0x9d, 0x6f, 0x7b, 0xcf, 0xdb, 0xf7, 0xbb, 0xee, 0x6d, 0x99, 0x6d, 0xed, 0xb6, 0x79, 0xbf, 0xc0, 0x00, 0x00, 0x00, 0x4f, 0x66, 0xcd, 0xb6, 0xdf, 0xef, 0xee, 0xff, 0xbb, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x4b, 0x21, 0x21, 0x80, 0x20, 0x00, 0x00, 0x04, 0x00, 0x82, 0x00, 0x84, 0x90, 0x24, 0x00, 0x49, 0x28, 0x24, + 0x49, 0xb7, 0x1a, 0x49, 0x11, 0x92, 0x24, 0x27, 0x26, 0x65, 0xb1, 0xeb, 0x60, 0x3d, 0xdb, 0xb6, 0xfb, 0x6e, 0x7e, 0xf6, 0xfd, 0xb3, 0x6d, 0x99, 0x33, 0x66, 0xce, 0xcf, 0xc0, 0x08, 0x22, 0x11, 0x3e, 0xdb, 0x36, 0xdb, 0x76, 0xfb, 0x7f, 0xfd, 0xfe, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1b, 0x24, 0x08, 0x4c, 0x00, 0x80, 0x00, 0x00, 0x12, 0x44, 0x20, 0x92, 0x00, 0x13, 0x04, 0xdd, 0x12, 0x4a, 0x81, + 0x49, 0x64, 0xc4, 0x96, 0xcc, 0x89, 0x91, 0x21, 0x90, 0x0a, 0x36, 0x39, 0x2d, 0x1f, 0x7a, 0xee, 0xf7, 0xbb, 0xce, 0xdf, 0xbd, 0x9c, 0xcc, 0xd6, 0xda, 0x59, 0xb6, 0xff, 0xc0, 0x00, 0x00, 0x40, 0x8e, 0xdd, 0xf6, 0xdb, 0x6f, 0xbf, 0xf7, 0x6f, 0xdf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3a, 0x24, 0xca, 0x54, 0x10, 0x84, 0x44, 0x94, 0x98, 0x11, 0x0c, 0x48, 0x6b, 0x48, 0x4b, 0x13, 0x34, 0x92, 0x18, + 0x34, 0x4c, 0x24, 0xb0, 0xa4, 0x64, 0x4d, 0x98, 0x56, 0xc8, 0x82, 0x44, 0x81, 0x5b, 0x6e, 0xdb, 0x9d, 0xf6, 0xfb, 0xdb, 0xee, 0xdb, 0x73, 0x66, 0xce, 0xdb, 0x77, 0x3f, 0xc0, 0x00, 0x04, 0x04, 0x9f, 0x66, 0xdb, 0x6d, 0xed, 0xee, 0xff, 0xff, 0xfb, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x99, 0x33, 0x11, 0x06, 0x23, 0x12, 0x44, 0xc1, 0x92, 0x63, 0x25, 0x08, 0x49, 0x32, 0x40, 0xcd, 0x84, 0xc4, + 0x26, 0x93, 0x22, 0x04, 0x23, 0x12, 0x60, 0x96, 0x42, 0x53, 0x29, 0x12, 0x52, 0x7e, 0xdb, 0x77, 0xff, 0x77, 0xbb, 0x7e, 0x7e, 0x6b, 0x37, 0x39, 0x33, 0xa6, 0xd9, 0xff, 0xc0, 0x80, 0x00, 0x01, 0x3d, 0xbb, 0x3b, 0x6d, 0xbd, 0xfb, 0xdb, 0xf7, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x34, 0x9b, 0x30, 0xc9, 0x63, 0x3a, 0xd9, 0x27, 0x24, 0x64, 0x90, 0x94, 0xc5, 0x25, 0x84, 0x99, 0x00, 0x24, 0xa4, + 0x08, 0x90, 0x99, 0x49, 0x18, 0x99, 0x92, 0x61, 0x99, 0x32, 0x4c, 0xc9, 0x12, 0x37, 0xb7, 0x6c, 0xe7, 0xbd, 0xaf, 0xef, 0xdd, 0xb9, 0xcc, 0xcd, 0xd9, 0xbd, 0xae, 0xdf, 0x82, 0x01, 0x21, 0x22, 0x7d, 0xbb, 0xcd, 0xb7, 0xb7, 0x7f, 0xff, 0x7f, 0xf7, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x48, 0x44, 0xca, 0x19, 0xc8, 0xc4, 0x99, 0x26, 0x4c, 0x9e, 0xda, 0x31, 0x24, 0x49, 0x24, 0x66, 0x2a, 0x22, + 0x49, 0x24, 0x84, 0x49, 0x92, 0x64, 0x16, 0x29, 0x24, 0x8c, 0xd2, 0x24, 0x89, 0x3d, 0xb4, 0xdf, 0xbd, 0xed, 0xed, 0xbb, 0xfd, 0xb6, 0xdb, 0xd6, 0xce, 0x67, 0x6e, 0xff, 0xc0, 0x00, 0x00, 0x08, 0x9e, 0xcc, 0xf6, 0xdc, 0xff, 0xdd, 0xbf, 0xde, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x61, 0x13, 0x22, 0x96, 0x09, 0x24, 0x98, 0x92, 0x93, 0x66, 0x63, 0xa8, 0x92, 0x52, 0x44, 0x91, 0x89, 0x18, + 0x24, 0x4a, 0x64, 0xa4, 0x64, 0x86, 0xc4, 0x8c, 0x66, 0xa1, 0x13, 0x32, 0x64, 0xbd, 0xdd, 0xb3, 0xff, 0x6e, 0x7d, 0xde, 0xfe, 0xde, 0xf6, 0x73, 0x37, 0xdb, 0x73, 0xbf, 0x80, 0x00, 0x08, 0x82, 0x7a, 0xf7, 0x36, 0xdb, 0xdb, 0xf7, 0xfb, 0xf7, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x48, 0x62, 0x74, 0x94, 0x9a, 0x2c, 0x90, 0xe6, 0x33, 0x62, 0x48, 0xc1, 0x21, 0x08, 0xca, 0x49, 0x14, 0x92, 0x10, 0x44, 0xc4, + 0x24, 0xc9, 0x13, 0x25, 0x09, 0x30, 0x99, 0xb3, 0x10, 0xad, 0x24, 0xc9, 0x12, 0x7e, 0x6d, 0xbc, 0xd3, 0xf3, 0xdf, 0x77, 0xbb, 0x6b, 0x37, 0x6d, 0xf5, 0x7a, 0xde, 0xff, 0x88, 0x04, 0x82, 0x04, 0xfb, 0x37, 0xdb, 0x6f, 0x7e, 0xfe, 0xff, 0x7d, 0xdf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x1b, 0x1d, 0x92, 0x62, 0x84, 0x66, 0x24, 0xc9, 0x0a, 0x4a, 0x6c, 0x99, 0x26, 0x12, 0x49, 0x64, 0x92, 0x4c, 0x52, 0x24, + 0x49, 0x24, 0xc8, 0x52, 0x49, 0x4c, 0x62, 0x49, 0x9b, 0x24, 0xa8, 0x0c, 0x92, 0x7b, 0xb3, 0x6f, 0x7e, 0xdf, 0xe7, 0xfd, 0xfd, 0xbb, 0xcd, 0xbd, 0x5d, 0x8e, 0xdb, 0x7f, 0x80, 0x00, 0x00, 0x11, 0x37, 0xd9, 0xbb, 0x77, 0x6f, 0xbb, 0xef, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb8, 0x20, 0x48, 0x80, 0x05, 0xb2, 0x44, 0xb4, 0x49, 0x09, 0x73, 0x09, 0x91, 0x24, 0x91, 0x92, 0x26, 0x44, 0xb1, 0x31, 0x92, 0x49, 0x24, 0x83, 0x12, 0x23, + 0x13, 0x24, 0x26, 0x48, 0xd2, 0x43, 0x0c, 0x4c, 0x62, 0x52, 0x8b, 0x62, 0x48, 0x3f, 0xb6, 0x6b, 0xdf, 0xbd, 0x3c, 0xdf, 0x7d, 0xb6, 0xfb, 0xa7, 0x6e, 0xf7, 0x6f, 0x7f, 0x80, 0x01, 0x08, 0x46, 0xf4, 0xde, 0xed, 0xdd, 0xfb, 0xef, 0xfe, 0xef, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xef, 0x3b, 0x2d, 0x35, 0x18, 0x90, 0xb4, 0xcc, 0xcc, 0x48, 0x98, 0x5b, 0x24, 0x94, 0x25, 0x92, 0x52, 0x89, 0x0c, 0x26, 0x92, 0x49, 0x30, 0x89, 0x98, + 0x90, 0x93, 0x31, 0x8b, 0x12, 0x98, 0xb1, 0xb2, 0x48, 0xca, 0x64, 0x12, 0x49, 0xb9, 0xcd, 0xba, 0xf7, 0xed, 0xff, 0xdb, 0xfe, 0xdd, 0x9a, 0xfb, 0xb3, 0x75, 0xb9, 0xff, 0x82, 0x08, 0x20, 0x02, 0xff, 0x66, 0xdd, 0xbf, 0xbe, 0xfe, 0xdf, 0xff, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x35, 0x9b, 0xe7, 0xf9, 0x86, 0x49, 0x92, 0x64, 0x92, 0x42, 0x8a, 0x46, 0x48, 0x92, 0x64, 0xc8, 0x49, 0x26, 0x48, 0xc2, 0x60, 0x92, 0x49, 0x14, 0xa4, 0x44, + 0x4c, 0x92, 0x49, 0x30, 0x4c, 0xa6, 0x26, 0x13, 0x26, 0x29, 0x11, 0x94, 0x92, 0x7f, 0x6d, 0xb7, 0x3c, 0xfb, 0xd3, 0x7e, 0xfb, 0x67, 0x6e, 0xda, 0xdd, 0x9d, 0xbf, 0xbf, 0x00, 0x00, 0x01, 0x19, 0xcb, 0x79, 0xb6, 0xe6, 0xef, 0xfb, 0xfd, 0xdf, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x9c, 0x30, 0x04, 0x02, 0x68, 0xcc, 0x4b, 0x39, 0x23, 0x32, 0x32, 0x61, 0xa4, 0x93, 0x09, 0x12, 0x49, 0x21, 0x26, 0x32, 0x99, 0x24, 0x92, 0x44, 0x24, 0x45, + 0x46, 0x49, 0x0c, 0x46, 0x61, 0x21, 0x89, 0x4c, 0xb1, 0x8c, 0xcc, 0xcd, 0x24, 0x77, 0x66, 0xdd, 0xef, 0xb6, 0xdf, 0xef, 0xbb, 0x7b, 0x6d, 0x9e, 0xde, 0xee, 0xe6, 0xff, 0x20, 0x41, 0x04, 0x05, 0x7a, 0xcf, 0x6e, 0xdf, 0xbb, 0x6f, 0xff, 0xff, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x05, 0x98, 0x49, 0x2e, 0x33, 0x20, 0xb6, 0x48, 0x89, 0x45, 0x99, 0x26, 0x4c, 0x93, 0x25, 0x32, 0x59, 0x21, 0x08, 0x84, 0x49, 0x24, 0x93, 0x23, 0x31, + 0x31, 0x4c, 0xd2, 0xc9, 0x93, 0x18, 0xc9, 0x62, 0x89, 0x32, 0x26, 0x61, 0x29, 0x3d, 0x9b, 0x6f, 0xfb, 0xbf, 0x7c, 0xfb, 0xfd, 0x9b, 0xb7, 0x67, 0x67, 0xb3, 0xbe, 0xff, 0x80, 0x08, 0x10, 0x25, 0xee, 0xed, 0xdb, 0x7b, 0xbf, 0xff, 0x77, 0xbf, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x6c, 0xc9, 0x23, 0x24, 0x91, 0x92, 0x2c, 0xb4, 0x98, 0x99, 0x14, 0x26, 0x51, 0x20, 0xa4, 0x89, 0x04, 0x84, 0x99, 0x65, 0x26, 0x49, 0x24, 0x91, 0x98, 0x88, + 0x09, 0x32, 0x12, 0x28, 0x18, 0xc6, 0x32, 0x19, 0x4c, 0x92, 0x91, 0x1a, 0xca, 0x7d, 0xed, 0xb8, 0x1e, 0xdb, 0xef, 0x9e, 0xf7, 0xf6, 0xdb, 0x79, 0xfd, 0xbf, 0x7b, 0xbf, 0x04, 0x00, 0x40, 0x93, 0xb3, 0x36, 0xdb, 0x6e, 0xed, 0xfd, 0xff, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x38, 0x2a, 0x48, 0x94, 0x90, 0x48, 0xc2, 0x34, 0xa6, 0x44, 0xb2, 0xc9, 0x11, 0x26, 0x24, 0x92, 0x64, 0xa4, 0x92, 0x14, 0x49, 0x24, 0x92, 0x4c, 0x44, 0x8a, + 0xcc, 0x83, 0x24, 0x93, 0x64, 0x24, 0x86, 0xcd, 0x44, 0xc9, 0x35, 0x26, 0x32, 0x3f, 0x6d, 0xb2, 0x47, 0xdb, 0xbb, 0xf7, 0xfa, 0x76, 0xdb, 0x9e, 0x9b, 0x6d, 0xce, 0xff, 0x10, 0x44, 0x00, 0x13, 0xdb, 0xdb, 0x6e, 0xff, 0xff, 0xb7, 0xef, 0xff, 0xbf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x22, 0x48, 0x92, 0x4d, 0x24, 0x19, 0xb4, 0x84, 0xc4, 0x8a, 0xd9, 0x26, 0x49, 0x49, 0x24, 0x92, 0x24, 0x46, 0x92, 0x51, 0x24, 0x93, 0x62, 0x44, 0x62, + 0x32, 0xb4, 0xc9, 0x91, 0x05, 0x32, 0x58, 0x62, 0x33, 0x25, 0x49, 0xa1, 0x04, 0xbb, 0x76, 0xc2, 0x67, 0x6e, 0xdc, 0xfd, 0xef, 0xdf, 0xbc, 0xf7, 0xfb, 0xdb, 0x7d, 0xff, 0x00, 0x10, 0x84, 0x4f, 0x6c, 0xdb, 0x7b, 0xb7, 0x77, 0xff, 0xfe, 0xfd, 0xf6, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x6c, 0x49, 0x26, 0x49, 0x21, 0x25, 0x24, 0xb6, 0x59, 0x32, 0x49, 0x04, 0x88, 0x91, 0x19, 0x24, 0x92, 0x4b, 0x24, 0x89, 0x94, 0x92, 0x4c, 0x12, 0x33, 0x14, + 0x02, 0x4c, 0x2a, 0x4c, 0x99, 0x89, 0x43, 0x12, 0x98, 0x94, 0xca, 0x19, 0x64, 0xbd, 0x9b, 0x89, 0x19, 0xfe, 0xf7, 0xbf, 0xf6, 0xd9, 0xe7, 0xd9, 0x6e, 0xde, 0xf7, 0x7f, 0x21, 0x00, 0x01, 0x27, 0xb7, 0x6d, 0xb7, 0xbd, 0xff, 0x6f, 0xbf, 0xf7, 0x5b, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x38, 0x91, 0x91, 0x24, 0x88, 0x91, 0x64, 0xf2, 0x42, 0x09, 0x54, 0x64, 0xa2, 0x24, 0x84, 0x92, 0x49, 0x18, 0x98, 0x64, 0x24, 0x92, 0x49, 0x91, 0x88, 0x91, + 0xd9, 0x49, 0x84, 0x62, 0x62, 0x49, 0x31, 0x34, 0xc6, 0x52, 0x26, 0x4c, 0x92, 0x7d, 0xed, 0x20, 0x93, 0xb3, 0xbf, 0xe6, 0xf6, 0xf7, 0x7d, 0xbf, 0x6d, 0xb7, 0xb6, 0xff, 0x00, 0x42, 0x10, 0x2e, 0xd9, 0xb6, 0xdd, 0xef, 0xdf, 0xfe, 0xff, 0x6d, 0xcb, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x24, 0x49, 0x22, 0x4a, 0x92, 0x12, 0x39, 0x36, 0xc9, 0x15, 0x12, 0x24, 0xca, 0x64, 0x92, 0x49, 0x24, 0x93, 0x12, 0x49, 0x25, 0x90, 0x4c, 0x48, 0x89, + 0x15, 0x32, 0x55, 0x12, 0x48, 0x46, 0x24, 0x85, 0x25, 0x29, 0x91, 0xa2, 0x19, 0x1e, 0xef, 0x00, 0x65, 0xef, 0xda, 0x7f, 0xdb, 0x6f, 0x5d, 0xb7, 0xbd, 0xf9, 0xde, 0xff, 0x08, 0x08, 0x00, 0x9f, 0x6e, 0xdb, 0xdf, 0x7f, 0xfd, 0xff, 0xf6, 0xda, 0xfc, 0xdf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x24, 0x64, 0x89, 0x22, 0x48, 0x92, 0x6c, 0x88, 0x4c, 0xa1, 0x49, 0x13, 0x12, 0x22, 0x49, 0x24, 0xc4, 0x44, 0x92, 0x49, 0x28, 0x26, 0x42, 0x46, 0x64, + 0x44, 0x84, 0x51, 0x92, 0x13, 0x31, 0x8c, 0xd9, 0x29, 0x24, 0x58, 0x92, 0xc4, 0xbb, 0xb3, 0x01, 0x2d, 0xfc, 0xf7, 0xdb, 0x7f, 0x7b, 0xf7, 0xf4, 0xf7, 0x5f, 0x7b, 0xff, 0x21, 0x00, 0x48, 0x5d, 0xb6, 0xdb, 0x6d, 0xdd, 0xbf, 0xff, 0xdb, 0x9b, 0x37, 0xf7, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x34, 0x93, 0x12, 0x49, 0x24, 0x49, 0x24, 0xb6, 0x4b, 0x22, 0x2a, 0x49, 0x48, 0x44, 0x99, 0x24, 0x92, 0x13, 0x28, 0x89, 0x24, 0x92, 0x49, 0x32, 0x31, 0x12, + 0x66, 0xd5, 0x8c, 0x49, 0xb0, 0x8c, 0x52, 0x42, 0x4a, 0x56, 0x4a, 0x4c, 0x24, 0xbf, 0x7e, 0x08, 0x92, 0xdf, 0xbd, 0xff, 0xe5, 0xdd, 0xb6, 0xdf, 0x5b, 0xdd, 0xad, 0xff, 0x00, 0x21, 0x02, 0x4f, 0x9b, 0x6e, 0xef, 0xf7, 0xfb, 0xb6, 0xd9, 0xed, 0xd3, 0x39, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x88, 0xc9, 0x24, 0x93, 0x24, 0xc9, 0xb2, 0x53, 0x92, 0x48, 0x92, 0x49, 0x29, 0x44, 0x92, 0x49, 0x20, 0x8a, 0x64, 0x92, 0x52, 0x48, 0x89, 0x89, 0x12, + 0x18, 0x52, 0x23, 0x29, 0x0c, 0x92, 0x44, 0x9a, 0xd2, 0xc1, 0x8b, 0x21, 0x99, 0x1d, 0xce, 0x42, 0x12, 0xf3, 0xcf, 0x6d, 0xff, 0xdd, 0xde, 0xf7, 0xee, 0xed, 0xf7, 0x7f, 0x04, 0x80, 0x00, 0xbe, 0x6d, 0xbb, 0xbb, 0x7f, 0xef, 0xfe, 0xee, 0x6d, 0xdd, 0xef, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x49, 0x24, 0x24, 0x92, 0x48, 0x92, 0x32, 0x39, 0x34, 0x91, 0x44, 0x92, 0x24, 0x89, 0x24, 0x92, 0x49, 0x4c, 0x92, 0x12, 0x49, 0x49, 0x22, 0x48, 0x48, 0xc9, + 0x93, 0x08, 0xb0, 0x89, 0x44, 0x92, 0x99, 0x24, 0x92, 0x2c, 0x30, 0xb6, 0x42, 0x5e, 0xf6, 0x02, 0x66, 0xfe, 0x7b, 0xff, 0xda, 0xf7, 0x7b, 0xb6, 0xfd, 0xbb, 0x7f, 0xff, 0x10, 0x04, 0x11, 0x3b, 0xed, 0xb7, 0x6f, 0xde, 0xff, 0xdb, 0x3b, 0xb6, 0x6f, 0x7f, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x79, 0x25, 0x92, 0x49, 0x24, 0xc9, 0x24, 0xad, 0x26, 0x4c, 0x33, 0x24, 0xa4, 0x92, 0x22, 0x49, 0x24, 0x52, 0x64, 0x92, 0x49, 0x24, 0x92, 0x46, 0x46, 0x24, + 0x44, 0xa9, 0x0c, 0xc6, 0x72, 0x64, 0x89, 0x4c, 0x29, 0x22, 0x46, 0x44, 0x4c, 0xbe, 0xde, 0x21, 0x08, 0xcf, 0xfe, 0xb6, 0xf7, 0xbf, 0xef, 0x7b, 0x9d, 0xf7, 0xac, 0xff, 0x00, 0x20, 0x41, 0x3b, 0x36, 0xdd, 0xdd, 0xfb, 0xfe, 0xdb, 0xdb, 0xb7, 0xbb, 0x6c, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x98, 0x49, 0x24, 0x92, 0x24, 0xc9, 0x34, 0x99, 0x22, 0x88, 0x49, 0x12, 0x44, 0x99, 0x24, 0x92, 0x12, 0x24, 0xc9, 0x24, 0x92, 0x44, 0x91, 0x31, 0x24, + 0x52, 0xa4, 0x63, 0x30, 0x89, 0x0c, 0x64, 0x53, 0x64, 0xc9, 0x99, 0x19, 0x91, 0x9f, 0xb6, 0x0c, 0x9b, 0x7b, 0x9b, 0xff, 0xed, 0xea, 0xdd, 0xdf, 0x77, 0x76, 0xfb, 0xff, 0x02, 0x02, 0x04, 0xfd, 0xdb, 0xdb, 0xf7, 0x6f, 0xdb, 0x6c, 0xdc, 0xd9, 0xb6, 0xdb, 0xf9, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0x43, 0x24, 0x92, 0x4a, 0x44, 0x62, 0x76, 0x6c, 0x92, 0x49, 0x12, 0x49, 0x31, 0x04, 0x92, 0x49, 0xa5, 0x92, 0x24, 0x94, 0x92, 0x49, 0x24, 0x09, 0x13, + 0x32, 0x12, 0x92, 0x0a, 0x25, 0x23, 0x12, 0x41, 0x14, 0x99, 0x22, 0xc2, 0x32, 0x5d, 0xee, 0x80, 0x86, 0xfa, 0xfb, 0x6d, 0xbe, 0xfe, 0xf7, 0xb7, 0xff, 0xdf, 0x7f, 0xfe, 0x48, 0x40, 0x04, 0x66, 0xdb, 0x7b, 0x3f, 0xff, 0x77, 0x37, 0x67, 0x6e, 0xdd, 0xdf, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf9, 0x24, 0x92, 0x49, 0x22, 0x53, 0x32, 0x92, 0x64, 0x91, 0x25, 0x24, 0x89, 0x09, 0x64, 0x92, 0x49, 0x24, 0x49, 0x24, 0x92, 0x49, 0x22, 0x49, 0x88, 0xc8, + 0x8c, 0xc8, 0x98, 0xcb, 0x30, 0xc8, 0x92, 0x9c, 0x93, 0x24, 0x66, 0x34, 0x8a, 0x5f, 0x6e, 0x22, 0x65, 0xb7, 0xef, 0xff, 0xf7, 0x9d, 0xbe, 0xfa, 0xcd, 0xbb, 0xcd, 0xff, 0x00, 0x08, 0x43, 0x7b, 0x36, 0xcf, 0xff, 0xfd, 0xdc, 0xdb, 0x7b, 0x6e, 0xdb, 0x6d, 0x9e, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x20, 0x69, 0x2c, 0x92, 0x24, 0x92, 0xb0, 0x98, 0xb4, 0x99, 0x24, 0xa4, 0xc9, 0x24, 0xc8, 0x12, 0x49, 0x24, 0x49, 0x29, 0x13, 0x22, 0x49, 0x24, 0x92, 0x66, 0x24, + 0x42, 0x66, 0x65, 0x30, 0xca, 0x32, 0x4c, 0x92, 0x48, 0x46, 0x49, 0x14, 0xc9, 0x1e, 0xfb, 0x09, 0x29, 0xf7, 0x3c, 0xdb, 0x7d, 0xf7, 0xef, 0xdf, 0x7f, 0xee, 0xfe, 0xff, 0x02, 0x00, 0x18, 0xdb, 0xed, 0xbd, 0xef, 0x6e, 0xdb, 0xdb, 0x9b, 0xb3, 0x6e, 0xed, 0xf7, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x02, 0x68, 0x82, 0x49, 0x92, 0x48, 0x8c, 0xd2, 0x65, 0xb2, 0x4c, 0x92, 0x12, 0x44, 0x26, 0x92, 0x49, 0x24, 0x92, 0x92, 0x52, 0x49, 0x24, 0x91, 0x24, 0x11, 0x25, + 0x59, 0x11, 0x05, 0x24, 0x8a, 0x24, 0x61, 0x22, 0x49, 0x99, 0x19, 0x43, 0x24, 0x9e, 0xdf, 0x09, 0x2f, 0xdd, 0xe7, 0xff, 0xdf, 0x7e, 0xf6, 0xdd, 0xf3, 0x7f, 0xb7, 0xfe, 0x20, 0x91, 0x04, 0xf6, 0x6d, 0xf7, 0xbf, 0xeb, 0x6e, 0x76, 0xec, 0xdd, 0xb6, 0xb6, 0x7d, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x52, 0x48, 0x49, 0x25, 0x32, 0x59, 0x3c, 0xc8, 0x92, 0x49, 0x24, 0x93, 0x20, 0x89, 0x24, 0x92, 0x92, 0x46, 0x4c, 0x94, 0x92, 0x49, 0x25, 0x91, 0x11, + 0x25, 0x19, 0x98, 0xcb, 0x21, 0x89, 0x92, 0x69, 0x26, 0x21, 0x92, 0x58, 0x26, 0x4f, 0xdf, 0x22, 0x43, 0xdd, 0xff, 0x36, 0xf6, 0xdb, 0xbd, 0xf7, 0xbf, 0xdb, 0xfd, 0xff, 0x08, 0x00, 0x25, 0xed, 0xb6, 0xde, 0xfc, 0xdd, 0xb3, 0xb6, 0xef, 0x6d, 0xb7, 0xb7, 0xaf, 0x77, 0x00, 0x00, 0x00, 0x00, 0x10, 0x72, 0x49, 0x24, 0x44, 0x91, 0x32, 0x4c, 0xb2, 0x65, 0x22, 0x49, 0x24, 0x98, 0x99, 0x24, 0x92, 0x48, 0x49, 0x64, 0xa1, 0x24, 0x92, 0x48, 0x90, 0x4c, 0xc8, + 0x84, 0xc6, 0x62, 0x10, 0x6c, 0x49, 0x12, 0x0c, 0x90, 0xcc, 0x64, 0x92, 0x91, 0x2f, 0x73, 0x08, 0x5f, 0x77, 0x39, 0xff, 0xbf, 0xff, 0xef, 0x7e, 0xed, 0xfd, 0xb7, 0xff, 0x00, 0x42, 0x09, 0xbb, 0xb3, 0xfb, 0xf7, 0x76, 0xdd, 0xbb, 0x33, 0x6e, 0xd9, 0xd9, 0xbb, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0xd1, 0x24, 0x93, 0x32, 0x12, 0x48, 0xd8, 0xb6, 0xa4, 0x49, 0x24, 0x92, 0x42, 0x44, 0x44, 0x92, 0x49, 0x24, 0x19, 0x92, 0x49, 0x24, 0x92, 0x4a, 0x42, 0x26, + 0x58, 0x90, 0x2d, 0x95, 0x02, 0x52, 0x49, 0x92, 0x56, 0x22, 0x0c, 0xa6, 0x49, 0x2f, 0x7f, 0x91, 0x2f, 0xef, 0xcf, 0xdb, 0x6d, 0xb6, 0x7b, 0xdb, 0xdf, 0x6f, 0xde, 0xfe, 0x21, 0x00, 0x4b, 0xce, 0xdf, 0x6f, 0xf7, 0x6e, 0xdd, 0xcd, 0xdd, 0xb3, 0x6e, 0x6f, 0x76, 0xdf, 0x80, 0x00, 0x00, 0x00, 0x20, 0xd4, 0x92, 0x48, 0x89, 0x49, 0x19, 0x2d, 0x35, 0xa2, 0x91, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x26, 0x93, 0x92, 0x48, 0x92, 0x49, 0x24, 0x49, 0x32, 0x21, + 0x43, 0x2d, 0x84, 0x65, 0x32, 0x92, 0x48, 0x63, 0x09, 0x29, 0xa2, 0x49, 0x2a, 0x4f, 0xcc, 0xc6, 0x6e, 0xec, 0xfe, 0xfd, 0xff, 0xf7, 0xde, 0xf7, 0x77, 0xfb, 0x7b, 0xff, 0x00, 0x09, 0x27, 0x73, 0x6d, 0xff, 0x99, 0xb3, 0x66, 0x76, 0xdb, 0x7d, 0xb7, 0xb6, 0xdf, 0xfb, 0xc0, 0x00, 0x00, 0x00, 0x02, 0x72, 0x49, 0x24, 0x84, 0x49, 0x4c, 0x65, 0x65, 0x48, 0x94, 0x92, 0x49, 0x24, 0x92, 0x22, 0x49, 0x20, 0x90, 0x64, 0x24, 0x92, 0x49, 0x25, 0x24, 0x88, 0x98, + 0x32, 0x61, 0x52, 0x48, 0xc9, 0x24, 0x93, 0x08, 0xa2, 0x49, 0x32, 0x49, 0x22, 0x4e, 0xff, 0xe4, 0xdf, 0xbf, 0xb7, 0xb7, 0xb6, 0xdd, 0xf7, 0xbd, 0xfd, 0xbf, 0xff, 0xff, 0x04, 0x00, 0x27, 0x76, 0xef, 0xfe, 0xee, 0xdd, 0xbb, 0xb6, 0xce, 0x4d, 0xb5, 0xb6, 0xd9, 0xae, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xe1, 0x24, 0x92, 0x64, 0x92, 0x46, 0x5c, 0x36, 0x53, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x99, 0x25, 0x09, 0x92, 0x49, 0x24, 0x91, 0x24, 0x89, 0x06, + 0x8c, 0x96, 0x59, 0x9a, 0x09, 0x24, 0x90, 0x98, 0xa6, 0x92, 0x49, 0x92, 0x4c, 0x97, 0xb7, 0x79, 0xf9, 0xf7, 0xbd, 0xfe, 0xff, 0xff, 0x7d, 0xef, 0xb7, 0xdf, 0xff, 0xf6, 0x00, 0x44, 0x9e, 0xdc, 0xff, 0xf6, 0xee, 0xdb, 0xbb, 0xb7, 0x75, 0xf6, 0xdd, 0xdb, 0x6f, 0xbe, 0xe0, 0x00, 0x00, 0x00, 0x48, 0xcc, 0x92, 0x49, 0x12, 0x24, 0x92, 0x46, 0x96, 0xc4, 0x49, 0x24, 0x92, 0x49, 0x24, 0x90, 0x24, 0x84, 0x4c, 0x98, 0x49, 0x24, 0x92, 0x44, 0x92, 0x64, 0x61, + 0x41, 0x10, 0x84, 0x92, 0x64, 0x92, 0x4c, 0xa6, 0x28, 0x94, 0x8c, 0x32, 0x91, 0x27, 0xf6, 0xff, 0xff, 0x76, 0xed, 0x6e, 0xdb, 0x6b, 0xdf, 0x7b, 0xf6, 0xff, 0xff, 0xff, 0x00, 0x01, 0x1e, 0xcf, 0xbf, 0xdb, 0x33, 0x6a, 0xcc, 0xd9, 0xb7, 0x36, 0xdb, 0x6d, 0xbb, 0x77, 0xe0, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x92, 0x49, 0x12, 0x49, 0x33, 0x36, 0xd9, 0x8d, 0x12, 0x49, 0x24, 0x92, 0x49, 0x26, 0x92, 0x64, 0x92, 0x46, 0x49, 0x24, 0x92, 0x48, 0x92, 0x12, 0x49, + 0x59, 0x4d, 0x32, 0x44, 0x92, 0x49, 0x22, 0x23, 0x29, 0x24, 0xb2, 0xc8, 0x92, 0x4f, 0x7e, 0xdf, 0xb7, 0xbe, 0xef, 0x7b, 0xfd, 0xfe, 0xf7, 0xde, 0xdf, 0xff, 0xff, 0xff, 0x11, 0x22, 0x7b, 0x73, 0xff, 0x6d, 0xdd, 0xbe, 0xf7, 0x6e, 0xb9, 0xdb, 0x6e, 0xed, 0xb6, 0xfd, 0xf0, 0x00, 0x00, 0x00, 0x11, 0xa6, 0x49, 0x24, 0xc4, 0x92, 0x4c, 0x92, 0x67, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x20, 0x92, 0x12, 0x22, 0x41, 0x24, 0x92, 0x49, 0x22, 0x49, 0x92, 0x12, + 0x26, 0x63, 0x26, 0x51, 0x92, 0x49, 0x22, 0x48, 0xc4, 0x62, 0x12, 0x0a, 0x48, 0x93, 0xcf, 0xdc, 0xec, 0xed, 0xbb, 0xdd, 0xb7, 0xb7, 0xbd, 0xf7, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x08, 0xbb, 0x7f, 0xfd, 0xb6, 0xdd, 0xb3, 0x37, 0x36, 0xce, 0xdb, 0x6c, 0xb6, 0xef, 0xbb, 0x70, 0x00, 0x00, 0x00, 0x45, 0xc8, 0x49, 0x24, 0x24, 0x92, 0x49, 0x9b, 0x34, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x99, 0x09, 0x92, 0x49, 0x31, 0x24, 0x92, 0x49, 0x12, 0x48, 0x49, 0x94, + 0x80, 0x92, 0x49, 0x18, 0x49, 0x24, 0x99, 0x48, 0x93, 0x19, 0x49, 0xa5, 0x24, 0xa7, 0xf9, 0xf7, 0xef, 0xfb, 0xfe, 0xf7, 0xfe, 0xfd, 0xef, 0x7d, 0xbf, 0xed, 0xb6, 0xf7, 0x00, 0x09, 0xbd, 0x9f, 0xfd, 0xb6, 0xe6, 0xcd, 0xd9, 0xd9, 0xf6, 0xb5, 0xb7, 0xb6, 0xdb, 0xef, 0xb8, 0x00, 0x00, 0x00, 0x03, 0x49, 0x24, 0x93, 0x12, 0x49, 0x24, 0x66, 0x9e, 0x99, 0x24, 0x92, 0x49, 0x24, 0x92, 0x44, 0x60, 0x49, 0x11, 0x0c, 0x92, 0x49, 0x20, 0xc9, 0x12, 0x48, 0x65, + 0x5b, 0x18, 0xc8, 0x66, 0x49, 0x24, 0x84, 0x46, 0x28, 0x85, 0x2c, 0xb1, 0x32, 0x27, 0x7f, 0x3f, 0x7b, 0x6e, 0xd7, 0xbc, 0xdb, 0xcf, 0x7b, 0xdf, 0xff, 0xf7, 0xff, 0xbf, 0x04, 0x44, 0x76, 0xff, 0xe6, 0xdb, 0x3b, 0x7d, 0xde, 0xdb, 0x37, 0x6d, 0xb6, 0xdb, 0x76, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x8b, 0xc4, 0x92, 0x48, 0xc9, 0x24, 0x96, 0x49, 0x93, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x12, 0x16, 0x49, 0x24, 0xc2, 0x49, 0x24, 0x96, 0x08, 0x44, 0x92, 0x08, + 0x42, 0x64, 0x92, 0x01, 0x24, 0x92, 0x65, 0x31, 0x24, 0xb0, 0xa2, 0x0a, 0xce, 0x49, 0xdf, 0xed, 0xdf, 0xdf, 0x7d, 0xaf, 0xff, 0x7b, 0xde, 0xee, 0xff, 0xfe, 0x6d, 0xfe, 0x20, 0x13, 0xf6, 0xff, 0xfb, 0x6d, 0xdb, 0x66, 0x66, 0xe6, 0xd9, 0xce, 0xdb, 0x6d, 0xbf, 0x37, 0xdc, 0x00, 0x00, 0x00, 0x23, 0x32, 0x49, 0x24, 0x24, 0x92, 0x43, 0x59, 0x75, 0x64, 0x92, 0x49, 0x24, 0x9a, 0x49, 0x22, 0x90, 0x92, 0x48, 0x32, 0x49, 0x24, 0x90, 0xa4, 0x91, 0x24, 0xca, + 0x24, 0x86, 0x25, 0x99, 0x24, 0x82, 0x11, 0x09, 0x13, 0x0e, 0x92, 0xca, 0x09, 0x49, 0xec, 0xff, 0xdc, 0xf5, 0xef, 0xf3, 0x6d, 0xfe, 0xf7, 0xbb, 0xff, 0xff, 0xff, 0x77, 0x80, 0x89, 0xef, 0xff, 0x3b, 0x6d, 0xdd, 0xb7, 0xb9, 0xbd, 0xdb, 0x33, 0x5b, 0x6d, 0xa9, 0xdf, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x82, 0x49, 0x25, 0x24, 0x92, 0x49, 0x27, 0x15, 0x49, 0x25, 0x92, 0x4b, 0x69, 0x24, 0x88, 0x89, 0x22, 0x4b, 0x09, 0x24, 0x49, 0x09, 0x24, 0x92, 0x49, 0x22, + 0x29, 0x31, 0x24, 0x64, 0x92, 0x29, 0x92, 0x48, 0xc8, 0x61, 0x30, 0x91, 0x63, 0x25, 0xff, 0xb6, 0xf7, 0xbf, 0xbb, 0x7f, 0x7f, 0xb7, 0xbd, 0xf7, 0xed, 0xbf, 0xff, 0xff, 0x04, 0x25, 0xfb, 0xfd, 0xcd, 0xb6, 0x66, 0xd9, 0xb7, 0x2d, 0x6d, 0xfd, 0xdd, 0xb7, 0x6f, 0xfb, 0xbe, 0x00, 0x00, 0x01, 0x13, 0x99, 0x24, 0x49, 0x19, 0x24, 0x99, 0xac, 0xd6, 0x92, 0x4c, 0x32, 0x4a, 0x44, 0x92, 0x49, 0x22, 0x28, 0x90, 0xc9, 0x24, 0x92, 0x62, 0x42, 0x48, 0x92, 0x24, + 0x89, 0x09, 0x49, 0x04, 0x92, 0x48, 0x48, 0xc6, 0x24, 0x92, 0x4c, 0x65, 0x32, 0x92, 0xdb, 0xef, 0xbf, 0xb3, 0xef, 0xd9, 0xdb, 0xfd, 0xef, 0x7f, 0xbe, 0xff, 0xff, 0xef, 0x81, 0x17, 0xdf, 0xfb, 0x76, 0xdb, 0xbb, 0x6e, 0x66, 0xe6, 0xac, 0xcc, 0xe6, 0xdd, 0xdb, 0x3e, 0xee, 0x00, 0x00, 0x00, 0x47, 0x64, 0x84, 0x92, 0x42, 0x49, 0x24, 0x89, 0xa4, 0x92, 0x99, 0x8d, 0xb4, 0x92, 0x48, 0x44, 0x48, 0x89, 0x24, 0x24, 0x92, 0x24, 0x04, 0x98, 0x49, 0x24, 0x94, + 0x44, 0xc8, 0x92, 0x52, 0x49, 0x12, 0x49, 0x31, 0x24, 0x92, 0x83, 0x2c, 0x88, 0xca, 0xfe, 0xfb, 0xea, 0xfe, 0x7c, 0xf7, 0xbe, 0x6f, 0x7b, 0xff, 0xb3, 0xdf, 0xdf, 0xff, 0x80, 0x4f, 0xff, 0xee, 0xdb, 0x6d, 0xbb, 0x6b, 0xdb, 0x9b, 0xb7, 0x37, 0x3b, 0x76, 0xdb, 0xef, 0xde, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0xd2, 0x24, 0x92, 0x49, 0x24, 0xcb, 0x2d, 0x24, 0xb2, 0x64, 0x91, 0x22, 0x49, 0x32, 0x49, 0x24, 0x49, 0x24, 0x92, 0x49, 0x91, 0x23, 0x04, 0x49, 0x12, + 0x32, 0x26, 0x24, 0x92, 0x49, 0x24, 0x93, 0x09, 0x12, 0x4c, 0xb0, 0x88, 0xcb, 0x49, 0xef, 0xbe, 0xff, 0xcf, 0xdf, 0xbe, 0xef, 0xfb, 0xdf, 0xde, 0x5f, 0x7f, 0xd3, 0xff, 0x08, 0x2f, 0xff, 0xb5, 0xbb, 0x6d, 0xcd, 0x9a, 0xda, 0x7a, 0x75, 0xf5, 0xdb, 0x6e, 0xec, 0xfb, 0x76, 0x00, 0x00, 0x02, 0x2f, 0xff, 0x92, 0x49, 0x24, 0x92, 0x52, 0x62, 0x62, 0x49, 0x46, 0x52, 0x49, 0x29, 0x24, 0x89, 0x24, 0x44, 0x92, 0x48, 0x49, 0x12, 0x49, 0x08, 0xb2, 0x48, 0x49, + 0x09, 0x21, 0x24, 0x89, 0x24, 0xa4, 0x90, 0xc8, 0xc9, 0x21, 0x0c, 0x93, 0x24, 0x64, 0x7b, 0xef, 0x77, 0x7b, 0xf3, 0xeb, 0x7b, 0xbe, 0xf7, 0x7f, 0xdd, 0xff, 0x7e, 0xff, 0xc2, 0x3f, 0xff, 0xb7, 0x6d, 0xb6, 0x76, 0xf6, 0xb7, 0xce, 0xcd, 0x9b, 0x66, 0xdb, 0x3f, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x8e, 0xf7, 0xe4, 0xc9, 0x24, 0x92, 0x49, 0x30, 0xd8, 0x93, 0x49, 0x12, 0x48, 0x89, 0x24, 0x84, 0x84, 0x92, 0x24, 0x83, 0x08, 0x90, 0x48, 0xc4, 0x82, 0x26, 0x49, + 0xc9, 0x49, 0x12, 0x64, 0x92, 0x12, 0x4c, 0x26, 0x25, 0x24, 0x62, 0x54, 0x24, 0xb2, 0xf6, 0xfb, 0xdd, 0xfd, 0xbe, 0xfb, 0xde, 0xef, 0xbe, 0xfd, 0x37, 0xbf, 0x6f, 0x3f, 0xc0, 0xdf, 0xfc, 0xdb, 0x4d, 0xb7, 0xb6, 0xd5, 0xb5, 0x75, 0xbb, 0x6e, 0x7d, 0xb6, 0xd3, 0xcd, 0xdf, 0x00, 0x00, 0x04, 0x1f, 0xbf, 0xec, 0x24, 0x92, 0x49, 0x24, 0x9d, 0x09, 0x24, 0x21, 0x24, 0x92, 0x44, 0x91, 0x30, 0x92, 0x22, 0x41, 0x30, 0xa2, 0x4d, 0x12, 0x31, 0x19, 0x81, 0x24, + 0x24, 0x48, 0xc9, 0x12, 0x49, 0x49, 0x23, 0x21, 0x24, 0x93, 0x12, 0x44, 0x93, 0x3a, 0x7f, 0xbe, 0xff, 0xb7, 0x6f, 0xbe, 0xf7, 0xfb, 0xbe, 0xbd, 0xee, 0xfd, 0xb5, 0xff, 0xc5, 0x7f, 0xf7, 0x69, 0xf6, 0xd9, 0xbb, 0x59, 0x9d, 0x77, 0x6c, 0xe9, 0x9b, 0x76, 0xdd, 0xff, 0x77, 0x00, 0x00, 0x01, 0x3d, 0xcc, 0xfb, 0x24, 0x99, 0x24, 0x92, 0x46, 0x64, 0x49, 0x94, 0x89, 0x24, 0x52, 0x12, 0x4a, 0x22, 0x49, 0x19, 0x0c, 0x91, 0x20, 0x92, 0x09, 0x20, 0x31, 0x24, + 0x24, 0x96, 0x24, 0x92, 0x49, 0x24, 0x90, 0x99, 0x12, 0x48, 0xc9, 0x24, 0x92, 0x4c, 0x7b, 0xef, 0xb3, 0xbb, 0xfb, 0xef, 0xbd, 0xbe, 0xfb, 0xfe, 0x7b, 0xfd, 0xb7, 0xdf, 0xe5, 0xff, 0xdb, 0x6e, 0xb6, 0xde, 0xcd, 0xee, 0x6b, 0x9a, 0xd7, 0x9f, 0xb3, 0x5b, 0x6d, 0x77, 0xfe, 0x00, 0x00, 0x08, 0x7f, 0x7f, 0xbe, 0x93, 0x24, 0x92, 0xc9, 0x20, 0x93, 0x12, 0x12, 0x49, 0x25, 0x12, 0x48, 0x82, 0x49, 0x11, 0x22, 0x42, 0x4c, 0x22, 0x21, 0x84, 0x46, 0x0c, 0x92, + 0x12, 0x31, 0x24, 0x89, 0x24, 0x92, 0x4c, 0x84, 0xd2, 0x48, 0x89, 0x29, 0x49, 0xd5, 0x9e, 0x7b, 0xfe, 0xee, 0xfe, 0xfb, 0xef, 0xb7, 0xfb, 0x7b, 0x3f, 0xfb, 0x6e, 0xdf, 0xff, 0xff, 0x6d, 0xb6, 0xdb, 0x66, 0xf6, 0x36, 0xee, 0xdb, 0xb6, 0x72, 0x6d, 0xdb, 0x6f, 0x5d, 0xef, 0x00, 0x00, 0x02, 0x7f, 0xf7, 0xb6, 0x92, 0x64, 0xca, 0x24, 0x99, 0x10, 0x92, 0x49, 0x24, 0x89, 0x08, 0x89, 0x31, 0x11, 0x24, 0x88, 0x50, 0x21, 0x89, 0x24, 0x31, 0x11, 0x82, 0x48, + 0xc2, 0x44, 0x92, 0x65, 0x24, 0x92, 0x42, 0x64, 0x09, 0x26, 0x32, 0x89, 0x24, 0x76, 0x77, 0xde, 0xdf, 0xff, 0xdf, 0xbe, 0xfb, 0xfd, 0xff, 0xf8, 0x9d, 0xfa, 0x7b, 0x77, 0xff, 0xfe, 0xdd, 0xb7, 0x6d, 0xbb, 0x33, 0xd9, 0x99, 0x6d, 0x6d, 0xdb, 0xdd, 0xb6, 0xdb, 0xdf, 0xbf, 0x00, 0x00, 0x10, 0xbb, 0xbd, 0xf7, 0x4c, 0x93, 0x29, 0x24, 0x85, 0x4c, 0x89, 0x24, 0x92, 0x22, 0x62, 0x24, 0x44, 0x94, 0x88, 0x93, 0x15, 0x88, 0x24, 0x88, 0x89, 0x24, 0x62, 0x49, + 0x29, 0x12, 0x49, 0x14, 0x92, 0x49, 0x32, 0x13, 0x64, 0x91, 0x0c, 0xa4, 0x92, 0x0f, 0x9d, 0xf7, 0xf7, 0x77, 0xf7, 0xef, 0xbe, 0x6f, 0xf5, 0xf8, 0xcf, 0x7e, 0xdf, 0x7d, 0xff, 0xfb, 0xb6, 0xd9, 0xb6, 0xdb, 0xdd, 0xcf, 0x77, 0x6d, 0x6d, 0x5c, 0xd6, 0xed, 0xb6, 0xf6, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xef, 0x6d, 0xa1, 0x98, 0x25, 0x49, 0x24, 0x42, 0x64, 0x92, 0x48, 0x92, 0x12, 0x44, 0x88, 0x84, 0x92, 0x44, 0x20, 0x4a, 0x44, 0x8a, 0x44, 0x88, 0x18, 0x92, + 0x09, 0x22, 0x49, 0x22, 0x49, 0x24, 0x89, 0x92, 0x12, 0x49, 0x61, 0x24, 0x49, 0x89, 0x9f, 0x7d, 0xbd, 0xdf, 0x7e, 0xfb, 0xef, 0xfb, 0xed, 0xf2, 0x7b, 0xf5, 0xf5, 0xaf, 0xff, 0xed, 0x6e, 0xde, 0xdb, 0x6c, 0xdc, 0x76, 0x6d, 0xb7, 0x9b, 0x67, 0x33, 0x6f, 0x7d, 0xbf, 0xf7, 0x00, 0x00, 0x25, 0xf7, 0xfb, 0xdf, 0x9a, 0x46, 0x94, 0x92, 0x52, 0x32, 0x12, 0x49, 0x25, 0x99, 0x89, 0x12, 0x22, 0x62, 0x44, 0x48, 0x8a, 0x42, 0x50, 0x61, 0x12, 0x4a, 0x84, 0x92, + 0x44, 0x89, 0x26, 0x69, 0x24, 0x92, 0x48, 0x48, 0x92, 0x48, 0x92, 0x43, 0x09, 0x62, 0xef, 0xdf, 0xef, 0xfd, 0xfb, 0xde, 0xfb, 0xbe, 0xf2, 0xf2, 0x2f, 0xfd, 0xbf, 0xb3, 0xff, 0xb7, 0x6b, 0x66, 0xdb, 0x6f, 0x67, 0xb5, 0xbb, 0xb4, 0xe6, 0xbb, 0x6d, 0xb6, 0xdb, 0xbb, 0xbf, 0x00, 0x00, 0x01, 0xfd, 0xbe, 0xf6, 0xc2, 0x51, 0x92, 0x92, 0x49, 0x89, 0x92, 0x48, 0x27, 0x7d, 0x6d, 0x92, 0x49, 0x19, 0x25, 0x22, 0x49, 0x31, 0x0b, 0x04, 0x92, 0x20, 0xa4, 0x48, + 0x52, 0x59, 0x20, 0x89, 0x24, 0x92, 0x46, 0x49, 0x24, 0x92, 0x12, 0x58, 0x64, 0x52, 0x6f, 0xf6, 0xfb, 0x7f, 0xff, 0xff, 0xbe, 0xe7, 0xf6, 0xf9, 0x9d, 0xf7, 0x6f, 0x7e, 0x7e, 0xdb, 0xbb, 0x7b, 0x6d, 0xb3, 0x6d, 0xad, 0xa6, 0x6f, 0x39, 0xb6, 0xdd, 0xb6, 0xee, 0xee, 0xef, 0x00, 0x00, 0x4b, 0xff, 0xef, 0xbb, 0xa5, 0x34, 0x4a, 0x64, 0x88, 0x48, 0x49, 0x22, 0x93, 0x67, 0x76, 0x89, 0x11, 0x01, 0x21, 0x24, 0x44, 0x0c, 0x60, 0x32, 0x48, 0x8c, 0x23, 0x22, + 0x12, 0x44, 0x9a, 0x24, 0x99, 0x24, 0x91, 0x24, 0x89, 0x25, 0x49, 0x01, 0x34, 0x99, 0x1b, 0x7f, 0xbf, 0xdf, 0xff, 0xed, 0xef, 0xfd, 0xed, 0xe8, 0x57, 0xf6, 0x27, 0x6f, 0xfe, 0xda, 0xdd, 0x9b, 0x6d, 0xbc, 0xdb, 0x6e, 0xfd, 0xcb, 0xdb, 0x54, 0xd6, 0xdb, 0xb7, 0xff, 0xfb, 0x00, 0x00, 0x03, 0xee, 0xfb, 0xef, 0xa4, 0x86, 0x69, 0x0c, 0xa6, 0x46, 0x49, 0x24, 0x81, 0x16, 0xd6, 0x24, 0x94, 0xa4, 0x98, 0x84, 0x91, 0x80, 0x84, 0x88, 0x49, 0x21, 0x18, 0x24, + 0x89, 0x24, 0x89, 0x92, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x49, 0x64, 0x93, 0xa5, 0x57, 0xdb, 0xee, 0xff, 0xdf, 0x7f, 0x7b, 0x7f, 0xe3, 0xe6, 0x66, 0xf9, 0x93, 0xed, 0xbf, 0x6e, 0xd6, 0xed, 0xb6, 0xcf, 0x9a, 0xda, 0xcd, 0xb8, 0xd6, 0xdd, 0xb6, 0xdf, 0xbd, 0xb7, 0x7f, 0x00, 0x10, 0x97, 0xfb, 0xbe, 0xfd, 0xd2, 0xc9, 0x84, 0xc9, 0x24, 0x91, 0x92, 0x44, 0x69, 0x92, 0x90, 0x92, 0x44, 0x92, 0x42, 0x30, 0x88, 0x64, 0x92, 0x43, 0x04, 0x49, 0x41, 0x91, + 0x64, 0x92, 0x64, 0x4a, 0x44, 0x92, 0x48, 0x92, 0x52, 0x49, 0x24, 0x12, 0x48, 0xed, 0xb5, 0xfe, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xda, 0xf1, 0x3f, 0xee, 0x4c, 0xfd, 0xfd, 0xb7, 0x76, 0xed, 0xb6, 0xf2, 0xec, 0xd3, 0x33, 0x37, 0x36, 0xab, 0x6d, 0xe6, 0xef, 0xfd, 0xef, 0x00, 0x00, 0x0f, 0xdf, 0xef, 0x6d, 0xc9, 0x29, 0x32, 0x32, 0x49, 0x24, 0x24, 0x96, 0x09, 0x82, 0x39, 0x12, 0x48, 0x49, 0x12, 0x42, 0x26, 0x12, 0x22, 0x50, 0xb1, 0x12, 0x4c, 0x49, + 0x12, 0x49, 0x12, 0x49, 0x24, 0x92, 0x4a, 0x49, 0x12, 0x49, 0x25, 0x92, 0x4a, 0x5b, 0xad, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd6, 0xd9, 0x8d, 0xf6, 0x0d, 0xb7, 0x6f, 0x99, 0xbb, 0x36, 0xdb, 0x3a, 0xe7, 0x75, 0xfc, 0xdd, 0xeb, 0x6b, 0x6d, 0x3d, 0xb3, 0x6f, 0xfb, 0x00, 0x02, 0x0f, 0xf6, 0x7b, 0xdf, 0x65, 0x26, 0x4a, 0x44, 0x92, 0x49, 0x24, 0x98, 0x92, 0x79, 0x24, 0x49, 0x23, 0x09, 0x24, 0x89, 0x20, 0x89, 0x29, 0x0c, 0x02, 0x44, 0x82, 0x48, + 0x13, 0x24, 0x92, 0x91, 0x29, 0x24, 0x92, 0x49, 0x24, 0x92, 0x48, 0x49, 0x26, 0x46, 0x6b, 0x37, 0xff, 0xf6, 0xf7, 0xdb, 0x99, 0x3b, 0xe5, 0xfc, 0x7f, 0xf5, 0x23, 0xff, 0xbf, 0x6e, 0xcd, 0xdb, 0x6d, 0xcf, 0x39, 0x9c, 0xce, 0xd3, 0x39, 0x76, 0xdb, 0xdb, 0xdf, 0xff, 0xbe, 0x00, 0x00, 0x9b, 0xbf, 0xde, 0xf7, 0xd4, 0x92, 0x49, 0x49, 0x24, 0x92, 0x49, 0x69, 0x24, 0xcc, 0xe4, 0x88, 0x24, 0x24, 0x48, 0x24, 0x49, 0x21, 0x08, 0x21, 0x48, 0x90, 0x31, 0x12, + 0xc8, 0x92, 0x49, 0x26, 0x49, 0x24, 0x91, 0x24, 0x89, 0x24, 0x92, 0x49, 0x21, 0x20, 0x9a, 0x92, 0x49, 0x19, 0x99, 0x32, 0xce, 0xcf, 0xed, 0xe6, 0xb7, 0xed, 0x0c, 0xda, 0xf7, 0xf7, 0xf7, 0x6d, 0xb6, 0xf5, 0x9a, 0xe6, 0xb3, 0x6e, 0xcf, 0x36, 0xdb, 0x6e, 0x7d, 0xbd, 0xef, 0x00, 0x00, 0x3f, 0xed, 0xf7, 0xbd, 0x92, 0xd9, 0xa4, 0x99, 0x24, 0x92, 0x4f, 0x79, 0x24, 0x26, 0x92, 0x22, 0x91, 0x91, 0x12, 0x44, 0x89, 0x14, 0xc6, 0x92, 0x24, 0x93, 0x0c, 0x44, + 0x24, 0x92, 0x49, 0x20, 0x92, 0x49, 0x24, 0x92, 0x69, 0x24, 0x92, 0x44, 0x89, 0x29, 0x96, 0xcd, 0xb6, 0xcd, 0x6d, 0xae, 0x66, 0xd3, 0xfb, 0xd9, 0xbd, 0xfa, 0x4d, 0xf7, 0xdf, 0x9d, 0x3b, 0x66, 0xdb, 0x35, 0xee, 0x6b, 0xb5, 0xac, 0xd6, 0xcd, 0xb7, 0x6f, 0xef, 0xf7, 0xff, 0x00, 0x09, 0x37, 0x7f, 0x7d, 0xef, 0x6a, 0x44, 0x92, 0x24, 0x92, 0x49, 0x27, 0xc2, 0x42, 0x20, 0x12, 0x48, 0x92, 0x44, 0x91, 0x11, 0x24, 0x44, 0x30, 0x84, 0x92, 0x48, 0xc2, 0x49, + 0x25, 0x24, 0x92, 0x4c, 0x92, 0x42, 0x48, 0x92, 0x12, 0x49, 0x24, 0x92, 0x24, 0x96, 0x44, 0x6d, 0xb6, 0xe6, 0x66, 0xc9, 0xb3, 0x37, 0xdf, 0xdf, 0xef, 0xfe, 0x43, 0x7d, 0xdb, 0xf7, 0xec, 0xdb, 0x6d, 0xce, 0x69, 0xb9, 0x4d, 0xb7, 0x74, 0xf7, 0x6d, 0xd9, 0xb3, 0x7e, 0xde, 0x00, 0x20, 0x7f, 0xdb, 0xde, 0x7b, 0x49, 0x36, 0x59, 0x84, 0x92, 0x49, 0x2c, 0xd2, 0x18, 0x99, 0x44, 0x92, 0x48, 0x48, 0x89, 0x24, 0x44, 0x93, 0x02, 0x24, 0x42, 0x24, 0x31, 0x22, + 0x11, 0x24, 0x94, 0x92, 0x49, 0x30, 0x92, 0x49, 0x92, 0x49, 0x24, 0xa0, 0x92, 0x44, 0x69, 0x26, 0x49, 0x3b, 0x9a, 0x5b, 0x39, 0xad, 0xf7, 0xe6, 0xfb, 0xed, 0x99, 0xcf, 0x7f, 0xf6, 0xdd, 0xbb, 0x6c, 0xfb, 0x5b, 0x9d, 0x7a, 0x73, 0x2d, 0x99, 0xdb, 0x77, 0xbf, 0xef, 0xf6, 0x00, 0x04, 0x7e, 0xfe, 0xf3, 0xdf, 0x55, 0x91, 0x24, 0x72, 0x49, 0x24, 0x8e, 0x18, 0x81, 0x04, 0x49, 0x24, 0x49, 0x22, 0x62, 0x49, 0x12, 0x20, 0xc8, 0x91, 0x29, 0x85, 0x0c, 0x92, + 0xc8, 0xc9, 0x24, 0x92, 0x49, 0x0c, 0x92, 0x48, 0x49, 0x24, 0x93, 0x2c, 0x92, 0x61, 0x8b, 0x99, 0xdb, 0x49, 0x6b, 0x66, 0x4c, 0xcb, 0xbd, 0xbd, 0xbe, 0xfb, 0x2d, 0xfb, 0x6d, 0xed, 0xb7, 0x2c, 0xdb, 0x33, 0x66, 0x67, 0x9b, 0xcc, 0xeb, 0x6e, 0xdb, 0x6e, 0xdd, 0xfd, 0xbf, 0x00, 0x01, 0x7f, 0xb7, 0xbf, 0xf7, 0x34, 0xc9, 0x85, 0x09, 0x24, 0x90, 0x93, 0x09, 0x24, 0x62, 0x21, 0x09, 0x24, 0x92, 0x04, 0x42, 0x21, 0x2c, 0x24, 0x92, 0x24, 0x31, 0x42, 0x48, + 0x26, 0x12, 0x49, 0x24, 0x92, 0x42, 0x49, 0x26, 0x49, 0x24, 0x90, 0x42, 0x49, 0x1a, 0x32, 0x49, 0x36, 0xdd, 0x29, 0x99, 0xd6, 0x73, 0xef, 0xef, 0xef, 0xfa, 0xef, 0x7f, 0xfb, 0xfd, 0xb3, 0xe7, 0x9b, 0xcd, 0xbd, 0xec, 0xe6, 0x6f, 0x3b, 0x6e, 0x6d, 0xbb, 0x77, 0xb7, 0xee, 0x10, 0x21, 0xfb, 0xfd, 0xed, 0xbe, 0x8a, 0x6a, 0x59, 0x24, 0xa4, 0x92, 0x43, 0x32, 0x49, 0x09, 0x8c, 0x49, 0x04, 0x91, 0x91, 0x12, 0x2c, 0x41, 0x12, 0x08, 0x84, 0x84, 0x51, 0x24, + 0x11, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x21, 0x24, 0x92, 0x4c, 0x92, 0x49, 0x4a, 0x4c, 0xce, 0x64, 0xb4, 0xda, 0x6d, 0x33, 0x37, 0xfb, 0x73, 0x7b, 0xef, 0xb3, 0xdd, 0xbf, 0xf6, 0xdc, 0xda, 0xec, 0xfd, 0x99, 0x9b, 0x3b, 0x33, 0xcd, 0xb3, 0xb6, 0xed, 0xde, 0xff, 0x7e, 0x00, 0x88, 0xfe, 0xdf, 0x7f, 0x6e, 0xcb, 0x24, 0x42, 0x92, 0x12, 0x49, 0x29, 0xe4, 0x12, 0x48, 0x21, 0x24, 0x52, 0x24, 0x12, 0x48, 0x81, 0x12, 0x48, 0xc4, 0x92, 0x49, 0x14, 0x92, + 0xc9, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x42, 0x24, 0x92, 0x61, 0x93, 0x32, 0xc9, 0x8b, 0x46, 0xa5, 0x6d, 0x9b, 0x9f, 0xdf, 0xde, 0xfb, 0xbe, 0xf7, 0xb7, 0xf6, 0xdf, 0x7a, 0xb7, 0x26, 0x66, 0xd3, 0xcb, 0xdc, 0xf6, 0xbd, 0xb6, 0xdd, 0xdb, 0xff, 0xfc, 0x80, 0x03, 0xf7, 0xf7, 0xdb, 0x76, 0x64, 0x95, 0x98, 0xc9, 0x52, 0x49, 0x20, 0x89, 0x20, 0x92, 0x49, 0x21, 0x10, 0x88, 0xc4, 0x81, 0x24, 0x92, 0x44, 0x32, 0x49, 0x22, 0x42, 0x48, + 0x24, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x48, 0x92, 0x48, 0x32, 0x49, 0x24, 0x94, 0xa4, 0x24, 0x9b, 0x69, 0x34, 0x94, 0xc9, 0xcb, 0xf6, 0xfd, 0xf7, 0xfe, 0xee, 0xbe, 0xf6, 0xfb, 0x65, 0x8d, 0xb5, 0xb3, 0xee, 0x76, 0x74, 0xd6, 0x5a, 0xcd, 0xdb, 0x77, 0x7f, 0xdb, 0xbc, 0x21, 0x27, 0xfd, 0xbd, 0xf7, 0xd9, 0x34, 0xd2, 0x24, 0x25, 0x09, 0x24, 0x14, 0x10, 0x8c, 0x22, 0x44, 0x89, 0x24, 0x92, 0x10, 0x94, 0x48, 0x89, 0x13, 0x02, 0x21, 0x24, 0x99, 0x23, + 0x24, 0xa4, 0x92, 0x49, 0x24, 0x92, 0x49, 0x26, 0x49, 0x24, 0x84, 0x92, 0x49, 0x16, 0x29, 0x99, 0x32, 0x24, 0xc9, 0xd3, 0x32, 0x6b, 0xdf, 0xb7, 0x7d, 0xb7, 0xdb, 0xee, 0xdf, 0xef, 0x7d, 0xed, 0xcd, 0x9d, 0x39, 0xad, 0x9d, 0x37, 0xcf, 0x76, 0x6f, 0x6d, 0xed, 0xfe, 0xfd, 0x00, 0x0b, 0xef, 0xef, 0x7c, 0xf9, 0x93, 0x08, 0xc6, 0x90, 0xa4, 0x91, 0x84, 0xc6, 0x21, 0x24, 0x92, 0x24, 0x89, 0x22, 0x22, 0x24, 0x92, 0x64, 0x48, 0x48, 0x8c, 0x11, 0x24, 0x24, + 0x12, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x91, 0x24, 0x91, 0x11, 0x24, 0x92, 0x49, 0x4a, 0x4b, 0x4c, 0x96, 0x4a, 0x4c, 0x96, 0xb3, 0xed, 0xff, 0xbf, 0xfd, 0xfb, 0x7b, 0xfb, 0xf9, 0x9b, 0x73, 0x7a, 0x67, 0x4f, 0x39, 0xe7, 0xe9, 0x35, 0xb7, 0xb5, 0xed, 0xbf, 0xb7, 0xd9, 0x04, 0x93, 0xfb, 0x7b, 0xcf, 0xb6, 0x69, 0x2d, 0x18, 0x92, 0x92, 0x44, 0x22, 0x08, 0x42, 0x44, 0x22, 0x44, 0x48, 0x49, 0x89, 0x22, 0x12, 0x04, 0x89, 0x24, 0x81, 0x92, 0x42, 0x88, + 0xc8, 0x52, 0x49, 0x24, 0x92, 0x49, 0x24, 0x90, 0x92, 0x49, 0x49, 0x09, 0x24, 0xc9, 0x12, 0x64, 0xc5, 0x93, 0x32, 0x64, 0xcc, 0x9d, 0xbe, 0xdb, 0xb3, 0x5b, 0x6f, 0xdf, 0x6e, 0xfe, 0xeb, 0x1c, 0x93, 0xb6, 0xe5, 0xce, 0x76, 0x6f, 0xf6, 0xd9, 0xdd, 0xbb, 0xb6, 0xff, 0x7a, 0x20, 0x4f, 0xdf, 0xde, 0xfb, 0xf2, 0x8c, 0xc4, 0x62, 0x4c, 0x49, 0x12, 0x48, 0x61, 0x18, 0x91, 0x28, 0x51, 0x22, 0x44, 0x11, 0x08, 0xc1, 0x32, 0x22, 0x24, 0x32, 0x48, 0x98, 0x92, + 0x25, 0x0c, 0x92, 0x49, 0x24, 0x92, 0x49, 0x26, 0x49, 0x24, 0x24, 0x49, 0x25, 0x24, 0xb1, 0x94, 0x31, 0x68, 0x95, 0x93, 0x23, 0x4b, 0xf3, 0xbc, 0xff, 0xdf, 0xfd, 0xf7, 0x7f, 0xf6, 0x6d, 0xee, 0xf6, 0x99, 0xb9, 0x67, 0x35, 0xb6, 0x5b, 0x5e, 0x77, 0xbe, 0xff, 0xed, 0xf8, 0x8a, 0x4f, 0xf6, 0xef, 0xbe, 0xe9, 0xb2, 0x53, 0x09, 0x45, 0x24, 0x48, 0x91, 0x04, 0x84, 0x89, 0x09, 0x09, 0x22, 0x10, 0xc4, 0x49, 0x0c, 0x82, 0x48, 0x92, 0x48, 0x44, 0x84, 0x44, + 0x11, 0x61, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x91, 0x84, 0x90, 0x91, 0x26, 0x24, 0x13, 0x2a, 0x4a, 0xc4, 0x32, 0x32, 0x63, 0xdf, 0x67, 0xdd, 0xf6, 0xdd, 0x3d, 0xdb, 0x7b, 0xb4, 0xe3, 0x4d, 0xed, 0x2e, 0x75, 0xcd, 0xb5, 0xcd, 0xe7, 0xb6, 0xe7, 0xcf, 0xff, 0xf2, 0x02, 0x1f, 0x7e, 0xeb, 0x6f, 0xcc, 0x4b, 0x18, 0xc9, 0x31, 0x24, 0x89, 0x04, 0x92, 0x21, 0x24, 0xc4, 0xa2, 0x18, 0x92, 0x24, 0x91, 0x22, 0x49, 0x12, 0x42, 0x45, 0x12, 0x43, 0x24, + 0x48, 0x4c, 0x49, 0x24, 0x92, 0x64, 0x92, 0x48, 0x92, 0x12, 0x31, 0x26, 0x4c, 0x91, 0x8d, 0xa4, 0xca, 0x12, 0x2b, 0x24, 0xcc, 0xb7, 0xf9, 0xdf, 0x77, 0x7b, 0xdf, 0xef, 0xdf, 0xfb, 0xb6, 0x9d, 0xb9, 0x36, 0xd3, 0x99, 0xdb, 0x6d, 0xb6, 0xb9, 0xde, 0xfb, 0x7b, 0x77, 0x64, 0x20, 0xbf, 0xcf, 0x3f, 0xff, 0x53, 0x48, 0xa4, 0x92, 0x09, 0x12, 0x21, 0x24, 0x21, 0x24, 0x10, 0x32, 0x12, 0xc2, 0x44, 0x92, 0x24, 0x21, 0x24, 0x92, 0x19, 0x11, 0x22, 0x58, 0x21, + 0x4a, 0x12, 0x92, 0x49, 0x24, 0x90, 0x49, 0x26, 0x49, 0x42, 0x09, 0x21, 0x22, 0x48, 0x60, 0x94, 0x91, 0xa4, 0xa8, 0xcd, 0x25, 0x99, 0xee, 0xf3, 0x7f, 0xbb, 0x76, 0xfb, 0x76, 0xfc, 0xdb, 0x76, 0xb7, 0x53, 0x9d, 0xbb, 0x36, 0xdb, 0x76, 0xde, 0x7b, 0x9e, 0xff, 0xdd, 0xf1, 0x0c, 0xbe, 0xfd, 0xfd, 0xfd, 0x66, 0xb6, 0x24, 0x24, 0xca, 0x49, 0x24, 0x21, 0x24, 0x44, 0xc6, 0x08, 0xc4, 0x09, 0x11, 0x11, 0x22, 0x98, 0x92, 0x49, 0x21, 0x24, 0x89, 0x01, 0x98, + 0x23, 0x22, 0x92, 0x49, 0x24, 0x8b, 0x08, 0x91, 0x24, 0x49, 0x48, 0x88, 0x93, 0x2b, 0x1a, 0x49, 0x24, 0xa9, 0x84, 0x91, 0x32, 0x4b, 0xee, 0xbd, 0xdb, 0xb6, 0xf7, 0x9e, 0xff, 0xee, 0x69, 0x6a, 0xd6, 0xdc, 0xed, 0x66, 0xe6, 0xdb, 0x5b, 0x67, 0xef, 0x77, 0xb6, 0xff, 0xc9, 0x42, 0x7f, 0xff, 0xff, 0xf3, 0x38, 0x91, 0x93, 0x65, 0x22, 0x49, 0x12, 0x49, 0x09, 0x12, 0x11, 0x84, 0x09, 0x24, 0x49, 0x09, 0x08, 0x82, 0x42, 0x49, 0x24, 0x88, 0x91, 0x24, 0x42, + 0x24, 0xa8, 0x49, 0x24, 0x92, 0x20, 0xa6, 0x10, 0x90, 0x91, 0x22, 0x26, 0x10, 0x88, 0x93, 0x23, 0x2c, 0x8a, 0x56, 0x66, 0xca, 0x67, 0xf3, 0xad, 0xfe, 0xf6, 0xdd, 0xf7, 0xab, 0x7b, 0xaf, 0x9b, 0x6a, 0xad, 0x6b, 0x5d, 0x9b, 0x6d, 0xbb, 0xb9, 0xb5, 0xfd, 0xff, 0xb7, 0xe2, 0x32, 0x7f, 0xff, 0xff, 0x32, 0xcb, 0x4c, 0x92, 0x11, 0x24, 0x90, 0xc2, 0x42, 0x48, 0x90, 0x90, 0x63, 0x21, 0x21, 0x24, 0x62, 0x48, 0x49, 0x18, 0x84, 0x88, 0x4a, 0x24, 0x92, 0x12, + 0x90, 0x89, 0x24, 0x92, 0x49, 0x24, 0x21, 0x4c, 0x8a, 0x24, 0x89, 0x20, 0xcc, 0xa4, 0xa4, 0x98, 0x82, 0x52, 0x51, 0x08, 0x19, 0x99, 0xdb, 0x6e, 0xaf, 0xdb, 0xff, 0x7d, 0xfb, 0xf6, 0xb6, 0xd7, 0x3b, 0xab, 0x5b, 0xb6, 0xf9, 0xb6, 0xec, 0xde, 0xde, 0xce, 0xdb, 0xfd, 0x88, 0x89, 0xf6, 0x6d, 0xb4, 0x8c, 0x9b, 0x64, 0x98, 0x92, 0x49, 0x26, 0x09, 0x12, 0x22, 0x24, 0x86, 0x18, 0x4c, 0x49, 0x10, 0x84, 0x46, 0x48, 0x84, 0xb0, 0x93, 0x10, 0x88, 0x92, 0x90, + 0x1a, 0x44, 0x92, 0x49, 0x21, 0x13, 0x10, 0x42, 0x22, 0x44, 0x49, 0x12, 0x22, 0x33, 0x24, 0x92, 0x63, 0x11, 0x25, 0xb3, 0x44, 0x93, 0xed, 0xdb, 0xbd, 0xdb, 0x37, 0xdb, 0x76, 0xf6, 0xd4, 0xec, 0xd4, 0xeb, 0xb6, 0xb6, 0xae, 0xdb, 0x6f, 0x67, 0x7b, 0xbb, 0xfe, 0xdf, 0x92, 0x4b, 0xe9, 0x00, 0x06, 0xcd, 0x30, 0x93, 0x45, 0x88, 0x92, 0x40, 0x64, 0x24, 0x84, 0x49, 0x20, 0x81, 0x10, 0x84, 0x42, 0x24, 0x90, 0x92, 0x64, 0x0a, 0x24, 0x24, 0x92, 0x24, 0x4c, + 0x42, 0x52, 0x49, 0x24, 0x94, 0xc8, 0xc6, 0x22, 0x49, 0x13, 0x10, 0xc4, 0x89, 0x48, 0x49, 0x25, 0x2c, 0xad, 0x28, 0x48, 0x66, 0x67, 0xed, 0xb7, 0xff, 0x76, 0xed, 0xf7, 0xdf, 0xbb, 0x5d, 0xab, 0xd6, 0x6c, 0xec, 0xd9, 0xae, 0xdb, 0x73, 0x7d, 0xef, 0xff, 0x6f, 0xf7, 0x92, 0x4f, 0x89, 0xb7, 0xf9, 0x73, 0x66, 0x98, 0x51, 0x26, 0x24, 0x93, 0x04, 0x80, 0x91, 0x02, 0x29, 0x24, 0x92, 0x31, 0x29, 0x22, 0x22, 0x12, 0x09, 0x42, 0x20, 0x89, 0x24, 0x89, 0x21, + 0x49, 0x12, 0x49, 0x24, 0x44, 0x20, 0x11, 0x89, 0x10, 0x88, 0x26, 0x09, 0x24, 0x49, 0x92, 0x49, 0x10, 0xa1, 0x8a, 0x4b, 0x12, 0x49, 0xf3, 0x3c, 0xdb, 0xf6, 0xef, 0x3d, 0xfb, 0xed, 0xcf, 0x3a, 0x6f, 0x9d, 0x9b, 0x6f, 0x73, 0x77, 0x9d, 0xdb, 0xbd, 0x6d, 0xfb, 0x7f, 0x21, 0x37, 0xb6, 0x4c, 0x93, 0x36, 0xcc, 0xc4, 0x98, 0x61, 0x24, 0x90, 0x30, 0x5a, 0x12, 0x30, 0x84, 0x44, 0x89, 0x09, 0x09, 0x18, 0x89, 0x44, 0x92, 0x51, 0x8a, 0x49, 0x21, 0x22, 0x22, + 0x24, 0x89, 0x24, 0x43, 0x12, 0x16, 0x48, 0x24, 0x92, 0x61, 0x20, 0x62, 0x24, 0x92, 0x24, 0x92, 0x53, 0x14, 0x62, 0x90, 0x91, 0x93, 0xde, 0xde, 0x47, 0xdb, 0xbb, 0xef, 0x3e, 0xf6, 0x69, 0xd7, 0x31, 0xd6, 0xf3, 0x6c, 0xdd, 0xb6, 0xfd, 0xb6, 0xe7, 0xff, 0xdf, 0xde, 0x24, 0xbe, 0x64, 0xdb, 0x66, 0xc8, 0x93, 0x33, 0x26, 0x49, 0x12, 0x4c, 0x83, 0x01, 0x42, 0x84, 0x44, 0x91, 0x21, 0x44, 0x44, 0x81, 0x24, 0x49, 0x22, 0x0c, 0x12, 0x44, 0x49, 0x24, 0x88, + 0x24, 0xa4, 0x84, 0x98, 0x49, 0x91, 0x22, 0x44, 0x49, 0x04, 0x89, 0x12, 0x92, 0x24, 0x89, 0x24, 0xc8, 0x53, 0x12, 0x24, 0xac, 0x26, 0xed, 0xfb, 0x24, 0xfb, 0x6e, 0xfb, 0xed, 0xb7, 0x7d, 0xdd, 0xde, 0x73, 0x2d, 0x9b, 0xb6, 0xdd, 0xa6, 0xef, 0xbe, 0xdf, 0x76, 0xfc, 0x88, 0xfd, 0x19, 0xb2, 0x58, 0xce, 0x64, 0x24, 0x42, 0x12, 0x49, 0x01, 0x18, 0x24, 0x18, 0x49, 0x12, 0x24, 0x4c, 0x51, 0x30, 0xa4, 0x44, 0x88, 0x48, 0xa0, 0xc4, 0x31, 0x12, 0x11, 0x24, + 0x12, 0x24, 0x92, 0x01, 0x20, 0x41, 0x12, 0x51, 0x24, 0x12, 0x24, 0x90, 0x42, 0x49, 0x22, 0x49, 0x26, 0x48, 0x92, 0x64, 0x22, 0xc9, 0xed, 0xb9, 0x91, 0x7d, 0xdf, 0xbd, 0xef, 0xed, 0x96, 0x69, 0x9b, 0xad, 0xcd, 0xb3, 0x6e, 0xdd, 0xbe, 0xdb, 0x7f, 0xf7, 0xff, 0xf8, 0x93, 0xf5, 0xdf, 0x25, 0x9b, 0x33, 0x2d, 0x8c, 0xd9, 0x92, 0x49, 0x31, 0x40, 0x92, 0x21, 0x12, 0x22, 0x49, 0x10, 0x89, 0x0a, 0x12, 0x52, 0x22, 0x44, 0x84, 0x21, 0x84, 0x92, 0x49, 0x12, + 0x92, 0x48, 0x49, 0x64, 0x96, 0x18, 0x49, 0x09, 0x02, 0x48, 0x44, 0x8d, 0x19, 0x12, 0x4c, 0x92, 0x21, 0x88, 0x8c, 0x93, 0x12, 0x13, 0xf6, 0xf4, 0x13, 0x3d, 0xb5, 0xef, 0x7b, 0x79, 0xb6, 0xee, 0xe5, 0xad, 0x76, 0xed, 0x6b, 0x6e, 0xdb, 0xdd, 0xdb, 0xfe, 0xed, 0xf2, 0x4f, 0xd6, 0xe6, 0x4d, 0x65, 0xb3, 0x22, 0x62, 0x08, 0x49, 0x22, 0x44, 0x26, 0x41, 0x84, 0x90, 0x89, 0x08, 0x92, 0x24, 0x42, 0x42, 0x02, 0x49, 0x24, 0x53, 0x08, 0x12, 0x44, 0x88, 0xc2, + 0x21, 0x13, 0x21, 0x12, 0x40, 0x86, 0x24, 0x62, 0x58, 0x81, 0x10, 0x60, 0x84, 0x92, 0x41, 0x24, 0x98, 0x26, 0x61, 0x08, 0xc9, 0x33, 0xdb, 0x72, 0x44, 0xbe, 0xed, 0xdb, 0xdf, 0x76, 0x6b, 0x36, 0x76, 0x73, 0x76, 0xbd, 0xbb, 0x6b, 0x7b, 0x77, 0xfe, 0xdf, 0xff, 0xb2, 0x7f, 0x9b, 0xbb, 0xd9, 0x24, 0x8c, 0xd8, 0x93, 0x26, 0x49, 0x24, 0x12, 0x20, 0x4c, 0x12, 0x24, 0x91, 0x22, 0x42, 0x44, 0x51, 0x28, 0x98, 0x91, 0x23, 0x10, 0x4a, 0x49, 0x10, 0xa6, 0x18, + 0x0c, 0x90, 0x94, 0x88, 0x49, 0x21, 0x91, 0x04, 0x81, 0x32, 0x49, 0x06, 0x24, 0x89, 0x32, 0x49, 0x06, 0x41, 0x12, 0x48, 0x24, 0xc9, 0xfb, 0xe8, 0x24, 0x1e, 0xdf, 0x7e, 0xf7, 0xdf, 0xdb, 0xd5, 0x9b, 0xde, 0x9b, 0x96, 0xdd, 0xfb, 0xcf, 0x7e, 0xef, 0xf7, 0xb7, 0x89, 0xbe, 0xfa, 0x08, 0x22, 0x9a, 0x64, 0x85, 0x18, 0xb1, 0x24, 0x91, 0x88, 0x89, 0x00, 0xc8, 0x42, 0x44, 0x49, 0x18, 0x91, 0x0c, 0x09, 0x21, 0x24, 0x18, 0x24, 0x92, 0x48, 0x4a, 0x10, 0x21, + 0x42, 0x48, 0x92, 0x23, 0x12, 0x48, 0x49, 0x24, 0x24, 0x08, 0x89, 0x30, 0x49, 0x24, 0x8a, 0x49, 0x61, 0x19, 0x12, 0x46, 0x92, 0x09, 0xee, 0xe4, 0x92, 0x6f, 0x5b, 0xef, 0xbd, 0xe9, 0x9c, 0xdd, 0xec, 0xcb, 0xec, 0xf6, 0xd6, 0x9c, 0xfd, 0xdb, 0xbb, 0x7e, 0xff, 0x49, 0xfe, 0x89, 0xcc, 0xac, 0xd3, 0x33, 0x31, 0x44, 0x84, 0x92, 0x12, 0x22, 0x49, 0x32, 0x03, 0x10, 0x49, 0x10, 0x41, 0x12, 0x60, 0xc4, 0x44, 0x49, 0x80, 0x88, 0x91, 0x22, 0x48, 0xc2, 0x84, + 0x30, 0x4a, 0x21, 0x24, 0x24, 0x92, 0x24, 0x92, 0x48, 0xc4, 0x90, 0x83, 0x12, 0x44, 0x89, 0x24, 0x49, 0x24, 0xc9, 0x30, 0x92, 0x66, 0xed, 0xd0, 0x11, 0x2f, 0x6e, 0xfb, 0xef, 0x6e, 0xe6, 0x6b, 0x37, 0x39, 0x6f, 0x6d, 0xf6, 0xe7, 0xb7, 0xdf, 0xff, 0xef, 0xde, 0x57, 0xf1, 0xa4, 0x63, 0x25, 0x24, 0x98, 0x4c, 0x52, 0x48, 0x92, 0x48, 0x24, 0x42, 0x04, 0x64, 0x25, 0x08, 0x96, 0x24, 0x48, 0x86, 0x11, 0x12, 0x42, 0x26, 0x42, 0x44, 0x89, 0x21, 0x08, 0x92, + 0x05, 0x22, 0x49, 0x10, 0x88, 0x24, 0x92, 0x11, 0x12, 0x11, 0x26, 0x18, 0x92, 0x52, 0x64, 0x92, 0x12, 0x44, 0x24, 0x84, 0x49, 0x12, 0xfd, 0xc2, 0x44, 0x93, 0xb7, 0xbe, 0xfb, 0xdb, 0x3b, 0xba, 0xdb, 0xef, 0x33, 0x6d, 0xbb, 0xff, 0xbb, 0x76, 0xdd, 0xfb, 0x7e, 0xbf, 0xe5, 0x6d, 0x33, 0x73, 0x2c, 0xc4, 0xc4, 0x92, 0x4a, 0x44, 0x89, 0x85, 0x12, 0x49, 0x08, 0x88, 0x62, 0x40, 0x89, 0x22, 0x10, 0x92, 0x49, 0x10, 0x21, 0x12, 0x12, 0x24, 0x24, 0x24, 0x48, + 0x49, 0x09, 0x04, 0xc6, 0x49, 0x21, 0x12, 0x49, 0x21, 0x22, 0x20, 0x40, 0x89, 0x12, 0x12, 0x49, 0x92, 0x53, 0x24, 0x93, 0x24, 0x93, 0xde, 0xe0, 0x02, 0x57, 0xb7, 0xe7, 0x9e, 0xf6, 0xdb, 0xa6, 0xda, 0x6d, 0xdd, 0xb7, 0xae, 0x59, 0xef, 0x7f, 0xf7, 0xbf, 0xf2, 0xff, 0x9e, 0x77, 0x9c, 0x98, 0xcb, 0x26, 0x33, 0x24, 0x92, 0x48, 0xa4, 0x10, 0x48, 0x48, 0x88, 0x92, 0x04, 0x49, 0x12, 0x12, 0x49, 0x24, 0x84, 0x4c, 0x88, 0x48, 0x88, 0x42, 0x84, 0x91, 0x09, + 0x22, 0x49, 0x24, 0x11, 0x22, 0x49, 0x48, 0x88, 0x89, 0x08, 0x89, 0x26, 0x21, 0x24, 0x92, 0x48, 0x49, 0x10, 0x90, 0x48, 0x84, 0x88, 0xf3, 0xa0, 0x21, 0x27, 0xdc, 0xfd, 0xf7, 0xb6, 0xd4, 0xfd, 0xb7, 0xb6, 0x6d, 0xb6, 0xed, 0xdf, 0x7d, 0xdb, 0x7e, 0xed, 0xf3, 0xfe, 0xf3, 0x92, 0xc9, 0x8c, 0x90, 0x99, 0x22, 0x49, 0x21, 0x08, 0x11, 0x22, 0x21, 0x02, 0x22, 0x41, 0x91, 0x09, 0x44, 0xc4, 0x89, 0x08, 0x31, 0x21, 0x24, 0x89, 0x21, 0x18, 0x91, 0x12, 0x60, + 0x24, 0x40, 0x91, 0x10, 0x88, 0x88, 0x42, 0x24, 0x92, 0x42, 0x24, 0x88, 0x4c, 0x89, 0x24, 0x92, 0x49, 0x24, 0x93, 0x24, 0x52, 0x64, 0xff, 0xc8, 0x89, 0x2f, 0x6f, 0xbf, 0x7d, 0xed, 0xb7, 0x19, 0xac, 0xdb, 0xb6, 0xde, 0xf7, 0xb7, 0xdf, 0xff, 0xdb, 0xfb, 0xcf, 0xf3, 0x6c, 0xcc, 0x6b, 0x67, 0x76, 0x41, 0x4c, 0x92, 0x4c, 0x63, 0x11, 0x22, 0x84, 0xb1, 0x22, 0x18, 0x24, 0x64, 0x21, 0x08, 0xa2, 0x49, 0x02, 0x02, 0x44, 0xa1, 0x14, 0x81, 0x12, 0x44, 0x06, + 0x11, 0x34, 0x92, 0x4a, 0x24, 0x92, 0x32, 0x44, 0x44, 0x31, 0x10, 0x93, 0x10, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x25, 0x12, 0x13, 0xed, 0xc0, 0x08, 0x4b, 0xb7, 0xed, 0xde, 0x7b, 0x3b, 0x6e, 0xef, 0x6d, 0xb6, 0xdb, 0x9c, 0xfd, 0xf6, 0xed, 0xbf, 0x7f, 0xbf, 0x99, 0x0c, 0xb3, 0x24, 0x51, 0x09, 0x24, 0x49, 0x24, 0x91, 0x00, 0xc4, 0x08, 0x12, 0x04, 0x48, 0x86, 0x22, 0x11, 0x88, 0x22, 0x12, 0x44, 0xc8, 0xc8, 0x10, 0x14, 0x44, 0x24, 0x48, 0x44, 0x90, + 0x44, 0x81, 0x08, 0x89, 0x24, 0x44, 0x89, 0x12, 0x24, 0x84, 0xc6, 0x20, 0x86, 0x44, 0x92, 0x49, 0x24, 0x92, 0x44, 0x90, 0x89, 0x88, 0xff, 0x62, 0x42, 0x33, 0xb6, 0x7d, 0xf3, 0xdb, 0xcc, 0xeb, 0x33, 0x6d, 0xdb, 0x7b, 0xff, 0xcf, 0x7f, 0xbf, 0xed, 0xdf, 0xfe, 0xcd, 0xf3, 0x24, 0x95, 0x19, 0x24, 0xa9, 0x92, 0x49, 0x21, 0x34, 0x04, 0x89, 0x10, 0x44, 0x44, 0xa0, 0x92, 0x84, 0x12, 0x92, 0x44, 0x30, 0x24, 0x11, 0x83, 0x11, 0x09, 0x24, 0x84, 0x90, 0x91, + 0x24, 0x18, 0x62, 0x24, 0x49, 0x24, 0x81, 0x22, 0x90, 0x88, 0x08, 0x48, 0xa1, 0x24, 0x92, 0x49, 0x24, 0x92, 0x48, 0x92, 0x64, 0x64, 0xf7, 0xe0, 0x00, 0x97, 0xdf, 0xdf, 0x7f, 0xec, 0xf7, 0xbb, 0xdd, 0xb6, 0x7b, 0x6e, 0x67, 0x7b, 0xdb, 0xf6, 0xff, 0xff, 0xf6, 0x66, 0x33, 0x6c, 0xd3, 0x66, 0x64, 0x88, 0x24, 0x92, 0x0c, 0x81, 0x20, 0x20, 0x45, 0x31, 0x11, 0x08, 0x84, 0x24, 0x44, 0x49, 0x21, 0x03, 0x04, 0x92, 0x28, 0x42, 0x60, 0x92, 0x31, 0x09, 0x04, + 0x11, 0x42, 0x09, 0x21, 0x02, 0x21, 0x24, 0x88, 0x42, 0x23, 0x21, 0x12, 0x18, 0x22, 0x49, 0x24, 0x92, 0x49, 0x22, 0x49, 0x12, 0x13, 0x7d, 0xc0, 0x24, 0x4f, 0x69, 0xf3, 0xdd, 0xbf, 0x35, 0xb6, 0x6d, 0xb7, 0xad, 0xed, 0xfd, 0xfe, 0xff, 0xff, 0xb3, 0xff, 0xd3, 0x33, 0x8c, 0x93, 0x18, 0x84, 0x93, 0x26, 0x49, 0x12, 0x40, 0x18, 0x23, 0x04, 0x20, 0x82, 0x42, 0x4a, 0x21, 0x21, 0x24, 0x41, 0x18, 0xc8, 0x50, 0x82, 0x08, 0x92, 0x12, 0x02, 0x02, 0x48, 0x48, + 0x44, 0x49, 0x91, 0x18, 0xb2, 0x49, 0x24, 0x49, 0x18, 0x90, 0x24, 0x84, 0xc2, 0x99, 0x24, 0x84, 0x49, 0x24, 0x92, 0x44, 0x49, 0x91, 0x7f, 0x70, 0x01, 0x1b, 0xbf, 0x7e, 0xf7, 0xdb, 0xdd, 0x6d, 0xb6, 0xd9, 0xef, 0x3f, 0x9f, 0xb7, 0xbf, 0x6d, 0xdf, 0xfe, 0x59, 0x99, 0x6c, 0xd1, 0x24, 0xb1, 0x92, 0x41, 0x10, 0x48, 0x49, 0x42, 0x88, 0x44, 0x8a, 0x08, 0x98, 0x21, 0x28, 0x89, 0x11, 0x14, 0x42, 0x08, 0x42, 0x24, 0x82, 0x24, 0x84, 0xc8, 0xc8, 0x82, 0x42, + 0x24, 0x88, 0x24, 0xc2, 0x08, 0x88, 0x43, 0x12, 0x42, 0x44, 0x92, 0x64, 0x08, 0x84, 0x24, 0x93, 0x21, 0x24, 0x91, 0x12, 0x48, 0x44, 0xfb, 0xe4, 0x11, 0x27, 0xb7, 0xdf, 0xbe, 0x76, 0xd7, 0x6d, 0xde, 0xff, 0x76, 0xf3, 0xf6, 0xfd, 0xef, 0xff, 0x7f, 0xf3, 0x6c, 0xcd, 0x53, 0x2c, 0xc6, 0x26, 0x4c, 0x99, 0x26, 0x42, 0x22, 0x12, 0x08, 0x30, 0x90, 0x64, 0x81, 0x84, 0x46, 0x12, 0x41, 0x24, 0x89, 0x25, 0x09, 0x20, 0x64, 0x48, 0x91, 0x12, 0x12, 0x24, 0x24, + 0x22, 0x22, 0x48, 0x09, 0x22, 0x24, 0x48, 0x44, 0x22, 0x11, 0x11, 0x03, 0x24, 0x62, 0x92, 0x48, 0x24, 0x88, 0x4c, 0x49, 0x26, 0x48, 0xfe, 0xe0, 0x04, 0xaf, 0xd9, 0xf7, 0xed, 0xf6, 0xf6, 0xdb, 0x6b, 0xa7, 0x5d, 0xde, 0xff, 0xdf, 0x7b, 0xb7, 0xff, 0x99, 0x8e, 0x66, 0x94, 0xa2, 0x59, 0x20, 0x41, 0x24, 0x88, 0x91, 0x82, 0x20, 0x62, 0x82, 0x04, 0x84, 0x24, 0x12, 0x40, 0x44, 0x2c, 0x22, 0x24, 0x21, 0x24, 0x0b, 0x04, 0x42, 0x12, 0x11, 0x10, 0x91, 0x84, + 0x12, 0x24, 0x83, 0x24, 0x24, 0x91, 0x11, 0x24, 0x88, 0x92, 0x44, 0x30, 0x45, 0x08, 0x92, 0x49, 0x12, 0x23, 0x02, 0x44, 0x91, 0x22, 0x77, 0xf2, 0x04, 0x8e, 0x6f, 0x7b, 0x7b, 0xdf, 0x3b, 0xb6, 0xee, 0xfd, 0xdb, 0x7e, 0xdb, 0x77, 0xde, 0xff, 0xfc, 0xcc, 0xf3, 0x32, 0xa4, 0x99, 0x21, 0x99, 0x33, 0x20, 0x90, 0x84, 0x18, 0x89, 0x02, 0x08, 0x62, 0x11, 0x24, 0x49, 0x19, 0x21, 0x00, 0x89, 0x21, 0x88, 0x20, 0xc0, 0x11, 0x11, 0x48, 0x8c, 0x44, 0x84, 0x11, + 0x44, 0x84, 0x90, 0x91, 0x88, 0x84, 0x94, 0x89, 0x24, 0x42, 0x09, 0x84, 0x91, 0x24, 0x48, 0x21, 0x49, 0x24, 0x31, 0x30, 0x84, 0x94, 0xbd, 0xf0, 0x41, 0x7f, 0xef, 0xdf, 0xde, 0xd9, 0xed, 0xb7, 0xbb, 0x5b, 0xbb, 0xcf, 0xff, 0xfd, 0xf7, 0xff, 0xe6, 0x66, 0x25, 0x99, 0xab, 0x4d, 0x26, 0x46, 0x0c, 0x8a, 0x44, 0x20, 0x40, 0x44, 0x18, 0x43, 0x08, 0x42, 0x43, 0x20, 0x41, 0x28, 0xd2, 0x48, 0x48, 0x12, 0x89, 0x14, 0xc1, 0x14, 0x44, 0x60, 0x84, 0x24, 0x48, + 0x21, 0x31, 0x14, 0x44, 0x22, 0x24, 0x82, 0x21, 0x21, 0x08, 0xa2, 0x12, 0x24, 0x45, 0x25, 0x8c, 0x24, 0x91, 0x0c, 0x82, 0x24, 0x91, 0x3f, 0x79, 0x02, 0x5f, 0x39, 0xf5, 0xf7, 0xbf, 0xdd, 0xdd, 0xbb, 0xdb, 0xbe, 0xfb, 0x6d, 0xbf, 0x7f, 0xfe, 0x59, 0x9b, 0x39, 0x94, 0x49, 0x21, 0x90, 0x40, 0xc0, 0x92, 0x23, 0x0a, 0x44, 0x41, 0x81, 0x10, 0x09, 0x28, 0x98, 0x26, 0x24, 0x86, 0x09, 0x12, 0x46, 0x44, 0x12, 0x04, 0x0c, 0x44, 0x91, 0x02, 0x32, 0x41, 0x22, + 0x29, 0x04, 0x45, 0x12, 0x44, 0x91, 0x28, 0x92, 0x18, 0xa4, 0x10, 0x49, 0x24, 0x91, 0x24, 0x21, 0x84, 0x49, 0x42, 0x19, 0x22, 0x49, 0x7f, 0xd9, 0x1a, 0xbd, 0xef, 0x7f, 0x7d, 0xed, 0xb6, 0x7d, 0xce, 0xfe, 0xe7, 0xbf, 0xff, 0xef, 0xff, 0xe9, 0x9b, 0x31, 0xca, 0x66, 0x54, 0xb2, 0x4d, 0x34, 0x32, 0x44, 0x88, 0x48, 0x92, 0x18, 0x24, 0x49, 0x61, 0x22, 0x00, 0x88, 0x88, 0x90, 0x24, 0x21, 0x10, 0x91, 0x42, 0x61, 0x21, 0x21, 0x09, 0x18, 0x82, 0x49, 0x04, + 0x08, 0xc9, 0x20, 0x90, 0x91, 0x12, 0x24, 0x88, 0xc2, 0x21, 0x45, 0x24, 0x90, 0x88, 0x88, 0x92, 0x11, 0x08, 0x51, 0x44, 0x99, 0x24, 0x3d, 0xfc, 0x84, 0xff, 0x6f, 0xdb, 0xde, 0x76, 0xef, 0xe7, 0x7d, 0xb7, 0xfd, 0xed, 0xb6, 0xff, 0xfe, 0x4c, 0xa6, 0x66, 0x4c, 0x99, 0x92, 0x4c, 0x42, 0x05, 0x89, 0x20, 0x48, 0x01, 0x00, 0x82, 0x10, 0x82, 0x04, 0x08, 0xc6, 0x48, 0x92, 0x09, 0x91, 0x89, 0x11, 0x08, 0x08, 0x09, 0x24, 0x89, 0x22, 0x42, 0x11, 0x08, 0x51, + 0x46, 0x12, 0x2a, 0x24, 0x89, 0x48, 0x82, 0x22, 0x04, 0x89, 0x09, 0x20, 0x92, 0x26, 0x22, 0x44, 0x49, 0x26, 0x14, 0x44, 0x84, 0x84, 0x9f, 0x7e, 0x64, 0xfb, 0x73, 0xbe, 0xf7, 0xde, 0xfb, 0x7f, 0xf7, 0xf7, 0x7f, 0x7f, 0xff, 0xff, 0xb3, 0x56, 0xec, 0xcc, 0xb3, 0x24, 0xa9, 0x41, 0x98, 0xc8, 0x49, 0x29, 0x12, 0x91, 0x24, 0x22, 0x42, 0x20, 0x90, 0xc4, 0x10, 0x42, 0x11, 0x22, 0x04, 0x44, 0x44, 0x62, 0x24, 0x92, 0x12, 0x24, 0x24, 0x22, 0x48, 0x46, 0x10, + 0x30, 0x44, 0x88, 0x82, 0x22, 0x09, 0x18, 0x92, 0x51, 0x24, 0x22, 0x0a, 0x09, 0x21, 0x24, 0x49, 0x24, 0x41, 0x84, 0x92, 0x42, 0x52, 0x5f, 0xdf, 0x33, 0xff, 0x9e, 0xef, 0xbd, 0xeb, 0x9d, 0xdb, 0xbe, 0xdd, 0xdb, 0xdb, 0xff, 0xf9, 0x93, 0x73, 0x19, 0x33, 0x24, 0xcc, 0xa5, 0x32, 0x24, 0x22, 0x44, 0x44, 0x80, 0x44, 0x09, 0x08, 0x49, 0x0c, 0x12, 0x11, 0x21, 0x24, 0x49, 0x20, 0x64, 0x30, 0x92, 0x04, 0x84, 0x90, 0xc2, 0x21, 0x84, 0x88, 0x8a, 0x50, 0x86, + 0x02, 0x48, 0x82, 0x48, 0x90, 0xa4, 0x42, 0x44, 0x49, 0x10, 0x90, 0xc8, 0xc9, 0x08, 0x91, 0x22, 0x04, 0x98, 0x62, 0x22, 0x59, 0x12, 0x5d, 0xf7, 0xdb, 0xed, 0xfb, 0xfb, 0xef, 0x3f, 0x77, 0xfe, 0xef, 0xff, 0xfe, 0xff, 0xfe, 0xcc, 0x6c, 0x8c, 0xd3, 0x24, 0xcc, 0x93, 0x14, 0x8c, 0x85, 0x24, 0x92, 0x44, 0x24, 0x40, 0x90, 0x49, 0x08, 0x41, 0x42, 0x12, 0x4c, 0x91, 0x24, 0x4d, 0x02, 0x82, 0x22, 0x24, 0x48, 0x44, 0x08, 0x88, 0x10, 0x88, 0x81, 0x01, 0x20, + 0x49, 0x22, 0x31, 0x12, 0x44, 0x22, 0x49, 0x09, 0x22, 0x42, 0x4c, 0x11, 0x10, 0xca, 0x12, 0x24, 0xd2, 0x22, 0x18, 0x89, 0x04, 0x49, 0x0f, 0x7f, 0xff, 0xff, 0x6f, 0x7e, 0xfb, 0xf5, 0xfe, 0xef, 0xfb, 0x6e, 0xef, 0xff, 0xb3, 0x33, 0x6c, 0xb4, 0x94, 0xcc, 0x93, 0x30, 0x44, 0x81, 0x51, 0x11, 0x22, 0x11, 0x01, 0x18, 0x84, 0x90, 0x82, 0x20, 0x48, 0xc2, 0x10, 0x11, 0x24, 0x40, 0x48, 0x89, 0x08, 0x81, 0x12, 0x12, 0x48, 0x92, 0x49, 0x22, 0x31, 0x2c, 0x49, + 0x24, 0x92, 0x44, 0x44, 0x13, 0x09, 0x21, 0x22, 0x22, 0x28, 0x21, 0x24, 0x24, 0x11, 0x48, 0x91, 0x09, 0x09, 0x82, 0x49, 0x21, 0x24, 0xef, 0xdf, 0xfe, 0xdb, 0xd9, 0xdf, 0xbe, 0xdd, 0xaf, 0xbb, 0x7f, 0xfb, 0xbf, 0xfd, 0xad, 0xb6, 0x13, 0x66, 0x64, 0x93, 0x30, 0xcd, 0xb2, 0x73, 0x12, 0x49, 0x28, 0x90, 0x48, 0x22, 0x20, 0x06, 0x30, 0x8c, 0x08, 0x08, 0x83, 0x44, 0x41, 0x12, 0x48, 0x24, 0x48, 0x98, 0x91, 0x88, 0x92, 0x11, 0x22, 0x11, 0x04, 0x20, 0x88, + 0x20, 0x88, 0x84, 0x49, 0x20, 0x91, 0x24, 0x48, 0x88, 0x89, 0x82, 0x42, 0x43, 0x11, 0x09, 0x12, 0x21, 0x24, 0x62, 0x44, 0x99, 0x24, 0x07, 0xf6, 0xf7, 0xfe, 0xf7, 0xf7, 0xed, 0xfe, 0xfb, 0xff, 0xdc, 0xdf, 0xff, 0xa4, 0xcc, 0x95, 0xd5, 0x19, 0x2a, 0x31, 0x26, 0x02, 0x09, 0x0c, 0x24, 0x88, 0x82, 0x4a, 0x22, 0x00, 0x26, 0x40, 0x44, 0x11, 0x23, 0x24, 0xa8, 0x12, 0x12, 0x49, 0x12, 0x41, 0x04, 0x02, 0x04, 0x22, 0x21, 0x24, 0x08, 0x84, 0x44, 0x84, 0x84, + 0x4a, 0x22, 0x31, 0x08, 0x8c, 0x44, 0x89, 0x12, 0x48, 0x92, 0x18, 0x91, 0x10, 0x44, 0x62, 0x44, 0x94, 0x84, 0x19, 0x32, 0x42, 0x49, 0xb3, 0x7f, 0xbd, 0xb7, 0xb7, 0x7d, 0xfd, 0xa7, 0xde, 0xdd, 0xf7, 0xff, 0xf2, 0x66, 0x52, 0xd9, 0x54, 0xc9, 0x89, 0x8c, 0x89, 0x32, 0x64, 0x88, 0x89, 0x26, 0x31, 0x22, 0x02, 0x49, 0x08, 0x31, 0x03, 0x11, 0x20, 0x44, 0x20, 0x88, 0x92, 0x24, 0x41, 0x18, 0x61, 0x60, 0x60, 0x44, 0x48, 0x42, 0x44, 0x22, 0x30, 0x92, 0x31, + 0x10, 0x92, 0x42, 0x22, 0x11, 0x24, 0x21, 0x24, 0x46, 0x04, 0x40, 0x8c, 0x24, 0x44, 0x08, 0x90, 0x04, 0x12, 0x84, 0x88, 0x48, 0x92, 0x2b, 0xcd, 0xef, 0xfd, 0xed, 0xdf, 0x5f, 0xbd, 0xf7, 0xf7, 0xbf, 0xfe, 0x4c, 0x9b, 0x73, 0x26, 0x5a, 0xa6, 0x51, 0x22, 0xc9, 0x4c, 0x92, 0xa2, 0x49, 0x21, 0x0c, 0x20, 0xc8, 0x42, 0x41, 0x84, 0x30, 0x44, 0x0c, 0x42, 0x06, 0x62, 0x48, 0x84, 0x8c, 0x22, 0x09, 0x0c, 0x0b, 0x11, 0x0a, 0x48, 0x91, 0x18, 0x82, 0x10, 0x82, + 0x24, 0x44, 0x08, 0x92, 0x40, 0x89, 0x24, 0x89, 0x30, 0x61, 0x06, 0x20, 0x82, 0x31, 0x92, 0x26, 0x61, 0x42, 0x24, 0x25, 0x24, 0x92, 0x49, 0xff, 0x7e, 0xdf, 0x7f, 0xf7, 0xf3, 0xff, 0x3d, 0xbf, 0xff, 0xd3, 0x13, 0x31, 0x8c, 0xad, 0x8a, 0x30, 0x56, 0x58, 0x32, 0x49, 0x12, 0x24, 0x44, 0x90, 0xc0, 0x89, 0x09, 0x10, 0x94, 0x04, 0x84, 0x40, 0xc1, 0x18, 0xd0, 0x04, 0x42, 0x50, 0x80, 0x82, 0x88, 0x21, 0x80, 0x22, 0x20, 0x84, 0x88, 0xc1, 0x09, 0x44, 0x08, + 0x43, 0x09, 0x88, 0x44, 0x8c, 0x21, 0x12, 0x22, 0x09, 0x08, 0xb0, 0x42, 0x48, 0x84, 0x24, 0x88, 0x89, 0x18, 0x91, 0x21, 0x24, 0x49, 0x95, 0xf7, 0xdb, 0xf7, 0xdb, 0x7d, 0xbe, 0x67, 0xef, 0xff, 0xfe, 0x49, 0xb3, 0x4c, 0xa4, 0xc9, 0x25, 0x93, 0x08, 0xc5, 0x84, 0x92, 0x49, 0x11, 0x32, 0x4c, 0x12, 0x44, 0x20, 0x14, 0x20, 0x61, 0x01, 0x18, 0x11, 0x01, 0x09, 0x25, 0x12, 0x12, 0x32, 0x48, 0x24, 0x80, 0x31, 0x88, 0x94, 0x30, 0x22, 0x04, 0x48, 0x43, 0x24, + 0x10, 0x20, 0x22, 0x11, 0x21, 0x24, 0xc2, 0x48, 0xc2, 0x24, 0x83, 0x11, 0x12, 0x49, 0x21, 0x21, 0x10, 0x82, 0x44, 0x88, 0x93, 0x24, 0x94, 0xfd, 0xef, 0x7d, 0xff, 0xdf, 0xef, 0xfd, 0xff, 0xff, 0xc9, 0x2c, 0x8c, 0xca, 0x66, 0x52, 0xd4, 0x4c, 0xa2, 0x24, 0x4c, 0x92, 0xa4, 0xc9, 0x08, 0x43, 0x11, 0x10, 0x86, 0x43, 0x0a, 0x08, 0x58, 0x22, 0x04, 0x64, 0x21, 0x21, 0x24, 0x89, 0x02, 0x11, 0x22, 0x1a, 0x44, 0x10, 0x81, 0x03, 0x24, 0x24, 0x22, 0x18, 0x41, + 0x24, 0x94, 0x00, 0x84, 0x12, 0x44, 0x08, 0x49, 0x12, 0x21, 0x08, 0x24, 0x21, 0x10, 0x89, 0x24, 0x46, 0x24, 0x48, 0x92, 0x10, 0x92, 0x62, 0xef, 0x7f, 0xdf, 0x6d, 0xf6, 0xed, 0xbf, 0x7f, 0xfd, 0x33, 0x66, 0x69, 0x33, 0x19, 0x36, 0x52, 0x40, 0xb2, 0x24, 0xb2, 0x64, 0x92, 0x24, 0xc3, 0x10, 0x44, 0x22, 0x10, 0x88, 0x41, 0x8a, 0x42, 0x82, 0x62, 0x04, 0x92, 0x48, 0x88, 0x61, 0x10, 0x94, 0x88, 0xc0, 0x84, 0x44, 0x28, 0x88, 0x44, 0x81, 0x89, 0x00, 0x48, + 0x08, 0x41, 0x48, 0x42, 0x44, 0x11, 0x25, 0x12, 0x48, 0x89, 0x24, 0x88, 0x89, 0x26, 0x24, 0x49, 0x21, 0x24, 0x8a, 0x44, 0x8c, 0x4b, 0x2a, 0x7b, 0xdd, 0xf7, 0xff, 0x7f, 0xbf, 0xef, 0xff, 0xa5, 0x94, 0x99, 0x66, 0x4c, 0xc9, 0x89, 0x09, 0x9b, 0x09, 0x93, 0x02, 0x49, 0x12, 0x24, 0x30, 0x92, 0x44, 0x89, 0x20, 0x88, 0x44, 0x21, 0x02, 0x10, 0x88, 0x92, 0x44, 0x12, 0x49, 0x04, 0x4c, 0x02, 0x11, 0x04, 0x91, 0x23, 0x06, 0x24, 0x10, 0x98, 0x10, 0x66, 0x0a, + 0x42, 0x08, 0x02, 0x18, 0x09, 0x09, 0x21, 0x12, 0x21, 0x24, 0x21, 0x08, 0x84, 0x20, 0x44, 0x89, 0x29, 0x11, 0x22, 0x48, 0xa3, 0x24, 0x99, 0x3e, 0xff, 0x7d, 0xb7, 0xdb, 0x72, 0xff, 0xf2, 0x68, 0xd6, 0x93, 0x12, 0xc9, 0x26, 0x62, 0x64, 0x20, 0x48, 0x49, 0x59, 0x12, 0x49, 0x89, 0x04, 0x48, 0x90, 0x90, 0x8a, 0x22, 0x10, 0x24, 0x30, 0x44, 0x09, 0x21, 0x11, 0x84, 0x42, 0x10, 0x81, 0x60, 0xc4, 0x32, 0x10, 0x88, 0x50, 0x43, 0x22, 0x22, 0x44, 0x80, 0xa0, + 0x10, 0x82, 0x20, 0x81, 0x88, 0xc2, 0x48, 0x84, 0x8c, 0x44, 0x88, 0x62, 0x30, 0x89, 0x12, 0x22, 0x08, 0xc9, 0x11, 0x22, 0x20, 0x91, 0x95, 0x9f, 0xf7, 0xdf, 0xfd, 0xff, 0xdf, 0xfe, 0x9b, 0x4e, 0x69, 0x64, 0xd9, 0x33, 0x31, 0x14, 0x92, 0xa6, 0x4b, 0x28, 0x44, 0x92, 0x48, 0x49, 0x49, 0x04, 0x0a, 0x12, 0x10, 0x22, 0x93, 0x02, 0x84, 0x81, 0x41, 0x09, 0x12, 0x25, 0x24, 0x92, 0x21, 0x0c, 0x08, 0x80, 0x46, 0x00, 0x41, 0x18, 0x49, 0x00, 0x44, 0x18, 0x84, + 0x04, 0x20, 0x89, 0x24, 0x22, 0x12, 0x4a, 0x24, 0x40, 0x92, 0x26, 0x02, 0x42, 0x42, 0x48, 0x92, 0x46, 0x08, 0x91, 0x24, 0x98, 0x94, 0x64, 0xdd, 0xbd, 0xf6, 0xdf, 0x6d, 0xff, 0xf3, 0xac, 0xd3, 0x2d, 0x2c, 0x8d, 0x24, 0xcc, 0x94, 0x92, 0x24, 0x90, 0x86, 0x92, 0x64, 0x92, 0x44, 0x22, 0x61, 0x60, 0xc2, 0x45, 0x18, 0x20, 0x58, 0x12, 0x29, 0x14, 0x48, 0x48, 0x21, 0x08, 0x42, 0x4c, 0x01, 0x22, 0x4c, 0x40, 0x65, 0x09, 0x20, 0x40, 0x4c, 0x11, 0x02, 0x11, + 0x49, 0x08, 0x02, 0x04, 0x21, 0x24, 0x10, 0x91, 0x12, 0x08, 0x90, 0x98, 0x49, 0x12, 0x42, 0x44, 0x50, 0x92, 0x24, 0x11, 0x06, 0x4c, 0x8a, 0x47, 0xbf, 0x7f, 0xf7, 0xff, 0xfe, 0xcc, 0xe6, 0xb5, 0xa4, 0x92, 0x62, 0x98, 0x02, 0x62, 0x49, 0x49, 0x26, 0x51, 0x22, 0x0c, 0x92, 0x31, 0x88, 0x09, 0x04, 0x08, 0x41, 0x41, 0x08, 0x81, 0x41, 0x08, 0x20, 0x44, 0x89, 0x98, 0x92, 0x48, 0x40, 0xd1, 0x21, 0x11, 0x19, 0x04, 0x24, 0x05, 0x12, 0x41, 0x82, 0x61, 0x20, + 0x08, 0x42, 0x50, 0x91, 0x0c, 0x21, 0x84, 0x84, 0x92, 0x61, 0x01, 0x21, 0x09, 0x04, 0x32, 0x11, 0x04, 0x91, 0x24, 0xc9, 0x63, 0x22, 0xb3, 0x37, 0xef, 0xdb, 0x7d, 0xff, 0xd9, 0x36, 0x59, 0x99, 0x92, 0xd3, 0x32, 0xc6, 0xd9, 0x0a, 0x49, 0x12, 0x49, 0x13, 0x29, 0x92, 0x49, 0x82, 0x13, 0x24, 0x25, 0x24, 0x92, 0x04, 0x46, 0x24, 0x14, 0x42, 0x23, 0x11, 0x24, 0x42, 0x21, 0x09, 0x12, 0x14, 0x4c, 0x41, 0x01, 0x10, 0x90, 0xc4, 0x04, 0x10, 0x28, 0x0c, 0x0c, + 0x22, 0x10, 0x10, 0x01, 0x10, 0x88, 0x22, 0x24, 0x21, 0x04, 0x6c, 0x04, 0x90, 0x61, 0x84, 0x92, 0x62, 0x24, 0x82, 0x24, 0x18, 0xb2, 0x14, 0x93, 0xfb, 0xff, 0xdf, 0xfa, 0x4d, 0x49, 0x99, 0x4a, 0x5a, 0x4c, 0x8c, 0x31, 0x11, 0x99, 0x24, 0x92, 0x51, 0x24, 0x88, 0x42, 0x48, 0x08, 0x44, 0x21, 0x20, 0x41, 0x08, 0x91, 0x20, 0x04, 0x80, 0x91, 0x88, 0x04, 0x44, 0x12, 0x49, 0x21, 0x08, 0x20, 0x80, 0x8c, 0x64, 0x42, 0x02, 0x10, 0xa1, 0x04, 0x21, 0x00, 0xc1, + 0x00, 0x81, 0x25, 0x64, 0x82, 0x0a, 0x48, 0x49, 0x24, 0x32, 0x00, 0xc8, 0x92, 0x08, 0x08, 0x88, 0x18, 0x88, 0x98, 0x92, 0x92, 0x4d, 0xc4, 0xc9, 0xff, 0xff, 0xff, 0xda, 0x66, 0xcd, 0xa6, 0x66, 0x63, 0x22, 0x41, 0x89, 0x26, 0x44, 0x92, 0x49, 0x14, 0x8c, 0x46, 0x49, 0x22, 0x64, 0x90, 0x89, 0x0a, 0x49, 0x20, 0x48, 0x09, 0x90, 0x62, 0x0c, 0x08, 0xc4, 0x92, 0x91, 0x04, 0x24, 0x63, 0x0a, 0x24, 0x90, 0x84, 0x29, 0x49, 0x22, 0x08, 0xc2, 0x44, 0xb2, 0x10, + 0x10, 0x24, 0x01, 0x08, 0x62, 0x61, 0x13, 0x08, 0x84, 0x82, 0x92, 0x22, 0x44, 0x92, 0x62, 0x43, 0x01, 0x22, 0x42, 0x48, 0xc4, 0x48, 0x26, 0x6c, 0x7f, 0x7f, 0xfa, 0x45, 0x98, 0xb4, 0xe6, 0x91, 0x8c, 0xb2, 0x5a, 0x48, 0xa0, 0x44, 0x92, 0x49, 0x24, 0xa2, 0x51, 0x24, 0x89, 0x04, 0x89, 0x24, 0x48, 0x88, 0x26, 0x0a, 0xc0, 0x43, 0x09, 0x20, 0x42, 0x31, 0x08, 0x84, 0xb0, 0x89, 0x00, 0x41, 0x12, 0x12, 0x11, 0x89, 0x10, 0x49, 0x42, 0x18, 0x90, 0x80, 0x0c, + 0x46, 0x00, 0x90, 0x22, 0x09, 0x04, 0x40, 0x22, 0x21, 0x18, 0x92, 0x12, 0x11, 0x21, 0x04, 0x10, 0xa4, 0x49, 0x12, 0x24, 0x4d, 0x23, 0x29, 0x13, 0x06, 0x49, 0x26, 0xf5, 0x33, 0x33, 0x19, 0x99, 0x30, 0x89, 0x22, 0x46, 0x19, 0x32, 0x49, 0x24, 0xa6, 0x22, 0x24, 0x92, 0x24, 0x52, 0x22, 0x10, 0x91, 0x26, 0x40, 0xa0, 0x16, 0x18, 0x08, 0x42, 0x51, 0x02, 0x49, 0x24, 0x02, 0x10, 0x94, 0x91, 0x12, 0x42, 0x44, 0x00, 0x24, 0x84, 0x10, 0x01, 0x02, 0x09, 0x61, + 0x00, 0xca, 0x04, 0x80, 0x88, 0x49, 0x2c, 0x92, 0x49, 0x41, 0x21, 0x44, 0x92, 0x24, 0x51, 0x94, 0x24, 0x88, 0x48, 0x85, 0x21, 0x99, 0x23, 0x32, 0x61, 0x96, 0xd1, 0x96, 0x66, 0xca, 0x52, 0x66, 0x46, 0x49, 0x24, 0x91, 0x44, 0x89, 0x24, 0x92, 0x49, 0x29, 0x88, 0x91, 0x22, 0x42, 0x24, 0x92, 0x24, 0x10, 0x92, 0x04, 0x40, 0x80, 0x92, 0x12, 0x04, 0x48, 0x44, 0x49, 0x49, 0x46, 0x21, 0x0c, 0x41, 0x08, 0x90, 0x66, 0x22, 0x20, 0x94, 0xc4, 0x48, 0x48, 0x00, + 0x24, 0x08, 0x60, 0x14, 0x22, 0x21, 0x00, 0x84, 0x48, 0x24, 0x24, 0x10, 0x44, 0x84, 0x92, 0x04, 0x82, 0x22, 0x49, 0x31, 0x28, 0x92, 0x58, 0x89, 0x9c, 0xb2, 0x5d, 0x32, 0x98, 0x99, 0x96, 0x01, 0x91, 0x32, 0x94, 0x91, 0x24, 0x89, 0x22, 0x49, 0x11, 0x08, 0x4a, 0x24, 0x48, 0x88, 0x84, 0x42, 0x42, 0x82, 0x08, 0x52, 0x22, 0x24, 0x41, 0x88, 0xa4, 0x89, 0x24, 0x90, 0x48, 0x40, 0x48, 0x40, 0x98, 0x62, 0x23, 0x08, 0x88, 0x89, 0x02, 0x10, 0x91, 0x22, 0x92, + 0x04, 0x21, 0x09, 0x21, 0x21, 0x8c, 0x52, 0x21, 0x06, 0x24, 0x89, 0x89, 0x24, 0x48, 0x08, 0x60, 0x98, 0x92, 0x24, 0x42, 0x4a, 0x64, 0xc4, 0xcc, 0x46, 0x6b, 0x49, 0x49, 0x93, 0x24, 0xa4, 0xd8, 0x29, 0x04, 0x92, 0x4c, 0x92, 0x64, 0x89, 0x24, 0x94, 0xc6, 0x42, 0x49, 0x04, 0x92, 0x51, 0x18, 0x48, 0x68, 0x43, 0x02, 0x88, 0x44, 0x08, 0x21, 0x08, 0x22, 0x22, 0x24, 0x82, 0x11, 0x12, 0x32, 0x22, 0x08, 0x88, 0x20, 0x89, 0x10, 0x62, 0x0a, 0x11, 0x00, 0x08, + 0x43, 0x04, 0x00, 0x89, 0x0c, 0x10, 0x84, 0x99, 0x30, 0x88, 0x48, 0x24, 0x89, 0x13, 0x42, 0x0a, 0x41, 0x11, 0x82, 0x08, 0x93, 0x0c, 0x93, 0x23, 0x63, 0x4c, 0xb3, 0x4c, 0x64, 0xa6, 0x69, 0x26, 0x89, 0x51, 0x22, 0x42, 0x49, 0x04, 0x91, 0x24, 0x84, 0x31, 0x31, 0x09, 0x31, 0x11, 0x10, 0x81, 0x09, 0x09, 0x30, 0x28, 0x11, 0x11, 0x88, 0x24, 0x43, 0x12, 0x11, 0x22, 0x31, 0x24, 0x84, 0x82, 0x42, 0x89, 0x10, 0x92, 0x21, 0x12, 0x08, 0xa1, 0x24, 0x54, 0xc2, + 0x18, 0x50, 0xb2, 0x10, 0x40, 0x42, 0x24, 0x42, 0x00, 0x89, 0x12, 0x44, 0x21, 0x00, 0x31, 0x88, 0x44, 0x4c, 0x30, 0x92, 0x24, 0x92, 0x28, 0x30, 0x99, 0x32, 0x94, 0xb3, 0x2c, 0x99, 0x09, 0x20, 0xc4, 0x49, 0x29, 0x31, 0x24, 0x52, 0x44, 0x92, 0x63, 0x09, 0x0c, 0x60, 0x82, 0x44, 0x26, 0x24, 0x90, 0x84, 0x84, 0x81, 0x44, 0x20, 0x23, 0x08, 0x30, 0x90, 0xc4, 0x48, 0x44, 0x42, 0x21, 0x09, 0x18, 0x61, 0x12, 0x12, 0x44, 0x42, 0x10, 0x84, 0x42, 0x04, 0x10, + 0x00, 0x46, 0x02, 0x44, 0x23, 0x24, 0x49, 0x08, 0xcc, 0x61, 0x02, 0x49, 0x24, 0x69, 0x84, 0x21, 0x12, 0x40, 0x84, 0x91, 0x48, 0xc3, 0x26, 0xcc, 0x94, 0x92, 0x4c, 0x89, 0x93, 0x11, 0xa6, 0x4c, 0x32, 0x26, 0x49, 0x0c, 0x92, 0x49, 0x24, 0x92, 0x18, 0xc8, 0xc1, 0x06, 0x24, 0x24, 0x80, 0x48, 0x92, 0x30, 0x12, 0x4c, 0x21, 0x8a, 0x20, 0x49, 0x84, 0x24, 0x09, 0x05, 0x02, 0x18, 0x48, 0x64, 0x45, 0x04, 0x49, 0x21, 0x10, 0x08, 0xc4, 0x12, 0x10, 0xa1, 0x04, + 0x46, 0x10, 0x48, 0x09, 0x88, 0x24, 0x81, 0x24, 0x23, 0x04, 0x68, 0x88, 0x92, 0x04, 0x04, 0x24, 0x22, 0x24, 0x92, 0x0c, 0x4a, 0x38, 0xc4, 0x03, 0x26, 0xcd, 0x63, 0x4c, 0xc4, 0x66, 0x30, 0x93, 0x09, 0x90, 0x92, 0x42, 0x42, 0x21, 0x24, 0x49, 0x84, 0x26, 0x11, 0x10, 0x49, 0x21, 0x19, 0x02, 0x02, 0x43, 0x48, 0x20, 0x88, 0x08, 0x8c, 0x42, 0x04, 0x43, 0x21, 0x31, 0x28, 0x81, 0x12, 0x10, 0x90, 0x32, 0x41, 0x24, 0x4a, 0xa1, 0x09, 0x10, 0x8c, 0x08, 0x61, + 0x10, 0x81, 0x21, 0x22, 0x11, 0x08, 0x94, 0x93, 0x08, 0x12, 0x04, 0x22, 0x10, 0x92, 0x61, 0x84, 0x89, 0x89, 0x10, 0xc1, 0x22, 0x24, 0x31, 0xb2, 0x60, 0x64, 0x91, 0x32, 0x32, 0x88, 0x89, 0x90, 0xc8, 0x49, 0x24, 0x91, 0x19, 0x94, 0x49, 0x20, 0x65, 0x21, 0x24, 0x91, 0x10, 0x89, 0x01, 0x31, 0x29, 0x10, 0x23, 0x09, 0x12, 0x61, 0x01, 0x12, 0x51, 0x10, 0x24, 0x02, 0x22, 0x49, 0x12, 0x86, 0x22, 0x82, 0x14, 0x44, 0x88, 0x24, 0x22, 0x44, 0x81, 0x49, 0x08, + 0x20, 0x2c, 0x84, 0x48, 0x44, 0xc2, 0x10, 0x80, 0x40, 0xc8, 0x91, 0x22, 0x44, 0x92, 0x08, 0x11, 0x24, 0x12, 0x44, 0x11, 0x24, 0xc5, 0x89, 0x08, 0x9b, 0x12, 0x18, 0x93, 0x2a, 0xa9, 0x88, 0x4c, 0x26, 0x24, 0x48, 0x94, 0x44, 0x44, 0x92, 0x26, 0x11, 0x18, 0x88, 0x89, 0x12, 0x12, 0x64, 0x44, 0x48, 0x94, 0x84, 0x44, 0x42, 0x04, 0x51, 0x10, 0x11, 0x24, 0x92, 0xc8, 0x92, 0x24, 0xc0, 0x90, 0x48, 0x98, 0x91, 0x10, 0xa1, 0x04, 0x90, 0x84, 0x31, 0x10, 0x06, + 0x0b, 0x00, 0x10, 0x01, 0x04, 0x11, 0x22, 0x2c, 0x56, 0x08, 0x92, 0x48, 0x92, 0x21, 0x8a, 0x49, 0x24, 0x44, 0x24, 0x4c, 0x91, 0x12, 0x49, 0x49, 0x82, 0x49, 0x46, 0x4c, 0x88, 0x26, 0x66, 0x43, 0x21, 0x92, 0x4a, 0x22, 0x44, 0x49, 0x24, 0x88, 0x92, 0x42, 0x49, 0x24, 0x42, 0x44, 0x04, 0x04, 0x82, 0x41, 0x10, 0x90, 0x48, 0x92, 0x14, 0x44, 0x84, 0x49, 0x08, 0x08, 0x84, 0x84, 0x0c, 0x23, 0x09, 0x01, 0x22, 0x22, 0x04, 0x92, 0x44, 0x22, 0x44, 0x84, 0xb0, + 0x48, 0x52, 0x46, 0xb0, 0x91, 0x14, 0x49, 0x01, 0x10, 0x42, 0x22, 0x44, 0x88, 0x48, 0x21, 0x22, 0x11, 0x21, 0x23, 0x02, 0x12, 0x48, 0x52, 0x52, 0x69, 0x24, 0x44, 0x60, 0xc5, 0x90, 0x11, 0x30, 0x98, 0x49, 0x21, 0x22, 0x33, 0x12, 0x40, 0x91, 0x22, 0x49, 0x11, 0x11, 0x10, 0x91, 0x21, 0x90, 0x91, 0x08, 0x48, 0x8b, 0x10, 0x88, 0x80, 0x84, 0xa4, 0x42, 0x41, 0x22, 0x20, 0x51, 0x21, 0x20, 0xa4, 0x64, 0x48, 0x89, 0x52, 0x21, 0x09, 0x18, 0x44, 0x22, 0x00, + 0x00, 0x82, 0x20, 0x06, 0x20, 0xc2, 0x44, 0x52, 0x43, 0x32, 0x28, 0x91, 0x21, 0x0a, 0x44, 0x84, 0x84, 0x89, 0x08, 0x61, 0x48, 0x99, 0x92, 0x12, 0x09, 0x32, 0xb1, 0x96, 0x31, 0x13, 0x49, 0x0c, 0x86, 0x09, 0x24, 0x48, 0x88, 0x42, 0x1a, 0x11, 0x24, 0x91, 0x24, 0x44, 0x4c, 0x20, 0x98, 0x49, 0x14, 0x26, 0x22, 0x20, 0x24, 0x21, 0x2a, 0x30, 0x21, 0x10, 0x94, 0x89, 0x19, 0x04, 0x24, 0x8c, 0x22, 0x12, 0x44, 0x91, 0x10, 0x88, 0x48, 0x41, 0x11, 0x10, 0xc9, + 0x32, 0x28, 0x89, 0x10, 0x4a, 0x08, 0x91, 0x12, 0x18, 0x09, 0x04, 0x08, 0x44, 0x82, 0x52, 0x24, 0x64, 0x24, 0x40, 0x0c, 0x49, 0x24, 0x24, 0xc9, 0x92, 0x88, 0x89, 0x11, 0x0c, 0x64, 0x88, 0x82, 0x60, 0xa2, 0x49, 0x09, 0x02, 0x49, 0x81, 0x4c, 0x44, 0x24, 0x82, 0x44, 0x41, 0x0c, 0x02, 0x09, 0x02, 0x40, 0x89, 0x11, 0x23, 0x24, 0x42, 0x03, 0x09, 0x24, 0x22, 0x21, 0x42, 0x22, 0x92, 0x02, 0x49, 0x82, 0x11, 0x04, 0x24, 0x92, 0x22, 0x24, 0x82, 0x44, 0x04, + 0x04, 0x89, 0x11, 0x23, 0x10, 0x24, 0x89, 0x20, 0x81, 0x41, 0x51, 0x62, 0x44, 0x31, 0x08, 0x49, 0x09, 0x11, 0x15, 0x90, 0x92, 0x45, 0x24, 0x24, 0x48, 0xa4, 0x4a, 0x49, 0x62, 0x48, 0xa6, 0x32, 0x19, 0x24, 0x12, 0x64, 0x64, 0x90, 0x4c, 0x41, 0x11, 0x24, 0x52, 0x11, 0x12, 0x41, 0x60, 0xa0, 0x61, 0x18, 0x88, 0x44, 0x88, 0x08, 0x90, 0xc8, 0x48, 0x89, 0x22, 0x48, 0x08, 0x98, 0x10, 0xd1, 0x04, 0x29, 0x22, 0x62, 0x42, 0x11, 0x82, 0x84, 0x28, 0x89, 0x20, + 0x24, 0x44, 0x44, 0x48, 0x85, 0x21, 0x22, 0x49, 0x24, 0x4c, 0x12, 0x04, 0x91, 0x04, 0x63, 0x10, 0x88, 0x44, 0x90, 0x12, 0x24, 0x91, 0x49, 0x92, 0x49, 0x25, 0x22, 0x64, 0x92, 0x92, 0x20, 0x44, 0x84, 0x49, 0x22, 0x04, 0x11, 0x24, 0x42, 0x22, 0x49, 0x11, 0x11, 0x24, 0x88, 0x90, 0x0c, 0x26, 0x0c, 0x22, 0x22, 0x24, 0x08, 0xc2, 0x09, 0x08, 0x42, 0x22, 0x48, 0x46, 0x61, 0x01, 0x44, 0x04, 0x60, 0x88, 0x88, 0x18, 0x92, 0x44, 0x18, 0x31, 0x04, 0x20, 0x22, + 0x21, 0x31, 0x04, 0x44, 0x61, 0x08, 0x12, 0x04, 0x49, 0x20, 0x84, 0x91, 0x08, 0xc1, 0x04, 0x24, 0x22, 0x24, 0x22, 0x42, 0x49, 0x24, 0x48, 0x49, 0x24, 0x49, 0x24, 0x92, 0x10, 0x92, 0x49, 0x11, 0x24, 0x92, 0x48, 0x91, 0x89, 0x09, 0x30, 0x88, 0x88, 0xc4, 0x89, 0x22, 0x21, 0x0c, 0x81, 0x00, 0x80, 0x82, 0x11, 0x89, 0x62, 0x12, 0x48, 0x23, 0x11, 0x24, 0x09, 0x10, 0x0c, 0x64, 0x45, 0x22, 0x1a, 0x42, 0x49, 0x01, 0x08, 0x44, 0x41, 0x02, 0x51, 0x12, 0x88, + 0x18, 0x82, 0x61, 0x11, 0x08, 0x92, 0xc4, 0xa4, 0x92, 0x06, 0x24, 0x20, 0x4a, 0x18, 0x90, 0x83, 0x22, 0x89, 0x22, 0x48, 0x92, 0x49, 0x26, 0x24, 0x93, 0x12, 0x49, 0x12, 0x66, 0x49, 0x12, 0x49, 0x22, 0x20, 0x84, 0x92, 0x24, 0x42, 0x04, 0x92, 0x26, 0x12, 0x22, 0x10, 0x94, 0x61, 0x31, 0x30, 0x92, 0x48, 0xc4, 0x10, 0x04, 0x90, 0x92, 0x24, 0x24, 0x44, 0xa1, 0x11, 0x80, 0x84, 0x91, 0x18, 0x82, 0x52, 0x22, 0x49, 0x21, 0x11, 0x04, 0xc8, 0x02, 0x44, 0x09, +}; + +static const uint8_t pandared[] = { +0x87, 0x01, 0xAF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xb0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc6, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x71, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc6, 0xa0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x33, 0xa0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x25, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x9d, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x46, 0xa0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x8c, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x31, 0x90, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x08, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x01, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x20, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x10, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x68, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x88, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x44, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x49, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x12, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static const uint8_t newton[] = { + +// uint16_t x, y + 0x20,0x01, 0x5E,0x01, + + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x78, 0x6f, 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, 0x0c, 0x1f, 0x07, 0x3f, 0xff, 0xff, 0xff, 0xf3, 0xf3, 0x80, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc3, 0x03, 0xf1, 0xcf, 0xff, 0xff, 0xff, 0xcc, 0x0e, 0x00, 0x3f, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xfe, 0x1e, 0x77, 0xff, 0xff, 0xff, 0x20, 0x18, 0x00, 0x03, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0x81, 0xc3, 0x9b, 0xff, 0xff, 0xfc, 0xd8, 0xe1, 0xe0, 0x70, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0xfc, 0x0c, 0x38, 0x4c, 0xff, 0xff, 0xf9, 0xc0, 0x0f, 0x00, 0x07, 0x33, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x43, 0x03, 0x8e, 0x22, 0x7f, 0xff, 0xf5, 0x18, 0xa0, 0x07, 0x80, 0xcf, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x40, 0x63, 0x11, 0x3f, 0xff, 0xba, 0x61, 0x80, 0x00, 0x40, 0x33, 0x03, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xfc, 0x03, 0x1f, 0x98, 0xc8, 0x9f, 0xff, 0x74, 0x8f, 0x00, 0x00, 0x00, 0xcd, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xe3, 0x80, 0x20, 0x8f, 0xe4, 0x66, 0x4f, 0xfe, 0x6b, 0x38, 0x00, 0x00, 0x00, 0x76, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xc6, 0x1f, 0x80, 0x00, 0x1b, 0x33, 0x57, 0xfe, 0xd7, 0x60, 0x00, 0x00, 0x00, 0x19, 0xa0, 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95, 0xc8, 0x40, 0x01, 0x10, 0x67, 0x8d, 0xfb, 0xfe, 0xfe, 0xc8, 0x00, 0x00, 0x00, 0x06, 0xd0, 0x0e, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x39, 0x91, 0x83, 0x00, 0x08, 0x19, 0xe6, 0x7d, 0xff, 0xbe, 0x90, 0x00, 0x1e, 0x00, 0x1b, 0x60, 0x01, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xc1, 0xb2, 0x00, 0x00, 0x00, 0x86, 0xb9, 0x3e, 0xfd, 0xf5, 0x22, 0x00, 0x30, 0x00, 0x0f, 0xf8, 0x00, 0x0b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xdb, 0x24, 0x78, 0x00, 0x00, 0x63, 0x44, 0x9f, 0xff, 0xab, 0x46, 0x00, 0x40, 0x00, 0x01, 0xf8, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xe3, 0x69, 0xc0, 0x00, 0x00, 0x11, 0xa2, 0x4f, 0x77, 0xaa, 0x88, 0x00, 0x80, 0x00, 0x04, 0xfc, 0x00, 0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x83, 0x6b, 0x00, 0x00, 0x00, 0x08, 0x09, 0x2f, 0xf9, 0x1e, 0x98, 0x21, 0x07, 0x00, 0x03, 0x6c, 0x00, 0x21, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x01, 0x46, 0x00, 0x00, 0x00, 0x04, 0x10, 0xb7, 0xa9, 0x55, 0xb0, 0x42, 0x1c, 0x00, 0x00, 0xf5, 0x00, 0x0c, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xe6, 0x41, 0x44, 0x00, 0x00, 0x00, 0x02, 0x18, 0x57, 0xe1, 0x55, 0x20, 0x42, 0x30, 0x00, 0x04, 0x6e, 0x80, 0x06, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x80, 0x40, 0x00, 0x00, 0x00, 0x01, 0x04, 0x8b, 0xd5, 0xbb, 0x60, 0x84, 0x60, 0x00, 0x03, 0x37, 0x80, 0x01, 0x37, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf8, 0x00, 0x1f, 0xcb, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0xeb, 0xf5, 0xbb, 0x41, 0x24, 0x41, 0xc0, 0x00, 0xdb, 0x80, 0xf2, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x87, 0xfe, 0x0f, 0xda, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x55, 0xec, 0xfa, 0xd1, 0x24, 0xc3, 0x00, 0x0e, 0x6f, 0x81, 0x46, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0x78, 0x01, 0xe2, 0xd4, 0x80, 0x20, 0x00, 0x00, 0x00, 0x01, 0x60, 0x75, 0xee, 0xfa, 0xa2, 0x4c, 0x84, 0x00, 0x03, 0x97, 0xc4, 0xf9, 0x96, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfd, 0xc3, 0xe3, 0xf8, 0xdd, 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0x80, 0x7f, 0xe6, 0xff, 0xaa, 0x01, 0x08, 0x10, 0x00, 0x43, 0xc2, 0x0e, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x30, 0xfc, 0x84, 0xda, 0x00, 0x03, 0xf8, 0x00, 0x10, 0x01, 0x80, 0xbf, 0xf7, 0xff, 0xaa, 0x80, 0x08, 0x80, 0x0c, 0x23, 0xc1, 0x07, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfc, 0xc0, 0x01, 0xe0, 0xda, 0x00, 0x38, 0x07, 0x00, 0x0f, 0x08, 0xc0, 0xbf, 0xf3, 0xff, 0x56, 0x24, 0x19, 0x80, 0x00, 0x0f, 0xc0, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfb, 0x00, 0x0f, 0x78, 0xde, 0x00, 0x60, 0x01, 0x83, 0xe3, 0x04, 0xc8, 0x7f, 0xf0, 0xff, 0x54, 0x04, 0x32, 0x7e, 0x00, 0x27, 0xc0, 0x00, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0x3f, 0x18, 0x60, 0xdc, 0x01, 0x80, 0x00, 0x40, 0x39, 0x92, 0xc5, 0x4f, 0xf9, 0x6f, 0x55, 0x1c, 0x70, 0x00, 0x00, 0x01, 0x80, 0x78, 0x7f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7c, 0x60, 0x18, 0x0c, 0xd4, 0x03, 0x00, 0x00, 0x30, 0x8e, 0xda, 0x55, 0x4f, 0x3f, 0xff, 0x55, 0x5e, 0xe4, 0x00, 0x00, 0x0a, 0x81, 0x04, 0x3f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xf9, 0x80, 0x00, 0x00, 0xc4, 0x06, 0x00, 0x70, 0x5c, 0x27, 0xcb, 0x57, 0x4f, 0x70, 0x1f, 0x57, 0x4b, 0x88, 0x00, 0x00, 0x07, 0x40, 0x01, 0x3f, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xf3, 0x1e, 0x06, 0x08, 0x60, 0x04, 0x00, 0x00, 0xe6, 0x13, 0xeb, 0x6f, 0xc7, 0xc7, 0x0d, 0xd7, 0x6b, 0x80, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x9e, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf9, 0x74, 0x70, 0x00, 0x07, 0x10, 0x0c, 0x00, 0x03, 0xd8, 0x2b, 0xe9, 0x6f, 0xd5, 0x98, 0x0f, 0xd7, 0x2b, 0x90, 0x40, 0x00, 0x00, 0xf0, 0x00, 0x5f, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfa, 0xec, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x21, 0xec, 0x3f, 0xd9, 0x7f, 0xd7, 0x20, 0x7f, 0xd7, 0x3b, 0x01, 0x80, 0x00, 0x19, 0x70, 0x00, 0x0f, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf1, 0xb9, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0xbe, 0x17, 0x5b, 0x57, 0xd6, 0xd8, 0x01, 0xff, 0x23, 0xe3, 0x18, 0x00, 0x0c, 0xa8, 0x00, 0x0f, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf5, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x5e, 0x0b, 0x5b, 0xd7, 0x97, 0xb3, 0xf0, 0xeb, 0xa2, 0xe2, 0x33, 0x81, 0xc6, 0x58, 0x00, 0x07, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe5, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x21, 0xbb, 0x0b, 0x5b, 0xf7, 0xaf, 0x6e, 0x00, 0xfb, 0x92, 0xc4, 0x60, 0x00, 0x32, 0x78, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe2, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xdb, 0x0d, 0x1b, 0xee, 0xaf, 0xd8, 0xe0, 0x1f, 0xd2, 0xc4, 0xc8, 0x00, 0x02, 0x28, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xea, 0xfc, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x09, 0x59, 0x0d, 0x1b, 0xfd, 0xef, 0x93, 0x80, 0x0f, 0xd3, 0x50, 0xd0, 0x00, 0x01, 0x6c, 0x01, 0x83, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xea, 0xfc, 0x00, 0x00, 0x60, 0x04, 0x00, 0x00, 0xa5, 0x79, 0x0f, 0x77, 0xfd, 0x5f, 0xa7, 0x00, 0x07, 0xf1, 0x50, 0x80, 0x00, 0x04, 0xec, 0x00, 0x81, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xee, 0xbc, 0x00, 0x00, 0x42, 0x08, 0x00, 0x04, 0x94, 0x3f, 0x0f, 0x7f, 0xeb, 0xff, 0x0c, 0x07, 0x01, 0xf9, 0xf8, 0x01, 0xc0, 0x02, 0x3c, 0x00, 0x47, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xec, 0xbc, 0x01, 0x00, 0x86, 0x30, 0x00, 0x02, 0x5a, 0xbf, 0x2e, 0xff, 0xf7, 0xff, 0x5d, 0x18, 0x00, 0x18, 0xa2, 0x03, 0x00, 0x02, 0x30, 0x00, 0x42, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xec, 0xb8, 0x12, 0x60, 0x84, 0x20, 0x00, 0x03, 0x6a, 0x3f, 0x76, 0xff, 0xcf, 0xff, 0xdf, 0x60, 0x00, 0x0c, 0xc0, 0x84, 0x00, 0x03, 0x30, 0x02, 0x62, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xee, 0xa8, 0x26, 0x41, 0x04, 0x64, 0x00, 0x31, 0x6e, 0xff, 0x8d, 0xef, 0x9f, 0xdf, 0xda, 0x73, 0x0e, 0x07, 0xe2, 0x00, 0x30, 0x03, 0xb8, 0x02, 0x60, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe6, 0xa8, 0x64, 0x81, 0x0d, 0x40, 0x00, 0x11, 0x2e, 0xfb, 0x33, 0xdf, 0xff, 0xff, 0xde, 0xb4, 0x78, 0x00, 0xfb, 0x00, 0xc0, 0x01, 0xf8, 0x01, 0x20, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe2, 0xa8, 0x64, 0x81, 0x29, 0x00, 0x00, 0xd9, 0xae, 0xff, 0xc7, 0xff, 0xff, 0x3f, 0xee, 0x61, 0x80, 0x00, 0xbf, 0x11, 0x80, 0x81, 0x70, 0x01, 0x28, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe2, 0xa8, 0x4d, 0x81, 0x29, 0x00, 0xc3, 0xc9, 0xb7, 0xff, 0xdf, 0xff, 0xf3, 0xff, 0xee, 0x5e, 0x01, 0xc0, 0xdf, 0x30, 0x00, 0x32, 0xf0, 0x01, 0x23, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0x8c, 0x49, 0x01, 0x29, 0x03, 0x02, 0x85, 0x37, 0xfe, 0x7f, 0xff, 0xff, 0x8f, 0xf7, 0xfc, 0x60, 0x70, 0x6e, 0x10, 0x60, 0x04, 0xf0, 0x13, 0x62, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfc, 0x4d, 0x00, 0x20, 0x06, 0x02, 0xe5, 0xff, 0xfc, 0x39, 0xe0, 0x00, 0xf7, 0xff, 0xb3, 0x83, 0x83, 0x27, 0x3c, 0x00, 0xf1, 0x50, 0x13, 0x57, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfc, 0x4d, 0x00, 0x1c, 0x08, 0xfc, 0xf3, 0xff, 0xfe, 0x47, 0x0f, 0xff, 0x1f, 0xff, 0x83, 0xfe, 0x00, 0xd6, 0xa6, 0x00, 0x06, 0xb0, 0x36, 0x57, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x5e, 0x6d, 0x80, 0x0c, 0x19, 0xc6, 0xdb, 0x7f, 0xfd, 0x98, 0xc0, 0x01, 0xff, 0xff, 0x07, 0x80, 0x00, 0x3b, 0x36, 0x00, 0x08, 0x30, 0x24, 0xe4, 0x1e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe1, 0x7e, 0x6e, 0x80, 0x04, 0x13, 0x02, 0xcf, 0x7f, 0x7e, 0x67, 0x00, 0x80, 0x07, 0xff, 0xc0, 0x01, 0xfc, 0x1e, 0x14, 0x00, 0x82, 0x60, 0x2c, 0xa0, 0x38, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc6, 0xf6, 0x56, 0x80, 0x00, 0x16, 0x40, 0x47, 0xff, 0xfd, 0x9c, 0xf0, 0xff, 0xc1, 0xff, 0xfc, 0x1e, 0x01, 0x8f, 0x10, 0x00, 0x04, 0xc0, 0x8b, 0x61, 0xb0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x6f, 0x52, 0xc1, 0x01, 0x04, 0x80, 0x4f, 0xff, 0xfe, 0x67, 0x0f, 0xdf, 0xfc, 0xff, 0x80, 0x00, 0x00, 0x63, 0x01, 0xf8, 0x00, 0x01, 0x93, 0x74, 0xf5, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3f, 0xeb, 0x82, 0x42, 0x44, 0x00, 0x00, 0x4d, 0xff, 0xfc, 0x9f, 0x80, 0x00, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x19, 0x6f, 0x36, 0x0c, 0x03, 0x47, 0xf4, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xeb, 0xc0, 0x24, 0xc0, 0x00, 0x00, 0x4d, 0xfb, 0xfb, 0x3c, 0x0f, 0xfe, 0x03, 0xff, 0xff, 0xfc, 0x9f, 0x07, 0xe0, 0x90, 0x31, 0x0c, 0xf9, 0xb0, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfa, 0xc0, 0x19, 0x80, 0x00, 0x00, 0xdb, 0xeb, 0xfe, 0xf1, 0xe7, 0xe7, 0xe1, 0x8f, 0xff, 0xfc, 0xf0, 0xe1, 0xfe, 0xc0, 0x07, 0x7f, 0x00, 0x00, 0x36, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1f, 0xea, 0xc4, 0x69, 0x60, 0x01, 0x9f, 0xfb, 0xeb, 0xfd, 0xc7, 0x98, 0x00, 0x04, 0xe3, 0xf0, 0x7e, 0x00, 0x00, 0x1e, 0x01, 0xff, 0xfe, 0x18, 0x8c, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xf2, 0xdf, 0xf2, 0x40, 0x00, 0x8f, 0xe7, 0xdf, 0xfb, 0x9c, 0xc3, 0xff, 0xf0, 0x7c, 0xff, 0xe0, 0xcf, 0xff, 0x37, 0xde, 0x0e, 0x1f, 0xc0, 0x8e, 0x34, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9f, 0xfb, 0x77, 0xfa, 0x40, 0x00, 0xc4, 0x1f, 0xdf, 0xf7, 0x77, 0x1c, 0x3c, 0x3e, 0x3f, 0xff, 0xbd, 0xf0, 0x03, 0x8f, 0xf8, 0x00, 0x03, 0x01, 0x04, 0xb6, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7f, 0xfd, 0x75, 0xfe, 0x00, 0x04, 0x39, 0xf6, 0xbf, 0xfe, 0xc8, 0x67, 0xff, 0xcf, 0x8f, 0xff, 0xe7, 0x83, 0xe0, 0xef, 0xe3, 0xff, 0xf1, 0x86, 0x04, 0xfe, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0xe6, 0x35, 0xfe, 0x40, 0x02, 0x09, 0xcd, 0xbf, 0xfd, 0xb1, 0x9e, 0x00, 0x07, 0xf1, 0xff, 0xfe, 0x00, 0x1c, 0x7f, 0xce, 0x1f, 0x38, 0x78, 0x9c, 0x7c, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1f, 0xfb, 0x35, 0x7a, 0x41, 0x00, 0x6c, 0x03, 0x5f, 0xfb, 0x66, 0x70, 0x00, 0x01, 0xfe, 0x03, 0xff, 0x00, 0x03, 0xff, 0xb0, 0x07, 0xbc, 0x01, 0xbb, 0x7d, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x7f, 0x9d, 0x7a, 0x41, 0x20, 0x38, 0x3c, 0xbf, 0xf6, 0x8d, 0x81, 0xef, 0xf8, 0x7f, 0xf1, 0xfc, 0x27, 0xe1, 0xff, 0x60, 0xf2, 0xd6, 0x06, 0x12, 0x39, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x0f, 0x5e, 0xab, 0x49, 0x98, 0x4b, 0xf3, 0x3f, 0xfd, 0x3b, 0x0f, 0x20, 0x0e, 0x1f, 0xff, 0xff, 0x80, 0x38, 0xfa, 0x61, 0xf9, 0x5a, 0x10, 0x3c, 0x3a, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x1f, 0x03, 0xad, 0x6c, 0xc1, 0xbb, 0x20, 0x7f, 0xfb, 0x64, 0x3c, 0x00, 0x07, 0xcf, 0xc1, 0xfe, 0x0f, 0xcf, 0xfe, 0xc1, 0x18, 0x4a, 0x03, 0x79, 0x54, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0xf0, 0x01, 0xcd, 0xa6, 0x63, 0x03, 0x81, 0xff, 0xfe, 0xc8, 0xf0, 0x3f, 0xc3, 0xef, 0xff, 0xfc, 0x00, 0x3f, 0xff, 0xc3, 0xb4, 0x4b, 0x9c, 0xd3, 0x5c, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3f, 0xb0, 0x02, 0x76, 0xd1, 0x3c, 0x0b, 0x0f, 0xff, 0xff, 0x99, 0xc3, 0xe0, 0x1f, 0xff, 0xff, 0xc3, 0xc3, 0x8e, 0x7f, 0x83, 0xe6, 0x4b, 0x83, 0x86, 0x39, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x10, 0x0b, 0x61, 0xf5, 0x19, 0x83, 0xdf, 0xff, 0xf3, 0x1c, 0x00, 0xff, 0xfe, 0xff, 0xfc, 0x00, 0x27, 0xbf, 0x83, 0x9c, 0xdb, 0x9c, 0xfc, 0x72, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc8, 0x3c, 0xe3, 0x8d, 0xb8, 0x0e, 0x63, 0xdf, 0xdf, 0xff, 0xe6, 0x70, 0x60, 0x00, 0xff, 0xc0, 0x07, 0xff, 0x19, 0xff, 0x83, 0x91, 0x91, 0x9f, 0x30, 0xe6, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x33, 0xfb, 0xe0, 0x26, 0xe4, 0x0c, 0x0f, 0xf1, 0xff, 0xff, 0xc8, 0xcf, 0xff, 0xfc, 0x07, 0xff, 0xfc, 0x00, 0xde, 0x7f, 0xd3, 0xcf, 0xe1, 0x9f, 0xe4, 0x81, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x4e, 0x06, 0xc0, 0x03, 0x90, 0x00, 0x14, 0x7f, 0xff, 0xff, 0x93, 0xbf, 0xf3, 0xff, 0xe1, 0xff, 0xc0, 0x00, 0x3f, 0x1f, 0xd1, 0xa3, 0xc3, 0x87, 0x88, 0x02, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x98, 0x05, 0x80, 0x00, 0xe0, 0x00, 0x8f, 0xe7, 0xff, 0xff, 0xa7, 0xfc, 0xff, 0xff, 0xff, 0x80, 0x0f, 0x87, 0x0c, 0xcf, 0xd0, 0xfe, 0x1e, 0xde, 0x30, 0x04, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x23, 0xc6, 0x00, 0x00, 0x38, 0x00, 0x0c, 0x3c, 0xff, 0xff, 0xef, 0xe7, 0xff, 0xff, 0xf9, 0xfe, 0x3e, 0x01, 0xff, 0xff, 0xf8, 0x7f, 0xf8, 0xdf, 0x80, 0x19, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x64, 0x3c, 0x00, 0x00, 0x00, 0xc7, 0x0f, 0x8e, 0x7f, 0xff, 0xdf, 0x9f, 0xff, 0xcf, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xfe, 0x0f, 0xe8, 0xdf, 0x00, 0x03, 0x7f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc8, 0xf0, 0x00, 0x00, 0x01, 0xc0, 0x7f, 0xc7, 0xff, 0xff, 0xfe, 0x7b, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xc0, 0x48, 0xf4, 0x70, 0x04, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x93, 0xc0, 0x00, 0x00, 0x03, 0x00, 0xe0, 0x07, 0xff, 0xff, 0xfd, 0xc7, 0x8f, 0xff, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0x7f, 0x7c, 0xd8, 0xf4, 0x78, 0x03, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x97, 0x98, 0x00, 0x00, 0x0c, 0x01, 0x8f, 0x83, 0xdf, 0xff, 0xbc, 0x39, 0xff, 0x00, 0x0e, 0x0f, 0xf8, 0x00, 0x1f, 0xff, 0x7f, 0x63, 0x31, 0x74, 0x27, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa7, 0x40, 0x00, 0x00, 0x18, 0x25, 0x38, 0x01, 0xef, 0xff, 0xf8, 0x0f, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x01, 0x8a, 0x7f, 0xff, 0xf8, 0xe7, 0xc2, 0x13, 0xf3, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x2e, 0x80, 0x00, 0x00, 0x30, 0x8d, 0xc0, 0x00, 0x77, 0xfd, 0xf8, 0x7f, 0x00, 0x3f, 0xc0, 0x00, 0x09, 0x82, 0x00, 0x1f, 0xff, 0xff, 0x0c, 0xd2, 0x13, 0xfb, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0c, 0x80, 0x00, 0x00, 0x20, 0x03, 0x0c, 0x01, 0x2f, 0xfb, 0xd1, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x03, 0xdf, 0xfc, 0x18, 0xde, 0x4b, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x5d, 0x20, 0x00, 0x10, 0x64, 0x26, 0x7e, 0x00, 0xbf, 0x7f, 0xa7, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0xf7, 0x83, 0xb6, 0x1b, 0x50, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x5d, 0x62, 0x00, 0x10, 0x4c, 0xcd, 0x80, 0x00, 0x57, 0x7f, 0x43, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xfe, 0x34, 0x9b, 0xf0, 0x19, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x5b, 0x52, 0x01, 0x10, 0x49, 0x4a, 0x00, 0x03, 0x1d, 0xff, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1f, 0xcf, 0xf8, 0x5c, 0x1b, 0xfe, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7b, 0x54, 0x41, 0x10, 0xd3, 0x9c, 0xc0, 0x1f, 0xcd, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0xf2, 0x39, 0x3e, 0x11, 0xae, 0x8e, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x73, 0xd4, 0x41, 0x10, 0xd6, 0x09, 0x00, 0x7f, 0xed, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x27, 0xfe, 0x00, 0x66, 0x31, 0xaf, 0x1b, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x73, 0xc4, 0x01, 0x10, 0xa4, 0x88, 0x00, 0xc0, 0xf1, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0xff, 0xff, 0x86, 0x05, 0xaf, 0x8f, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x33, 0xc0, 0x00, 0x98, 0xad, 0x51, 0xc0, 0x00, 0x73, 0xca, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xdf, 0xfc, 0x3c, 0x09, 0xee, 0xcf, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x73, 0xd0, 0x08, 0x88, 0xa8, 0x96, 0x00, 0x00, 0x3a, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3f, 0xff, 0xf8, 0x23, 0x7f, 0xe7, 0xfe, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf3, 0xd4, 0x04, 0x4c, 0xd9, 0x3c, 0x00, 0xff, 0xbd, 0xe4, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x13, 0xff, 0x78, 0x01, 0x47, 0x79, 0xfb, 0x56, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0x54, 0x06, 0x44, 0xd9, 0x78, 0x00, 0x01, 0xb9, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xe4, 0x24, 0x32, 0xef, 0x7f, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xf4, 0x02, 0x22, 0x58, 0xb0, 0x00, 0xfc, 0x63, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0xfa, 0x80, 0x04, 0xcf, 0x7f, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf7, 0xae, 0x01, 0x88, 0x19, 0xe7, 0x07, 0x83, 0x47, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0xbf, 0xc0, 0x19, 0xdf, 0x7f, 0xff, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf9, 0xce, 0x00, 0xc0, 0x6f, 0xe4, 0x0e, 0x19, 0xaf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x62, 0x7f, 0xe7, 0xe1, 0x9f, 0x5f, 0xff, 0xfb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xce, 0x08, 0x00, 0x6e, 0x68, 0x0c, 0x0c, 0xb3, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x9f, 0xff, 0xe0, 0x7a, 0x7f, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0x63, 0x40, 0x01, 0x2e, 0xb8, 0x10, 0x00, 0x5f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe4, 0xe0, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0x18, 0x00, 0xfc, 0x3c, 0x50, 0x20, 0x02, 0x6d, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2f, 0xe7, 0xf0, 0x24, 0xbf, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8f, 0x84, 0x3e, 0x00, 0x1d, 0xb4, 0x01, 0x03, 0x2c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x9b, 0xff, 0xd8, 0x4d, 0xff, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x06, 0x01, 0x84, 0xe1, 0x8d, 0xa8, 0x06, 0x01, 0x2e, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xcf, 0xf8, 0x09, 0x7f, 0xfe, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x70, 0xff, 0xd8, 0x06, 0x05, 0x08, 0x18, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x29, 0xf0, 0x78, 0x12, 0x77, 0xbf, 0xf5, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x00, 0x74, 0x88, 0x05, 0x12, 0x00, 0x3c, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x11, 0xff, 0x9c, 0x20, 0x3f, 0xbf, 0xf3, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x00, 0x28, 0x90, 0xc4, 0x50, 0x00, 0x06, 0x27, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x22, 0xff, 0xff, 0x03, 0x7f, 0xff, 0xf3, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0x92, 0x01, 0x04, 0x50, 0x01, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x84, 0xff, 0xff, 0x1e, 0xff, 0xfb, 0xe5, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x04, 0x03, 0x14, 0x32, 0x00, 0x42, 0x06, 0x0f, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc9, 0xbf, 0xfc, 0x83, 0xff, 0xe7, 0xcb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x18, 0x65, 0x14, 0x66, 0x02, 0x4a, 0x0c, 0x7f, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x22, 0x7f, 0xfc, 0x7e, 0xcf, 0xef, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x30, 0xc3, 0x24, 0x44, 0x09, 0x24, 0x1c, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x14, 0xff, 0xff, 0x01, 0xbf, 0xff, 0xce, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x69, 0x02, 0x24, 0x44, 0x0d, 0xb3, 0x18, 0x03, 0x1e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x28, 0x49, 0xbf, 0xfe, 0xff, 0x3b, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd2, 0x50, 0x20, 0x44, 0x46, 0xcc, 0x10, 0x00, 0xce, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x31, 0x7f, 0xff, 0xf8, 0x3f, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb6, 0x90, 0x20, 0x44, 0x43, 0x60, 0x30, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x14, 0xff, 0xff, 0x01, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbc, 0xb4, 0x20, 0x44, 0x40, 0xbf, 0xe3, 0x87, 0xcd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc9, 0xff, 0xfe, 0x02, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x2d, 0x24, 0x00, 0x00, 0x60, 0x03, 0x1c, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x33, 0x7f, 0xfd, 0x04, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x2d, 0x24, 0x20, 0x02, 0x30, 0x07, 0xa0, 0x00, 0x1e, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0x16, 0xff, 0xff, 0xf9, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x2d, 0x04, 0x20, 0x21, 0x18, 0x0b, 0x42, 0x0f, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xcd, 0x9f, 0xff, 0xc2, 0x67, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x2d, 0x04, 0x10, 0x11, 0x8e, 0x73, 0x9c, 0x18, 0xe6, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x4b, 0x7f, 0xff, 0xcc, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xad, 0x04, 0x00, 0x18, 0xc0, 0x0b, 0x30, 0x1f, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0x36, 0xff, 0xff, 0xf1, 0xe5, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb5, 0x84, 0x00, 0x0c, 0x70, 0x13, 0x67, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x09, 0xff, 0xff, 0xc2, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x94, 0x80, 0x00, 0x02, 0x1f, 0x00, 0x98, 0x00, 0xcf, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc9, 0xff, 0xff, 0xff, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd6, 0xa2, 0x00, 0x01, 0x80, 0x00, 0xb0, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x33, 0xff, 0xff, 0xf6, 0x37, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd2, 0xc0, 0x00, 0x00, 0x30, 0x43, 0x4c, 0x00, 0xc6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x03, 0xff, 0xff, 0xf8, 0xcf, 0xff, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xab, 0xc0, 0x00, 0x00, 0x0f, 0x82, 0x51, 0x80, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xff, 0xff, 0xff, 0x1f, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x25, 0xe0, 0x00, 0x00, 0x00, 0x06, 0xa7, 0x00, 0x0f, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x33, 0xff, 0xff, 0xdc, 0x7f, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd4, 0x70, 0x00, 0x00, 0x00, 0x0f, 0xef, 0x00, 0x7b, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x00, 0x12, 0x7f, 0xff, 0xdf, 0xe7, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3a, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0xde, 0x00, 0x7f, 0xcc, 0x00, 0x00, 0x00, 0x71, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6c, 0xcd, 0xff, 0xff, 0xda, 0xb3, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd9, 0xfe, 0x00, 0x00, 0x00, 0x1b, 0xfc, 0x78, 0xc7, 0x40, 0x00, 0x00, 0x0c, 0x1c, 0x7c, 0x00, 0x81, 0x40, 0x20, 0x04, 0x03, 0xdf, 0xf2, 0xff, 0xff, 0xf9, 0x55, 0xfb, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3c, 0x7f, 0x00, 0x00, 0x7f, 0x3f, 0xe9, 0xc0, 0x1b, 0x10, 0x00, 0x00, 0x10, 0xff, 0xc7, 0x08, 0x0c, 0x40, 0x08, 0x41, 0x4b, 0xff, 0x35, 0xff, 0xff, 0xb9, 0xaa, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe3, 0x05, 0x80, 0x00, 0x18, 0x5b, 0x5b, 0x1f, 0xef, 0x80, 0x00, 0x0f, 0xf8, 0x1c, 0xfb, 0xf8, 0xc7, 0x00, 0x80, 0x14, 0x4e, 0x7f, 0xfd, 0xfe, 0xff, 0xfc, 0xa6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xca, 0x60, 0x00, 0x00, 0xbb, 0x5a, 0x6f, 0xf7, 0x80, 0x00, 0x1f, 0x01, 0xfb, 0xf9, 0xf0, 0x18, 0x02, 0x23, 0x55, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xd7, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8c, 0x3d, 0xee, 0x01, 0x02, 0x7b, 0x5c, 0xbf, 0xff, 0xc0, 0x00, 0x78, 0x3f, 0x3f, 0xff, 0x7f, 0x20, 0x20, 0x87, 0xc5, 0xff, 0xf7, 0xff, 0xff, 0xff, 0x3c, 0x57, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x64, 0x0e, 0x08, 0x00, 0xf8, 0xdb, 0x59, 0xf1, 0xef, 0xd0, 0x00, 0xf0, 0xf8, 0xff, 0xff, 0xff, 0xe7, 0x48, 0x07, 0xd4, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xc8, 0x57, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x32, 0x9f, 0x00, 0x00, 0x01, 0x3b, 0x4b, 0xff, 0xf7, 0xd0, 0x01, 0xf7, 0xcf, 0xff, 0xff, 0xff, 0xfe, 0xc0, 0x13, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x98, 0x87, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd8, 0x5b, 0xbc, 0x00, 0x06, 0x7f, 0x6f, 0xcf, 0xfb, 0xf0, 0x03, 0xcf, 0x3f, 0xff, 0xff, 0xff, 0xfd, 0xb0, 0x87, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x30, 0x27, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc8, 0x48, 0x9f, 0x00, 0x7c, 0xff, 0xb7, 0x3f, 0xfb, 0xe0, 0x05, 0x9f, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xe0, 0x23, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xf0, 0x0e, 0xfd, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x28, 0x48, 0xf0, 0x00, 0x01, 0xff, 0x9f, 0xff, 0xfb, 0xe0, 0x0d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0c, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x09, 0x48, 0x07, 0x30, 0x07, 0xdd, 0xdf, 0xe6, 0x7b, 0xc0, 0x3f, 0xe9, 0xff, 0x83, 0xff, 0xff, 0xfd, 0x80, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x96, 0x44, 0x70, 0xf8, 0x1f, 0xf9, 0xff, 0xff, 0x3f, 0xc0, 0x7f, 0x37, 0xc0, 0x3f, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xdd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x86, 0x44, 0x1f, 0x30, 0x0f, 0xe3, 0xff, 0xff, 0xbf, 0xc0, 0x5e, 0x7f, 0x0f, 0x7f, 0xfe, 0xff, 0xff, 0x90, 0x03, 0xff, 0xff, 0xdb, 0x43, 0xff, 0xff, 0xff, 0xbb, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x0a, 0x01, 0xd8, 0x00, 0x07, 0xff, 0xff, 0xfb, 0x80, 0xfa, 0xf6, 0x01, 0xff, 0xff, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfb, 0x7d, 0xff, 0xff, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x0b, 0x80, 0x6c, 0x00, 0x3e, 0xfe, 0xbf, 0xf6, 0x81, 0xd5, 0xec, 0x1f, 0xe3, 0xff, 0xff, 0xff, 0x40, 0x12, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xe9, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x09, 0xe1, 0x12, 0x01, 0xe5, 0xfa, 0xff, 0xf9, 0x81, 0x83, 0xd8, 0xfe, 0x00, 0xff, 0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xf6, 0x4b, 0x87, 0x19, 0xde, 0xff, 0xfb, 0x02, 0x03, 0x83, 0xe0, 0x00, 0x9f, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x07, 0xfb, 0xaf, 0xe0, 0x71, 0xde, 0xfe, 0xfe, 0x00, 0x02, 0x07, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0x81, 0x7f, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x0c, 0x88, 0x74, 0x7b, 0xe1, 0x9f, 0xff, 0xfe, 0x04, 0x00, 0x06, 0x80, 0x1f, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xfb, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1c, 0x00, 0x78, 0x1e, 0x07, 0x83, 0xbf, 0xbf, 0xf8, 0x04, 0x00, 0x07, 0x00, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0xff, 0xef, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0x07, 0xcd, 0x3f, 0x18, 0x1f, 0xff, 0x9b, 0x80, 0x00, 0x20, 0x1e, 0x07, 0xff, 0xff, 0xff, 0xff, 0x00, 0x09, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x1e, 0x01, 0xbf, 0x0f, 0xff, 0xff, 0xbf, 0xc0, 0x00, 0x00, 0x38, 0x1f, 0xff, 0xff, 0xff, 0xf2, 0xa0, 0x01, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0xff, 0x0e, 0x16, 0x1f, 0xbf, 0xfe, 0x00, 0x00, 0x40, 0xd2, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x0e, 0x07, 0xef, 0x0f, 0xfe, 0x6f, 0xff, 0xc0, 0x00, 0x83, 0xcd, 0xff, 0x01, 0xff, 0xff, 0xfc, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0e, 0xf8, 0x0f, 0xff, 0x2f, 0x81, 0xcf, 0xfe, 0x80, 0x01, 0x1f, 0x9b, 0xf8, 0x1f, 0xff, 0xfb, 0xf0, 0x00, 0x02, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xff, 0xfb, 0xff, 0xff, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x10, 0x23, 0x88, 0x07, 0x17, 0xfe, 0x37, 0xbe, 0xe0, 0x00, 0xdf, 0x7f, 0xf0, 0x3f, 0xff, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x26, 0xc0, 0x01, 0xf6, 0x9f, 0x00, 0x47, 0xbf, 0x90, 0x00, 0x09, 0xff, 0xc0, 0x3f, 0xff, 0xfe, 0x90, 0x00, 0x04, 0xff, 0xc1, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xf7, 0xfe, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x58, 0x80, 0x1f, 0xfe, 0xdc, 0x3f, 0x1f, 0x77, 0x20, 0x00, 0x07, 0xff, 0x00, 0x1f, 0xff, 0xff, 0x60, 0x00, 0x02, 0x7f, 0xd1, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xef, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe3, 0x40, 0x3f, 0x07, 0xfe, 0x00, 0x37, 0xf6, 0x50, 0x00, 0x05, 0xe1, 0x80, 0x1f, 0xfe, 0xf9, 0x00, 0x00, 0x01, 0xff, 0xe0, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xef, 0xff, 0x97, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xcf, 0x82, 0x7f, 0xf3, 0xfe, 0xe3, 0xf6, 0xe7, 0x90, 0x00, 0x00, 0x04, 0x00, 0x0f, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x7f, 0xd9, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x97, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x8c, 0xf0, 0x4d, 0xff, 0x1f, 0x67, 0xcf, 0xf0, 0x00, 0x00, 0x01, 0x08, 0x07, 0xf9, 0x1c, 0x00, 0x00, 0x02, 0x7f, 0x9e, 0x1f, 0xbf, 0xef, 0xff, 0xff, 0xfb, 0xff, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa3, 0x10, 0xc7, 0xe4, 0xff, 0x80, 0xcf, 0xde, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0xfe, 0x78, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x1f, 0xff, 0xe7, 0xff, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa6, 0x21, 0x9f, 0xff, 0xff, 0xff, 0xbf, 0xcf, 0x78, 0x00, 0x00, 0x01, 0x00, 0x7c, 0xf0, 0xfc, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x3f, 0xf4, 0xff, 0xff, 0xed, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8c, 0x41, 0x20, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x03, 0x3f, 0x8f, 0xdf, 0xff, 0xf7, 0xff, 0xf9, 0xdd, 0xf7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8c, 0xc3, 0x41, 0xfd, 0xff, 0x03, 0xfe, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x11, 0x80, 0x0f, 0xc8, 0x00, 0x00, 0x00, 0x3f, 0x1d, 0xff, 0xff, 0xeb, 0xff, 0xff, 0xbb, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x90, 0x83, 0x0e, 0xff, 0x7f, 0xff, 0xff, 0xf3, 0xff, 0x80, 0x00, 0x00, 0x02, 0x7f, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x3f, 0xe1, 0x61, 0xff, 0xe9, 0xff, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa9, 0x8f, 0x99, 0xf7, 0xff, 0xff, 0xef, 0x9f, 0xe3, 0x00, 0x00, 0x00, 0x04, 0x67, 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0xd2, 0x4b, 0xbf, 0xd5, 0xff, 0xff, 0xef, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa9, 0x8b, 0x23, 0xfb, 0xff, 0xfe, 0x01, 0x01, 0xff, 0x80, 0x00, 0x30, 0x00, 0x1f, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xd0, 0x9f, 0xcf, 0xce, 0xff, 0xff, 0x9f, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa9, 0x13, 0x27, 0xff, 0xdf, 0xf8, 0xf8, 0x1f, 0xf1, 0x80, 0x00, 0x00, 0x00, 0x06, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xc0, 0xc0, 0x7f, 0xea, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x89, 0x13, 0x47, 0x27, 0xff, 0xf0, 0x00, 0x02, 0xff, 0x40, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xa0, 0x39, 0xc6, 0x80, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc9, 0x17, 0x46, 0xfb, 0xff, 0xf8, 0xe0, 0x00, 0x7e, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x24, 0x4b, 0x55, 0x7f, 0xf8, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc9, 0x17, 0x4f, 0xff, 0xff, 0xf3, 0x80, 0x03, 0xbf, 0x20, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe6, 0x00, 0x2d, 0x03, 0xff, 0xef, 0xbf, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd9, 0x95, 0x4f, 0x8f, 0xff, 0xf6, 0x00, 0x00, 0xcf, 0x40, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe8, 0x12, 0x94, 0x2a, 0xff, 0xfe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x79, 0xd5, 0xce, 0x03, 0xfb, 0xe9, 0x80, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf1, 0x01, 0x52, 0x8c, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xdf, 0xce, 0xf1, 0xfa, 0xf3, 0x00, 0x03, 0x9f, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xd0, 0x01, 0x00, 0x45, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xce, 0x67, 0xfd, 0x7b, 0xe6, 0x60, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfa, 0x50, 0x15, 0x77, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x06, 0xe8, 0x67, 0x3e, 0xbd, 0xec, 0xc0, 0x1c, 0x3f, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x40, 0x00, 0xab, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x03, 0x6d, 0x73, 0x1c, 0xbd, 0xe9, 0x3e, 0x7c, 0xdd, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf4, 0x25, 0x4a, 0xab, 0xff, 0xfa, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xbd, 0x9f, 0x09, 0x7f, 0xda, 0x7c, 0x07, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x03, 0x17, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x4e, 0xcf, 0x9e, 0x7e, 0xd5, 0xe1, 0x80, 0xdf, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfa, 0x52, 0x85, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x03, 0x31, 0xdc, 0xfd, 0xff, 0x86, 0x00, 0x7f, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x40, 0x00, 0x0f, 0xff, 0xfc, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0x8e, 0xf1, 0xfb, 0xbf, 0x80, 0x07, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf4, 0x20, 0x02, 0xaf, 0xff, 0xf9, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xc0, 0x7f, 0xf7, 0xbf, 0x03, 0xee, 0xfb, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xf8, 0xa5, 0x2a, 0x9f, 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x78, 0x7f, 0xef, 0xbe, 0x0f, 0xc7, 0xdb, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe8, 0x00, 0x00, 0x57, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x3c, 0x1f, 0xf7, 0xfe, 0x9f, 0xfe, 0x6e, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe1, 0x42, 0x95, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x0f, 0xff, 0xef, 0x7f, 0x3f, 0x87, 0xb6, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x13, 0xff, 0xdf, 0x7f, 0x6e, 0x7d, 0xf7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x13, 0xfa, 0xb5, 0x0a, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x1c, 0xdf, 0x63, 0x7e, 0xed, 0xfe, 0xf3, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x09, 0xfa, 0x11, 0x08, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x00, 0x07, 0xfc, 0x83, 0xfe, 0xdb, 0xbc, 0x5b, 0x90, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x05, 0xfd, 0x40, 0x05, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x00, 0x30, 0xfc, 0x03, 0xfe, 0xde, 0x7e, 0x5b, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x70, 0x00, 0x00, 0x03, 0xf7, 0x8a, 0x85, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x1f, 0x8c, 0x03, 0xff, 0x9f, 0xff, 0xea, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc0, 0x00, 0x00, 0x09, 0xfa, 0x84, 0x40, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x02, 0x00, 0x3c, 0x03, 0xff, 0x9e, 0xff, 0xe3, 0xd0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0xff, 0x15, 0x6b, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x01, 0x09, 0xfc, 0x07, 0xff, 0x8e, 0xff, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x03, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0x9f, 0xfc, 0x07, 0xff, 0xcf, 0xfe, 0xf7, 0xa0, 0x00, 0x80, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x09, 0xdf, 0xab, 0x35, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x02, 0xc0, 0x78, 0x0f, 0xbf, 0xc6, 0xf8, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x05, 0xfe, 0x20, 0x15, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x03, 0x61, 0xf8, 0x1f, 0x36, 0xfd, 0xff, 0x6d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x1a, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x30, 0x00, 0xff, 0xf0, 0x3f, 0x7b, 0x7f, 0xd1, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x03, 0xfe, 0x00, 0x09, 0xbf, 0x55, 0xaa, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x08, 0x0c, 0x01, 0xe0, 0x7e, 0xeb, 0x7e, 0x04, 0xfe, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x0f, 0xff, 0x00, 0x37, 0xff, 0x40, 0x0a, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x07, 0xff, 0xc1, 0xfd, 0xcd, 0xff, 0xe1, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, 0x9f, 0xff, 0x80, 0x1f, 0xff, 0xea, 0xd5, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x21, 0xff, 0x8f, 0xf9, 0x5d, 0xbc, 0x05, 0x3f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xff, 0xff, 0xd2, 0x6f, 0xff, 0xa9, 0x51, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x38, 0x03, 0x7f, 0xb2, 0xdd, 0xbb, 0xe3, 0xef, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x41, 0xff, 0xff, 0xc1, 0xbf, 0xff, 0xf5, 0x5a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x7f, 0xfe, 0xfc, 0xe7, 0xbf, 0xde, 0x18, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x87, 0xff, 0xe2, 0xff, 0xff, 0xf5, 0xaa, 0xbf, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x33, 0xfc, 0xff, 0xdf, 0x7f, 0xd0, 0x01, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7f, 0xff, 0xe9, 0x7f, 0xff, 0xc2, 0x0a, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x0f, 0xff, 0x7e, 0x34, 0xf4, 0x6c, 0x0c, 0xbf, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xf6, 0xff, 0xff, 0xea, 0xd5, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0xfe, 0x38, 0xf9, 0xec, 0x78, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xe4, 0x54, 0x7f, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0xf9, 0xef, 0xf7, 0xdb, 0x60, 0x00, 0x3f, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x7f, 0xff, 0xff, 0xd5, 0x5d, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x03, 0xff, 0xfd, 0x8e, 0x7f, 0xf6, 0xc7, 0x00, 0x1b, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x88, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x3c, 0xfe, 0x38, 0x7f, 0xed, 0x8c, 0x00, 0x7d, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x23, 0xf3, 0xff, 0x6f, 0xfc, 0xfb, 0x18, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x04, 0xff, 0x98, 0x79, 0xe5, 0x10, 0x00, 0x0f, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xd4, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x03, 0xf8, 0xfb, 0x80, 0xf3, 0x9d, 0x21, 0x80, 0x07, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xbf, 0xff, 0xfd, 0x45, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x82, 0xff, 0x98, 0xe6, 0x79, 0x23, 0x00, 0x03, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xdb, 0xff, 0xe8, 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x20, 0x0c, 0xff, 0xd0, 0x6d, 0x81, 0x26, 0x00, 0x03, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x57, 0xff, 0x10, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x31, 0xef, 0xc5, 0xfb, 0x7f, 0x24, 0x00, 0x93, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x55, 0x7f, 0xf7, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x03, 0xfb, 0xd8, 0x7c, 0xe1, 0x8c, 0x00, 0x7f, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0x05, 0x7e, 0x81, 0x40, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x40, 0x0d, 0x5f, 0xe0, 0x79, 0x7c, 0xc4, 0x0f, 0x9f, 0xed, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x22, 0xf7, 0x98, 0x11, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3c, 0xf3, 0xd5, 0x62, 0x7a, 0xff, 0x40, 0x00, 0x75, 0xec, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xfa, 0xb7, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x86, 0xb5, 0x6c, 0x3d, 0xff, 0xe0, 0x00, 0x13, 0xec, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x07, 0xfa, 0xb3, 0x10, 0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x19, 0x3f, 0x70, 0x3d, 0x80, 0x60, 0x00, 0x0f, 0xec, 0xc0, 0x00, 0x00, 0x00, 0x01, 0x08, 0x01, 0xfe, 0x0f, 0xfe, 0x5b, 0xb0, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x76, 0x7f, 0x60, 0x3f, 0x77, 0x20, 0x00, 0x2f, 0xe8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0x5b, 0xd7, 0xa3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x8c, 0xfe, 0x40, 0x1f, 0xcf, 0x80, 0x7c, 0x07, 0xdd, 0xc0, 0x00, 0x00, 0x00, 0x11, 0x24, 0x3f, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x37, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x39, 0xf6, 0xc0, 0x1f, 0xb8, 0x41, 0xc6, 0x07, 0xdd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x39, 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x11, 0xc6, 0xfe, 0x80, 0x0f, 0x78, 0x43, 0x03, 0x0b, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x19, 0xfd, 0x01, 0x0f, 0xf3, 0x04, 0x01, 0xd9, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xef, 0xf6, 0x22, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x27, 0xf9, 0x07, 0xcf, 0xec, 0x00, 0x7f, 0xff, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xf8, 0x03, 0xff, 0xff, 0xb7, 0x40, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0xfd, 0xfb, 0x1c, 0x6b, 0xd8, 0x21, 0xf1, 0xf1, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x01, 0xff, 0xf3, 0x9f, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x83, 0xf6, 0x31, 0xeb, 0xb0, 0xc3, 0xc0, 0x7f, 0xfa, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1b, 0x01, 0xff, 0xff, 0x57, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x07, 0x84, 0x27, 0x3b, 0xe1, 0xe7, 0x10, 0x37, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0xc1, 0xff, 0xfe, 0xcc, 0x01, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x70, 0x0f, 0x18, 0x04, 0x18, 0xf6, 0x0c, 0x00, 0x13, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x1f, 0xff, 0xfd, 0xec, 0x2b, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1f, 0xfe, 0x38, 0x08, 0x1e, 0xec, 0x08, 0x78, 0x0a, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3f, 0xff, 0xff, 0xb6, 0xab, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xfc, 0xf0, 0x31, 0x17, 0x68, 0x80, 0x00, 0x0f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdf, 0xff, 0xfc, 0x10, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x01, 0xf0, 0x72, 0x17, 0x73, 0x04, 0x00, 0x0f, 0xfc, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfb, 0xca, 0x47, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x78, 0x0f, 0xe0, 0x24, 0x3f, 0x76, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xed, 0xe9, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1f, 0xfb, 0xc1, 0x2c, 0x7f, 0xfc, 0x80, 0x00, 0x0c, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf5, 0xa0, 0x05, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x07, 0x01, 0x38, 0x7f, 0xf9, 0x00, 0x00, 0x0d, 0xfe, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7f, 0xfe, 0xf6, 0xb4, 0x13, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x3f, 0x20, 0x70, 0xff, 0xfb, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1f, 0xff, 0xde, 0x00, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1f, 0xff, 0x62, 0x71, 0xbf, 0xfe, 0x60, 0x00, 0xe3, 0x75, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2b, 0x4a, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x66, 0x44, 0x77, 0x2f, 0xfc, 0x80, 0x01, 0xfb, 0xff, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1f, 0xf9, 0xa0, 0x42, 0x00, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf3, 0xe6, 0x04, 0x56, 0x4f, 0x7d, 0x18, 0x00, 0x0f, 0xbe, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xb0, 0x03, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x88, 0x00, 0xdc, 0xd7, 0x7f, 0x20, 0x00, 0xe3, 0xfe, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x7f, 0xfe, 0xf2, 0xaa, 0x8d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3d, 0xf2, 0x01, 0x91, 0xaf, 0xfe, 0x44, 0x00, 0xff, 0xff, 0x81, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xee, 0x01, 0x9e, 0x6f, 0xfe, 0x98, 0x00, 0x7f, 0xdf, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x55, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xde, 0xfe, 0x03, 0xbc, 0x97, 0xff, 0xe3, 0x00, 0xf3, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbf, 0xe4, 0x07, 0x33, 0x2f, 0xff, 0x0c, 0x00, 0x1d, 0xfb, 0xe4, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xcc, 0x19, 0x30, 0xef, 0xfe, 0x06, 0x00, 0x3f, 0xff, 0xf8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x91, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x98, 0x02, 0x71, 0x9f, 0xfc, 0x8c, 0x00, 0x7f, 0xff, 0xf0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0x70, 0x0c, 0xff, 0x3f, 0xfd, 0x00, 0x00, 0xfb, 0xff, 0xf1, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xa9, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x23, 0xc0, 0x71, 0x30, 0x7f, 0xfe, 0x62, 0x00, 0xed, 0xbf, 0xe6, 0x24, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0x00, 0x02, 0x73, 0xff, 0xff, 0xcc, 0x00, 0x17, 0xff, 0xfe, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x00, 0x7c, 0xfe, 0x6f, 0xfe, 0xd8, 0x00, 0x1f, 0xfb, 0xf8, 0xc9, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x00, 0x01, 0xf1, 0xdf, 0xfc, 0xe4, 0x00, 0x7e, 0x6d, 0xea, 0xd0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc5, 0x04, 0x07, 0x7f, 0x3f, 0x3b, 0xcc, 0x00, 0x7f, 0x97, 0xf7, 0x51, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x55, 0xc1, 0x3c, 0xce, 0x7e, 0x7b, 0x98, 0x00, 0xcf, 0xe3, 0xf5, 0x68, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd4, 0x70, 0x1b, 0xe1, 0xdd, 0xf7, 0xb3, 0x00, 0x7f, 0x7f, 0xcc, 0x69, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xac, 0x1f, 0x9f, 0xff, 0x3f, 0xc7, 0x78, 0x03, 0x07, 0xfd, 0xe8, 0xa1, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00, 0x4a, 0x12, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x48, 0x19, 0xfe, 0xf8, 0xdf, 0x8f, 0xf3, 0xc0, 0xfe, 0x7e, 0xb8, 0xc5, 0x6e, 0x44, 0x08, 0x00, 0x00, 0x00, 0x4a, 0x5f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x90, 0x38, 0x1c, 0xf7, 0xbf, 0xca, 0x66, 0x02, 0x3f, 0x9e, 0xf5, 0x54, 0xad, 0xd9, 0x02, 0x40, 0x00, 0x00, 0xa4, 0x0a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x28, 0x67, 0xe4, 0xfe, 0x6f, 0x96, 0x7e, 0x00, 0x0c, 0xce, 0xff, 0x5a, 0x95, 0xb0, 0x06, 0x08, 0x02, 0x00, 0x35, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc7, 0x80, 0x09, 0x61, 0x97, 0x26, 0x78, 0x00, 0x01, 0x7a, 0x7f, 0xea, 0x12, 0x96, 0x4c, 0x82, 0x00, 0x0a, 0x5f, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x60, 0x11, 0x77, 0x2e, 0xcc, 0xf1, 0xe0, 0x00, 0xff, 0x3f, 0xff, 0x02, 0xc6, 0xd9, 0xa0, 0x4c, 0x87, 0x7c, 0xbf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x05, 0xd3, 0xe3, 0x70, 0xdd, 0x9d, 0xb3, 0x00, 0x02, 0x2e, 0x97, 0x5d, 0x6b, 0x42, 0x53, 0x7c, 0x81, 0x95, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x33, 0xf3, 0x02, 0xe3, 0xbf, 0x39, 0xac, 0x00, 0x18, 0x7f, 0x8b, 0xfe, 0xad, 0x0a, 0x4d, 0xdd, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x1f, 0x60, 0x04, 0xfe, 0x7e, 0x73, 0xf8, 0xc0, 0x07, 0x7f, 0x44, 0xea, 0xd5, 0x29, 0x6d, 0xbf, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xc0, 0x19, 0x60, 0xdd, 0xf7, 0xfb, 0x00, 0x01, 0xff, 0x22, 0x77, 0x56, 0xa5, 0x2d, 0xb6, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc7, 0xe0, 0x72, 0xf7, 0x3b, 0x6b, 0x76, 0x00, 0x04, 0x7f, 0x91, 0xbd, 0x6a, 0xd4, 0xb5, 0xa6, 0xbf, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3c, 0x61, 0xc4, 0xfe, 0x78, 0x16, 0xdc, 0x00, 0x03, 0x37, 0xe8, 0x4e, 0xab, 0x5a, 0x96, 0xa7, 0xbf, 0xff, 0xff, 0xef, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xff, 0x09, 0xe1, 0xdf, 0x6e, 0xf0, 0x00, 0x00, 0x9b, 0xf4, 0x07, 0xd5, 0x2b, 0x52, 0x97, 0x2d, 0x5f, 0xfa, 0xaf, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x87, 0x80, 0x33, 0xcf, 0xdf, 0x9d, 0xe0, 0x00, 0x01, 0x5d, 0xfb, 0x01, 0xf2, 0xb5, 0x6a, 0x40, 0xad, 0x5f, 0xae, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, + 0x31, 0xc0, 0xe6, 0xfd, 0xbe, 0x79, 0xe0, 0xf0, 0x00, 0xad, 0x9f, 0xc0, 0x7a, 0x56, 0xad, 0x4a, 0x15, 0xae, 0xbf, 0xfe, 0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x03, 0xbf, 0x8d, 0xcf, 0x7f, 0xf7, 0xc3, 0x80, 0x06, 0x76, 0xe7, 0xe0, 0x1f, 0x4a, 0x54, 0xab, 0x5e, 0xaf, 0xff, 0xf0, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x05, 0x00, 0x1b, 0xdc, 0xdf, 0xff, 0x86, 0x40, 0x31, 0x36, 0xd3, 0xf0, 0x07, 0xe5, 0x4a, 0xb5, 0xea, 0xff, 0xf5, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3b, 0x00, 0x67, 0x83, 0xbf, 0xff, 0x8d, 0x80, 0x7c, 0xfb, 0x64, 0xf0, 0x01, 0xff, 0xad, 0x5a, 0xbf, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x8d, 0x8e, 0x6b, 0x77, 0xff, 0x00, 0x0e, 0x7b, 0x52, 0x78, 0x00, 0x7f, 0xff, 0xea, 0xdd, 0xff, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0x78, 0x33, 0xfc, 0xdb, 0x2f, 0xfe, 0x00, 0x03, 0xfb, 0x65, 0x82, 0x00, 0x03, 0xff, 0xff, 0xff, 0xe0, 0x70, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9c, 0x01, 0xc7, 0x03, 0x37, 0x2f, 0xfc, 0x00, 0x39, 0xff, 0x23, 0x41, 0x80, 0x0d, 0xf0, 0x07, 0xfc, 0x0f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0x7e, 0x1f, 0x1e, 0x7f, 0xef, 0xf8, 0x60, 0x1e, 0x7f, 0x2d, 0x80, 0x70, 0x03, 0xf8, 0x03, 0xff, 0xfe, 0x47, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x78, 0x00, 0x7a, 0xf8, 0xbf, 0xeb, 0xf2, 0x00, 0x4e, 0x5b, 0x33, 0x00, 0x08, 0x00, 0x7f, 0x1e, 0xff, 0xfc, 0xbf, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdc, 0x0f, 0xfa, 0x03, 0x2f, 0xff, 0x9c, 0x00, 0x13, 0x59, 0xbc, 0x80, 0x00, 0x00, 0x0c, 0xff, 0xe0, 0x01, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x38, 0xff, 0xfe, 0x1e, 0x5f, 0x57, 0xb8, 0x00, 0x4f, 0x5b, 0x3e, 0x40, 0x00, 0x00, 0x02, 0x6d, 0xc0, 0x03, 0xff, 0xe7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x48, 0x04, 0xff, 0xf9, 0xf7, 0x77, 0xf6, 0x00, 0x3f, 0x1b, 0x67, 0x80, 0x00, 0x00, 0x01, 0x93, 0x0c, 0x0d, 0x7f, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9c, 0x33, 0xf1, 0x67, 0xef, 0xff, 0x6c, 0x00, 0x1f, 0x3f, 0x7f, 0xe0, 0x00, 0x01, 0x01, 0xa6, 0x18, 0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x38, 0x07, 0xc0, 0x0d, 0xde, 0xef, 0x78, 0x00, 0x4b, 0xee, 0xdf, 0xf0, 0x00, 0x00, 0x1e, 0x0c, 0x31, 0x15, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdc, 0x59, 0x80, 0x2f, 0x9f, 0xfe, 0xf0, 0x00, 0x3d, 0xe9, 0x87, 0xf0, 0x00, 0x60, 0x0c, 0x08, 0x63, 0x11, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9f, 0x03, 0x20, 0x42, 0x7f, 0xd7, 0xf3, 0x00, 0x0d, 0x6b, 0x99, 0xec, 0x00, 0x02, 0x09, 0x18, 0x42, 0x2b, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x78, 0x98, 0x60, 0x80, 0xdf, 0xbf, 0xee, 0x00, 0x6d, 0xef, 0x66, 0x01, 0x80, 0x03, 0x7a, 0x10, 0xc4, 0xe3, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb8, 0x00, 0xc1, 0x07, 0xbf, 0x6f, 0xf8, 0x00, 0x0f, 0xdf, 0x99, 0x80, 0x20, 0x00, 0x14, 0x30, 0x80, 0xf3, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0x03, 0x86, 0x1e, 0x7c, 0xdf, 0xf0, 0x00, 0x07, 0xfe, 0x66, 0x00, 0x00, 0x00, 0x04, 0x21, 0x81, 0x43, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, + 0xfa, 0x0f, 0x18, 0x2d, 0xdd, 0xbf, 0xa0, 0x00, 0x67, 0xfd, 0xb1, 0x00, 0x00, 0x31, 0xe8, 0x21, 0x01, 0xe7, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x3f, 0xff, 0xff, 0xff, 0xff, + 0xc7, 0xf8, 0x00, 0x0f, 0x3f, 0x3b, 0xe7, 0x00, 0x7f, 0xf6, 0x67, 0x00, 0x00, 0x00, 0x70, 0x41, 0x03, 0x87, 0xff, 0xef, 0xff, 0xff, 0xff, 0x4f, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0x30, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x00, 0x00, 0x4c, 0xfb, 0xb7, 0xd8, 0x00, 0x1f, 0x9f, 0xf9, 0x80, 0x00, 0x00, 0x70, 0x42, 0x02, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4b, 0xff, 0xff, 0xfe, 0xff, 0xef, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x8b, 0xfe, 0xef, 0xc0, 0x03, 0xff, 0xf7, 0x7e, 0x00, 0x00, 0x00, 0x60, 0x82, 0x07, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xde, 0xdf, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xbf, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x03, 0x1e, 0xdf, 0xfb, 0x80, 0x00, 0xef, 0xf9, 0x9c, 0x00, 0x00, 0x00, 0xe0, 0x82, 0x07, 0x97, 0xff, 0xff, 0xfe, 0x7f, 0xbe, 0x9f, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xef, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x00, 0x00, 0x10, 0x9f, 0xb7, 0x80, 0x00, 0x37, 0xf6, 0x67, 0x00, 0x00, 0x00, 0xc1, 0x80, 0x0f, 0xaf, 0xff, 0xff, 0x3f, 0xff, 0xad, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xfd, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x00, 0x00, 0x37, 0xb7, 0xa7, 0x38, 0x00, 0xff, 0xfd, 0xdc, 0x80, 0x00, 0x01, 0x01, 0x00, 0x0f, 0x2f, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x7f, 0xff, 0xfd, 0x7f, 0xff, 0xfd, 0xbf, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x10, 0x00, 0x00, 0x6f, 0xef, 0xbf, 0xe0, 0x00, 0x7f, 0xf0, 0x70, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0f, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0xdb, 0x7f, 0xd6, 0xdd, 0x7f, 0xff, 0x7d, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x20, 0x00, 0x00, 0xcb, 0xcb, 0x7f, 0x80, 0x00, 0x3f, 0xfd, 0xbf, 0x40, 0x00, 0x00, 0x01, 0x00, 0x1f, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xb7, 0xff, 0x2d, 0xdf, 0xf7, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x42, 0x00, 0x01, 0x13, 0xf7, 0x7b, 0x00, 0x01, 0xdd, 0xf7, 0xfc, 0xdf, 0xe3, 0x92, 0x02, 0x00, 0x17, 0xdf, 0xff, 0xff, 0xff, 0xfe, 0x77, 0xf0, 0xdf, 0xbf, 0xf7, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc4, 0x00, 0x00, 0x67, 0xed, 0x7f, 0x00, 0x00, 0xfd, 0xff, 0x3b, 0x60, 0xc0, 0x02, 0x02, 0x00, 0x27, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xcf, 0xf3, 0xff, 0x7f, 0xf7, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x88, 0x00, 0x00, 0xcd, 0xdb, 0x7f, 0x20, 0x00, 0x3f, 0xfe, 0x72, 0x83, 0x0e, 0x40, 0x02, 0x00, 0x2f, 0xbf, 0xff, 0xff, 0xef, 0xf9, 0xbf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xdf, 0xfe, 0xff, 0xff, 0xff, 0xff, + 0x12, 0x00, 0x00, 0x1b, 0xd2, 0xf6, 0x60, 0x0f, 0x97, 0xfe, 0xb7, 0x30, 0x4c, 0x40, 0x00, 0x00, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf7, 0xfe, 0x7f, 0x7f, 0xff, 0xff, 0xfb, 0xff, 0xbf, 0xfd, 0xff, 0xff, 0xff, 0xff, + 0x34, 0x88, 0x00, 0x3b, 0xcd, 0xf6, 0xc0, 0x00, 0xd3, 0xff, 0x6c, 0x41, 0x8d, 0xc0, 0x00, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xe4, 0x7f, 0xf7, 0xea, 0xff, 0xfc, 0xff, 0xbf, 0xfb, 0xfe, 0xff, 0xff, 0xff, + 0x2d, 0x90, 0x00, 0xf6, 0xfd, 0xde, 0xd0, 0x00, 0x39, 0xf5, 0x58, 0x82, 0x08, 0x80, 0x00, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xfd, 0xcd, 0xc1, 0xff, 0xfe, 0xff, 0xff, 0xde, 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, + 0x4b, 0x20, 0x00, 0x8c, 0xf2, 0xd7, 0xe0, 0x03, 0x9f, 0xfe, 0x98, 0x06, 0x09, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xf3, 0xbf, 0x7f, 0xd2, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x53, 0x60, 0x01, 0x19, 0xcc, 0xbf, 0xe8, 0x01, 0xfd, 0xfb, 0xb2, 0x0c, 0x16, 0x00, 0x00, 0x00, 0x9f, 0xff, 0xff, 0xfc, 0x0e, 0xff, 0xfe, 0xb7, 0x8c, 0x21, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, + 0xd6, 0x40, 0x01, 0xf2, 0xf9, 0x6f, 0xd8, 0x00, 0x7f, 0xf5, 0x34, 0x08, 0x14, 0x00, 0x00, 0x00, 0x9e, 0xff, 0xff, 0xff, 0xc3, 0x7f, 0xf5, 0xae, 0x7f, 0x1f, 0x0d, 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xbf, 0xff, 0xff, + 0xf6, 0xc8, 0x00, 0x25, 0xf2, 0x4f, 0xd0, 0x00, 0x1f, 0xf6, 0x68, 0x10, 0x04, 0x10, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x01, 0xff, 0xf5, 0xfc, 0x87, 0xc0, 0x9b, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe6, 0x90, 0x20, 0xc3, 0xfc, 0x9f, 0xd0, 0x00, 0xef, 0xe2, 0x68, 0x30, 0x20, 0x10, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xc4, 0xff, 0xfd, 0x7d, 0x18, 0xff, 0x32, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe5, 0xa0, 0x81, 0xff, 0xfb, 0x3f, 0xd8, 0x8f, 0x37, 0xf6, 0xd0, 0x20, 0x20, 0x00, 0x00, 0x00, 0x1f, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x7b, 0x20, 0x43, 0xe4, 0xef, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xed, 0x23, 0x00, 0xcd, 0xfe, 0x7e, 0xf8, 0x41, 0xcf, 0xf4, 0xe0, 0x40, 0x00, 0x20, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xfe, 0x3b, 0xff, 0xfd, 0x7e, 0x40, 0x7f, 0x8d, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, + 0x6d, 0x22, 0x00, 0x13, 0xf8, 0xbe, 0xf8, 0x00, 0x67, 0xf5, 0xe0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3f, 0xbf, 0xff, 0xff, 0x9f, 0xff, 0xfd, 0x7c, 0x93, 0xcc, 0x13, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7c, 0x64, 0x00, 0xe6, 0xf7, 0x6e, 0xec, 0x27, 0x37, 0xe1, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf8, 0xff, 0xfd, 0xfd, 0x75, 0xb7, 0x03, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xff, + 0x7c, 0x48, 0x00, 0x0d, 0xfc, 0xdf, 0xf4, 0x37, 0xbf, 0xe1, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xbf, 0x71, 0x2c, 0x00, 0x3c, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7c, 0xc8, 0x00, 0x3a, 0xf3, 0x3d, 0xf6, 0x09, 0xdf, 0xea, 0x80, 0x00, 0x80, 0x40, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xe1, 0xcf, 0xdf, 0x9f, 0xb9, 0x58, 0x7e, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfd, 0xff, 0xff, + 0xdd, 0x90, 0x01, 0xe4, 0xfe, 0x7b, 0x72, 0x0c, 0xcf, 0xf3, 0x81, 0x00, 0x80, 0x40, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfe, 0x67, 0xff, 0x9f, 0x9a, 0x91, 0x98, 0x02, 0xfe, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0x80, 0x00, 0x09, 0xf1, 0xfb, 0xf1, 0x84, 0xef, 0xd1, 0x61, 0x02, 0x40, 0x40, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf3, 0x92, 0xbc, 0xcc, 0xca, 0xa2, 0x77, 0x21, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xed, 0x81, 0x00, 0x36, 0xcf, 0xdb, 0xf8, 0x06, 0xfd, 0xb3, 0x63, 0x02, 0x40, 0x90, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf8, 0x5a, 0xfe, 0x4c, 0xca, 0xe4, 0xf1, 0xb3, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xbf, 0xff, + 0xfd, 0x82, 0x00, 0x79, 0xfd, 0xce, 0xdc, 0x06, 0xfb, 0x36, 0x42, 0x02, 0x01, 0x90, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x3b, 0xfe, 0x4c, 0x5a, 0xc9, 0xc0, 0x80, 0x63, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xfd, 0x9f, 0xff, + 0xfc, 0xc4, 0x00, 0x01, 0xf3, 0xdf, 0x7f, 0x02, 0x7c, 0x7e, 0x02, 0x02, 0x81, 0x90, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xcf, 0xf6, 0x4c, 0x7a, 0xd3, 0x00, 0x40, 0x86, 0xfb, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xd9, 0xff, + 0xff, 0xc8, 0x00, 0x01, 0xfd, 0xdf, 0x39, 0xe2, 0xb9, 0xbc, 0x86, 0x02, 0x81, 0x10, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xe3, 0xef, 0xd2, 0x4c, 0x7b, 0x96, 0x00, 0x40, 0x3d, 0xbf, 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xfd, 0xff, + 0xff, 0xc8, 0x00, 0x1b, 0xfd, 0xdf, 0xbc, 0x02, 0xa7, 0xfc, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf8, 0x27, 0xd2, 0x4c, 0x6f, 0xac, 0x27, 0xe1, 0xff, 0xff, 0x5f, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x50, 0x00, 0x19, 0xff, 0xde, 0xde, 0x04, 0xa7, 0xf9, 0x0c, 0x02, 0x01, 0x20, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x1e, 0x37, 0xd2, 0x4c, 0x77, 0xac, 0x0e, 0x00, 0x6f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, + 0x1b, 0x60, 0x00, 0x39, 0x7f, 0xde, 0xcf, 0x8d, 0xff, 0xf9, 0x0c, 0x02, 0x01, 0xa0, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xc7, 0x37, 0xd6, 0x5c, 0x73, 0xec, 0xa0, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, + 0x37, 0x60, 0x00, 0x29, 0x7e, 0xda, 0x60, 0xfb, 0xff, 0xd0, 0x08, 0x02, 0x03, 0x20, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf9, 0xb7, 0xd4, 0xdc, 0x5b, 0xd9, 0x73, 0x87, 0x97, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0x2f, 0xc0, 0x00, 0x09, 0x76, 0xc9, 0x30, 0x02, 0xff, 0xa2, 0x18, 0x02, 0x02, 0x20, 0x00, 0x00, 0xff, 0xff, 0xff, 0xcd, 0x97, 0x94, 0x98, 0xa9, 0xd2, 0x66, 0x03, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x76, 0x80, 0x00, 0x09, 0x7e, 0x4d, 0x80, 0x0c, 0xff, 0xa0, 0x10, 0x02, 0x02, 0x20, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf4, 0xdf, 0xac, 0xb8, 0xa8, 0xd2, 0xc8, 0x03, 0xfc, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x6d, 0x00, 0x00, 0x1b, 0x76, 0xe4, 0xc0, 0x11, 0xff, 0xe0, 0x10, 0x00, 0x02, 0x40, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x29, 0x31, 0xaa, 0xc0, 0x90, 0x1f, 0xfb, 0x0f, 0xff, 0xff, 0xff, 0x7e, 0xff, 0xfe, 0xff, + 0xeb, 0x20, 0x00, 0x3b, 0x76, 0xe2, 0x12, 0x8f, 0xff, 0xe0, 0x10, 0x00, 0x02, 0x40, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xef, 0xfe, 0x53, 0x71, 0x2b, 0xb1, 0xa1, 0xf8, 0x06, 0x3c, 0x1f, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x7f, + 0xd2, 0x44, 0x00, 0x7a, 0xb6, 0xb1, 0x13, 0xff, 0xff, 0xe0, 0x20, 0x00, 0x06, 0x40, 0x00, 0x02, 0xfd, 0xff, 0xff, 0xf7, 0xef, 0xf7, 0x82, 0x43, 0xb5, 0x23, 0xe0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd0, 0x89, 0x80, 0xd6, 0xb6, 0xd0, 0x34, 0xff, 0xff, 0xc0, 0x20, 0x00, 0x06, 0x40, 0x00, 0x04, 0xf7, 0xff, 0xff, 0xdb, 0x7f, 0xef, 0xb6, 0xb5, 0xfd, 0x46, 0xc0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, + 0x91, 0x13, 0x00, 0x2d, 0x66, 0xd8, 0x67, 0xf7, 0xff, 0xc8, 0x00, 0x00, 0x05, 0x20, 0x00, 0x04, 0xf7, 0x7f, 0xff, 0xed, 0x3f, 0xcf, 0x6d, 0x25, 0x7e, 0x45, 0x80, 0x00, 0x3c, 0x07, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, + 0xc9, 0x26, 0x00, 0xeb, 0x6f, 0x4c, 0x27, 0xff, 0xfe, 0x88, 0x00, 0x00, 0x05, 0xa0, 0x00, 0x05, 0xfd, 0xff, 0xff, 0xf5, 0x9f, 0x3c, 0xff, 0x6d, 0x6e, 0x53, 0x10, 0x00, 0x61, 0xf9, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, + 0xca, 0x6c, 0x03, 0xc6, 0x9f, 0x67, 0xf7, 0xff, 0xff, 0x90, 0x00, 0x00, 0x04, 0xa0, 0x00, 0x05, 0xfd, 0xff, 0xff, 0xba, 0x9f, 0xe9, 0x97, 0x9a, 0xce, 0x9e, 0x60, 0x00, 0x0f, 0xfd, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, + 0xca, 0x48, 0x00, 0x05, 0x1f, 0xa1, 0xf9, 0xff, 0xff, 0x10, 0x00, 0x00, 0x0c, 0xa0, 0x00, 0x05, 0xfd, 0xff, 0xff, 0xfc, 0x8f, 0xcf, 0x8e, 0x37, 0xd6, 0x8e, 0xc0, 0x80, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xca, 0xd8, 0x81, 0x89, 0x3f, 0xb0, 0x7e, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x0e, 0x80, 0x00, 0x05, 0xfd, 0xff, 0xff, 0xfc, 0x8e, 0x0e, 0xc7, 0xef, 0xfe, 0xd4, 0x83, 0x00, 0x73, 0xfd, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, + 0x4a, 0x91, 0x00, 0x10, 0x7a, 0xd8, 0x3b, 0xc3, 0xff, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x00, 0x05, 0xff, 0xff, 0xe0, 0xdc, 0x8e, 0xcc, 0xc0, 0xf0, 0x3f, 0xfd, 0x04, 0x00, 0xe7, 0xfe, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xef, + 0x4e, 0xb2, 0x00, 0x34, 0x4a, 0x6c, 0x37, 0xff, 0xff, 0x01, 0x00, 0x00, 0x08, 0x40, 0x00, 0x0d, 0xff, 0xff, 0xcf, 0xe4, 0x87, 0xce, 0xd2, 0x00, 0x07, 0xfd, 0x08, 0x01, 0xcf, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, + 0x2d, 0xb4, 0x00, 0x18, 0x9b, 0x33, 0x9f, 0xff, 0xfe, 0x01, 0x00, 0x00, 0x19, 0x40, 0x00, 0x09, 0xfb, 0xff, 0xfd, 0xd7, 0x17, 0xde, 0xe7, 0xe0, 0x00, 0x89, 0x18, 0x03, 0x8f, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, + 0x2d, 0xa4, 0x00, 0x03, 0x39, 0x90, 0xff, 0xff, 0xde, 0x00, 0x00, 0x00, 0x19, 0x40, 0x00, 0x0b, 0xfb, 0xff, 0xff, 0xfb, 0x15, 0x5e, 0xef, 0x00, 0x20, 0x19, 0x10, 0x06, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, + 0x25, 0xe8, 0x00, 0x1e, 0x79, 0x9f, 0x3f, 0x7f, 0xdc, 0x02, 0x01, 0x40, 0x11, 0xc0, 0x00, 0x0b, 0xfb, 0xff, 0xff, 0xdd, 0x24, 0x5e, 0x72, 0x60, 0x00, 0xdd, 0x30, 0x04, 0x00, 0x06, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, + 0x27, 0xc8, 0x00, 0x00, 0xfd, 0xcf, 0xff, 0x9f, 0xfc, 0x02, 0x01, 0x40, 0x11, 0x80, 0x00, 0x0b, 0xfb, 0xfd, 0xde, 0x0f, 0x0a, 0x9c, 0x64, 0xc0, 0x00, 0xdf, 0x30, 0x00, 0x70, 0xf1, 0x7f, 0xff, 0xff, 0xf7, 0xff, 0xff, + 0x23, 0xd0, 0x00, 0x03, 0xfd, 0xe3, 0x7f, 0xf7, 0xfc, 0x00, 0x03, 0x40, 0x13, 0x80, 0x00, 0x0a, 0xf9, 0xff, 0xff, 0x83, 0x08, 0x9c, 0x49, 0x00, 0x00, 0x7e, 0x32, 0x01, 0x80, 0xfc, 0x7f, 0xff, 0xff, 0xf7, 0xff, 0xff, + 0x20, 0x73, 0x00, 0x03, 0xde, 0xb0, 0xbf, 0xff, 0xfc, 0x04, 0x03, 0x00, 0x33, 0x80, 0x00, 0x02, 0xf9, 0xf7, 0xff, 0xe1, 0x15, 0x18, 0x4b, 0x28, 0x00, 0x77, 0x54, 0x00, 0x01, 0xfe, 0x7f, 0xff, 0xff, 0xef, 0xfe, 0xff, + 0x20, 0x62, 0x00, 0x00, 0xfa, 0xcc, 0xff, 0xff, 0xf8, 0x04, 0x03, 0x00, 0x33, 0x80, 0x00, 0x02, 0xfb, 0xef, 0xe0, 0x19, 0xaf, 0xb8, 0x1a, 0x58, 0x00, 0x3b, 0xcc, 0x04, 0x00, 0xff, 0x7f, 0xff, 0xff, 0x9f, 0xfb, 0x7f, + 0x20, 0xe4, 0x40, 0x00, 0x7b, 0x63, 0xff, 0xff, 0xf8, 0x08, 0x02, 0x80, 0x23, 0x00, 0x00, 0x02, 0xf9, 0x7f, 0xfe, 0x09, 0xfe, 0x20, 0x1a, 0xf3, 0x00, 0x19, 0xe8, 0x01, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xbf, 0x7f, 0xbf, + 0x00, 0xed, 0xc0, 0x03, 0x39, 0x38, 0xff, 0xff, 0xf8, 0x08, 0x02, 0x80, 0x23, 0x00, 0x00, 0x06, 0xf1, 0xff, 0xf0, 0x01, 0xef, 0x40, 0x16, 0xe4, 0x00, 0x0c, 0x32, 0x33, 0x00, 0x03, 0xff, 0xff, 0xff, 0x2f, 0x7f, 0xff, + 0x00, 0xeb, 0x80, 0x01, 0xfc, 0x9e, 0xff, 0xff, 0xf8, 0x08, 0x06, 0x00, 0x67, 0x00, 0x00, 0x06, 0xf9, 0xfe, 0xc0, 0x03, 0xef, 0xc0, 0x15, 0xc9, 0xc0, 0x07, 0x10, 0xd8, 0x00, 0x01, 0xff, 0xff, 0xff, 0x5f, 0xff, 0x7f, + 0x00, 0xe6, 0x80, 0x00, 0xfc, 0xc7, 0xff, 0xff, 0xf0, 0x00, 0x06, 0x00, 0x67, 0x00, 0x00, 0x07, 0xf9, 0xfd, 0xbe, 0x03, 0x00, 0xc0, 0x3d, 0xdb, 0x00, 0x00, 0xf4, 0x90, 0x40, 0x00, 0xbf, 0xff, 0xff, 0xbe, 0xff, 0x37, + 0x00, 0xe5, 0x00, 0x00, 0xbe, 0x60, 0xff, 0xff, 0xf0, 0x10, 0x06, 0x00, 0x47, 0x00, 0x00, 0x05, 0xf9, 0xff, 0xf3, 0x97, 0x80, 0x60, 0x27, 0x96, 0x38, 0x00, 0x35, 0xb3, 0x80, 0x00, 0x5f, 0xff, 0xff, 0xff, 0xff, 0x93, + 0x08, 0x7e, 0x00, 0x00, 0xfe, 0x3c, 0xff, 0xff, 0xf2, 0x30, 0x06, 0x00, 0x57, 0x00, 0x00, 0x05, 0xf0, 0xff, 0xc1, 0xe0, 0x00, 0x30, 0x27, 0xac, 0xf0, 0x00, 0x1d, 0x26, 0x00, 0x00, 0x5f, 0xff, 0xff, 0xff, 0xfb, 0xc9, + 0x08, 0x7e, 0xc0, 0x00, 0xff, 0x07, 0x7f, 0xfb, 0xf2, 0x20, 0x0c, 0x00, 0xdf, 0x00, 0x00, 0x05, 0xf0, 0xf9, 0xff, 0x1f, 0x08, 0x12, 0x25, 0xa9, 0x80, 0x00, 0x15, 0x28, 0x10, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfd, + 0x89, 0x3d, 0xc0, 0x00, 0xff, 0x03, 0xff, 0xff, 0xf2, 0x60, 0x0c, 0x00, 0xce, 0x00, 0x00, 0x05, 0xe0, 0xfb, 0xc0, 0xff, 0xc4, 0x08, 0x27, 0xdb, 0x00, 0x00, 0x09, 0x70, 0xc3, 0xe0, 0x3f, 0xff, 0xff, 0xff, 0xef, 0xff, + 0x89, 0x7d, 0x80, 0x00, 0xff, 0xe3, 0xff, 0xff, 0xe0, 0x60, 0x0c, 0x00, 0xce, 0x00, 0x00, 0x05, 0xe1, 0xbf, 0x03, 0x80, 0x00, 0x80, 0x33, 0xd2, 0x1c, 0x00, 0x05, 0x73, 0x19, 0xf0, 0x3f, 0xff, 0xff, 0xef, 0xf9, 0x9f, + 0x8b, 0x67, 0x00, 0x00, 0xff, 0xb9, 0xff, 0xff, 0xe0, 0x40, 0x0c, 0x01, 0x8e, 0x00, 0x00, 0x0f, 0xe1, 0xff, 0x77, 0x00, 0x0c, 0x80, 0x33, 0xd4, 0x60, 0x00, 0xc6, 0x76, 0x86, 0xf0, 0x7f, 0xff, 0xff, 0xdf, 0x7c, 0xcf, + 0x82, 0x4e, 0x00, 0x00, 0xdf, 0xbc, 0xff, 0xff, 0xe0, 0x40, 0x0c, 0x01, 0x9c, 0x00, 0x00, 0x0f, 0xe3, 0xff, 0x0e, 0x38, 0x7e, 0x00, 0x33, 0xdc, 0xcc, 0x00, 0x33, 0x65, 0x33, 0xd8, 0x6f, 0xff, 0xff, 0xff, 0xf6, 0x67, + 0x9b, 0xd8, 0x00, 0x00, 0xdf, 0xbb, 0xff, 0xff, 0xe4, 0x40, 0x3c, 0x01, 0xbe, 0x00, 0x00, 0x0f, 0xe3, 0xfe, 0x4c, 0xff, 0xe3, 0x00, 0x39, 0xfd, 0xb8, 0x00, 0x19, 0x6c, 0xc1, 0xd8, 0xdf, 0xff, 0xff, 0xff, 0xff, 0x27, +}; + +static const uint8_t sadpanda[] = { + +0x06, 0x9C, 0x01, 0x67, 0x01, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf6, 0x9d, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfd, 0xdb, 0x67, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xb6, 0x49, 0x20, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xec, 0xa6, 0x64, 0x99, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x26, 0xc9, 0x96, 0x44, 0x81, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf4, 0xd9, 0x32, 0x11, 0x44, 0x64, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xb6, 0xc9, 0x24, 0xc9, 0x31, 0x13, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc9, 0x24, 0x8c, 0x20, 0x08, 0x90, 0x93, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfa, 0x49, 0x24, 0x91, 0x06, 0x42, 0x24, 0x91, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcb, 0x36, 0x40, 0x41, 0x10, 0x24, 0x09, 0x24, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x64, 0x90, 0x12, 0x08, 0x41, 0x09, 0x40, 0x48, 0x9f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x34, 0xc1, 0x00, 0x82, 0x08, 0x40, 0x12, 0x0a, 0x43, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf9, 0x89, 0x08, 0x48, 0x20, 0x20, 0x36, 0x80, 0x82, 0x42, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xd8, 0x92, 0x22, 0x02, 0x08, 0x07, 0xbf, 0xfc, 0x21, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xce, 0x44, 0x00, 0x80, 0x00, 0x5f, 0xfb, 0x7b, 0x08, 0x41, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xa1, 0x21, 0x08, 0x00, 0x00, 0xff, 0xdb, 0xce, 0xe2, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x31, 0x08, 0x00, 0x00, 0x01, 0xfc, 0xdc, 0xf6, 0xf8, 0x04, 0xc7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x4c, 0x00, 0x00, 0x00, 0x07, 0xf7, 0xf7, 0xbb, 0x3c, 0x42, 0x11, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x40, 0x20, 0x00, 0x00, 0x03, 0xff, 0x7f, 0xef, 0xcf, 0x10, 0x89, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xda, 0x90, 0x80, 0x00, 0x00, 0x03, 0xbb, 0xdb, 0x7d, 0xf3, 0x80, 0x24, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x64, 0x80, 0x00, 0x00, 0x00, 0x07, 0xee, 0xff, 0xf7, 0x7e, 0xe2, 0x12, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb1, 0x02, 0x00, 0x00, 0x00, 0x07, 0xff, 0xb6, 0xdf, 0xdf, 0xf8, 0x82, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x88, 0x08, 0x00, 0x00, 0x00, 0x07, 0x77, 0xff, 0xfb, 0xf7, 0x6e, 0x24, 0x8f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x64, 0x80, 0x00, 0x00, 0x00, 0x07, 0xdd, 0xdb, 0x6e, 0xfd, 0xfb, 0x81, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbd, 0xff, 0xff, 0xbf, 0xb7, 0x08, 0x5b, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x88, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xe7, 0x6d, 0xb7, 0xee, 0xf7, 0x02, 0x42, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xbf, 0xff, 0xfd, 0xfb, 0xdb, 0x10, 0x24, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xb2, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbb, 0xb6, 0xdf, 0x7f, 0x7d, 0x01, 0x25, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xee, 0xff, 0xf7, 0xdd, 0xef, 0x00, 0x11, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x6c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfd, 0xdb, 0x3d, 0xf7, 0xfb, 0x08, 0x88, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x37, 0x7f, 0xff, 0x7f, 0x76, 0x02, 0x22, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfd, 0xd0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xed, 0xdf, 0xdb, 0xde, 0x00, 0x02, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xef, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xbb, 0xbf, 0x7b, 0xfe, 0xfa, 0x00, 0x48, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xbf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x6e, 0xf7, 0xee, 0xef, 0xba, 0x04, 0x01, 0x32, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf7, 0xf6, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x7f, 0xdd, 0xbf, 0xbb, 0xec, 0x00, 0x00, 0x09, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7d, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xdb, 0x7f, 0xfb, 0xfe, 0xfc, 0x00, 0x08, 0x81, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xdf, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xee, 0xde, 0xdf, 0xdc, 0x00, 0x80, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xed, 0xbb, 0xf7, 0xf7, 0x78, 0x00, 0x01, 0x04, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xed, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xbf, 0xff, 0x7d, 0xbd, 0xe8, 0x00, 0x00, 0x04, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x7f, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf6, 0xdb, 0xdf, 0xff, 0xf8, 0x00, 0x10, 0x21, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbd, 0xfb, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x5f, 0xfb, 0xb6, 0xdf, 0x70, 0x00, 0x00, 0x08, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xef, 0xdf, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xfb, 0x6e, 0xff, 0xf7, 0xe0, 0x00, 0x02, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0xfd, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xff, 0xdb, 0xfd, 0xe0, 0x00, 0x00, 0x00, 0x93, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf6, 0xef, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xed, 0xb7, 0x7e, 0xdf, 0xc0, 0x00, 0x00, 0x44, 0x13, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xbe, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0xfd, 0xef, 0xf7, 0xc0, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xed, 0xf7, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xb6, 0xdf, 0xbd, 0xbf, 0x00, 0x00, 0x00, 0x01, 0x0c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xff, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf6, 0xf7, 0xff, 0x00, 0x00, 0x00, 0x10, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x7b, 0xdd, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x6d, 0xff, 0xde, 0xde, 0x00, 0x00, 0x00, 0x00, 0x23, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xde, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x6d, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x08, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf7, 0xfb, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbb, 0xff, 0x6d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xbd, 0xdf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xdb, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xef, 0x7d, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0xff, 0xff, 0xb6, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xdb, 0xf7, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc8, 0x77, 0x6e, 0xff, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x76, 0xff, 0x60, 0x00, 0x00, 0x00, 0x37, 0xff, 0xff, 0xff, 0x7d, 0xfb, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xdf, 0xbd, 0xc0, 0x00, 0x00, 0x00, 0x3d, 0xff, 0xfe, 0xff, 0xdf, 0xbf, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xed, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0xbf, 0xb7, 0xfb, 0xff, 0xfd, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xf7, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x76, 0xfb, 0xfd, 0xde, 0xff, 0xdf, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xdf, 0xf6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xde, 0xdf, 0xf7, 0xbf, 0xfb, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xfd, 0xbf, 0xc0, 0x00, 0x00, 0x00, 0xbb, 0x77, 0xf6, 0xff, 0xef, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xfd, 0xc0, 0x00, 0x00, 0x00, 0xef, 0xfd, 0xb7, 0xbb, 0x7b, 0x7f, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0xf7, 0xc0, 0x00, 0x00, 0x00, 0xfd, 0xbb, 0x6d, 0xaf, 0xff, 0xee, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x42, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xf7, 0xee, 0xc9, 0x6c, 0xbe, 0xfb, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xdf, 0xc0, 0x00, 0x00, 0x01, 0xde, 0xdb, 0xbb, 0x53, 0xa7, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0xff, 0xdb, 0x26, 0x56, 0xfb, 0xfe, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x10, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xfb, 0x6c, 0xd8, 0x89, 0x2e, 0xf3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x80, 0x00, 0x00, 0x01, 0xef, 0xee, 0x92, 0x2b, 0x6d, 0xfb, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x01, 0xbe, 0xdb, 0x26, 0x4c, 0xdb, 0xcc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x40, 0x00, 0x00, 0x01, 0xfb, 0xd9, 0xcd, 0x56, 0xdf, 0xf7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x01, 0xff, 0xee, 0x73, 0x33, 0x67, 0xd7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0xb7, 0xb6, 0x9a, 0xcd, 0xbf, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x01, 0xfd, 0xd9, 0xec, 0xf5, 0xbd, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xff, 0xdb, 0x6f, 0x36, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x04, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xef, 0xb6, 0xb3, 0xdb, 0xfb, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x01, 0xfd, 0xed, 0xbc, 0xdb, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xf7, 0x6d, 0xcf, 0x6f, 0xe7, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xdb, 0x73, 0xbf, 0xbb, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xde, 0xfe, 0x5b, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x77, 0xee, 0xdf, 0xf9, 0xdd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x7d, 0xbb, 0x6d, 0xb3, 0x37, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x7f, 0xdb, 0x7b, 0xe6, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x04, 0x20, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x77, 0xdd, 0xdf, 0x5d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3d, 0xf7, 0xf7, 0x59, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x40, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3f, 0x7e, 0xfe, 0xee, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3b, 0xdb, 0xfa, 0xb7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3e, 0xff, 0xfd, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x08, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1f, 0xbf, 0xe5, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1d, 0xff, 0xbc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xb7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x20, 0x11, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x80, 0x00, 0x00, 0x84, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1f, 0xf7, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x02, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x0f, 0xef, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x20, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x84, 0x00, 0x00, 0x0f, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x66, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x40, 0x80, 0x00, 0x0f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xe9, 0x10, 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc4, 0x24, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x64, 0xcc, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x76, 0x7b, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x48, 0x40, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdf, 0xfe, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x92, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x20, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf7, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x48, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xbf, 0xfd, 0xa7, 0xe0, 0x00, 0x00, 0x13, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xff, 0xdb, 0x7b, 0xf0, 0x00, 0x00, 0x0b, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0x76, 0xdb, 0xf0, 0x00, 0x00, 0x0b, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xfd, 0xed, 0xa6, 0xf8, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x7f, 0xf7, 0x3b, 0x7d, 0xbc, 0x00, 0x00, 0x05, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xff, 0xdd, 0xdb, 0x55, 0xbe, 0x00, 0x00, 0x11, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x76, 0xdc, 0xd6, 0xde, 0x00, 0x00, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdf, 0xfd, 0xb6, 0xe7, 0xbb, 0x6f, 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xf6, 0xdb, 0x39, 0x6b, 0x6f, 0x80, 0x00, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xff, 0xf6, 0xdb, 0xde, 0x4c, 0xdb, 0x80, 0x00, 0x08, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xbb, 0x6c, 0xd3, 0xdd, 0xb7, 0xc0, 0x00, 0x02, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x17, 0xff, 0xad, 0xb7, 0x6d, 0xb3, 0x6f, 0xe0, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfd, 0xed, 0xb7, 0x6c, 0xae, 0xdb, 0xe0, 0x00, 0x04, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x73, 0x6c, 0xdb, 0xec, 0xdb, 0xf0, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfb, 0x9e, 0xcf, 0x9b, 0x6d, 0xb6, 0xf0, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xed, 0xec, 0xf3, 0x6d, 0x6f, 0x6d, 0xf0, 0x00, 0x02, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf6, 0x6b, 0x3c, 0xe7, 0x73, 0x6d, 0xf8, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x03, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xb7, 0xb7, 0xcf, 0x3b, 0x9d, 0xb6, 0xf8, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x9f, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xb9, 0x9c, 0xf3, 0x6c, 0xed, 0xb7, 0xf8, 0x00, 0x02, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xed, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xce, 0x6b, 0x36, 0xdd, 0xee, 0xd9, 0xfc, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xf8, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xfe, 0xf3, 0xb3, 0xcd, 0x97, 0x33, 0x7e, 0xfc, 0x00, 0x00, 0x8b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x67, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfb, 0x39, 0x9c, 0xfb, 0x76, 0xfd, 0xe7, 0xbc, 0x00, 0x00, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x93, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xfd, 0xce, 0x6f, 0x2e, 0xdb, 0xcf, 0x7d, 0xfc, 0x00, 0x01, 0x0d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x98, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf6, 0xdb, 0x69, 0xb3, 0xbb, 0x7b, 0x9f, 0x7e, 0x00, 0x00, 0x05, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xc9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xf6, 0xb3, 0x36, 0xdd, 0x6d, 0xbc, 0xf7, 0xfe, 0x00, 0x00, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x23, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xdb, 0x2c, 0xde, 0xdd, 0xdd, 0xe7, 0xf9, 0xbe, 0x00, 0x00, 0x82, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x24, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xed, 0xcd, 0xcb, 0x66, 0xd7, 0x7f, 0x6f, 0xfe, 0x00, 0x02, 0x08, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xd3, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7f, 0xb4, 0xd6, 0x79, 0xbb, 0x76, 0xd9, 0xde, 0x7e, 0x00, 0x00, 0x05, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdb, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x07, 0xff, 0xdb, 0x33, 0x36, 0xdb, 0x6e, 0xff, 0xb7, 0xdf, 0x00, 0x00, 0x21, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf6, 0xe0, 0x00, 0x03, 0x20, 0x00, 0x00, 0x0f, 0xff, 0x6b, 0x6d, 0xce, 0xdd, 0xbb, 0xa6, 0xfd, 0xfe, 0x00, 0x00, 0x08, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1b, 0xff, 0xac, 0x89, 0x7b, 0x36, 0xdb, 0x7e, 0xdb, 0x7e, 0x00, 0x01, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc8, 0x00, 0x60, 0x00, 0x00, 0x00, 0x76, 0xfe, 0xe4, 0xb6, 0x6d, 0xee, 0xde, 0xdb, 0xff, 0xde, 0x00, 0x00, 0x23, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe2, 0x01, 0xc2, 0x00, 0x00, 0x00, 0xc1, 0xfe, 0xd3, 0x33, 0xb5, 0xbb, 0x76, 0xef, 0x6d, 0xff, 0x00, 0x00, 0x08, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb8, 0x07, 0x10, 0x00, 0x00, 0x03, 0xa0, 0xfb, 0x32, 0x49, 0x9c, 0xcd, 0xed, 0xb5, 0xff, 0x6e, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x40, 0x00, 0x00, 0x0f, 0x08, 0xfd, 0x89, 0x9c, 0xef, 0x76, 0xef, 0xb7, 0xb7, 0xff, 0x00, 0x00, 0x24, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xdc, 0x00, 0x00, 0x00, 0x7c, 0x42, 0xf4, 0xcc, 0xa7, 0x6b, 0x77, 0x3a, 0xfe, 0xfd, 0xbf, 0x00, 0x00, 0x81, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfd, 0xa4, 0x00, 0x03, 0x60, 0x10, 0xfe, 0x62, 0x69, 0xbb, 0x99, 0xfb, 0xcf, 0xdf, 0xef, 0x00, 0x00, 0x01, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf9, 0x24, 0x18, 0x00, 0x05, 0xeb, 0x33, 0x3b, 0xb6, 0xef, 0xde, 0x7b, 0x76, 0xff, 0x00, 0x00, 0x04, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0xff, 0xf6, 0x80, 0x00, 0x21, 0xf9, 0x8c, 0xce, 0xd6, 0xee, 0x77, 0xff, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0xff, 0x90, 0x00, 0x01, 0x0b, 0xdc, 0x49, 0x66, 0xdb, 0x3b, 0xed, 0xb5, 0xad, 0xef, 0x00, 0x00, 0x02, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xda, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe6, 0x66, 0x76, 0xed, 0xed, 0xbe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xde, 0x00, 0x00, 0x00, 0x00, 0x27, 0xb3, 0x24, 0x9b, 0x36, 0xdf, 0xd7, 0xdb, 0x73, 0xdf, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xf4, 0x00, 0x00, 0x00, 0x01, 0x0f, 0xd8, 0x99, 0xbb, 0xdb, 0x76, 0x7d, 0xff, 0xde, 0xff, 0x00, 0x00, 0x11, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xb8, 0x00, 0x00, 0x00, 0x04, 0x4f, 0x6c, 0x93, 0x6d, 0xdb, 0x6f, 0xee, 0xed, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xec, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xa6, 0x66, 0x67, 0x6e, 0xed, 0xbb, 0xbf, 0x37, 0xef, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0x00, 0x08, 0x9e, 0xd9, 0x2d, 0xbb, 0x6d, 0xbd, 0xbf, 0xd7, 0xfd, 0xff, 0x00, 0x00, 0x04, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xd3, 0x25, 0xbb, 0x77, 0xb7, 0x6d, 0x7d, 0xdf, 0x7f, 0x00, 0x00, 0x00, 0x93, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xb0, 0x00, 0x00, 0x00, 0x11, 0x3f, 0x64, 0xd6, 0x66, 0xda, 0xf7, 0x7f, 0xef, 0x77, 0xdf, 0x00, 0x00, 0x00, 0x2b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x6c, 0x9b, 0xdd, 0xbb, 0x9d, 0xdb, 0xbb, 0xfd, 0xff, 0x00, 0x00, 0x10, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x60, 0x00, 0x00, 0x00, 0x22, 0x7e, 0x9b, 0x29, 0x5b, 0x6e, 0xfd, 0xfd, 0xfe, 0xef, 0x6f, 0x00, 0x00, 0x00, 0x99, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc2, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xbd, 0xb2, 0x67, 0x6e, 0xdb, 0x6f, 0x6f, 0x6f, 0xbf, 0xff, 0x00, 0x00, 0x00, 0x0d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x68, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x08, 0xfb, 0x65, 0x9c, 0xed, 0xb7, 0x7b, 0xfb, 0xfb, 0xfb, 0xbe, 0x00, 0x00, 0x00, 0x43, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xc9, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0x00, 0x00, 0x00, 0x42, 0x7a, 0xcd, 0x33, 0xb5, 0xb6, 0xdb, 0xb6, 0xde, 0xee, 0xfe, 0x00, 0x00, 0x02, 0x18, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xe0, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0x00, 0x00, 0x00, 0x10, 0xf6, 0xb3, 0x6e, 0xb6, 0xde, 0xf6, 0xff, 0x77, 0xbf, 0xff, 0x00, 0x00, 0x00, 0x0d, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x64, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x80, 0x00, 0x00, 0x00, 0x04, 0xfd, 0x9a, 0xcd, 0xdb, 0x77, 0xb7, 0xcd, 0xfd, 0xfd, 0xfe, 0x00, 0x00, 0x00, 0x41, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x91, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x80, 0x00, 0x00, 0x00, 0x43, 0xed, 0x6c, 0xb5, 0x6d, 0xb5, 0xbd, 0xff, 0xaf, 0xf7, 0xbe, 0x00, 0x00, 0x00, 0x14, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xc8, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x00, 0x11, 0xf6, 0x67, 0x37, 0x6d, 0xbd, 0xef, 0x6d, 0xfb, 0xbf, 0xfc, 0x00, 0x00, 0x00, 0x06, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x62, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x80, 0x00, 0x00, 0x00, 0x85, 0xdb, 0x99, 0xdb, 0x76, 0xcf, 0x6f, 0x7f, 0x7e, 0xfe, 0xfc, 0x00, 0x00, 0x01, 0x22, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x91, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xec, 0xda, 0x6d, 0x9b, 0x7b, 0xdb, 0xdb, 0xdf, 0xf7, 0xfc, 0x00, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x14, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xb6, 0x66, 0xa6, 0xed, 0xee, 0xfe, 0xfe, 0xf7, 0xdf, 0xf8, 0x00, 0x00, 0x00, 0x06, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x4d, 0x42, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x27, 0xf7, 0x35, 0xbb, 0x6d, 0xb6, 0xb7, 0xb7, 0xbd, 0xfe, 0xf0, 0x00, 0x00, 0x00, 0x41, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x16, 0x63, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x27, 0xd9, 0x99, 0x4d, 0x9b, 0x77, 0xfd, 0xfd, 0xef, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x09, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x8d, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xda, 0xce, 0xf6, 0xf6, 0xdd, 0x5f, 0x6f, 0x7f, 0x77, 0xc0, 0x00, 0x00, 0x00, 0x22, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x4c, 0x93, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xee, 0x00, 0x00, 0x00, 0x00, 0x97, 0xa6, 0x66, 0x93, 0x6d, 0xbd, 0xf3, 0xfb, 0xdf, 0xfd, 0x80, 0x00, 0x00, 0x00, 0x02, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x6c, 0x32, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xb9, 0xb3, 0x7d, 0xbb, 0xef, 0xbe, 0xdf, 0xfb, 0xef, 0x00, 0x00, 0x00, 0x00, 0x09, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x27, 0x4c, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x02, 0x4e, 0xdb, 0x39, 0xcd, 0xb6, 0x73, 0x6f, 0xf6, 0xef, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0xc7, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x66, 0x4e, 0x76, 0xdd, 0xdf, 0x7b, 0x7f, 0xbf, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x04, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x92, 0x36, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x1d, 0xb5, 0xd3, 0xb6, 0xdb, 0xdd, 0xdf, 0xdb, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1b, 0x38, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x08, 0x5e, 0xdd, 0x3c, 0xdb, 0x6e, 0x77, 0xf6, 0xfe, 0xfd, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x21, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x49, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x5e, 0xcb, 0xa7, 0x6d, 0xb7, 0xf6, 0xbf, 0xbf, 0xf7, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x08, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x86, 0xc2, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x7a, 0xdb, 0x36, 0xd9, 0x9f, 0xed, 0xef, 0xdf, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x93, 0x82, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x66, 0xdf, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x04, 0xbd, 0x56, 0x72, 0xdb, 0x6f, 0xf9, 0xff, 0x7b, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x23, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfd, 0xdf, 0xf7, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x3d, 0xd9, 0x9e, 0xdb, 0x6d, 0x6f, 0x6f, 0xdf, 0x7e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x10, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xdf, 0x7b, 0x7e, 0x6f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x08, 0x7b, 0x3e, 0xeb, 0x6d, 0xb7, 0x7f, 0xfb, 0xff, 0xf7, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x7b, 0x6f, 0xdf, 0xbb, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x02, 0x7b, 0xcb, 0x39, 0xb6, 0xde, 0xd6, 0xde, 0xee, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0xfb, 0xfd, 0xf9, 0xde, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x02, 0xfc, 0xf9, 0xd6, 0xdb, 0x6b, 0xf7, 0xf7, 0xbf, 0xef, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3f, 0xf6, 0xb7, 0x7e, 0x77, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x08, 0xf7, 0x36, 0xde, 0xdb, 0x6f, 0x3d, 0xbd, 0xfd, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3d, 0xed, 0xbf, 0xf7, 0xed, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x22, 0xf7, 0x66, 0xb3, 0x6d, 0xb7, 0xef, 0xef, 0xf7, 0xdf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7f, 0x6f, 0xed, 0xe5, 0xbb, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x04, 0xf9, 0xdb, 0xad, 0xb6, 0xdc, 0xdb, 0x7b, 0xbf, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7b, 0xf2, 0xff, 0xf9, 0xb6, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x11, 0xee, 0xda, 0xed, 0xb6, 0xdf, 0xdf, 0xdf, 0xff, 0x6f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0xdf, 0xb6, 0xcb, 0x6d, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x05, 0xed, 0xb6, 0xb3, 0x6d, 0xe7, 0x66, 0xf7, 0x77, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xcf, 0xd9, 0x3f, 0xe7, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x45, 0xb7, 0x6d, 0xbd, 0xdb, 0x3d, 0xbf, 0xbf, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xcf, 0xec, 0x5b, 0xb4, 0xdf, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x13, 0xda, 0xdb, 0x4d, 0xb6, 0xfb, 0xbb, 0xef, 0xef, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x26, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x97, 0xb4, 0x1f, 0x9f, 0xf5, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x13, 0xee, 0xd3, 0x76, 0xb7, 0xae, 0xee, 0xfd, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x27, 0xd0, 0x1d, 0xef, 0x3f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x4b, 0xb5, 0xbd, 0xb6, 0xd9, 0xbb, 0xef, 0xbf, 0xdf, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x23, 0xd8, 0x9f, 0xbc, 0x0f, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x0b, 0xdb, 0x66, 0xcd, 0xde, 0xf7, 0x7b, 0xef, 0xfb, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0b, 0xb0, 0x3f, 0xb9, 0xb6, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0xa7, 0x6b, 0x5a, 0xdb, 0x66, 0xdd, 0xde, 0xff, 0x7f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x4f, 0xe4, 0x6d, 0xe8, 0x27, 0xbf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x27, 0xbd, 0xdb, 0x76, 0xfb, 0x7e, 0xf7, 0xb7, 0xf7, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x57, 0x72, 0x7f, 0x72, 0x4d, 0xf7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x01, 0x1f, 0xb6, 0xdb, 0x6d, 0x9b, 0xd7, 0xbd, 0xfe, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x17, 0xb0, 0x9f, 0xb1, 0x2f, 0x5d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x04, 0x4f, 0x66, 0xb6, 0xbb, 0x6d, 0xbd, 0xef, 0xdf, 0xdd, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x26, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0xbd, 0xb4, 0xfb, 0xb4, 0xb7, 0xdf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x4f, 0x7b, 0xb5, 0xae, 0xed, 0xbb, 0x7b, 0xfd, 0xf7, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0xdf, 0xf2, 0x7f, 0xf2, 0x9e, 0xf7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x01, 0x3f, 0x9b, 0x6d, 0x6d, 0xb6, 0xef, 0xdf, 0x6f, 0xfe, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xfb, 0x79, 0xed, 0xb0, 0x6f, 0xbd, 0xf2, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x10, 0x8e, 0xed, 0xdb, 0x73, 0x77, 0xbd, 0xfd, 0xfb, 0xbb, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1b, 0xee, 0xdf, 0xbe, 0xe5, 0x6f, 0xef, 0xff, 0xff, 0xff, 0xfb, 0x4c, 0x90, 0x04, 0xbf, 0x80, 0x00, 0x00, 0x02, 0x5e, 0xed, 0x76, 0xde, 0xdd, 0xdf, 0x6f, 0xff, 0xef, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1e, 0xfe, 0xe6, 0xf7, 0x73, 0x3d, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x08, 0x5f, 0x37, 0x35, 0xb6, 0xdb, 0x73, 0xff, 0x6f, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x37, 0xb7, 0xbf, 0xdd, 0xb8, 0xff, 0xde, 0xed, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x10, 0x01, 0x3d, 0xdd, 0xcd, 0xb7, 0x6f, 0xbe, 0xdb, 0xfd, 0xfd, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3d, 0xfd, 0xed, 0xfe, 0xdf, 0xf3, 0xb7, 0xe6, 0xcc, 0x12, 0x49, 0x6d, 0xbe, 0xc9, 0x7f, 0x00, 0x00, 0x00, 0x11, 0x3e, 0xdb, 0x7b, 0x6d, 0xb9, 0xef, 0x7e, 0xdf, 0xef, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3b, 0x6f, 0x7f, 0x6f, 0x77, 0xce, 0xfd, 0xf2, 0x6b, 0xdb, 0x69, 0x24, 0xa2, 0x6d, 0xff, 0x00, 0x00, 0x00, 0x40, 0xde, 0xee, 0x9b, 0x6d, 0xb7, 0x7b, 0xf7, 0xff, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x6f, 0xbb, 0xdb, 0x79, 0xdf, 0x7e, 0xde, 0xfd, 0xb2, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xff, 0x00, 0x00, 0x01, 0x06, 0x3b, 0x36, 0xed, 0xb6, 0xf7, 0x9e, 0xdf, 0xbb, 0xf7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x0a, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x74, 0xfe, 0xf7, 0xdf, 0xbb, 0xdb, 0xf7, 0xe5, 0x9d, 0xa4, 0x96, 0xdb, 0x59, 0x96, 0x7e, 0x00, 0x00, 0x44, 0x00, 0xfd, 0xd9, 0xb6, 0xdb, 0x5e, 0xff, 0xfd, 0xef, 0xbf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x24, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x92, 0x74, 0x7f, 0xce, 0xdd, 0xe6, 0xec, 0xef, 0x7d, 0xf6, 0x65, 0xbb, 0x69, 0x24, 0xce, 0x7b, 0xff, 0x00, 0x20, 0x00, 0x12, 0x7d, 0xef, 0x5b, 0x6d, 0xdb, 0xed, 0xff, 0x7f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x90, 0x20, 0x01, 0x00, 0x00, 0x00, + 0x16, 0x84, 0xeb, 0x7b, 0xde, 0x7e, 0xdf, 0xbd, 0xdf, 0x73, 0x6c, 0xcb, 0x6f, 0x6d, 0xb3, 0xcd, 0xfe, 0x00, 0x00, 0x00, 0x02, 0x7b, 0x36, 0x6d, 0xb6, 0xff, 0x7f, 0x77, 0xfd, 0xdf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x59, 0x09, 0x0c, 0x01, 0x00, 0x00, + 0x5b, 0x01, 0xee, 0xdd, 0xb7, 0xdb, 0x73, 0xf7, 0xb7, 0xed, 0x9b, 0x6c, 0xc9, 0x9b, 0x36, 0x76, 0x7e, 0x00, 0x41, 0x10, 0x89, 0xf6, 0xd9, 0xb6, 0xdb, 0xb7, 0xdb, 0xff, 0xef, 0xf7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xd9, 0x20, 0x42, 0x60, 0x04, 0x00, 0x00, + 0xc9, 0x68, 0xfb, 0xd7, 0x77, 0xbd, 0xde, 0x76, 0xfd, 0xec, 0xe6, 0x66, 0xb6, 0xd2, 0xcd, 0xb7, 0xfe, 0x00, 0x00, 0x02, 0x04, 0x76, 0xef, 0xb6, 0xdb, 0x7d, 0xff, 0xbb, 0x7e, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0xd1, 0x26, 0x52, 0xa0, 0x84, 0x22, 0x20, + 0x24, 0x0a, 0xdb, 0x76, 0xdc, 0xef, 0xb7, 0xde, 0xdf, 0x76, 0xdb, 0x9b, 0x36, 0x76, 0xdb, 0xb9, 0xfe, 0x00, 0x00, 0x20, 0x24, 0xfb, 0x36, 0xdb, 0x6f, 0x6f, 0x77, 0xff, 0xff, 0xdf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xc9, 0x98, 0x88, 0x31, 0x18, 0x90, + 0x92, 0x93, 0xf6, 0xdb, 0xbf, 0xfb, 0xbd, 0xdb, 0xf3, 0xf3, 0x59, 0xb9, 0xc9, 0x9d, 0x36, 0xcf, 0xfe, 0x04, 0x00, 0x00, 0x09, 0xed, 0xd9, 0xdb, 0x6d, 0xef, 0xde, 0xdf, 0xbb, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x60, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xa4, 0xd9, 0x86, 0x4b, 0x19, 0xd6, 0xc0, + 0x48, 0x91, 0xbd, 0xbb, 0x67, 0x3d, 0xed, 0x7f, 0x7e, 0xed, 0xce, 0x66, 0x6e, 0xcd, 0xed, 0x76, 0xfc, 0x10, 0x09, 0x09, 0x13, 0xed, 0xde, 0x6d, 0xbd, 0xbb, 0xff, 0xfb, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xb2, 0x42, 0x26, 0x50, 0xce, 0x46, 0x20, + 0x24, 0x49, 0xed, 0xa6, 0xfd, 0xef, 0x6f, 0x6d, 0xdf, 0xed, 0xb6, 0xde, 0xb6, 0x73, 0x3b, 0x77, 0xfe, 0x00, 0x00, 0x00, 0x44, 0xf6, 0x67, 0xb6, 0xe7, 0xfe, 0xed, 0xfe, 0xf7, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb3, 0x08, 0x99, 0x14, 0xb0, 0x49, 0x20, + 0x93, 0x25, 0xee, 0xed, 0x9f, 0xfb, 0x73, 0xee, 0xf7, 0xf6, 0xf7, 0xb3, 0x99, 0xbe, 0xdb, 0x9d, 0xfc, 0x00, 0x00, 0x44, 0x13, 0xd7, 0xb9, 0xb6, 0xde, 0xdf, 0xbf, 0xdf, 0xbf, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x80, 0x00, 0x00, 0x00, 0x02, 0x43, 0x13, 0xa4, 0xa4, 0xd1, 0x64, 0x87, 0x31, 0x90, + 0x48, 0x93, 0xf3, 0x6d, 0xe6, 0x9f, 0x9e, 0xfb, 0xbd, 0xdb, 0x59, 0xbb, 0x6f, 0xab, 0xd6, 0xf7, 0xfc, 0x40, 0x24, 0x10, 0x27, 0xd9, 0xbe, 0xdb, 0x7b, 0xf7, 0xf7, 0xfb, 0xee, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x60, 0x00, 0x00, 0x00, 0x04, 0xd8, 0xd8, 0xec, 0x93, 0x14, 0x23, 0x31, 0x26, 0x40, + 0x64, 0x93, 0xdd, 0x9b, 0x7b, 0xf6, 0xff, 0x3f, 0xef, 0xed, 0xde, 0x6d, 0xea, 0xec, 0x76, 0xdb, 0xfc, 0x00, 0x00, 0x00, 0x89, 0xbe, 0xcd, 0xdb, 0xbb, 0x7d, 0xdf, 0x7f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xc1, 0x02, 0x44, 0x00, 0x2d, 0x92, 0x25, 0xa2, 0x48, 0x4b, 0x98, 0x4c, 0x89, 0x20, + 0x12, 0x41, 0xfd, 0xb3, 0x5e, 0xfd, 0xe9, 0xe6, 0xfb, 0xed, 0xb7, 0xdd, 0x3b, 0x77, 0xbb, 0x7b, 0xfc, 0x00, 0x08, 0x42, 0x37, 0xa6, 0xf7, 0x6e, 0xef, 0xdf, 0x7f, 0xf7, 0x7f, 0xfc, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xa7, 0x79, 0xd9, 0x69, 0xa8, 0xc4, 0x85, 0xa6, 0x66, 0x62, 0x44, 0xc2, 0xd9, 0x20, + 0x92, 0x4d, 0xce, 0x6d, 0xd7, 0xbf, 0x6f, 0xfe, 0xdf, 0xf6, 0xec, 0xd7, 0xdd, 0x9b, 0xad, 0xcf, 0xfc, 0x10, 0x41, 0x00, 0x17, 0xfb, 0x36, 0xed, 0xfd, 0xf7, 0xf6, 0xff, 0xfb, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xac, 0xdf, 0x3f, 0xcc, 0x32, 0x4c, 0x93, 0x24, 0x92, 0x14, 0x52, 0x32, 0x44, 0x90, + 0xa4, 0x93, 0xfb, 0x6d, 0xb9, 0xe7, 0xde, 0x9b, 0xf7, 0xdb, 0x3b, 0x76, 0xd6, 0xec, 0xed, 0xfd, 0xf8, 0x00, 0x00, 0x08, 0xce, 0x5b, 0xcd, 0xb7, 0x37, 0x7f, 0xdf, 0xee, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xe1, 0x80, 0x20, 0x13, 0x46, 0x62, 0x59, 0xc9, 0x19, 0x91, 0x93, 0x0d, 0x24, 0x90, + 0x69, 0x23, 0xbb, 0x36, 0xef, 0x7d, 0xb6, 0xff, 0x7d, 0xdb, 0xdb, 0x6c, 0xf6, 0xf7, 0x77, 0x37, 0xf9, 0x02, 0x08, 0x20, 0x2b, 0xd6, 0x7b, 0x76, 0xfd, 0xdb, 0x7f, 0xff, 0xff, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc8, 0x2c, 0xc2, 0x49, 0x71, 0x99, 0x05, 0xb2, 0x44, 0x4a, 0x2c, 0xc9, 0x32, 0x60, + 0x09, 0x49, 0xec, 0xdb, 0x7f, 0xdd, 0xfb, 0xe7, 0xdf, 0xec, 0xdd, 0xbb, 0x3b, 0x3d, 0x9d, 0xf7, 0xfc, 0x00, 0x40, 0x81, 0x2f, 0x77, 0x6e, 0xdb, 0xdd, 0xff, 0xfb, 0xbd, 0xff, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x66, 0x49, 0x19, 0x24, 0x8c, 0x91, 0x65, 0xa4, 0xc4, 0xc8, 0xa1, 0x32, 0x89, 0x00, + 0xd6, 0x53, 0xef, 0x6d, 0xc0, 0xf6, 0xdf, 0x7c, 0xf7, 0xbf, 0xb6, 0xdb, 0xcf, 0xed, 0xfb, 0xdd, 0xf8, 0x20, 0x02, 0x04, 0x9d, 0x99, 0xb6, 0xdb, 0x77, 0x6f, 0xef, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xc1, 0x52, 0x44, 0xa4, 0x82, 0x46, 0x11, 0xa5, 0x32, 0x25, 0x96, 0x48, 0x89, 0x30, + 0x31, 0x91, 0xfb, 0x6d, 0x92, 0x3e, 0xdd, 0xdf, 0xbf, 0xd3, 0xb6, 0xdc, 0xf4, 0xdb, 0x6e, 0x77, 0xf8, 0x82, 0x20, 0x00, 0x9e, 0xde, 0xdb, 0x77, 0xff, 0xfd, 0xbf, 0x7f, 0xfd, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd9, 0x12, 0x44, 0x92, 0x69, 0x20, 0xcd, 0xa4, 0x26, 0x24, 0x56, 0xc9, 0x32, 0x40, + 0x08, 0x25, 0xdb, 0xb6, 0x13, 0x3b, 0x76, 0xe7, 0xef, 0x7e, 0xfd, 0xe7, 0xbf, 0xde, 0xdb, 0xef, 0xf8, 0x00, 0x84, 0x22, 0x7b, 0x66, 0xdb, 0xdd, 0xbb, 0xbf, 0xff, 0xf7, 0xef, 0xb7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x62, 0x49, 0x32, 0x49, 0x09, 0x29, 0x25, 0xb2, 0xc9, 0x92, 0x48, 0x24, 0x44, 0x80, + 0xcb, 0x25, 0xec, 0xdc, 0x48, 0xcf, 0xf7, 0xbd, 0xff, 0xb6, 0xcf, 0x3e, 0xcb, 0x76, 0xf7, 0xbb, 0xf9, 0x08, 0x00, 0x09, 0x3d, 0xbb, 0x6d, 0xbd, 0xef, 0xfb, 0x7d, 0xff, 0xba, 0xdf, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xc4, 0x8c, 0x89, 0x24, 0x44, 0x8b, 0x27, 0x92, 0x10, 0x4a, 0xa3, 0x25, 0x11, 0x20, + 0x64, 0x93, 0xef, 0x69, 0x04, 0x9d, 0x9d, 0xff, 0x37, 0xb7, 0xbb, 0xed, 0xfb, 0x6d, 0xbd, 0xb7, 0xf8, 0x02, 0x10, 0x81, 0x76, 0xcd, 0xb6, 0xef, 0x7e, 0xff, 0xf7, 0xfb, 0x6e, 0x5f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xd1, 0x22, 0x49, 0x12, 0x54, 0x90, 0x91, 0xc9, 0xb6, 0x48, 0xa8, 0x91, 0x26, 0x50, + 0x10, 0xc8, 0xf7, 0x78, 0x03, 0x2f, 0x7e, 0xd3, 0xfe, 0xdb, 0x7a, 0xed, 0xbd, 0xef, 0xce, 0xf7, 0xf8, 0x40, 0x40, 0x04, 0xfb, 0x76, 0xde, 0xfb, 0xff, 0xef, 0xff, 0xb6, 0xd7, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc9, 0x23, 0x24, 0x49, 0x12, 0x44, 0x93, 0x64, 0x42, 0x65, 0x0a, 0x48, 0x98, 0x90, + 0x96, 0x25, 0xdd, 0x98, 0x09, 0x6f, 0xe7, 0xbe, 0xdb, 0xfb, 0xdf, 0xbf, 0xa7, 0xba, 0xfb, 0xdf, 0xf9, 0x08, 0x02, 0x42, 0xed, 0xb6, 0xdb, 0x6e, 0xed, 0xff, 0xfe, 0xdc, 0xd9, 0xbf, 0xbf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xa4, 0x98, 0x92, 0x49, 0x22, 0x49, 0x25, 0xb2, 0x59, 0x11, 0x52, 0x4a, 0x42, 0x20, + 0x61, 0x25, 0xfb, 0xf0, 0x44, 0x96, 0xfd, 0xef, 0xff, 0x2e, 0xed, 0xb6, 0xfa, 0xde, 0xed, 0x6f, 0xf8, 0x01, 0x08, 0x12, 0x7c, 0xdb, 0x77, 0x7f, 0xbf, 0xdd, 0xb6, 0xcf, 0x6e, 0x99, 0xcf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe4, 0x46, 0x49, 0x24, 0x99, 0x26, 0x4d, 0x92, 0x9c, 0x92, 0x44, 0x92, 0x49, 0x40, + 0x0c, 0xc8, 0xee, 0x72, 0x10, 0x97, 0x9e, 0x7b, 0x6f, 0xfe, 0xee, 0xf7, 0xbf, 0x77, 0x6f, 0xbb, 0xf8, 0x24, 0x00, 0x05, 0xf3, 0x6d, 0xdd, 0xdb, 0xff, 0x7f, 0xf7, 0x73, 0x6e, 0xef, 0x79, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x49, 0x21, 0x24, 0x92, 0x44, 0x91, 0x91, 0xc9, 0xa4, 0x8a, 0x24, 0x91, 0x24, 0x40, + 0xb2, 0x12, 0xf7, 0xb0, 0x13, 0x37, 0xf3, 0xdf, 0xfe, 0xd7, 0xbb, 0xdd, 0xb7, 0xed, 0xdb, 0xff, 0xf8, 0x80, 0x20, 0x89, 0xdf, 0x6d, 0xbb, 0x7e, 0xf7, 0xfe, 0xd9, 0xdd, 0xb3, 0x7b, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xc9, 0x2c, 0x92, 0x49, 0x26, 0x49, 0x25, 0x69, 0x32, 0x61, 0x99, 0x25, 0x24, 0x90, + 0x22, 0x65, 0xf6, 0xf1, 0x08, 0x46, 0x7f, 0xf5, 0xb7, 0xbd, 0xff, 0x7b, 0xdc, 0xef, 0xbd, 0x67, 0xf8, 0x01, 0x02, 0x09, 0xd9, 0xb6, 0xee, 0xef, 0xdf, 0xf6, 0xde, 0xdd, 0xbd, 0xdb, 0x67, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xe4, 0xc2, 0x49, 0x24, 0x91, 0x26, 0x49, 0xa4, 0xc9, 0x14, 0x42, 0x48, 0x92, 0x20, + 0xcc, 0x8c, 0xfd, 0xb0, 0x64, 0xdb, 0xdc, 0xdf, 0xff, 0x6f, 0x56, 0xee, 0xfb, 0xbb, 0xb7, 0xdf, 0xf8, 0x10, 0x10, 0x27, 0xee, 0xde, 0xdf, 0xbb, 0x7e, 0xdb, 0x66, 0xe6, 0xcd, 0xb6, 0xdf, 0xcf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x81, 0x92, 0x19, 0x24, 0x92, 0x52, 0x23, 0x13, 0xb3, 0x64, 0x92, 0x48, 0x92, 0x49, 0x80, + 0x11, 0x92, 0xef, 0x74, 0x04, 0x37, 0xd7, 0xdb, 0x6d, 0xf7, 0xf7, 0xbd, 0xbf, 0xfe, 0xfb, 0xff, 0xf2, 0x42, 0x00, 0x23, 0x36, 0xdb, 0xd9, 0xff, 0xfb, 0xb9, 0xbb, 0x3b, 0x76, 0xee, 0xfb, 0xfb, 0x80, 0x00, 0x00, 0x00, 0x00, 0x27, 0xc9, 0x24, 0x92, 0x49, 0x12, 0x99, 0x94, 0x93, 0x24, 0x89, 0x29, 0x24, 0x48, 0x40, + 0xa4, 0x52, 0xfb, 0x71, 0x13, 0x2d, 0xbf, 0x7f, 0xff, 0xbc, 0xed, 0xf7, 0xd6, 0x6d, 0xde, 0x6f, 0xf8, 0x00, 0x42, 0x1b, 0xd9, 0xb6, 0x7f, 0xff, 0xee, 0xe6, 0xdb, 0xdb, 0x76, 0xdb, 0x6c, 0xf7, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x49, 0x64, 0x91, 0x24, 0x95, 0x84, 0xc5, 0xa4, 0xc9, 0x25, 0x26, 0x49, 0x26, 0x40, + 0xa6, 0x48, 0xf7, 0xd8, 0x49, 0x4f, 0xb9, 0xe6, 0xdb, 0xef, 0xbf, 0x7e, 0xfb, 0xff, 0x77, 0xf7, 0xf8, 0x10, 0x00, 0xc6, 0xdf, 0x6d, 0xef, 0x7b, 0x76, 0xde, 0xdc, 0xdd, 0x9b, 0x77, 0x6f, 0xbd, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x44, 0x12, 0x4c, 0x92, 0x44, 0x66, 0x93, 0x2d, 0x92, 0x64, 0x90, 0x92, 0x21, 0x30, + 0x19, 0x24, 0xf6, 0xf8, 0x49, 0x7e, 0xef, 0x3f, 0xfe, 0xfb, 0xf7, 0xb6, 0xef, 0x9b, 0xfd, 0xbf, 0xf1, 0x04, 0x88, 0x27, 0xb3, 0x6f, 0xbd, 0xff, 0x5b, 0x73, 0xb7, 0x66, 0xed, 0xb5, 0xb3, 0xee, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x92, 0x92, 0x42, 0x49, 0x29, 0x92, 0xc9, 0xe6, 0x44, 0x92, 0x49, 0x24, 0x99, 0x00, + 0xc1, 0x32, 0x7e, 0xf9, 0x12, 0x1e, 0xef, 0xf9, 0xb7, 0xb6, 0xdd, 0xef, 0xbd, 0xfe, 0xdf, 0xef, 0xf8, 0x40, 0x01, 0x2f, 0x6d, 0xb6, 0xf7, 0xe6, 0xed, 0x9d, 0xb7, 0x7b, 0x6d, 0xbd, 0xbd, 0x7b, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x83, 0x92, 0x49, 0x22, 0x24, 0x89, 0x92, 0x65, 0x93, 0x29, 0x12, 0x49, 0x24, 0xc4, 0xc0, + 0x94, 0x89, 0x7b, 0x98, 0x42, 0xfb, 0xb9, 0xcf, 0xfd, 0xff, 0xff, 0x7b, 0xf7, 0x6f, 0xed, 0xbf, 0xf8, 0x02, 0x10, 0x4d, 0xdd, 0x9f, 0xdf, 0xbb, 0xb6, 0xed, 0xd9, 0x9b, 0x76, 0xce, 0xcd, 0xdf, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x26, 0x89, 0x24, 0x99, 0x90, 0x92, 0x46, 0xc5, 0xb5, 0x22, 0x49, 0x24, 0x92, 0x12, 0x20, + 0x32, 0x49, 0x7b, 0xfc, 0x89, 0x7f, 0x7e, 0x7e, 0xdb, 0x6d, 0xb3, 0xde, 0xde, 0xfb, 0x7e, 0xf7, 0xf1, 0x08, 0x02, 0x5e, 0x76, 0xfb, 0x7f, 0xbb, 0x76, 0xee, 0x6e, 0xed, 0x9b, 0x73, 0x7b, 0xb6, 0xfc, 0x00, 0x00, 0x00, 0x01, 0x06, 0xa4, 0x92, 0x44, 0x4a, 0x48, 0xc9, 0x69, 0xad, 0x14, 0x89, 0x24, 0x92, 0x49, 0x20, + 0x49, 0x52, 0x7e, 0x66, 0x33, 0x77, 0x67, 0xf7, 0xef, 0xff, 0xbe, 0xf7, 0xbb, 0xbf, 0xdb, 0xdf, 0xf8, 0x00, 0x49, 0x3b, 0x9b, 0x6f, 0xfc, 0xcd, 0x9b, 0x33, 0xb6, 0xdb, 0xed, 0xbd, 0xb6, 0xff, 0xde, 0x00, 0x00, 0x00, 0x00, 0x13, 0x92, 0x49, 0x24, 0x22, 0x4a, 0x63, 0x2b, 0x2a, 0x44, 0xa4, 0x92, 0x49, 0x24, 0x90, + 0x49, 0x12, 0x77, 0xff, 0x26, 0xfd, 0xfd, 0xbd, 0xbd, 0xb6, 0xef, 0xbd, 0xef, 0xed, 0xff, 0xff, 0xf8, 0x20, 0x01, 0x3b, 0xb7, 0x7f, 0xf7, 0x76, 0xed, 0xdd, 0xb6, 0x72, 0x6d, 0xad, 0xb6, 0xcd, 0x76, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x09, 0x24, 0x93, 0x24, 0x92, 0x32, 0xe1, 0xb2, 0x99, 0x24, 0x92, 0x49, 0x24, 0x90, + 0x92, 0x64, 0xbd, 0xbb, 0xcf, 0xcf, 0xbd, 0xef, 0xf7, 0xff, 0xfb, 0xef, 0x7d, 0xbe, 0xff, 0xff, 0xb0, 0x02, 0x24, 0xf6, 0xe7, 0xff, 0xb7, 0x76, 0xdd, 0xdd, 0xbb, 0xaf, 0xb6, 0xee, 0xdb, 0x7d, 0xf7, 0x00, 0x00, 0x00, 0x02, 0x46, 0x64, 0x92, 0x48, 0x91, 0x24, 0x92, 0x34, 0xb6, 0x22, 0x49, 0x24, 0x92, 0x49, 0x20, + 0x94, 0x89, 0x3f, 0xb7, 0xff, 0xfb, 0xb7, 0x6b, 0x76, 0xdb, 0x5e, 0xfb, 0xdf, 0xb7, 0xff, 0xff, 0xf8, 0x00, 0x08, 0xf6, 0x7d, 0xfe, 0xd9, 0x9b, 0x56, 0x66, 0xcd, 0xb9, 0xb6, 0xdb, 0x6d, 0xdb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x17, 0x04, 0x92, 0x48, 0x92, 0x49, 0x99, 0xb6, 0xcc, 0x68, 0x92, 0x49, 0x24, 0x92, 0x40, + 0x44, 0x92, 0x7b, 0xf6, 0xfd, 0xbd, 0xf7, 0x7b, 0xdf, 0xef, 0xf7, 0xbe, 0xf6, 0xff, 0xff, 0xff, 0xf8, 0x89, 0x13, 0xdb, 0x9f, 0xfb, 0x6e, 0xed, 0xf7, 0xbb, 0x75, 0xce, 0xdb, 0x77, 0x6d, 0xb7, 0xef, 0x80, 0x00, 0x00, 0x00, 0x8d, 0x32, 0x49, 0x26, 0x24, 0x92, 0x64, 0x93, 0x39, 0x24, 0x92, 0x49, 0x24, 0x92, 0x40, + 0x52, 0x44, 0x9e, 0x7e, 0xe7, 0x67, 0x6d, 0xde, 0xed, 0xbd, 0xbd, 0xef, 0xbf, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x45, 0xdb, 0xff, 0xed, 0xb6, 0xed, 0x99, 0xb9, 0xb6, 0x76, 0xdb, 0x65, 0xb7, 0x7d, 0xdb, 0x80, 0x00, 0x00, 0x02, 0x2e, 0x42, 0x49, 0x21, 0x24, 0x92, 0x4c, 0xd9, 0xa4, 0x92, 0x49, 0x24, 0x92, 0x49, 0x20, + 0x29, 0x25, 0x3f, 0xcf, 0xbf, 0x7f, 0xdf, 0xf7, 0xbf, 0xf7, 0xef, 0x7b, 0xed, 0xff, 0x6d, 0xb7, 0xb8, 0x00, 0x4d, 0xec, 0xff, 0xed, 0xb7, 0x36, 0x6e, 0xce, 0xcf, 0xb5, 0xad, 0xbd, 0xb6, 0xdf, 0x7d, 0xc0, 0x00, 0x00, 0x00, 0x1a, 0x49, 0x24, 0x98, 0x92, 0x49, 0x23, 0x34, 0xf4, 0xc9, 0x24, 0x92, 0x49, 0x24, 0x90, + 0x89, 0x91, 0x3b, 0xf9, 0xfb, 0xdb, 0x76, 0xbd, 0xe6, 0xde, 0x7b, 0xde, 0xff, 0xff, 0xbf, 0xfd, 0xf8, 0x22, 0x23, 0xb7, 0xff, 0x36, 0xd9, 0xdb, 0xee, 0xf6, 0xd9, 0xbb, 0x6d, 0xb6, 0xdb, 0xb7, 0xe7, 0xc0, 0x00, 0x00, 0x04, 0x5e, 0x24, 0x92, 0x46, 0x49, 0x24, 0xb2, 0x4c, 0x99, 0x24, 0x92, 0x49, 0x24, 0x92, 0x40, + 0x56, 0x72, 0x4e, 0xff, 0x6e, 0xfe, 0xfb, 0xed, 0x7f, 0xfb, 0xde, 0xf7, 0x77, 0xff, 0xf3, 0x6f, 0xf1, 0x00, 0x9f, 0xb7, 0xff, 0xdb, 0x6e, 0xdb, 0x33, 0x37, 0x36, 0xce, 0x76, 0xdb, 0x6d, 0xf9, 0xbe, 0xe0, 0x00, 0x00, 0x01, 0x19, 0x92, 0x49, 0x21, 0x24, 0x92, 0x1a, 0xcb, 0xab, 0x24, 0x92, 0x49, 0x24, 0xd2, 0x40, + 0x50, 0x4a, 0x4f, 0x67, 0xfe, 0xe7, 0xaf, 0x7f, 0x9b, 0x6f, 0xf7, 0xbd, 0xdf, 0xff, 0xff, 0xfb, 0xbc, 0x04, 0x4f, 0x7f, 0xf9, 0xdb, 0x6e, 0xed, 0xbd, 0xcd, 0xee, 0xd9, 0x9a, 0xdb, 0x6d, 0x4e, 0xfb, 0xe0, 0x00, 0x00, 0x00, 0x3c, 0x12, 0x49, 0x29, 0x24, 0x92, 0x49, 0x38, 0xaa, 0x49, 0x2c, 0x92, 0x5b, 0x49, 0x20, + 0x8b, 0x19, 0x2f, 0xfd, 0xb7, 0xbd, 0xfd, 0xdb, 0xfb, 0xfd, 0xbd, 0xef, 0xbf, 0x6d, 0xff, 0xff, 0xf8, 0x21, 0x2f, 0xdf, 0xee, 0x6d, 0xb3, 0x36, 0xcd, 0xb9, 0x6b, 0x6f, 0xee, 0xed, 0xbb, 0x7f, 0xdd, 0xf0, 0x00, 0x00, 0x08, 0x9c, 0xc9, 0x22, 0x48, 0xc9, 0x24, 0xcd, 0x66, 0xb4, 0x92, 0x61, 0x92, 0x52, 0x24, 0x90, + 0x29, 0x94, 0x96, 0xdf, 0x7d, 0xfd, 0x9f, 0x7e, 0xce, 0xdf, 0xef, 0x7b, 0xfd, 0xf7, 0xff, 0xff, 0x7c, 0x08, 0xbe, 0xff, 0xdb, 0xb6, 0xdd, 0xdb, 0x73, 0x37, 0x35, 0x66, 0x67, 0x36, 0xee, 0xd9, 0xf7, 0x70, 0x00, 0x00, 0x02, 0x3b, 0x24, 0x24, 0x92, 0x12, 0x49, 0x24, 0x4d, 0x24, 0x94, 0xcc, 0x6d, 0xa4, 0x92, 0x40, + 0x64, 0x46, 0x57, 0xf7, 0xdf, 0x57, 0xf3, 0xe7, 0xbd, 0xf3, 0x7b, 0xdf, 0xfd, 0x9e, 0xfe, 0xff, 0xfc, 0x02, 0x7f, 0xff, 0x76, 0xdb, 0x6d, 0xdb, 0x5e, 0xdc, 0xdd, 0xb9, 0xb9, 0xdb, 0xb6, 0xdf, 0x7e, 0xf0, 0x00, 0x00, 0x00, 0x7f, 0xf6, 0x91, 0x24, 0x92, 0x49, 0x26, 0x59, 0x69, 0x25, 0x93, 0x24, 0x89, 0x12, 0x40, + 0x46, 0x5a, 0x4f, 0x7d, 0xf7, 0xfe, 0x7e, 0xfd, 0xf7, 0x7f, 0xde, 0xfe, 0xf2, 0xfb, 0xfe, 0x9f, 0xf8, 0x41, 0x7f, 0xfd, 0xad, 0xdb, 0x6e, 0x6c, 0xd6, 0xd3, 0xd3, 0xaf, 0xae, 0xdb, 0x77, 0x67, 0xdb, 0xb0, 0x00, 0x00, 0x11, 0x7f, 0xfc, 0x92, 0x49, 0x24, 0x92, 0x93, 0x13, 0x12, 0x4a, 0x32, 0x92, 0x49, 0x49, 0x20, + 0x99, 0x23, 0x23, 0xdf, 0x7b, 0xbb, 0xdf, 0x9f, 0x5b, 0xdd, 0xf7, 0xbb, 0xfe, 0xef, 0xfb, 0xf7, 0xfe, 0x11, 0xff, 0xfd, 0xbb, 0x6d, 0xb3, 0xb7, 0xb5, 0xbe, 0x76, 0x6c, 0xdb, 0x36, 0xd9, 0xf9, 0xff, 0xf0, 0x00, 0x00, 0x04, 0x77, 0xbf, 0x26, 0x49, 0x24, 0x92, 0x49, 0x86, 0xc4, 0x9a, 0x48, 0x92, 0x44, 0x49, 0x20, + 0xa1, 0x25, 0x97, 0xb7, 0xde, 0xef, 0xed, 0xf7, 0xde, 0xf7, 0x7d, 0xf7, 0xe9, 0xbd, 0xfb, 0x79, 0xfe, 0x06, 0xff, 0xe6, 0xda, 0x6d, 0xbd, 0xb6, 0xad, 0xab, 0xad, 0xdb, 0x73, 0xed, 0xb6, 0x9e, 0x6e, 0xf8, 0x00, 0x00, 0x20, 0xfd, 0xff, 0x61, 0x24, 0x92, 0x49, 0x24, 0xe8, 0x49, 0x21, 0x09, 0x24, 0x92, 0x24, 0x80, + 0x24, 0x99, 0xd3, 0xfd, 0xf7, 0xfd, 0xbb, 0x7d, 0xf7, 0xbf, 0xdd, 0xf5, 0xef, 0x77, 0xed, 0xaf, 0xfe, 0x2b, 0xff, 0xbb, 0x4f, 0xb6, 0xcd, 0xda, 0xcc, 0xeb, 0xbb, 0x67, 0x4c, 0xdb, 0xb6, 0xef, 0xfb, 0xb8, 0x00, 0x00, 0x09, 0xee, 0x67, 0xd9, 0x24, 0xc9, 0x24, 0x92, 0x33, 0x22, 0x4c, 0xa4, 0x49, 0x22, 0x90, 0x90, + 0x24, 0x92, 0x63, 0xdf, 0x7d, 0x9d, 0xdf, 0xdf, 0x7d, 0xed, 0xf7, 0xdf, 0xf3, 0xdf, 0xed, 0xbe, 0xff, 0x2f, 0xfe, 0xdb, 0x75, 0xb6, 0xf6, 0x6f, 0x73, 0x5c, 0xd6, 0xbc, 0xfd, 0x9a, 0xdb, 0x6b, 0xbf, 0xf0, 0x00, 0x00, 0x43, 0xfb, 0xfd, 0xf4, 0x99, 0x24, 0x96, 0x49, 0x04, 0x98, 0x90, 0x92, 0x49, 0x28, 0x92, 0x40, + 0x4a, 0x4e, 0xac, 0xf3, 0xdf, 0xf7, 0x77, 0xf7, 0xdf, 0x7d, 0xbf, 0xdb, 0xd9, 0xff, 0xdb, 0x76, 0xff, 0xff, 0xfb, 0x6d, 0xb6, 0xdb, 0x37, 0xb1, 0xb7, 0x76, 0xdd, 0xb3, 0x93, 0x6e, 0xdb, 0x7a, 0xef, 0x78, 0x00, 0x00, 0x13, 0xff, 0xbd, 0xb4, 0x93, 0x26, 0x51, 0x24, 0xc8, 0x84, 0x92, 0x49, 0x24, 0x48, 0x44, 0x40, + 0x49, 0x23, 0xb3, 0xbe, 0xf6, 0xff, 0xfe, 0xfd, 0xf7, 0xdf, 0xef, 0xff, 0xc4, 0xef, 0xd3, 0xdb, 0xbf, 0xff, 0xf6, 0xed, 0xbb, 0x6d, 0xd9, 0x9e, 0xcc, 0xcb, 0x6b, 0x6e, 0xde, 0xed, 0xb6, 0xde, 0xfd, 0xf8, 0x00, 0x00, 0x85, 0xdd, 0xef, 0xba, 0x64, 0x99, 0x49, 0x24, 0x2a, 0x64, 0x49, 0x24, 0x91, 0x13, 0x11, 0x20, + 0x24, 0x90, 0x7c, 0xef, 0xbf, 0xbb, 0xbf, 0xbf, 0x7d, 0xf3, 0x7f, 0xaf, 0xc6, 0x7b, 0xf6, 0xfb, 0xef, 0xff, 0xdd, 0xb6, 0xcd, 0xb6, 0xde, 0xee, 0x7b, 0xbb, 0x6b, 0x6a, 0xe6, 0xb7, 0x6d, 0xb7, 0xb7, 0xf8, 0x00, 0x00, 0x07, 0xf7, 0x7b, 0x6d, 0x0c, 0xc1, 0x2a, 0x49, 0x22, 0x13, 0x24, 0x92, 0x44, 0x90, 0x92, 0x20, + 0x22, 0x4c, 0x4c, 0xfb, 0xed, 0xee, 0xfb, 0xf7, 0xdf, 0x7f, 0xdf, 0x6f, 0x93, 0xdf, 0xaf, 0xad, 0x7f, 0xff, 0x6b, 0x76, 0xf6, 0xdb, 0x66, 0xe3, 0xb3, 0x6d, 0xbc, 0xdb, 0x39, 0x9b, 0x7b, 0xed, 0xff, 0xb8, 0x00, 0x01, 0x2f, 0xbf, 0xde, 0xfc, 0xd2, 0x34, 0xa4, 0x92, 0x91, 0x90, 0x92, 0x49, 0x2c, 0xcc, 0x48, 0x90, + 0x18, 0x4b, 0x17, 0x7e, 0xff, 0x7f, 0xef, 0xde, 0xf7, 0xdd, 0xf7, 0x97, 0x91, 0x7f, 0xed, 0xfd, 0x9f, 0xfd, 0xbb, 0x5b, 0x36, 0xdb, 0x7b, 0x3d, 0xad, 0xdd, 0xa7, 0x35, 0xdb, 0x6d, 0xb6, 0xdd, 0xdd, 0xf8, 0x00, 0x00, 0x0f, 0xed, 0xf7, 0xb6, 0x12, 0x8c, 0x94, 0x92, 0x4c, 0x4c, 0x92, 0x41, 0x3b, 0xeb, 0x6c, 0x90, + 0xc3, 0x22, 0x93, 0x7f, 0xb7, 0xdb, 0xff, 0xff, 0xfd, 0xf7, 0x3f, 0xb7, 0xcc, 0xef, 0xbb, 0x7b, 0xf3, 0xf6, 0xdd, 0xdb, 0xdb, 0x6d, 0x9b, 0x6d, 0x6d, 0x33, 0x79, 0xcd, 0xb6, 0xed, 0xb7, 0x77, 0x77, 0x78, 0x00, 0x02, 0x5f, 0xff, 0x7d, 0xdd, 0x29, 0xa2, 0x53, 0x24, 0x42, 0x42, 0x49, 0x14, 0x9b, 0x3b, 0xb4, 0x40, + 0x09, 0xa4, 0xc8, 0xdb, 0xfd, 0xfe, 0xff, 0xff, 0x6f, 0x7f, 0xef, 0x6f, 0x42, 0xbf, 0xb1, 0x3b, 0x7f, 0xf6, 0xd6, 0xec, 0xdb, 0x6d, 0xe6, 0xdb, 0x77, 0xee, 0x5e, 0xda, 0xa6, 0xb6, 0xdd, 0xbf, 0xff, 0xd8, 0x00, 0x00, 0x1f, 0x77, 0xdf, 0x7d, 0x24, 0x33, 0x48, 0x65, 0x32, 0x32, 0x49, 0x24, 0x08, 0xb6, 0xb1, 0x20, + 0x24, 0x9d, 0x2a, 0xbe, 0xdf, 0x77, 0xfe, 0xfb, 0xfb, 0xdb, 0xff, 0x1f, 0x33, 0x37, 0xcc, 0x9f, 0x6d, 0xfb, 0x76, 0xb7, 0x6d, 0xb6, 0x7c, 0xd6, 0xd6, 0x6d, 0xc6, 0xb6, 0xed, 0xb6, 0xfd, 0xed, 0xbb, 0xf8, 0x00, 0x84, 0xbf, 0xdd, 0xf7, 0xee, 0x96, 0x4c, 0x26, 0x49, 0x24, 0x8c, 0x92, 0x23, 0x4c, 0x94, 0x84, 0x90, + 0x92, 0x47, 0x6d, 0xaf, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xd7, 0x89, 0xff, 0x72, 0x67, 0xef, 0xed, 0xbb, 0xb7, 0x6d, 0xb7, 0x97, 0x66, 0x99, 0x99, 0xb9, 0xb5, 0x5b, 0x6f, 0x37, 0x7f, 0xef, 0x78, 0x00, 0x00, 0x7e, 0xff, 0x7b, 0x6e, 0x49, 0x49, 0x91, 0x92, 0x49, 0x21, 0x24, 0xb0, 0x4c, 0x11, 0xc8, 0x90, + 0x92, 0x52, 0xdd, 0x6b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xb6, 0xcc, 0x6f, 0xb0, 0x6d, 0xbb, 0x7c, 0xcd, 0xd9, 0xb6, 0xd9, 0xd7, 0x3b, 0xaf, 0xe6, 0xef, 0x5b, 0x5b, 0x69, 0xed, 0x9b, 0x7f, 0xd8, 0x00, 0x10, 0x7f, 0xb3, 0xde, 0xfb, 0x29, 0x32, 0x52, 0x24, 0x92, 0x49, 0x24, 0xc4, 0x93, 0xc9, 0x22, 0x40, + 0x49, 0x32, 0x33, 0x59, 0xbf, 0xff, 0xb7, 0xbe, 0xdc, 0xc9, 0xdf, 0x2f, 0xe3, 0xff, 0xa9, 0x1f, 0xfd, 0xfb, 0x76, 0x6e, 0xdb, 0x6e, 0x79, 0xcc, 0xe6, 0x76, 0x99, 0xcb, 0xb6, 0xde, 0xde, 0xff, 0xfd, 0xf0, 0x00, 0x04, 0xdd, 0xfe, 0xf7, 0xbe, 0xa4, 0x92, 0x4a, 0x49, 0x24, 0x92, 0x4b, 0x49, 0x26, 0x67, 0x24, 0x40, + 0x49, 0x09, 0x04, 0xd4, 0x92, 0x48, 0xcc, 0xc9, 0x96, 0x76, 0x7f, 0x6f, 0x35, 0xbf, 0x68, 0x66, 0xd7, 0xbf, 0xbf, 0xbb, 0x6d, 0xb7, 0xac, 0xd7, 0x35, 0x9b, 0x76, 0x79, 0xb6, 0xdb, 0x73, 0xed, 0xef, 0x78, 0x00, 0x01, 0xff, 0x6f, 0xbd, 0xec, 0x96, 0xcd, 0x24, 0xc9, 0x24, 0x92, 0x7b, 0xc9, 0x21, 0x34, 0x91, 0x10, + 0x24, 0x49, 0x4c, 0xb6, 0x6d, 0xb6, 0x6b, 0x6d, 0x73, 0x36, 0x9f, 0xde, 0xcd, 0xef, 0xd2, 0x6f, 0xbe, 0xfc, 0xe9, 0xdb, 0x36, 0xd9, 0xaf, 0x73, 0x5d, 0xad, 0x66, 0xb6, 0x6d, 0xbb, 0x7f, 0x7f, 0xbf, 0xf8, 0x00, 0x49, 0xbb, 0xfb, 0xef, 0x7b, 0x52, 0x24, 0x91, 0x24, 0x92, 0x49, 0x3e, 0x12, 0x11, 0x00, 0x92, 0x40, + 0x91, 0x24, 0xb2, 0x23, 0x6d, 0xb7, 0x33, 0x36, 0x4d, 0x99, 0xbe, 0xfe, 0xff, 0x7f, 0xf2, 0x1b, 0xee, 0xdf, 0xbf, 0x66, 0xdb, 0x6e, 0x73, 0x4d, 0xca, 0x6d, 0xbb, 0xa7, 0xbb, 0x6e, 0xcd, 0x9b, 0xf6, 0xf0, 0x01, 0x03, 0xfe, 0xde, 0xf3, 0xda, 0x49, 0xb2, 0xcc, 0x24, 0x92, 0x49, 0x66, 0x90, 0xc4, 0xca, 0x24, 0x90, + 0x04, 0x92, 0x23, 0x49, 0x32, 0x49, 0xdc, 0xd2, 0xd9, 0xcd, 0x6f, 0xbf, 0x37, 0xdf, 0x6c, 0xce, 0x7b, 0xff, 0xb6, 0xed, 0xdb, 0x67, 0xda, 0xdc, 0xeb, 0xd3, 0x99, 0x6c, 0xce, 0xdb, 0xbd, 0xff, 0x7f, 0xb0, 0x00, 0x23, 0xf7, 0xf7, 0x9e, 0xfa, 0xac, 0x89, 0x23, 0x92, 0x49, 0x24, 0x70, 0xc4, 0x08, 0x22, 0x49, 0x20, + 0x64, 0x93, 0x0c, 0x5c, 0xce, 0xda, 0x4b, 0x5b, 0x32, 0x66, 0x5d, 0xed, 0xed, 0xf7, 0xd9, 0x6f, 0xdb, 0x6f, 0x6d, 0xb9, 0x66, 0xd9, 0x9b, 0x33, 0x3c, 0xde, 0x67, 0x5b, 0x76, 0xdb, 0x76, 0xef, 0xed, 0xf8, 0x00, 0x0b, 0xfd, 0xbd, 0xff, 0xb9, 0xa6, 0x4c, 0x28, 0x49, 0x24, 0x84, 0x98, 0x49, 0x23, 0x11, 0x08, 0x40, + 0x12, 0x48, 0xd1, 0x92, 0x49, 0xb6, 0xe9, 0x4c, 0xce, 0xb3, 0x9f, 0x7f, 0x7f, 0x7f, 0xd7, 0x7b, 0xff, 0xdf, 0xed, 0x9f, 0x3c, 0xde, 0x6d, 0xef, 0x67, 0x33, 0x79, 0xdb, 0x73, 0x6d, 0xdb, 0xbd, 0xbf, 0x70, 0x81, 0x0f, 0xdf, 0xef, 0x6d, 0xf4, 0x53, 0x52, 0xc9, 0x25, 0x24, 0x92, 0x19, 0x92, 0x48, 0x4c, 0x62, 0x40, + 0x92, 0x4a, 0x52, 0x66, 0x73, 0x25, 0xa6, 0xd3, 0x69, 0x99, 0xbf, 0xdb, 0x9b, 0xdf, 0x7d, 0x9e, 0xed, 0xff, 0xb6, 0xe6, 0xd7, 0x67, 0xec, 0xcc, 0xd9, 0xd9, 0x9e, 0x6d, 0x9d, 0xb7, 0x6e, 0xf7, 0xfb, 0xf0, 0x04, 0x47, 0xf6, 0xfb, 0xfb, 0x76, 0x59, 0x22, 0x14, 0x90, 0x92, 0x49, 0x4f, 0x20, 0x92, 0x41, 0x09, 0x20, + 0x24, 0x93, 0x0c, 0x99, 0x96, 0x4c, 0x5a, 0x35, 0x2b, 0x6c, 0xdc, 0xfe, 0xfe, 0xf7, 0xdd, 0xf7, 0xbd, 0xbf, 0xb6, 0xfb, 0xd5, 0xb9, 0x33, 0x36, 0x9e, 0x5e, 0xe7, 0xb5, 0xed, 0xb6, 0xee, 0xdf, 0xff, 0xe4, 0x00, 0x1f, 0xbf, 0xbe, 0xdb, 0xb3, 0x24, 0xac, 0xc6, 0x4a, 0x92, 0x49, 0x04, 0x49, 0x04, 0x92, 0x49, 0x00, + 0x49, 0x24, 0xa5, 0x21, 0x24, 0xdb, 0x49, 0xa4, 0xa6, 0x4e, 0x5f, 0xb7, 0xef, 0xbf, 0xf7, 0x75, 0xf7, 0xb7, 0xdb, 0x2c, 0x6d, 0xad, 0x9f, 0x73, 0xb3, 0xa6, 0xb2, 0xd6, 0x6e, 0xdb, 0xbb, 0xfe, 0xdd, 0xe1, 0x09, 0x3f, 0xed, 0xef, 0xbe, 0xc9, 0xa6, 0x91, 0x21, 0x28, 0x49, 0x20, 0xa0, 0x84, 0x61, 0x12, 0x24, 0x40, + 0x92, 0x48, 0xb1, 0x4c, 0xc9, 0x91, 0x26, 0x4e, 0x99, 0x93, 0x5e, 0xfd, 0xbb, 0xed, 0xbe, 0xdf, 0x76, 0xff, 0x7b, 0xef, 0x6e, 0x6c, 0xe9, 0xcd, 0x6c, 0xe9, 0xbe, 0x7b, 0xb3, 0x7b, 0x6f, 0x6f, 0xf7, 0xe8, 0x00, 0x5f, 0x7f, 0x7b, 0xe7, 0xcc, 0x98, 0x46, 0x34, 0x85, 0x24, 0x8c, 0x26, 0x31, 0x09, 0x24, 0x91, 0x20, + 0x24, 0x92, 0x4a, 0x52, 0x5a, 0x64, 0xb2, 0x52, 0x64, 0xb5, 0x9f, 0x6f, 0xfd, 0xff, 0xef, 0xdb, 0xdf, 0xdf, 0xcc, 0xdb, 0x9b, 0xd3, 0x3a, 0x79, 0xcf, 0x3f, 0x49, 0xad, 0xbd, 0xaf, 0x6d, 0xfd, 0xbe, 0xc8, 0x24, 0x9f, 0xdb, 0xde, 0x7d, 0xb3, 0x49, 0x68, 0xc4, 0x94, 0x92, 0x21, 0x10, 0x42, 0x12, 0x21, 0x12, 0x20, + 0x49, 0x26, 0x48, 0x93, 0x26, 0x2c, 0x99, 0x93, 0x26, 0x64, 0xed, 0xf6, 0xdd, 0x9a, 0xdb, 0x7e, 0xfb, 0x77, 0xf7, 0x58, 0xe4, 0x9d, 0xb7, 0x2e, 0x73, 0xb3, 0x7f, 0xb6, 0xce, 0xed, 0xdd, 0xb7, 0xfb, 0xd1, 0x02, 0x7e, 0xfe, 0xf7, 0xdf, 0x94, 0x66, 0x23, 0x12, 0x62, 0x48, 0x92, 0x43, 0x08, 0xc4, 0x89, 0x42, 0x80, + 0x49, 0x29, 0x25, 0x8c, 0xa1, 0x8b, 0x44, 0xac, 0x99, 0x1a, 0x5f, 0x9d, 0xe7, 0xfe, 0xff, 0xef, 0xbb, 0xff, 0xb3, 0x6f, 0x77, 0xb4, 0xcd, 0xcb, 0x39, 0xad, 0xb2, 0xda, 0xf3, 0xbd, 0xf7, 0xff, 0x6f, 0xc4, 0x52, 0x7f, 0xb7, 0x7d, 0xf7, 0x4d, 0x92, 0x98, 0x4a, 0x29, 0x22, 0x44, 0x88, 0x24, 0x24, 0x48, 0x48, 0x40, + 0x84, 0x89, 0x31, 0x20, 0x99, 0x52, 0x56, 0x21, 0x91, 0x93, 0x1e, 0xfb, 0x3e, 0xef, 0xb6, 0xe9, 0xee, 0xdb, 0xdd, 0xa7, 0x1a, 0x6f, 0x69, 0x73, 0xae, 0x6d, 0xae, 0x6f, 0x3d, 0xb7, 0x3e, 0x7f, 0xff, 0x90, 0x10, 0xfb, 0xf7, 0x5b, 0x7e, 0x62, 0x58, 0xc6, 0x49, 0x89, 0x24, 0x48, 0x24, 0x91, 0x09, 0x26, 0x25, 0x10, + 0x32, 0x64, 0x8c, 0x6d, 0x26, 0x50, 0x91, 0x59, 0x26, 0x65, 0xbf, 0xce, 0xfb, 0xbb, 0xde, 0xff, 0x7e, 0xff, 0xdd, 0xb4, 0xed, 0xc9, 0xb6, 0x9c, 0xce, 0xdb, 0x6d, 0xb5, 0xce, 0xf7, 0xdb, 0xdb, 0xbb, 0x21, 0x05, 0xfe, 0x79, 0xff, 0xfa, 0x9a, 0x45, 0x24, 0x90, 0x48, 0x91, 0x09, 0x21, 0x09, 0x20, 0x81, 0x90, 0x90, + 0x09, 0x12, 0x43, 0x04, 0xa4, 0x8d, 0x25, 0x46, 0x69, 0x2c, 0xcf, 0x77, 0x9b, 0xfd, 0xdb, 0xb7, 0xdb, 0xb7, 0xe6, 0xdb, 0xb5, 0xba, 0x9c, 0xed, 0xd9, 0xb6, 0xdb, 0xb6, 0xf3, 0xdc, 0xf7, 0xfe, 0xef, 0x88, 0x65, 0xf7, 0xef, 0xef, 0xeb, 0x35, 0xb1, 0x21, 0x26, 0x52, 0x49, 0x21, 0x09, 0x22, 0x26, 0x30, 0x46, 0x20, + 0x44, 0x99, 0x58, 0xd2, 0x49, 0x25, 0x4c, 0x24, 0x89, 0x92, 0x5f, 0x75, 0xee, 0xdd, 0xb7, 0xbc, 0xf7, 0xff, 0x73, 0x4b, 0x56, 0xb6, 0xe7, 0x6b, 0x37, 0x36, 0xda, 0xdb, 0x3f, 0x7b, 0xbd, 0xb7, 0xfe, 0x4a, 0x13, 0xff, 0xff, 0xff, 0x99, 0xc4, 0x8c, 0x9b, 0x29, 0x12, 0x48, 0x92, 0x48, 0x48, 0x90, 0x8c, 0x20, 0x40, + 0x30, 0x84, 0x44, 0x99, 0x19, 0x64, 0x52, 0xb3, 0x36, 0x53, 0x3f, 0x9d, 0x6f, 0xf7, 0xb6, 0xef, 0xbd, 0x5b, 0xdd, 0x7c, 0xdb, 0x55, 0x6b, 0x5a, 0xec, 0xdb, 0x6d, 0xdd, 0xcd, 0xaf, 0xef, 0xfd, 0xbf, 0x11, 0x93, 0xff, 0xff, 0xf9, 0x96, 0x5a, 0x64, 0x90, 0x89, 0x24, 0x86, 0x12, 0x12, 0x44, 0x84, 0x83, 0x19, 0x00, + 0x06, 0x65, 0x25, 0x24, 0xc4, 0x12, 0x92, 0x88, 0x40, 0xcc, 0xce, 0xdb, 0x75, 0x7e, 0xdf, 0xfb, 0xef, 0xdf, 0xb5, 0xb6, 0xb9, 0xdd, 0x5a, 0xdd, 0xb7, 0xcd, 0xb7, 0x66, 0xf6, 0xf6, 0x76, 0xdf, 0xec, 0x44, 0x4f, 0xb3, 0x6d, 0xa4, 0x64, 0xdb, 0x24, 0xc4, 0x92, 0x49, 0x30, 0x48, 0x91, 0x11, 0x24, 0x30, 0xc2, 0x60, + 0x91, 0x11, 0x99, 0x24, 0x93, 0x18, 0x89, 0x2d, 0x9a, 0x24, 0x9f, 0x6e, 0xdd, 0xee, 0xd9, 0xbe, 0xdb, 0xb7, 0xb6, 0xa7, 0x66, 0xa7, 0x5d, 0xb5, 0xb5, 0x76, 0xdb, 0x7b, 0x3b, 0xdd, 0xdf, 0xf6, 0xfc, 0x92, 0x5f, 0x48, 0x00, 0x36, 0x69, 0x84, 0x9a, 0x2c, 0x44, 0x92, 0x03, 0x21, 0x24, 0x22, 0x49, 0x04, 0x08, 0x80, + 0x24, 0x4a, 0x42, 0x49, 0x29, 0x65, 0x69, 0x42, 0x43, 0x33, 0x3f, 0x6d, 0xbf, 0xfb, 0xb7, 0x6f, 0xbe, 0xfd, 0xda, 0xed, 0x5e, 0xb3, 0x67, 0x66, 0xcd, 0x76, 0xdb, 0x9b, 0xef, 0x7f, 0xfb, 0x7f, 0xbc, 0x92, 0x7c, 0x4d, 0xbf, 0xcb, 0x9b, 0x34, 0xc2, 0x89, 0x31, 0x24, 0x98, 0x24, 0x04, 0x88, 0x11, 0x49, 0x24, 0x90, + 0x49, 0x22, 0x4c, 0x92, 0x48, 0x85, 0x0c, 0x52, 0x58, 0x92, 0x4f, 0x99, 0xe6, 0xdf, 0xb7, 0x79, 0xef, 0xdf, 0x6e, 0x79, 0xd3, 0x7c, 0xec, 0xdb, 0x7b, 0x9b, 0xbc, 0xee, 0xdd, 0xeb, 0x6f, 0xdb, 0xf9, 0x09, 0xbd, 0xb2, 0x64, 0x99, 0xb6, 0x66, 0x24, 0xc3, 0x09, 0x24, 0x81, 0x82, 0xd0, 0x91, 0x84, 0x22, 0x24, 0x40, + 0x11, 0x24, 0x91, 0x24, 0x92, 0x98, 0xa3, 0x14, 0x84, 0x8c, 0x9e, 0xf6, 0xf2, 0x3e, 0xdd, 0xdf, 0x79, 0xf7, 0xb3, 0x4e, 0xb9, 0x8e, 0xb7, 0x9b, 0x66, 0xed, 0xb7, 0xed, 0xb7, 0x3f, 0xfe, 0xfe, 0xf1, 0x25, 0xf3, 0x26, 0xdb, 0x36, 0x44, 0x99, 0x99, 0x32, 0x48, 0x92, 0x64, 0x18, 0x0a, 0x14, 0x22, 0x24, 0x89, 0x00, + 0x94, 0x91, 0x24, 0x49, 0x26, 0x42, 0x98, 0x91, 0x25, 0x61, 0x37, 0x6f, 0xd9, 0x27, 0xdb, 0x77, 0xdf, 0x6d, 0xbb, 0xee, 0xee, 0xf3, 0x99, 0x6c, 0xdd, 0xb6, 0xed, 0x37, 0x7d, 0xf6, 0xfb, 0xb7, 0xe4, 0x47, 0xe8, 0xcd, 0x92, 0xc6, 0x73, 0x21, 0x22, 0x10, 0x92, 0x48, 0x08, 0xc1, 0x20, 0xc2, 0x48, 0x91, 0x22, 0x60, + 0x82, 0x12, 0x49, 0x12, 0x49, 0x32, 0x44, 0x93, 0x21, 0x16, 0x4f, 0x6d, 0xcc, 0x8b, 0xee, 0xfd, 0xef, 0x7f, 0x6c, 0xb3, 0x4c, 0xdd, 0x6e, 0x6d, 0x9b, 0x76, 0xed, 0xf6, 0xdb, 0xff, 0xbf, 0xff, 0xc4, 0x9f, 0xae, 0xf9, 0x2c, 0xd9, 0x99, 0x6c, 0x66, 0xcc, 0x92, 0x49, 0x8a, 0x04, 0x91, 0x08, 0x91, 0x12, 0x48, 0x80, + 0x68, 0xc8, 0x92, 0x64, 0x91, 0x0c, 0x44, 0x64, 0x98, 0x90, 0x9f, 0xb7, 0xa0, 0x99, 0xed, 0xaf, 0x7b, 0xdb, 0xcd, 0xb7, 0x77, 0x2d, 0x6b, 0xb7, 0x6b, 0x5b, 0x76, 0xde, 0xee, 0xdf, 0xf7, 0x6f, 0x92, 0x7e, 0xb7, 0x32, 0x6b, 0x2d, 0x99, 0x13, 0x10, 0x42, 0x49, 0x12, 0x21, 0x32, 0x0c, 0x24, 0x84, 0x48, 0x44, 0x90, + 0x04, 0x24, 0x92, 0x09, 0x24, 0xc1, 0x33, 0x08, 0x46, 0x49, 0x9e, 0xdb, 0x92, 0x25, 0xf7, 0x6e, 0xde, 0xfb, 0xb3, 0x59, 0xb3, 0xb3, 0x9b, 0xb5, 0xed, 0xdb, 0x5b, 0xdb, 0xbf, 0xf6, 0xff, 0xfd, 0x93, 0xfc, 0xdd, 0xde, 0xc9, 0x24, 0x66, 0xc4, 0x99, 0x32, 0x49, 0x20, 0x91, 0x02, 0x60, 0x91, 0x24, 0x89, 0x12, 0x10, + 0x31, 0x24, 0x49, 0x92, 0x48, 0x32, 0x08, 0x92, 0x41, 0x26, 0x4f, 0xdf, 0x41, 0x20, 0xf6, 0xfb, 0xf7, 0xbe, 0xfe, 0xde, 0xac, 0xde, 0xf4, 0xdc, 0xb6, 0xef, 0xde, 0x7b, 0xf7, 0x7f, 0xbd, 0xbc, 0x4d, 0xf7, 0xd0, 0x41, 0x14, 0xd3, 0x24, 0x28, 0xc5, 0x89, 0x24, 0x8c, 0x44, 0x48, 0x06, 0x42, 0x12, 0x22, 0x48, 0xc0, + 0x82, 0x49, 0x24, 0x52, 0x4b, 0x08, 0xc8, 0x92, 0x34, 0x90, 0x4f, 0x77, 0x24, 0x93, 0x7a, 0xdf, 0x7d, 0xef, 0x4c, 0xe6, 0xef, 0x66, 0x5f, 0x67, 0xb6, 0xb4, 0xe7, 0xee, 0xdd, 0xdb, 0xf7, 0xfa, 0x4f, 0xf4, 0x4e, 0x65, 0x66, 0x99, 0x99, 0x8a, 0x24, 0x24, 0x90, 0x91, 0x12, 0x49, 0x90, 0x18, 0x82, 0x48, 0x82, 0x00, + 0x18, 0x92, 0x24, 0x49, 0x22, 0x49, 0x26, 0x49, 0x84, 0x93, 0x37, 0x6e, 0x80, 0x89, 0x7b, 0x77, 0xdf, 0x7b, 0x77, 0x33, 0x59, 0xb9, 0xcb, 0x7b, 0x6f, 0xb7, 0x3d, 0xbe, 0xff, 0xff, 0x7e, 0xf2, 0xbf, 0x8d, 0x23, 0x19, 0x29, 0x24, 0xc2, 0x62, 0x92, 0x44, 0x92, 0x41, 0x22, 0x10, 0x23, 0x21, 0x28, 0x44, 0xb1, 0x20, + 0xc4, 0x92, 0x93, 0x24, 0x90, 0x92, 0x21, 0x24, 0x22, 0x48, 0x97, 0xee, 0x12, 0x24, 0x9d, 0xbd, 0xf7, 0xde, 0xd9, 0xdd, 0xd6, 0xdf, 0x79, 0x9b, 0x6d, 0xdf, 0xfd, 0xdb, 0xb6, 0xef, 0xdb, 0xf5, 0xff, 0x2b, 0x69, 0x9b, 0x99, 0x66, 0x26, 0x24, 0x92, 0x52, 0x24, 0x4c, 0x28, 0x92, 0x48, 0x44, 0x43, 0x12, 0x04, 0x40, + 0x04, 0x48, 0x90, 0x92, 0x4c, 0x92, 0x99, 0x24, 0x99, 0x24, 0x9e, 0xf7, 0x00, 0x12, 0xbd, 0xbf, 0x3c, 0xf7, 0xb6, 0xdd, 0x36, 0xd3, 0x6e, 0xed, 0xbd, 0x72, 0xcf, 0x7b, 0xff, 0xbd, 0xff, 0x97, 0xfc, 0xf3, 0xbc, 0xe4, 0xc6, 0x59, 0x31, 0x99, 0x24, 0x92, 0x45, 0x20, 0x82, 0x42, 0x44, 0x44, 0x90, 0x22, 0x48, 0x90, + 0x31, 0x09, 0x24, 0x92, 0x42, 0x48, 0x84, 0x82, 0x44, 0x24, 0x47, 0x9d, 0x01, 0x09, 0x3e, 0xe7, 0xef, 0xbd, 0xb6, 0xa7, 0xed, 0xbd, 0xb3, 0x6d, 0xb7, 0x6e, 0xfb, 0xee, 0xdb, 0xf7, 0x6f, 0x9f, 0xf7, 0x9c, 0x96, 0x4c, 0x64, 0x84, 0xc9, 0x12, 0x49, 0x08, 0x40, 0x89, 0x11, 0x08, 0x11, 0x12, 0x0c, 0x88, 0x4a, 0x20, + 0x42, 0x64, 0x49, 0x24, 0x92, 0x49, 0x24, 0x99, 0x22, 0x93, 0x27, 0xfe, 0x44, 0x49, 0x7b, 0x7d, 0xfb, 0xef, 0x6d, 0xb8, 0xcd, 0x66, 0xdd, 0xb6, 0xf7, 0xbd, 0xbe, 0xff, 0xfe, 0xdf, 0xde, 0x7f, 0x9b, 0x66, 0x63, 0x5b, 0x3b, 0xb2, 0x0a, 0x64, 0x92, 0x63, 0x18, 0x89, 0x14, 0x25, 0x89, 0x10, 0xc1, 0x23, 0x21, 0x00, + 0x98, 0x84, 0x92, 0x49, 0x24, 0x92, 0x49, 0x21, 0x28, 0x90, 0x9f, 0x6e, 0x00, 0x42, 0x5d, 0xbf, 0x6e, 0xf3, 0xd9, 0xdb, 0x77, 0x7b, 0x6d, 0xb6, 0xdc, 0xe7, 0xef, 0xb7, 0x6d, 0xfb, 0xfd, 0xfc, 0xc8, 0x65, 0x99, 0x22, 0x88, 0x49, 0x22, 0x49, 0x24, 0x88, 0x06, 0x20, 0x40, 0x90, 0x22, 0x44, 0x31, 0x10, 0x8c, 0x40, + 0x04, 0x32, 0x24, 0x92, 0x49, 0x24, 0x92, 0x24, 0x84, 0x4c, 0x47, 0xfb, 0x12, 0x11, 0x9d, 0xb3, 0xef, 0x9e, 0xde, 0x67, 0x59, 0x9b, 0x6e, 0xdb, 0xdf, 0xfe, 0x7b, 0xfd, 0xff, 0x6e, 0xff, 0xf6, 0x6f, 0x99, 0x24, 0xa8, 0xc9, 0x25, 0x4c, 0x92, 0x49, 0x09, 0xa0, 0x24, 0x48, 0x82, 0x22, 0x25, 0x04, 0x94, 0x20, 0x90, + 0x45, 0x09, 0x24, 0x92, 0x49, 0x24, 0x92, 0x44, 0x93, 0x23, 0x27, 0xbf, 0x00, 0x04, 0xbe, 0xfe, 0xfb, 0xff, 0x67, 0xbd, 0xde, 0xed, 0xb3, 0xdb, 0x73, 0x3b, 0xde, 0xdf, 0xb7, 0xff, 0xff, 0xb3, 0x31, 0x9b, 0x66, 0x9b, 0x33, 0x24, 0x41, 0x24, 0x90, 0x64, 0x09, 0x01, 0x02, 0x29, 0x88, 0x88, 0x44, 0x21, 0x22, 0x20, + 0x90, 0xc1, 0x12, 0x49, 0x24, 0x92, 0x49, 0x12, 0x48, 0x90, 0x9b, 0xee, 0x01, 0x22, 0x7b, 0x4f, 0x9e, 0xed, 0xf9, 0xad, 0xb3, 0x6d, 0xbd, 0x6f, 0x6f, 0xef, 0xf7, 0xff, 0xfd, 0x9f, 0xfe, 0x99, 0x9c, 0x64, 0x98, 0xc4, 0x24, 0x99, 0x32, 0x48, 0x92, 0x00, 0xc1, 0x18, 0x21, 0x04, 0x12, 0x12, 0x51, 0x09, 0x09, 0x20, + 0x26, 0x14, 0xc9, 0x24, 0x22, 0x49, 0x24, 0x92, 0x22, 0x4c, 0x8b, 0xfb, 0x80, 0x08, 0xdd, 0xfb, 0xf7, 0xbe, 0xde, 0xeb, 0x6d, 0xb6, 0xcf, 0x79, 0xfc, 0xfd, 0xbd, 0xfb, 0x6e, 0xff, 0xf2, 0xcc, 0xcb, 0x66, 0x89, 0x25, 0x8c, 0x92, 0x08, 0x82, 0x42, 0x4a, 0x14, 0x42, 0x24, 0x50, 0x44, 0xc1, 0x09, 0x44, 0x48, 0x80, + 0x20, 0x44, 0x21, 0x24, 0x99, 0x09, 0x24, 0x88, 0x92, 0x42, 0x27, 0xdf, 0x20, 0x89, 0x3d, 0xbe, 0xfd, 0xf3, 0xb6, 0xbb, 0x6e, 0xf7, 0xfb, 0xb7, 0x9f, 0xb7, 0xef, 0x7f, 0xfb, 0xff, 0x9b, 0x66, 0x6a, 0x99, 0x66, 0x31, 0x32, 0x64, 0xc9, 0x32, 0x11, 0x10, 0x90, 0x41, 0x84, 0x83, 0x24, 0x0c, 0x22, 0x30, 0x92, 0x00, + 0x19, 0x23, 0x14, 0x92, 0x41, 0x24, 0x42, 0x62, 0x49, 0x32, 0x47, 0xf7, 0x00, 0x25, 0x7e, 0xcf, 0xbf, 0x6f, 0xb7, 0xb6, 0xdb, 0x5d, 0x3a, 0xee, 0xf7, 0xfe, 0xfb, 0xdd, 0xbf, 0xfc, 0xcc, 0x73, 0x34, 0xa5, 0x12, 0xc9, 0x02, 0x09, 0x24, 0x44, 0x8c, 0x11, 0x03, 0x14, 0x10, 0x24, 0x21, 0x20, 0x92, 0x02, 0x21, 0x60, + 0x82, 0x28, 0x44, 0x92, 0x48, 0x91, 0x18, 0x12, 0x24, 0x89, 0x13, 0xbf, 0x90, 0x24, 0x73, 0x7b, 0xdb, 0xde, 0xf9, 0xdd, 0xb7, 0x77, 0xee, 0xdb, 0xf6, 0xdb, 0xbe, 0xf7, 0xff, 0xe6, 0x67, 0x99, 0x95, 0x24, 0xc9, 0x0c, 0xc9, 0x99, 0x04, 0x84, 0x20, 0xc4, 0x48, 0x10, 0x43, 0x10, 0x89, 0x22, 0x48, 0xc9, 0x08, 0x00, + 0x24, 0x89, 0x22, 0x41, 0x0a, 0x49, 0x21, 0x89, 0x84, 0x24, 0xa5, 0xef, 0x82, 0x0b, 0xff, 0x7e, 0xfe, 0xf6, 0xcf, 0x6d, 0xbd, 0xda, 0xdd, 0xde, 0x7f, 0xff, 0xef, 0xbf, 0xff, 0x33, 0x31, 0x2c, 0xcd, 0x5a, 0x69, 0x32, 0x30, 0x64, 0x52, 0x21, 0x02, 0x02, 0x20, 0xc2, 0x18, 0x42, 0x12, 0x19, 0x02, 0x09, 0x46, 0x90, + 0x91, 0x22, 0x29, 0x2c, 0x61, 0x24, 0x88, 0x64, 0x11, 0x24, 0x89, 0xfb, 0xc8, 0x12, 0xf9, 0xcf, 0xaf, 0xbd, 0xfe, 0xee, 0xed, 0xde, 0xdd, 0xf7, 0xdb, 0x6d, 0xfb, 0xff, 0xf2, 0xcc, 0xd9, 0xcc, 0xa2, 0x49, 0x0c, 0x82, 0x06, 0x04, 0x91, 0x18, 0x52, 0x22, 0x0c, 0x08, 0x80, 0x49, 0x44, 0xc1, 0x31, 0x24, 0x30, 0x40, + 0x49, 0x24, 0x89, 0x21, 0x0c, 0x22, 0x4a, 0x10, 0xc9, 0x12, 0x4b, 0xfe, 0xc8, 0xd5, 0xef, 0x7b, 0xfb, 0xef, 0x6d, 0xb3, 0xee, 0x77, 0xf7, 0x3d, 0xff, 0xff, 0x7f, 0xff, 0x4c, 0xd9, 0x8e, 0x53, 0x32, 0xa5, 0x92, 0x69, 0xa1, 0x92, 0x24, 0x42, 0x44, 0x90, 0xc1, 0x22, 0x4b, 0x09, 0x10, 0x04, 0x44, 0x44, 0x81, 0x20, + 0x24, 0x84, 0x44, 0x44, 0x90, 0x88, 0x42, 0x8a, 0x24, 0xc9, 0x21, 0xef, 0xe4, 0x27, 0xfb, 0x7e, 0xde, 0xf3, 0xb7, 0x7f, 0x3b, 0xed, 0xbf, 0xef, 0x6d, 0xb7, 0xff, 0xf2, 0x65, 0x33, 0x32, 0x64, 0xcc, 0x92, 0x62, 0x10, 0x2c, 0x49, 0x02, 0x40, 0x08, 0x04, 0x10, 0x84, 0x10, 0x20, 0x46, 0x32, 0x44, 0x90, 0x4c, 0x80, + 0x04, 0x91, 0x31, 0x12, 0x22, 0x49, 0x30, 0xa2, 0x24, 0x24, 0x24, 0xfb, 0xf3, 0x27, 0xdb, 0x9d, 0xf7, 0xbe, 0xf7, 0xdb, 0xff, 0xbf, 0xbb, 0xfb, 0xff, 0xff, 0xfd, 0x9a, 0xb7, 0x66, 0x65, 0x99, 0x25, 0x4a, 0x0c, 0xc6, 0x42, 0x49, 0x48, 0x94, 0x89, 0x21, 0x12, 0x11, 0x04, 0x86, 0x20, 0x82, 0x10, 0x89, 0x10, 0x20, + 0x50, 0x49, 0x09, 0x22, 0x49, 0x22, 0x0c, 0x24, 0x92, 0x12, 0x92, 0xfe, 0xf9, 0x9f, 0xfc, 0xf7, 0x7d, 0xef, 0x5c, 0xee, 0xdd, 0xf6, 0xee, 0xde, 0xdf, 0xff, 0xcc, 0x9b, 0x98, 0xc9, 0x99, 0x26, 0x65, 0x29, 0x91, 0x21, 0x12, 0x22, 0x24, 0x02, 0x20, 0x48, 0x42, 0x48, 0x60, 0x90, 0x89, 0x09, 0x22, 0x49, 0x03, 0x20, + 0x46, 0x48, 0x44, 0x89, 0x10, 0x24, 0xc3, 0x11, 0x12, 0xc8, 0x92, 0xef, 0xbe, 0xdf, 0x6f, 0xdf, 0xdf, 0x79, 0xfb, 0xbf, 0xf7, 0x7f, 0xff, 0xf7, 0xff, 0xf6, 0x63, 0x64, 0x66, 0x99, 0x26, 0x64, 0x98, 0xa4, 0x64, 0x29, 0x24, 0x92, 0x21, 0x22, 0x04, 0x82, 0x48, 0x42, 0x0a, 0x10, 0x92, 0x64, 0x89, 0x22, 0x68, 0x10, + 0x88, 0x86, 0x50, 0x91, 0x26, 0x91, 0x10, 0xc4, 0x48, 0x22, 0x48, 0x7b, 0xff, 0xff, 0xfb, 0x7b, 0xf7, 0xdf, 0xaf, 0xf7, 0x7f, 0xdb, 0x77, 0x7f, 0xfd, 0x99, 0x9b, 0x65, 0xa4, 0xa6, 0x64, 0x99, 0x82, 0x24, 0x0a, 0x88, 0x89, 0x10, 0x88, 0x08, 0xc4, 0x24, 0x84, 0x11, 0x02, 0x46, 0x10, 0x80, 0x89, 0x22, 0x02, 0x40, + 0x21, 0x20, 0x8a, 0x44, 0x88, 0x48, 0x4c, 0x12, 0x49, 0x09, 0x27, 0x7e, 0xff, 0xf6, 0xde, 0xce, 0xfd, 0xf6, 0xed, 0x7d, 0xdb, 0xff, 0xdd, 0xff, 0xed, 0x6d, 0xb0, 0x9b, 0x33, 0x24, 0x99, 0x86, 0x6d, 0x93, 0x98, 0x92, 0x49, 0x44, 0x82, 0x41, 0x11, 0x00, 0x31, 0x84, 0x60, 0x40, 0x44, 0x1a, 0x22, 0x08, 0x92, 0x40, + 0x12, 0x18, 0x88, 0x48, 0x91, 0x09, 0x23, 0x12, 0x24, 0xc9, 0x20, 0x3f, 0xb7, 0xbf, 0xf7, 0xbf, 0xbf, 0x6f, 0xf7, 0xdf, 0xfe, 0xe6, 0xff, 0xfd, 0x26, 0x64, 0xae, 0xa8, 0xc9, 0x51, 0x89, 0x30, 0x10, 0x48, 0x61, 0x24, 0x44, 0x12, 0x51, 0x10, 0x01, 0x32, 0x02, 0x20, 0x89, 0x19, 0x25, 0x40, 0x90, 0x92, 0x48, 0x90, + 0x88, 0x82, 0x23, 0x12, 0x24, 0xa4, 0x20, 0xc9, 0x92, 0x12, 0x4d, 0x9b, 0xfd, 0xed, 0xbd, 0xbb, 0xef, 0xed, 0x3e, 0xf6, 0xef, 0xbf, 0xff, 0x93, 0x32, 0x96, 0xca, 0xa6, 0x4c, 0x4c, 0x64, 0x49, 0x93, 0x24, 0x44, 0x49, 0x31, 0x89, 0x10, 0x12, 0x48, 0x41, 0x88, 0x18, 0x89, 0x02, 0x21, 0x04, 0x44, 0x91, 0x22, 0x00, + 0x61, 0x22, 0x20, 0x44, 0x80, 0x20, 0x94, 0x24, 0x42, 0x44, 0x91, 0x5e, 0x6f, 0x7f, 0xef, 0x6e, 0xfa, 0xfd, 0xef, 0xbf, 0xbd, 0xff, 0xf2, 0x64, 0xdb, 0x99, 0x32, 0xd5, 0x32, 0x89, 0x16, 0x4a, 0x64, 0x95, 0x12, 0x49, 0x08, 0x61, 0x06, 0x42, 0x12, 0x0c, 0x21, 0x82, 0x20, 0x62, 0x10, 0x33, 0x12, 0x44, 0x24, 0x60, + 0x04, 0x11, 0x8c, 0x91, 0x33, 0x0a, 0x11, 0x21, 0x29, 0x24, 0x92, 0x4f, 0xfb, 0xf6, 0xfb, 0xff, 0xbf, 0x9f, 0xf9, 0xed, 0xff, 0xfe, 0x98, 0x99, 0x8c, 0x65, 0x6c, 0x51, 0x82, 0xb2, 0xc1, 0x92, 0x48, 0x91, 0x22, 0x24, 0x86, 0x04, 0x48, 0x48, 0x84, 0xa0, 0x24, 0x22, 0x06, 0x08, 0xc6, 0x80, 0x22, 0x12, 0x84, 0x00, + 0x12, 0x44, 0x21, 0x24, 0x44, 0x48, 0xc4, 0x89, 0x09, 0x22, 0x4c, 0xaf, 0xbe, 0xdf, 0xbe, 0xdb, 0xed, 0xf3, 0x3f, 0x7f, 0xff, 0xf2, 0x4d, 0x9a, 0x65, 0x26, 0x49, 0x2c, 0x98, 0x46, 0x2c, 0x24, 0x92, 0x48, 0x89, 0x92, 0x60, 0x92, 0x21, 0x00, 0xa1, 0x03, 0x08, 0x08, 0xc0, 0x88, 0x08, 0x49, 0x28, 0x90, 0x91, 0x90, + 0x88, 0x92, 0x49, 0x09, 0x08, 0x84, 0x12, 0x24, 0x44, 0x99, 0x24, 0xa7, 0xef, 0x7b, 0xef, 0xfe, 0xff, 0x7f, 0xef, 0xff, 0xfe, 0x49, 0x64, 0x66, 0x53, 0x32, 0x96, 0xa2, 0x65, 0x11, 0x22, 0x64, 0x95, 0x26, 0x48, 0x42, 0x18, 0x88, 0x84, 0x32, 0x18, 0x50, 0x42, 0xc1, 0x10, 0x23, 0x21, 0x09, 0x09, 0x24, 0x48, 0x10, + 0x21, 0x08, 0x84, 0x49, 0x22, 0x31, 0x22, 0x44, 0x90, 0x84, 0x93, 0x17, 0x7b, 0xfe, 0xfb, 0x6f, 0xb7, 0x6d, 0xfb, 0xff, 0xe9, 0x9b, 0x33, 0x49, 0x98, 0xc9, 0xb2, 0x92, 0x05, 0x91, 0x25, 0x93, 0x24, 0x91, 0x26, 0x18, 0x82, 0x21, 0x10, 0x84, 0x42, 0x0c, 0x52, 0x14, 0x13, 0x10, 0x24, 0x92, 0x44, 0x43, 0x08, 0x80, + 0x44, 0x49, 0x31, 0x22, 0x49, 0x09, 0x24, 0x52, 0x24, 0x62, 0x59, 0x53, 0xde, 0xef, 0xbf, 0xfb, 0xfd, 0xff, 0x7f, 0xfd, 0x2c, 0xa4, 0xcb, 0x32, 0x66, 0x4c, 0x48, 0x4c, 0xd8, 0x4c, 0x98, 0x12, 0x48, 0x91, 0x21, 0x84, 0x92, 0x24, 0x49, 0x04, 0x42, 0x21, 0x08, 0x10, 0x84, 0x44, 0x92, 0x20, 0x92, 0x48, 0x22, 0x60, + 0x44, 0x21, 0x02, 0x24, 0x49, 0x48, 0x89, 0x12, 0x45, 0x19, 0x24, 0xc9, 0xf7, 0xfb, 0xed, 0xbe, 0xdb, 0x97, 0xff, 0x93, 0x46, 0xb4, 0x98, 0x96, 0x49, 0x33, 0x13, 0x21, 0x02, 0x42, 0x4a, 0xc8, 0x92, 0x4c, 0x48, 0x22, 0x44, 0x84, 0x84, 0x51, 0x10, 0x81, 0x21, 0x82, 0x20, 0x49, 0x08, 0x8c, 0x22, 0x10, 0x84, 0x00, + 0x11, 0x84, 0x48, 0x91, 0x10, 0x46, 0x48, 0x89, 0x11, 0x04, 0x8c, 0xac, 0xff, 0xbe, 0xff, 0xef, 0xfe, 0xff, 0xf4, 0xda, 0x73, 0x4b, 0x26, 0xc9, 0x99, 0x88, 0xa4, 0x95, 0x32, 0x59, 0x42, 0x24, 0x92, 0x42, 0x4a, 0x48, 0x20, 0x50, 0x90, 0x81, 0x14, 0x98, 0x14, 0x24, 0x0a, 0x08, 0x48, 0x91, 0x29, 0x24, 0x91, 0x00, + 0x12, 0x12, 0x12, 0x44, 0x92, 0x30, 0x44, 0x89, 0x24, 0xc4, 0xa3, 0x26, 0xed, 0xef, 0xb6, 0xfb, 0x6f, 0xff, 0x9d, 0x66, 0x99, 0x69, 0x64, 0x69, 0x26, 0x64, 0xa4, 0x91, 0x24, 0x84, 0x34, 0x93, 0x24, 0x92, 0x21, 0x13, 0x0b, 0x06, 0x12, 0x28, 0xc1, 0x02, 0xc0, 0x91, 0x48, 0xa2, 0x42, 0x41, 0x08, 0x42, 0x12, 0x60, + 0xc2, 0x48, 0x92, 0x12, 0x22, 0x84, 0x91, 0x20, 0x88, 0x32, 0x64, 0x52, 0x3d, 0xfb, 0xff, 0xbf, 0xff, 0xf6, 0x67, 0x35, 0xad, 0x24, 0x93, 0x14, 0xc0, 0x13, 0x12, 0x4a, 0x49, 0x32, 0x89, 0x10, 0x64, 0x91, 0x8c, 0x40, 0x48, 0x20, 0x42, 0x0a, 0x08, 0x44, 0x0a, 0x08, 0x41, 0x02, 0x24, 0x4c, 0xc4, 0x92, 0x42, 0x00, + 0x08, 0x48, 0x21, 0x90, 0x88, 0x24, 0x89, 0x26, 0x4b, 0x19, 0x15, 0x99, 0xbf, 0x7e, 0xdb, 0xef, 0xfe, 0xc9, 0xb2, 0xcc, 0xcc, 0x96, 0x99, 0x96, 0x36, 0xc8, 0x52, 0x48, 0x92, 0x48, 0x99, 0x4c, 0x92, 0x4c, 0x10, 0x99, 0x21, 0x29, 0x24, 0x90, 0x22, 0x31, 0x20, 0xa2, 0x11, 0x18, 0x89, 0x22, 0x11, 0x08, 0x48, 0x90, + 0x24, 0x83, 0x0c, 0x24, 0x93, 0x11, 0x24, 0x11, 0x20, 0xc5, 0x90, 0xa4, 0x9f, 0xdf, 0xfe, 0xff, 0xd2, 0x6a, 0x4c, 0xca, 0x52, 0xd2, 0x64, 0x61, 0x88, 0x8c, 0xc9, 0x24, 0x92, 0x89, 0x24, 0x42, 0x12, 0x40, 0x42, 0x21, 0x09, 0x02, 0x08, 0x44, 0x89, 0x00, 0x24, 0x04, 0x8c, 0x40, 0x22, 0x20, 0x92, 0x49, 0x08, 0x40, + 0x44, 0x90, 0x40, 0x44, 0x40, 0xc4, 0x44, 0xc4, 0x94, 0x92, 0x6e, 0x26, 0x4f, 0xff, 0xff, 0xfe, 0xd3, 0x36, 0x6d, 0x33, 0x33, 0x19, 0x12, 0x0c, 0x49, 0x32, 0x24, 0x92, 0x48, 0xa4, 0x62, 0x32, 0x49, 0x13, 0x24, 0x84, 0x48, 0x52, 0x49, 0x02, 0x40, 0x4c, 0x83, 0x10, 0x60, 0x46, 0x24, 0x94, 0x88, 0x21, 0x23, 0x10, + 0x12, 0x24, 0x93, 0x12, 0x18, 0x09, 0x12, 0x12, 0x46, 0x22, 0x41, 0x33, 0x63, 0xfb, 0xff, 0xd2, 0x2c, 0xc5, 0xa7, 0x34, 0x8c, 0x65, 0x92, 0xd2, 0x45, 0x02, 0x24, 0x92, 0x49, 0x25, 0x12, 0x89, 0x24, 0x48, 0x24, 0x49, 0x22, 0x44, 0x41, 0x30, 0x56, 0x02, 0x18, 0x49, 0x02, 0x11, 0x88, 0x44, 0x25, 0x84, 0x48, 0x00, + 0x90, 0x89, 0x08, 0x20, 0x85, 0x22, 0x48, 0x91, 0x22, 0x69, 0x19, 0x48, 0x98, 0x32, 0x49, 0x37, 0xa9, 0x99, 0x98, 0xcc, 0xc9, 0x84, 0x49, 0x12, 0x30, 0xc9, 0x92, 0x49, 0x25, 0x31, 0x11, 0x24, 0x91, 0x22, 0x91, 0x10, 0x84, 0x89, 0x32, 0x05, 0x00, 0xb0, 0xc0, 0x42, 0x12, 0x88, 0x12, 0x49, 0x20, 0x10, 0x84, 0xa0, + 0x24, 0x91, 0x22, 0x8c, 0xa1, 0x24, 0x42, 0x44, 0x29, 0x0c, 0xc9, 0x19, 0x93, 0x0c, 0xb6, 0x8c, 0xb3, 0x36, 0x52, 0x93, 0x32, 0x32, 0x49, 0x24, 0x8a, 0x24, 0x49, 0x24, 0x92, 0x49, 0x4c, 0x44, 0x89, 0x12, 0x11, 0x24, 0x91, 0x20, 0x84, 0x90, 0x22, 0x04, 0x04, 0x90, 0x90, 0x22, 0x42, 0x22, 0x4a, 0x4a, 0x31, 0x00, + 0x82, 0x24, 0x24, 0x90, 0x24, 0x11, 0x12, 0x49, 0x89, 0x44, 0x92, 0xc4, 0x4c, 0xe5, 0x92, 0xe9, 0x94, 0xc4, 0xcc, 0xb0, 0x0c, 0x89, 0x94, 0xa4, 0x89, 0x24, 0x49, 0x12, 0x48, 0x88, 0x42, 0x51, 0x22, 0x44, 0x44, 0x22, 0x12, 0x14, 0x10, 0x42, 0x91, 0x11, 0x22, 0x0c, 0x45, 0x24, 0x49, 0x24, 0x82, 0x42, 0x02, 0x40, + 0x49, 0x22, 0x40, 0x43, 0x04, 0xc4, 0x91, 0x22, 0x12, 0x53, 0x26, 0x26, 0x62, 0x33, 0x5a, 0x4a, 0x4c, 0x99, 0x25, 0x26, 0xc1, 0x48, 0x24, 0x92, 0x64, 0x93, 0x24, 0x49, 0x24, 0xa6, 0x32, 0x12, 0x48, 0x24, 0x92, 0x88, 0xc2, 0x43, 0x42, 0x18, 0x14, 0x42, 0x20, 0x41, 0x08, 0x41, 0x11, 0x11, 0x24, 0x10, 0x88, 0x90, + + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3d, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x19, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x28, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x94, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x62, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x28, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x8c, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x09, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x81, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x10, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + + diff --git a/ARM_Tag_FW/common/compression.cpp b/ARM_Tag_FW/common/compression.cpp new file mode 100644 index 00000000..5644cbd7 --- /dev/null +++ b/ARM_Tag_FW/common/compression.cpp @@ -0,0 +1,175 @@ +#include + +std::vector decompContexts; + +int decompCallback(TINF_DATA *d) { + // in the callback for uzlib we'll get a uzlib context from which it originates + for (uint8_t i = 0; i < decompContexts.size(); i++) { + // see if we can find which decompression context that callback belongs to + if (decompContexts.at(i)->ctx == d) { + decompress *dec = decompContexts.at(i); +#ifdef ENABLE_OEPLFS + if (dec->fromFile) + return dec->getNextCompressedBlockFromFile(); + else +#endif + return dec->getNextCompressedBlockFromFlash(); + } + } + printf("Couldn't find callback...\n"); + return -1; +} + +decompress::decompress() { + decompContexts.push_back(this); +} + +void decompress::seek(uint32_t address) { +} + +bool decompress::readHeader() { + uzlib_init(); + + // read the window size from the zlib header + int res = uzlib_zlib_parse_header(this->ctx); + if (res < 0) { + printf("FS: Invalid zlib header\n"); + return false; + } + + // the window size is reported as 2^(x-8). + uint16_t window = 0x100 << res; + + // check if the file served has a sensible window size + if (window > MAX_WINDOW_SIZE) { + printf("FS: Asked to decompress a file with a specified window size of %d, I don't see that happening\n", window); + return false; + } else { + // printf("FS: Opened compressed file with dictionary size %d\n", window); + } + + // allocate dict/window if not already allocated + if (!this->dictionary) this->dictionary = (uint8_t *)malloc(window); + + uzlib_uncompress_init(this->ctx, this->dictionary, window); + return true; +} + +#ifdef ENABLE_OEPLFS +bool decompress::openFromFile(char *filename) { + this->file = fs->getFile(filename); + if (!this->file) { + return false; + } + this->setupContext(); + this->ctx->source_read_cb = decompCallback; + this->file->getBlock(4, this->compBuffer, ZLIB_CACHE_SIZE); + this->compressedPos += ZLIB_CACHE_SIZE; + this->compressedSize = file->length - 4; + this->file->getBlock(0, (uint8_t *)&this->decompressedSize, 4); + this->fromFile = true; + return this->readHeader(); +} +#endif + +bool decompress::openFromFlash(uint32_t eepBase, uint32_t cSize) { + this->setupContext(); + this->ctx->source_read_cb = decompCallback; + this->compressedPos += ZLIB_CACHE_SIZE; + this->compressedSize = cSize - 4; + this->eepromBase = eepBase; + HAL_flashRead(this->eepromBase, (uint8_t *)&this->decompressedSize, 4); + HAL_flashRead(this->eepromBase + 4, this->compBuffer, ZLIB_CACHE_SIZE); + this->fromFile = false; + return this->readHeader(); +} + +void decompress::setupContext() { + if (!this->ctx) this->ctx = new struct uzlib_uncomp; + if (!this->compBuffer) this->compBuffer = (uint8_t *)malloc(ZLIB_CACHE_SIZE); + this->ctx->source = this->compBuffer; + this->ctx->source_limit = this->compBuffer + ZLIB_CACHE_SIZE; + compressedPos = 0; + decompressedPos = 0; +} + +decompress::~decompress() { + for (uint8_t i = 0; i < decompContexts.size(); i++) { + if (decompContexts.at(i) == this) + decompContexts.erase(decompContexts.begin() + i); + } + if (this->dictionary) free(this->dictionary); + if (this->ctx) delete this->ctx; + if (this->compBuffer) free(this->compBuffer); +} + +#ifdef ENABLE_OEPLFS +int decompress::getNextCompressedBlockFromFile() { + int32_t bytesLeft = compressedSize - compressedPos; + if (bytesLeft <= 0) return -1; + if (bytesLeft > ZLIB_CACHE_SIZE) bytesLeft = ZLIB_CACHE_SIZE; + this->file->getBlock(4 + compressedPos, this->compBuffer, ZLIB_CACHE_SIZE); + ctx->source = this->compBuffer + 1; + ctx->source_limit = this->compBuffer + bytesLeft; + this->compressedPos += ZLIB_CACHE_SIZE; + return this->compBuffer[0]; +} +#endif + +int decompress::getNextCompressedBlockFromFlash() { + int32_t bytesLeft = compressedSize - compressedPos; + if (bytesLeft <= 0) return -1; + if (bytesLeft > ZLIB_CACHE_SIZE) bytesLeft = ZLIB_CACHE_SIZE; + HAL_flashRead(this->eepromBase + 4 + compressedPos, this->compBuffer, bytesLeft); + ctx->source = this->compBuffer + 1; + ctx->source_limit = this->compBuffer + bytesLeft; + this->compressedPos += bytesLeft; + return this->compBuffer[0]; +} + +uint32_t decompress::getBlock(uint32_t address, uint8_t *target, uint32_t len) { + if (address + len > decompressedSize) return 0; + if (address < this->decompressedPos) { + // reload file, start from scratch + this->ctx->source = this->compBuffer; + compressedPos = 0; + decompressedPos = 0; + if (this->fromFile) + this->getNextCompressedBlockFromFile(); + else + this->getNextCompressedBlockFromFlash(); + this->ctx->source = this->compBuffer; + this->readHeader(); + } + + // skip to the next part of the output stream + uint8_t *temp = nullptr; + if (address != decompressedPos) temp = (uint8_t *)malloc(ZLIB_CACHE_SIZE); + while (this->decompressedPos < address) { + uint32_t readBytes = address - decompressedPos; + if (readBytes > ZLIB_CACHE_SIZE) readBytes = ZLIB_CACHE_SIZE; + decompressedPos += readBytes; + this->ctx->dest = temp; + ctx->dest_start = ctx->dest; + ctx->dest_limit = ctx->dest + readBytes; + uzlib_uncompress(ctx); + } + if (temp) free(temp); + + uint32_t bytesLeft = this->decompressedSize - this->decompressedPos; + if (len > bytesLeft) len = bytesLeft; + + this->ctx->dest = (unsigned char *)target; + ctx->dest_start = ctx->dest; + ctx->dest_limit = ctx->dest + len; + + uzlib_uncompress(ctx); + this->decompressedPos += len; + return len; +} + +uint8_t decompress::readByte(uint32_t address) { + uint8_t a; + this->getBlock(address, &a, 1); + return a; +} diff --git a/ARM_Tag_FW/common/compression.h b/ARM_Tag_FW/common/compression.h new file mode 100644 index 00000000..fe05f604 --- /dev/null +++ b/ARM_Tag_FW/common/compression.h @@ -0,0 +1,39 @@ +#include "uzlib/src/uzlib.h" + +class decompress { + public: +// decompress(); +#ifdef ENABLE_OEPLFS + bool openFromFile(char *filename); +#endif + bool openFromFlash(uint32_t eepBase, uint32_t cSize); + uint32_t getBlock(uint32_t address, uint8_t *target, uint32_t len); + uint8_t readByte(uint32_t address); + void seek(uint32_t address); + +#ifdef ENABLE_OEPLFS + int getNextCompressedBlockFromFile(); +#endif + int getNextCompressedBlockFromFlash(); + + decompress(); + ~decompress(); + + bool fromFile = false; + struct uzlib_uncomp *ctx = nullptr; + void reset(); + protected: + void setupContext(); + bool readHeader(); + uint8_t *compBuffer = nullptr; + // uint8_t *uncompBuffer = nullptr; + uint32_t decompressedSize; + uint32_t decompressedPos; + uint32_t compressedSize; + uint32_t compressedPos; +#ifdef ENABLE_OEPLFS + OEPLFile *file = nullptr; +#endif + uint32_t eepromBase; + uint8_t *dictionary = nullptr; +}; \ No newline at end of file diff --git a/ARM_Tag_FW/common/eeprom_struct.h b/ARM_Tag_FW/common/eeprom_struct.h new file mode 100644 index 00000000..ec4102d1 --- /dev/null +++ b/ARM_Tag_FW/common/eeprom_struct.h @@ -0,0 +1,8 @@ +struct EepromImageHeader { + uint64_t version; + uint32_t validMarker; + uint32_t size; + uint8_t dataType; + uint32_t id; + uint8_t argument; +}; \ No newline at end of file diff --git a/ARM_Tag_FW/Newton_M3_nRF52811/include/FreeSans9pt7b.h b/ARM_Tag_FW/common/fonts/FreeSans9pt7b.h similarity index 100% rename from ARM_Tag_FW/Newton_M3_nRF52811/include/FreeSans9pt7b.h rename to ARM_Tag_FW/common/fonts/FreeSans9pt7b.h diff --git a/ARM_Tag_FW/Newton_M3_nRF52811/include/FreeSansBold18pt7b.h b/ARM_Tag_FW/common/fonts/FreeSansBold18pt7b.h similarity index 100% rename from ARM_Tag_FW/Newton_M3_nRF52811/include/FreeSansBold18pt7b.h rename to ARM_Tag_FW/common/fonts/FreeSansBold18pt7b.h diff --git a/ARM_Tag_FW/Newton_M3_nRF52811/include/FreeSansBold24pt7b.h b/ARM_Tag_FW/common/fonts/FreeSansBold24pt7b.h similarity index 100% rename from ARM_Tag_FW/Newton_M3_nRF52811/include/FreeSansBold24pt7b.h rename to ARM_Tag_FW/common/fonts/FreeSansBold24pt7b.h diff --git a/ARM_Tag_FW/common/uzlib b/ARM_Tag_FW/common/uzlib new file mode 160000 index 00000000..6d60d651 --- /dev/null +++ b/ARM_Tag_FW/common/uzlib @@ -0,0 +1 @@ +Subproject commit 6d60d651a4499a64f2e5b21b4cc08d98cb84b5c1 diff --git a/Tag_Flasher/88MZ100-Serial-Flasher.py b/Tag_Flasher/88MZ100-Serial-Flasher.py index 66bfabea..03ba795c 100644 --- a/Tag_Flasher/88MZ100-Serial-Flasher.py +++ b/Tag_Flasher/88MZ100-Serial-Flasher.py @@ -18,11 +18,24 @@ def bytes_to_int(bytes): def to_byte(input,number=4): return input.to_bytes(number, byteorder = 'little') +def find_offset(byte_array, substring): + try: + offset = byte_array.index(substring) + return offset + except ValueError: + return -1 + def create_full_fw(filename,out_filename): print("Opening file " + filename) in_file = open(filename, "rb") data = bytearray(in_file.read()) filesize = len(data) + fwlen = find_offset(data, b'---OEPL_FS!') + if(fwlen!=-1): + print("Found OEPL FS at offset "+str(fwlen)) + else: + print("OEPL FS not found, this is probably an older FW version") + fwlen = filesize in_file.close() print("file size: "+str(filesize)) entry_point = bytes_to_int(data[4:8]) @@ -31,7 +44,7 @@ def create_full_fw(filename,out_filename): #adding firmware header here header = to_byte(0x00000000) header += to_byte(0xFFFFFFFF) - header += to_byte(filesize) + header += to_byte(fwlen) header += to_byte(0xFFEEFFFF) header += to_byte(0xFFFFFFFF) header += to_byte(0x100000) @@ -163,6 +176,12 @@ def flash_file_flash(filename): in_file = open(filename, "rb") data = bytearray(in_file.read()) filesize = len(data) + fwlen = find_offset(data, b'---OEPL_FS!') + if(fwlen!=-1): + print("Found OEPL FS at offset "+str(fwlen)) + else: + print("OEPL FS not found, this is probably an older FW version") + fwlen = filesize in_file.close() print("file size: "+str(filesize)) entry_point = bytes_to_int(data[4:8]) @@ -172,7 +191,7 @@ def flash_file_flash(filename): header = to_byte(0x00000000) header += to_byte(0xFFFFFFFF) - header += to_byte(filesize) + header += to_byte(fwlen) header += to_byte(0xFFEEFFFF) header += to_byte(0xFFFFFFFF) header += to_byte(0x100000) diff --git a/oepl-definitions.h b/oepl-definitions.h index 89e5f875..8d2c4a05 100755 --- a/oepl-definitions.h +++ b/oepl-definitions.h @@ -20,8 +20,11 @@ #define SOLUM_M2_BWR_27 0x22 #define SOLUM_M2_BWR_29 0x23 #define SOLUM_M2_BWR_42 0x24 +#define SOLUM_M2_BW_16 0x25 #define SOLUM_M2_BWR_75 0x26 + + #define SOLUM_M3_BWR_97 0x2E #define SOLUM_M3_BWR_43 0x2F diff --git a/zbs243_Tag_FW/Makefile b/zbs243_Tag_FW/Makefile index a7871ed9..34b0239e 100644 --- a/zbs243_Tag_FW/Makefile +++ b/zbs243_Tag_FW/Makefile @@ -3,6 +3,7 @@ BUILD ?= zbs29_ssd1619 #file containing main() must be first! SOURCES += main.c eeprom.c drawing.c +#SOURCES += ccm.c comms.c SOURCES += comms.c SOURCES += syncedproto.c userinterface.c SOURCES += powermgt.c barcode.c i2cdevices.c settings.c @@ -56,7 +57,9 @@ main.elf: $(OBJS) SOURCES += board/zbs29_ssd1619/screen.c SOURCES += board/zbs42_ssd1619/screen.c SOURCES += board/zbs154_ssd1619/screen.c +SOURCES += board/zbs16_ssd1619/screen.c SOURCES += board/zbs29_uc8151/screen.c +SOURCES += board/zbs27_ucvar/screen.c clean: diff --git a/zbs243_Tag_FW/aes.h b/zbs243_Tag_FW/aes.h new file mode 100644 index 00000000..138516d9 --- /dev/null +++ b/zbs243_Tag_FW/aes.h @@ -0,0 +1,20 @@ +#ifndef _AES_H_ +#define _AES_H_ + +#include + + +#define AES_KEY_SIZE 16 +#define AES_BLOCK_SIZE 16 + + +#pragma callee_saves aesPrvSetKey +void aesSetKey(const uint8_t __xdata *key); + +#pragma callee_saves aesPrvEnc +void aesEnc(uint8_t __xdata *data); + + + + +#endif diff --git a/zbs243_Tag_FW/ccm.c b/zbs243_Tag_FW/ccm.c new file mode 100644 index 00000000..4d2f179e --- /dev/null +++ b/zbs243_Tag_FW/ccm.c @@ -0,0 +1,177 @@ +#include "asmUtil.h" +#include "printf.h" +#include "aes.h" +#include "cpu.h" +#include "ccm.h" + + +//TI does not provide nearly enough docs to get AES-CCM working on the CC1110. Le Sigh... + + +static uint8_t __xdata mBlockOut[AES_BLOCK_SIZE]; +static uint8_t __xdata mBlockIn[AES_BLOCK_SIZE]; +static uint8_t __xdata mMic[4]; + + + +//sdcc cannot inline things so we do for it +#define aesCcmPrvCopyNonceSetHalfword(_firstByte, nonce, _val) \ +do { \ + mBlockOut[0] = (_firstByte); \ + xMemCopyShort(mBlockOut + 1, nonce, 13); \ + mBlockOut[14] = 0; /* normally val.hi, but for us - zero */ \ + mBlockOut[15] = (_val); \ +} while(0) + +//leaves result in mBlockOut +#pragma callee_saves aesCcmPrvCalcUnencryptedMic +static void aesCcmPrvCalcUnencryptedMic(const uint8_t __xdata *src, const struct AesCcmInfo __xdata *ccmInfo) __reentrant +{ + uint8_t done; + + //create block 0 + aesCcmPrvCopyNonceSetHalfword(ccmInfo->authSrcLen ? 0x49 : 0x09, ccmInfo->nonce, ccmInfo->encDataLen); + + //encrypt it + aesEnc(mBlockOut); + + if (ccmInfo->authSrcLen) { + + uint8_t __xdata *blk = mBlockIn; + uint8_t now, already = 2; + + *blk++ = 0; //authSrcLen.hi + *blk++ = ccmInfo->authSrcLen; + now = 14; //since we already used 2 + done = 0; + + while (done < ccmInfo->authSrcLen) { + + uint8_t i; + + if (now > (uint8_t)(ccmInfo->authSrcLen - done)) + now = (uint8_t)(ccmInfo->authSrcLen - done); + + xMemCopyShort(blk, src, now); + src += now; + xMemSet(blk + now, 0, 16 - already - now); + + for (i = 0; i < 16; i++) + mBlockOut[i] ^= mBlockIn[i]; + + aesEnc(mBlockOut); + blk = mBlockIn; + done += now; + now = 16; + already = 0; + } + } + + done = 0; + while (done < ccmInfo->encDataLen) { + + uint8_t i, now; + + now = 16; + if (now > ccmInfo->encDataLen - done) + now = ccmInfo->encDataLen - done; + + for (i = 0; i < now; i++) + mBlockOut[i] ^= *src++; + + done += now; + + aesEnc(mBlockOut); + } +} + +void aesCcmEnc(void __xdata *dstP, const void __xdata *srcP, const struct AesCcmInfo __xdata *ccmInfo) __reentrant +{ + const uint8_t __xdata *src = (const uint8_t __xdata*)srcP; + uint8_t __xdata *dst = (uint8_t*)dstP; + uint8_t i, done = 0, now, ctr = 0; + + aesSetKey(ccmInfo->key); + + //it goes after encrypted data + aesCcmPrvCalcUnencryptedMic(src, ccmInfo); + xMemCopyShort(mMic, mBlockOut, sizeof(mMic)); + + //copy authed data + xMemCopyShort(dst, src, ccmInfo->authSrcLen); + src += ccmInfo->authSrcLen; + dst += ccmInfo->authSrcLen; + + //now we encrypt + now = 0; //first block not used + while (done < ccmInfo->encDataLen) { + + if (now > (uint8_t)(ccmInfo->encDataLen - done)) + now = (uint8_t)(ccmInfo->encDataLen - done); + + aesCcmPrvCopyNonceSetHalfword(1, ccmInfo->nonce, ctr++); + aesEnc(mBlockOut); + + if (!now) //first block + + for (i = 0; i < sizeof(mMic); i++) + mMic[i] ^= mBlockOut[i]; + else { + + for (i = 0; i < now; i++) + *dst++ = *src++ ^ mBlockOut[i]; + } + done += now; + now = 16; + } + + xMemCopyShort(dst, mMic, sizeof(mMic)); +} + +__bit aesCcmDec(void __xdata *dstP, const void __xdata *srcP, const struct AesCcmInfo __xdata *ccmInfo) __reentrant +{ + const uint8_t __xdata *src = (const uint8_t __xdata*)srcP; + uint8_t __xdata *dst = (uint8_t*)dstP; + uint8_t i, done, now, ctr = 0; + + aesSetKey(ccmInfo->key); + + //copy authed data + xMemCopyShort(dst, src, ccmInfo->authSrcLen); + src += ccmInfo->authSrcLen; + dst += ccmInfo->authSrcLen; + + //then we decrypt + done = 0; + now = 0; //first block not used + while (done < ccmInfo->encDataLen) { + + if (now > (uint8_t)(ccmInfo->encDataLen - done)) + now = (uint8_t)(ccmInfo->encDataLen - done); + + aesCcmPrvCopyNonceSetHalfword(1, ccmInfo->nonce, ctr++); + + aesEnc(mBlockOut); + + if (!now) { //first block + + //given mic is after data + for (i = 0; i < sizeof(mMic); i++) + mMic[i] = src[ccmInfo->encDataLen + i] ^ mBlockOut[i]; + } + else { + + for (i = 0; i < now; i++) + *dst++ = *src++ ^ mBlockOut[i]; + } + done += now; + now = 16; + } + + aesCcmPrvCalcUnencryptedMic(dstP, ccmInfo); + return xMemEqual(mMic, mBlockOut, sizeof(mMic)); +} + + + + diff --git a/zbs243_Tag_FW/ccm.h b/zbs243_Tag_FW/ccm.h new file mode 100644 index 00000000..3109d02a --- /dev/null +++ b/zbs243_Tag_FW/ccm.h @@ -0,0 +1,32 @@ +#ifndef _CCM_H_ +#define _CCM_H_ + +//CCM defined for T = 4 (mic is 4 bytes), Q = 2 (max data len 65536), N = 13( nonse is 13 bytes), 128-bit AES (16 bytes of key) +//no more than 0xff00 auth data bytes allowed + +#include +#include + +#define AES_CCM_MIC_SIZE 4 +#define AES_CCM_NONCE_SIZE 13 + +//encrypted data follows auth data. both in and out. 4 bytes of MIC appended on the encrypt path, checked on the decrypt path +//data size limited to about 240 bytes..i can live with that + +struct AesCcmInfo { + uint8_t authSrcLen; + uint8_t encDataLen; + const uint8_t __xdata *key; + uint8_t nonce[AES_CCM_NONCE_SIZE]; +}; + + +#pragma callee_saves aesCcmEnc +void aesCcmEnc(void __xdata *dst, const void __xdata *src, const struct AesCcmInfo __xdata *ccmInfo) __reentrant; + +#pragma callee_saves aesCcmDec +__bit aesCcmDec(void __xdata *dst, const void __xdata *src, const struct AesCcmInfo __xdata *ccmInfo) __reentrant; + + + +#endif diff --git a/zbs243_Tag_FW/drawing.c b/zbs243_Tag_FW/drawing.c index 7adfd0d2..e718c48b 100755 --- a/zbs243_Tag_FW/drawing.c +++ b/zbs243_Tag_FW/drawing.c @@ -20,7 +20,7 @@ void drawImageAtAddress(uint32_t addr, uint8_t lut) __reentrant { drawBuffer = malloc(512); if (!drawBuffer) { #ifdef DEBUGDRAWING - pr("malloc during draw failed..\n"); + pr("DRAW: malloc during draw failed..\n"); #endif return; } @@ -30,13 +30,24 @@ void drawImageAtAddress(uint32_t addr, uint8_t lut) __reentrant { switch (eih->dataType) { case DATATYPE_IMG_RAW_1BPP: #ifdef DEBUGDRAWING - pr("Doing raw 1bpp with lut %d\n", lut); + pr("DRAW: Raw 1bpp with lut %d\n", lut); #endif - epdSetup(); + // epdSetup(); if (lut) selectLUT(lut); beginFullscreenImage(); clearScreen(); + beginWriteFramebuffer(EPD_COLOR_BLACK); + #ifdef EPD_BYTEWISE_CS + for (uint16_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { + if (c % 512 == 0) { + eepromRead(addr + sizeof(struct EepromImageHeader) + c, drawBuffer, 512); + } + epdSelect(); + epdSend(drawBuffer[c % 512]); + epdDeselect(); + } + #else epdSelect(); for (uint16_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { if (c % 512 == 0) { @@ -47,16 +58,29 @@ void drawImageAtAddress(uint32_t addr, uint8_t lut) __reentrant { epdSend(drawBuffer[c % 512]); } epdDeselect(); + #endif endWriteFramebuffer(); + break; case DATATYPE_IMG_RAW_2BPP: #ifdef DEBUGDRAWING - pr("Doing raw 2bpp with lut %d\n", lut); + pr("DRAW: Raw 2bpp with lut %d\n", lut); #endif - epdSetup(); if (lut) selectLUT(lut); beginFullscreenImage(); + + beginWriteFramebuffer(EPD_COLOR_BLACK); + #ifdef EPD_BYTEWISE_CS + for (uint16_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { + if (c % 512 == 0) { + eepromRead(addr + sizeof(struct EepromImageHeader) + c, drawBuffer, 512); + } + epdSelect(); + epdSend(drawBuffer[c % 512]); + epdDeselect(); + } + #else epdSelect(); for (uint16_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { if (c % 512 == 0) { @@ -67,9 +91,20 @@ void drawImageAtAddress(uint32_t addr, uint8_t lut) __reentrant { epdSend(drawBuffer[c % 512]); } epdDeselect(); + #endif endWriteFramebuffer(); beginWriteFramebuffer(EPD_COLOR_RED); + #ifdef EPD_BYTEWISE_CS + for (uint16_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { + if (c % 512 == 0) { + eepromRead(addr + sizeof(struct EepromImageHeader) + (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)) + c, drawBuffer, 512); + } + epdSelect(); + epdSend(drawBuffer[c % 512]); + epdDeselect(); + } + #else epdSelect(); for (uint16_t c = 0; c < (SCREEN_HEIGHT * (SCREEN_WIDTH / 8)); c++) { if (c % 512 == 0) { @@ -80,11 +115,12 @@ void drawImageAtAddress(uint32_t addr, uint8_t lut) __reentrant { epdSend(drawBuffer[c % 512]); } epdDeselect(); + #endif endWriteFramebuffer(); break; default: // prevent drawing from an unknown file image type #ifdef DEBUGDRAWING - pr("Image with type 0x%02X was requested, but we don't know what to do with that currently...\n", eih->dataType); + pr("DRAW: Image with type 0x%02X was requested, but we don't know what to do with that currently...\n", eih->dataType); #endif free(drawBuffer); return; diff --git a/zbs243_Tag_FW/i2cdevices.c b/zbs243_Tag_FW/i2cdevices.c index 7eb9296c..d9fe5069 100755 --- a/zbs243_Tag_FW/i2cdevices.c +++ b/zbs243_Tag_FW/i2cdevices.c @@ -18,6 +18,8 @@ #include "printf.h" #include "timer.h" +#include "settings.h" + #define __packed #include "../oepl-definitions.h" #include "../oepl-proto.h" @@ -39,7 +41,10 @@ bool supportsNFCWake() { } if (pcount < 10000) { // P1_3 (Field Detect) dropped to 'low' pretty fast, this means the load on this pin is high + #ifdef DEBUGNFC + pr("counts = %d\n", pcount); pr("NFC: This tag currently does not support NFC wake, load on the FD pin (P1.3) is pretty high.\nOn some boards, a pull-up resistor backpowers the NFC IC. Consider removing it!\n"); + #endif return false; } else { // No reason to believe this pin is currently loaded down severely diff --git a/zbs243_Tag_FW/main.c b/zbs243_Tag_FW/main.c index 78217398..fa7f2904 100755 --- a/zbs243_Tag_FW/main.c +++ b/zbs243_Tag_FW/main.c @@ -161,7 +161,7 @@ uint8_t channelSelect(uint8_t rounds) { // returns 0 if no accesspoints were fo if (detectAP(channelList[c])) { if (mLastLqi > result[c]) result[c] = mLastLqi; #ifdef DEBUGMAIN - if (rounds > 2) pr("Channel: %d - LQI: %d RSSI %d\n", channelList[c], mLastLqi, mLastRSSI); + if (rounds > 2) pr("MAIN: Channel: %d - LQI: %d RSSI %d\n", channelList[c], mLastLqi, mLastRSSI); #endif } } @@ -754,8 +754,12 @@ void main() { wdt10s(); if (currentChannel) { - showAPFound(); +#ifdef DEBUGMAIN + pr("MAIN: Ap Found!\n"); +#endif + //showNoAP(); + showAPFound(); // write the settings to the eeprom powerUp(INIT_EEPROM); writeSettings(); @@ -765,8 +769,11 @@ void main() { currentTagMode = TAG_MODE_ASSOCIATED; doSleep(5000UL); } else { +#ifdef DEBUGMAIN + pr("MAIN: No AP found...\n"); +#endif + //showAPFound(); showNoAP(); - // write the settings to the eeprom powerUp(INIT_EEPROM); writeSettings(); diff --git a/zbs243_Tag_FW/settings.c b/zbs243_Tag_FW/settings.c index c2697d62..c352fd5b 100755 --- a/zbs243_Tag_FW/settings.c +++ b/zbs243_Tag_FW/settings.c @@ -116,5 +116,8 @@ void writeSettings() { void invalidateSettingsEEPROM() { int32_t __xdata valid = 0x0000; + #ifdef DEBUGSETTINGS + pr("SETTINGS: Invalidated settings in EEPROM\n"); + #endif eepromWrite(EEPROM_SETTINGS_AREA_START, (void*)&valid, 4); } \ No newline at end of file diff --git a/zbs243_Tag_FW/settings.h b/zbs243_Tag_FW/settings.h index 06c449f2..e3850c91 100755 --- a/zbs243_Tag_FW/settings.h +++ b/zbs243_Tag_FW/settings.h @@ -6,15 +6,15 @@ #define FW_VERSION 0x0026 // version number #define FW_VERSION_SUFFIX "-MD5" // suffix, like -RC1 or whatever. // #define DEBUGBLOCKS // uncomment to enable extra debug information on the block transfers -// #define DEBUGPROTO // debug protocol +#define DEBUGPROTO // debug protocol // #define DEBUGOTA // debug OTA FW updates -// #define DEBUGDRAWING // debug the drawing part -// #define DEBUGEPD // debug the EPD driver -// #define DEBUGMAIN // parts in the main loop -// #define DEBUGNFC // debug NFC functions +#define DEBUGDRAWING // debug the drawing part +#define DEBUGEPD // debug the EPD driver +#define DEBUGMAIN // parts in the main loop +#define DEBUGNFC // debug NFC functions // #define DEBUGGUI // debug GUI drawing (enabled) -// #define DEBUGSETTINGS // debug settings module (preferences/eeprom) - +#define DEBUGSETTINGS // debug settings module (preferences/eeprom) +// #define DEBUGEEPROM // eeprom-related debug messages #define VALIDATE_IMAGE_MD5 // The firmware can validate the image MD5 before displaying it. This costs about 8mAS (milliamp-second) for a 1.54, 16 // #define PRINT_LUT // uncomment if you want the tag to print the LUT for the current temperature bracket // #define ENABLE_GPIO_WAKE // uncomment to enable GPIO wake @@ -22,7 +22,7 @@ // #define LEAN_VERSION // makes a smaller version, leaving extra flash space for other things // #define WRITE_MAC_FROM_FLASH // takes mac address from flash if none is set in the infopage -#if defined(DEBUGSETTINGS) || defined(DEBUGMSG) || defined(DEBUGBLOCKS) || defined(DEBUGPROTO) || defined(DEBUGOTA) || defined(DEBUGNFC) || defined(DEBUGEPD) || defined(DEBUGMAIN) +#if defined(DEBUGSETTINGS) || defined(DEBUGMSG) || defined(DEBUGBLOCKS) || defined(DEBUGPROTO) || defined(DEBUGOTA) || defined(DEBUGNFC) || defined(DEBUGEPD) || defined(DEBUGMAIN) || defined(DEBUGEEPROM) #define ISDEBUGBUILD #endif diff --git a/zbs243_Tag_FW/syncedproto.c b/zbs243_Tag_FW/syncedproto.c index d3bec98e..ef8e7bd1 100755 --- a/zbs243_Tag_FW/syncedproto.c +++ b/zbs243_Tag_FW/syncedproto.c @@ -217,6 +217,9 @@ static void sendAvailDataReq() { commsTxNoCpy(outBuffer); } struct AvailDataInfo *__xdata getAvailDataInfo() { + #ifdef DEBUGPROTO + pr("PROTO: Full AvailData\n"); + #endif radioRxEnable(true, true); uint32_t __xdata t; for (uint8_t c = 0; c < DATA_REQ_MAX_ATTEMPTS; c++) { @@ -241,6 +244,9 @@ struct AvailDataInfo *__xdata getAvailDataInfo() { return NULL; } struct AvailDataInfo *__xdata getShortAvailDataInfo() { + #ifdef DEBUGPROTO + pr("PROTO: Short AvailData\n"); + #endif radioRxEnable(true, true); uint32_t __xdata t; for (uint8_t c = 0; c < DATA_REQ_MAX_ATTEMPTS; c++) { @@ -314,7 +320,6 @@ static bool processBlockPart(const struct blockPart *bp) { uint16_t __xdata size = BLOCK_PART_DATA_SIZE; // validate if it's okay to copy data if (bp->blockId != curBlock.blockId) { - // pr("got a packet for block %02X\n", bp->blockId); return false; } if (start >= (sizeof(blockbuffer) - 1)) return false; @@ -380,7 +385,6 @@ static void sendBlockRequest() { f->seq = seq++; f->pan = APsrcPan; memcpy(blockreq, &curBlock, sizeof(struct blockRequest)); - // pr("req ver: %02X%02X%02X%02X%02X%02X%02X%02X\n", ((uint8_t*)&blockreq->ver)[0],((uint8_t*)&blockreq->ver)[1],((uint8_t*)&blockreq->ver)[2],((uint8_t*)&blockreq->ver)[3],((uint8_t*)&blockreq->ver)[4],((uint8_t*)&blockreq->ver)[5],((uint8_t*)&blockreq->ver)[6],((uint8_t*)&blockreq->ver)[7]); addCRC(blockreq, sizeof(struct blockRequest)); commsTxNoCpy(outBuffer); } @@ -410,7 +414,7 @@ static struct blockRequestAck *__xdata performBlockRequest() __reentrant { return NULL; default: #ifdef DEBUGPROTO - pr("pkt w/type %02X\n", getPacketType(inBuffer)); + pr("PROTO: pkt w/type %02X\n", getPacketType(inBuffer)); #endif break; } @@ -451,7 +455,7 @@ static void sendXferComplete() { if (ret > 1) { if (getPacketType(inBuffer) == PKT_XFER_COMPLETE_ACK) { #ifdef DEBUGPROTO - pr("XFC ACK\n"); + pr("PROTO: XFC ACK\n"); #endif return; } @@ -459,7 +463,7 @@ static void sendXferComplete() { } } #ifdef DEBUGPROTO - pr("XFC NACK!\n"); + pr("PROTO: XFC NACK!\n"); #endif return; } @@ -481,14 +485,14 @@ static void getNumSlots() { eeSize = eepromGetSize(); uint16_t nSlots = mathPrvDiv32x16(eeSize - EEPROM_IMG_START, EEPROM_IMG_EACH >> 8) >> 8; if (eeSize < EEPROM_IMG_START || !nSlots) { -#ifdef DEBUGPROTO - pr("eeprom is too small\n"); +#ifdef DEBUGEEPROM + pr("EEPROM: eeprom is too small\n"); #endif while (1) ; } else if (nSlots >> 8) { -#ifdef DEBUGPROTO - pr("eeprom is too big, some will be unused\n"); +#ifdef DEBUGEEPROM + pr("EEPROM: eeprom is too big, some will be unused\n"); #endif imgSlots = 254; } else @@ -585,7 +589,7 @@ static uint32_t getHighSlotId() { } } #ifdef DEBUGPROTO - pr("found high id=%lu in slot %d\n", temp, nextImgSlot); + pr("PROTO: found high id=%lu in slot %d\n", temp, nextImgSlot); #endif return temp; } @@ -631,7 +635,7 @@ static bool getDataBlock(const uint16_t blockSize) { if (ack == NULL) { #ifdef DEBUGPROTO - pr("Cancelled request\n"); + pr("PROTO: Cancelled request\n"); #endif return false; } @@ -679,7 +683,9 @@ static bool getDataBlock(const uint16_t blockSize) { curBlock.requestedParts[c / 8] |= (1 << (c % 8)); } requestPartialBlock = false; - pr("blk failed validation!\n"); + #ifdef DEBUGPROTO + pr("PROTO: blk failed validation!\n"); + #endif } } else { #ifndef DEBUGBLOCKS @@ -689,7 +695,9 @@ static bool getDataBlock(const uint16_t blockSize) { requestPartialBlock = true; } } - pr("failed getting block\n"); + #ifdef DEBUGPROTO + pr("PROTO: failed getting block\n"); + #endif return false; } @@ -760,7 +768,7 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *__xdata avail) xferDataInfo.dataSize) { // looks like we did. We'll carry on where we left off. #ifdef DEBUGPROTO - pr("restarting image download"); + pr("PROTO: restarting image download\n"); #endif } else { // new transfer @@ -780,7 +788,7 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *__xdata avail) if (nextImgSlot == startingSlot) { powerDown(INIT_EEPROM); #ifdef DEBUGPROTO - pr("No slots available. Too many images in the slideshow?\n"); + pr("PROTO: No slots available. Too many images in the slideshow?\n"); #endif return true; } @@ -813,7 +821,7 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *__xdata avail) eraseSuccess: powerDown(INIT_EEPROM); #ifdef DEBUGPROTO - pr("new download, writing to slot %d\n", xferImgSlot); + pr("PROTO: new download, writing to slot %d\n", xferImgSlot); #endif // start, or restart the transfer. Copy data from the AvailDataInfo struct, and the struct intself. This forces a new transfer curBlock.blockId = 0; @@ -837,7 +845,7 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *__xdata avail) powerUp(INIT_EEPROM); timerDelay(TIMER_TICKS_PER_MS * 100); #ifdef DEBUGBLOCKS - pr("Saving block %d to slot %d\n", curBlock.blockId, xferImgSlot); + pr("BLOCKS: Saving block %d to slot %d\n", curBlock.blockId, xferImgSlot); #endif saveImgBlockData(xferImgSlot, curBlock.blockId); timerDelay(TIMER_TICKS_PER_MS * 100); @@ -871,7 +879,7 @@ static bool downloadImageDataToEEPROM(const struct AvailDataInfo *__xdata avail) eih->argument = xferDataInfo.dataTypeArgument; #ifdef DEBUGBLOCKS - pr("Now writing datatype 0x%02X to slot %d\n", xferDataInfo.dataType, xferImgSlot); + pr("BLOCKS: Now writing datatype 0x%02X to slot %d\n", xferDataInfo.dataType, xferImgSlot); #endif eepromWrite(getAddressForSlot(xferImgSlot), eih, sizeof(struct EepromImageHeader)); powerDown(INIT_EEPROM); @@ -884,7 +892,7 @@ inline bool processImageDataAvail(struct AvailDataInfo *__xdata avail) { *((uint8_t *)arg) = avail->dataTypeArgument; if (arg.preloadImage) { #ifdef DEBUGPROTO - pr("Preloading image with type 0x%02X from arg 0x%02X\n", arg.specialType, avail->dataTypeArgument); + pr("PROTO: Preloading image with type 0x%02X from arg 0x%02X\n", arg.specialType, avail->dataTypeArgument); #endif powerUp(INIT_EEPROM); switch (arg.specialType) { @@ -911,12 +919,12 @@ inline bool processImageDataAvail(struct AvailDataInfo *__xdata avail) { } powerDown(INIT_EEPROM); #ifdef DEBUGPROTO - pr("downloading preload image...\n"); + pr("PROTO: downloading preload image...\n"); #endif if (downloadImageDataToEEPROM(avail)) { // sets xferImgSlot to the right slot #ifdef DEBUGPROTO - pr("preload complete!\n"); + pr("PROTO: preload complete!\n"); #endif powerUp(INIT_RADIO); sendXferComplete(); @@ -931,7 +939,7 @@ inline bool processImageDataAvail(struct AvailDataInfo *__xdata avail) { if (xMemEqual((const void *__xdata) & avail->dataVer, (const void *__xdata)curDispDataVer, 8)) { // currently displayed, not doing anything except for sending an XFC #ifdef DEBUGPROTO - pr("currently shown image, send xfc\n"); + pr("PROTO: currently shown image, send xfc\n"); #endif powerUp(INIT_RADIO); sendXferComplete(); @@ -965,12 +973,12 @@ inline bool processImageDataAvail(struct AvailDataInfo *__xdata avail) { } else { // not found in cache, prepare to download #ifdef DEBUGPROTO - pr("downloading image...\n"); + pr("PROTO: downloading image...\n"); #endif if (downloadImageDataToEEPROM(avail)) { // sets xferImgSlot to the right slot #ifdef DEBUGPROTO - pr("download complete!\n"); + pr("PROTO: download complete!\n"); #endif powerUp(INIT_RADIO); sendXferComplete(); @@ -1097,7 +1105,7 @@ bool processAvailDataInfo(struct AvailDataInfo *__xdata avail) { case DATATYPE_TAG_CONFIG_DATA: if (xferDataInfo.dataSize == 0 && xMemEqual((const void *__xdata) & avail->dataVer, (const void *__xdata) & xferDataInfo.dataVer, 8)) { #ifdef DEBUGPROTO - pr("this was the same as the last transfer, disregard\n"); + pr("PROTO: this was the same as the last transfer, disregard\n"); #endif powerUp(INIT_RADIO); sendXferComplete(); @@ -1123,7 +1131,7 @@ bool processAvailDataInfo(struct AvailDataInfo *__xdata avail) { break; case DATATYPE_COMMAND_DATA: #ifdef DEBUGPROTO - pr("CMD received\n"); + pr("PROTO: CMD received\n"); #endif powerUp(INIT_RADIO); sendXferComplete(); @@ -1144,11 +1152,11 @@ bool processAvailDataInfo(struct AvailDataInfo *__xdata avail) { } #ifdef EPD_SSD1619 #ifdef DEBUGPROTO - pr("OTA LUT received\n"); + pr("PROTO: OTA LUT received\n"); #endif if (xferDataInfo.dataSize == 0 && xMemEqual((const void *__xdata) & avail->dataVer, (const void *__xdata) & xferDataInfo.dataVer, 8)) { #ifdef DEBUGPROTO - pr("this was the same as the last transfer, disregard\n"); + pr("PROTO: this was the same as the last transfer, disregard\n"); #endif powerUp(INIT_RADIO); sendXferComplete(); @@ -1191,12 +1199,12 @@ bool validateMD5(uint32_t __xdata addr, uint16_t __xdata len) { md5Finalize(); if (xMemEqual((const void *__xdata)ctxdigest, (const void *__xdata) & xferDataInfo.dataVer, 8)) { #ifdef DEBUGPROTO - pr("MD5 pass!"); + pr("PROTO: MD5 pass!\n"); #endif return true; } else { #ifdef DEBUGPROTO - pr("MD5 fail..."); + pr("PROTO: MD5 fail...\n"); #endif return false; } @@ -1206,13 +1214,13 @@ bool validateFWMagic() { flashRead(0x8b, (void *)(blockbuffer + 1024), 256); eepromRead(eeSize - OTA_UPDATE_SIZE, blockbuffer, 256); if (xMemEqual((const void *__xdata)(blockbuffer + 1024), (const void *__xdata)(blockbuffer + 0x8b), 8)) { -#ifdef DEBUGPROTO - pr("magic number matches! good fw"); +#ifdef DEBUGOTA + pr("OTA: magic number matches! good fw\n"); #endif return true; } else { -#ifdef DEBUGPROTO - pr("this probably isn't a (recent) firmware file\n"); +#ifdef DEBUGOTA + pr("OTA: this probably isn't a (recent) firmware file\n"); #endif return false; } diff --git a/zbs243_Tag_FW/userinterface.c b/zbs243_Tag_FW/userinterface.c index 8984d9e3..ff8f5780 100755 --- a/zbs243_Tag_FW/userinterface.c +++ b/zbs243_Tag_FW/userinterface.c @@ -49,7 +49,7 @@ void addCapabilities() { void addOverlay() { if ((currentChannel == 0) && (tagSettings.enableNoRFSymbol)) { -#if (SCREEN_WIDTH == 152) +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 176) || (SCREEN_WIDTH == 200) loadRawBitmap(ant, SCREEN_WIDTH - 16, 0, EPD_COLOR_BLACK); loadRawBitmap(cross, SCREEN_WIDTH - 8, 7, EPD_COLOR_RED); #elif (SCREEN_WIDTH == 128) @@ -65,7 +65,7 @@ void addOverlay() { } if ((batteryVoltage < tagSettings.batLowVoltage) && (tagSettings.enableLowBatSymbol)) { -#if (SCREEN_WIDTH == 152) +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 176) || (SCREEN_WIDTH == 200) loadRawBitmap(battery, SCREEN_WIDTH - 16, SCREEN_HEIGHT - 10, EPD_COLOR_BLACK); #elif (SCREEN_WIDTH == 400) loadRawBitmap(battery, SCREEN_WIDTH - 24, SCREEN_HEIGHT - 16, EPD_COLOR_BLACK); @@ -78,17 +78,19 @@ void addOverlay() { } #ifdef ISDEBUGBUILD -#if (SCREEN_WIDTH == 152) +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 176) || (SCREEN_WIDTH == 200) epdPrintBegin(139, 151, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_RED); #elif (SCREEN_WIDTH == 400) epdPrintBegin(87, 0, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_RED); #elif (SCREEN_WIDTH == 128) epdPrintBegin(87, 0, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_RED); +#elif (SCREEN_WIDTH == 176) + loadRawBitmap(debugbuild, 144, 2, EPD_COLOR_RED); + // epdPrintBegin(130, 1, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_RED); #endif - epdpr("DEBUG"); - epdPrintEnd(); + // epdpr("DEBUG"); + // epdPrintEnd(); #endif - } void afterFlashScreenSaver() { @@ -97,7 +99,7 @@ void afterFlashScreenSaver() { clearScreen(); setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT); -#if (SCREEN_WIDTH == 152) // 1.54" +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 200) // 1.54" epdPrintBegin(0, 0, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); epdpr("OpenEPaperLink"); epdPrintEnd(); @@ -223,7 +225,7 @@ void showSplashScreen() { clearScreen(); setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT); -#if (SCREEN_WIDTH == 152) // 1.54" +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 200) // 1.54" epdPrintBegin(5, 55, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("Starting"); epdPrintEnd(); @@ -254,7 +256,6 @@ void showSplashScreen() { epdPrintEnd(); #endif - #endif #if (SCREEN_WIDTH == 128) // 2.9" @@ -295,6 +296,46 @@ void showSplashScreen() { loadRawBitmap(cloud, 0, 0, EPD_COLOR_RED); #endif #endif + +#if (SCREEN_WIDTH == 176) // 2.7" + + epdPrintBegin(1, SCREEN_HEIGHT - 2, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("OpenEPaperLink"); + epdPrintEnd(); + +#ifdef ISDEBUGBUILD + epdPrintBegin(35, SCREEN_HEIGHT - 16, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("DEBUG"); + epdPrintEnd(); +#endif + + epdPrintBegin(64, SCREEN_HEIGHT - 1, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + addCapabilities(); + epdPrintEnd(); + + epdPrintBegin(SCREEN_WIDTH - 36, SCREEN_HEIGHT - 1, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("zbs27 %04X%s", fwVersion, fwVersionSuffix); + epdPrintEnd(); + + epdPrintBegin(SCREEN_WIDTH - 17, SCREEN_HEIGHT - 26, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_RED); + epdpr("MAC: %02X:%02X", mSelfMac[7], mSelfMac[6]); + epdpr(":%02X:%02X", mSelfMac[5], mSelfMac[4]); + epdpr(":%02X:%02X", mSelfMac[3], mSelfMac[2]); + epdpr(":%02X:%02X", mSelfMac[1], mSelfMac[0]); + epdPrintEnd(); + + uint8_t __xdata buffer[17]; + spr(buffer, "%02X%02X", mSelfMac[7], mSelfMac[6]); + spr(buffer + 4, "%02X%02X", mSelfMac[5], mSelfMac[4]); + spr(buffer + 8, "%02X%02X", mSelfMac[3], mSelfMac[2]); + spr(buffer + 12, "%02X%02X", mSelfMac[1], mSelfMac[0]); + printBarcode(buffer, 120, 284); +#ifndef LEAN_VERSION + loadRawBitmap(oepli, 24, 12, EPD_COLOR_BLACK); + loadRawBitmap(cloud, 24, 0, EPD_COLOR_RED); +#endif +#endif + #if (SCREEN_WIDTH == 400) // 4.2" epdPrintBegin(3, 3, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("Starting"); @@ -327,7 +368,7 @@ void showSplashScreen() { #endif drawWithSleep(); - powerUp(INIT_EPD); + powerDown(INIT_EPD); } void showApplyUpdate() { @@ -336,7 +377,7 @@ void showApplyUpdate() { clearScreen(); setColorMode(EPD_MODE_IGNORE, EPD_MODE_NORMAL); -#if (SCREEN_WIDTH == 152) +#if (SCREEN_WIDTH == 152)|| (SCREEN_WIDTH == 200) epdPrintBegin(12, 60, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); #endif #if (SCREEN_WIDTH == 128) @@ -357,7 +398,7 @@ void showFailedUpdate() { selectLUT(1); clearScreen(); setColorMode(EPD_MODE_IGNORE, EPD_MODE_NORMAL); -#if (SCREEN_WIDTH == 152) +#if (SCREEN_WIDTH == 152)|| (SCREEN_WIDTH == 200) epdPrintBegin(18, 60, EPD_DIRECTION_X, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); #endif #if (SCREEN_WIDTH == 128) @@ -374,7 +415,7 @@ void showFailedUpdate() { void showAPFound() { if (displayCustomImage(CUSTOM_IMAGE_APFOUND)) return; - powerUp(INIT_EPD | INIT_EEPROM); + powerUp(INIT_EPD); clearScreen(); setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT); @@ -382,6 +423,42 @@ void showAPFound() { selectLUT(1); #endif +#if (SCREEN_WIDTH == 176) + epdPrintBegin(0, SCREEN_HEIGHT - 10, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("Waiting for data"); + epdPrintEnd(); + epdPrintBegin(48, SCREEN_HEIGHT - 17, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("Found the following AP:"); + epdPrintEnd(); + + epdPrintBegin(64, SCREEN_HEIGHT - 3, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("AP MAC: %02X:%02X", APmac[7], APmac[6]); + epdpr(":%02X:%02X", APmac[5], APmac[4]); + epdpr(":%02X:%02X", APmac[3], APmac[2]); + epdpr(":%02X:%02X", APmac[1], APmac[0]); + epdPrintEnd(); + epdPrintBegin(80, SCREEN_HEIGHT - 3, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("Ch: %d RSSI: %d LQI: %d", currentChannel, mLastRSSI, mLastLqi); + epdPrintEnd(); + + epdPrintBegin(SCREEN_WIDTH - 30, SCREEN_HEIGHT - 18, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("Tag MAC: %02X:%02X", mSelfMac[7], mSelfMac[6]); + epdpr(":%02X:%02X", mSelfMac[5], mSelfMac[4]); + epdpr(":%02X:%02X", mSelfMac[3], mSelfMac[2]); + epdpr(":%02X:%02X", mSelfMac[1], mSelfMac[0]); + epdPrintEnd(); + + uint8_t __xdata buffer[17]; + spr(buffer, "%02X%02X", mSelfMac[7], mSelfMac[6]); + spr(buffer + 4, "%02X%02X", mSelfMac[5], mSelfMac[4]); + spr(buffer + 8, "%02X%02X", mSelfMac[3], mSelfMac[2]); + spr(buffer + 12, "%02X%02X", mSelfMac[1], mSelfMac[0]); + printBarcode(buffer, 168, SCREEN_HEIGHT - 30); +#ifndef LEAN_VERSION + loadRawBitmap(receive, 36, 1, EPD_COLOR_BLACK); +#endif +#endif + #if (SCREEN_WIDTH == 128) epdPrintBegin(0, 285, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("Waiting for data..."); @@ -416,7 +493,7 @@ void showAPFound() { loadRawBitmap(receive, 36, 14, EPD_COLOR_BLACK); #endif #endif -#if (SCREEN_WIDTH == 152) // 1.54" +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 200) // 1.54" epdPrintBegin(25, 0, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("Waiting"); epdPrintEnd(); @@ -486,19 +563,19 @@ void showAPFound() { #endif addOverlay(); drawWithSleep(); - powerDown(INIT_EPD | INIT_EEPROM); + powerDown(INIT_EPD); } void showNoAP() { if (displayCustomImage(CUSTOM_IMAGE_NOAPFOUND)) return; - powerUp(INIT_EPD | INIT_EEPROM); + powerUp(INIT_EPD); #if (HW_TYPE != SOLUM_M2_BW_29_LOWTEMP) selectLUT(EPD_LUT_NO_REPEATS); #endif setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT); clearScreen(); -#if (SCREEN_WIDTH == 128) // 2,9" +#if (SCREEN_WIDTH == 128) || (SCREEN_WIDTH == 176) // 2,9" epdPrintBegin(0, 285, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("No AP found :("); epdPrintEnd(); @@ -513,7 +590,7 @@ void showNoAP() { loadRawBitmap(failed, 42, 26, EPD_COLOR_RED); #endif #endif -#if (SCREEN_WIDTH == 152) // 1.54" +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 200) // 1.54" epdPrintBegin(40, 0, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("No AP"); epdPrintEnd(); @@ -542,7 +619,7 @@ void showNoAP() { #endif addOverlay(); drawWithSleep(); - powerDown(INIT_EPD | INIT_EEPROM); + powerDown(INIT_EPD); } void showLongTermSleep() { @@ -577,7 +654,20 @@ void showNoEEPROM() { loadRawBitmap(failed, 42, 26, EPD_COLOR_RED); #endif #endif -#if (SCREEN_WIDTH == 152) // 1.54" + +#if (SCREEN_WIDTH == 176) // 2.9" + epdPrintBegin(1, 260, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); + epdpr("EEPROM FAILED :("); + epdPrintEnd(); + epdPrintBegin(160, 200, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK); + epdpr("Sleeping forever :'("); + epdPrintEnd(); +#ifndef LEAN_VERSION + loadRawBitmap(failed, 80, 114, EPD_COLOR_RED); +#endif +#endif + +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 200) // 1.54" epdPrintBegin(26, 0, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("EEPROM "); epdPrintEnd(); @@ -620,7 +710,7 @@ void showNoMAC() { loadRawBitmap(failed, 42, 26, EPD_COLOR_RED); #endif #endif -#if (SCREEN_WIDTH == 152) // 1.54" +#if (SCREEN_WIDTH == 152) || (SCREEN_WIDTH == 200) // 1.54" epdPrintBegin(20, 0, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK); epdpr("NO MAC"); epdPrintEnd(); diff --git a/zbs243_shared/bitmaps.h b/zbs243_shared/bitmaps.h index 80221f03..24c91677 100644 --- a/zbs243_shared/bitmaps.h +++ b/zbs243_shared/bitmaps.h @@ -6,6 +6,22 @@ #include "screen.h" +#ifdef ISDEBUGBUILD +static const uint8_t __code debugbuild[] = { +32,11, + 0x7f, 0xff, 0xff, 0xe0, + 0x80, 0x00, 0x00, 0x10, + 0xb9, 0xee, 0x49, 0x90, + 0xa5, 0x09, 0x4a, 0x50, + 0xa5, 0x09, 0x4a, 0x10, + 0xa5, 0xce, 0x4a, 0xd0, + 0xa5, 0x09, 0x4a, 0x50, + 0xa5, 0x09, 0x4a, 0x50, + 0xb9, 0xee, 0x31, 0x90, + 0x80, 0x00, 0x00, 0x10, + 0x7f, 0xff, 0xff, 0xe0, +}; +#endif #ifndef LEAN_VERSION diff --git a/zbs243_shared/board/ssd1619.c b/zbs243_shared/board/ssd1619.c index 054329d3..f80d95f4 100755 --- a/zbs243_shared/board/ssd1619.c +++ b/zbs243_shared/board/ssd1619.c @@ -238,32 +238,39 @@ void epdEnterSleep() { isInited = false; } void epdSetup() { - epdReset(); + epdReset(); + #ifdef VAR_BW16 + commandBegin(CMD_DRV_OUTPUT_CTRL); + epdSend((SCREEN_HEIGHT - 1) & 0xff); + epdSend((SCREEN_HEIGHT - 1) >> 8); + epdSend(0x00); + commandEnd(); + shortCommand1(CMD_BORDER_WAVEFORM_CTRL, 0x0B); // stock says 0x33 + shortCommand1(CMD_DUMMY_PERIOD, 0x1B); + shortCommand1(CMD_GATE_LINE_WIDTH, 0x0B); + shortCommand1(CMD_TEMP_SENSOR_CONTROL, 0x80); + shortCommand1(CMD_DISP_UPDATE_CTRL, 0x40); + #else shortCommand1(CMD_ANALOG_BLK_CTRL, 0x54); shortCommand1(CMD_DIGITAL_BLK_CTRL, 0x3B); shortCommand2(CMD_UNKNOWN_1, 0x04, 0x63); - commandBegin(CMD_SOFT_START_CTRL); epdSend(0x8f); epdSend(0x8f); epdSend(0x8f); epdSend(0x3f); commandEnd(); - commandBegin(CMD_DRV_OUTPUT_CTRL); epdSend((SCREEN_HEIGHT - 1) & 0xff); epdSend((SCREEN_HEIGHT - 1) >> 8); epdSend(0x00); commandEnd(); - - // shortCommand1(CMD_DATA_ENTRY_MODE, 0x03); - // shortCommand1(CMD_BORDER_WAVEFORM_CTRL, 0xC0); // blurry edges shortCommand1(CMD_BORDER_WAVEFORM_CTRL, 0x01); shortCommand1(CMD_TEMP_SENSOR_CONTROL, 0x80); shortCommand1(CMD_DISP_UPDATE_CTRL2, 0xB1); // mode 1 (i2C) - // shortCommand1(CMD_DISP_UPDATE_CTRL2, 0xB9); // mode 2? shortCommand(CMD_ACTIVATION); epdBusyWait(TIMER_TICKS_PER_SECOND); + #endif isInited = true; currentLut = EPD_LUT_DEFAULT; } @@ -372,6 +379,7 @@ static void lutGroupRepeatReduce(uint8_t group, uint8_t factor) { } } void selectLUT(uint8_t lut) { + #ifdef CUSTOMLUTS if (currentLut == lut) { return; } @@ -468,6 +476,7 @@ void selectLUT(uint8_t lut) { } writeLut(); free(waveformbuffer); + #endif } void setWindowX(uint16_t start, uint16_t end) { @@ -516,7 +525,11 @@ void clearScreen() { epdBusyWait(TIMER_TICKS_PER_MS * 100); } void draw() { + #ifdef VAR_BW16 + shortCommand1(0x22, 0xF7); + #else shortCommand1(0x22, 0xCF); + #endif // shortCommand1(0x22, SCREEN_CMD_REFRESH); shortCommand(0x20); epdBusyWait(TIMER_TICKS_PER_SECOND * 120); diff --git a/zbs243_shared/board/uc-var-27.c b/zbs243_shared/board/uc-var-27.c new file mode 100644 index 00000000..996738ca --- /dev/null +++ b/zbs243_shared/board/uc-var-27.c @@ -0,0 +1,824 @@ +#include "uc8151.h" + +#include +#include + +#include "asmUtil.h" +#include "barcode.h" +#include "board.h" +#include "cpu.h" +#include "font.h" +#include "lut.h" +#include "printf.h" +#include "screen.h" +#include "settings.h" +#include "sleep.h" +#include "spi.h" +#include "timer.h" +#include "wdt.h" +#include "stdarg.h" + +#define CMD_PANEL_SETTING 0x00 +#define CMD_POWER_SETTING 0x01 +#define CMD_POWER_OFF 0x02 +#define CMD_POWER_OFF_SEQUENCE 0x03 +#define CMD_POWER_ON 0x04 +#define CMD_POWER_ON_MEASURE 0x05 +#define CMD_BOOSTER_SOFT_START 0x06 +#define CMD_DEEP_SLEEP 0x07 +#define CMD_DISPLAY_START_TRANSMISSION_DTM1 0x10 +#define CMD_DATA_STOP 0x11 +#define CMD_DISPLAY_REFRESH 0x12 +#define CMD_DISPLAY_START_TRANSMISSION_DTM2 0x13 +#define CMD_PLL_CONTROL 0x30 +#define CMD_TEMPERATURE_CALIB 0x40 +#define CMD_TEMPERATURE_SELECT 0x41 +#define CMD_TEMPERATURE_WRITE 0x42 +#define CMD_TEMPERATURE_READ 0x43 +#define CMD_VCOM_INTERVAL 0x50 +#define CMD_LOWER_POWER_DETECT 0x51 +#define CMD_TCON_SETTING 0x60 +#define CMD_RESOLUTION_SETING 0x61 +#define CMD_REVISION 0x70 +#define CMD_STATUS 0x71 +#define CMD_AUTO_MEASUREMENT_VCOM 0x80 +#define CMD_READ_VCOM 0x81 +#define CMD_VCOM_DC_SETTING 0x82 +#define CMD_PARTIAL_WINDOW 0x90 +#define CMD_PARTIAL_IN 0x91 +#define CMD_PARTIAL_OUT 0x92 +#define CMD_PROGRAM_MODE 0xA0 +#define CMD_ACTIVE_PROGRAM 0xA1 +#define CMD_READ_OTP 0xA2 +#define CMD_CASCADE_SET 0xE0 +#define CMD_POWER_SAVING 0xE3 +#define CMD_FORCE_TEMPERATURE 0xE5 + +enum PSR_FLAGS { + RES_96x230 = 0b00000000, + RES_96x252 = 0b01000000, + RES_128x296 = 0b10000000, + RES_160x296 = 0b11000000, + + LUT_OTP = 0b00000000, + LUT_REG = 0b00100000, + + FORMAT_BWR = 0b00000000, + FORMAT_BW = 0b00010000, + + SCAN_DOWN = 0b00000000, + SCAN_UP = 0b00001000, + + SHIFT_LEFT = 0b00000000, + SHIFT_RIGHT = 0b00000100, + + BOOSTER_OFF = 0b00000000, + BOOSTER_ON = 0b00000010, + + RESET_SOFT = 0b00000000, + RESET_NONE = 0b00000001 +}; + +enum PWR_FLAGS_1 { + VDS_EXTERNAL = 0b00000000, + VDS_INTERNAL = 0b00000010, + + VDG_EXTERNAL = 0b00000000, + VDG_INTERNAL = 0b00000001 +}; + +enum PWR_FLAGS_2 { + VCOM_VD = 0b00000000, + VCOM_VG = 0b00000100, + + VGHL_16V = 0b00000000, + VGHL_15V = 0b00000001, + VGHL_14V = 0b00000010, + VGHL_13V = 0b00000011 +}; + +enum BOOSTER_FLAGS { + START_10MS = 0b00000000, + START_20MS = 0b01000000, + START_30MS = 0b10000000, + START_40MS = 0b11000000, + + STRENGTH_1 = 0b00000000, + STRENGTH_2 = 0b00001000, + STRENGTH_3 = 0b00010000, + STRENGTH_4 = 0b00011000, + STRENGTH_5 = 0b00100000, + STRENGTH_6 = 0b00101000, + STRENGTH_7 = 0b00110000, + STRENGTH_8 = 0b00111000, + + OFF_0_27US = 0b00000000, + OFF_0_34US = 0b00000001, + OFF_0_40US = 0b00000010, + OFF_0_54US = 0b00000011, + OFF_0_80US = 0b00000100, + OFF_1_54US = 0b00000101, + OFF_3_34US = 0b00000110, + OFF_6_58US = 0b00000111 +}; + +enum PFS_FLAGS { + FRAMES_1 = 0b00000000, + FRAMES_2 = 0b00010000, + FRAMES_3 = 0b00100000, + FRAMES_4 = 0b00110000 +}; + +enum TSE_FLAGS { + TEMP_INTERNAL = 0b00000000, + TEMP_EXTERNAL = 0b10000000, + + OFFSET_0 = 0b00000000, + OFFSET_1 = 0b00000001, + OFFSET_2 = 0b00000010, + OFFSET_3 = 0b00000011, + OFFSET_4 = 0b00000100, + OFFSET_5 = 0b00000101, + OFFSET_6 = 0b00000110, + OFFSET_7 = 0b00000111, + + OFFSET_MIN_8 = 0b00001000, + OFFSET_MIN_7 = 0b00001001, + OFFSET_MIN_6 = 0b00001010, + OFFSET_MIN_5 = 0b00001011, + OFFSET_MIN_4 = 0b00001100, + OFFSET_MIN_3 = 0b00001101, + OFFSET_MIN_2 = 0b00001110, + OFFSET_MIN_1 = 0b00001111 +}; + +enum PLL_FLAGS { + // other frequency options exist but there doesn't seem to be much + // point in including them - this is a fair range of options... + HZ_29 = 0b00111111, + HZ_33 = 0b00111110, + HZ_40 = 0b00111101, + HZ_50 = 0b00111100, + HZ_67 = 0b00111011, + HZ_100 = 0b00111010, + HZ_200 = 0b00111001 +}; + +#define commandEnd() \ + do { \ + P1_7 = 1; \ + } while (0) + +#define markCommand() \ + do { \ + P2_2 = 0; \ + } while (0) + +#define markData() \ + do { \ + P2_2 = 1; \ + } while (0) + +extern void dump(uint8_t* __xdata a, uint16_t __xdata l); // remove me when done + +static uint8_t __xdata epdCharSize = 1; // character size, 1 or 2 (doubled) +static bool __xdata directionY = true; // print direction, X or Y (true) +static uint8_t __xdata rbuffer[32]; // used to rotate bits around +static uint16_t __xdata fontCurXpos = 0; // current X value we're working with +static uint16_t __xdata fontCurYpos = 0; // current Y value we're working with +static uint8_t __xdata currentLut = 0; +static uint8_t __xdata dispLutSize = 0; +static bool __xdata drawDirection = false; +static bool __xdata isInited = false; + +bool __xdata epdGPIOActive = false; + +#define LUT_BUFFER_SIZE 128 +uint8_t waveformbuffer[LUT_BUFFER_SIZE]; +struct waveform10* __xdata waveform10 = (struct waveform10*)waveformbuffer; // holds the LUT/waveform +struct waveform* __xdata waveform7 = (struct waveform*)waveformbuffer; // holds the LUT/waveform + +#pragma callee_saves epdBusySleep +#pragma callee_saves epdBusyWait +static void epdBusySleep(uint32_t timeout) { + uint8_t tmp_P2FUNC = P2FUNC; + uint8_t tmp_P2DIR = P2DIR; + uint8_t tmp_P2PULL = P2PULL; + uint8_t tmp_P2LVLSEL = P2LVLSEL; + P2FUNC &= 0xfd; + P2DIR |= 2; + P2PULL |= 2; + P2LVLSEL &= ~(2); + + P2CHSTA &= 0xfd; + P2INTEN |= 2; + P2CHSTA &= 0xfd; + sleepForMsec(timeout); + wdtOn(); + P2CHSTA &= 0xfd; + P2INTEN &= 0xfd; + + P2FUNC = tmp_P2FUNC; + P2DIR = tmp_P2DIR; + P2PULL = tmp_P2PULL; + P2LVLSEL = tmp_P2LVLSEL; + eepromPrvDeselect(); +} +static void epdBusyWait(uint32_t timeout) { + uint32_t __xdata start = timerGet(); + + while (timerGet() - start < timeout) { + if (P2_1) + return; + } +#ifdef DEBUGEPD + pr("screen timeout %lu ticks :(\n", timerGet() - start); +#endif + while (1) + ; +} + +static void epdWaitUntilBusy(uint32_t timeout) { + uint32_t __xdata start = timerGet(); + + while (timerGet() - start < timeout) { + if (!P2_1) + return; + } +#ifdef DEBUGEPD + pr("Waited until the EPD would start doing anything, timeout %lu ticks :(\n", timerGet() - start); +#endif + while (1) + ; +} + +static void commandReadBegin(uint8_t cmd) { + epdSelect(); + markCommand(); + spiByte(cmd); // dump LUT + + P0DIR = (P0DIR & ~(1 << 0)) | (1 << 1); + P0 &= ~(1 << 0); + P0FUNC &= ~((1 << 0) | (1 << 1)); + P2_2 = 1; +} +static void commandReadEnd() { + // set up pins for spi (0.0,0.1,0.2) + P0FUNC |= (1 << 0) | (1 << 1); + epdDeselect(); +} +#pragma callee_saves epdReadByte +static uint8_t epdReadByte() { + uint8_t val = 0, i; + + for (i = 0; i < 8; i++) { + P0_0 = 1; + __asm__("nop\nnop\nnop\nnop\nnop\nnop\n"); + val <<= 1; + if (P0_1) + val++; + P0_0 = 0; + __asm__("nop\nnop\nnop\nnop\nnop\nnop\n"); + } + + return val; +} +static void shortCommand(uint8_t cmd) { + epdSelect(); + markCommand(); + spiTXByte(cmd); + epdDeselect(); +} +static void shortCommand1(uint8_t cmd, uint8_t arg) { + epdSelect(); + markCommand(); + spiTXByte(cmd); + markData(); + spiTXByte(arg); + epdDeselect(); +} +static void shortCommand2(uint8_t cmd, uint8_t arg1, uint8_t arg2) { + epdSelect(); + markCommand(); + spiTXByte(cmd); + markData(); + spiTXByte(arg1); + spiTXByte(arg2); + epdDeselect(); +} +static void commandBegin(uint8_t cmd) { + epdSelect(); + markCommand(); + spiTXByte(cmd); + markData(); +} +static void epdReset() { + timerDelay(TIMER_TICKS_PER_SECOND / 1000); + P2_0 = 0; + timerDelay(TIMER_TICKS_PER_SECOND / 1000); + P2_0 = 1; + epdBusyWait(133300); + timerDelay(TIMER_TICKS_PER_SECOND / 1000); +} +void epdConfigGPIO(bool setup) { + // data / _command: 2.2 + // busy 2.1 + // reset 2.0 + // _select 1.7 + // bs1 1.2 + + // GENERIC SPI BUS PINS + // spi.clk 0.0 + // spi.mosi 0.1 + if (epdGPIOActive == setup) return; + if (setup) { + pr("EPD: configuring GPIO\n"); + P2DIR |= (1 << 1); // busy as input + P2DIR &= ~((1 << 2) | (1 << 0)); // D/C and Reset as output + P1DIR &= ~((1 << 7) | (1 << 2)); // select and bs1 as output + P1_2 = 0; // select 4-wire SPI / BS1 = low + P1_7 = 1; // deselect EPD + } else { + pr("EPD: Deconfiguring GPIO\n"); + P2DIR |= ((1 << 2) | (1 << 0)); // DC and Reset as input + P2 &= ~((1 << 2) | (1 << 0)); + P1DIR |= ((1 << 7) | (1 << 2)); // Select and BS1 as input + P2 &= ~((1 << 7)); + } + epdGPIOActive = setup; +} +void epdEnterSleep() { + pr("EPD Entering sleep\n"); + timerDelay(20 * TIMER_TICKS_PER_MS); + epdReset(); + timerDelay(20 * TIMER_TICKS_PER_MS); + shortCommand1(CMD_DEEP_SLEEP, 0xA5); + isInited = false; +} + +void epdWrite(uint8_t reg, uint8_t len, ...) { + va_list valist; + va_start(valist, len); + markCommand(); + epdSelect(); + epdSend(reg); + epdDeselect(); + markData(); + for (uint8_t i = 0; i < len; i++) { + epdSelect(); + epdSend(va_arg(valist, int)); + epdDeselect(); + } + va_end(valist); +} + +static void epdDrawDirection(bool direction) { + if (direction == drawDirection) return; + + drawDirection = direction; + + uint8_t psr_setting = FORMAT_BWR | BOOSTER_ON | RESET_NONE | LUT_OTP | SHIFT_RIGHT; + if (drawDirection) { + psr_setting |= SCAN_DOWN; + } else { + psr_setting |= SCAN_UP; + } + epdWrite(CMD_PANEL_SETTING, 1, psr_setting); +} + +void epdSetup() { + pr("EPD: Start setup\n"); + epdReset(); + + epdWrite(0x06, 3, 0x07, 0x07, 0x17); + epdWrite(0xF8, 2, 0x60, 0xA5); + epdWrite(0xF8, 2, 0x89, 0xA5); + epdWrite(0xF8, 2, 0x90, 0x00); + epdWrite(0xF8, 2, 0x93, 0x2A); + epdWrite(0xF8, 2, 0xA0, 0xA5); + epdWrite(0xF8, 2, 0xA1, 0x00); + epdWrite(0xF8, 2, 0x73, 0x41); + // epdWrite(0x00, 1, 0x07); <<- stock init + drawDirection = true; + epdDrawDirection(false); + epdWrite(0x16, 1, 0x00); + epdWrite(0x50, 1, 0x87); + // epdWrite(0x50, 1, 0x57); <<- this is the stock init + + shortCommand(CMD_POWER_ON); + epdWaitUntilBusy(133300); + epdWaitRdy(); + timerDelay(1333 * 5); + pr("EPD: setup complete\n"); +} +static uint8_t epdGetStatus() { + uint8_t sta; + commandReadBegin(0x2F); + sta = epdReadByte(); + commandReadEnd(); + return sta; +} +uint16_t epdGetBattery(void) { + uint8_t sta; + commandReadBegin(0x51); + sta = epdReadByte(); + commandReadEnd(); + if (sta) return 3000; + return 2100; +} + +void selectLUT(uint8_t lut) { + // implement alternative LUTs here. Currently just reset the watchdog to two minutes, + // to ensure it doesn't reset during the much longer bootup procedure + lut += 1; // make the compiler a happy camper + wdtSetResetVal(0xFF8E797F); // 120 s + wdtOn(); + return; +} + +static uint16_t __xdata xWindowStart = 0; +static uint16_t __xdata xWidth = 0; +static uint16_t __xdata yWindowStart = 0; +static uint16_t __xdata yHeight = 0; + +void setWindowXY(uint16_t xstart, uint16_t xend, uint16_t ystart, uint16_t yend) { + xstart /= 8; + xstart *= 8; + + xWindowStart = xstart; + xWidth = xend - xstart; + yWindowStart = ystart; + yHeight = yend - ystart; + + xWidth /= 8; + xWidth *= 8; + + return; +} + +void startWindow(bool color) { + if (color) { + shortCommand(0x15); + markData(); + } else { + shortCommand(0x14); + markData(); + } + epdSelect(); + epdSend((xWindowStart >> 8) & 0x01); + epdDeselect(); + + epdSelect(); + epdSend(xWindowStart & 0xFF); + epdDeselect(); + + epdSelect(); + epdSend((yWindowStart >> 8) & 0x01); + epdDeselect(); + + epdSelect(); + epdSend(yWindowStart & 0xFF); + epdDeselect(); + + epdSelect(); + epdSend((xWidth >> 8) & 0x01); + epdDeselect(); + + epdSelect(); + epdSend(xWidth & 0xFF); + epdDeselect(); + + epdSelect(); + epdSend((yHeight >> 8) & 0x01); + epdDeselect(); + + epdSelect(); + epdSend(yHeight & 0xFF); + epdDeselect(); +} + +void setColorMode(uint8_t red, uint8_t bw) { + // this does exactly nothing, just keeps the compiler from barking + red = 1; + bw = 0; + return; +} +void clearScreen() { + // shortCommand(CMD_PARTIAL_OUT); + commandBegin(CMD_DISPLAY_START_TRANSMISSION_DTM2); + for (uint16_t c = 0; c < ((1UL * SCREEN_HEIGHT * SCREEN_WIDTH) / 2); c++) { + epdSelect(); + epdSend(0x00); + epdDeselect(); + } + commandEnd(); + epdWaitRdy(); + commandBegin(CMD_DISPLAY_START_TRANSMISSION_DTM1); + for (uint16_t c = 0; c < ((1UL * SCREEN_HEIGHT * SCREEN_WIDTH) / 2); c++) { + epdSelect(); + epdSend(0x00); + epdDeselect(); + } +} +void draw() { + shortCommand(CMD_DISPLAY_REFRESH); + epdWaitRdy(); + timerDelay(133300); +} +void drawNoWait() { + shortCommand(CMD_DISPLAY_REFRESH); +} +void drawWithSleep() { + shortCommand(CMD_DISPLAY_REFRESH); + + epdWaitUntilBusy(1333000); + + uint8_t tmp_P2FUNC = P2FUNC; + uint8_t tmp_P2DIR = P2DIR; + uint8_t tmp_P2PULL = P2PULL; + uint8_t tmp_P2LVLSEL = P2LVLSEL; + P2FUNC &= 0xfd; + P2DIR |= 2; + P2PULL |= 2; + P2LVLSEL &= ~(2); + + P2CHSTA &= 0xfd; + P2INTEN = 2; + P2CHSTA &= 0xfd; + sleepForMsec(TIMER_TICKS_PER_SECOND * 120); + wdtOn(); + P2CHSTA &= 0xfd; + P2INTEN &= 0xfd; + + P2FUNC = tmp_P2FUNC; + P2DIR = tmp_P2DIR; + P2PULL = tmp_P2PULL; + P2LVLSEL = tmp_P2LVLSEL; + eepromPrvDeselect(); + timerDelay(133300); +} +void epdWaitRdy() { + epdBusyWait(TIMER_TICKS_PER_SECOND * 120); + timerDelay(133300); +} +void beginFullscreenImage() { + //drawDirection = true; + // epdDrawDirection(false); +} +void beginWriteFramebuffer(bool color) { + if (color == EPD_COLOR_RED) { + epdWrite(CMD_DISPLAY_START_TRANSMISSION_DTM2, 0); + } else { + epdWrite(CMD_DISPLAY_START_TRANSMISSION_DTM1, 0); + } +} +void endWriteFramebuffer() { +} + +void loadRawBitmap(uint8_t* bmp, uint16_t x, uint16_t y, bool color) __reentrant { + // this function is very badly hurt by the switch to UC8151, taking up LOTS of valuable idata space. Only defining variables + // as static, or the function as reentrant (relegating variables to the stack) seemed to fix the idata issue. Fix me, or put me out of my misery... + + uint16_t xsize = bmp[0] / 8; + if (bmp[0] % 8) xsize++; + uint16_t ysize = bmp[1]; + uint16_t size = xsize * bmp[1]; + + // shortCommand1(CMD_DATA_ENTRY_MODE, 3); + + bmp += 2; + + uint16_t c = 0; + uint16_t curY = y; + while (1) { + if (c % xsize == 0) { + if (drawDirection) { + setWindowXY(x, x + xsize * 8, SCREEN_HEIGHT - curY - 1, SCREEN_HEIGHT - curY); + } else { + setWindowXY(x, x + xsize * 8, curY - 1, curY); + } + curY++; + if (color) { + startWindow(true); + } else { + startWindow(false); + } + } + epdSelect(); + epdSend(*(bmp++)); + epdDeselect(); + c++; + if (!size--) break; + } +} +void printBarcode(const uint8_t* string, uint16_t x, uint16_t y) { + setWindowXY(x, x + 8, SCREEN_HEIGHT - y, SCREEN_HEIGHT); + startWindow(false); + struct BarcodeInfo __xdata bci = { + .str = string, + }; + while (!barcodeIsDone(&bci)) { + epdSelect(); + if (barcodeNextBar(&bci)) { + epdSend(0xFF); + } else { + epdSend(0x00); + } + epdDeselect(); + } +} +// stuff for printing text +static void pushXFontBytesToEPD(uint8_t byte1, uint8_t byte2) { + if (epdCharSize == 1) { + uint8_t offset = 7 - (fontCurXpos % 8); + for (uint8_t c = 0; c < 8; c++) { + if (byte2 & (1 << (7 - c))) rbuffer[c] |= (1 << offset); + } + for (uint8_t c = 0; c < 8; c++) { + if (byte1 & (1 << (7 - c))) rbuffer[8 + c] |= (1 << offset); + } + fontCurXpos++; + } else { + uint8_t offset = 6 - (fontCurXpos % 8); + // double font size + for (uint8_t c = 0; c < 8; c++) { + if (byte2 & (1 << (7 - c))) { + rbuffer[c * 2] |= (3 << offset); + rbuffer[(c * 2) + 1] |= (3 << offset); + } + } + for (uint8_t c = 0; c < 8; c++) { + if (byte1 & (1 << (7 - c))) { + rbuffer[(c * 2) + 16] |= (3 << offset); + rbuffer[(c * 2) + 17] |= (3 << offset); + } + } + fontCurXpos += 2; + } + if (fontCurXpos % 8 == 0) { + // next byte, flush current byte to EPD + for (uint8_t i = 0; i < (16 * epdCharSize); i++) { + epdSelect(); + epdSend(rbuffer[i]); + epdDeselect(); + } + memset(rbuffer, 0, 32); + } +} +static void bufferByteShift(uint8_t byte) { + /* + rbuffer[0] = 0; // previous value + rbuffer[1] = y%8; // offset + rbuffer[2] = 0; // current byte counter; + rbuffer[3] = 1+(epdCharsize*2); + */ + + if (rbuffer[1] == 0) { + epdSelect(); + epdSend(byte); + epdDeselect(); + } else { + uint8_t offset = rbuffer[1]; + rbuffer[0] |= (byte >> offset); + epdSelect(); + epdSend(rbuffer[0]); + epdDeselect(); + // epdSend(byte); + rbuffer[0] = (byte << (8 - offset)); + rbuffer[2]++; + if (rbuffer[2] == rbuffer[3]) { + epdSelect(); + epdSend(rbuffer[0]); + epdDeselect(); + rbuffer[0] = 0; + rbuffer[2] = 0; + } + } +} +static void pushYFontBytesToEPD(uint8_t byte1, uint8_t byte2) { + if (epdCharSize == 2) { + for (uint8_t j = 0; j < 2; j++) { + uint8_t c = 0; + for (uint8_t i = 7; i != 255; i--) { + if (byte1 & (1 << i)) c |= (0x03 << ((i % 4) * 2)); + if ((i % 4) == 0) { + bufferByteShift(c); + c = 0; + } + } + for (uint8_t i = 7; i != 255; i--) { + if (byte2 & (1 << i)) c |= (0x03 << ((i % 4) * 2)); + if ((i % 4) == 0) { + bufferByteShift(c); + c = 0; + } + } + } + } else { + bufferByteShift(byte1); + bufferByteShift(byte2); + } +} +void writeCharEPD(uint8_t c) { + c -= 0x20; + // Writes a single character to the framebuffer + bool empty = true; + for (uint8_t i = 0; i < 20; i++) { + if (font[c][i]) empty = false; + } + if (empty) { + for (uint8_t i = 0; i < 8; i++) { + if (directionY) { + pushYFontBytesToEPD(0x00, 0x00); + } else { + pushXFontBytesToEPD(0x00, 0x00); + } + } + return; + } + + uint8_t begin = 0; + while (font[c][begin] == 0x00 && font[c][begin + 1] == 0x00) { + begin += 2; + } + + uint8_t end = 20; + while (font[c][end - 1] == 0x00 && font[c][end - 2] == 0x00) { + end -= 2; + } + + for (uint8_t pos = begin; pos < end; pos += 2) { + if (directionY) { + pushYFontBytesToEPD(font[c][pos + 1], font[c][pos]); + } else { + pushXFontBytesToEPD(font[c][pos], font[c][pos + 1]); + } + } + + // spacing between characters + if (directionY) { + pushYFontBytesToEPD(0x00, 0x00); + } else { + pushXFontBytesToEPD(0x00, 0x00); + } +} + +// Print text to the EPD. Origin is top-left +void epdPrintBegin(uint16_t x, uint16_t y, bool direction, bool fontsize, bool color) { + directionY = direction; + epdCharSize = 1 + fontsize; + if (directionY) { + uint8_t extra = 0; + + // provisions for dealing with font in Y direction, byte-unaligned + if (x % 8) { + extra = 8; + rbuffer[0] = 0; // previous value + rbuffer[1] = x % 8; // offset + rbuffer[2] = 0; // current byte counter; + rbuffer[3] = (epdCharSize * 2); + } else { + rbuffer[1] = 0; + } + + // setWindowY(y, 1); + if (epdCharSize == 2) { + setWindowXY(x, x + 32 + extra, SCREEN_HEIGHT - y, SCREEN_HEIGHT); + // setPosXY(x, y); + } else { + setWindowXY(x, x + 16 + extra, SCREEN_HEIGHT - y, SCREEN_HEIGHT); + // setPosXY(x, y); + } + // shortCommand1(CMD_DATA_ENTRY_MODE, 1); // was 3 + } else { + if (epdCharSize == 2) { + x /= 2; + x *= 2; + setWindowXY(x, SCREEN_WIDTH, y, y + 32); + } else { + setWindowXY(x, SCREEN_WIDTH, y, y + 16); + } + // setPosXY(x, y); + fontCurXpos = x; + // setWindowXY(x, SCREEN_WIDTH); + // shortCommand1(CMD_DATA_ENTRY_MODE, 7); + memset(rbuffer, 0, 32); + } + + if (color) { + startWindow(true); + } else { + startWindow(false); + } + epdSelect(); +} +void epdPrintEnd() { + if (!directionY && ((fontCurXpos % 8) != 0)) { + for (uint8_t i = 0; i < (16 * epdCharSize); i++) { + epdSelect(); + epdSend(rbuffer[i]); + epdDeselect(); + } + } + epdDrawDirection(true); +} \ No newline at end of file diff --git a/zbs243_shared/board/uc-var-27.h b/zbs243_shared/board/uc-var-27.h new file mode 100644 index 00000000..0bf5de3b --- /dev/null +++ b/zbs243_shared/board/uc-var-27.h @@ -0,0 +1,74 @@ +#ifndef _JSCREEN_H_ +#define _JSCREEN_H_ + +#include +#include + +#define epdSend spiTXByte +#define EPD_DIRECTION_X false +#define EPD_DIRECTION_Y true +#define EPD_SIZE_SINGLE false +#define EPD_SIZE_DOUBLE true +#define EPD_COLOR_RED true +#define EPD_COLOR_BLACK false +#define EPD_LOAD_CUSTOM_LUT true +#define EPD_LOAD_OTP_LUT false +#define EPD_MODE_NORMAL 0x00 +#define EPD_MODE_INVERT 0x08 +#define EPD_MODE_IGNORE 0x04 + +#define EPD_LUT_DEFAULT 0 +#define EPD_LUT_NO_REPEATS 1 +#define EPD_LUT_FAST_NO_REDS 2 +#define EPD_LUT_FAST 3 + + +#define epdSelect() \ + do { \ + P1_7 = 0; \ + } while (0) + +#define epdDeselect() \ + do { \ + P1_7 = 1; \ + } while (0) + +void epdSetup(); +void epdEnterSleep(); +uint16_t epdGetBattery(); +void epdConfigGPIO(bool setup); + +extern bool __xdata epdGPIOActive; + +void setColorMode(uint8_t red, uint8_t bw) ; +void clearWindow(bool color); +void clearScreen(); +void draw(); +void drawNoWait(); +void drawWithSleep(); +void epdWaitRdy(); + +void beginFullscreenImage(); +void beginWriteFramebuffer(bool color); +void endWriteFramebuffer(); +void loadRawBitmap(uint8_t* bmp, uint16_t x, uint16_t y, bool color) __reentrant; +void printBarcode(const uint8_t* string, uint16_t x, uint16_t y); + +void selectLUT(uint8_t lut); + +void ByteDecode(uint8_t byte); + +void epdPrintBegin(uint16_t x, uint16_t y, bool direction, bool fontsize, bool red); +void epdPrintEnd(); + +void beginFullscreenImage(); +void beginWriteFramebuffer(bool color); + +void lutTest(); + +void epdTest(); + +// for printf.c +void writeCharEPD(uint8_t c); + +#endif \ No newline at end of file diff --git a/zbs243_shared/board/uc8151.c b/zbs243_shared/board/uc8151.c index 1916e37d..4aa6f9bd 100755 --- a/zbs243_shared/board/uc8151.c +++ b/zbs243_shared/board/uc8151.c @@ -230,7 +230,9 @@ static void epdBusyWait(uint32_t timeout) { if (P2_1) return; } + #ifdef DEBUGEPD pr("screen timeout %lu ticks :(\n", timerGet() - start); + #endif while (1) ; } @@ -640,6 +642,7 @@ static void pushYFontBytesToEPD(uint8_t byte1, uint8_t byte2) { } } void writeCharEPD(uint8_t c) { + c-=0x20; // Writes a single character to the framebuffer bool empty = true; for (uint8_t i = 0; i < 20; i++) { diff --git a/zbs243_shared/board/zbs154_ssd1619/screen.h b/zbs243_shared/board/zbs154_ssd1619/screen.h index a08dfdd8..1fe92af2 100644 --- a/zbs243_shared/board/zbs154_ssd1619/screen.h +++ b/zbs243_shared/board/zbs154_ssd1619/screen.h @@ -8,19 +8,8 @@ #define SCREEN_WIDTH 152 #define SCREEN_HEIGHT 152 -#define SCREEN_NUM_GREYS 5 -#define SCREEN_FIRST_GREY_IDX 0 -#define SCREEN_EXTRA_COLOR_INDEX 5 //set to negative if nonexistent -#define SCREEN_TX_BPP 4 //in transit +#define CUSTOMLUTS -#define SCREEN_WIDTH_MM 27 -#define SCREEN_HEIGHT_MM 27 - -#define SCREEN_BYTE_FILL 0x44 //white - -#define SCREEN_TYPE TagScreenEink_BWR_6colors - -#define SCREEN_DATA_PASSES 2 #endif diff --git a/zbs243_shared/board/zbs16_ssd1619/board.c b/zbs243_shared/board/zbs16_ssd1619/board.c new file mode 100644 index 00000000..15cf44cc --- /dev/null +++ b/zbs243_shared/board/zbs16_ssd1619/board.c @@ -0,0 +1 @@ +#include "../boardZBS29common.c" diff --git a/zbs243_shared/board/zbs16_ssd1619/board.h b/zbs243_shared/board/zbs16_ssd1619/board.h new file mode 100644 index 00000000..e7368ff6 --- /dev/null +++ b/zbs243_shared/board/zbs16_ssd1619/board.h @@ -0,0 +1,35 @@ +#ifndef _BOARD_H_ +#define _BOARD_H_ + +#include + +#define __packed +#include "../oepl-definitions.h" + +#include "spi.h" + +#define eepromByte spiByte +#define eepromPrvSelect() do { __asm__("nop\nnop\nnop\n"); P1_1 = 0; __asm__("nop\nnop\nnop\n"); } while(0) +#define eepromPrvDeselect() do { __asm__("nop\nnop\nnop\n"); P1_1 = 1; __asm__("nop\nnop\nnop\n"); } while(0) + +//eeprom map +#define EEPROM_SETTINGS_AREA_START (0x00000UL) +#define EEPROM_SETTINGS_AREA_LEN (0x01000UL) +#define EEPROM_IMG_START (0x01000UL) +#define EEPROM_IMG_EACH (0x02000UL) +//till end of eeprom really. do not put anything after - it will be erased at pairing time!!! +#define EEPROM_PROGRESS_BYTES (128) + + +#define HAS_EEPROM 1 +#define HAS_SCREEN 1 +#define NFC_TYPE 1 +#define AP_EMULATE_TAG 1 + +//hw types +#define HW_TYPE SOLUM_M2_BW_16 + +#include "../boardCommon.h" + + +#endif diff --git a/zbs243_shared/board/zbs16_ssd1619/make.mk b/zbs243_shared/board/zbs16_ssd1619/make.mk new file mode 100644 index 00000000..d1083181 --- /dev/null +++ b/zbs243_shared/board/zbs16_ssd1619/make.mk @@ -0,0 +1,7 @@ +FLAGS += --code-size 0xfc00 + +SOC = zbs243 + +BARCODE = datamatrix + +# 0xfc00 and not 0x10000 to leave some space for update header and updater in flash \ No newline at end of file diff --git a/zbs243_shared/board/zbs16_ssd1619/screen.c b/zbs243_shared/board/zbs16_ssd1619/screen.c new file mode 100644 index 00000000..9494884c --- /dev/null +++ b/zbs243_shared/board/zbs16_ssd1619/screen.c @@ -0,0 +1 @@ +#include "../ssd1619.c" diff --git a/zbs243_shared/board/zbs16_ssd1619/screen.h b/zbs243_shared/board/zbs16_ssd1619/screen.h new file mode 100644 index 00000000..2502e3f9 --- /dev/null +++ b/zbs243_shared/board/zbs16_ssd1619/screen.h @@ -0,0 +1,11 @@ +#ifndef _SCREEN_H_ +#define _SCREEN_H_ + +#include +#include +#include "../ssd1619.h" + +#define SCREEN_WIDTH 200 +#define SCREEN_HEIGHT 200 + +#endif diff --git a/zbs243_shared/board/zbs27_ucvar/board.c b/zbs243_shared/board/zbs27_ucvar/board.c new file mode 100644 index 00000000..15cf44cc --- /dev/null +++ b/zbs243_shared/board/zbs27_ucvar/board.c @@ -0,0 +1 @@ +#include "../boardZBS29common.c" diff --git a/zbs243_shared/board/zbs27_ucvar/board.h b/zbs243_shared/board/zbs27_ucvar/board.h new file mode 100644 index 00000000..74cb4605 --- /dev/null +++ b/zbs243_shared/board/zbs27_ucvar/board.h @@ -0,0 +1,33 @@ +#ifndef _BOARD_H_ +#define _BOARD_H_ + +#include +#include "spi.h" + +#define __packed +#include "../oepl-definitions.h" + + +#define eepromByte spiByte +#define eepromPrvSelect() do { __asm__("nop\nnop\nnop\n"); P1_1 = 0; __asm__("nop\nnop\nnop\n"); } while(0) +#define eepromPrvDeselect() do { __asm__("nop\nnop\nnop\n"); P1_1 = 1; __asm__("nop\nnop\nnop\n"); } while(0) + +//eeprom map +#define EEPROM_SETTINGS_AREA_START (0x00000UL) +#define EEPROM_SETTINGS_AREA_LEN (0x01000UL) +#define EEPROM_IMG_START (0x01000UL) +#define EEPROM_IMG_EACH (0x03000UL) + +#define HAS_EEPROM 1 +#define HAS_SCREEN 1 +#define NFC_TYPE 1 +#define AP_EMULATE_TAG 1 + + +//hw types +#define HW_TYPE SOLUM_M2_BWR_27 + +#include "../boardCommon.h" + + +#endif diff --git a/zbs243_shared/board/zbs27_ucvar/make.mk b/zbs243_shared/board/zbs27_ucvar/make.mk new file mode 100644 index 00000000..d1083181 --- /dev/null +++ b/zbs243_shared/board/zbs27_ucvar/make.mk @@ -0,0 +1,7 @@ +FLAGS += --code-size 0xfc00 + +SOC = zbs243 + +BARCODE = datamatrix + +# 0xfc00 and not 0x10000 to leave some space for update header and updater in flash \ No newline at end of file diff --git a/zbs243_shared/board/zbs27_ucvar/screen.c b/zbs243_shared/board/zbs27_ucvar/screen.c new file mode 100644 index 00000000..3678692c --- /dev/null +++ b/zbs243_shared/board/zbs27_ucvar/screen.c @@ -0,0 +1 @@ +#include "../uc-var-27.c" diff --git a/zbs243_shared/board/zbs27_ucvar/screen.h b/zbs243_shared/board/zbs27_ucvar/screen.h new file mode 100644 index 00000000..404e0586 --- /dev/null +++ b/zbs243_shared/board/zbs27_ucvar/screen.h @@ -0,0 +1,13 @@ +#ifndef _SCREEN_H_ +#define _SCREEN_H_ + +#include +#include +#include "../uc-var-27.h" + + +#define EPD_BYTEWISE_CS // this EPD requires every byte to be toggled +#define SCREEN_WIDTH 176 +#define SCREEN_HEIGHT 264 + +#endif diff --git a/zbs243_shared/board/zbs29_ssd1619/screen.h b/zbs243_shared/board/zbs29_ssd1619/screen.h index 6569cd44..ebeb06a6 100644 --- a/zbs243_shared/board/zbs29_ssd1619/screen.h +++ b/zbs243_shared/board/zbs29_ssd1619/screen.h @@ -5,22 +5,9 @@ #include #include "../ssd1619.h" +#define SCREEN_WIDTH 128 +#define SCREEN_HEIGHT 296 -#define SCREEN_WIDTH 128 -#define SCREEN_HEIGHT 296 - -#define SCREEN_NUM_GREYS 5 -#define SCREEN_FIRST_GREY_IDX 0 -#define SCREEN_EXTRA_COLOR_INDEX 5 //set to negative if nonexistent -#define SCREEN_TX_BPP 4 //in transit - -#define SCREEN_WIDTH_MM 29 -#define SCREEN_HEIGHT_MM 67 - -#define SCREEN_BYTE_FILL 0x44 //white - -#define SCREEN_TYPE TagScreenEink_BWR_6colors - -#define SCREEN_DATA_PASSES 2 +#define CUSTOMLUTS #endif diff --git a/zbs243_shared/board/zbs42_ssd1619/screen.h b/zbs243_shared/board/zbs42_ssd1619/screen.h index 8b8c147a..8358c03b 100644 --- a/zbs243_shared/board/zbs42_ssd1619/screen.h +++ b/zbs243_shared/board/zbs42_ssd1619/screen.h @@ -9,19 +9,8 @@ #define SCREEN_WIDTH 400 #define SCREEN_HEIGHT 300 -#define SCREEN_NUM_GREYS 5 -#define SCREEN_FIRST_GREY_IDX 0 -#define SCREEN_EXTRA_COLOR_INDEX 5 //set to negative if nonexistent -#define SCREEN_TX_BPP 4 //in transit +#define CUSTOMLUTS -#define SCREEN_WIDTH_MM 84 -#define SCREEN_HEIGHT_MM 63 - -#define SCREEN_BYTE_FILL 0x44 //white - -#define SCREEN_TYPE TagScreenEink_BWR_6colors - -#define SCREEN_DATA_PASSES 2 #endif diff --git a/zbs243_shared/cpu/8051/aes.c b/zbs243_shared/cpu/8051/aes.c new file mode 100644 index 00000000..8c7d5eb9 --- /dev/null +++ b/zbs243_shared/cpu/8051/aes.c @@ -0,0 +1,451 @@ +#include "asmUtil.h" +#include "aes.h" +#include "cpu.h" + + + +static uint8_t __xdata mAesKeySchedule[176]; + +static void aesSbox(void) __naked +{ + __asm__( + " .db 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76 \n" + " .db 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0 \n" + " .db 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15 \n" + " .db 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75 \n" + " .db 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84 \n" + " .db 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf \n" + " .db 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8 \n" + " .db 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2 \n" + " .db 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73 \n" + " .db 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb \n" + " .db 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79 \n" + " .db 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08 \n" + " .db 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a \n" + " .db 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e \n" + " .db 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf \n" + " .db 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16 \n" + ); +} + +void aesEnc(uint8_t __xdata *data) __reentrant __naked +{ + __asm__( + " push _R7 \n" + " push _R6 \n" + " push _R5 \n" + " push _R4 \n" + " push _R3 \n" + " push _R2 \n" + " push _R1 \n" + " push _R0 \n" + + //get key schedule pointer + " mov R0, #_mAesKeySchedule \n" + " mov R1, #_mAesKeySchedule >> 8 \n" + + " lcall 00094$ \n" //AddRoundKey + + //10 rounds + " mov R2, #10 \n" + "00002$: \n" + + " mov R4, DPH \n" + " mov R3, DPL \n" + + //SubBytes + " mov R6, #0 \n" + "00003$: \n" + " movx A, @DPTR \n" + " mov R5, DPL \n" + " mov R7, DPH \n" + " mov DPTR, #_aesSbox \n" + " movc A, @A+DPTR \n" + " mov DPL, R5 \n" + " mov DPH, R7 \n" + " movx @DPTR, A \n" + " inc DPTR \n" + " inc R6 \n" + " cjne R6, #16, 00003$ \n" + + //ShiftRows using swaps + " mov R6, #0 \n" + "00004$: \n" + " mov DPTR, #00098$ \n" + " mov A, R6 \n" + " movc A, @A + DPTR \n" + " anl A, #0x0f \n" + " add A, R3 \n" + " mov DPL, A \n" + " clr A \n" + " addc A, R4 \n" + " mov DPH, A \n" + " movx A, @DPTR \n" + " mov R7, A \n" + + " mov DPTR, #00098$ \n" + " mov A, R6 \n" + " movc A, @A + DPTR \n" + " swap A \n" + " anl A, #0x0f \n" + " add A, R3 \n" + " mov DPL, A \n" + " clr A \n" + " addc A, R4 \n" + " mov DPH, A \n" + " movx A, @DPTR \n" + " xch A, R7 \n" + " movx @DPTR, A \n" + + " mov DPTR, #00098$ \n" + " mov A, R6 \n" + " movc A, @A + DPTR \n" + " anl A, #0x0f \n" + " add A, R3 \n" + " mov DPL, A \n" + " clr A \n" + " addc A, R4 \n" + " mov DPH, A \n" + " mov A, R7 \n" + " movx @DPTR, A \n" + " inc R6 \n" + " cjne R6, #8, 00004$ \n" + + //MixColumns (Except for final round) + " cjne R2, #1, 00005$ \n" + " ljmp 00007$ \n" + "00005$: \n" + + " mov B, #4 \n" + " mov DPH, R4 \n" + " mov DPL, R3 \n" + + "00006$: \n" + //calc [3] row + " mov R6, DPH \n" + " mov R7, DPL \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " mov R5, A \n" + " lcall 00097$ \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " lcall 00097$ \n" + " xrl A, R5 \n" + " push A \n" + + //calc [2] row + " mov DPH, R6 \n" + " mov DPL, R7 \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " mov R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " lcall 00097$ \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " xrl _R5, A \n" + " lcall 00097$ \n" + " xrl A, R5 \n" + " push A \n" + + //calc [1] row + " mov DPH, R6 \n" + " mov DPL, R7 \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " mov R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " lcall 00097$ \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " xrl _R5, A \n" + " lcall 00097$ \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " xrl A, R5 \n" + " push A \n" + + //cals [0] row + " mov DPH, R6 \n" + " mov DPL, R7 \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " lcall 00097$ \n" + " mov R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " xrl _R5, A \n" + " lcall 00097$ \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " xrl _R5, A \n" + " movx A, @DPTR \n" + " xrl A, R5 \n" + + //write them + " mov DPH, R6 \n" + " mov DPL, R7 \n" + " movx @DPTR, A \n" + " inc DPTR \n" + " pop A \n" + " movx @DPTR, A \n" + " inc DPTR \n" + " pop A \n" + " movx @DPTR, A \n" + " inc DPTR \n" + " pop A \n" + " movx @DPTR, A \n" + " inc DPTR \n" + + " dec B \n" + " mov A, B \n" + " jz 00007$ \n" + " ljmp 00006$ \n" + + "00007$: \n" + + " mov DPH, R4 \n" + " mov DPL, R3 \n" + + " lcall 00094$ \n" + + " dec R2 \n" + " mov A, R2 \n" + " jz 00008$ \n" + " ljmp 00002$ \n" + "00008$: \n" + + //pop off regs + " pop _R0 \n" + " pop _R1 \n" + " pop _R2 \n" + " pop _R3 \n" + " pop _R4 \n" + " pop _R5 \n" + " pop _R6 \n" + " pop _R7 \n" + + " ret \n" + + //AddRoundKey() + "00094$: \n" + " mov R4, DPH \n" + " mov R3, DPL \n" + " mov R7, #16 \n" + "00093$: \n" + " lcall _mathPrvSwapDptrR1R0 \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " mov B, A \n" + " lcall _mathPrvSwapDptrR1R0 \n" + " movx A, @DPTR \n" + " xrl A, B \n" + " movx @DPTR, A \n" + " inc DPTR \n" + " djnz R7, 00093$ \n" + " mov DPH, R4 \n" + " mov DPL, R3 \n" + " ret \n" + + //inc DPTR 4x + "00095$: \n" + " inc DPTR \n" + " inc DPTR \n" + " inc DPTR \n" + " inc DPTR \n" + " ret \n" + + //galois multiply by 2 of A + "00097$: \n" + " add A, ACC \n" + " jnc 00096$ \n" + " xrl A, #0x1b \n" + "00096$: \n" + " ret \n" + + + //ShiftRows swaps + "00098$: \n" + " .db 0x15, 0x59, 0x9d \n" + " .db 0x2a, 0x6e \n" + " .db 0xfb, 0xb7, 0x73 \n" + ); + + (void)data; +} + +void aesSetKey(const uint8_t __xdata *key) __reentrant __naked +{ + __asm__( + " push _R5 \n" + " push _R4 \n" + " push _R3 \n" + " push _R2 \n" + " push _R1 \n" + " push _R0 \n" + + //move key pointer into R1:R0 + " mov _R1, DPH \n" + " mov _R0, DPL \n" + + // save keyschedule ptr (and thus get pointer to [0]) + " mov DPTR, #_mAesKeySchedule \n" + " push _DPH \n" + " push _DPL \n" + + //copy key into state (and thus get pointer to [16] into DPTR) + " mov B, #16 \n" + "00001$: \n" + " lcall _mathPrvSwapDptrR1R0 \n" + " movx A, @DPTR \n" + " inc DPTR \n" + " lcall _mathPrvSwapDptrR1R0 \n" + " movx @DPTR, A \n" + " inc DPTR \n" + " djnz B, 00001$ \n" + + //get pointer to [0] into R1:R0 + " pop _R0 \n" + " pop _R1 \n" + + //the loop + " mov B, #0 \n" + "00002$: \n" + " mov A, #-4 \n" //point DPTR to [12] + " add A, DPL \n" + " mov DPL, A \n" + " mov A, #0xff \n" + " addc A, DPH \n" + " mov DPH, A \n" + " mov A, #3 \n" + " anl A, B \n" + " jz 00003$ \n" + + //the normal 3/4 rounds + " movx A, @DPTR \n" //[12] + " inc DPTR \n" + " mov R2, A \n" + " movx A, @DPTR \n" //[13] + " inc DPTR \n" + " mov R3, A \n" + " movx A, @DPTR \n" //[14] + " inc DPTR \n" + " mov R4, A \n" + " movx A, @DPTR \n" //[15] + " inc DPTR \n" + " mov R5, A \n" + " sjmp 00004$ \n" + + //the weird 1/4 round + "00003$: \n" + " movx A, @DPTR \n" //[12] + " inc DPTR \n" + " push DPL \n" + " push DPH \n" + " mov DPTR, #_aesSbox \n" + " movc A, @A+DPTR \n" + " mov _R5, A \n" + " pop DPH \n" + " pop DPL \n" + + " movx A, @DPTR \n" //[13] + " inc DPTR \n" + " push DPL \n" + " push DPH \n" + " mov DPTR, #_aesSbox \n" + " movc A, @A+DPTR \n" + " mov _R2, A \n" + " mov DPTR, #00098$ \n" + " mov A, B \n" + " rr A \n" + " rr A \n" + " movc A, @A+DPTR \n" + " xrl _R2, A \n" + " pop DPH \n" + " pop DPL \n" + + " movx A, @DPTR \n" //[14] + " inc DPTR \n" + " push DPL \n" + " push DPH \n" + " mov DPTR, #_aesSbox \n" + " movc A, @A+DPTR \n" + " mov _R3, A \n" + " pop DPH \n" + " pop DPL \n" + + " movx A, @DPTR \n" //[15] + " inc DPTR \n" + " push DPL \n" + " push DPH \n" + " mov DPTR, #_aesSbox \n" + " movc A, @A+DPTR \n" + " mov _R4, A \n" + " pop DPH \n" + " pop DPL \n" + + "00004$: \n" + " lcall _mathPrvSwapDptrR1R0 \n" + " movx A, @DPTR \n" //[0] + " inc DPTR \n" + " xrl _R2, A \n" + " movx A, @DPTR \n" //[1] + " inc DPTR \n" + " xrl _R3, A \n" + " movx A, @DPTR \n" //[2] + " inc DPTR \n" + " xrl _R4, A \n" + " movx A, @DPTR \n" //[3] + " inc DPTR \n" + " xrl _R5, A \n" + " lcall _mathPrvSwapDptrR1R0 \n" + " mov A, R2 \n" + " movx @DPTR, A \n" //[16] + " inc DPTR \n" + " mov A, R3 \n" + " movx @DPTR, A \n" //[17] + " inc DPTR \n" + " mov A, R4 \n" + " movx @DPTR, A \n" //[18] + " inc DPTR \n" + " mov A, R5 \n" + " movx @DPTR, A \n" //[19] + " inc DPTR \n" + + " inc B \n" + " mov A, #-40 \n" + " add A, B \n" + " jz 00005$ \n" + " ljmp 00002$ \n" + + "00005$: \n" + " pop _R0 \n" + " pop _R1 \n" + " pop _R2 \n" + " pop _R3 \n" + " pop _R4 \n" + " pop _R5 \n" + " ret \n" + + //round constants + "00098$: \n" + " .db 0x01,0x02,0x04,0x08,0x10\n" + " .db 0x20,0x40,0x80,0x1b,0x36\n" + ); + + (void)key; +} diff --git a/zbs243_shared/eeprom.c b/zbs243_shared/eeprom.c index 0aeb77c1..c3746cd9 100755 --- a/zbs243_shared/eeprom.c +++ b/zbs243_shared/eeprom.c @@ -5,6 +5,7 @@ #include "board.h" #include "cpu.h" #include +#include "settings.h" static uint32_t __xdata mEepromSize; static uint8_t __xdata mOpcodeErz4K = 0, mOpcodeErz32K = 0, mOpcodeErz64K = 0; @@ -46,8 +47,9 @@ static bool eepromPrvBusyWait(void) { eepromPrvSelect(); eepromByte(0x05); - while ((val = eepromByte(0x00)) & 1) + while ((val = eepromByte(0x00)) & 1) { ; + } eepromPrvDeselect(); return true; @@ -103,8 +105,9 @@ __bit eepromInit(void) { eepromPrvSfdpRead(0, buf, 8); if (buf[0] != 0x53 || buf[1] != 0x46 || buf[2] != 0x44 || buf[3] != 0x50 || buf[7] != 0xff) { + #ifdef DEBUGEEPROM pr("SFDP: header not found\n"); - + #endif __bit valid = false; // try manual ID for chips we know of @@ -113,29 +116,44 @@ __bit eepromInit(void) { eepromByte(0x00); eepromByte(0x00); eepromByte(0x00); - if (eepromByte(0) == 0xc2) { // old macronix chips - valid = true; - mOpcodeErz4K = 0x20; - switch (eepromByte(0)) { - case 0x05: // MX25V512 - mEepromSize = 0x00010000ul; - break; + switch (eepromByte(0)) { + case 0xc2: // old macronix chips + valid = true; + mOpcodeErz4K = 0x20; + switch (eepromByte(0)) { + case 0x05: // MX25V512 + mEepromSize = 0x00010000ul; + break; - case 0x12: // MX25V4005 - mEepromSize = 0x00080000ul; - break; + case 0x12: // MX25V4005 + mEepromSize = 0x00080000ul; + break; - default: - valid = false; - break; - } + default: + valid = false; + break; + } + break; + case 0xEF: // winbond + valid = true; + mOpcodeErz4K = 0x20; + switch (eepromByte(0)) { + case 0x13: // W25Q80DV without SFDP + mEepromSize = 0x00080000ul; + break; + default: + valid = false; + } + break; } eepromPrvDeselect(); free(tempBufferE); return valid; } if (buf[5] != 0x01) { + #ifdef DEBUGEEPROM pr("SFDP: version wrong: %u.%d\n", buf[5], buf[4]); + #endif return false; } nParamHdrs = buf[6]; @@ -150,29 +168,39 @@ __bit eepromInit(void) { eepromPrvSfdpRead(*(uint16_t __xdata *)(buf + 4), tempBufferE, 9 * 4); if ((tempBufferE[0] & 3) != 1) { + #ifdef DEBUGEEPROM pr("SFDP: no 4K ERZ\n"); + #endif break; } if (!(tempBufferE[0] & 0x04)) { + #ifdef DEBUGEEPROM pr("SFDP: no large write buf\n"); + #endif break; } if ((tempBufferE[2] & 0x06)) { + #ifdef DEBUGEEPROM pr("SFDP: addr.len != 3\n"); + #endif break; } if (!tempBufferE[1] || tempBufferE[1] == 0xff) { + #ifdef DEBUGEEPROM pr("SFDP: 4K ERZ opcode invalid\n"); + #endif break; } mOpcodeErz4K = tempBufferE[1]; if (tempBufferE[7] & 0x80) { + #ifdef DEBUGEEPROM pr("SFDP: device too big\n"); + #endif break; } else { - uint8_t t; + uint8_t __xdata t; if (t = tempBufferE[7]) mEepromSize = 0x00200000UL; @@ -181,7 +209,9 @@ __bit eepromInit(void) { else if (t = tempBufferE[5]) mEepromSize = 0x00000020UL; else { + #ifdef DEBUGEEPROM pr("SFDP: device so small?!\n"); + #endif break; } @@ -201,7 +231,9 @@ __bit eepromInit(void) { switch (tempBufferE[j]) { case 0x0c: if (mOpcodeErz4K != instr) { + #ifdef DEBUGEEPROM pr("4K ERZ opcode disagreement\n"); + #endif return false; } break; @@ -231,8 +263,9 @@ __bit eepromInit(void) { return true; } } - + #ifdef DEBUGEEPROM pr("SFDP: no JEDEC table of expected version found\n"); + #endif return false; } diff --git a/zbs243_shared/soc/zbs243/make.mk b/zbs243_shared/soc/zbs243/make.mk index 3b4f9da9..e6b330f2 100644 --- a/zbs243_shared/soc/zbs243/make.mk +++ b/zbs243_shared/soc/zbs243/make.mk @@ -3,6 +3,6 @@ FLAGS += -Isoc/zbs243 FLAGS += -DSOC_ZBS243 --xram-loc 0xe000 --xram-size 0x2000 --model-large SOURCES += soc/zbs243/soc.c soc/zbs243/wdt.c soc/zbs243/sleep.c soc/zbs243/spi.c soc/zbs243/uart.c soc/zbs243/timer.c soc/zbs243/radio.c -SOURCES += soc/zbs243/flash.c soc/zbs243/temperature.c cpu/8051/random.c cpu/8051/printf.c +SOURCES += soc/zbs243/flash.c soc/zbs243/temperature.c cpu/8051/random.c cpu/8051/aes.c cpu/8051/printf.c SOURCES += soc/zbs243/i2c.c CPU = 8051