From 7c368a22afb5456fb4622c617e792bd2f83e878b Mon Sep 17 00:00:00 2001 From: SSYYL <1032789891@qq.com> Date: Tue, 26 Jan 2021 14:35:45 +0800 Subject: [PATCH 1/2] fix 2.9_V2 & 4.01f --- Arduino/epd2in9_V2/epd2in9_V2.cpp | 63 +- Arduino/epd2in9_V2/epd2in9_V2.h | 5 +- Arduino/epd2in9_V2/epd2in9_V2.ino | 2 +- RaspberryPi_JetsonNano/c/Makefile.save | 82 + .../c/examples/EPD_10in2b_test.c | 161 ++ .../c/examples/EPD_13in3_test.c | 150 ++ .../c/examples/EPD_1in54_DES_test.c | 134 ++ .../c/examples/EPD_1in54_test.c | 2 +- .../c/examples/EPD_2in13_DES_test.c | 135 ++ .../c/examples/EPD_2in13_V3_test.c | 4 +- .../c/examples/EPD_2in66b_test.c | 4 +- .../c/examples/EPD_2in7b_V2_test.c | 3 +- .../c/examples/EPD_2in7b_test.c | 2 +- .../c/examples/EPD_2in9_DES_test.c | 138 ++ .../c/examples/EPD_2in9_V2_test.c | 3 +- .../c/examples/EPD_3in7_test.c | 11 +- .../c/examples/EPD_4in01f_test.c | 2 +- .../c/examples/EPD_4in37b_test.c | 158 ++ .../c/examples/EPD_5in65f_test.c | 1 + .../c/examples/EPD_5in84_test.c | 123 ++ .../c/examples/EPD_7in5_HD_test.c | 1 - RaspberryPi_JetsonNano/c/examples/EPD_Test.h | 11 + RaspberryPi_JetsonNano/c/examples/ImageData.c | 1540 +++++++++++++++++ RaspberryPi_JetsonNano/c/examples/ImageData.h | 2 + RaspberryPi_JetsonNano/c/examples/main.c | 19 +- .../c/lib/e-Paper/EPD_10in2b.c | 241 +++ .../c/lib/e-Paper/EPD_10in2b.h | 45 + .../c/lib/e-Paper/EPD_13in3.c | 229 +++ .../c/lib/e-Paper/EPD_13in3.h | 45 + .../c/lib/e-Paper/EPD_1in54_DES.c | 173 ++ .../c/lib/e-Paper/EPD_1in54_DES.h | 45 + .../c/lib/e-Paper/EPD_2in13_DES.c | 173 ++ .../c/lib/e-Paper/EPD_2in13_DES.h | 45 + .../c/lib/e-Paper/EPD_2in13_V3.c | 26 +- .../c/lib/e-Paper/EPD_2in7b_V2.c | 129 +- .../c/lib/e-Paper/EPD_2in9_DES.c | 173 ++ .../c/lib/e-Paper/EPD_2in9_DES.h | 45 + .../c/lib/e-Paper/EPD_2in9_V2.c | 77 +- .../c/lib/e-Paper/EPD_2in9_V2.h | 2 - .../c/lib/e-Paper/EPD_3in7.c | 12 +- .../c/lib/e-Paper/EPD_4in01f.c | 76 +- .../c/lib/e-Paper/EPD_4in01f.h | 1 + .../c/lib/e-Paper/EPD_4in37b.c | 226 +++ .../c/lib/e-Paper/EPD_4in37b.h | 45 + .../c/lib/e-Paper/EPD_5in84.c | 218 +++ .../c/lib/e-Paper/EPD_5in84.h | 44 + .../c/lib/e-Paper/EPD_7in5_V2.c | 3 +- RaspberryPi_JetsonNano/c/pic/4in37b_b.bmp | Bin 0 -> 10622 bytes RaspberryPi_JetsonNano/c/pic/4in37b_r.bmp | Bin 0 -> 10622 bytes RaspberryPi_JetsonNano/c/pic/5in84.bmp | Bin 0 -> 24638 bytes RaspberryPi_JetsonNano/c/pic/5in84_2.bmp | Bin 0 -> 24638 bytes .../python/examples/epd_2in66b_test.py | 2 +- .../python/examples/epd_2in7b_V2_test.py | 150 +- .../python/lib/waveshare_epd/epd1in54_V2.py | 4 +- .../python/lib/waveshare_epd/epd2in9_V2.py | 67 +- .../python/lib/waveshare_epd/epd4in01f.py | 14 +- .../MDK-ARM/epd-demo.uvguix.qiumingsong | 18 +- STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx | 2 +- .../MDK-ARM/epd-demo/epd-demo.build_log.htm | 2 +- .../MDK-ARM/epd-demo/epd-demo.htm | 2 +- .../MDK-ARM/epd-demo/epd-demo.map | 7 +- .../STM32-F103ZET6/User/e-Paper/EPD_2in9_V2.c | 29 +- .../User/e-Paper/EPD_7in5b_V2.c | 6 +- Version_CN.txt | 3 +- Version_EN.txt | 3 +- 65 files changed, 4803 insertions(+), 335 deletions(-) create mode 100644 RaspberryPi_JetsonNano/c/Makefile.save create mode 100644 RaspberryPi_JetsonNano/c/examples/EPD_10in2b_test.c create mode 100644 RaspberryPi_JetsonNano/c/examples/EPD_13in3_test.c create mode 100644 RaspberryPi_JetsonNano/c/examples/EPD_1in54_DES_test.c create mode 100644 RaspberryPi_JetsonNano/c/examples/EPD_2in13_DES_test.c create mode 100644 RaspberryPi_JetsonNano/c/examples/EPD_2in9_DES_test.c create mode 100644 RaspberryPi_JetsonNano/c/examples/EPD_4in37b_test.c create mode 100644 RaspberryPi_JetsonNano/c/examples/EPD_5in84_test.c create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_10in2b.c create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_10in2b.h create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_13in3.c create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_13in3.h create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_1in54_DES.c create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_1in54_DES.h create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_DES.c create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_DES.h create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.c create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.h create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37b.c create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37b.h create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_5in84.c create mode 100644 RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_5in84.h create mode 100644 RaspberryPi_JetsonNano/c/pic/4in37b_b.bmp create mode 100644 RaspberryPi_JetsonNano/c/pic/4in37b_r.bmp create mode 100644 RaspberryPi_JetsonNano/c/pic/5in84.bmp create mode 100644 RaspberryPi_JetsonNano/c/pic/5in84_2.bmp diff --git a/Arduino/epd2in9_V2/epd2in9_V2.cpp b/Arduino/epd2in9_V2/epd2in9_V2.cpp index 5507903..c87d730 100644 --- a/Arduino/epd2in9_V2/epd2in9_V2.cpp +++ b/Arduino/epd2in9_V2/epd2in9_V2.cpp @@ -1,7 +1,7 @@ /** * @filename : epd2in9_V2.cpp * @brief : Implements for e-paper library - * @author : Yehui from Waveshare + * @author : * * Copyright (C) Waveshare Nov 9 2020 * @@ -27,6 +27,29 @@ #include #include "epd2in9_V2.h" +unsigned char WF_PARTIAL_2IN9[159] = +{ +0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0A,0x0,0x0,0x0,0x0,0x0,0x2, +0x1,0x0,0x0,0x0,0x0,0x0,0x0, +0x1,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x0,0x0,0x0,0x0,0x0,0x0,0x0, +0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, +0x22,0x17,0x41,0xB0,0x32,0x36, +}; + Epd::~Epd() { }; @@ -51,27 +74,21 @@ int Epd::Init() { WaitUntilIdle(); SendCommand(0x12); //SWRESET WaitUntilIdle(); - + SendCommand(0x01); //Driver output control SendData(0x27); SendData(0x01); SendData(0x00); - + SendCommand(0x11); //data entry mode SendData(0x03); SetMemoryArea(0, 0, width-1, height-1); - SendCommand(0x3C); //BorderWavefrom - SendData(0x05); - SendCommand(0x21); // Display update control SendData(0x00); SendData(0x80); - SendCommand(0x18); //Read built-in temperature sensor - SendData(0x80); - SetMemoryPointer(0, 0); WaitUntilIdle(); /* EPD hardware init end */ @@ -203,9 +220,27 @@ void Epd::SetFrameMemory_Partial( DelayMs(5); DigitalWrite(reset_pin, HIGH); DelayMs(10); + + SetLut(); + SendCommand(0x37); + SendData(0x00); + SendData(0x00); + SendData(0x00); + SendData(0x00); + SendData(0x00); + SendData(0x40); + SendData(0x00); + SendData(0x00); + SendData(0x00); + SendData(0x00); SendCommand(0x3C); //BorderWavefrom SendData(0x80); + + SendCommand(0x22); + SendData(0xC0); + SendCommand(0x20); + WaitUntilIdle(); SetMemoryArea(x, y, x_end, y_end); SetMemoryPointer(x, y); @@ -289,11 +324,19 @@ void Epd::DisplayFrame(void) { void Epd::DisplayFrame_Partial(void) { SendCommand(0x22); - SendData(0xFF); + SendData(0x0F); SendCommand(0x20); WaitUntilIdle(); } +void Epd::SetLut(void) { + unsigned char count; + SendCommand(0x32); + for(count=0; count<153; count++) + SendData(WF_PARTIAL_2IN9[count]); + WaitUntilIdle(); +} + /** * @brief: private function to specify the memory area for data R/W */ diff --git a/Arduino/epd2in9_V2/epd2in9_V2.h b/Arduino/epd2in9_V2/epd2in9_V2.h index fb76371..7ee6514 100644 --- a/Arduino/epd2in9_V2/epd2in9_V2.h +++ b/Arduino/epd2in9_V2/epd2in9_V2.h @@ -1,7 +1,7 @@ /** * @filename : epd2in9_V2.h * @brief : Header file for e-paper display library epd2in9_V2.cpp - * @author : Yehui from Waveshare + * @author : * * Copyright (C) Waveshare Nov 09 2020 * @@ -71,7 +71,8 @@ private: unsigned int dc_pin; unsigned int cs_pin; unsigned int busy_pin; - + + void SetLut(void); void SetMemoryArea(int x_start, int y_start, int x_end, int y_end); void SetMemoryPointer(int x, int y); }; diff --git a/Arduino/epd2in9_V2/epd2in9_V2.ino b/Arduino/epd2in9_V2/epd2in9_V2.ino index beb57be..12e2afa 100644 --- a/Arduino/epd2in9_V2/epd2in9_V2.ino +++ b/Arduino/epd2in9_V2/epd2in9_V2.ino @@ -127,5 +127,5 @@ void loop() { epd.SetFrameMemory_Partial(paint.GetImage(), 80, 72, paint.GetWidth(), paint.GetHeight()); epd.DisplayFrame_Partial(); - delay(500); + // delay(300); } diff --git a/RaspberryPi_JetsonNano/c/Makefile.save b/RaspberryPi_JetsonNano/c/Makefile.save new file mode 100644 index 0000000..c927546 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/Makefile.save @@ -0,0 +1,82 @@ +DIR_Config = ./lib/Config +DIR_EPD = ./lib/e-Paper +DIR_FONTS = ./lib/Fonts +DIR_GUI = ./lib/GUI +DIR_Examples = ./examples +DIR_BIN = ./bin + +OBJ_C = $(wildcard ${DIR_EPD}/*.c ${DIR_GUI}/*.c ${DIR_Examples}/*.c ${DIR_FONTS}/*.c ) +OBJ_O = $(patsubst %.c,${DIR_BIN}/%.o,$(notdir ${OBJ_C})) +RPI_DEV_C = $(wildcard $(DIR_BIN)/dev_hardware_SPI.o $(DIR_BIN)/RPI_sysfs_gpio.o $(DIR_BIN)/DEV_Config.o ) +JETSON_DEV_C = $(wildcard $(DIR_BIN)/sysfs_software_spi.o $(DIR_BIN)/sysfs_gpio.o $(DIR_BIN)/DEV_Config.o ) + +$(shell if[! -e $(DIR_BIN)];then mkdir -p $(DIR_BIN); fi) +$(shell if[! -e $(DIR_BIN)];then mkdir -p $(DIR_BIN); fi) +DEBUG = -D DEBUG + +# USELIB_RPI = USE_BCM2835_LIB +USELIB_RPI = USE_WIRINGPI_LIB +# USELIB_RPI = USE_DEV_LIB + +ifeq ($(USELIB_RPI), USE_BCM2835_LIB) + LIB_RPI = -lbcm2835 -lm +else ifeq ($(USELIB_RPI), USE_WIRINGPI_LIB) + LIB_RPI = -lwiringPi -lm +else ifeq ($(USELIB_RPI), USE_DEV_LIB) + LIB_RPI = -lm +endif +DEBUG_RPI = -D $(USELIB_RPI) -D RPI + +USELIB_JETSONI = USE_DEV_LIB +# USELIB_JETSONI = USE_HARDWARE_LIB +ifeq ($(USELIB_JETSONI), USE_DEV_LIB) + LIB_JETSONI = -lm +else ifeq ($(USELIB_JETSONI), USE_HARDWARE_LIB) + LIB_JETSONI = -lm +endif +DEBUG_JETSONI = -D $(USELIB_JETSONI) -D JETSON + +.PHONY : RPI JETSON clean + +RPI:RPI_DEV RPI_epd +JETSON: JETSON_DEV JETSON_epd + +TARGET = epd +CC = gcc +MSG = -g -O0 -Wall +CFLAGS += $(MSG) + +RPI_epd:${OBJ_O} + echo $(@) + $(CC) $(CFLAGS) -D RPI $(OBJ_O) $(RPI_DEV_C) -o $(TARGET) $(LIB_RPI) $(DEBUG) + +JETSON_epd:${OBJ_O} + echo $(@) + $(CC) $(CFLAGS) $(OBJ_O) $(JETSON_DEV_C) -o $(TARGET) $(LIB_JETSONI) $(DEBUG) + +${DIR_BIN}/%.o:$(DIR_Examples)/%.c + $(CC) $(CFLAGS) -c $< -o $@ -I $(DIR_Config) -I $(DIR_GUI) -I $(DIR_EPD) $(DEBUG) + +${DIR_BIN}/%.o:$(DIR_EPD)/%.c + $(CC) $(CFLAGS) -c $< -o $@ -I $(DIR_Config) $(DEBUG) + +${DIR_BIN}/%.o:$(DIR_FONTS)/%.c + $(CC) $(CFLAGS) -c $< -o $@ $(DEBUG) + +${DIR_BIN}/%.o:$(DIR_GUI)/%.c + $(CC) $(CFLAGS) -c $< -o $@ -I $(DIR_Config) $(DEBUG) + +RPI_DEV: + $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/dev_hardware_SPI.c -o $(DIR_BIN)/dev_hardware_SPI.o $(LIB_RPI) $(DEBUG) + $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/RPI_sysfs_gpio.c -o $(DIR_BIN)/RPI_sysfs_gpio.o $(LIB_RPI) $(DEBUG) + $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/DEV_Config.c -o $(DIR_BIN)/DEV_Config.o $(LIB_RPI) $(DEBUG) + +JETSON_DEV: + $(CC) $(CFLAGS) $(DEBUG_JETSONI) -c $(DIR_Config)/sysfs_software_spi.c -o $(DIR_BIN)/sysfs_software_spi.o $(LIB_JETSONI) $(DEBUG) + $(CC) $(CFLAGS) $(DEBUG_JETSONI) -c $(DIR_Config)/sysfs_gpio.c -o $(DIR_BIN)/sysfs_gpio.o $(LIB_JETSONI) $(DEBUG) + $(CC) $(CFLAGS) $(DEBUG_JETSONI) -c $(DIR_Config)/DEV_Config.c -o $(DIR_BIN)/DEV_Config.o $(LIB_JETSONI) $(DEBUG) + +clean : + rm $(DIR_BIN)/*.* + rm $(TARGET) + diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_10in2b_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_10in2b_test.c new file mode 100644 index 0000000..54ba24d --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_10in2b_test.c @@ -0,0 +1,161 @@ +/***************************************************************************** +* | File : EPD_10.2inb_test.c +* | Author : Waveshare team +* | Function : 10.2inch b e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-01-20 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_10in2b.h" +#include + +int EPD_10in2b_test(void) +{ + printf("EPD_10IN2b_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_10IN2b_Init(); + + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_10IN2b_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + + //Create a new image cache + UBYTE *BlackImage, *RedImage; + UDOUBLE Imagesize = ((EPD_10IN2b_WIDTH % 8 == 0)? (EPD_10IN2b_WIDTH / 8 ): (EPD_10IN2b_WIDTH / 8 + 1)) * EPD_10IN2b_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + if((RedImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for red memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_10IN2b_WIDTH, EPD_10IN2b_HEIGHT, 0, WHITE); + Paint_Clear(WHITE); + printf("Paint_NewImage\r\n"); + Paint_NewImage(RedImage, EPD_10IN2b_WIDTH, EPD_10IN2b_HEIGHT, 0, WHITE); + Paint_Clear(WHITE); + +#if 0 // show bmp + Paint_NewImage(BlackImage, EPD_10IN2b_WIDTH, EPD_10IN2b_HEIGHT, 0, WHITE); + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/100x100.bmp", 10, 10); + EPD_10IN2b_Display(BlackImage); + DEV_Delay_ms(3000); + + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/2in9.bmp", 0, 0); + EPD_10IN2b_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 0 //show image for array + Paint_NewImage(BlackImage, EPD_10IN2b_WIDTH, EPD_10IN2b_HEIGHT, 0, WHITE); + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_2in9); + + EPD_10IN2b_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + printf("Drawing\r\n"); + //1.Select Image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + + Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); + + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + + Paint_DrawString_CN(130, 0,"你好abc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "微雪电子", &Font24CN, WHITE, BLACK); + + + Paint_DrawCircle(480, 480, 110, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(750, 270, 100, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(200, 310, 90, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + + Paint_DrawLine(200, 310, 480, 480, BLACK, DOT_PIXEL_3X3, LINE_STYLE_DOTTED); + Paint_DrawLine(480, 480, 750, 270, BLACK, DOT_PIXEL_3X3, LINE_STYLE_DOTTED); + + // Red Image + Paint_SelectImage(RedImage); + Paint_Clear(WHITE); + Paint_DrawLine(750, 270, 200, 310, BLACK, DOT_PIXEL_3X3, LINE_STYLE_SOLID); + + Paint_DrawCircle(480, 480, 150, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(480, 480, 110, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(750, 270, 70, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(200, 310, 40, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + EPD_10IN2b_Display(BlackImage, RedImage); + DEV_Delay_ms(3000); +#endif + + printf("Clear...\r\n"); + EPD_10IN2b_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_10IN2b_Sleep(); + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + return 0; +} \ No newline at end of file diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_13in3_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_13in3_test.c new file mode 100644 index 0000000..9e02e80 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_13in3_test.c @@ -0,0 +1,150 @@ +/***************************************************************************** +* | File : EPD_13IN3_test.c +* | Author : Waveshare team +* | Function : 13.3inch e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-01-20 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_13in3.h" +#include + +int EPD_13in3_test(void) +{ + printf("EPD_13IN3_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_13IN3_Init(); + + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_13IN3_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + + //Create a new image cache + UBYTE *BlackImage; + UDOUBLE Imagesize = ((EPD_13IN3_WIDTH % 8 == 0)? (EPD_13IN3_WIDTH / 8 ): (EPD_13IN3_WIDTH / 8 + 1)) * EPD_13IN3_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_13IN3_WIDTH, EPD_13IN3_HEIGHT, 0, WHITE); + Paint_Clear(WHITE); + +#if 0 // show bmp + Paint_NewImage(BlackImage, EPD_13IN3_WIDTH, EPD_13IN3_HEIGHT, 0, WHITE); + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/100x100.bmp", 10, 10); + EPD_13IN3_Display(BlackImage); + DEV_Delay_ms(3000); + + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/2in9.bmp", 0, 0); + EPD_13IN3_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 0 //show image for array + Paint_NewImage(BlackImage, EPD_13IN3_WIDTH, EPD_13IN3_HEIGHT, 0, WHITE); + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_2in9); + + EPD_13IN3_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + Paint_NewImage(BlackImage, EPD_13IN3_WIDTH, EPD_13IN3_HEIGHT, 0, WHITE); + printf("Drawing\r\n"); + //1.Select Image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + + Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); + + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + + Paint_DrawString_CN(130, 0,"你好abc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "微雪电子", &Font24CN, WHITE, BLACK); + + Paint_DrawCircle(200, 310, 90, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(200, 310, 40, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawCircle(480, 480, 150, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(480, 480, 110, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawCircle(750, 270, 100, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(750, 270, 70, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawLine(200, 310, 480, 480, BLACK, DOT_PIXEL_3X3, LINE_STYLE_DOTTED); + Paint_DrawLine(480, 480, 750, 270, BLACK, DOT_PIXEL_3X3, LINE_STYLE_DOTTED); + Paint_DrawLine(750, 270, 200, 310, BLACK, DOT_PIXEL_3X3, LINE_STYLE_SOLID); + + EPD_13IN3_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + + printf("Clear...\r\n"); + EPD_13IN3_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_13IN3_Sleep(); + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + return 0; +} \ No newline at end of file diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_1in54_DES_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_1in54_DES_test.c new file mode 100644 index 0000000..9814910 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_1in54_DES_test.c @@ -0,0 +1,134 @@ +/***************************************************************************** +* | File : EPD_1IN54_DES_test.c +* | Author : Waveshare team +* | Function : 1.54inch DES e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2020-01-13 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_1in54_DES.h" +#include + +int EPD_1in54_DES_test(void) +{ + printf("EPD_1IN54_DES_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_1IN54_DES_Init(); + + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_1IN54_DES_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + + //Create a new image cache + UBYTE *BlackImage; + UWORD Imagesize = ((EPD_1IN54_DES_WIDTH % 8 == 0)? (EPD_1IN54_DES_WIDTH / 8 ): (EPD_1IN54_DES_WIDTH / 8 + 1)) * EPD_1IN54_DES_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_1IN54_DES_WIDTH, EPD_1IN54_DES_HEIGHT, 90, WHITE); + Paint_Clear(WHITE); + +#if 0 // show bmp + Paint_NewImage(BlackImage, EPD_1IN54_DES_WIDTH, EPD_1IN54_DES_HEIGHT, 0, WHITE); + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/100x100.bmp", 10, 10); + EPD_1IN54_DES_Display(BlackImage); + DEV_Delay_ms(3000); + + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/1in54.bmp", 0, 0); + EPD_1IN54_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 0 //show image for array + Paint_NewImage(BlackImage, EPD_1IN54_DES_WIDTH, EPD_1IN54_DES_HEIGHT, 90, WHITE); + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_1in54); + + EPD_1IN54_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + Paint_NewImage(BlackImage, EPD_1IN54_DES_WIDTH, EPD_1IN54_DES_HEIGHT, 90, WHITE); + printf("Drawing\r\n"); + //1.Select Image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(5, 10, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(5, 25, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(5, 40, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawPoint(5, 55, BLACK, DOT_PIXEL_4X4, DOT_STYLE_DFT); + + Paint_DrawLine(20, 10, 70, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 10, 20, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(45, 10, 45, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(20, 35, 70, 35, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + + Paint_DrawRectangle(20, 10, 70, 60, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(85, 10, 130, 60, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawCircle(45, 35, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(45, 35, 10, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawString_EN(5, 65, "waveshare", &Font20, BLACK, WHITE); + Paint_DrawNum(5, 90, 123456789, &Font20, BLACK, WHITE); + + Paint_DrawString_CN(5, 105, "微雪电子", &Font24CN, WHITE, BLACK); + + EPD_1IN54_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + + printf("Clear...\r\n"); + EPD_1IN54_DES_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_1IN54_DES_Sleep(); + + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + return 0; +} diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_1in54_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_1in54_test.c index 2ce49fa..599c1a1 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_1in54_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_1in54_test.c @@ -111,7 +111,7 @@ int EPD_1in54_test(void) DEV_Delay_ms(2000); #endif -#if 0 //Partial refresh, example shows time +#if 1 //Partial refresh, example shows time printf("Partial refresh\r\n"); EPD_1IN54_Init(EPD_1IN54_PART); Paint_SelectImage(BlackImage); diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in13_DES_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in13_DES_test.c new file mode 100644 index 0000000..08db091 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in13_DES_test.c @@ -0,0 +1,135 @@ +/***************************************************************************** +* | File : EPD_2IN13_DES_test.c +* | Author : Waveshare team +* | Function : 2.9inch DES e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2020-01-13 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_2in13_DES.h" +#include + +int EPD_2in13_DES_test(void) +{ + printf("EPD_2IN13_DES_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_2IN13_DES_Init(); + + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_2IN13_DES_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + + //Create a new image cache + UBYTE *BlackImage; + UWORD Imagesize = ((EPD_2IN13_DES_WIDTH % 8 == 0)? (EPD_2IN13_DES_WIDTH / 8 ): (EPD_2IN13_DES_WIDTH / 8 + 1)) * EPD_2IN13_DES_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_2IN13_DES_WIDTH, EPD_2IN13_DES_HEIGHT, 90, WHITE); + Paint_Clear(WHITE); + +#if 0 // show bmp + Paint_NewImage(BlackImage, EPD_2IN13_DES_WIDTH, EPD_2IN13_DES_HEIGHT, 90, WHITE); + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/100x100.bmp", 10, 10); + EPD_2IN13_DES_Display(BlackImage); + DEV_Delay_ms(3000); + + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/2in13.bmp", 0, 0); + EPD_2IN13_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 0 //show image for array + Paint_NewImage(BlackImage, EPD_2IN13_DES_WIDTH, EPD_2IN13_DES_HEIGHT, 90, WHITE); + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_2in13); + + EPD_2IN13_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + Paint_NewImage(BlackImage, EPD_2IN13_DES_WIDTH, EPD_2IN13_DES_HEIGHT, 90, WHITE); + printf("Drawing\r\n"); + //1.Select Image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(5, 10, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(5, 25, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(5, 40, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawPoint(5, 55, BLACK, DOT_PIXEL_4X4, DOT_STYLE_DFT); + + Paint_DrawLine(20, 10, 70, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 10, 20, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawRectangle(20, 10, 70, 60, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(85, 10, 135, 60, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawLine(45, 15, 45, 55, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(25, 35, 65, 35, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawCircle(45, 35, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(110, 35, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawString_EN(140, 35, "wave", &Font16, BLACK, WHITE); + Paint_DrawString_EN(140, 51, "share", &Font16, BLACK, WHITE); + Paint_DrawNum(140, 75, 12345, &Font16, BLACK, WHITE); + + Paint_DrawString_CN(140, 10, "你好abc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(5, 63, "微雪电子", &Font24CN, WHITE, BLACK); + + EPD_2IN13_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + + printf("Clear...\r\n"); + EPD_2IN13_DES_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_2IN13_DES_Sleep(); + + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + return 0; +} diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c index 29227da..c661aaf 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c @@ -59,7 +59,7 @@ int EPD_2in13_V3_test(void) Paint_Clear(WHITE); #if 1 // show bmp - Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 0, WHITE); + Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE); printf("show window BMP-----------------\r\n"); Paint_SelectImage(BlackImage); GUI_ReadBmp("./pic/100x100.bmp", 0, 0); @@ -73,7 +73,7 @@ int EPD_2in13_V3_test(void) DEV_Delay_ms(3000); #endif -#if 0 //show image for array +#if 1 //show image for array printf("show image for array\r\n"); Paint_SelectImage(BlackImage); Paint_Clear(WHITE); diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in66b_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in66b_test.c index b1193c4..d7e2db7 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in66b_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in66b_test.c @@ -68,9 +68,9 @@ int EPD_2in66b_test(void) #if 1 // show bmp printf("show bmp------------------------\r\n"); Paint_SelectImage(BlackImage); - GUI_ReadBmp("./pic/f_b.bmp", 0, 0); + GUI_ReadBmp("./pic/2in66b_b.bmp", 0, 0); Paint_SelectImage(RedImage); - GUI_ReadBmp("./pic/f_r.bmp", 0, 0); + GUI_ReadBmp("./pic/2in66b_r.bmp", 0, 0); EPD_2IN66B_Display(BlackImage, RedImage); DEV_Delay_ms(2000); #endif diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_V2_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_V2_test.c index a974815..cf9844c 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_V2_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_V2_test.c @@ -141,8 +141,7 @@ int EPD_2in7b_V2_test(void) DEV_Delay_ms(2000);//important, at least 2s // close 5V printf("close 5V, Module enters 0 power consumption ...\r\n"); - DEV_Module_Exit(); -DEV_Delay_ms(12000); + DEV_Module_Exit(); return 0; } diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_test.c index 3269582..1efe9d5 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in7b_test.c @@ -135,7 +135,7 @@ int EPD_2in7b_test(void) // close 5V printf("close 5V, Module enters 0 power consumption ...\r\n"); DEV_Module_Exit(); -DEV_Delay_ms(12000); + DEV_Delay_ms(2000); return 0; } diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in9_DES_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in9_DES_test.c new file mode 100644 index 0000000..211d417 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in9_DES_test.c @@ -0,0 +1,138 @@ +/***************************************************************************** +* | File : EPD_2IN9_DES_test.c +* | Author : Waveshare team +* | Function : 2.9inch DES e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2020-01-13 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_2in9_DES.h" +#include + +int EPD_2in9_DES_test(void) +{ + printf("EPD_2IN9_DES_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_2IN9_DES_Init(); + + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_2IN9_DES_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + + //Create a new image cache + UBYTE *BlackImage; + UWORD Imagesize = ((EPD_2IN9_DES_WIDTH % 8 == 0)? (EPD_2IN9_DES_WIDTH / 8 ): (EPD_2IN9_DES_WIDTH / 8 + 1)) * EPD_2IN9_DES_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_2IN9_DES_WIDTH, EPD_2IN9_DES_HEIGHT, 90, WHITE); + Paint_Clear(WHITE); + +#if 1 // show bmp + Paint_NewImage(BlackImage, EPD_2IN9_DES_WIDTH, EPD_2IN9_DES_HEIGHT, 0, WHITE); + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/100x100.bmp", 10, 10); + EPD_2IN9_DES_Display(BlackImage); + DEV_Delay_ms(3000); + + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/2in9.bmp", 0, 0); + EPD_2IN9_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 //show image for array + Paint_NewImage(BlackImage, EPD_2IN9_DES_WIDTH, EPD_2IN9_DES_HEIGHT, 90, WHITE); + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_2in9); + + EPD_2IN9_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + Paint_NewImage(BlackImage, EPD_2IN9_DES_WIDTH, EPD_2IN9_DES_HEIGHT, 90, WHITE); + printf("Drawing\r\n"); + //1.Select Image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + + Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); + + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + + Paint_DrawString_CN(130, 0,"你好abc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "微雪电子", &Font24CN, WHITE, BLACK); + + EPD_2IN9_DES_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + + printf("Clear...\r\n"); + EPD_2IN9_DES_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_2IN9_DES_Sleep(); + + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + return 0; +} diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in9_V2_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in9_V2_test.c index 879d31e..8e72e18 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in9_V2_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in9_V2_test.c @@ -33,7 +33,7 @@ int EPD_2in9_V2_test(void) { - printf("EPD_2IN9_V2_test Demo\r\n"); + printf("_EPD_2IN9_V2_test Demo\r\n"); if(DEV_Module_Init()!=0){ return -1; } @@ -173,4 +173,3 @@ int EPD_2in9_V2_test(void) DEV_Module_Exit(); return 0; } - diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_3in7_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_3in7_test.c index 2c0790e..347d72b 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_3in7_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_3in7_test.c @@ -113,6 +113,7 @@ int EPD_3in7_test(void) #endif #if 1 // partial update, just 1 Gray mode + Paint_NewImage(BlackImage, 50, 120, 270, WHITE); EPD_3IN7_1Gray_Init(); //init 1 Gray mode EPD_3IN7_1Gray_Clear(); Paint_SelectImage(BlackImage); @@ -123,7 +124,7 @@ int EPD_3in7_test(void) sPaint_time.Hour = 12; sPaint_time.Min = 34; sPaint_time.Sec = 56; - UBYTE num = 10; + UBYTE num = 15; for (;;) { sPaint_time.Sec = sPaint_time.Sec + 1; if (sPaint_time.Sec == 60) { @@ -139,8 +140,9 @@ int EPD_3in7_test(void) } } } - Paint_ClearWindows(300, 0, 479, 80, WHITE); - Paint_DrawTime(300, 20, &sPaint_time, &Font20, WHITE, BLACK); + Paint_Clear(WHITE); + Paint_DrawRectangle(1, 1, 120, 50, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawTime(10, 15, &sPaint_time, &Font20, WHITE, BLACK); num = num - 1; if(num == 0) { @@ -148,8 +150,7 @@ int EPD_3in7_test(void) } printf("Part refresh...\r\n"); - EPD_3IN7_1Gray_Display(BlackImage); - // EPD_3IN7_1Gray_Display_Part(BlackImage, 0, 0, 279, 180); + EPD_3IN7_1Gray_Display_Part(BlackImage, 40, 30, 90, 150); // Xstart must be a multiple of 8 DEV_Delay_ms(500); } diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_4in01f_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_4in01f_test.c index eafe2b0..eb28810 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_4in01f_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_4in01f_test.c @@ -56,7 +56,7 @@ int EPD_4in01f_test(void) } Paint_NewImage(BlackImage, EPD_4IN01F_WIDTH, EPD_4IN01F_HEIGHT, 0, EPD_4IN01F_WHITE); Paint_SetScale(7); - + #if 1 printf("show image for array\r\n"); Paint_Clear(EPD_4IN01F_WHITE); diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_4in37b_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_4in37b_test.c new file mode 100644 index 0000000..98ca47d --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_4in37b_test.c @@ -0,0 +1,158 @@ +/***************************************************************************** +* | File : EPD_4in37b.c +* | Author : Waveshare team +* | Function : 4.37inch e-paper b +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-01-07 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_4in37b.h" +#include + +int EPD_4in37b_test(void) +{ + printf("EPD_4IN37B_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_4IN37B_Init(); + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_4IN37B_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + DEV_Delay_ms(500); + + //Create a new image cache + UBYTE *BlackImage, *RedImage; + /* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */ + UWORD Imagesize = ((EPD_4IN37B_WIDTH % 8 == 0)? (EPD_4IN37B_WIDTH / 8 ): (EPD_4IN37B_WIDTH / 8 + 1)) * EPD_4IN37B_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + if((RedImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for red memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_4IN37B_WIDTH, EPD_4IN37B_HEIGHT, 270, WHITE); + Paint_Clear(WHITE); + Paint_NewImage(RedImage, EPD_4IN37B_WIDTH, EPD_4IN37B_HEIGHT, 270, WHITE); + Paint_Clear(WHITE); + +#if 1 // show bmp + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/4in37b_b.bmp", 0, 0); + Paint_SelectImage(RedImage); + GUI_ReadBmp("./pic/4in37b_r.bmp", 0, 0); + EPD_4IN37B_Display(BlackImage, RedImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + printf("Drawing\r\n"); + + //1.Draw black image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawPoint(10, 110, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "微雪电子", &Font24CN, WHITE, BLACK); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + + //2.Draw red image + Paint_SelectImage(RedImage); + Paint_Clear(WHITE); + Paint_DrawCircle(160, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(210, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawString_CN(130, 0,"你好abc", &Font12CN, BLACK, WHITE); + Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + + EPD_4IN37B_Display(BlackImage, RedImage); + DEV_Delay_ms(3000); +#endif + +#if 1 //partial data transmission + Paint_NewImage(BlackImage, 120, 300, 270, WHITE); + Paint_Clear(WHITE); + Paint_NewImage(RedImage, 120, 300, 270, WHITE); + Paint_Clear(WHITE); + + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawLine(1, 1, 300, 1, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(300, 1, 300, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(300, 120, 1, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(1, 120, 1, 1, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + + Paint_DrawLine(20, 95, 70, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawCircle(160, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "微雪电子", &Font24CN, WHITE, BLACK); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + + //2.Draw red image + Paint_SelectImage(RedImage); + Paint_Clear(WHITE); + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(210, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawString_EN(10, 20, "partial transmission", &Font12, WHITE, BLACK); + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + + EPD_4IN37B_Display_Part(BlackImage, RedImage, 20, 100, 140, 400); + DEV_Delay_ms(3000); +#endif + + printf("Clear...\r\n"); + EPD_4IN37B_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_4IN37B_Sleep(); + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + + return 0; +} + diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_5in65f_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_5in65f_test.c index eeb57f0..29fd25c 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_5in65f_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_5in65f_test.c @@ -111,6 +111,7 @@ int EPD_5in65f_test(void) #endif printf("e-Paper Clear...\r\n"); EPD_5IN65F_Clear(EPD_5IN65F_WHITE); + EPD_5IN65F_Clear(EPD_5IN65F_WHITE); DEV_Delay_ms(1000); printf("e-Paper Sleep...\r\n"); diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_5in84_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_5in84_test.c new file mode 100644 index 0000000..5c6dfdf --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_5in84_test.c @@ -0,0 +1,123 @@ +/***************************************************************************** +* | File : EPD_5in84_test.c +* | Author : Waveshare team +* | Function : 5.84inch e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2020-01-08 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_5in84.h" +#include "time.h" + +int EPD_5in84_test(void) +{ + printf("EPD_5IN84_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_5in84_Init(); + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); + EPD_5in84_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + DEV_Delay_ms(500); + + //Create a new image cache + UBYTE *BlackImage; + /* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */ + UWORD Imagesize = ((EPD_5in84_WIDTH % 8 == 0)? (EPD_5in84_WIDTH / 8 ): (EPD_5in84_WIDTH / 8 + 1)) * EPD_5in84_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_5in84_WIDTH, EPD_5in84_HEIGHT, 0, WHITE); + +#if 1 // show bmp + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp("./pic/5in84_2.bmp", 0, 0); + EPD_5in84_Display(BlackImage); + DEV_Delay_ms(2000); +#endif + +#if 1 // show image for array + printf("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_5in84); + EPD_5in84_Display(BlackImage); + DEV_Delay_ms(2000); +#endif + +#if 1 // Drawing on the image + //1.Select Image + printf("SelectImage:BlackImage\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + Paint_DrawString_CN(130, 0, " 你好abc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(130, 20, "微雪电子", &Font24CN, WHITE, BLACK); + + printf("EPD_Display\r\n"); + EPD_5in84_Display(BlackImage); + DEV_Delay_ms(2000); +#endif + + printf("Clear...\r\n"); + EPD_5in84_Clear(); + + printf("Goto Sleep...\r\n"); + EPD_5in84_Sleep(); + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + + return 0; +} + diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_7in5_HD_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_7in5_HD_test.c index 7f1682e..ca2674a 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_7in5_HD_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_7in5_HD_test.c @@ -117,7 +117,6 @@ int EPD_7in5_HD_test(void) // close 5V printf("close 5V, Module enters 0 power consumption ...\r\n"); DEV_Module_Exit(); - return 0; } diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_Test.h b/RaspberryPi_JetsonNano/c/examples/EPD_Test.h index 2c58361..176f249 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_Test.h +++ b/RaspberryPi_JetsonNano/c/examples/EPD_Test.h @@ -37,6 +37,9 @@ #include "Debug.h" #include // malloc() free() +int EPD_1in54_DES_test(void); +int EPD_2in13_DES_test(void); +int EPD_2in9_DES_test(void); int EPD_1in02d_test(void); @@ -73,6 +76,8 @@ int EPD_4in2_test(void); int EPD_4in2bc_test(void); int EPD_4in2b_V2_test(void); +int EPD_4in37b_test(void); + int EPD_5in65f_test(void); int EPD_5in83_test(void); @@ -80,10 +85,16 @@ int EPD_5in83_V2_test(void); int EPD_5in83bc_test(void); int EPD_5in83b_V2_test(void); +int EPD_5in84_test(void); + int EPD_7in5_test(void); int EPD_7in5_HD_test(void); int EPD_7in5_V2_test(void); int EPD_7in5bc_test(void); int EPD_7in5b_V2_test(void); int EPD_7in5b_HD_test(void); + +int EPD_10in2b_test(void); + +int EPD_13in3_test(void); #endif diff --git a/RaspberryPi_JetsonNano/c/examples/ImageData.c b/RaspberryPi_JetsonNano/c/examples/ImageData.c index 00928bd..952ea0c 100644 --- a/RaspberryPi_JetsonNano/c/examples/ImageData.c +++ b/RaspberryPi_JetsonNano/c/examples/ImageData.c @@ -26293,6 +26293,1546 @@ const unsigned char gImage_5in83b_V2_r[38886] = { /*0X00,0X01,0X88,0X02,0XE0,0X0 }; +const unsigned char gImage_5in84[24576] = { /*0X00,0X01,0X00,0X03,0X00,0X01,*/ +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0X80,0X1F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XC0,0X00,0X00,0X01, +0XFF,0XFF,0XC0,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X38,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XC0,0X00,0X00,0X01,0XFF,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0X80,0X1F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFE,0X00,0X00,0X00,0X00, +0X3F,0XFF,0XE0,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X38,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFE,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X0F,0XFF,0XE0,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X78,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XE0,0X00,0X00,0X00,0X00, +0X03,0XFF,0XF0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X78,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XF0,0X00,0X00,0X00,0X00,0X03,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XC0,0X00,0X00,0X00,0X00, +0X01,0XFF,0XF0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X7F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X03,0XFF,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0X80,0X00,0X00,0X00,0X00, +0X00,0X7F,0XF8,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X7F,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X3F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X30,0X00,0X01,0XFF,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0X00,0X00,0X00,0X00,0X00, +0X00,0X3F,0XF8,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XE0,0X01,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X70,0X00,0X00,0XFF,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFE,0X00,0X00,0X00,0X00,0X00, +0X00,0X1F,0XFC,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XE0,0X01,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0X00,0X00,0X7F,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X0F,0XFC,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XC0,0X03,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X01,0XF0,0X00,0X00,0X3F,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00, +0X00,0X0F,0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X03,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X03,0XF0,0X00,0X00,0X3F,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00, +0X00,0X07,0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X80,0X07,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X0F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X00,0X1F,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0X80,0X07,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X0F,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0X00,0X0F,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X1F,0XF0,0X00,0X00,0X0F,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XE0,0X00,0X03,0XFF,0XFF,0XF0, +0X00,0X01,0XFF,0X80,0X07,0XFF,0XFF,0XFF,0XFF,0X00,0X0F,0XF8,0X00,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XF0,0X00,0X01,0XFF,0XFF,0XF0,0X00,0X01,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XE0,0X00,0X07,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X3F,0XF0,0X00,0X00,0X07,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XE0,0X00,0X0F,0XFF,0XFF,0XFE, +0X00,0X01,0XFF,0X80,0X07,0XFF,0XFF,0XFF,0XFE,0X00,0X1F,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XE0,0X00,0X0F,0XFF,0XFF,0XFE,0X00,0X01,0XFE,0X00,0XFF, +0XFF,0XFF,0XFF,0XFF,0X00,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X07,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XE0,0X00,0X3F,0XFF,0XFF,0XFF, +0X80,0X01,0XFF,0XC0,0X03,0XFF,0XFF,0XFF,0XFE,0X00,0X1F,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XE0,0X00,0X3F,0XFF,0XFF,0XFF,0X80,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XC0,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0XFF,0XF0,0X00,0X00,0X03,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X7F,0XFF,0XFF,0XFF, +0XC0,0X00,0XFF,0XC0,0X03,0XFF,0XFF,0XFF,0XFC,0X00,0X3F,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XE0,0X00,0X7F,0XFF,0XFF,0XFF,0XC0,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X3F,0XF0,0X00,0X00,0X03,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X01,0XFF,0XFF,0XFF,0XFF, +0XE0,0X00,0XFF,0XE0,0X01,0XFF,0XFF,0XFF,0XFC,0X00,0X3F,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X3F,0XF0,0X00,0X00,0X01,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X03,0XFF,0XFF,0XFF,0XFF, +0XF0,0X00,0XFF,0XE0,0X01,0XFF,0XFF,0XFF,0XFC,0X00,0X7F,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X01,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X0F,0XFE,0X00,0XFE,0X00,0X3F,0XF0,0X1F,0X80,0X01,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X03,0XFF,0XFF,0XFF,0XFF, +0XF8,0X00,0XFF,0XF0,0X00,0XFF,0XFF,0XFF,0XF8,0X00,0X7F,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X03,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X07,0XFE,0X00,0XFE,0X00,0X7F,0XD8,0X3F,0XC0,0X01,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X07,0XFF,0XFF,0XFF,0XFF, +0XF8,0X00,0XFF,0XF0,0X00,0XFF,0XFF,0XFF,0XF8,0X00,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X07,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X07,0XFF,0X01,0XFF,0X00,0X7F,0XC0,0X3F,0XC0,0X00,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X07,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XF8,0X00,0X7F,0XFF,0XFF,0XF0,0X00,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X07,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X07,0XFF,0X01,0XFF,0X00,0XFF,0X80,0X7F,0XE0,0X00,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XF8,0X00,0X7F,0XFF,0XFF,0XF0,0X01,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X03,0XFF,0X83,0XFF,0X00,0XFF,0X80,0X7F,0XE0,0X00,0XFF,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XF8,0X00,0X3F,0XFF,0XFF,0XE0,0X01,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X03,0XFF,0X83,0XFF,0X81,0XFF,0X00,0XFF,0XF0,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFC,0X00,0X3F,0XFF,0XFF,0XE0,0X03,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X03,0XFF,0X83,0XFF,0X81,0XFF,0X00,0XFF,0XF0,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFC,0X00,0X3F,0XFF,0XFF,0XC0,0X03,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X01,0XFF,0XC7,0XFF,0XC3,0XFF,0X01,0XFF,0XF8,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFE,0X00,0X1F,0XFF,0XFF,0XC0,0X07,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X01,0XFF,0XC7,0XFF,0XC3,0XFE,0X01,0XFF,0XF8,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFE,0X00,0X1F,0XFF,0XFF,0X80,0X07,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X01,0XFF,0XC7,0XFF,0XC3,0XFE,0X03,0XFF,0XFC,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0X80,0X07,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XE0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0XFF,0XEF,0XFF,0XE7,0XFC,0X03,0XFF,0XFC,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0X00,0X0F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XC0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0XFF,0XEF,0XFF,0XE7,0XFD,0X07,0XFF,0XFE,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0X80,0X07,0XFF,0XFF,0X00,0X0F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0XC0,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0X7F,0XFF,0XFF,0XFF,0XF9,0X87,0XFF,0XFE,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0X80,0X07,0XFF,0XFE,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFF,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0X7F,0XFF,0XFF,0XFF,0XFB,0X87,0XFF,0XFF,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XC0,0X03,0XFF,0XFE,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0X7F,0XFF,0XFF,0XFF,0XF3,0XCF,0XFF,0XFF,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XC0,0X03,0XFF,0XFC,0X00,0X3F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0X3F,0XFF,0XDF,0XFF,0XF7,0XCF,0XF9,0XFF,0X80,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XE0,0X01,0XFF,0XFC,0X00,0X3F,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0XFF,0XFC,0X00,0X3F,0XFF,0XDF,0XFF,0XF7,0XBF,0XF9,0XFF,0X80,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XE0,0X01,0XFF,0XF8,0X00,0X7F,0XFF,0XF8,0X00,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X0F,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X3F,0XFF,0XCF,0XFF,0XEF,0X3F,0XF0,0XFF,0XC0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XF0,0X00,0XFF,0XF8,0X00,0X7F,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X0F,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFC,0X00,0X1F,0XFF,0X8F,0XFF,0XEF,0X7F,0XF0,0XFF,0XC0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XF0,0X00,0XFF,0XF0,0X00,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X0F,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFE,0X00,0X1F,0XFF,0X87,0XFF,0XDF,0X7F,0XF0,0X7F,0XE0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XF8,0X00,0X7F,0XF0,0X00,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFE,0X00,0X1F,0XFF,0X07,0XFF,0XCE,0XFF,0XE0,0X3F,0XF0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XF8,0X00,0X7F,0XE0,0X01,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X3F,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFE,0X00,0X0F,0XFF,0X07,0XFF,0XCE,0XFF,0XE0,0X3F,0XE0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFC,0X00,0X3F,0XE0,0X01,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X7F,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFE,0X00,0X0F,0XFF,0X03,0XFF,0X85,0XFF,0XC0,0X7F,0XE0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFC,0X00,0X3F,0XC0,0X03,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFE,0X00,0X0F,0XFE,0X03,0XFF,0X85,0XFF,0XC0,0X7F,0XC0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFE,0X00,0X1F,0XC0,0X03,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X00,0X07,0XFE,0X01,0XFF,0X03,0XFF,0X80,0XFF,0XC0,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFE,0X00,0X1F,0X80,0X07,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X07,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X00,0X07,0XFC,0X01,0XFF,0X03,0XFF,0X80,0XFF,0X80,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFF,0X00,0X0F,0X80,0X07,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X1F,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X00,0X07,0XFC,0X01,0XFE,0X03,0XFF,0X01,0XFF,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFF,0X00,0X0F,0X00,0X0F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X7C, +0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X80,0X03,0XFC,0X00,0XFE,0X01,0XFF,0X01,0XFF,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFF,0XFF,0X80,0X07,0X00,0X0F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0XFF, +0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0X80,0X03,0XF8,0X00,0XFE,0X01,0XFE,0X01,0XFE,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0X80,0X06,0X00,0X1F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0X80,0X00,0X0F,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XC0,0X01,0XF8,0X00,0X7C,0X00,0XFE,0X13,0XFE,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0X80,0X06,0X00,0X1F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XE0,0X00,0X07,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X7F,0XFF,0X80,0X3F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X3F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XF0,0X00,0X01,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X7F,0XFF,0X80,0X1F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X3F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XF8,0X00,0X00,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF8,0X00,0X7F,0XFF,0X80,0X1F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0X80,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFE,0X00,0X00,0X3F,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF8,0X00,0X7F,0XFF,0X80,0X0F, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0X80,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0X00,0X00,0X1F,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X7F,0XFF,0X80,0X07, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFE,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0X80,0X00,0X0F,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X7F,0XFF,0X80,0X01, +0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XF8,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XE0,0X00,0X03,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF8,0X00,0X7F,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XF8,0X00,0X01,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X1F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XF0,0X00,0X01,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF0,0X00,0X7F,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XF8,0X00,0X01,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XF8,0X00,0X00,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XC0,0X00,0X7F,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFE,0X00,0X00,0X3F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X1F,0X80,0X00,0X7F,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X1F,0X00,0X00,0X7F,0XFF,0XC0,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFE,0X00,0X07,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XC0,0X00,0X0F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X1E,0X00,0X00,0X7F,0XFF,0XC0,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFE,0X00,0X07,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XE0,0X00,0X03,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X1C,0X00,0X00,0X7F,0XFF,0XE0,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XF0,0X00,0X01,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X10,0X00,0X00,0X7F,0XFF,0XF0,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFC,0X00,0X00,0X7F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XF8,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0X80,0X1F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFE,0X00,0X00,0X3F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0X80,0X1F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFE,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XC0,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0X80, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XE0,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XF0, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XE0,0X7F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XF0,0X00,0X00,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XF8,0X01,0XFF,0XFF, +0XFF,0XFF,0XFF,0XC0,0X0F,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0XFE,0X00,0X7F, +0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X7C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,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,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,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,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,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,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,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,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,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,0X7F,0X80,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X7F,0XC0,0X00,0X00,0X00,0X00,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,0X00,0X00, +0X00,0X00,0X00,0X07,0XFF,0XF0,0X00,0X00,0X00,0X07,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0X07,0XFF,0XFC,0X00,0X00,0X00,0X03,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XF0,0X00,0X00,0X00,0XFF,0XFC,0X00,0X00,0X00,0X00,0X7F,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,0X07,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X1F,0XFF,0XFE,0X00,0X00,0X00,0X00, +0X00,0X00,0X1F,0XFF,0XFF,0X00,0X00,0X00,0X1F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X3F,0XF0,0X00,0X00,0X00,0XFF,0XFC,0X00,0X00,0X00,0X00,0XFF,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,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X3F,0XFF,0XFF,0X80,0X00,0X00,0X00, +0X00,0X00,0X7F,0XFF,0XFF,0XC0,0X00,0X00,0X3F,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00, +0X00,0X00,0X7F,0XF8,0X00,0X00,0X00,0XFF,0XFE,0X00,0X00,0X00,0X00,0XFF,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,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00, +0X00,0X01,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00, +0X00,0X00,0X7F,0XF8,0X00,0X00,0X00,0XFF,0XFE,0X00,0X00,0X00,0X00,0XFF,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,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00, +0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XF8,0X00,0X00,0X00,0XFF,0XFE,0X00,0X00,0X00,0X01,0XFF,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,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00, +0X00,0X07,0XFF,0XFF,0XFF,0XF8,0X00,0X03,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFC,0X00,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,0X01,0XFF,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,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00, +0X00,0X0F,0XFF,0XFF,0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00, +0X00,0X00,0XFF,0XFC,0X00,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,0X01,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X06,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, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X07,0XFF,0XE1,0XFF,0XFC,0X00,0X00,0X00, +0X00,0X0F,0XFF,0XE1,0XFF,0XFC,0X00,0X07,0XFF,0XF0,0XFF,0XFC,0X00,0X00,0X00,0X00, +0X00,0X01,0XFF,0XFC,0X00,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,0X03,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X0F,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,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X0F,0XFF,0X80,0X3F,0XFC,0X00,0X00,0X00, +0X00,0X1F,0XFF,0X00,0X3F,0XFE,0X00,0X0F,0XFF,0X80,0X3F,0XFE,0X00,0X00,0X00,0X00, +0X00,0X01,0XFF,0XFE,0X00,0X00,0X00,0XFF,0XFF,0X80,0X00,0X00,0X03,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X0F,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,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X0F,0XFE,0X00,0X1F,0XFE,0X00,0X00,0X00, +0X00,0X1F,0XFE,0X00,0X1F,0XFE,0X00,0X0F,0XFE,0X00,0X0F,0XFE,0X00,0X00,0X00,0X00, +0X00,0X01,0XFF,0XFE,0X00,0X00,0X00,0XFF,0XFF,0X80,0X00,0X00,0X07,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0XF0,0X00,0X00,0X00,0X00,0X01,0XF8, +0X00,0X00,0X00,0X03,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0X80, +0X00,0X00,0X00,0XFC,0X00,0X00,0X00,0X1E,0X00,0X00,0X00,0X07,0XF0,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X1F,0XFC,0X00,0X0F,0XFE,0X00,0X00,0X00, +0X00,0X3F,0XFC,0X00,0X0F,0XFF,0X00,0X1F,0XFE,0X00,0X07,0XFF,0X00,0X00,0X00,0X00, +0X00,0X03,0XFF,0XFE,0X00,0X00,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X07,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X81,0X80,0XF0,0X00,0X00,0X00,0X00,0X1F,0XFF, +0X80,0X00,0X00,0X3F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XF0, +0X00,0X00,0X07,0XFF,0XC0,0X00,0X00,0XFF,0X80,0X00,0X00,0X7F,0XFF,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X1F,0XFC,0X00,0X07,0XFE,0X00,0X00,0X00, +0X00,0X3F,0XF8,0X00,0X07,0XFF,0X00,0X1F,0XFC,0X00,0X07,0XFF,0X00,0X00,0X00,0X00, +0X00,0X03,0XFF,0XFF,0X00,0X00,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X07,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X81,0X81,0XE0,0X00,0X00,0X00,0X00,0X7F,0XFF, +0XE0,0X00,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFC, +0X00,0X00,0X1F,0XFF,0XF0,0X00,0X01,0XFF,0XE0,0X00,0X01,0XFF,0XFF,0XE0,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X1F,0XF8,0X00,0X07,0XFF,0X00,0X00,0X00, +0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X1F,0XF8,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X03,0XFF,0XFF,0X00,0X00,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X0F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC1,0X81,0XE0,0X00,0X00,0X00,0X01,0XFF,0XFF, +0XF0,0X00,0X03,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0X00,0X00,0X3F,0XFF,0XF8,0X00,0X03,0XFF,0XF0,0X00,0X03,0XFF,0XFF,0XF8,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00, +0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X3F,0XF8,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X07,0XFF,0XFF,0X00,0X00,0X00,0XFF,0XFF,0XE0,0X00,0X00,0X0F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC1,0X81,0XE0,0X00,0X00,0X00,0X03,0XFF,0XFF, +0XF8,0X00,0X07,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF, +0X80,0X00,0X7F,0XFF,0XFE,0X00,0X07,0XFF,0XF0,0X00,0X0F,0XFF,0XFF,0XFC,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00, +0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X3F,0XF8,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X07,0XFF,0XFF,0X80,0X00,0X00,0XFF,0XFF,0XE0,0X00,0X00,0X0F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XE0,0X03,0XC0,0X00,0X00,0X00,0X07,0XFF,0XFF, +0XFC,0X00,0X0F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF, +0XC0,0X00,0XFF,0XFF,0XFF,0X00,0X07,0XE1,0XF8,0X00,0X1F,0XFF,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X07,0XFD,0XFF,0X80,0X00,0X00,0XFF,0XFF,0XE0,0X00,0X00,0X1F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,0X01,0XC0,0X00,0X00,0X00,0X0F,0XFF,0XFF, +0XFE,0X00,0X1F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF, +0XC0,0X01,0XFF,0XFF,0XFF,0X00,0X0F,0XC0,0XF8,0X00,0X3F,0XFF,0XFF,0XFF,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X0F,0XFC,0XFF,0X80,0X00,0X00,0XFF,0XFF,0XF0,0X00,0X00,0X1F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X00,0X00,0X01,0X80,0X00,0X00,0X0F,0XFC,0X07, +0XFE,0X00,0X1F,0XF8,0X0F,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XC0,0X7F, +0XE0,0X03,0XFF,0X81,0XFF,0X80,0X0F,0X80,0X78,0X00,0X3F,0XF8,0X07,0XFF,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XF0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X0F,0XFC,0XFF,0XC0,0X00,0X00,0XFF,0XDF,0XF0,0X00,0X00,0X3F,0XFF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X01,0XC0,0X00,0X00,0X03,0XC0,0X00,0X00,0X1F,0XF8,0X03, +0XFF,0X00,0X3F,0XF0,0X03,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0X00,0X3F, +0XE0,0X03,0XFE,0X00,0XFF,0XC0,0X0F,0X80,0X7C,0X00,0X7F,0XE0,0X01,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X0F,0XF8,0XFF,0XC0,0X00,0X00,0XFF,0XCF,0XF8,0X00,0X00,0X3F,0XEF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X01,0XE0,0X00,0X80,0X07,0X80,0X00,0X00,0X1F,0XF0,0X01, +0XFF,0X00,0X3F,0XE0,0X01,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X00,0X1F, +0XF0,0X07,0XFC,0X00,0X7F,0XC0,0X0F,0X80,0X7C,0X00,0XFF,0XC0,0X00,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X1F,0XF8,0X7F,0XC0,0X00,0X00,0XFF,0XCF,0XF8,0X00,0X00,0X3F,0XEF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0XE0,0X1F,0XFC,0X07,0X00,0X00,0X00,0X1F,0XE0,0X00, +0XFF,0X00,0X7F,0XC0,0X01,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFE,0X00,0X1F, +0XF0,0X07,0XFC,0X00,0X3F,0XC0,0X0F,0X80,0X7C,0X00,0XFF,0X80,0X00,0X7F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X07,0XFF,0X00,0X00,0X00,0X00, +0X00,0X1F,0XF8,0X7F,0XE0,0X00,0X00,0XFF,0XCF,0XF8,0X00,0X00,0X7F,0XCF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X60,0X7F,0XFF,0X00,0X00,0X00,0X00,0X3F,0XE0,0X00, +0XFF,0X00,0X7F,0X80,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X0F, +0XF0,0X07,0XF8,0X00,0X1F,0XE0,0X0F,0X80,0XF8,0X01,0XFF,0X00,0X00,0X3F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X00,0X00,0X00,0X07,0XFF,0X00,0X00,0X00,0X00, +0X00,0X1F,0XF0,0X7F,0XE0,0X00,0X00,0XFF,0XC7,0XFC,0X00,0X00,0X7F,0XCF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X03,0X00,0X01,0XF0,0X1F,0XC0,0X00,0XE0,0X00,0X3F,0XC0,0X00, +0XFF,0X80,0X7F,0X80,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X0F, +0XF0,0X0F,0XF8,0X00,0X1F,0XE0,0X07,0XC1,0XF8,0X01,0XFE,0X00,0X00,0X3F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X0F,0XFE,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X00,0X00,0X00, +0X00,0X3F,0XF0,0X3F,0XE0,0X00,0X00,0XFF,0XC7,0XFC,0X00,0X00,0X7F,0XCF,0XFC,0X00, +0X00,0X00,0X00,0X00,0X07,0XC0,0X03,0XC0,0X0F,0XE0,0X03,0XF0,0X00,0X3F,0XC0,0X00, +0XFF,0X80,0X7F,0X80,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X0F, +0XF0,0X0F,0XF0,0X00,0X1F,0XE0,0X07,0XFF,0XF8,0X01,0XFE,0X00,0X00,0X3F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X0F,0XFC, +0X00,0X00,0X00,0X00,0X0F,0XFC,0X00,0X00,0X00,0X00,0X0F,0XFE,0X00,0X00,0X00,0X00, +0X00,0X3F,0XF0,0X3F,0XF0,0X00,0X00,0XFF,0XC7,0XFC,0X00,0X00,0XFF,0X8F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X07,0XF8,0X07,0X00,0X1F,0XF0,0X1F,0XF0,0X00,0X3F,0XC0,0X00, +0XFF,0X80,0X00,0X00,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X0F, +0XF0,0X0F,0XF0,0X00,0X1F,0XE0,0X03,0XFF,0XF0,0X03,0XFE,0X00,0X00,0X1F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X3F,0XFC,0X00,0X00,0X00,0X00,0X0F,0XFC,0X00,0X00,0X00,0X00, +0X00,0X3F,0XE0,0X3F,0XF0,0X00,0X00,0XFF,0XC3,0XFE,0X00,0X00,0XFF,0X8F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X03,0XFE,0X0E,0X0F,0XFF,0XF8,0X7F,0XE0,0X00,0X00,0X00,0X00, +0XFF,0X80,0X00,0X00,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F, +0XF0,0X0F,0XF0,0X00,0X1F,0XF0,0X01,0XFF,0XE0,0X03,0XFC,0X00,0X00,0X1F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X01,0XFF,0XF8,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X00,0X00,0X00, +0X00,0X7F,0XE0,0X1F,0XF8,0X00,0X00,0XFF,0XC3,0XFE,0X00,0X01,0XFF,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0XFE,0X0C,0X3F,0XFF,0XF8,0X3F,0X00,0X00,0X00,0X00,0X00, +0XFF,0X00,0X00,0X00,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F, +0XF0,0X0F,0XF0,0X00,0X0F,0XF0,0X00,0XFF,0XC0,0X03,0XFC,0X00,0X00,0X1F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X3F,0XF8,0X00,0X00,0X00,0X00, +0X00,0X7F,0XE0,0X1F,0XF8,0X00,0X00,0XFF,0XC1,0XFF,0X00,0X01,0XFF,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X3E,0X1C,0X7F,0XFF,0XFC,0X3C,0X00,0X00,0X00,0X00,0X00, +0XFF,0X00,0X00,0X00,0X01,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F, +0XF0,0X0F,0XF0,0X00,0X0F,0XF0,0X00,0X3F,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X3F,0XF8,0X00,0X00,0X00,0X00, +0X00,0XFF,0XC0,0X1F,0XF8,0X00,0X00,0XFF,0XC1,0XFF,0X00,0X01,0XFF,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X04,0X18,0XFF,0XFF,0XFC,0X10,0X00,0X00,0X00,0X00,0X01, +0XFF,0X00,0X00,0X00,0X01,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F, +0XF0,0X0F,0XF0,0X00,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X00,0X00, +0X00,0XFF,0XC0,0X0F,0XFC,0X00,0X00,0XFF,0XC1,0XFF,0X00,0X03,0XFE,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X30,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X01, +0XFF,0X00,0X00,0X00,0X03,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F, +0XE0,0X0F,0XF0,0X00,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XE0,0X00,0X00,0X00,0X00, +0X00,0XFF,0XC0,0X0F,0XFC,0X00,0X00,0XFF,0XC0,0XFF,0X80,0X03,0XFE,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X31,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X03, +0XFE,0X00,0X00,0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F, +0XE0,0X0F,0XF0,0X00,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X01,0XFF,0XE0,0X00,0X00,0X00,0X00, +0X01,0XFF,0X80,0X0F,0XFC,0X00,0X00,0XFF,0XC0,0XFF,0X80,0X03,0XFC,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X31,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X03, +0XFE,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F, +0XC0,0X0F,0XF0,0X00,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFF,0XC0,0X00,0X00,0X00,0X00, +0X01,0XFF,0X80,0X07,0XFE,0X00,0X00,0XFF,0XC0,0X7F,0X80,0X07,0XFC,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X31,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X07, +0XFC,0X00,0X00,0X1F,0XFF,0XF0,0X00,0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X7F, +0XC0,0X0F,0XF8,0X00,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,0X00, +0X01,0XFF,0X80,0X07,0XFE,0X00,0X00,0XFF,0XC0,0X7F,0XC0,0X07,0XFC,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X73,0XFF,0XFF,0XFF,0X0F,0X00,0X00,0X00,0X00,0X0F, +0XF8,0X00,0X00,0X1F,0XFF,0XE0,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0XFF, +0X80,0X07,0XF8,0X00,0X1F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X03,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X07,0XFF,0X00,0X00,0X00,0X00,0X00, +0X03,0XFF,0X00,0X07,0XFE,0X00,0X00,0XFF,0XC0,0X7F,0XC0,0X0F,0XF8,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X78,0X71,0XFF,0XFF,0XFF,0X0F,0X00,0X00,0X00,0X00,0X0F, +0XF8,0X00,0X00,0X1F,0XFF,0XC0,0X00,0X0F,0XFF,0XC0,0X00,0XF8,0X00,0X00,0X01,0XFF, +0X00,0X07,0XFC,0X00,0X3F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X3F,0XFE,0X00,0X00,0X00,0X0F,0XFF,0X00,0X00,0X00,0X00,0X00, +0X03,0XFF,0X00,0X03,0XFF,0X00,0X00,0XFF,0XC0,0X3F,0XE0,0X0F,0XF8,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X78,0X71,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X1F, +0XF0,0X00,0X00,0X1F,0XFF,0XE0,0X00,0X1F,0XFF,0XE0,0X00,0XFC,0X00,0X00,0X03,0XFE, +0X00,0X07,0XFE,0X00,0X7F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XFE,0X00,0X00,0X00,0X1F,0XFE,0X00,0X00,0X00,0X00,0X00, +0X03,0XFF,0X00,0X03,0XFF,0X00,0X00,0XFF,0XC0,0X3F,0XE0,0X0F,0XF8,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X31,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X3F, +0XE0,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X3F,0XFF,0XF0,0X00,0XFC,0X00,0X00,0X03,0XFE, +0X00,0X03,0XFF,0X01,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X07,0XFF,0X00,0X00,0X00,0X3F,0XFC,0X00,0X00,0X00,0X00,0X00, +0X07,0XFE,0X00,0X03,0XFF,0X00,0X00,0XFF,0XC0,0X3F,0XE0,0X1F,0XF0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X31,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X7F, +0XC0,0X00,0X00,0X1F,0XFF,0XFC,0X00,0X3F,0XFF,0XFC,0X01,0XFC,0X00,0X00,0X07,0XFC, +0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X07,0XFF,0X00,0X00,0X00,0X7F,0XF8,0X00,0X00,0X00,0X00,0X00, +0X07,0XFE,0X00,0X01,0XFF,0X80,0X00,0XFF,0XC0,0X1F,0XF0,0X1F,0XF0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X39,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0XFF, +0XC0,0X00,0X00,0X00,0X0F,0XFE,0X00,0X7F,0XFF,0XFE,0X03,0XF8,0X00,0X00,0X0F,0XF8, +0X00,0X01,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00, +0X07,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0XFF,0XC0,0X1F,0XF0,0X1F,0XE0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X01,0XFF, +0X80,0X00,0X00,0X00,0X03,0XFE,0X00,0X7F,0X8F,0XFF,0X87,0XF8,0X00,0X00,0X1F,0XF0, +0X00,0X00,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X03,0XFF,0X80,0X00,0X01,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00, +0X0F,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0XFF,0XC0,0X0F,0XF0,0X3F,0XE0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFC,0X10,0X00,0X00,0X00,0X03,0XFF, +0X00,0X00,0X00,0X00,0X01,0XFF,0X00,0X7F,0X03,0XFF,0XFF,0XF8,0X00,0X00,0X3F,0XF0, +0X00,0X00,0X7F,0XFF,0XCF,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X01,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00, +0X0F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0XFF,0XC0,0X0F,0XF8,0X3F,0XE0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X1E,0X1F,0XFF,0XFF,0XFC,0X3E,0X00,0X00,0X00,0X03,0XFE, +0X00,0X00,0X00,0X00,0X00,0XFF,0X00,0XFE,0X00,0XFF,0XFF,0XF0,0X00,0X00,0X7F,0XE0, +0X00,0X00,0X3F,0XFF,0X8F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X03,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00, +0X0F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0XFF,0XC0,0X0F,0XF8,0X7F,0XC0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X7E,0X0F,0XFF,0XFF,0XF8,0X3F,0X80,0X00,0X00,0X07,0XFC, +0X00,0X00,0X00,0X00,0X00,0XFF,0X00,0XFC,0X00,0X7F,0XFF,0XF0,0X00,0X00,0XFF,0XC0, +0X00,0X00,0X0F,0XFF,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X07,0XFF,0X80,0X00,0X00,0X00,0X00,0X00, +0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0XFF,0XC0,0X07,0XF8,0X7F,0XC0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X03,0XFF,0X0F,0XFF,0XFF,0XF8,0X3F,0XE0,0X00,0X00,0X0F,0XF8, +0X00,0X00,0X00,0X00,0X00,0X7F,0X80,0XFC,0X00,0X3F,0XFF,0XE0,0X00,0X01,0XFF,0X80, +0X00,0X00,0X00,0XF0,0X0F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X7F,0XF0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X0F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00, +0X1F,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0XC0,0X07,0XFC,0X7F,0XC0,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X07,0XFC,0X07,0XFF,0XFF,0XF0,0X0F,0XF0,0X00,0X00,0X1F,0XF0, +0X00,0X00,0X00,0X00,0X00,0X7F,0X80,0X7C,0X00,0X0F,0XFF,0XC0,0X00,0X01,0XFF,0X00, +0X00,0X00,0X00,0X00,0X1F,0XF0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X1F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X1F,0XFE,0X00,0X00,0X00,0X00,0X00,0X00, +0X1F,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0XC0,0X07,0XFC,0XFF,0X80,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X07,0XE0,0X03,0XFF,0XFF,0XE0,0X01,0XF0,0X00,0X00,0X3F,0XF0, +0X00,0X00,0X00,0X00,0X00,0X7F,0X80,0X00,0X00,0X03,0XFF,0X00,0X00,0X03,0XFE,0X00, +0X00,0X00,0X00,0X00,0X1F,0XE0,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0X1F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X01,0XFF,0X80,0X00,0X00, +0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X3F,0XFC,0X00,0X00,0X00,0X00,0X00,0X00, +0X3F,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0XC0,0X03,0XFE,0XFF,0X80,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X03,0X80,0X01,0XFF,0XFF,0XC0,0X00,0X60,0X00,0X00,0X7F,0XE0, +0X00,0X00,0X00,0X00,0X00,0X7F,0X80,0X00,0X00,0X00,0X7C,0X00,0X00,0X07,0XFC,0X00, +0X00,0X00,0X00,0X00,0X1F,0XE0,0X00,0X00,0X00,0X03,0XFE,0X00,0X00,0X1F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00, +0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X7F,0XF8,0X00,0X00,0X00,0X00,0X00,0X00, +0X3F,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XFF,0XC0,0X03,0XFF,0XFF,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0X03,0X00,0X00,0X00,0X00,0XFF,0XC0, +0X00,0X00,0X7F,0X80,0X00,0X7F,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XF8,0X00, +0X00,0X00,0X00,0X00,0X1F,0XE0,0X00,0X00,0X00,0X01,0XFE,0X00,0X00,0X3F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0X03,0XFF,0X00,0X00,0X00, +0X00,0X7F,0XE0,0X00,0X01,0XFF,0X80,0X00,0X7F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00, +0X7F,0XF0,0X00,0X00,0X3F,0XF0,0X00,0XFF,0XC0,0X01,0XFF,0XFF,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X70,0X1F,0XFC,0X03,0X80,0X00,0X00,0X00,0XFF,0X80, +0X00,0X00,0X7F,0X80,0X00,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XF8,0X00, +0X00,0X00,0X00,0X00,0X3F,0XE0,0X00,0X00,0X00,0X01,0XFF,0X00,0X00,0X3F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X1F,0XF8,0X00,0X03,0XFF,0X00,0X00,0X00, +0X00,0X7F,0XF0,0X00,0X03,0XFF,0X80,0X00,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00, +0X7F,0XE0,0X00,0X00,0X3F,0XF0,0X00,0XFF,0XC0,0X01,0XFF,0XFF,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0X01,0XC0,0X03,0XC0,0X00,0X00,0X01,0XFF,0X00, +0X00,0X00,0X7F,0X80,0X00,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XF0,0X00, +0X00,0X00,0X00,0X00,0X3F,0XE0,0X00,0X00,0X00,0X01,0XFF,0X00,0X00,0X3F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X1F,0XF8,0X00,0X07,0XFF,0X00,0X00,0X00, +0X00,0X3F,0XF0,0X00,0X03,0XFF,0X80,0X01,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00, +0X7F,0XE0,0X00,0X00,0X3F,0XF8,0X00,0XFF,0XC0,0X01,0XFF,0XFE,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X01,0XE0,0X00,0X00,0X01,0XC0,0X00,0X00,0X03,0XFE,0X00, +0X00,0X00,0X7F,0XC0,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XE0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XC0,0X00,0X00,0X00,0X00,0XFF,0X80,0X00,0X7F,0XC0,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X1F,0XFC,0X00,0X0F,0XFE,0X00,0X00,0X00, +0X00,0X3F,0XF8,0X00,0X07,0XFF,0X00,0X03,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00, +0XFF,0XE0,0X00,0X00,0X1F,0XF8,0X00,0XFF,0XC0,0X00,0XFF,0XFE,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0X00,0X00,0X00,0X80,0X00,0X00,0X07,0XFC,0X00, +0X00,0X00,0X7F,0XE0,0X01,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XC0,0X00, +0X00,0X00,0X00,0X00,0XFF,0XC0,0X00,0X00,0X00,0X00,0XFF,0XC0,0X00,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X0F,0XFE,0X00,0X1F,0XFE,0X00,0X0F,0XFC, +0X00,0X3F,0XFC,0X00,0X0F,0XFF,0X00,0X07,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00, +0XFF,0XC0,0X00,0X00,0X1F,0XF8,0X00,0XFF,0XC0,0X00,0XFF,0XFC,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,0X01,0XC0,0X00,0X00,0X00,0X0F,0XF8,0X00, +0X00,0X00,0X3F,0XF0,0X03,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0X80,0X00, +0X00,0X00,0X40,0X01,0XFF,0X80,0X00,0X00,0X00,0X00,0X7F,0XE0,0X01,0XFF,0X80,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X0F,0XFF,0X00,0X3F,0XFC,0X00,0X0F,0XFC, +0X00,0X1F,0XFF,0X00,0X3F,0XFE,0X00,0X0F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0XFF,0XC0,0X00,0X00,0X1F,0XFC,0X00,0XFF,0XC0,0X00,0X7F,0XFC,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XE0,0X03,0XE0,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X3F,0XFC,0X0F,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFF, +0XF8,0X00,0X78,0X07,0XFF,0X80,0X00,0X00,0X00,0X00,0X3F,0XF8,0X0F,0XFF,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X07,0XFF,0XE0,0XFF,0XFC,0X00,0X0F,0XFC, +0X00,0X1F,0XFF,0XC0,0XFF,0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X01, +0XFF,0XC0,0X00,0X00,0X0F,0XFC,0X00,0XFF,0XC0,0X00,0X7F,0XFC,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC0,0XC1,0XE0,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X1F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF, +0XFC,0X00,0X7F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFE,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XF8,0X00,0X0F,0XFC, +0X00,0X0F,0XFF,0XFF,0XFF,0XFC,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X01, +0XFF,0X80,0X00,0X00,0X0F,0XFC,0X00,0XFF,0XC0,0X00,0X7F,0XF8,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC0,0XC1,0XE0,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X0F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFC,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X0F,0XFC, +0X00,0X07,0XFF,0XFF,0XFF,0XF8,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X01, +0XFF,0X80,0X00,0X00,0X0F,0XFE,0X00,0XFF,0XC0,0X00,0X3F,0XF8,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC0,0XC0,0XF0,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X07,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0XF8,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XE0,0X00,0X0F,0XFC, +0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X03, +0XFF,0X80,0X00,0X00,0X07,0XFE,0X00,0XFF,0XC0,0X00,0X3F,0XF8,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X80,0XC0,0XF0,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X03,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XF0,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XC0,0X00,0X0F,0XFC, +0X00,0X01,0XFF,0XFF,0XFF,0XE0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X03, +0XFF,0X00,0X00,0X00,0X07,0XFF,0X00,0XFF,0XC0,0X00,0X3F,0XF0,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X80,0X00,0X78,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF, +0XFC,0X00,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XC0,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X00,0X3F,0XFF,0XFF,0X80,0X00,0X0F,0XFC, +0X00,0X00,0X7F,0XFF,0XFF,0XC0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X03, +0XFF,0X00,0X00,0X00,0X07,0XFF,0X00,0XFF,0XC0,0X00,0X1F,0XF0,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X78,0X00,0X00,0X00,0X1F,0XFF,0XFF, +0XFF,0XC0,0X00,0X3F,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF, +0XFC,0X00,0X1F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X00,0X1F,0XFF,0XFE,0X00,0X00,0X0F,0XFC, +0X00,0X00,0X3F,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X07, +0XFF,0X00,0X00,0X00,0X03,0XFF,0X00,0XFF,0XC0,0X00,0X1F,0XE0,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X0F,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,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X00,0X07,0XFF,0XF8,0X00,0X00,0X0F,0XFC, +0X00,0X00,0X07,0XFF,0XFC,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X07, +0XFE,0X00,0X00,0X00,0X03,0XFF,0X80,0XFF,0XC0,0X00,0X0F,0XE0,0X00,0X0F,0XFC,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X06,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, +0X00,0X00,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,0XC0,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,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,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,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, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,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,0X1F, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,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,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X0F, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,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,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X07, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,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,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFE,0X00,0X00,0X7F,0XFF,0XFF,0XF8,0X03,0XFF,0XFF,0XE0,0X0F,0XE0,0X07, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFE,0X00,0X00,0X7F,0XFF,0XFF,0XE0,0X00,0XFF,0XFF,0XC0,0X07,0XE0,0X07, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFE,0X00,0X00,0X7F,0XFF,0XFF,0XC0,0X00,0X7F,0XFF,0X80,0X07,0XF0,0X07, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFE,0X01, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X1F, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFE,0X00,0X00,0X7F,0XFF,0XFF,0X80,0X00,0X3F,0XFF,0X80,0X07,0XF0,0X0F, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0XF0,0X00,0XFF,0XF8,0X00, +0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X03,0XFF,0XC0,0X00,0X07,0XFF,0X80,0X03, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0X7F,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0X00,0X07,0XF8,0X1F, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0XE0,0X00,0X3F,0XE0,0X00, +0X3F,0XFF,0XCF,0XFF,0XFF,0X7F,0XFF,0X00,0X01,0XFF,0XC0,0X00,0X07,0XFF,0X00,0X01, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0X7F,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0X00,0X07,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0X80,0X00,0X1F,0XC0,0X00, +0X1F,0XFF,0X87,0XFF,0XFE,0X3F,0XFC,0X00,0X00,0XFF,0XC0,0X00,0X07,0XFE,0X00,0X00, +0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0X7F,0XFF,0XFE,0X01,0XF0,0X1F,0XFE,0X00,0X07,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0X80,0X00,0X1F,0XC0,0X00, +0X0F,0XFF,0X03,0XFF,0XFC,0X1F,0XF8,0X00,0X00,0X7F,0XC0,0X00,0X07,0XFC,0X00,0X00, +0X7F,0XFF,0XFF,0XFF,0XFF,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFE,0X01,0XF0,0X0F,0XFC,0X00,0X07,0XFF,0XFF, +0XFF,0XFF,0X3F,0XFF,0XFF,0X8F,0XFC,0X03,0XF3,0XFF,0XFF,0XFF,0XFC,0XFF,0XFF,0XFF, +0XFF,0X00,0XFC,0X00,0XFF,0XFC,0X7F,0XFF,0XFF,0XF3,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF, +0XE7,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0X00,0X00,0X1F,0X80,0X00, +0X0F,0XFE,0X01,0XFF,0XF8,0X0F,0XF8,0X00,0X00,0X3F,0XC0,0X00,0X07,0XF8,0X00,0X00, +0XFF,0XFF,0XFF,0XFF,0XFE,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFE,0X03,0XF8,0X0F,0XFC,0X00,0X07,0XF0,0X0F, +0XC0,0X78,0X07,0XFF,0XF8,0X01,0XFC,0X03,0X80,0X7F,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF, +0XFF,0X00,0XFE,0X00,0XFF,0X80,0X07,0XFE,0X03,0X80,0X3F,0XFF,0X80,0X0F,0XFC,0X07, +0X01,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0X7E,0X00,0X00,0X3F,0X80,0X78, +0X07,0XFF,0X00,0XFF,0XF0,0X0F,0XFC,0X00,0X00,0X3F,0XC0,0X00,0X07,0XF8,0X00,0X01, +0XFF,0XFF,0XFF,0XFF,0XFE,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFE,0X03,0XF8,0X0F,0XF8,0X00,0X07,0XF0,0X0F, +0XC0,0X60,0X01,0XFF,0XE0,0X00,0X7C,0X02,0X00,0X1F,0XFF,0XFF,0X80,0X03,0XFF,0XFF, +0XFF,0X00,0XFF,0X00,0XFE,0X00,0X03,0XFE,0X03,0X00,0X1F,0XFF,0X00,0X07,0XFC,0X06, +0X01,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XE0,0X00,0X00,0XFE,0X00,0XF8,0X7F,0X80,0XFC, +0X07,0XFF,0X80,0X7F,0XE0,0X1F,0XFE,0X0F,0X80,0X3F,0XC0,0X00,0X07,0XF0,0X07,0XC3, +0XFF,0XFF,0X00,0X03,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFE,0X01,0XF8,0X1F,0XF8,0X08,0X07,0XF0,0X0F, +0XC0,0X40,0X01,0XFF,0XC0,0X00,0X3C,0X00,0X00,0X1F,0XFF,0XFE,0X00,0X01,0XFF,0XFF, +0XFF,0X00,0XFF,0X00,0XF8,0X00,0X01,0XFE,0X00,0X00,0X0F,0XFE,0X00,0X03,0XFC,0X04, +0X01,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0X01,0XFC,0X01,0XFE,0XFF,0X80,0XFC, +0X07,0XFF,0XC0,0X3F,0XC0,0X3F,0XFF,0X1F,0XC0,0X3F,0XC0,0X7F,0XFF,0XF0,0X0F,0XF7, +0XFF,0XFF,0X00,0X00,0XFE,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X07,0XFF,0XFF,0XFF,0XFE,0X00,0XF0,0X1F,0XF0,0X08,0X07,0XF0,0X0F, +0XC0,0X00,0X00,0XFF,0X00,0X00,0X7C,0X00,0X00,0X0F,0XFF,0XFC,0X00,0X00,0XFF,0XFF, +0XFF,0X00,0XFF,0X00,0XF8,0X00,0X00,0XFE,0X00,0X00,0X07,0XFC,0X00,0X01,0XFC,0X00, +0X01,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFE,0X03,0XFC,0X03,0XFF,0XFF,0X80,0XFC, +0X07,0XFF,0XE0,0X1F,0X80,0X7F,0XFF,0XFF,0XC0,0X1F,0XC0,0X7F,0XFF,0XE0,0X1F,0XFF, +0XFF,0XFF,0X00,0X00,0X3F,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X07,0XFF,0XFF,0XFF,0X00,0X70,0X1F,0XF0,0X18,0X07,0XF0,0X0F, +0XC0,0X00,0X00,0XFF,0X00,0X00,0XFC,0X00,0X00,0X0F,0XFF,0XF8,0X00,0X00,0XFF,0XFF, +0XFF,0X00,0XFF,0X00,0XF8,0X00,0X00,0X7E,0X00,0X00,0X03,0XF8,0X00,0X00,0XFC,0X00, +0X03,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFC,0X03,0XFC,0X03,0XFF,0XFF,0X80,0XFC, +0X07,0XFF,0XF0,0X0F,0X00,0XFF,0XFF,0XFF,0XE0,0X1F,0XC0,0X7F,0XFF,0XE0,0X1F,0XFF, +0XFF,0XFF,0X00,0X00,0X3F,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X01,0XFF,0XFF,0XFF,0X00,0X00,0X3F,0XE0,0X18,0X07,0XF0,0X0F, +0XC0,0X00,0X00,0X7E,0X00,0X00,0XFC,0X00,0X00,0X07,0XFF,0XF8,0X00,0X00,0X7F,0XFF, +0XFF,0X00,0XFF,0X00,0XFC,0X00,0X00,0X7E,0X00,0X00,0X03,0XF0,0X00,0X00,0XFC,0X00, +0X03,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFC,0X07,0XF8,0X07,0XFF,0XFF,0X80,0X7C, +0X07,0XFF,0XF8,0X06,0X01,0XFF,0XFF,0XFF,0XE0,0X1F,0XC0,0X7F,0XFF,0XE0,0X3F,0XFF, +0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0XFF,0XFF,0XFF,0X80,0X00,0X7F,0XC0,0X38,0X07,0XF0,0X0F, +0XC0,0X00,0X00,0X7C,0X00,0X71,0XFC,0X00,0X00,0X07,0XFF,0XF0,0X07,0X80,0X7F,0XFF, +0XFF,0X00,0XFE,0X00,0XFC,0X0F,0X00,0X7E,0X00,0X30,0X01,0XF0,0X0F,0X80,0X7C,0X00, +0X03,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF8,0X07,0XF8,0X07,0XDF,0XFF,0X80,0X38, +0X0F,0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XFF,0XC0,0X3F,0XC0,0X00,0XFF,0XE0,0X3E,0X7F, +0XFF,0XFF,0X01,0XE0,0X1F,0XFF,0XFF,0XFF,0XFF,0XFE,0X7F,0XF8,0X1F,0XFE,0X7F,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0X7F,0XFF,0XFF,0XC0,0X00,0XFF,0XC0,0X78,0X07,0XF0,0X0F, +0XC0,0X0F,0X00,0X7C,0X00,0XFF,0XFC,0X00,0XF0,0X07,0XFF,0XF0,0X0F,0XC0,0X7F,0XFF, +0XFF,0X00,0XFC,0X00,0XFE,0X7F,0X80,0X7E,0X00,0XFC,0X01,0XE0,0X1F,0XC0,0X7C,0X00, +0X7F,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF8,0X0F,0XF8,0X06,0X01,0XFF,0XC0,0X08, +0X0F,0XFF,0XFE,0X00,0X07,0XFF,0XFF,0XFF,0XC0,0X3F,0XC0,0X00,0X3F,0XC0,0X30,0X07, +0XFF,0XFF,0X03,0XF8,0X0E,0X03,0X80,0XFC,0X07,0XF0,0X07,0XF8,0X1F,0XE0,0X0F,0XFF, +0XFF,0XFF,0XFC,0X00,0X00,0X3F,0XFF,0XFF,0XE0,0X00,0XFF,0X80,0X78,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7C,0X01,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XF0,0X1F,0XE0,0X3F,0XFF, +0XFF,0X00,0X00,0X01,0XFF,0XFF,0X80,0X3E,0X01,0XFC,0X01,0XE0,0X1F,0XC0,0X7C,0X00, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X0F,0XF8,0X00,0X00,0X7F,0XC0,0X00, +0X1F,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XC0,0X3F,0XC0,0X00,0X1F,0XC0,0X00,0X03, +0XFF,0XFF,0X03,0XF8,0X0E,0X03,0XC0,0X78,0X0F,0XC0,0X03,0XF8,0X1F,0X80,0X03,0XFF, +0XFF,0XFF,0XFE,0X00,0X00,0X3F,0XFF,0XFF,0XC0,0X00,0X3F,0X80,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X1F,0XE0,0X3F,0XFF, +0XFF,0X00,0X00,0X01,0XFF,0XF8,0X00,0X3E,0X01,0XFE,0X01,0XE0,0X1F,0XC0,0X7C,0X01, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X1F,0XF8,0X00,0X00,0X3F,0XE0,0X00, +0X3F,0XFF,0XFF,0X80,0X1F,0XFF,0XFF,0XFF,0X80,0X3F,0X80,0X00,0X0F,0XC0,0X00,0X01, +0XFF,0XFF,0X03,0XF8,0X0E,0X03,0XC0,0X38,0X0F,0X80,0X01,0XF8,0X1F,0X80,0X01,0XFF, +0XFF,0XFF,0XFF,0X1F,0X80,0X3F,0XFF,0XFF,0X80,0X00,0X1F,0X00,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X00,0X00,0X38,0X00, +0X3F,0X00,0X00,0X03,0XFF,0XC0,0X00,0X3E,0X01,0XFE,0X01,0XE0,0X00,0X00,0X7C,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XE0,0X1F,0XF8,0X00,0X00,0X1F,0XF0,0X00, +0X3F,0XFF,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0X80,0X00,0X07,0XC0,0X00,0X00, +0XFF,0XFF,0X03,0XF8,0X0E,0X03,0XE0,0X30,0X1F,0X80,0X00,0XF8,0X1F,0X00,0X03,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0XFF,0XFF,0X01,0X00,0X1E,0X00,0X00,0X00,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X00,0X00,0X38,0X00, +0X3F,0X00,0X00,0X07,0XFF,0X00,0X00,0X3E,0X01,0XFE,0X01,0XC0,0X00,0X00,0X7C,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XE0,0X1F,0XF8,0X00,0X00,0X1F,0XF0,0X00, +0X1F,0XFF,0XFF,0X80,0X1F,0XFF,0XFF,0XFF,0X00,0X7F,0XC0,0X00,0X07,0XC0,0X00,0X00, +0XFF,0XFF,0X03,0XF8,0X0E,0X03,0XE0,0X10,0X3F,0X00,0X00,0XF8,0X1F,0X00,0X07,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0XFF,0XFE,0X03,0XC0,0X0E,0X00,0X00,0X00,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X00,0X00,0X38,0X00, +0X3F,0X00,0X00,0X0F,0XFC,0X00,0X00,0X3E,0X01,0XFE,0X01,0XC0,0X00,0X00,0X7C,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XE0,0X3F,0XF8,0X00,0XC0,0X0F,0XC0,0X00, +0X0F,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFE,0X00,0XFF,0XF1,0XF0,0X03,0XC0,0X02,0X00, +0X7F,0XFF,0X03,0XF0,0X0E,0X03,0XF0,0X10,0X3E,0X03,0XC0,0X78,0X1F,0X03,0XC7,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0XFF,0XFE,0X03,0XF0,0X0E,0X00,0X00,0X00,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X00,0X00,0X38,0X00, +0X3F,0X00,0X00,0X3F,0XF8,0X00,0X00,0X3E,0X01,0XFE,0X01,0XC0,0X00,0X00,0X7C,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XC0,0X3F,0XF8,0X03,0XE0,0X0F,0X80,0X00, +0X07,0XFF,0XFE,0X00,0X07,0XFF,0XFF,0XFC,0X01,0XFF,0XFF,0XF8,0X03,0XC0,0X1F,0X80, +0X7F,0XFF,0X00,0X00,0X1E,0X03,0XF8,0X00,0X7E,0X03,0XE0,0X78,0X1F,0X03,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XE0,0X1F,0XFF,0XFC,0X07,0XF8,0X06,0X00,0X00,0X00,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X00,0X00,0X38,0X00, +0X3F,0X00,0X07,0XFF,0XF8,0X01,0XC0,0X3E,0X01,0XFE,0X01,0XC0,0X00,0X00,0X7C,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XC0,0X3F,0XF8,0X07,0XF0,0X0F,0X80,0XE0, +0X07,0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XFC,0X03,0XC0,0X3F,0X80, +0X7F,0XFF,0X00,0X00,0X1E,0X03,0XF8,0X00,0X7E,0X07,0XE0,0X78,0X1F,0X00,0X7F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0XFF,0XFC,0X07,0XF8,0X06,0X00,0X00,0X00,0XF0,0X0F, +0XC0,0X3F,0X80,0X78,0X03,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X1F,0XFF,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X07,0XC0,0X3E,0X01,0XFC,0X01,0XE0,0X1F,0XFF,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XC0,0X3F,0XF8,0X07,0XF0,0X0F,0X01,0XF8, +0X03,0XFF,0XF8,0X06,0X01,0XFF,0XFF,0XF0,0X03,0XFF,0XFF,0XFC,0X03,0XC0,0X3F,0XC0, +0X7F,0XFF,0X00,0X00,0X3E,0X03,0XFC,0X00,0XFE,0X00,0X00,0X78,0X1F,0X00,0X1F,0XFF, +0XFF,0XFF,0XFE,0XFF,0XC0,0X1F,0XC1,0XFC,0X07,0XF8,0X06,0X00,0X00,0X00,0XF0,0X0F, +0XC0,0X3F,0X80,0X7C,0X01,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XE0,0X0F,0XFF,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X0F,0XC0,0X3E,0X01,0XFC,0X01,0XE0,0X1F,0XFF,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XF8,0X07,0XF8,0X0F,0X01,0XFC, +0X03,0XFF,0XF0,0X0F,0X00,0XFF,0XFF,0XE0,0X07,0XFF,0XFF,0XFC,0X03,0XE0,0X3F,0XC0, +0X7F,0XFF,0X00,0X00,0X7E,0X03,0XFC,0X00,0XFE,0X00,0X00,0X78,0X1F,0X80,0X07,0XFF, +0XFF,0XFF,0XFC,0X7F,0XC0,0X3F,0X80,0XFC,0X07,0XF8,0X07,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7C,0X01,0XFF,0XFC,0X03,0XF8,0X07,0XFF,0XF0,0X0F,0XFF,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X0F,0X80,0X3E,0X01,0XFC,0X01,0XE0,0X0F,0XFF,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XF8,0X07,0XF0,0X0F,0X01,0XFC, +0X03,0XFF,0XE0,0X1F,0X80,0X7F,0XFF,0XC0,0X0F,0XFF,0XFF,0XFC,0X03,0XE0,0X3F,0XC0, +0X7F,0XFF,0X00,0X01,0XFE,0X03,0XFC,0X01,0XFE,0X00,0X00,0X78,0X1F,0XC0,0X03,0XFF, +0XFF,0XFF,0XF8,0X1F,0X00,0X3F,0X00,0X7C,0X03,0XF8,0X07,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7C,0X00,0XF8,0XFC,0X03,0XF8,0X07,0XFF,0XF0,0X07,0XF9,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X0F,0X00,0X3E,0X00,0X78,0X03,0XE0,0X07,0XF3,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XFC,0X07,0XF0,0X0E,0X01,0XFE, +0X03,0XFF,0XC0,0X3F,0XC0,0X3F,0XFF,0X80,0X0F,0XFF,0XDF,0XFC,0X03,0XE0,0X1F,0XC0, +0X7F,0XFF,0X00,0X07,0XFE,0X03,0XFC,0X00,0XFE,0X00,0X00,0X78,0X1F,0XE0,0X01,0XFF, +0XFF,0XFF,0XF0,0X00,0X00,0X3F,0X00,0X7C,0X01,0XF0,0X07,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7E,0X00,0X00,0XFC,0X03,0XF8,0X07,0XFF,0XF8,0X00,0X01,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X00,0X00,0X3E,0X00,0X00,0X03,0XF0,0X00,0X01,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XFC,0X03,0XF0,0X0E,0X01,0XFE, +0X03,0XFF,0X80,0X7F,0XE0,0X1F,0XFF,0X00,0X1F,0XFF,0XCF,0XF8,0X03,0XE0,0X1F,0X80, +0X7F,0XFF,0X03,0XFF,0XFE,0X03,0XF8,0X00,0XFE,0X03,0XFF,0XF8,0X1F,0XFC,0X01,0XFF, +0XFF,0XFF,0XF0,0X00,0X00,0X7F,0X00,0X7E,0X00,0X00,0X0F,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7E,0X00,0X00,0X7C,0X03,0XF8,0X07,0XFF,0XF8,0X00,0X00,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X00,0X00,0X3E,0X00,0X00,0X07,0XF0,0X00,0X01,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XFC,0X01,0XF0,0X0F,0X01,0XFC, +0X03,0XFF,0X00,0XFF,0XF0,0X0F,0XFE,0X00,0X30,0X0F,0X83,0XF0,0X03,0XF0,0X0F,0X80, +0X7F,0XFF,0X03,0XFF,0XFE,0X03,0XF8,0X00,0X7E,0X03,0XFF,0XF8,0X1F,0XFF,0X01,0XFF, +0XFF,0XFF,0XF0,0X00,0X00,0XFF,0X00,0X7E,0X00,0X00,0X1F,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7F,0X00,0X00,0X7C,0X03,0XF8,0X07,0XFF,0XFC,0X00,0X00,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XF0,0X00,0X00,0X3E,0X00,0X00,0X07,0XF8,0X00,0X00,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XFE,0X00,0XC0,0X1F,0X00,0XF8, +0X03,0XFE,0X01,0XFF,0XF8,0X0F,0XFC,0X00,0X00,0X0F,0X00,0X00,0X07,0XF0,0X07,0X00, +0X7F,0XFF,0X03,0XFF,0XFE,0X03,0XF0,0X20,0X3E,0X03,0XFF,0XF8,0X1F,0X9F,0X81,0XFF, +0XFF,0XFF,0XF8,0X00,0X00,0XFF,0X00,0X7F,0X00,0X00,0X1F,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7F,0X80,0X00,0X3C,0X03,0XF8,0X07,0XFF,0XFE,0X00,0X00,0X7F,0XFF, +0XFF,0X00,0XFF,0XFF,0XF8,0X00,0X00,0X3E,0X00,0X00,0X0F,0XFC,0X00,0X00,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0X7F,0XFE,0X00,0X00,0X1F,0X00,0X00, +0X03,0XFF,0X03,0XFF,0XFC,0X0F,0XF8,0X00,0X00,0X0E,0X00,0X00,0X07,0XF8,0X00,0X00, +0XFF,0XFF,0X03,0XFF,0XFE,0X03,0XE0,0X20,0X3F,0X00,0XE1,0XF8,0X07,0X07,0X01,0XFF, +0XFF,0XFF,0XFC,0X00,0X03,0XFF,0X00,0X7F,0X80,0X00,0X3F,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7F,0XC0,0X00,0X7C,0X03,0XF8,0X07,0XFF,0XFF,0X00,0X00,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XFC,0X00,0X20,0X3E,0X00,0X00,0X1F,0XFE,0X00,0X00,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0X00,0X00,0X3F,0X80,0X00, +0X07,0XFF,0X87,0XFF,0XFE,0X1F,0XF8,0X00,0X00,0X0E,0X00,0X00,0X0F,0XF8,0X00,0X00, +0XFF,0XFF,0X03,0XFF,0XFE,0X03,0XE0,0X70,0X1F,0X00,0X01,0XF8,0X06,0X00,0X01,0XFF, +0XFF,0XFF,0XFF,0X00,0X07,0XFF,0X80,0XFF,0XE0,0X00,0XFF,0XFF,0XF8,0X07,0XF0,0X0F, +0XC0,0X3F,0X80,0X7F,0XE0,0X00,0XFC,0X03,0XF8,0X07,0XFF,0XFF,0X80,0X03,0XFF,0XFF, +0XFF,0X00,0XFF,0XFF,0XFE,0X00,0XE0,0X3E,0X01,0X00,0X3F,0XFF,0X80,0X03,0XFC,0X03, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0X80,0X00,0X3F,0X80,0X00, +0X0F,0XFF,0XCF,0XFF,0XFF,0X3F,0XF8,0X00,0X00,0X0F,0X00,0X00,0X1F,0XFC,0X00,0X01, +0XFF,0XFF,0X03,0XFF,0XFE,0X03,0XC0,0X70,0X1F,0X80,0X00,0XF8,0X02,0X00,0X03,0XFF, +0XFF,0XFF,0XFF,0XE0,0X3F,0XFF,0XC1,0XFF,0XF8,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFC,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X0F,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0X83,0XFF,0XFE,0X01,0XC0,0XFF,0XFF,0XE0,0X1F,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0XC0,0X00,0X7F,0XC0,0X00, +0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0X80,0X00,0X3F,0XFE,0X00,0X03, +0XFF,0XFF,0X03,0XFF,0XFE,0X03,0XC0,0X78,0X0F,0XC0,0X00,0XFC,0X02,0X00,0X03,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0XE0,0X01,0XFF,0XF0,0X00, +0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0XE0,0X00,0X7F,0XFF,0X80,0X0F, +0XFF,0XFF,0X03,0XFF,0XFE,0X03,0X80,0XF8,0X07,0XE0,0X01,0XFC,0X03,0X80,0X0F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X07,0XFF,0XFC,0X01, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0XFF,0XE0,0X3F, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X07,0XFF,0X03,0XE0,0X3F,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +}; + + const unsigned char gImage_7in5[] = { /* 0X00,0X01,0X80,0X02,0X80,0X01, */ 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,0XFF,0XFF,0XFF, diff --git a/RaspberryPi_JetsonNano/c/examples/ImageData.h b/RaspberryPi_JetsonNano/c/examples/ImageData.h index db33909..3b31f5f 100644 --- a/RaspberryPi_JetsonNano/c/examples/ImageData.h +++ b/RaspberryPi_JetsonNano/c/examples/ImageData.h @@ -70,6 +70,8 @@ extern const unsigned char gImage_5in83bc_ry[]; extern const unsigned char gImage_5in83b_V2_b[]; extern const unsigned char gImage_5in83b_V2_r[]; +extern const unsigned char gImage_5in84[]; + extern const unsigned char gImage_7in5[]; extern const unsigned char gImage_7in5_V2[]; extern const unsigned char gImage_7in5bc_b[]; diff --git a/RaspberryPi_JetsonNano/c/examples/main.c b/RaspberryPi_JetsonNano/c/examples/main.c index fdae73b..b66678c 100644 --- a/RaspberryPi_JetsonNano/c/examples/main.c +++ b/RaspberryPi_JetsonNano/c/examples/main.c @@ -11,7 +11,6 @@ void Handler(int signo) exit(0); } - int main(void) { // Exception handling:ctrl + c @@ -20,11 +19,19 @@ int main(void) // if(DEV_Module_Init()!=0){ // return -1; // } + + // while(1) { + // DEV_Delay_ms(10000); + // } + + // EPD_1in54_DES_test(); + // EPD_2in13_DES_test(); + // EPD_2in9_DES_test(); // EPD_1in02d_test(); // EPD_1in54_test(); - // EPD_1in54_V2_test(); + // EPD_1in54_V2_test(); // EPD_1in54b_test(); // EPD_1in54b_V2_test(); // EPD_1in54c_test(); @@ -34,11 +41,11 @@ int main(void) // EPD_2in7_test(); // EPD_2in7b_test(); + // EPD_2in7b_V2_test(); // EPD_2in9_test(); // EPD_2in9_V2_test(); - // EPD_2in9bc_test(); // EPD_2in9b_V3_test(); // EPD_2in9d_test(); @@ -58,6 +65,8 @@ int main(void) // EPD_4in2bc_test(); // EPD_4in2b_V2_test(); + // EPD_4in37b_test(); + // EPD_5in65f_test(); // EPD_5in83_test(); @@ -76,6 +85,10 @@ int main(void) // EPD_7in5_HD_test(); // EPD_7in5b_HD_test(); + // EPD_10in2b_test(); + + // EPD_13in3_test(); + // DEV_Module_Exit(); return 0; diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_10in2b.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_10in2b.c new file mode 100644 index 0000000..61cddbd --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_10in2b.c @@ -0,0 +1,241 @@ +/***************************************************************************** +* | File : EPD_10in2b.c +* | Author : Waveshare team +* | Function : 10.2inch b e-paper test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-01-20 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_10in2b.h" +#include "Debug.h" + +/****************************************************************************** +function : Software reset +parameter: +******************************************************************************/ +static void EPD_10IN2b_Reset(void) +{ + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(100); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(100); +} + +/****************************************************************************** +function : send command +parameter: + Reg : Command register +******************************************************************************/ +static void EPD_10IN2b_SendCommand(UBYTE Reg) +{ + DEV_Digital_Write(EPD_DC_PIN, 0); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Reg); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : send data +parameter: + Data : Write data +******************************************************************************/ +static void EPD_10IN2b_SendData(UBYTE Data) +{ + DEV_Digital_Write(EPD_DC_PIN, 1); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Data); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : Wait until the busy_pin goes LOW +parameter: +******************************************************************************/ +void EPD_10IN2b_ReadBusy(void) +{ + Debug("e-Paper busy\r\n"); + while(1) + { //=1 BUSY + if(DEV_Digital_Read(EPD_BUSY_PIN)==0) + break; + DEV_Delay_ms(20); + } + DEV_Delay_ms(20); + Debug("e-Paper busy release\r\n"); +} + +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ +static void EPD_10IN2b_TurnOnDisplay(void) +{ + EPD_10IN2b_SendCommand(0x22); //Display Update Control + EPD_10IN2b_SendData(0xC7); + EPD_10IN2b_SendCommand(0x20); //Activate Display Update Sequence + EPD_10IN2b_ReadBusy(); +} + +/****************************************************************************** +function : Setting the display window +parameter: +******************************************************************************/ +static void EPD_10IN2b_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend) +{ + EPD_10IN2b_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION + EPD_10IN2b_SendData(Xstart & 0xFF); + EPD_10IN2b_SendData((Xstart>>8) & 0x03); + EPD_10IN2b_SendData(Xend & 0xFF); + EPD_10IN2b_SendData((Xend>>8) & 0x03); + + EPD_10IN2b_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION + EPD_10IN2b_SendData(Ystart & 0xFF); + EPD_10IN2b_SendData((Ystart>>8) & 0x03); + EPD_10IN2b_SendData(Yend & 0xFF); + EPD_10IN2b_SendData((Yend>>8) & 0x03); +} + +/****************************************************************************** +function : Set Cursor +parameter: +******************************************************************************/ +static void EPD_10IN2b_SetCursor(UWORD Xstart, UWORD Ystart) +{ + EPD_10IN2b_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + EPD_10IN2b_SendData(Xstart & 0xFF); + EPD_10IN2b_SendData((Xstart>>8) & 0x03); + + EPD_10IN2b_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + EPD_10IN2b_SendData(Ystart & 0xFF); + EPD_10IN2b_SendData((Ystart>>8) & 0x03); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_10IN2b_Init(void) +{ + EPD_10IN2b_Reset(); + DEV_Delay_ms(100); + + EPD_10IN2b_ReadBusy(); + EPD_10IN2b_SendCommand(0x12); //SWRESET + EPD_10IN2b_ReadBusy(); + + EPD_10IN2b_SendCommand(0x0C); //set soft start + EPD_10IN2b_SendData(0xAE); + EPD_10IN2b_SendData(0xC7); + EPD_10IN2b_SendData(0xC3); + EPD_10IN2b_SendData(0xC0); + EPD_10IN2b_SendData(0x80); + + EPD_10IN2b_SendCommand(0x01); // drive output control + EPD_10IN2b_SendData(0xA7); // Y + EPD_10IN2b_SendData(0x02); // Y + EPD_10IN2b_SendData(0x00); + + EPD_10IN2b_SendCommand(0x11); // data entry mode + EPD_10IN2b_SendData(0x03); // X-mode x+ y- + + EPD_10IN2b_SetWindows(0, 0, EPD_10IN2b_WIDTH-1, EPD_10IN2b_HEIGHT-1); + + EPD_10IN2b_SendCommand(0x3C); // Border Border setting + EPD_10IN2b_SendData(0x01); + + EPD_10IN2b_SendCommand(0x18); // use the internal temperature sensor + EPD_10IN2b_SendData(0x80); + + EPD_10IN2b_SendCommand(0x22); + EPD_10IN2b_SendData(0xB1); + EPD_10IN2b_SendCommand(0x20); + + EPD_10IN2b_SetCursor(0, 0); + + EPD_10IN2b_ReadBusy(); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_10IN2b_Clear(void) +{ + UWORD i, j; + UWORD height = EPD_10IN2b_HEIGHT; + UWORD width = EPD_10IN2b_WIDTH/8; + + EPD_10IN2b_SendCommand(0x24); //write RAM for black(0)/white (1) + for(i=0; i>8) & 0x03); + EPD_13IN3_SendData(Xend & 0xFF); + EPD_13IN3_SendData((Xend>>8) & 0x03); + + EPD_13IN3_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION + EPD_13IN3_SendData(Ystart & 0xFF); + EPD_13IN3_SendData((Ystart>>8) & 0x03); + EPD_13IN3_SendData(Yend & 0xFF); + EPD_13IN3_SendData((Yend>>8) & 0x03); +} + +/****************************************************************************** +function : Set Cursor +parameter: +******************************************************************************/ +static void EPD_13IN3_SetCursor(UWORD Xstart, UWORD Ystart) +{ + EPD_13IN3_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + EPD_13IN3_SendData(Xstart & 0xFF); + EPD_13IN3_SendData((Xstart>>8) & 0x03); + + EPD_13IN3_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + EPD_13IN3_SendData(Ystart & 0xFF); + EPD_13IN3_SendData((Ystart>>8) & 0x03); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_13IN3_Init(void) +{ + EPD_13IN3_Reset(); + DEV_Delay_ms(100); + + EPD_13IN3_ReadBusy(); + EPD_13IN3_SendCommand(0x12); //SWRESET + EPD_13IN3_ReadBusy(); + + EPD_13IN3_SendCommand(0x0C); //set soft start + EPD_13IN3_SendData(0xAE); + EPD_13IN3_SendData(0xC7); + EPD_13IN3_SendData(0xC3); + EPD_13IN3_SendData(0xC0); + EPD_13IN3_SendData(0x80); + + EPD_13IN3_SendCommand(0x01); // drive output control + EPD_13IN3_SendData(0xA7); // Y + EPD_13IN3_SendData(0x02); // Y + EPD_13IN3_SendData(0x00); + + EPD_13IN3_SendCommand(0x11); // data entry mode + EPD_13IN3_SendData(0x03); // X-mode x+ y- + + EPD_13IN3_SetWindows(0, 0, EPD_13IN3_WIDTH-1, EPD_13IN3_HEIGHT-1); + + EPD_13IN3_SendCommand(0x3C); // Border Border setting + EPD_13IN3_SendData(0x01); + + EPD_13IN3_SendCommand(0x18); // use the internal temperature sensor + EPD_13IN3_SendData(0x80); + + EPD_13IN3_SendCommand(0x22); + EPD_13IN3_SendData(0xB1); + EPD_13IN3_SendCommand(0x20); + + EPD_13IN3_SetCursor(0, 0); + + EPD_13IN3_ReadBusy(); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_13IN3_Clear(void) +{ + UWORD i, j; + UWORD height = EPD_13IN3_HEIGHT; + UWORD width = EPD_13IN3_WIDTH/8; + + EPD_13IN3_SendCommand(0x24); //write RAM for black(0)/white (1) + for(i=0; i>3) & 0xFF); EPD_2in13_V3_SendData((Xend>>3) & 0xFF); EPD_2in13_V3_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION - EPD_2in13_V3_SendData(Ystart & 0xFF); - EPD_2in13_V3_SendData((Ystart >> 8) & 0xFF); EPD_2in13_V3_SendData(Yend & 0xFF); EPD_2in13_V3_SendData((Yend >> 8) & 0xFF); + EPD_2in13_V3_SendData(Ystart & 0xFF); + EPD_2in13_V3_SendData((Ystart >> 8) & 0xFF); } /****************************************************************************** @@ -131,6 +133,8 @@ parameter: ******************************************************************************/ static void EPD_2in13_V3_SetCursor(UWORD Xstart, UWORD Ystart) { + Ystart = 295 - Ystart; + EPD_2in13_V3_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER EPD_2in13_V3_SendData(Xstart & 0xFF); @@ -155,13 +159,13 @@ void EPD_2in13_V3_Init(void) EPD_2in13_V3_SendCommand(0x01); //Driver output control EPD_2in13_V3_SendData(0x27); EPD_2in13_V3_SendData(0x01); - EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x01); EPD_2in13_V3_SendCommand(0x11); //data entry mode - EPD_2in13_V3_SendData(0x03); - - EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, EPD_2in13_V3_HEIGHT-1); + EPD_2in13_V3_SendData(0x01); + EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, 296-1); + EPD_2in13_V3_SendCommand(0x3C); //BorderWavefrom EPD_2in13_V3_SendData(0x05); @@ -171,7 +175,7 @@ void EPD_2in13_V3_Init(void) EPD_2in13_V3_SendCommand(0x18); //Read built-in temperature sensor EPD_2in13_V3_SendData(0x80); - + EPD_2in13_V3_SetCursor(0, 0); EPD_2in13_V3_ReadBusy(); } @@ -226,8 +230,8 @@ void EPD_2in13_V3_Display_Base(UBYTE *Image) void EPD_2in13_V3_Display_Partial(UBYTE *Image) { UWORD i; - -//Reset + + //Reset DEV_Digital_Write(EPD_RST_PIN, 0); DEV_Delay_ms(5); DEV_Digital_Write(EPD_RST_PIN, 1); @@ -236,14 +240,14 @@ void EPD_2in13_V3_Display_Partial(UBYTE *Image) EPD_2in13_V3_SendCommand(0x3C); //BorderWavefrom EPD_2in13_V3_SendData(0x80); - EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, EPD_2in13_V3_HEIGHT-1); + EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, 296-1); EPD_2in13_V3_SetCursor(0, 0); EPD_2in13_V3_SendCommand(0x24); //Write Black and White image to RAM for(i=0;i<4736;i++) { EPD_2in13_V3_SendData(Image[i]); - } + } EPD_2in13_V3_TurnOnDisplay_Partial(); } diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in7b_V2.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in7b_V2.c index 5422f8b..f43488a 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in7b_V2.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in7b_V2.c @@ -79,12 +79,48 @@ parameter: static void EPD_2IN7B_V2_ReadBusy(void) { Debug("e-Paper busy\r\n"); - while(DEV_Digital_Read(EPD_BUSY_PIN) == 0) { //0: busy, 1: idle - DEV_Delay_ms(100); + while(DEV_Digital_Read(EPD_BUSY_PIN) == 1) { //1: busy, 0: idle + DEV_Delay_ms(10); } Debug("e-Paper busy release\r\n"); } +static void EPD_2IN7B_V2_TurnOnDisplay(void) +{ + EPD_2IN7B_V2_SendCommand(0x20); + EPD_2IN7B_V2_ReadBusy(); +} + +/****************************************************************************** +function : Setting the display window +parameter: +******************************************************************************/ +static void EPD_2IN7B_V2_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend) +{ + EPD_2IN7B_V2_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION + EPD_2IN7B_V2_SendData((Xstart>>3) & 0xFF); + EPD_2IN7B_V2_SendData((Xend>>3) & 0xFF); + + EPD_2IN7B_V2_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION + EPD_2IN7B_V2_SendData(Ystart & 0xFF); + EPD_2IN7B_V2_SendData((Ystart >> 8) & 0xFF); + EPD_2IN7B_V2_SendData(Yend & 0xFF); + EPD_2IN7B_V2_SendData((Yend >> 8) & 0xFF); +} + +/****************************************************************************** +function : Set Cursor +parameter: +******************************************************************************/ +static void EPD_2IN7B_V2_SetCursor(UWORD Xstart, UWORD Ystart) +{ + EPD_2IN7B_V2_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + EPD_2IN7B_V2_SendData(Xstart & 0xFF); + + EPD_2IN7B_V2_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + EPD_2IN7B_V2_SendData(Ystart & 0xFF); + EPD_2IN7B_V2_SendData((Ystart >> 8) & 0xFF); +} /****************************************************************************** function : Initialize the e-Paper register @@ -95,55 +131,19 @@ void EPD_2IN7B_V2_Init(void) EPD_2IN7B_V2_Reset(); EPD_2IN7B_V2_ReadBusy(); - - EPD_2IN7B_V2_SendCommand(0x4D); - EPD_2IN7B_V2_SendData(0xAA); - - EPD_2IN7B_V2_SendCommand(0x87); - EPD_2IN7B_V2_SendData(0x28); - - EPD_2IN7B_V2_SendCommand(0x84); - EPD_2IN7B_V2_SendData(0x00); - - EPD_2IN7B_V2_SendCommand(0x83); - EPD_2IN7B_V2_SendData(0x05); - - EPD_2IN7B_V2_SendCommand(0xA8); - EPD_2IN7B_V2_SendData(0xDF); - - EPD_2IN7B_V2_SendCommand(0xA9); - EPD_2IN7B_V2_SendData(0x05); - - EPD_2IN7B_V2_SendCommand(0xB1); - EPD_2IN7B_V2_SendData(0xE8); - - EPD_2IN7B_V2_SendCommand(0xAB); - EPD_2IN7B_V2_SendData(0xA1); - - EPD_2IN7B_V2_SendCommand(0xB9); - EPD_2IN7B_V2_SendData(0x10); - - EPD_2IN7B_V2_SendCommand(0x88); - EPD_2IN7B_V2_SendData(0x80); - - EPD_2IN7B_V2_SendCommand(0x90); - EPD_2IN7B_V2_SendData(0x02); - - EPD_2IN7B_V2_SendCommand(0x86); - EPD_2IN7B_V2_SendData(0x15); - - EPD_2IN7B_V2_SendCommand(0x91); - EPD_2IN7B_V2_SendData(0x8D); - - EPD_2IN7B_V2_SendCommand(0x50); - EPD_2IN7B_V2_SendData(0x57); - - EPD_2IN7B_V2_SendCommand(0xAA); - EPD_2IN7B_V2_SendData(0x0F); + EPD_2IN7B_V2_SendCommand(0x12); + EPD_2IN7B_V2_ReadBusy(); EPD_2IN7B_V2_SendCommand(0x00); - EPD_2IN7B_V2_SendData(0x8f); + EPD_2IN7B_V2_SendData(0x27); + EPD_2IN7B_V2_SendData(0x01); + EPD_2IN7B_V2_SendData(0x00); + + EPD_2IN7B_V2_SendCommand(0x11); + EPD_2IN7B_V2_SendData(0x03); + EPD_2IN7B_V2_SetWindows(0, 0, EPD_2IN7B_V2_WIDTH-1, EPD_2IN7B_V2_HEIGHT-1); + EPD_2IN7B_V2_SetCursor(0, 0); } /****************************************************************************** @@ -156,29 +156,21 @@ void EPD_2IN7B_V2_Clear(void) Width = (EPD_2IN7B_V2_WIDTH % 8 == 0)? (EPD_2IN7B_V2_WIDTH / 8 ): (EPD_2IN7B_V2_WIDTH / 8 + 1); Height = EPD_2IN7B_V2_HEIGHT; - EPD_2IN7B_V2_SendCommand(0x10); + EPD_2IN7B_V2_SendCommand(0x24); for (UWORD j = 0; j < Height; j++) { for (UWORD i = 0; i < Width; i++) { EPD_2IN7B_V2_SendData(0Xff); } } - EPD_2IN7B_V2_SendCommand(0x13); + EPD_2IN7B_V2_SendCommand(0x26); for (UWORD j = 0; j < Height; j++) { for (UWORD i = 0; i < Width; i++) { EPD_2IN7B_V2_SendData(0X00); } } - EPD_2IN7B_V2_SendCommand(0x04); // Power ON - EPD_2IN7B_V2_ReadBusy(); - DEV_Delay_ms(10); - EPD_2IN7B_V2_SendCommand(0x12); // Display Refresh - EPD_2IN7B_V2_ReadBusy(); - DEV_Delay_ms(10); - EPD_2IN7B_V2_SendCommand(0x02); // Power OFF - EPD_2IN7B_V2_ReadBusy(); - DEV_Delay_ms(20); + EPD_2IN7B_V2_TurnOnDisplay(); } /****************************************************************************** @@ -191,30 +183,21 @@ void EPD_2IN7B_V2_Display(UBYTE *Imageblack, UBYTE *Imagered) Width = (EPD_2IN7B_V2_WIDTH % 8 == 0)? (EPD_2IN7B_V2_WIDTH / 8 ): (EPD_2IN7B_V2_WIDTH / 8 + 1); Height = EPD_2IN7B_V2_HEIGHT; - EPD_2IN7B_V2_SendCommand(0x10); + EPD_2IN7B_V2_SendCommand(0x24); for (UWORD j = 0; j < Height; j++) { for (UWORD i = 0; i < Width; i++) { EPD_2IN7B_V2_SendData(Imageblack[i + j * Width]); } } - EPD_2IN7B_V2_SendCommand(0x13); + EPD_2IN7B_V2_SendCommand(0x26); for (UWORD j = 0; j < Height; j++) { for (UWORD i = 0; i < Width; i++) { EPD_2IN7B_V2_SendData(~Imagered[i + j * Width]); } } - - EPD_2IN7B_V2_SendCommand(0x04); // Power ON - EPD_2IN7B_V2_ReadBusy(); - DEV_Delay_ms(10); - EPD_2IN7B_V2_SendCommand(0x12); // Display Refresh - EPD_2IN7B_V2_ReadBusy(); - DEV_Delay_ms(10); - EPD_2IN7B_V2_SendCommand(0x02); // Power OFF - EPD_2IN7B_V2_ReadBusy(); - DEV_Delay_ms(20); + EPD_2IN7B_V2_TurnOnDisplay(); } /****************************************************************************** @@ -223,6 +206,6 @@ parameter: ******************************************************************************/ void EPD_2IN7B_V2_Sleep(void) { - EPD_2IN7B_V2_SendCommand(0x07); // Deep sleep - EPD_2IN7B_V2_SendData(0xA5); + EPD_2IN7B_V2_SendCommand(0x10); // Deep sleep + EPD_2IN7B_V2_SendData(0x01); } diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.c new file mode 100644 index 0000000..59fcc4f --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.c @@ -0,0 +1,173 @@ +/***************************************************************************** +* | File : EPD_2in9_DES.c +* | Author : Waveshare team +* | Function : 2.9inch DES e-paper +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2020-01-13 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_2in9_DES.h" +#include "Debug.h" + +/****************************************************************************** +function : Software reset +parameter: +******************************************************************************/ +static void EPD_2IN9_DES_Reset(void) +{ + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(100); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(100); +} + +/****************************************************************************** +function : send command +parameter: + Reg : Command register +******************************************************************************/ +static void EPD_2IN9_DES_SendCommand(UBYTE Reg) +{ + DEV_Digital_Write(EPD_DC_PIN, 0); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Reg); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : send data +parameter: + Data : Write data +******************************************************************************/ +static void EPD_2IN9_DES_SendData(UBYTE Data) +{ + DEV_Digital_Write(EPD_DC_PIN, 1); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Data); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : Wait until the busy_pin goes LOW +parameter: +******************************************************************************/ +void EPD_2IN9_DES_ReadBusy(void) +{ + Debug("e-Paper busy\r\n"); + while(1) + { //=1 BUSY + EPD_2IN9_DES_SendCommand(0x71); + if(DEV_Digital_Read(EPD_BUSY_PIN)==1) + break; + DEV_Delay_ms(50); + } + DEV_Delay_ms(50); + Debug("e-Paper busy release\r\n"); +} + +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ +static void EPD_2IN9_DES_TurnOnDisplay(void) +{ + EPD_2IN9_DES_SendCommand(0x12); //Display Update Control + EPD_2IN9_DES_ReadBusy(); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_2IN9_DES_Init(void) +{ + EPD_2IN9_DES_Reset(); + DEV_Delay_ms(100); + + EPD_2IN9_DES_SendCommand(0x04); //SWRESET + EPD_2IN9_DES_ReadBusy(); + + EPD_2IN9_DES_SendCommand(0x00); //Driver output control + EPD_2IN9_DES_SendData(0x1f); + + EPD_2IN9_DES_SendCommand(0x50); + EPD_2IN9_DES_SendData(0x97); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_2IN9_DES_Clear(void) +{ + UWORD i; + // EPD_2IN9_DES_SendCommand(0x10); + // for(i=0;i<4736;i++) + // { + // EPD_2IN9_DES_SendData(0xff); + // } + EPD_2IN9_DES_SendCommand(0x13); + for(i=0;i<4736;i++) + { + EPD_2IN9_DES_SendData(0xff); + } + EPD_2IN9_DES_TurnOnDisplay(); +} + +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and displays +parameter: +******************************************************************************/ +void EPD_2IN9_DES_Display(UBYTE *Image) +{ + UWORD i; + // EPD_2IN9_DES_SendCommand(0x10); + // for(i=0;i<4736;i++) + // { + // EPD_2IN9_DES_SendData(0xff); + // } + EPD_2IN9_DES_SendCommand(0x13); + for(i=0;i<4736;i++) + { + EPD_2IN9_DES_SendData(Image[i]); + } + EPD_2IN9_DES_TurnOnDisplay(); +} + +/****************************************************************************** +function : Enter sleep mode +parameter: +******************************************************************************/ +void EPD_2IN9_DES_Sleep(void) +{ + EPD_2IN9_DES_SendCommand(0x50); //enter deep sleep + EPD_2IN9_DES_SendData(0xf7); + EPD_2IN9_DES_SendCommand(0x02); + EPD_2IN9_DES_ReadBusy(); + EPD_2IN9_DES_SendCommand(0x07); + EPD_2IN9_DES_SendData(0xa5); +} diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.h b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.h new file mode 100644 index 0000000..e9130e8 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_DES.h @@ -0,0 +1,45 @@ +/***************************************************************************** +* | File : EPD_2in9_DES.h +* | Author : Waveshare team +* | Function : 2.9inch DES e-paper +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2020-01-13 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#ifndef __EPD_2IN9_DES_H_ +#define __EPD_2IN9_DES_H_ + +#include "DEV_Config.h" + +// Display resolution +#define EPD_2IN9_DES_WIDTH 128 +#define EPD_2IN9_DES_HEIGHT 296 + +void EPD_2IN9_DES_Init(void); +void EPD_2IN9_DES_Clear(void); +void EPD_2IN9_DES_Display(UBYTE *Image); +void EPD_2IN9_DES_Sleep(void); + +#endif diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.c index c79b040..5f25788 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.c @@ -111,14 +111,13 @@ void EPD_2IN9_V2_ReadBusy(void) Debug("e-Paper busy release\r\n"); } -static void _EPD_2IN9_V2_LUT(void) -{ +static void EPD_2IN9_V2_LUT(void) +{ UBYTE count; EPD_2IN9_V2_SendCommand(0x32); for(count=0; count<153; count++) EPD_2IN9_V2_SendData(_WF_PARTIAL_2IN9[count]); EPD_2IN9_V2_ReadBusy(); - } /****************************************************************************** @@ -134,14 +133,6 @@ static void EPD_2IN9_V2_TurnOnDisplay(void) } static void EPD_2IN9_V2_TurnOnDisplay_Partial(void) -{ - EPD_2IN9_V2_SendCommand(0x22); //Display Update Control - EPD_2IN9_V2_SendData(0xFF); - EPD_2IN9_V2_SendCommand(0x20); //Activate Display Update Sequence - EPD_2IN9_V2_ReadBusy(); -} - -static void _EPD_2IN9_V2_TurnOnDisplay_Partial(void) { EPD_2IN9_V2_SendCommand(0x22); //Display Update Control EPD_2IN9_V2_SendData(0x0F); @@ -190,47 +181,23 @@ void EPD_2IN9_V2_Init(void) DEV_Delay_ms(100); EPD_2IN9_V2_ReadBusy(); - EPD_2IN9_V2_SendCommand(0x12); //SWRESET - EPD_2IN9_V2_ReadBusy(); - + EPD_2IN9_V2_SendCommand(0x12); // soft reset + EPD_2IN9_V2_ReadBusy(); + EPD_2IN9_V2_SendCommand(0x01); //Driver output control EPD_2IN9_V2_SendData(0x27); EPD_2IN9_V2_SendData(0x01); EPD_2IN9_V2_SendData(0x00); - + EPD_2IN9_V2_SendCommand(0x11); //data entry mode EPD_2IN9_V2_SendData(0x03); - + EPD_2IN9_V2_SetWindows(0, 0, EPD_2IN9_V2_WIDTH-1, EPD_2IN9_V2_HEIGHT-1); - - EPD_2IN9_V2_SendCommand(0x3C); //BorderWavefrom - EPD_2IN9_V2_SendData(0x05); - + EPD_2IN9_V2_SendCommand(0x21); // Display update control EPD_2IN9_V2_SendData(0x00); EPD_2IN9_V2_SendData(0x80); - - EPD_2IN9_V2_SendCommand(0x18); //Read built-in temperature sensor - EPD_2IN9_V2_SendData(0x80); - - EPD_2IN9_V2_SetCursor(0, 0); - EPD_2IN9_V2_ReadBusy(); -} - -void _EPD_2IN9_V2_Init(void) -{ - EPD_2IN9_V2_Reset(); - DEV_Delay_ms(100); - - EPD_2IN9_V2_ReadBusy(); - EPD_2IN9_V2_SendCommand(0x12); // soft reset - EPD_2IN9_V2_ReadBusy(); - EPD_2IN9_V2_SendCommand(0x11); //data entry mode - EPD_2IN9_V2_SendData(0x03); - - EPD_2IN9_V2_SetWindows(0, 0, EPD_2IN9_V2_WIDTH-1, EPD_2IN9_V2_HEIGHT-1); - EPD_2IN9_V2_SetCursor(0, 0); EPD_2IN9_V2_ReadBusy(); } @@ -292,31 +259,7 @@ void EPD_2IN9_V2_Display_Partial(UBYTE *Image) DEV_Digital_Write(EPD_RST_PIN, 1); DEV_Delay_ms(10); - EPD_2IN9_V2_SendCommand(0x3C); //BorderWavefrom - EPD_2IN9_V2_SendData(0x80); - - EPD_2IN9_V2_SetWindows(0, 0, EPD_2IN9_V2_WIDTH-1, EPD_2IN9_V2_HEIGHT-1); - EPD_2IN9_V2_SetCursor(0, 0); - - EPD_2IN9_V2_SendCommand(0x24); //Write Black and White image to RAM - for(i=0;i<4736;i++) - { - EPD_2IN9_V2_SendData(Image[i]); - } - EPD_2IN9_V2_TurnOnDisplay_Partial(); -} - -void _EPD_2IN9_V2_Display_Partial(UBYTE *Image) -{ - UWORD i; - -//Reset - DEV_Digital_Write(EPD_RST_PIN, 0); - DEV_Delay_ms(5); - DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(10); - - _EPD_2IN9_V2_LUT(); + EPD_2IN9_V2_LUT(); EPD_2IN9_V2_SendCommand(0x37); EPD_2IN9_V2_SendData(0x00); EPD_2IN9_V2_SendData(0x00); @@ -345,7 +288,7 @@ void _EPD_2IN9_V2_Display_Partial(UBYTE *Image) { EPD_2IN9_V2_SendData(Image[i]); } - _EPD_2IN9_V2_TurnOnDisplay_Partial(); + EPD_2IN9_V2_TurnOnDisplay_Partial(); } /****************************************************************************** diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.h b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.h index b390dc5..25f67cf 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.h +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in9_V2.h @@ -38,12 +38,10 @@ #define EPD_2IN9_V2_HEIGHT 296 void EPD_2IN9_V2_Init(void); -void _EPD_2IN9_V2_Init(void); void EPD_2IN9_V2_Clear(void); void EPD_2IN9_V2_Display(UBYTE *Image); void EPD_2IN9_V2_Display_Base(UBYTE *Image); void EPD_2IN9_V2_Display_Partial(UBYTE *Image); -void _EPD_2IN9_V2_Display_Partial(UBYTE *Image); void EPD_2IN9_V2_Sleep(void); #endif diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_3in7.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_3in7.c index 4575097..b3cbf80 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_3in7.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_3in7.c @@ -552,6 +552,9 @@ void EPD_3IN7_1Gray_Display_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, Width = (Xend-Xstart)%8 == 0 ? (Xend-Xstart)/8 : (Xend-Xstart)/8+1; UWORD IMAGE_COUNTER = Width * (Yend-Ystart); + Xend -= 1; + Yend -= 1; + EPD_3IN7_SendCommand(0x44); EPD_3IN7_SendData(Xstart & 0xff); EPD_3IN7_SendData((Xstart>>8) & 0x03); @@ -563,13 +566,20 @@ void EPD_3IN7_1Gray_Display_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, EPD_3IN7_SendData(Yend & 0xff); EPD_3IN7_SendData((Yend>>8) & 0x03); + EPD_3IN7_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + EPD_3IN7_SendData(Xstart & 0xFF); + + EPD_3IN7_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + EPD_3IN7_SendData(Ystart & 0xFF); + EPD_3IN7_SendData((Ystart >> 8) & 0xFF); + EPD_3IN7_SendCommand(0x24); for (i = 0; i < IMAGE_COUNTER; i++) { EPD_3IN7_SendData(Image[i]); } - EPD_3IN7_Load_LUT(2); + EPD_3IN7_Load_LUT(3); EPD_3IN7_SendCommand(0x20); EPD_3IN7_ReadBusy_HIGH(); } diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in01f.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in01f.c index 5869ae2..fed4e63 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in01f.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in01f.c @@ -39,7 +39,7 @@ static void EPD_4IN01F_Reset(void) DEV_Digital_Write(EPD_RST_PIN, 1); DEV_Delay_ms(200); DEV_Digital_Write(EPD_RST_PIN, 0); - DEV_Delay_ms(5); + DEV_Delay_ms(2); DEV_Digital_Write(EPD_RST_PIN, 1); DEV_Delay_ms(200); } @@ -74,17 +74,20 @@ function: ******************************************************************************/ static void EPD_4IN01F_BusyHigh(void)// If BUSYN=0 then waiting { - printf("e-Paper busy \r\n"); - while(!(DEV_Digital_Read(EPD_BUSY_PIN))) - DEV_Delay_ms(500); - printf("e-Paper busy release \r\n"); + printf("BusyHigh \r\n"); + while(!(DEV_Digital_Read(EPD_BUSY_PIN))) { + DEV_Delay_ms(50); + } + printf("BusyHigh Release \r\n" ); } + static void EPD_4IN01F_BusyLow(void)// If BUSYN=1 then waiting { - printf("e-Paper busy \r\n"); - while(DEV_Digital_Read(EPD_BUSY_PIN)) - DEV_Delay_ms(500); - printf("e-Paper busy release \r\n"); + printf("BusyLow \r\n"); + while(DEV_Digital_Read(EPD_BUSY_PIN)) { + DEV_Delay_ms(50); + } + printf("BusyLow Release \r\n"); } /****************************************************************************** @@ -140,13 +143,36 @@ void EPD_4IN01F_Clear(UBYTE color) for(int j=0; j> 8) & 0x01); + EPD_4IN37B_SendData(Ystart & 0xFF); + EPD_4IN37B_SendData((Yend >> 8) & 0x01); + EPD_4IN37B_SendData(Yend & 0xFF); + EPD_4IN37B_SendData(0x01); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_4IN37B_Init(void) +{ + EPD_4IN37B_Reset(); + + EPD_4IN37B_SendCommand(0x04);//soft reset + EPD_4IN37B_ReadBusy(); + + EPD_4IN37B_SendCommand(0X00); //PANNEL SETTING + EPD_4IN37B_SendData(0x0F); //KW-3f KWR-2F BWROTP 0f BWOTP 1f +} + +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and displays +parameter: +******************************************************************************/ +void EPD_4IN37B_Display(UBYTE *ImageBlack, UBYTE*ImageRed) +{ + UWORD Width, Height; + Width = (EPD_4IN37B_WIDTH % 8 == 0)? (EPD_4IN37B_WIDTH / 8 ): (EPD_4IN37B_WIDTH / 8 + 1); + Height = EPD_4IN37B_HEIGHT; + + EPD_4IN37B_SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN37B_SendData(ImageBlack[i + j * Width]); + } + } + EPD_4IN37B_SendCommand(0x13); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN37B_SendData(~ImageRed[i + j * Width]); + } + } + + EPD_4IN37B_TurnOnDisplay(); +} + +void EPD_4IN37B_Display_Part(UBYTE *ImageBlack, UBYTE *ImageRed, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend) +{ + + UWORD Width, Height; + Width = Xend - Xstart; + Height = Yend - Ystart; + Width = (Width % 8 == 0)? (Width / 8 ): (Width / 8 + 1); + + if(Xstart % 8 != 0) { + Xstart += 8; + if(Xstart > Xend) { + printf("Xstart must be a multiple of 8 and not more than Xend \r\n"); + return; + } + } + EPD_4IN37B_SetWindows(Xstart, Ystart, Xend-1, Yend-1); + + EPD_4IN37B_SendCommand(0x91); + EPD_4IN37B_SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN37B_SendData(ImageBlack[i + j * Width]); + } + } + + EPD_4IN37B_SendCommand(0x13); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN37B_SendData(~ImageRed[i + j * Width]); + } + } + EPD_4IN37B_SendCommand(0x92); + + EPD_4IN37B_TurnOnDisplay(); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_4IN37B_Clear(void) +{ + UWORD Width, Height; + Width = (EPD_4IN37B_WIDTH % 8 == 0)? (EPD_4IN37B_WIDTH / 8 ): (EPD_4IN37B_WIDTH / 8 + 1); + Height = EPD_4IN37B_HEIGHT; + + EPD_4IN37B_SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN37B_SendData(0xff); + } + } + EPD_4IN37B_SendCommand(0x13); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN37B_SendData(0x00); + } + } + EPD_4IN37B_TurnOnDisplay(); +} + +/****************************************************************************** +function : Enter sleep mode +parameter: +******************************************************************************/ +void EPD_4IN37B_Sleep(void) +{ + EPD_4IN37B_SendCommand(0x02); + DEV_Delay_ms(100); + EPD_4IN37B_SendCommand(0x07); + EPD_4IN37B_SendData(0xa5); +} diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37b.h b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37b.h new file mode 100644 index 0000000..172c26c --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37b.h @@ -0,0 +1,45 @@ +/***************************************************************************** +* | File : EPD_4in37b.c +* | Author : Waveshare team +* | Function : 4.37inch e-paper b +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-01-07 +* | Info : +* ----------------------------------------------------------------------------- +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#ifndef __EPD_4IN37B_H_ +#define __EPD_4IN37B_H_ + +#include "DEV_Config.h" + +// Display resolution +#define EPD_4IN37B_WIDTH 176 +#define EPD_4IN37B_HEIGHT 480 + + +void EPD_4IN37B_Init(void); +void EPD_4IN37B_Display(UBYTE *ImageBlack, UBYTE*ImageRed); +void EPD_4IN37B_Display_Part(UBYTE *ImageBlack, UBYTE*ImageRed, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend); +void EPD_4IN37B_Clear(void); +void EPD_4IN37B_Sleep(void); +#endif diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_5in84.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_5in84.c new file mode 100644 index 0000000..603da9d --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_5in84.c @@ -0,0 +1,218 @@ +/***************************************************************************** +* | File : EPD_5in84.c +* | Author : Waveshare team +* | Function : 5.84inch e-paper +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-01-08 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_5in84.h" +#include "Debug.h" + +/****************************************************************************** +function : Software reset +parameter: +******************************************************************************/ +static void EPD_5in84_Reset(void) +{ + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(200); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(3); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(200); +} + +/****************************************************************************** +function : send command +parameter: + Reg : Command register +******************************************************************************/ +static void EPD_5in84_SendCommand(UBYTE Reg) +{ + DEV_Digital_Write(EPD_DC_PIN, 0); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Reg); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : send data +parameter: + Data : Write data +******************************************************************************/ +static void EPD_5in84_SendData(UBYTE Data) +{ + DEV_Digital_Write(EPD_DC_PIN, 1); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Data); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : Wait until the busy_pin goes LOW +parameter: +******************************************************************************/ +static void EPD_5in84_ReadBusy(void) +{ + Debug("e-Paper busy\r\n"); + do { + EPD_5in84_SendCommand(0x71); + DEV_Delay_ms(10); + } + while(!DEV_Digital_Read(EPD_BUSY_PIN)); + Debug("e-Paper busy release\r\n"); +} + +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ +static void EPD_5in84_TurnOnDisplay(void) +{ + EPD_5in84_SendCommand(0x12); //DISPLAY REFRESH + DEV_Delay_ms(100); //!!!The delay here is necessary, 200uS at least!!! + EPD_5in84_ReadBusy(); //waiting for the electronic paper IC to release the idle signal +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_5in84_Init(void) +{ + EPD_5in84_Reset(); + + EPD_5in84_SendCommand(0x61); // Resolution setting + EPD_5in84_SendData(0x03); + EPD_5in84_SendData(0x00); + EPD_5in84_SendData(0x01); + EPD_5in84_SendData(0x00); + + EPD_5in84_SendCommand(0x00); + EPD_5in84_SendData(0xdf); + + EPD_5in84_SendCommand(0xF8); // Enter FITI Command + EPD_5in84_SendData(0x60); + EPD_5in84_SendData(0xA5); + + EPD_5in84_SendCommand(0xF8); // Enter FITI Command + EPD_5in84_SendData(0x89); + EPD_5in84_SendData(0xA5); + + EPD_5in84_SendCommand(0xF8); + EPD_5in84_SendData(0x76); + EPD_5in84_SendData(0x1F); + + EPD_5in84_SendCommand(0xF8); //boost constant on time + EPD_5in84_SendData(0x7E); + EPD_5in84_SendData(0x31); + + EPD_5in84_SendCommand(0xF8); + EPD_5in84_SendData(0xB8); + EPD_5in84_SendData(0x80); + + EPD_5in84_SendCommand(0xF8); //vgl=> GND:08, HZ:00[default] + EPD_5in84_SendData(0x92); + EPD_5in84_SendData(0x00); + + EPD_5in84_SendCommand(0xF8); //VCOM(2frme off)=> GND:01(0x88=06)[default], HZ:11 + EPD_5in84_SendData(0x87); + EPD_5in84_SendData(0x01); + + EPD_5in84_SendCommand(0xF8); //r_vcom_init_sel + EPD_5in84_SendData(0x88); + EPD_5in84_SendData(0x06); + + EPD_5in84_SendCommand(0xF8); + EPD_5in84_SendData(0xA8); + EPD_5in84_SendData(0x30); + + EPD_5in84_SendCommand(0xF8); + EPD_5in84_SendData(0xE8); + EPD_5in84_SendData(0x88); + + EPD_5in84_SendCommand(0x04); //power on + EPD_5in84_ReadBusy(); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_5in84_Clear(void) +{ + UWORD Width, Height, i; + Width = (EPD_5in84_WIDTH % 8 == 0)? (EPD_5in84_WIDTH / 8 ): (EPD_5in84_WIDTH / 8 + 1); + Height = EPD_5in84_HEIGHT; + + // EPD_5in84_SendCommand(0x10); + // for(i=0; ikmi)wy$~ck({#Ga6Yq%Un(m#mW2CZ z&Fckz6M+q6PppAmuXe|`ucX|Cf>4$8y;WbTs?l2VgCEEg7R?5W45@nj_EOnFksxf# zAhasRt;+UPD=QiH#O5R0lSfU;I@CxNuAmDi6WYO3uCmrv*uGV}*>BZu6}wvG2hLV7 z6dYMd$w*+^s4XPg`rEN4iyqUA1Em1Q_DZEqmk+SJA8N&(L zBy||StwX5ii?GaGO3ka3aJu<2ldbGHi8cPO_ zCIWj^&>4HdBW{E;`0HF@|E1A~Y^Y~8IBI40*$NF3wpF%PyZ=^p19QHp7C%Ep_gINY zVI^q7Q>X0sC#tvFR}dk@3C)GE3hR9xv)E_2Wg58 z^;ZIGw6OcNAJpHkdV?$sA{|GptT zNbj*vz{WA#jSgP53!%V9bDzBso1zEoK9LXe+uXEwV4E`b!3H+Fm*??2*%cNI%%31` zf5%Z+e%=2WPNv2j?ZTwlUq@eLmwBVKdCpdt*Mxn=2e7d%^HuaFtj&HO+aQJT5_69F zdy%Y848MR~%$~~1s=`(9_~72ynE2T4ug~+O%vTa>6N>;lu{y_MaxU|8B8#PG_wqbH z>s%-7XmtS3+40-0%m(s78p$Pc(VW+XGRI>AvscgwmED)}H~YO!1*2xQzK z!80q9nX)?R^lrx9z0#i30v%_VAzF=HtQTO-0JiVyTt)OR2I`re)=*^MPhe#&13@(w zM29<2Q?O{C-25Zo$m!t(76{6)hRQ-Kzh>;i&@mS*>xziA8@AgM`!oJ=N!T7=hWMCX zrACB7aHvs!e>j1IccMRdsbpgN4|7ZDqQIiSN2~xX>7!Mk#wPl|O&>G+VYjRB)CJQw zD@$YJsE%ZNI_z(HH$?n@4x-K^WD-{AVU&$OH7R+!?U7Z*v5j_UTDM`acz(86QukQE zZ&P6%wm%cg1K96wc`Hvd!eS>V>~mq=#0EdHEgtCV{!`fPu<-}`Y{%~VciGDfwiVXE zZsZf|U9N|fu-K%6ZTCO8FOO`O)$Zj#!1~XGz1hFL9ltrYxpA(kLqluo>b>5|$p|UA#1j{dMVTs;h{pABJr6jDm3U+MlhF`e% zShR+G_LtcF@56x)N4rgn{AW?w>tLY@?6$qOnXr!x(0Mztcv79SPBjc*8v}pQ8`m#i zGz9h*!H^)uoE`j`?K-p)eK#lzoh@{}dC?9>HWpU3YOqBMMzktzZaO?IfbGxhvs+%Z z@Rts-8!On|ZvWnXPiwHxchC2SLporu7|6}+I`lE@c3?#-5y7M?HZ5E1Z8bJFyAm7N zVhZd23cIk=kTd@zuqk#cI~0~i64vC2-80?~@U60V!O%=P+vfv30z@l0P>V6rQ36{t zHsvmn-R$wa82s)|>_Vv(SnXfC!FB$8&i<;Su4(W(ry0q>eLO$auLgJZMpy&3Z4p=4 zU7PFBqplO{B0V0x3^Ia8lAyDm>9hw@cpz`dS`_$SD)1kwXcXlD literal 0 HcmV?d00001 diff --git a/RaspberryPi_JetsonNano/c/pic/4in37b_r.bmp b/RaspberryPi_JetsonNano/c/pic/4in37b_r.bmp new file mode 100644 index 0000000000000000000000000000000000000000..478da024128d9542ef0cd41ca5c7ddc1d2a87d09 GIT binary patch literal 10622 zcmeH}O^(zs5QQtspa_H}Tg1j&xB-h1M(nx69Aq@{Xcm1PZh%K{5F;+&5t~Sa6tBuo zI!RCS(?Tqe-D-FI^X1vkWxLWgg`(i^mYI!|A%$Qd&)i{<%0 zb)dyUhZE-pR9N|ObcL7T`;@5GdSqHbR|YMn@kF+lmI1}whm2H=Bvtq#43)jtUe~C+ zHV*7AKqN|6Wo5|F?c|4DW+5`OOe?nHAU%~e@)UH)%s#Vr$+{I=vlBwuj`=%>O3HZ0 z#JYv9U$HH#j^@@efGix%dLiMj% z1JOxW*(NkAwq~8eL%OheX6;>nWe(VHM_JgsWG~u!*2N4EZq5C$_iCE2H0?fP^%iWr zXm5X;1>etX=i)_kvtipX9?=DxHYy>3eb(Il3Cj!J@VxdL)`af3ZrbFkOP5dT?U;@K z8SAI@?dbAxwPmfh?jR=BXUS$3A$E4NT_fwjq89{^#}3(Oknv8kAeoGL1nc*#3}=9W z#wS+7J+n^EI>DCgBfpKSjwaS_*nk(z>~L1q2P{(?l5QtDl8y5j+b-GLfIYa{3**d! z+Oo}_J;w@d*lNU1PP)SS4%uFJ&-Ul_UBsEQ)UB`^601kAp8F58jo-30c2TdodWs%r zaX$WC#(%Y9t3eLFLE{ReM@r|j#}&8>!cH-X7YEC} z$@4|LfQ`r!ixXyI12)|b*_L(9#5zc}V8;U%hYjxnVfog&GuwG;apWRa560Y6#m$zD zmI;;UT*t1*y>8Hh6U&bBm|Fylvgxu!HDSK}l9jUYn3}8+%e~L(9+X`%>XoN)CF4fT zU=c@I*PJnVn8i8*b=tX+~@sB)=&SPGm_3?4L323ohcE^BWG!xSgETlf9atMBxhFzL6KfF4GwEt1N&ZW_H&NCG>V|xfg*ZZ`eR9>gk z9N#7X`iRnQ+UrQ=1MJely>M=j{*>ZA;Unn}pT{mWnZKu$)MGsJLwYd2O+WDW>Fd|z z-X+Ri@ss$Y`^4=c{O>7(ugv$K$8>CdP;pKNQ&0Yx-=#0bhu52aEZ`sZYkt>rIwrJD zZZ9zWap8YGr1zU~6u%Y!vo$|u{qQ)=e=OiD_o83?5K}YJ@{NkdKVv(hNd9TRem%J+ ze)MVP_u?O_ezwg&re?)&6Cptc^MBXxkL^JRl4}pU^ycvUc4`k@<~Qjx@m*a>PS)c=ts!`8e}A(M0PWO-%6R@De`{sWE;#zJprv5BTTR z zloZIg;=dx|URQoHfyT;ZJ@>$QA!h zWc-Y38LGz631VPUu=t$$(Q_ivi<``kfzU1O+e-i7mDTijjHS4X^U@!_I&{Y-b~4Ai z82RM7SD9bqzn%H6%kdu`sDF;1R%2$KU*vx(5mF2iY<%XI3BL5h@1@@b;~x@`ePTGG zGMq^CmA?Bd(SOk|Q;W~$ptuizKIHf@{t({aaPb)r+Odh&L*Y|OhnTOVA19|ja18#~ ziN8zx1LNx(hRg23Vtv5AVLEsWJW^X|?pFD!Eg%Wxj@6CaG!v7Y-TUF<|eEkLL#$ZD?x`zZRdl zMX8B=;2+~p1OyZ4A$)OkK0W*hzh0lv!qaZz09BB$#iy_BQqxPn=C9qMqkV~)-@(_E ztkgt4R(u)){wrEcmtH+FtH6fiI;Ny6?v8D=fmY{BnRzo= zE9dR}S@ic^ih(d-Hj40j^iz#qHe)u-pZTB~G|k7YP4a1tKijn7M_s=SFdTfMpx@fE zx8^r7pWg7ZH}eU7R=&^U+Y9G{5H9!>SZJopRco&`2kD# z#X}o@DRa&!{Yn_kw*_sqL*>i1>qq8$T0V^a5`U% z;P2W4+@R&eoyaendR8vDx#1>IH?mq0Oi>dK<>;1;HI0sK9#H7CCDuycl+7o68DHxG z1{k>KUHELn*WF=U@mVZ?^#pJ+F+SMN_`QTjM+$~kjf~$e`U_uHL61dp(#_qTtYvqo z8^$+N9H2W)e~CY=_+w}Kqh&H7VrIUwTbhrHpRw>|)UNoQHG*U|i~g|-YBS^O#?5#$ zzp-78%Z4O=#=;-rH#7f;)3h>k!k@yzCqo9#{2T?#@ya)Wx&xCFNkP>TpCu0Nk5~Gq z@Y1KEpA03eq!CjE3TZhmKI>4NgA`rBVBv?EZ>KG5TJtg8@O#A{iQ}c=#Xq<-6utt2 z-JDd3nDwvtM?ZPaOGOy=_|KBsut_Wlb=n=83Nb#K!S1aTt)!TZEsLbs$UnJy%8A>8 zR_pD7R~lIR*D;c1`lI=jR`q4W+82#k#=tTeYh2Q;q}V8YE8Y&Kz*mP;qpN0OyPwg>GLD7Xtk8#I032pY}`P8`~XxIE>vTet6ilVb=J$J(YJhB3awZJPr zPEZ;=ACK{~DXUH-R+0k2z36ALXc7q@i_bqxT2m)Q&xe*wxB7E)_gO!|YRULsd{$G7 zf2Iy+h4ck%Z$`#{DD7SNY8xvED|~@}YB<>j!D=Z=zxd;R=8vAr_+!o`EAiEO*4~wm zz!je|HvHN*R{TB`{UfWkEULnfxs`er?hn+c1gah78Q6xO-C~+mQ0-vG57OVv{K+x4 zG=nc4O#11U)G{lyl3A-ZmOjufPj2+r4yNG_Wvmr1{PdaeyV>DdQ}F@_{uJ&7X8QW6Znx#*gwLzfvCq^d_83-d|QXNqyJUM zcJm?wW6z>F8R%ddq@Ths9Spvlz%cLQ!vF8e?*pP4xd)zb5-<#?n#3OA+dy4981TwJ z*n0w|f94Nf{04qY45_^*9_l~BALQH8!7lP&{Q;3yPy`j7xBr<>h5MU)DyXiJX9J1X zHKGgju35kFxyCYw!w%Ma@jsD-i-yPeSOV?@pm8gI+|TjzALw84z4=h)SaWgn7~jt4 z4z}>S6@T`>X2|HU|3Y*+7`05d`!D_pSe6b3U#hui;q94O|IAkhR{PcjpUcR{^qV!U zrbN%J{M}`~TwW7>{0aO{<`xAr|D~Rr&HOht{%u4qqmVMu$DhFWG97ZQ85!7c@Q<$Y z|MG1ae-tpd(#8tqp=qDOm;Wli_vifAf9l=-OBvavi4|gdGk>@-KI?fqDQ2%0{_ivn zRsFmF9hhH?Xx%LLHSHgYe&%bkM{hRrbnnUE*{&`TNd-3efzu9t;<=$2OuO%SI!q3d z3UGr0^vv6Uk>{3-D?G$enS&-mcSmzf`g zKjUjao(H&Sj^^#BML(lKZzkwtYTW7{#XoesP=o#;&=r0zg$wH*E8`FEW&fn)<9;M# zG=8Y@iOXY4XC8vyWT54hlXU8zOfLLGMTG`>@Rg6tjn5z?e#nhq_;&r4 z{STR#srXsX|4`3S);M3%>3< zPd!KNqK!g`T}wzNXsFZZ7^UZOd;A|a_jlUO)e(cdHm9BO@rAs}M@~pq6ezD9FXbAa zl?Mxh!3v66h_Fm6zO6jj!SPemk5*sGw!GhfA;{x!cd z%~5SLWFc5dHu(bf9PjIK@qxo6@yS1SOVsJUS9~%oe6CH5f0PIGVo*s#$A&t|H~b&- zaoRzA*A3QtBEb)wT`P`i&V1g~Ae&NIzsft0d}jXW-p{!Ywm|?C7%w{lP{UFEpU$Tl zX?GIEfzfV(E&N=RjDC2F^~0=RK=T*jOhI#TNT2mDe3kLkl=&|6G13SDw$t4|!O5E`GjI)D5d$nyWDGVuJ3(xFXkQtB+Dk{R}8u z=to~9enwSH^_;}++a6>=itH{K`}v+oH_bJZEIg-9_~gC9=W4uO$49b}+sZQiUD@Pz zV9gH$W?TKbVYsZ{FKf4vZ1uiK{OTz==rKOayqEc5Sy0dXs<~g^|7`f33{UiP<9C^l z+c*BHJLse8OkT&(L_nk1PF``Qv5%fy!?5cP2V^ z=+B#Zf5p%1DX03c@M)MW-*Eb^&s*}Ri~1El8-D3ivEB0LLB%3Rk$$TGG9N1&g0d6H zR(uupTbz}DuJfs>rOSMUPi5k%Syt2|`c69Kcpmbt{7(eSFn3qBEb)W9d|*3%Dtzqc zuGOwoJM%}53d{=MV|;!ahEHat?0+y>|4-#x_-y$s@;;>9|7h~;F7vw| zGa@$=zdhHv3>!si#bN8Tzp)t~*Q$nQo4-3|T4lt(+(QX4+A zrT&b-Ek5hnPvk#b=JO-Qjvsn%{lDl>hYqhkMZe{VC;IV@_~9C#CjxK9=Q+XBfAt_? za{sOuC~oirgUXZjGe2(ls2AT~StWZUS=qKg#Us2^}oDxy?^0+<7=px6W1&^_=~CDor3@3HeXg{A{{h)D(QtT zOK1A)3on>5)%Se9`+{4ellIkI$!R78UGS~>-moivF)f!m^Y#B=fS%8P_~bTUkC7Ms zS@zrT-}!_}U(?Uvv*DL3Cf-EIX}%Q5_jmRVmYvD^-Fxo0zY^jGUw>p{)?YTR^265u z;`3W)o8MKUU7xJyUk(0iez~G4Z^QCP(Q*JN`nUX}`;fO|9^>PqS^r~vztNxhIm9o{ z@A5rUxLZ@ zM!(q*RfRv?;LC%~-{9lqbjnw=5{v3u(tm^Ri|KX$^zdny?Nr9y#M zK4~jHvVXWm%Bz}YlqWk(PWc>B;x#4;)&#Q*H~Gx6{!>j)=l2xVa7ubthn=4;3vf{;#H0KY4PB zv;H>$C6qVK0kcZKB>0eif=XI&)sB$um*u#-Rd1<;^x!s6bH3&ixxK_!lTtV5pm5z-;*k4EU$02^vty z)Y;Yr1BDtv2DSyyPWgGysp^mUxc5>N7ce|UvTuJ>J^j|HQ>VJC`tqOt`HQa_OJA`4 zqxQD^+vqPFrLUUiKR@(;c3d_&=jGvT|7L;zrxu8Gh4qJM@+K-DUn3cRJU9g^&BJ`3`+~!XFm;FZ1`8^>-L^Wq;Q^h(F8E zOMa`~dS?I2e7VnxU)*!(-j+XJ)Gzm0@k^f?!kV8J_Sw;7=lU=6cXXWR zEnVizeOCP9)&Y4DUxx6ev{{#g}U`%iPGe|rQGEmSS-lgHh0 zd*IKz@)4PdFbRokJ{Jy~!{(Ilc9Z|)pH%7|{Uz)6i2L+w{)W-=upRH?Z}QzE`Fb$9 z#NUj~vAL?B&LFEkLciBzSlS2uSV#QsqPkEi^7^RG?p@8d@VJ=*>}KP>eR8|Q~>`WYGCj^D5O&A$1^CS11< z{6IH&y#8UqZ|VA}`2&yOSKAl(1%6z_&)UEIXHF}A&-}q3`uq7BJWuo!SKP{kst5RA zHh?zho_sI@9xiFM#ns*x%15M9lij6WJ+W@!!+A{wI4L8LsIk_^kNl ziD^IEXVQ;ggs%9<<{z3*|Ly@kA#~PXxYzhicg}BR;w$>aUh#ulAzjgb!ap=$H{TFK z@8vhxsNnkMA%0xxcfPy04L+T$xftJN`xQUB{^6Sb3;fMP{BEJY@cYN{$7XB}8$!%A z`^)#$2PXS;rvF$^(7#k;x{6$owATMPemvu=#-1MJqn;2?PrYdWoz7YeGF;zu_H#1W z1N!$onmoX#&S8>U`BOl81fRF*zB|>gcLBv8#ZC7V%1bcXtdt}OW_>#Tpl_eKl(G9SA{ zWu|w}`jhBOzTv{cKQHkSv9gcl!K(_tzs@HUDPHHRcjZ&Qb(W6jM%A89b`QT~y>1`z zX{4q8Xa`u$_ynQ*_&pMG)lYoBWS=vB(nxzyXw%MuZ|<_Nf6ShBYj(0Heu{W%t$hdd zr&Ili(Cd`(831r4Po0OErc|g)_R_`1?ZYdQM(vWEPnJ_YXOu<_EgJOF9B%wdTJSyV z>G-R_?)-hww93lzK1_&l_D(RqD`{z9>O(#D*SHo zIARbC=3dfO98$`aGyV}iR$l5ac_`d-1uvcK6AR^(kCbxdjGui9X2~y^hr*A%hL_T@ z{G9kTYvohM(@@(t{|An^)?c2|dJE4QU?zSz<=3qD@L%WggkL86i1J)$7yz#GYu3u| z&-Gh)SlQo)!Gpb8toh|ebNhPMBc0q+bBUjTEbZ@;xnt$;@}$3%UhvIgW99SySZ*{- z_BUT$^Np80JQHkYelhogU$PecdKUDwN)dG?xKIytVRE9lwsa=ilKhfO*K`C>Axvku*x5PbFu>~|2^TW z{`Y16%J1K={`b|o?@RTKd$YjJ0)GPwlriu2<7R=I1#T9&S>V@NfGI>zOlbVJi5V(@ zsR_Iz@#c_t74lbVoz>$nGnm|S=m#zw6EWFa-jZ^C9W%bYy$hfR^={I?;A2Hq z&(fXiH$ElHSv@3c&Y-j7>AdkB3qYCT%-5TtmgBHnSnv;r$OYq5pktp@`Jo;~+cCal z;V1ZE;xoI1)z0|)1)l=JI1}G%Ih~*QCUAgnGv-!p=Tm9gWubq67(19fdG$(L%vSZc zcDw1k@l*3}WJ7=7=<_Uwe!y)i;zsk32>Hxm!CYST0@ij&4 zphFzPc=KWMF#e%9Sjn-hCj^wV=KNI)eX+aRa$$9*534f)$Ad@1vawHd;}N! zf=XBz;g^t)9ti7qogM3`! zfE=aNXkdol$9~eUUSa;_F2QokX4s@)?M+3j=(HShZhzt%C&^AqdS(LErRupyl1EN2in^Q+I!n~P~CeofZ&xsgh_wp zb60XwRWxgTfcD<=DMFGBYyUv8GQL_`P1L=W=GsX;)A#;yFctM)m5iv9(^lME#Sb_yOf?$h6q zwRGT#uLZoy&y)R8i+*~Ripc9!qam_;A75EZ2ZImwz!wsfIOkgwZh{IZi60;2TV2Zt zsh(T;?PY$6LUsfC_``g&d>J7tpO)Lt{LhR3dqgf_UpJtSKg{>gQJ@h98yH`2_BBe)}i*a$EouK+S+xUlO>k%e{^zh87dze zO!^P)>!u0bO4`=vA9e@lQ)}`2j#Fp+5_*a;^kF6Tfq&SPQ~UP&!N)Iu^f~4C5$C(e zcR<;?RrxGY{Dc!#ehP0Ct|QMM_Gnf4AWeVY?fn~_GyO|4-Bt;H=lo;im-V$QZ-ow%uS`<-iLaL_?vApszXP0H0#N_O8UN=z#y%f9(|^Vfm_3coH-%?>4&mFpc_XcfzbHgVO z-pM$`2l|+ZpZVo+N6T5BfsA3i?kkKJGM9VKxT-gdg`|Cn5Su;Q1-ul%S`Jn6@0 zDxVK4(T}%i5R@J|EdTU;-Ul+xpL5yG^lgavbR2+6(oe3dd~(^-4S~4u^Z(@h3nhmg zuF!`8S5dN$sP`MNFPT1QLTSM@--(3&Tt8Jyk0#uNwjUVGIB>tM zd^bqphiV^vdno-P3pDdzW#^B9(*(Mjl*_*Jc+O6WcA9ozXW;W;^X}f~ zA2>YY&tDwA&HR}2Q}d1U2ir-_=f&8gejdyQ@4~0Go1pq|JBT{;&T8K^I^S-kJo$(G z`1wPCQB70aEU^>pFo=ZoN&n2ZE05ebA8&GZ@*C+e8h{U6bd#2Ycj4oK>Oz7Pr=Gkw zRK8WkGQG`aaHTf?NjVE5>Vv z;60`r|9<2CE$#Eg{Zf9_)usN*k3$m{ZWYdE4u5x}i9(RAybV~{duUbD!slMbxBqoU`lBtb_hG@OmfVt330?p!{xI>6$9CMu@4pwn z6JPo&pP7E+!*l(e@l|@#Fa9sN9b=;9Be#})hVFYNDy0A0BTMLUt5sY0tPaEPD<9p) zmm0Hw;di)1qJZoVKkU2boS=ftMjyLpsY~6n!e=oOK5MGRKeh)l4>KQ~v~QI8WFP0J zQ-11R?05EU7CzE!n0n6Kww3-k8b631Tk#F({u9Q}?64a?E&S(9S5tcUYNdZL{^rPU z-!dV%X+p|;$c8)aQed(65YQm<$R{wrGLT4CZ?af@ikWH5*P1WKfdF9TE)^eem=${=4|3m@b$qA z%|rp|cmA`Ht08kTau4`w-<)aR!)`c41u5l)zrz`-ebD6galWQsFY*&H2fodq%TwZ= z`A^{|_(^!@->Cz-{ZIHTAe{3Fit(5HRK3Pm0LJF)?k@i*|Lk6*?pwvU_HL;B_AmPN zvCI5{NONi*{k}O}zN6~Q_tH#?r7t1Ck1taGmf#g-TQ2FhUWtTscK6Ry{fS9^_^c?* z_OE=3(iG~?5N7_-;%BRt!G6j_Fg)XHIHI`-FwWo5%_;B&|7=x~nKW{ke*3>AFqh(U zd~tV-&xoHaqLLHqvSksA4{KKb-%b22eEbvsNLJ_fv5YTfe|mAw{7uf+_>$l!vIhn> z^z%OeiJzYf62^}H`;-gq7{(`je=|B?9%ua6W8E!#7_>T zA1mP^O)h+mQ{rO)>8A#^W(Z|7ZTp14gM6Dd#l2Z6Hr;Oj?P#;J?mgo0D z*~0JoFR_ot7Nx3RM}#CC4*mfs`hSF9o=;lDr`-?sRcMf{#iyFP@pJJ}&!fdN`RCBR zOz<@%E1mL#@oBcmqnFjWm;N2gqQmZu4N^f*1kR^P2$wtsYW$@SiBClZzNCMzOam8x zkMKUEuh{*Ff9)8?=3{m^@fkmciQneDmDTk8K!kPvNS0H++;F$=yrbxP)6jM$L9sIR zn4d*IaF~6Y_*4N86CX!bK7AfHCp!rS%T4E3e7ELYV8w5Ee*3V&)x@_avN@ygE%~KM z*80;)iNaTK<1f#jzeAcnM;iEXl9xlfsh&S+#;*74EB(pOP20-v#`?R#ay9WipiLQl z$M`(c8h`L}D}L|irmgr&WGbGB=liMh!w<^VjYcc7ykA>j$v>`gb5QxG=dT<)KPEa& xe~CYwmU~P7vUpcuv;O7Pvi~mp-Wl(UU;Xof>iN_==$|3Cy_*GY7Pwj9e*r+*)nxzx literal 0 HcmV?d00001 diff --git a/RaspberryPi_JetsonNano/python/examples/epd_2in66b_test.py b/RaspberryPi_JetsonNano/python/examples/epd_2in66b_test.py index 4f4c628..8553ddd 100644 --- a/RaspberryPi_JetsonNano/python/examples/epd_2in66b_test.py +++ b/RaspberryPi_JetsonNano/python/examples/epd_2in66b_test.py @@ -33,7 +33,7 @@ try: drawblack = ImageDraw.Draw(HBlackimage) drawry = ImageDraw.Draw(HRYimage) drawblack.text((10, 0), 'hello world', font = font24, fill = 0) - drawblack.text((10, 20), '2.9inch e-Paper bc', font = font24, fill = 0) + drawblack.text((10, 20), '2.66inch e-Paper b', font = font24, fill = 0) drawblack.text((150, 0), u'寰洩鐢靛瓙', font = font24, fill = 0) drawblack.line((20, 50, 70, 100), fill = 0) drawblack.line((70, 50, 20, 100), fill = 0) diff --git a/RaspberryPi_JetsonNano/python/examples/epd_2in7b_V2_test.py b/RaspberryPi_JetsonNano/python/examples/epd_2in7b_V2_test.py index 7667a46..a9bb0e7 100644 --- a/RaspberryPi_JetsonNano/python/examples/epd_2in7b_V2_test.py +++ b/RaspberryPi_JetsonNano/python/examples/epd_2in7b_V2_test.py @@ -19,82 +19,82 @@ try: logging.info("epd2in7b_V2 Demo") epd = epd2in7b_V2.EPD() - - logging.info("init and Clear") - epd.init() - epd.Clear() - time.sleep(1) + while(1) : + logging.info("init and Clear") + epd.init() + epd.Clear() + time.sleep(1) + + # Drawing on the image + logging.info("Drawing") + blackimage = Image.new('1', (epd.width, epd.height), 255) # 255: clear the frame + redimage = Image.new('1', (epd.width, epd.height), 255) # 255: clear the frame + + font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24) + font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18) + + # Drawing on the Horizontal image + logging.info("1.Drawing on the Horizontal image...") + HBlackimage = Image.new('1', (epd.height, epd.width), 255) # 298*126 + HRedimage = Image.new('1', (epd.height, epd.width), 255) # 298*126 + drawblack = ImageDraw.Draw(HBlackimage) + drawred = ImageDraw.Draw(HRedimage) + drawblack.text((10, 0), 'hello world', font = font24, fill = 0) + drawblack.text((10, 20), '2.7inch e-Paper', font = font24, fill = 0) + drawblack.text((150, 0), u'寰洩鐢靛瓙', font = font24, fill = 0) + drawblack.line((20, 50, 70, 100), fill = 0) + drawblack.line((70, 50, 20, 100), fill = 0) + drawblack.rectangle((20, 50, 70, 100), outline = 0) + drawred.line((165, 50, 165, 100), fill = 0) + drawred.line((140, 75, 190, 75), fill = 0) + drawred.arc((140, 50, 190, 100), 0, 360, fill = 0) + drawred.rectangle((80, 50, 130, 100), fill = 0) + drawred.chord((200, 50, 250, 100), 0, 360, fill = 0) + epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRedimage)) + time.sleep(20) + + # Drawing on the Vertical image + logging.info("2.Drawing on the Vertical image...") + LBlackimage = Image.new('1', (epd.width, epd.height), 255) # 126*298 + LRedimage = Image.new('1', (epd.width, epd.height), 255) # 126*298 + drawblack = ImageDraw.Draw(LBlackimage) + drawred = ImageDraw.Draw(LRedimage) + + drawblack.text((2, 0), 'hello world', font = font18, fill = 0) + drawblack.text((2, 20), '2.9inch epd', font = font18, fill = 0) + drawblack.text((20, 50), u'寰洩鐢靛瓙', font = font18, fill = 0) + drawblack.line((10, 90, 60, 140), fill = 0) + drawblack.line((60, 90, 10, 140), fill = 0) + drawblack.rectangle((10, 90, 60, 140), outline = 0) + drawred.line((95, 90, 95, 140), fill = 0) + drawred.line((70, 115, 120, 115), fill = 0) + drawred.arc((70, 90, 120, 140), 0, 360, fill = 0) + drawred.rectangle((10, 150, 60, 200), fill = 0) + drawred.chord((70, 150, 120, 200), 0, 360, fill = 0) + epd.display(epd.getbuffer(LBlackimage), epd.getbuffer(LRedimage)) + time.sleep(2) + + logging.info("3.read bmp file") + HBlackimage = Image.open(os.path.join(picdir, '2in7b-b.bmp')) + HRedimage = Image.open(os.path.join(picdir, '2in7b-r.bmp')) + epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRedimage)) + time.sleep(2) + + logging.info("4.read bmp file on window") + blackimage1 = Image.new('1', (epd.height, epd.width), 255) # 298*126 + redimage1 = Image.new('1', (epd.height, epd.width), 255) # 298*126 + newimage = Image.open(os.path.join(picdir, '100x100.bmp')) + blackimage1.paste(newimage, (50,10)) + epd.display(epd.getbuffer(blackimage1), epd.getbuffer(redimage1)) + + logging.info("Clear...") + epd.init() + epd.Clear() + + logging.info("Goto Sleep...") + epd.sleep() - # Drawing on the image - logging.info("Drawing") - blackimage = Image.new('1', (epd.width, epd.height), 255) # 255: clear the frame - redimage = Image.new('1', (epd.width, epd.height), 255) # 255: clear the frame - - font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24) - font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18) - - # Drawing on the Horizontal image - logging.info("1.Drawing on the Horizontal image...") - HBlackimage = Image.new('1', (epd.height, epd.width), 255) # 298*126 - HRedimage = Image.new('1', (epd.height, epd.width), 255) # 298*126 - drawblack = ImageDraw.Draw(HBlackimage) - drawred = ImageDraw.Draw(HRedimage) - drawblack.text((10, 0), 'hello world', font = font24, fill = 0) - drawblack.text((10, 20), '2.7inch e-Paper', font = font24, fill = 0) - drawblack.text((150, 0), u'寰洩鐢靛瓙', font = font24, fill = 0) - drawblack.line((20, 50, 70, 100), fill = 0) - drawblack.line((70, 50, 20, 100), fill = 0) - drawblack.rectangle((20, 50, 70, 100), outline = 0) - drawred.line((165, 50, 165, 100), fill = 0) - drawred.line((140, 75, 190, 75), fill = 0) - drawred.arc((140, 50, 190, 100), 0, 360, fill = 0) - drawred.rectangle((80, 50, 130, 100), fill = 0) - drawred.chord((200, 50, 250, 100), 0, 360, fill = 0) - epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRedimage)) - time.sleep(20) - - # Drawing on the Vertical image - logging.info("2.Drawing on the Vertical image...") - LBlackimage = Image.new('1', (epd.width, epd.height), 255) # 126*298 - LRedimage = Image.new('1', (epd.width, epd.height), 255) # 126*298 - drawblack = ImageDraw.Draw(LBlackimage) - drawred = ImageDraw.Draw(LRedimage) - - drawblack.text((2, 0), 'hello world', font = font18, fill = 0) - drawblack.text((2, 20), '2.9inch epd', font = font18, fill = 0) - drawblack.text((20, 50), u'寰洩鐢靛瓙', font = font18, fill = 0) - drawblack.line((10, 90, 60, 140), fill = 0) - drawblack.line((60, 90, 10, 140), fill = 0) - drawblack.rectangle((10, 90, 60, 140), outline = 0) - drawred.line((95, 90, 95, 140), fill = 0) - drawred.line((70, 115, 120, 115), fill = 0) - drawred.arc((70, 90, 120, 140), 0, 360, fill = 0) - drawred.rectangle((10, 150, 60, 200), fill = 0) - drawred.chord((70, 150, 120, 200), 0, 360, fill = 0) - epd.display(epd.getbuffer(LBlackimage), epd.getbuffer(LRedimage)) - time.sleep(2) - - logging.info("3.read bmp file") - HBlackimage = Image.open(os.path.join(picdir, '2in7b-b.bmp')) - HRedimage = Image.open(os.path.join(picdir, '2in7b-r.bmp')) - epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRedimage)) - time.sleep(2) - - logging.info("4.read bmp file on window") - blackimage1 = Image.new('1', (epd.height, epd.width), 255) # 298*126 - redimage1 = Image.new('1', (epd.height, epd.width), 255) # 298*126 - newimage = Image.open(os.path.join(picdir, '100x100.bmp')) - blackimage1.paste(newimage, (50,10)) - epd.display(epd.getbuffer(blackimage1), epd.getbuffer(redimage1)) - - logging.info("Clear...") - epd.init() - epd.Clear() - - logging.info("Goto Sleep...") - epd.sleep() - - time.sleep(3) + time.sleep(30) epd.Dev_exit() except IOError as e: diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd1in54_V2.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd1in54_V2.py index 437dc25..9045db6 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd1in54_V2.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd1in54_V2.py @@ -67,21 +67,19 @@ class EPD: def ReadBusy(self): logging.debug("e-Paper busy") while(epdconfig.digital_read(self.busy_pin) == 1): - epdconfig.delay_ms(100) + epdconfig.delay_ms(20) logging.debug("e-Paper busy release") def TurnOnDisplay(self): self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2 self.send_data(0xF7) self.send_command(0x20) # MASTER_ACTIVATION - self.ReadBusy() def TurnOnDisplayPart(self): self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2 self.send_data(0xFF) self.send_command(0x20) # MASTER_ACTIVATION - self.ReadBusy() def init(self): diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9_V2.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9_V2.py index 48f014b..3ac5bf9 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9_V2.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9_V2.py @@ -43,6 +43,28 @@ class EPD: self.width = EPD_WIDTH self.height = EPD_HEIGHT + WF_PARTIAL_2IN9 = [ + 0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0A,0x0,0x0,0x0,0x0,0x0,0x2, + 0x1,0x0,0x0,0x0,0x0,0x0,0x0, + 0x1,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, + 0x22,0x17,0x41,0xB0,0x32,0x36, + ] + # Hardware reset def reset(self): epdconfig.digital_write(self.reset_pin, 1) @@ -78,10 +100,16 @@ class EPD: def TurnOnDisplay_Partial(self): self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2 - self.send_data(0xFF) + self.send_data(0x0F) self.send_command(0x20) # MASTER_ACTIVATION self.ReadBusy() + def SendLut(self): + self.send_command(0x32) + for i in range(0, 153): + self.send_data(self.WF_PARTIAL_2IN9[i]) + self.ReadBusy() + def SetWindow(self, x_start, y_start, x_end, y_end): self.send_command(0x44) # SET_RAM_X_ADDRESS_START_END_POSITION # x point must be the multiple of 8 or the last 3 bits will be ignored @@ -106,9 +134,9 @@ class EPD: def init(self): if (epdconfig.module_init() != 0): return -1 - # EPD hardware init start + # EPD hardware init start self.reset() - + self.ReadBusy(); self.send_command(0x12); #SWRESET self.ReadBusy(); @@ -117,22 +145,16 @@ class EPD: self.send_data(0x27); self.send_data(0x01); self.send_data(0x00); - + self.send_command(0x11); #data entry mode self.send_data(0x03); self.SetWindow(0, 0, self.width-1, self.height-1); - self.send_command(0x3C); #BorderWavefrom - self.send_data(0x05); - self.send_command(0x21); # Display update control - self.send_data(0x00); - self.send_data(0x80); - - self.send_command(0x18); #Read built-in temperature sensor + self.send_data(0x00); self.send_data(0x80); - + self.SetCursor(0, 0); self.ReadBusy(); # EPD hardware init end @@ -195,12 +217,31 @@ class EPD: epdconfig.delay_ms(5) epdconfig.digital_write(self.reset_pin, 1) epdconfig.delay_ms(10) + + self.SendLut(); + self.send_command(0x37); + self.send_data(0x00); + self.send_data(0x00); + self.send_data(0x00); + self.send_data(0x00); + self.send_data(0x00); + self.send_data(0x40); + self.send_data(0x00); + self.send_data(0x00); + self.send_data(0x00); + self.send_data(0x00); self.send_command(0x3C); #BorderWavefrom self.send_data(0x80); - + + self.send_command(0x22); + self.send_data(0xC0); + self.send_command(0x20); + self.ReadBusy(); + self.SetWindow(0, 0, self.width - 1, self.height - 1) self.SetCursor(0, 0) + self.send_command(0x24) # WRITE_RAM for j in range(0, self.height): for i in range(0, int(self.width / 8)): diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd4in01f.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd4in01f.py index 8449d79..03fbe03 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd4in01f.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd4in01f.py @@ -56,9 +56,9 @@ class EPD: # Hardware reset def reset(self): epdconfig.digital_write(self.reset_pin, 1) - epdconfig.delay_ms(200) + epdconfig.delay_ms(200) epdconfig.digital_write(self.reset_pin, 0) - epdconfig.delay_ms(2) + epdconfig.delay_ms(1) epdconfig.digital_write(self.reset_pin, 1) epdconfig.delay_ms(200) @@ -77,13 +77,13 @@ class EPD: def ReadBusyHigh(self): logging.debug("e-Paper busy") while(epdconfig.digital_read(self.busy_pin) == 0): # 0: idle, 1: busy - epdconfig.delay_ms(100) + epdconfig.delay_ms(10) logging.debug("e-Paper busy release") def ReadBusyLow(self): logging.debug("e-Paper busy") while(epdconfig.digital_read(self.busy_pin) == 1): # 0: idle, 1: busy - epdconfig.delay_ms(100) + epdconfig.delay_ms(10) logging.debug("e-Paper busy release") def init(self): @@ -196,7 +196,7 @@ class EPD: self.ReadBusyHigh() self.send_command(0x02) #0x02 self.ReadBusyLow() - epdconfig.delay_ms(500) + # epdconfig.delay_ms(500) def Clear(self): self.send_command(0x61)#Set Resolution setting @@ -222,10 +222,10 @@ class EPD: self.ReadBusyHigh() self.send_command(0x02) #0x02 self.ReadBusyLow() - epdconfig.delay_ms(500) + # epdconfig.delay_ms(500) def sleep(self): - epdconfig.delay_ms(500) + # epdconfig.delay_ms(500) self.send_command(0x07) # DEEP_SLEEP self.send_data(0XA5) diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong index eacfe0a..c0e8c1e 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong @@ -102,8 +102,8 @@ 145 - 570 - 2258 + 3286 + 4974 1310 @@ -111,7 +111,7 @@ 0 251 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000037453A5C70726F6A6563745C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000005E03000000010000CA080000C2030000 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000037453A5C70726F6A6563745C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000FA0D00000001000066130000C2030000 @@ -134,7 +134,7 @@ 16 - 8603000000010000B2090000C6010000 + 220E0000000100004E140000C6010000 @@ -1799,14 +1799,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF4401000016010000700700001A010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000008603000000010000B2090000C6010000440100005000000070070000160100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600005000000030060000FE020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000007208000000010000B2090000AE030000300600005000000070070000FE02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF18010000500000001C0100001203000001000000020000100400000001000000C2FEFFFFB5030000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000042020000000100005A030000C2030000000000005000000018010000120300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000E402000070070000E802000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000004202000098030000B20900007804000000000000E802000070070000C803000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000E8020000BC030000C803000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000012030000880600001603000001000000010000100400000001000000DDFBFFFFC4000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000042020000C6030000CA08000000050000000000001603000088060000500400000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF4401000016010000700700001A010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000220E0000000100004E140000C6010000440100005000000070070000160100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600005000000030060000FE020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000000E130000000100004E140000AE030000300600005000000070070000FE02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF18010000500000001C0100001203000001000000020000100400000001000000C2FEFFFFB5030000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000DE0C000000010000F60D0000C2030000000000005000000018010000120300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000E402000070070000E802000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000DE0C0000980300004E1400007804000000000000E802000070070000C803000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000E8020000BC030000C803000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000012030000880600001603000001000000010000100400000001000000DDFBFFFFC4000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000DE0C0000C60300006613000000050000000000001603000088060000500400000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File 2852 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D67756C496D6742756641646472960000000000000012000D67756C496D67427566416464720B4954383935315F3842505008486F7374496E69740A67704672616D654275660554427974650A4550445F35494E3635460C4550445F32696E37625F5632094550445F32494E3742036C7574115049435F646973706C61795F436C65616E0B7069635F646973706C61790C4550445F696E69745F4F5450104550445F3132696E34385F5265736574144550445F4D314D325F53656E64436F6D6D616E64184550445F4D3153314D3253325F53656E64436F6D6D616E64094550445F52657365740943545F5344415F494E0D4550445F5732315F5253545F30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D67756C496D6742756641646472960000000000000012000D67756C496D67427566416464720B4954383935315F3842505008486F7374496E69740A67704672616D654275660554427974650A4550445F35494E3635460C4550445F32696E37625F5632094550445F32494E3742036C7574115049435F646973706C61795F436C65616E0B7069635F646973706C61790C4550445F696E69745F4F5450104550445F3132696E34385F5265736574144550445F4D314D325F53656E64436F6D6D616E64184550445F4D3153314D3253325F53656E64436F6D6D616E64094550445F52657365740943545F5344415F494E0D4550445F5732315F5253545F30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -3606,9 +3606,9 @@ 0 ../Src/main.c - 0 - 41 - 20 + 2 + 94 + 85 1 0 diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx index ead4f2b..822743d 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx @@ -1444,7 +1444,7 @@ Config - 0 + 1 0 0 0 diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm index a84df64..d86c326 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm @@ -54,7 +54,7 @@ Package Vendor: Keil

Collection of Component Files used:

* Component: ARM::CMSIS:CORE:5.2.0 -Build Time Elapsed: 00:00:03 +Build Time Elapsed: 00:00:02 diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm index 6990300..37119bd 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm @@ -3,7 +3,7 @@ Static Call Graph - [epd-demo\epd-demo.axf]

Static Call Graph for image epd-demo\epd-demo.axf


-

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Fri Dec 25 15:48:24 2020 +

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Tue Jan 26 14:34:13 2021

Maximum Stack Usage = 136 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map index 5fc0be1..afb3a0e 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map @@ -550,6 +550,7 @@ Section Cross References epd_2in9_v2.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin epd_2in9_v2.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay epd_2in9_v2.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte + epd_2in9_v2.o(.text) refers to epd_2in9_v2.o(.data) for .data epd_2in9bc.o(.text) refers to printf3.o(i.__0printf$3) for __2printf epd_2in9bc.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay epd_2in9bc.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin @@ -1280,7 +1281,7 @@ Removing Unused input sections from the image. Removing epd_2in9_v2.o(.rev16_text), (4 bytes). Removing epd_2in9_v2.o(.revsh_text), (4 bytes). Removing epd_2in9_v2.o(.rrx_text), (6 bytes). - Removing epd_2in9_v2.o(.text), (788 bytes). + Removing epd_2in9_v2.o(.text), (908 bytes). Removing epd_2in9_v2.o(.data), (159 bytes). Removing epd_2in9bc.o(.rev16_text), (4 bytes). Removing epd_2in9bc.o(.revsh_text), (4 bytes). @@ -1388,7 +1389,7 @@ Removing Unused input sections from the image. Removing epd_7in5b_v2.o(.rev16_text), (4 bytes). Removing epd_7in5b_v2.o(.revsh_text), (4 bytes). Removing epd_7in5b_v2.o(.rrx_text), (6 bytes). - Removing epd_7in5b_v2.o(.text), (892 bytes). + Removing epd_7in5b_v2.o(.text), (880 bytes). Removing epd_7in5b_hd.o(.rev16_text), (4 bytes). Removing epd_7in5b_hd.o(.revsh_text), (4 bytes). Removing epd_7in5b_hd.o(.rrx_text), (6 bytes). @@ -1424,7 +1425,7 @@ Removing Unused input sections from the image. Removing cdrcmple.o(.text), (48 bytes). Removing depilogue.o(.text), (186 bytes). -450 unused section(s) (total 963099 bytes) removed from the image. +450 unused section(s) (total 963207 bytes) removed from the image. ============================================================================== diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in9_V2.c b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in9_V2.c index 98511a0..5305494 100644 --- a/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in9_V2.c +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in9_V2.c @@ -111,6 +111,15 @@ void EPD_2IN9_V2_ReadBusy(void) Debug("e-Paper busy release\r\n"); } +static void EPD_2IN9_V2_LUT(void) +{ + UBYTE count; + EPD_2IN9_V2_SendCommand(0x32); + for(count=0; count<153; count++) + EPD_2IN9_V2_SendData(_WF_PARTIAL_2IN9[count]); + EPD_2IN9_V2_ReadBusy(); +} + /****************************************************************************** function : Turn On Display parameter: @@ -126,7 +135,7 @@ static void EPD_2IN9_V2_TurnOnDisplay(void) static void EPD_2IN9_V2_TurnOnDisplay_Partial(void) { EPD_2IN9_V2_SendCommand(0x22); //Display Update Control - EPD_2IN9_V2_SendData(0xFF); + EPD_2IN9_V2_SendData(0x0F); EPD_2IN9_V2_SendCommand(0x20); //Activate Display Update Sequence EPD_2IN9_V2_ReadBusy(); } @@ -256,8 +265,26 @@ void EPD_2IN9_V2_Display_Partial(UBYTE *Image) DEV_Digital_Write(EPD_RST_PIN, 1); DEV_Delay_ms(10); + EPD_2IN9_V2_LUT(); + EPD_2IN9_V2_SendCommand(0x37); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x40); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendData(0x00); + EPD_2IN9_V2_SendCommand(0x3C); //BorderWavefrom EPD_2IN9_V2_SendData(0x80); + + EPD_2IN9_V2_SendCommand(0x22); + EPD_2IN9_V2_SendData(0xC0); + EPD_2IN9_V2_SendCommand(0x20); + EPD_2IN9_V2_ReadBusy(); EPD_2IN9_V2_SetWindows(0, 0, EPD_2IN9_V2_WIDTH-1, EPD_2IN9_V2_HEIGHT-1); EPD_2IN9_V2_SetCursor(0, 0); diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_7in5b_V2.c b/STM32/STM32-F103ZET6/User/e-Paper/EPD_7in5b_V2.c index d6e6472..21e2b24 100644 --- a/STM32/STM32-F103ZET6/User/e-Paper/EPD_7in5b_V2.c +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_7in5b_V2.c @@ -225,14 +225,13 @@ void EPD_7IN5B_V2_Display(const UBYTE *blackimage, const UBYTE *ryimage) Width =(EPD_7IN5B_V2_WIDTH % 8 == 0)?(EPD_7IN5B_V2_WIDTH / 8 ):(EPD_7IN5B_V2_WIDTH / 8 + 1); Height = EPD_7IN5B_V2_HEIGHT; - //send black data + //send black data EPD_7IN5B_V2_SendCommand(0x10); for (UDOUBLE j = 0; j < Height; j++) { for (UDOUBLE i = 0; i < Width; i++) { EPD_7IN5B_V2_SendData(blackimage[i + j * Width]); } } - EPD_7IN5B_V2_SendCommand(0x92); //send red data EPD_7IN5B_V2_SendCommand(0x13); @@ -255,8 +254,7 @@ void EPD_7IN5B_V2_WritePicture(const UBYTE *blackimage, UBYTE Block) if(Block == 0){ EPD_7IN5B_V2_SendCommand(0x10); }else if(Block == 2){ - EPD_7IN5B_V2_SendCommand(0x92); - EPD_7IN5B_V2_SendCommand(0x13); + EPD_7IN5B_V2_SendCommand(0x13); } for (UDOUBLE j = 0; j < Height/2; j++) { for (UDOUBLE i = 0; i < Width; i++) { diff --git a/Version_CN.txt b/Version_CN.txt index dcf496a..473487d 100644 --- a/Version_CN.txt +++ b/Version_CN.txt @@ -21,4 +21,5 @@ 2020-12-02锛氭坊鍔犳柊绋嬪簭2.66inch B e-Paper渚嬬▼銆 2020-12-03锛2.9inch B V2 e-Paper 鏀瑰悕涓 2.9inch B V3 e-Paper銆 2020-12-09锛氭坊鍔犳柊绋嬪簭2.9inch V2 e-Paper渚嬬▼銆 -2020-12-09锛氭坊鍔犳柊绋嬪簭5.83inch V2 e-Paper渚嬬▼銆 \ No newline at end of file +2020-12-09锛氭坊鍔犳柊绋嬪簭5.83inch V2 e-Paper渚嬬▼銆 +2020-12-25锛氭坊鍔犳柊绋嬪簭4.01inch (F) e-Paper渚嬬▼銆 \ No newline at end of file diff --git a/Version_EN.txt b/Version_EN.txt index a18f7c4..1c431bb 100644 --- a/Version_EN.txt +++ b/Version_EN.txt @@ -20,4 +20,5 @@ 2020-12-02: Added new program 2.66inch e-Paper routine. 2020-12-03: 2.9inch B V2 e-Paper was renamed 2.9inch B V3 e-Paper. 2020-12-09: Added new program 2.9inch V2 e-Paper routine. -2020-12-09: Added new program 5.83inch V2 e-Paper routine. \ No newline at end of file +2020-12-09: Added new program 5.83inch V2 e-Paper routine. +2020-12-25: Added new program 4.01inch (F) e-Paper routine. \ No newline at end of file From e673dfa90475aaef221955caf962b41234394fa3 Mon Sep 17 00:00:00 2001 From: SSYYL <1032789891@qq.com> Date: Tue, 26 Jan 2021 14:35:45 +0800 Subject: [PATCH 2/2] fix bug --- .../c/examples/EPD_2in9_V2_test.c | 2 +- .../python/examples/epd_2in7b_V2_test.py | 149 +++++++++--------- 2 files changed, 75 insertions(+), 76 deletions(-) diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in9_V2_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in9_V2_test.c index 8e72e18..1e523dc 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in9_V2_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in9_V2_test.c @@ -33,7 +33,7 @@ int EPD_2in9_V2_test(void) { - printf("_EPD_2IN9_V2_test Demo\r\n"); + printf("EPD_2IN9_V2_test Demo\r\n"); if(DEV_Module_Init()!=0){ return -1; } diff --git a/RaspberryPi_JetsonNano/python/examples/epd_2in7b_V2_test.py b/RaspberryPi_JetsonNano/python/examples/epd_2in7b_V2_test.py index a9bb0e7..6c844ad 100644 --- a/RaspberryPi_JetsonNano/python/examples/epd_2in7b_V2_test.py +++ b/RaspberryPi_JetsonNano/python/examples/epd_2in7b_V2_test.py @@ -19,82 +19,81 @@ try: logging.info("epd2in7b_V2 Demo") epd = epd2in7b_V2.EPD() - while(1) : - logging.info("init and Clear") - epd.init() - epd.Clear() - time.sleep(1) - - # Drawing on the image - logging.info("Drawing") - blackimage = Image.new('1', (epd.width, epd.height), 255) # 255: clear the frame - redimage = Image.new('1', (epd.width, epd.height), 255) # 255: clear the frame - - font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24) - font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18) - - # Drawing on the Horizontal image - logging.info("1.Drawing on the Horizontal image...") - HBlackimage = Image.new('1', (epd.height, epd.width), 255) # 298*126 - HRedimage = Image.new('1', (epd.height, epd.width), 255) # 298*126 - drawblack = ImageDraw.Draw(HBlackimage) - drawred = ImageDraw.Draw(HRedimage) - drawblack.text((10, 0), 'hello world', font = font24, fill = 0) - drawblack.text((10, 20), '2.7inch e-Paper', font = font24, fill = 0) - drawblack.text((150, 0), u'寰洩鐢靛瓙', font = font24, fill = 0) - drawblack.line((20, 50, 70, 100), fill = 0) - drawblack.line((70, 50, 20, 100), fill = 0) - drawblack.rectangle((20, 50, 70, 100), outline = 0) - drawred.line((165, 50, 165, 100), fill = 0) - drawred.line((140, 75, 190, 75), fill = 0) - drawred.arc((140, 50, 190, 100), 0, 360, fill = 0) - drawred.rectangle((80, 50, 130, 100), fill = 0) - drawred.chord((200, 50, 250, 100), 0, 360, fill = 0) - epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRedimage)) - time.sleep(20) - - # Drawing on the Vertical image - logging.info("2.Drawing on the Vertical image...") - LBlackimage = Image.new('1', (epd.width, epd.height), 255) # 126*298 - LRedimage = Image.new('1', (epd.width, epd.height), 255) # 126*298 - drawblack = ImageDraw.Draw(LBlackimage) - drawred = ImageDraw.Draw(LRedimage) - - drawblack.text((2, 0), 'hello world', font = font18, fill = 0) - drawblack.text((2, 20), '2.9inch epd', font = font18, fill = 0) - drawblack.text((20, 50), u'寰洩鐢靛瓙', font = font18, fill = 0) - drawblack.line((10, 90, 60, 140), fill = 0) - drawblack.line((60, 90, 10, 140), fill = 0) - drawblack.rectangle((10, 90, 60, 140), outline = 0) - drawred.line((95, 90, 95, 140), fill = 0) - drawred.line((70, 115, 120, 115), fill = 0) - drawred.arc((70, 90, 120, 140), 0, 360, fill = 0) - drawred.rectangle((10, 150, 60, 200), fill = 0) - drawred.chord((70, 150, 120, 200), 0, 360, fill = 0) - epd.display(epd.getbuffer(LBlackimage), epd.getbuffer(LRedimage)) - time.sleep(2) - - logging.info("3.read bmp file") - HBlackimage = Image.open(os.path.join(picdir, '2in7b-b.bmp')) - HRedimage = Image.open(os.path.join(picdir, '2in7b-r.bmp')) - epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRedimage)) - time.sleep(2) - - logging.info("4.read bmp file on window") - blackimage1 = Image.new('1', (epd.height, epd.width), 255) # 298*126 - redimage1 = Image.new('1', (epd.height, epd.width), 255) # 298*126 - newimage = Image.open(os.path.join(picdir, '100x100.bmp')) - blackimage1.paste(newimage, (50,10)) - epd.display(epd.getbuffer(blackimage1), epd.getbuffer(redimage1)) - - logging.info("Clear...") - epd.init() - epd.Clear() - - logging.info("Goto Sleep...") - epd.sleep() + logging.info("init and Clear") + epd.init() + epd.Clear() + time.sleep(1) - time.sleep(30) + # Drawing on the image + logging.info("Drawing") + blackimage = Image.new('1', (epd.width, epd.height), 255) # 255: clear the frame + redimage = Image.new('1', (epd.width, epd.height), 255) # 255: clear the frame + + font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24) + font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18) + + # Drawing on the Horizontal image + logging.info("1.Drawing on the Horizontal image...") + HBlackimage = Image.new('1', (epd.height, epd.width), 255) # 298*126 + HRedimage = Image.new('1', (epd.height, epd.width), 255) # 298*126 + drawblack = ImageDraw.Draw(HBlackimage) + drawred = ImageDraw.Draw(HRedimage) + drawblack.text((10, 0), 'hello world', font = font24, fill = 0) + drawblack.text((10, 20), '2.7inch e-Paper', font = font24, fill = 0) + drawblack.text((150, 0), u'寰洩鐢靛瓙', font = font24, fill = 0) + drawblack.line((20, 50, 70, 100), fill = 0) + drawblack.line((70, 50, 20, 100), fill = 0) + drawblack.rectangle((20, 50, 70, 100), outline = 0) + drawred.line((165, 50, 165, 100), fill = 0) + drawred.line((140, 75, 190, 75), fill = 0) + drawred.arc((140, 50, 190, 100), 0, 360, fill = 0) + drawred.rectangle((80, 50, 130, 100), fill = 0) + drawred.chord((200, 50, 250, 100), 0, 360, fill = 0) + epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRedimage)) + time.sleep(20) + + # Drawing on the Vertical image + logging.info("2.Drawing on the Vertical image...") + LBlackimage = Image.new('1', (epd.width, epd.height), 255) # 126*298 + LRedimage = Image.new('1', (epd.width, epd.height), 255) # 126*298 + drawblack = ImageDraw.Draw(LBlackimage) + drawred = ImageDraw.Draw(LRedimage) + + drawblack.text((2, 0), 'hello world', font = font18, fill = 0) + drawblack.text((2, 20), '2.9inch epd', font = font18, fill = 0) + drawblack.text((20, 50), u'寰洩鐢靛瓙', font = font18, fill = 0) + drawblack.line((10, 90, 60, 140), fill = 0) + drawblack.line((60, 90, 10, 140), fill = 0) + drawblack.rectangle((10, 90, 60, 140), outline = 0) + drawred.line((95, 90, 95, 140), fill = 0) + drawred.line((70, 115, 120, 115), fill = 0) + drawred.arc((70, 90, 120, 140), 0, 360, fill = 0) + drawred.rectangle((10, 150, 60, 200), fill = 0) + drawred.chord((70, 150, 120, 200), 0, 360, fill = 0) + epd.display(epd.getbuffer(LBlackimage), epd.getbuffer(LRedimage)) + time.sleep(2) + + logging.info("3.read bmp file") + HBlackimage = Image.open(os.path.join(picdir, '2in7b-b.bmp')) + HRedimage = Image.open(os.path.join(picdir, '2in7b-r.bmp')) + epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRedimage)) + time.sleep(2) + + logging.info("4.read bmp file on window") + blackimage1 = Image.new('1', (epd.height, epd.width), 255) # 298*126 + redimage1 = Image.new('1', (epd.height, epd.width), 255) # 298*126 + newimage = Image.open(os.path.join(picdir, '100x100.bmp')) + blackimage1.paste(newimage, (50,10)) + epd.display(epd.getbuffer(blackimage1), epd.getbuffer(redimage1)) + + logging.info("Clear...") + epd.init() + epd.Clear() + + logging.info("Goto Sleep...") + epd.sleep() + + time.sleep(3) epd.Dev_exit() except IOError as e: