zoukankan      html  css  js  c++  java
  • STM32 + RT Thread OS 学习笔记[三]

    RTGUI

    据说RTGUI是多线程的,因此与RT-Thread OS的耦合度较高,有可能要访问RT-Thread的线程控制块。如果要移植到其它OS,估计难度较大。目前还处于Alpha状态,最终将会包含进RT-Thread中,成为其中的标准组件。

    1、  RTGUI下载

    当前,要获取包含RTGUI的源码,需要到SVN库里去拉。

    因此,需要先安装SVN客户端。比较简单的就是命令行,当然你也可以其它选择。

    这里使用Apache Subversion command line tools,下载地址:http://www.visualsvn.com/downloads/

     

    下载文件是一个压缩包,解压到任意目录即可。

    RT-Thread SVN源码浏览

    打开cmd窗口,进入上面解压缩目录,运行下面的命令:

    svn checkout http://rt-thread.googlecode.com/svn/tags/rtt_1_1_1mcu tt111

    这样就把rtt_1_1_1这个版本下载到根目录下的 mcu tt111中。

     


    注1:由于众所周知的原因,从googlecode下载有点困难,建议使用VPN等方式。

    注2:下载的bsp目录,实际只需要simulator(模拟器)和stm32f10x(奋斗板V3对应),其它的都可以删除或转移到其它目录。

    2、  项目生成

    与之前一样,修改rtconfig.h,打开RT_USING_RTGUI选项;

     

    运行命令:scons –target=mdk4 –s

    打开生成的项目文件,可以看到已经包含了RTGUI。

    3、  LCD驱动(SSD1963)

    a)      这是重新下载的源码,所以对LED的定义,还需要按之前章节所述,修改相应代码。

    b)      编译

    在驱动未完成前,examples和calibration.c(由文件名看应该是触摸屏校准程序)都可以不要。从项目中移除(remove)组gui_examples以及文件calibration.c,重新编译,成功。

    c)      驱动代码

    默认状态下,包含了ssd1289这个驱动文件,我们要参照它来写一个ssd1963的驱动。

    代码:

    ssd1963.c

    #include <rtthread.h>
    #include "stm32f10x.h"
     
    // 分辨率(H:0-479 V:0-271)
    unsigned int  HDP=479;
    unsigned int  VDP=271;
     
    unsigned int  HT=531;
    unsigned int  HPS=43;
    unsigned int  LPS=8;
    unsigned char HPW=1;
     
    unsigned int  VT=288;
    unsigned int  VPS=12;
    unsigned int  FPS=4;
    unsigned char VPW=10;
     
    #define Bank1_LCD_D    ((uint32_t)0x60020000)    //disp Data ram
    #define Bank1_LCD_C    ((uint32_t)0x60000000)     //disp Reg ram
     
    void Delay(__IO uint32_t nCount)
    {
      for(; nCount != 0; nCount--);
    }
     
    void LCD_WR_REG(u16 index)
    {
    *(__IO uint16_t *) (Bank1_LCD_C)= index;
    }
     
    u16 LCD_RD_DAT(void)
    {
    u16 a=0;
    a=*(__IO uint16_t *) (Bank1_LCD_D);
    return(a);
    }
     
    void LCD_WR_DAT(u16 val)
    {  
    *(__IO uint16_t *) (Bank1_LCD_D)= val;      
    }
     
    void _set_window(u16 x1, u16 y1, u16 x2, u16 y2)
    {
    LCD_WR_REG(0x002A);
             LCD_WR_DAT(x1>>8);      
             LCD_WR_DAT(x1&0x00ff);
             LCD_WR_DAT(x2>>8);
             LCD_WR_DAT(x2&0x00ff);
             LCD_WR_REG(0x002b);
             LCD_WR_DAT(y1>>8);
             LCD_WR_DAT(y1&0x00ff);
             LCD_WR_DAT(y2>>8);
             LCD_WR_DAT(y2&0x00ff);
    }
     
    void _set_cursor(u16 x,u16 y)
    {
    _set_window(x, y, HDP, VDP);
    }
     
    void lcd_set_pixel(const char* pixel, int x, int y)
    {
    _set_cursor(x, y);
    LCD_WR_REG(0x2c);
    LCD_WR_DAT(*(rt_uint16_t*)pixel);
    }
     
    void lcd_get_pixel(char* pixel, int x, int y)
    {
    _set_cursor(x, y);
    LCD_WR_REG(0x2e);
    *(rt_uint16_t*)pixel = LCD_RD_DAT();
    }
     
    void lcd_draw_hline(const char* pixel, int x1, int x2, int y)
    {
    _set_cursor(x1, y);
    LCD_WR_REG(0x2c);
        while (x1 < x2)
        {
            LCD_WR_DAT(*(rt_uint16_t*)pixel);
            x1++;
        }
    }
     
    void lcd_draw_vline(const char* pixel, int x, int y1, int y2)
    {
    _set_window(x, y1, x, y2);
    LCD_WR_REG(0x2c);
        while (y1 < y2)
        {
            LCD_WR_DAT(*(rt_uint16_t*)pixel);
            y1++;
        }
    }
     
    void lcd_blit_line(const char* pixels, int x, int y, rt_size_t size)
    {
    rt_uint16_t *ptr;
    ptr = (rt_uint16_t*)pixels;
     
    _set_cursor(x, y);
    LCD_WR_REG(0x2c);
        while (size)
        {
            LCD_WR_DAT(*ptr ++);
               size --;
        }
    }
     
    void lcd_clear()
    {                   
        int w = HDP + 1, h = VDP + 1;
    _set_cursor(0, 0);
    LCD_WR_REG(0x2c);
        while (w--)
        {
            while(h--)
            {
                LCD_WR_DAT(0xffff);
            }
               h = VDP + 1;
        }
    }
     
    void LCD_INIT(void)
    {
    GPIO_ResetBits(GPIOE, GPIO_Pin_1);
        Delay(0xAFFFF);                                         
        GPIO_SetBits(GPIOE, GPIO_Pin_1 );                          
    Delay(0xAFFFF);
     
        LCD_WR_REG(0x00E2);                 // PLL=10*36/3=120M
    LCD_WR_DAT(0x0023);          //N=0x36 for 6.5M, 0x23 for 10M crystal
    LCD_WR_DAT(0x0002);
    LCD_WR_DAT(0x0004);
    LCD_WR_REG(0x00E0);        
    LCD_WR_DAT(0x0001);
    Delay(0xAFFF);
    LCD_WR_REG(0x00E0);
    LCD_WR_DAT(0x0003);              
    Delay(0xAFFF);
    LCD_WR_REG(0x0001);      
    Delay(0xAFFF);
    LCD_WR_REG(0x00E6);              //PLL setting for PCLK, depends on resolution
    LCD_WR_DAT(0x0001);
    LCD_WR_DAT(0x0033);
    LCD_WR_DAT(0x0032);
     
    LCD_WR_REG(0x00B0);              //module
    LCD_WR_DAT(0x0000);
    LCD_WR_DAT(0x0000);
    LCD_WR_DAT((HDP>>8)&0X00FF);  //Set HDP
    LCD_WR_DAT(HDP&0X00FF);
        LCD_WR_DAT((VDP>>8)&0X00FF);  //Set VDP
    LCD_WR_DAT(VDP&0X00FF);
        LCD_WR_DAT(0x0000);
     
    LCD_WR_REG(0x00B4);      //HSYNC
    LCD_WR_DAT((HT>>8)&0X00FF);  //Set HT
    LCD_WR_DAT(HT&0X00FF);
    LCD_WR_DAT((HPS>>8)&0X00FF);  //Set HPS
    LCD_WR_DAT(HPS&0X00FF);
    LCD_WR_DAT(HPW);                       //Set HPW
    LCD_WR_DAT((LPS>>8)&0X00FF);  //Set HPS
    LCD_WR_DAT(LPS&0X00FF);
    LCD_WR_DAT(0x0000);
     
    LCD_WR_REG(0x00B6);      //VSYNC
    LCD_WR_DAT((VT>>8)&0X00FF);   //Set VT
    LCD_WR_DAT(VT&0X00FF);
    LCD_WR_DAT((VPS>>8)&0X00FF);  //Set VPS
    LCD_WR_DAT(VPS&0X00FF);
    LCD_WR_DAT(VPW);                       //Set VPW
    LCD_WR_DAT((FPS>>8)&0X00FF);  //Set FPS
    LCD_WR_DAT(FPS&0X00FF);
     
    LCD_WR_REG(0x00BA);
    LCD_WR_DAT(0x000F);    //GPIO[3:0] out 1
     
    LCD_WR_REG(0x00B8);
    LCD_WR_DAT(0x0007);    //GPIO3=input, GPIO[2:0]=output
    LCD_WR_DAT(0x0001);    //GPIO0 normal
     
    LCD_WR_REG(0x0036);            //rotation
    LCD_WR_DAT(0x0000);
     
    LCD_WR_REG(0x00F0);             //16位  565 color module
    LCD_WR_DAT(0x0003);
     
    Delay(0xAFFF);
     
    LCD_WR_REG(0x0029); //display on
     
    LCD_WR_REG(0x00BE); //set PWM for B/L
    LCD_WR_DAT(0x0006);
    LCD_WR_DAT(0x0080);
    LCD_WR_DAT(0x0001);
    LCD_WR_DAT(0x00f0);
    LCD_WR_DAT(0x0000);
    LCD_WR_DAT(0x0000);
     
    LCD_WR_REG(0x00d0);// backlight
    LCD_WR_DAT(0x000d);
    }
     
    void GPIO_INIT(void)
    {
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC
                                                           | RCC_APB2Periph_GPIOD| RCC_APB2Periph_GPIOE| RCC_APB2Periph_GPIOF , ENABLE);
    }
     
    void FSMC_LCD_Init(void)
    {
      FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
      FSMC_NORSRAMTimingInitTypeDef  p;
      GPIO_InitTypeDef  GPIO_InitStructure;
     
      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);       
     
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;                               
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                    
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                  
      GPIO_Init(GPIOD, &GPIO_InitStructure);   
      GPIO_SetBits(GPIOD, GPIO_Pin_13);                                  
     
     
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;               
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                   
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                  
      GPIO_Init(GPIOE, &GPIO_InitStructure); 
     
            
     
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |
                                    GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |
                                    GPIO_Pin_15;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;         
      GPIO_Init(GPIOD, &GPIO_InitStructure);
     
     
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
                                    GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
                                    GPIO_Pin_15;
      GPIO_Init(GPIOE, &GPIO_InitStructure);
     
     
     
     
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
      GPIO_Init(GPIOD, &GPIO_InitStructure);
     
     
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ;
      GPIO_Init(GPIOD, &GPIO_InitStructure);
     
      p.FSMC_AddressSetupTime = 0x02;
      p.FSMC_AddressHoldTime = 0x00;
      p.FSMC_DataSetupTime = 0x05;
      p.FSMC_BusTurnAroundDuration = 0x00;
      p.FSMC_CLKDivision = 0x00;
      p.FSMC_DataLatency = 0x00;
      p.FSMC_AccessMode = FSMC_AccessMode_B;
     
      FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
      FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
      FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;
      FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
      FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
      FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
      FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
      FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
      FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
      FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
      FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
      FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
      FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
      FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
      FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
     
      FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
     
     
      FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); 
    }
     
     
    struct rt_device_graphic_ops ssd1963_ops =
    {
    lcd_set_pixel,
    lcd_get_pixel,
    lcd_draw_hline,
    lcd_draw_vline,
    lcd_blit_line
    };
     
    struct rt_device _lcd_device;
    static rt_err_t lcd_init(rt_device_t dev)
    {
    return RT_EOK;
    }
     
    static rt_err_t lcd_open(rt_device_t dev, rt_uint16_t oflag)
    {
    return RT_EOK;
    }
     
    static rt_err_t lcd_close(rt_device_t dev)
    {
    return RT_EOK;
    }
     
    static rt_err_t lcd_control(rt_device_t dev, rt_uint8_t cmd, void *args)
    {
    switch (cmd)
    {
    case RTGRAPHIC_CTRL_GET_INFO:
               {
                        struct rt_device_graphic_info *info;
     
                        info = (struct rt_device_graphic_info*) args;
                        RT_ASSERT(info != RT_NULL);
     
                        info->bits_per_pixel = 16;
                        info->pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565P;
                        info->framebuffer = RT_NULL;
                        info->width = HDP + 1;
                        info->height = VDP + 1;
               }
               break;
     
    case RTGRAPHIC_CTRL_RECT_UPDATE:
               /* nothong to be done */
               break;
     
    default:
               break;
    }
     
    return RT_EOK;
    }
     
    void rt_hw_lcd_init(void)
    {
     
    /* register lcd device */
    _lcd_device.type  = RT_Device_Class_Graphic;
    _lcd_device.init  = lcd_init;
    _lcd_device.open  = lcd_open;
    _lcd_device.close = lcd_close;
    _lcd_device.control = lcd_control;
    _lcd_device.read  = RT_NULL;
    _lcd_device.write = RT_NULL;
     
    _lcd_device.user_data = &ssd1963_ops;
        GPIO_INIT();
        FSMC_LCD_Init();
        LCD_INIT();
        lcd_clear();
     
        /* register graphic device driver */
    rt_device_register(&_lcd_device, "lcd",
               RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STANDALONE);
    }

    这个文件中,直接被调用的只有一个函数:void rt_hw_lcd_init(void),执行完成后,在系统中注册了名为“lcd”的设备。

       _lcd_device.type  = RT_Device_Class_Graphic;
       _lcd_device.init  = lcd_init;
       _lcd_device.open  = lcd_open;
       _lcd_device.close = lcd_close;
       _lcd_device.control = lcd_control;
       _lcd_device.read  = RT_NULL;
       _lcd_device.write = RT_NULL;

    这些是一个标准设备必须的函数,作为LCD显示设备,这里只有control是有用的,其它实际上是个空函数。

    struct rt_device_graphic_ops ssd1963_ops =
    {
             lcd_set_pixel,
             lcd_get_pixel,
             lcd_draw_hline,
             lcd_draw_vline,
             lcd_blit_line
    };
     
    void rt_hw_lcd_init(void)
    {
     
             …………
     
             _lcd_device.user_data = &ssd1963_ops;
    …………
    

    与显示设备相关的,主要是这五个画图相关函数。

    d)      测试程序

    测试程序分两个,一个是底层硬件画图函数测试,一个是RTGUI API测试。

    lcd_hw_test.c

    #include <rtthread.h>
     
    extern const unsigned char* icon;
     
    void lcd_hw_test(){
        char pixel[] = {0x00, 0xf8};
        int width, height = 59, i=5;
        unsigned char* p;
        char tmp[] = {0xff, 0xff};
     
        rt_device_t drv = rt_device_find("lcd");
        struct rt_device_graphic_ops* ops = ((struct rt_device_graphic_ops *)(drv->user_data));
     
        // hline
        while(i--)
        {
            ops->draw_hline(pixel, 0, 480, 50 + i);
        }
     
        // vline
        i = 5;
        while(i--)
        {
            ops->draw_vline(pixel, 80 + i, 0, 272);
        }
     
        // draw icon
        p = (unsigned char*)&icon;
        while(height--){
            ops->blit_line((char*)p, 200, 180 - height, 59);
            p += 59 * 2;
        }
       
        // copy icon
        width = height = 59;
        while(height--)
        {
            while(width--)
            {
                ops->get_pixel(tmp, 200 + width, 180 - height);
                ops->set_pixel(tmp, 290 + width,  180 - height);
            }
            width = 59;
        }
    }


     lcd_gui_test.c

    #include <rtthread.h>
     
    #ifdef RT_USING_RTGUI
    #include <rtgui/rtgui.h>
    #include <rtgui/rtgui_server.h>
    #include <rtgui/rtgui_system.h>
    #include <rtgui/driver.h>
    #endif
     
    const unsigned char icon[] = {0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XF7,0XFE,0XD6,
    0XFE,0XDE,0X3F,0XE7,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,
    0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X3F,0XDF,
    0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X3F,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,
    0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,
    0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,
    0X1E,0XDF,0X3F,0XE7,0XFE,0XDE,0XFE,0XD6,0X9F,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
    0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,
    0XFE,0XD6,0X1E,0XDF,0XBE,0XD6,0X7E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,
    0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,
    0X5E,0XC6,0X7E,0XC6,0X9E,0XC6,0X9E,0XC6,0X9E,0XC6,0X9E,0XC6,0X7E,0XC6,0X5E,0XC6,
    0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,
    0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,
    0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X7E,0XC6,0XBE,0XD6,0X1E,0XDF,
    0XFE,0XDE,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
    0XFF,0XFF,0XBE,0XF7,0XDE,0XD6,0XBE,0XCE,0X5E,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
    0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5E,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
    0X5D,0XBE,0X5E,0XBE,0X5E,0XC6,0X7E,0XC6,0X9E,0XC6,0X9E,0XC6,0X9E,0XC6,0X9E,0XC6,
    0X7E,0XC6,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
    0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
    0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
    0X5D,0XBE,0X5D,0XBE,0X5E,0XC6,0XDE,0XD6,0XFE,0XD6,0XBE,0XF7,0XFF,0XFF,0XFF,0XFF,
    0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBE,0XF7,0XBD,0XCE,0X7E,0XC6,0X3D,0XBE,0X3D,0XBE,
    0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3E,0XBE,0X5E,0XBE,0X7E,0XBE,0X7E,0XBE,
    0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,
    0X7E,0XBE,0X7E,0XBE,0X5E,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3E,0XBE,0X5E,0XBE,
    0X3E,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,
    0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,
    0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X5E,0XBE,0X5E,0XBE,0XBE,0XCE,
    0XDE,0XD6,0XBE,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XDD,0XD6,0X7E,0XC6,
    0X1D,0XB6,0X1D,0XB6,0X3E,0XBE,0X3E,0XBE,0X5E,0XBE,0X3E,0XBE,0X5E,0XBE,0X5E,0XBE,
    0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,
    0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X3E,0XBE,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,
    0X1D,0XB6,0X3E,0XBE,0X5E,0XBE,0X5E,0XBE,0X1D,0XB6,0X5E,0XBE,0X3D,0XB6,0X1D,0XB6,
    0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,
    0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,
    0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X9E,0XC6,0XFD,0XD6,0XDF,0XFF,0XFF,0XFF,0XDF,0XFF,
    0X5D,0XEF,0X7E,0XC6,0X1E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,
    0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,
    0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0XFD,0XB5,
    0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0X5E,0XB6,0X5E,0XB6,0X3E,0XB6,
    0X5E,0XB6,0X5E,0XB6,0X1D,0XB6,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,
    0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,
    0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0X1D,0XB6,0XBE,0XC6,
    0X5D,0XEF,0XDF,0XFF,0XBE,0XF7,0X9C,0XCE,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,
    0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,
    0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,
    0X3E,0XB6,0X3E,0XB6,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XBD,0XAD,0XFD,0XB5,
    0X1D,0XAE,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0XFD,0XB5,0XDD,0XAD,
    0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,
    0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,
    0XDD,0XAD,0XDD,0XAD,0X3E,0XB6,0XBD,0XCE,0XBE,0XF7,0X5D,0XEF,0X3D,0XBE,0X1E,0XAE,
    0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,
    0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,
    0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0XDD,0XAD,0XBD,0XAD,0XBD,0XAD,
    0XBD,0XA5,0X5C,0X9D,0XDE,0XD6,0XDD,0XA5,0X1D,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,
    0X1E,0XAE,0X1E,0XAE,0XDD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,
    0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,
    0XBD,0XAD,0XBD,0XAD,0XDD,0XAD,0XFD,0XAD,0X1E,0XAE,0X1E,0XAE,0X1D,0XB6,0X5D,0XEF,
    0XFB,0XDE,0XDD,0XAD,0XFD,0XAD,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,
    0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,
    0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,
    0XFD,0XAD,0XFD,0XAD,0XFD,0XAD,0XBC,0XA5,0X1B,0X95,0XDF,0XFF,0X7C,0X95,0XFD,0XA5,
    0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0XFD,0XAD,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,
    0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0X9D,0XA5,0X9C,0XA5,
    0X9C,0XA5,0X3A,0XA5,0X9D,0XA5,0X9D,0XA5,0XBD,0XA5,0XBD,0XA5,0XDD,0XAD,0XFD,0XAD,
    0X1D,0XAE,0XDD,0XAD,0XFB,0XDE,0XBA,0XD6,0XFD,0XAD,0XDD,0XA5,0XFD,0XA5,0XFD,0XA5,
    0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,
    0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,
    0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XBC,0X9D,0X7B,0XA5,
    0XFF,0XFF,0XDC,0XA5,0XBC,0X9D,0XFD,0XA5,0XDD,0XA5,0X9D,0XA5,0X9D,0X9D,0X9D,0X9D,
    0XFD,0XA5,0XBD,0XA5,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X7D,0X9D,
    0X7C,0X9D,0X7C,0X9D,0X1A,0XA5,0X8F,0XB3,0X5C,0X9D,0X7C,0X9D,0X7D,0X9D,0X9D,0X9D,
    0X9D,0X9D,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XBD,0XA5,0XBA,0XD6,0X79,0XCE,0X9D,0X9D,
    0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XBD,0X9D,0X9D,0X9D,0XBD,0XA5,0XDD,0XA5,
    0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,
    0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,
    0XDD,0XA5,0X7C,0X95,0X3C,0XB6,0XFF,0XFF,0X3C,0XB6,0X7C,0X95,0XDD,0XA5,0X9D,0X9D,
    0XBD,0X9D,0X5C,0X9D,0X7D,0X9D,0X5C,0X9D,0X5C,0X9D,0X5C,0X9D,0X5C,0X9D,0X5C,0X9D,
    0X5C,0X9D,0X5C,0X95,0X5C,0X95,0X3B,0X95,0X75,0XA4,0X67,0XBA,0XB8,0X94,0X3B,0X95,
    0X5C,0X95,0X5C,0X95,0X5C,0X9D,0X5C,0X9D,0X7D,0X9D,0X7D,0X9D,0X9D,0X9D,0X9D,0X9D,
    0X79,0XCE,0X59,0XCE,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0X5D,0X95,
    0X3C,0X95,0X3C,0X95,0X5D,0X95,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,
    0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,
    0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0X9D,0X9D,0X1B,0X8D,0XBD,0XCE,0XFF,0XFF,0XBD,0XCE,
    0X1B,0X8D,0X9D,0X9D,0XBD,0X9D,0XBD,0X9D,0X9D,0X9D,0X5C,0X95,0X3C,0X95,0X3C,0X95,
    0X3C,0X95,0X3C,0X95,0X3C,0X95,0X3C,0X95,0X3C,0X8D,0XFB,0X8C,0XB0,0XB3,0XC2,0XC9,
    0XF4,0X8B,0XDA,0X84,0X1B,0X8D,0X3C,0X95,0X3C,0X95,0X3C,0X95,0X3C,0X95,0X3C,0X95,
    0X7D,0X95,0XBD,0X9D,0XBD,0X9D,0X59,0XCE,0X38,0XC6,0X5D,0X95,0X7D,0X95,0X9D,0X95,
    0X5D,0X95,0X3C,0X95,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X3C,0X8D,0X3C,0X95,
    0X7D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,
    0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X7C,0X95,0XDA,0X84,
    0X5E,0XE7,0XFF,0XFF,0X5E,0XE7,0XDA,0X84,0X7C,0X95,0X7D,0X95,0X3C,0X8D,0X3C,0X8D,
    0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0XFB,0X8C,0XB9,0X84,
    0XEA,0XCA,0XA1,0XC9,0X2E,0X93,0X79,0X7C,0XDA,0X84,0XFC,0X8C,0X1C,0X8D,0X1C,0X8D,
    0X1C,0X8D,0X1C,0X8D,0X3C,0X8D,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X38,0XC6,0X38,0XC6,
    0XFC,0X84,0X1C,0X8D,0X5D,0X8D,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,
    0XFC,0X84,0XFC,0X84,0XFC,0X84,0X3C,0X8D,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,
    0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,
    0X7D,0X95,0X5C,0X8D,0XBA,0X7C,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBA,0X7C,0X5C,0X8D,
    0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,
    0XDB,0X84,0X36,0X8C,0X65,0XE2,0XA1,0XC9,0X69,0X9A,0X37,0X74,0X79,0X7C,0XDB,0X84,
    0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0X7D,0X95,0X7D,0X95,
    0X7D,0X95,0X38,0XC6,0X38,0XC6,0XFC,0X84,0X1C,0X85,0XFC,0X84,0XFC,0X84,0XFC,0X84,
    0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0X1C,0X85,
    0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,
    0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X5D,0X8D,0X3C,0X85,0X3A,0X8D,0XFF,0XFF,0XFF,0XFF,
    0XFF,0XFF,0X1A,0X8D,0XBB,0X7C,0XDC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,
    0XDC,0X84,0XDB,0X7C,0XBA,0X7C,0XB2,0X9B,0X23,0XF2,0XA1,0XC9,0XE5,0XA9,0XD5,0X6B,
    0X58,0X74,0X9A,0X7C,0XDB,0X7C,0XDC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,
    0X1C,0X85,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X38,0XC6,0X38,0XC6,0XDC,0X7C,0XBC,0X7C,
    0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,
    0XBC,0X7C,0XBC,0X7C,0XDC,0X7C,0X3D,0X85,0X5D,0X8D,0X5D,0X8D,0X5D,0X85,0X5D,0X8D,
    0X5D,0X8D,0X5D,0X8D,0X5D,0X8D,0X5D,0X8D,0X5D,0X8D,0X5D,0X8D,0X5C,0X85,0XFB,0X7C,
    0XDB,0XA5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9B,0XA5,0X5A,0X6C,0XBC,0X7C,0XBC,0X7C,
    0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0X9B,0X7C,0X7A,0X74,0X0D,0XB3,0X01,0XFA,0XA1,0XC9,
    0XA2,0XB9,0X52,0X6B,0XF7,0X6B,0X7A,0X74,0XBB,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,
    0XBC,0X7C,0XBC,0X7C,0XFC,0X84,0X3C,0X85,0XFC,0X84,0X3C,0X85,0X5D,0X8D,0X38,0XC6,
    0X38,0XC6,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,
    0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0XDC,0X7C,0X3D,0X85,
    0X3C,0X85,0XFC,0X7C,0XBC,0X74,0X1C,0X7D,0X3C,0X85,0X3D,0X85,0X3D,0X85,0X3D,0X85,
    0X3C,0X85,0X1C,0X7D,0X9A,0X74,0X7C,0XC6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5C,0XC6,
    0X19,0X64,0X7B,0X74,0X9C,0X74,0X9C,0X74,0X9B,0X74,0X7B,0X74,0X18,0X74,0X87,0XD2,
    0X01,0XFA,0XA1,0XC9,0X81,0XB9,0XCE,0X72,0XB6,0X5B,0X39,0X6C,0X7B,0X74,0X9C,0X74,
    0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0XDC,0X7C,0XFC,0X7C,0X1C,0X85,
    0X3D,0X85,0X3D,0X85,0X38,0XC6,0X38,0XC6,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,
    0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,
    0X9C,0X74,0XBC,0X74,0X3D,0X7D,0X1C,0X7D,0X9B,0X6C,0X9E,0XC6,0X1C,0X85,0XDC,0X74,
    0X1C,0X7D,0X1C,0X7D,0XFC,0X74,0XBB,0X6C,0X1B,0X85,0X3C,0XB6,0XBF,0XF7,0XFF,0XFF,
    0XFF,0XFF,0XFF,0XFF,0XBF,0XF7,0XDC,0XAD,0X7A,0X74,0X1A,0X64,0X3A,0X64,0X5A,0X6C,
    0XB4,0X83,0X44,0XEA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X4A,0X82,0X96,0X5B,0X18,0X64,
    0X5A,0X6C,0X9B,0X6C,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,
    0XBC,0X74,0XBC,0X74,0X1C,0X7D,0X3D,0X7D,0X3D,0X7D,0X38,0XC6,0X38,0XC6,0X7B,0X6C,
    0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,
    0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X9C,0X6C,0X1C,0X7D,0X1C,0X7D,0XDC,0X74,
    0XFB,0X7C,0XDF,0XFF,0X1D,0XAE,0X7B,0X6C,0X9B,0X6C,0X1B,0X85,0X5E,0XE7,0XFF,0XFF,
    0XFF,0XFF,0XBD,0XCE,0X3C,0XBE,0X3B,0XBE,0X3B,0XBE,0X9D,0XCE,0XFF,0XFF,0XFF,0XFF,
    0XFD,0XDE,0X79,0X7C,0X0F,0X93,0X02,0XFA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0XE6,0X99,
    0X55,0X53,0XD8,0X5B,0X3A,0X64,0X5B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,
    0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X9C,0X74,0X1C,0X7D,0X1C,0X7D,0X1C,0X7D,0X1C,0X7D,
    0X38,0XC6,0X38,0XC6,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,
    0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X7C,0X6C,
    0X1C,0X75,0XFC,0X74,0XFC,0X74,0X7A,0X64,0XFC,0XAD,0XFF,0XFF,0X3E,0XDF,0X5D,0XBE,
    0XFF,0XFF,0X7E,0XEF,0X7B,0X95,0X18,0X64,0X18,0X5C,0X18,0X5C,0X18,0X5C,0XB7,0X53,
    0X77,0X4B,0X97,0X53,0XF9,0X8C,0XBC,0XD6,0X0C,0XEC,0X01,0XFA,0X01,0XFA,0XA1,0XC9,
    0X81,0XB9,0XA3,0XA9,0X12,0X53,0XB7,0X53,0X1A,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,
    0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X7C,0X6C,0X1C,0X75,
    0X1C,0X75,0X1C,0X75,0X1C,0X75,0X38,0XC6,0X38,0XC6,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,
    0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,
    0X5B,0X5C,0X5B,0X5C,0X5B,0X64,0XDC,0X74,0XFC,0X74,0XFC,0X6C,0XBB,0X6C,0X18,0X5C,
    0X1E,0XDF,0XFF,0XFF,0XFF,0XFF,0XFC,0XAD,0X18,0X5C,0X59,0X5C,0X7A,0X64,0X5A,0X64,
    0X3A,0X64,0X5A,0X64,0X9A,0X6C,0XF9,0X53,0XD8,0X53,0X33,0X5B,0X25,0XD2,0X01,0XFA,
    0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,0XAF,0X5A,0X76,0X4B,0XF9,0X5B,0X3B,0X5C,
    0X3B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,
    0X5B,0X5C,0X5B,0X64,0XDC,0X6C,0XFC,0X74,0XFC,0X74,0XFC,0X74,0X38,0XC6,0X38,0XC6,
    0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,
    0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X5B,0X5C,0XFC,0X6C,
    0XDC,0X6C,0XBB,0X6C,0X39,0X5C,0X3C,0XB6,0XFF,0XFF,0X5A,0X95,0X18,0X5C,0X7A,0X64,
    0X3A,0X5C,0X3B,0X5C,0X1B,0X5C,0X1B,0X5C,0X1B,0X5C,0XBB,0X6C,0XFA,0X5B,0X32,0X7B,
    0X23,0XF2,0X01,0XFA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,0X2B,0X6A,0X55,0X43,
    0XD9,0X53,0X1A,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,
    0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X7C,0X64,0XDC,0X6C,0XFC,0X6C,
    0XFC,0X6C,0X38,0XC6,0X38,0XC6,0X1B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,
    0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,
    0X3B,0X54,0X3B,0X54,0X7C,0X5C,0XDC,0X6C,0X9B,0X64,0XDA,0X74,0XFF,0XFF,0X1C,0XAE,
    0X18,0X54,0X9A,0X64,0X3B,0X5C,0X1B,0X54,0X1B,0X54,0X3B,0X54,0X1B,0X54,0X1B,0X54,
    0XFA,0X53,0XED,0X9A,0X01,0XFA,0X01,0XFA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,
    0X09,0XB3,0X94,0X5B,0X77,0X43,0XFA,0X53,0X1B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,
    0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,
    0X3B,0X54,0X5C,0X5C,0XDC,0X6C,0XFC,0X6C,0X38,0XC6,0X38,0XC6,0X5A,0X2B,0X1B,0X54,
    0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,
    0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X5B,0X5C,0X3A,0X5C,
    0X3E,0XDF,0X7E,0XE7,0XF8,0X53,0X7A,0X5C,0XBB,0X64,0X3B,0X54,0X1B,0X54,0X1B,0X54,
    0X1B,0X54,0XFA,0X4B,0XB8,0X53,0X88,0XC2,0X01,0XFA,0X01,0XFA,0X01,0XFA,0XA1,0XC9,
    0X81,0XB9,0X81,0XB9,0XA4,0X99,0X56,0XAD,0X3A,0XC6,0X58,0X3B,0XFB,0X53,0X1B,0X54,
    0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,
    0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X5B,0X54,0X1B,0X44,0X38,0XC6,
    0X38,0XC6,0XFA,0X1A,0X5A,0X2B,0XFB,0X43,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
    0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
    0X1B,0X4C,0XDA,0X43,0XDB,0X74,0XFF,0XFF,0X3A,0X8D,0X39,0X54,0XBB,0X64,0XDC,0X64,
    0X7C,0X5C,0X1B,0X4C,0XFB,0X4B,0XFA,0X4B,0X75,0X6B,0X24,0XE2,0X01,0XFA,0X01,0XFA,
    0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,0X82,0XB1,0X6F,0X3A,0X16,0X6C,0X7D,0XEF,
    0X79,0X6C,0XDA,0X43,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
    0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0XFB,0X43,
    0X5A,0X2B,0XFA,0X1A,0X38,0XC6,0X38,0XC6,0X1A,0X1B,0X1A,0X1B,0X1A,0X1B,0X9B,0X33,
    0XFB,0X43,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
    0X1B,0X4C,0XFB,0X4B,0XFB,0X43,0XBA,0X43,0X79,0X3B,0XFC,0XAD,0XDF,0XFF,0X98,0X43,
    0X5A,0X54,0XDC,0X64,0XDC,0X64,0XBC,0X5C,0XFB,0X4B,0XDA,0X43,0X71,0X8B,0X22,0XF2,
    0X01,0XFA,0X01,0XFA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,0X81,0XB9,0X6E,0X52,
    0X15,0X33,0X15,0X3B,0X9E,0XF7,0XFC,0XAD,0X79,0X3B,0XBA,0X43,0XFB,0X43,0XFB,0X4B,
    0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
    0XFB,0X43,0X9B,0X33,0X1A,0X1B,0X1A,0X1B,0X1A,0X1B,0X38,0XC6,0X38,0XC6,0X3A,0X1B,
    0X3A,0X1B,0X3A,0X1B,0X3A,0X1B,0X3A,0X23,0X7B,0X2B,0XDB,0X3B,0X1B,0X44,0XFB,0X43,
    0XFB,0X43,0XBA,0X43,0XBA,0X3B,0X9A,0X3B,0X79,0X3B,0X5A,0X5C,0X3B,0X85,0X1C,0XAE,
    0XDF,0XF7,0XBD,0XCE,0X58,0X3B,0XFA,0X43,0XDC,0X5C,0XDC,0X64,0XDC,0X64,0X3A,0X4C,
    0X3A,0X85,0X17,0XEE,0X06,0X7A,0X07,0X42,0X06,0X7A,0XA2,0XB9,0X81,0XB9,0X81,0XB9,
    0X81,0XB9,0X2A,0X72,0X15,0X33,0X77,0X3B,0X37,0X33,0X9D,0XC6,0XDF,0XF7,0X1C,0XAE,
    0X3B,0X85,0X5A,0X5C,0X79,0X3B,0X9A,0X3B,0XBA,0X3B,0XBA,0X43,0XFB,0X43,0XFB,0X43,
    0X1B,0X44,0XDB,0X3B,0X7B,0X2B,0X3A,0X23,0X3A,0X1B,0X3A,0X1B,0X3A,0X1B,0X3A,0X1B,
    0X38,0XC6,0X38,0XC6,0X5A,0X23,0X5A,0X23,0X5A,0X23,0X5A,0X23,0X5A,0X23,0X5A,0X23,
    0X3A,0X1B,0XF9,0X1A,0X19,0X23,0X1A,0X54,0X3B,0X85,0X1D,0XAE,0X1E,0XD7,0XFF,0XFF,
    0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1C,0XAE,0X78,0X3B,0XFB,0X43,0X7C,0X54,
    0XDC,0X5C,0XBB,0X5C,0XFA,0X74,0XDF,0XF7,0X10,0X84,0X55,0XAD,0XFF,0XFF,0X55,0XAD,
    0X48,0X6A,0X81,0XB9,0X81,0XB9,0XE6,0X91,0X75,0X43,0X18,0X4C,0X5A,0X54,0XF9,0X4B,
    0X3C,0XB6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1E,0XD7,0X1D,0XAE,
    0X3B,0X85,0X1A,0X54,0X19,0X23,0XF9,0X1A,0X3A,0X1B,0X5A,0X23,0X5A,0X23,0X5A,0X23,
    0X5A,0X23,0X5A,0X23,0X5A,0X23,0X38,0XC6,0X38,0XC6,0X7B,0X23,0X7B,0X23,0X7B,0X23,
    0X7B,0X23,0X7B,0X23,0X5A,0X1B,0XDA,0X43,0XFD,0XA5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
    0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBB,0X9D,
    0X99,0X33,0XFB,0X3B,0X1B,0X3C,0X1B,0X44,0X19,0X4C,0X5E,0XE7,0XFF,0XFF,0XAE,0X73,
    0XBA,0XD6,0XDB,0XDE,0XBA,0XD6,0X6D,0X73,0X81,0XB9,0XA3,0XA9,0X73,0X4B,0X38,0X4C,
    0XBA,0X54,0XDB,0X5C,0X5A,0X4C,0XFB,0XA5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
    0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XA5,0XFA,0X4B,
    0X5A,0X1B,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X38,0XC6,0X38,0XC6,
    0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7A,0X23,0X5A,0X23,0XF9,0X1A,
    0XD7,0X1A,0XD8,0X43,0XDA,0X74,0XDB,0X9D,0XFD,0XCE,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,
    0XFF,0XF7,0XFF,0XF7,0XFC,0XA5,0X39,0X2B,0XDB,0X33,0XDB,0X33,0XB9,0X33,0X7D,0XBE,
    0XFF,0XFF,0XFF,0XFF,0X75,0XAD,0XD3,0X9C,0X34,0XA5,0XD3,0X9C,0XCE,0X9B,0X82,0XB9,
    0XF0,0X4A,0X17,0X4C,0X9A,0X54,0XBC,0X54,0XBC,0X54,0X3A,0X44,0X3C,0XAE,0XFF,0XFF,
    0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFD,0XCE,0XDB,0X9D,0XDA,0X74,0XD8,0X43,
    0XD7,0X1A,0XF9,0X1A,0X5A,0X1B,0X7A,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,
    0X7B,0X23,0X38,0XC6,0X38,0XC6,0X9B,0X23,0X9B,0X23,0X9B,0X23,0X9B,0X23,0X9B,0X23,
    0X9B,0X23,0X9A,0X23,0X7A,0X23,0X79,0X23,0X39,0X1B,0X18,0X1B,0XD7,0X1A,0XB6,0X1A,
    0X95,0X1A,0XB7,0X43,0XB9,0X74,0XDB,0X9D,0XBF,0XEF,0X9D,0XBE,0X18,0X1B,0X7A,0X23,
    0X59,0X23,0X5B,0X8D,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X59,0XCE,0X96,0XB5,0X75,0XAD,
    0X96,0XB5,0XF2,0XBC,0X4D,0X52,0X16,0X23,0X39,0X3C,0X7B,0X44,0X9C,0X44,0X9C,0X44,
    0XFA,0X3B,0XDD,0XC6,0XDF,0XF7,0X3B,0XAE,0X39,0X85,0X58,0X5C,0X15,0X2B,0X36,0X2B,
    0X97,0X2B,0X98,0X2B,0XB9,0X2B,0X99,0X23,0X7A,0X23,0X9A,0X23,0X9B,0X23,0X9B,0X23,
    0X9B,0X23,0X9B,0X23,0X9B,0X23,0X9B,0X23,0X38,0XC6,0X38,0XC6,0XBB,0X23,0XBB,0X23,
    0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0X9A,0X23,0X9A,0X23,
    0X9A,0X23,0X79,0X23,0X79,0X23,0X79,0X23,0X38,0X1B,0X17,0X1B,0XD6,0X1A,0XDB,0X9D,
    0XDF,0XEF,0X18,0X23,0X79,0X23,0X7A,0X54,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X79,0XCE,
    0XF7,0XBD,0XF7,0XBD,0XF7,0XBD,0XD7,0XB5,0XB4,0X53,0XF5,0X1A,0X58,0X23,0X9B,0X44,
    0XBC,0X44,0XBC,0X4C,0X9B,0X44,0X19,0X3C,0XDF,0XFF,0X3C,0XAE,0XB7,0X33,0XF8,0X3B,
    0X39,0X3C,0X5A,0X44,0X7A,0X44,0X7A,0X44,0X7B,0X44,0X9B,0X44,0X9B,0X44,0XBB,0X23,
    0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0X38,0XC6,
    0X38,0XC6,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,
    0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XBB,0X23,0XBA,0X23,0XBA,0X23,
    0X9A,0X23,0X58,0X23,0X39,0X54,0XFF,0XF7,0X9A,0X64,0XB8,0X33,0X9F,0XEF,0XFF,0XFF,
    0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,0XF7,0XBD,0X76,0XA5,0X33,0X33,0XF5,0X1A,
    0X58,0X23,0X1A,0X34,0XDC,0X4C,0XDC,0X4C,0XDC,0X4C,0X7B,0X44,0X7B,0X7D,0XFF,0XFF,
    0XFA,0X6C,0X59,0X44,0X9B,0X44,0XBB,0X4C,0XBB,0X4C,0XBC,0X4C,0XDC,0X4C,0XDC,0X4C,
    0XDC,0X4C,0XDC,0X4C,0XFB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,
    0XDB,0X23,0XDB,0X23,0X38,0XC6,0X38,0XC6,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,
    0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,
    0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XDA,0X23,0X38,0X1B,0XFD,0XCE,0XBC,0XCE,
    0XDD,0XCE,0XFF,0XFF,0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,0XF7,0XBD,0XD5,0X8C,
    0XF3,0X22,0X36,0X1B,0X98,0X23,0XDA,0X23,0X9C,0X3C,0XFC,0X4C,0XFC,0X4C,0XDC,0X4C,
    0X7A,0X44,0X7E,0XE7,0X3E,0XDF,0X19,0X3C,0XDB,0X4C,0XFC,0X4C,0XFC,0X4C,0XFC,0X4C,
    0X1C,0X4D,0X1C,0X4D,0X1C,0X4D,0X1C,0X4D,0XDC,0X44,0XFB,0X23,0XFB,0X23,0XFB,0X23,
    0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0X38,0XC6,0X38,0XC6,0X1C,0X24,
    0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,
    0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1B,0X24,0XFB,0X23,
    0X99,0X23,0X58,0X54,0X7D,0XEF,0XFF,0XFF,0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,
    0XF7,0XBD,0X34,0X64,0XF4,0X1A,0X57,0X23,0XB9,0X23,0XFA,0X23,0X1B,0X24,0X9C,0X3C,
    0X3D,0X55,0X1C,0X4D,0XBB,0X44,0X3C,0XA6,0XFF,0XFF,0XFA,0X64,0X9A,0X44,0XFC,0X4C,
    0X1C,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X9C,0X3C,
    0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,
    0X38,0XC6,0X38,0XC6,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,
    0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,
    0X3C,0X2C,0X3C,0X2C,0X1B,0X24,0XD9,0X23,0XF9,0X74,0XFF,0XFF,0XFF,0XFF,0X79,0XCE,
    0XF7,0XBD,0XF7,0XBD,0XB7,0XB5,0X94,0X43,0X35,0X1B,0X97,0X23,0XDA,0X23,0X1B,0X2C,
    0X3C,0X2C,0X3C,0X2C,0X5C,0X2C,0X1C,0X4D,0XDB,0X4C,0XBC,0X85,0XFF,0XFF,0X5C,0XAE,
    0X79,0X44,0X1B,0X4D,0X3C,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,
    0X3D,0X55,0X3D,0X55,0X1C,0X45,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,
    0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X38,0XC6,0X38,0XC6,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,
    0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,
    0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X1B,0X2C,0X99,0X4C,0XDF,0XF7,
    0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,0X36,0X9D,0X33,0X2B,0X76,0X23,0XD8,0X23,
    0X1A,0X2C,0X5B,0X2C,0X5C,0X2C,0X7C,0X2C,0X5C,0X2C,0X1B,0X24,0X3A,0X2C,0X5D,0XA6,
    0XFF,0XFF,0XFF,0XFF,0X3E,0XD7,0X99,0X44,0X3C,0X55,0X7C,0X55,0X7D,0X55,0X7D,0X55,
    0X7D,0X55,0X7D,0X55,0X7D,0X55,0X7D,0X55,0X7D,0X55,0X5D,0X55,0X5C,0X2C,0X5C,0X2C,
    0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X38,0XC6,0X38,0XC6,
    0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,
    0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X5B,0X2C,
    0X5A,0X34,0X7E,0XE7,0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,0X96,0XB5,0X56,0XA5,
    0X56,0X5C,0X98,0X23,0XFA,0X23,0X1B,0X24,0X3B,0X24,0X1B,0X24,0X1B,0X24,0X1A,0X2C,
    0X5C,0X6D,0X7F,0XE7,0XFF,0XFF,0X7C,0XAE,0X3E,0XD7,0XFF,0XFF,0X3C,0X9E,0X1C,0X4D,
    0X9D,0X5D,0X9D,0X5D,0X9D,0X55,0X9D,0X55,0X9D,0X55,0X9D,0X55,0X9D,0X55,0X9D,0X55,
    0X7D,0X55,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,
    0X7C,0X2C,0X38,0XC6,0X38,0XC6,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,
    0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,
    0X9C,0X2C,0X7C,0X2C,0X5A,0X2C,0XDD,0XC6,0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XD7,0XBD,
    0XD3,0X53,0X73,0X3B,0XF9,0XAD,0X5D,0XE7,0X9E,0XEF,0XBD,0XBE,0X5D,0XA6,0X3D,0XA6,
    0X5D,0XA6,0XDE,0XBE,0XDF,0XF7,0XFF,0XFF,0X3E,0XD7,0X79,0X4C,0X58,0X34,0X78,0X44,
    0X3C,0X9E,0XDF,0XF7,0X7B,0X65,0X9C,0X55,0XBD,0X5D,0XBD,0X5D,0XBD,0X5D,0XBD,0X5D,
    0XBD,0X5D,0XBD,0X5D,0XBD,0X5D,0X9D,0X4D,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,
    0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X38,0XC6,0X38,0XC6,0XBD,0X2C,0XBD,0X2C,
    0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,
    0XBD,0X2C,0XBD,0X2C,0XBC,0X2C,0XBC,0X2C,0X7B,0X2C,0XFC,0X95,0XFF,0XFF,0X79,0XCE,
    0XF7,0XBD,0X97,0XAD,0XB3,0X3B,0X74,0X23,0XB6,0X23,0XB7,0X23,0X58,0X44,0XDB,0X8D,
    0XBF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XEF,0XFC,0X95,0X99,0X4C,0XF9,0X23,
    0X39,0X2C,0X7A,0X2C,0X7A,0X34,0X79,0X2C,0X7B,0X6D,0XDD,0XB6,0X5C,0X55,0XDD,0X5D,
    0XDD,0X5D,0XDD,0X5D,0XDD,0X5D,0XDD,0X5D,0XDD,0X5D,0X7D,0X45,0XDD,0X2C,0XBD,0X2C,
    0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0X38,0XC6,
    0X38,0XC6,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,
    0XDD,0X2C,0XDD,0X2C,0XDD,0X34,0XDD,0X34,0XFD,0X34,0XDC,0X34,0XBB,0X2C,0X5B,0X65,
    0XDF,0XFF,0X79,0XCE,0XF7,0XBD,0X36,0X95,0X94,0X2B,0XF7,0X2B,0X59,0X2C,0X9A,0X2C,
    0X9A,0X34,0X7A,0X2C,0X19,0X2C,0X5C,0XAE,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,0X5C,0XAE,
    0X19,0X2C,0X7A,0X2C,0XBB,0X34,0XBC,0X34,0XDC,0X34,0XDC,0X34,0XBB,0X34,0X9C,0X5D,
    0X5B,0X55,0XBC,0X5D,0XFD,0X65,0XFD,0X65,0XFD,0X65,0XFD,0X65,0XFD,0X65,0XDD,0X5D,
    0XDD,0X34,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,
    0XDD,0X2C,0XDD,0X2C,0X38,0XC6,0X38,0XC6,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,
    0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,
    0XDC,0X34,0XFA,0X4C,0X9E,0XEF,0X79,0XCE,0XF7,0XBD,0X95,0X74,0XB5,0X23,0X38,0X2C,
    0X9A,0X34,0XDC,0X34,0XFC,0X34,0XFC,0X34,0XFC,0X34,0X7A,0X2C,0X9B,0X7D,0XFF,0XFF,
    0XFF,0XFF,0XFF,0XFF,0X9B,0X7D,0X7A,0X2C,0XFC,0X34,0X1C,0X35,0X1D,0X35,0X1D,0X35,
    0X1D,0X35,0X1D,0X35,0XDD,0X55,0XFD,0X65,0X1D,0X66,0X1D,0X66,0X1D,0X66,0X1D,0X66,
    0X1D,0X66,0X1D,0X66,0X1D,0X5E,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,
    0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X38,0XC6,0X38,0XC6,0X3D,0X35,
    0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,
    0X3D,0X35,0X3D,0X35,0X1C,0X35,0XDB,0X34,0X3E,0XD7,0X79,0XCE,0XD7,0XB5,0X35,0X54,
    0XF6,0X2B,0X79,0X2C,0XFB,0X34,0X3C,0X35,0X5D,0X3D,0X5D,0X3D,0X5D,0X3D,0X3D,0X3D,
    0XFB,0X34,0XFA,0X54,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFA,0X54,0XFB,0X34,0X3D,0X3D,
    0X5D,0X3D,0X5D,0X3D,0X5D,0X3D,0X5D,0X3D,0X5D,0X3D,0XFD,0X4D,0X3D,0X6E,0X3D,0X6E,
    0X3D,0X6E,0X5E,0X6E,0X5E,0X6E,0X5E,0X6E,0X5E,0X6E,0X1D,0X56,0X3D,0X35,0X3D,0X35,
    0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,
    0X38,0XC6,0X38,0XC6,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,
    0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X3D,0X35,0XFB,0X34,0X9D,0XAE,0X79,0XCE,
    0X97,0XA5,0X15,0X3C,0X37,0X2C,0XB9,0X34,0X1B,0X35,0X5D,0X3D,0X7D,0X3D,0X7D,0X3D,
    0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,0X3C,0X3D,0X99,0X34,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
    0X99,0X34,0X3C,0X3D,0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,
    0XBD,0X45,0X7E,0X6E,0X7E,0X6E,0X7E,0X6E,0X7E,0X6E,0X7E,0X6E,0X7E,0X6E,0X5E,0X6E,
    0X3E,0X56,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,
    0X5D,0X35,0X5D,0X35,0X5D,0X35,0X38,0XC6,0X38,0XC6,0X7D,0X35,0X7D,0X35,0X7D,0X35,
    0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X5D,0X35,0X3C,0X35,
    0X1C,0X86,0X79,0XCE,0X57,0X8D,0X36,0X34,0X98,0X34,0XFA,0X34,0X5C,0X3D,0X9D,0X3D,
    0X9D,0X3D,0X9E,0X3D,0X9E,0X45,0XBE,0X45,0XBE,0X45,0X9D,0X45,0X7D,0X3D,0XDA,0X34,
    0X3E,0XD7,0XFF,0XFF,0X3E,0XD7,0XDA,0X34,0X7D,0X3D,0X9D,0X45,0XBE,0X45,0XBE,0X45,
    0X9E,0X45,0X9E,0X3D,0X9E,0X3D,0X9E,0X3D,0X7E,0X66,0X9E,0X76,0X9E,0X76,0X9E,0X76,
    0X9E,0X76,0X9E,0X76,0X7E,0X6E,0XDE,0X45,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,
    0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X38,0XC6,0X38,0XC6,
    0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,
    0X9D,0X3D,0X7D,0X35,0XBC,0X65,0X59,0XC6,0X17,0X6D,0X77,0X2C,0XD9,0X34,0X3B,0X3D,
    0X9D,0X3D,0XBD,0X3D,0XBE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,
    0XDE,0X45,0XBD,0X45,0X3B,0X3D,0XBD,0XAE,0XFF,0XFF,0XBD,0XAE,0X3B,0X3D,0XBD,0X45,
    0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0X7E,0X56,
    0XBE,0X76,0XBE,0X76,0XBE,0X76,0XBE,0X76,0XBE,0X76,0XFE,0X45,0XBE,0X3D,0X9E,0X3D,
    0X9E,0X3D,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,
    0X9E,0X35,0X38,0XC6,0X38,0XC6,0XBE,0X35,0XBE,0X35,0XBE,0X35,0XBE,0X3D,0XBE,0X3D,
    0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBD,0X3D,0X9C,0X4D,0X39,0XAE,0X18,0X55,0XD9,0X34,
    0X1A,0X35,0X7C,0X3D,0XBD,0X3D,0XDE,0X45,0XFE,0X45,0XFE,0X45,0XFE,0X45,0XFE,0X45,
    0XFE,0X45,0XFE,0X45,0X1E,0X4E,0X1E,0X4E,0XFD,0X45,0X7C,0X3D,0X3C,0X8E,0XFF,0XFF,
    0X3C,0X8E,0X7C,0X3D,0XFD,0X45,0X1E,0X4E,0X1E,0X4E,0XFE,0X45,0XFE,0X45,0XFE,0X45,
    0XFE,0X45,0XFE,0X45,0X7E,0X56,0XDE,0X7E,0XDE,0X7E,0XDE,0X76,0XDE,0X76,0XDE,0X76,
    0X7E,0X56,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,
    0XBE,0X3D,0XBE,0X35,0XBE,0X35,0XBE,0X35,0X38,0XC6,0X38,0XC6,0XBD,0X3D,0XDE,0X35,
    0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XBD,0X3D,0XFA,0X85,
    0X5A,0X45,0X3A,0X35,0X5B,0X3D,0XBC,0X3D,0XFD,0X45,0X1E,0X46,0X1E,0X46,0X1E,0X46,
    0X1E,0X46,0X1E,0X46,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,
    0XDC,0X45,0XDB,0X5D,0XFF,0XFF,0XDB,0X65,0XDC,0X45,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,
    0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,0X1E,0X46,0X1E,0X46,0XBE,0X5E,0XFE,0X7E,0XFE,0X7E,
    0XFE,0X7E,0XFE,0X7E,0X9E,0X56,0X1E,0X46,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,
    0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X35,0XBD,0X3D,0X38,0XC6,
    0X38,0XC6,0XBC,0X4D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,
    0XFE,0X3D,0XDD,0X4D,0XBC,0X3D,0X9C,0X3D,0XBC,0X3D,0XDD,0X45,0X1E,0X46,0X3E,0X46,
    0X3E,0X46,0X3E,0X4E,0X3E,0X4E,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,0X5E,0X56,
    0X7E,0X56,0X7E,0X56,0X5E,0X4E,0X3D,0X4E,0X9B,0X45,0XDF,0XF7,0X9B,0X45,0X3D,0X4E,
    0X5E,0X4E,0X7E,0X56,0X7E,0X56,0X5E,0X56,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,
    0X9E,0X56,0X1E,0X87,0X1E,0X87,0X1E,0X87,0XFE,0X6E,0X1E,0X46,0X1E,0X46,0X1E,0X46,
    0X1E,0X46,0X1E,0X3E,0X1E,0X3E,0X1E,0X3E,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,
    0XFE,0X3D,0XBC,0X45,0X38,0XC6,0X59,0XCE,0X79,0X5D,0X1E,0X3E,0X1E,0X3E,0X1E,0X3E,
    0X1E,0X3E,0X1E,0X3E,0X1E,0X46,0X1E,0X3E,0X1E,0X46,0XFD,0X3D,0X1D,0X46,0X1E,0X46,
    0X3E,0X46,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,0X7E,0X4E,0X7E,0X4E,0X7E,0X4E,0X7E,0X4E,
    0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X7E,0X56,0XFC,0X4D,
    0X1E,0XB7,0XFC,0X4D,0X7E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,
    0X9E,0X56,0X7E,0X4E,0X7E,0X4E,0X7E,0X4E,0X3F,0X7F,0X3F,0X87,0X3F,0X87,0X1F,0X6F,
    0X5E,0X46,0X5E,0X46,0X5E,0X46,0X3E,0X46,0X3E,0X46,0X3E,0X46,0X3E,0X46,0X1E,0X3E,
    0X1E,0X3E,0X1E,0X3E,0X1E,0X3E,0X1E,0X3E,0X79,0X5D,0X59,0XCE,0X79,0XCE,0X16,0X7D,
    0X3F,0X3E,0X3F,0X3E,0X3F,0X3E,0X3F,0X3E,0X5F,0X46,0X3E,0X46,0X5E,0X46,0X5E,0X46,
    0X5E,0X46,0X5E,0X46,0X7E,0X4E,0X7F,0X4E,0X7F,0X4E,0X7F,0X4E,0X9F,0X4E,0X9F,0X56,
    0X9F,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X5E,0XDF,0X5E,
    0XDF,0X5E,0XBE,0X5E,0X7D,0X56,0X9D,0X76,0X7D,0X56,0XBE,0X5E,0XDF,0X5E,0XDF,0X5E,
    0XBF,0X5E,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0X9F,0X56,0XFF,0X5E,
    0X5F,0X8F,0X5F,0X8F,0X3F,0X6F,0X7F,0X4E,0X7F,0X4E,0X5F,0X46,0X5F,0X46,0X5F,0X46,
    0X5F,0X46,0X5F,0X46,0X5F,0X46,0X3F,0X3E,0X3F,0X3E,0X3F,0X3E,0X3F,0X3E,0X16,0X7D,
    0X79,0XCE,0XBA,0XD6,0XF3,0X9C,0XDC,0X45,0X5F,0X46,0X5F,0X46,0X7F,0X46,0X7F,0X46,
    0X7F,0X46,0X7F,0X46,0X7F,0X46,0X7F,0X4E,0X9F,0X4E,0X9F,0X4E,0X9F,0X4E,0X9F,0X4E,
    0XBF,0X56,0XBF,0X56,0XBF,0X56,0XDF,0X56,0XDF,0X56,0XDF,0X5E,0XDF,0X5E,0XFF,0X5E,
    0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XFE,0X5E,0XDE,0X5E,0XBE,0X56,0XDE,0X5E,
    0XFE,0X5E,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XDF,0X5E,0XDF,0X5E,
    0XDF,0X56,0XDF,0X56,0XFF,0X5E,0X7F,0X97,0X7F,0X97,0X7F,0X7F,0XDF,0X56,0X9F,0X4E,
    0X9F,0X4E,0X9F,0X4E,0X7F,0X46,0X7F,0X46,0X7F,0X46,0X7F,0X46,0X7F,0X46,0X5F,0X46,
    0X5F,0X46,0XDC,0X45,0XF3,0X9C,0XBA,0XD6,0X1C,0XE7,0X96,0XB5,0X73,0X64,0X7F,0X46,
    0X7F,0X46,0X7F,0X46,0X7F,0X46,0X9F,0X46,0X9F,0X46,0X9F,0X4E,0X9F,0X4E,0XBF,0X4E,
    0XBF,0X4E,0XBF,0X56,0XDF,0X56,0XDF,0X56,0XDF,0X56,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,
    0X1F,0X5F,0X1F,0X5F,0X1F,0X5F,0X1F,0X5F,0X1F,0X67,0X1F,0X67,0X3F,0X67,0X1F,0X67,
    0X1F,0X67,0X1E,0X67,0X1F,0X67,0X1F,0X67,0X3F,0X67,0X1F,0X67,0X1F,0X67,0X1F,0X5F,
    0X1F,0X5F,0X1F,0X5F,0X1F,0X5F,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0X7F,0X7F,0X9F,0X97,
    0X9F,0X97,0XFF,0X5E,0XBF,0X4E,0XBF,0X4E,0X9F,0X4E,0X9F,0X4E,0X9F,0X46,0X9F,0X46,
    0X7F,0X46,0X7F,0X46,0X7F,0X46,0X7F,0X46,0X73,0X64,0X96,0XB5,0X1C,0XE7,0X7D,0XEF,
    0X59,0XCE,0X71,0X8C,0XB5,0X44,0X9F,0X46,0X9F,0X46,0XBF,0X46,0XBF,0X4E,0XBF,0X4E,
    0XBF,0X4E,0XDF,0X4E,0XDF,0X4E,0XDF,0X56,0XFF,0X56,0XFF,0X56,0X1F,0X57,0X1F,0X5F,
    0X1F,0X5F,0X1F,0X5F,0X3F,0X5F,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,
    0X3F,0X67,0X3F,0X67,0X5F,0X67,0X5F,0X67,0X5F,0X67,0X5F,0X67,0X5F,0X67,0X3F,0X67,
    0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X5F,0X1F,0X5F,
    0X1F,0X5F,0X9F,0X77,0X9F,0X87,0X9F,0X87,0XFF,0X56,0XDF,0X56,0XDF,0X4E,0XDF,0X4E,
    0XBF,0X4E,0XBF,0X4E,0XBF,0X4E,0XBF,0X46,0X9F,0X46,0X9F,0X46,0XB5,0X44,0X71,0X8C,
    0X59,0XCE,0X7D,0XEF,0XBE,0XF7,0XFB,0XDE,0X96,0XB5,0XAF,0X73,0X33,0X44,0X9E,0X46,
    0XBF,0X46,0XDF,0X4E,0XDF,0X4E,0XDF,0X4E,0XFF,0X56,0XFF,0X56,0XFF,0X56,0X1F,0X57,
    0X1F,0X5F,0X1F,0X5F,0X3F,0X5F,0X3F,0X5F,0X3F,0X67,0X5F,0X67,0X5F,0X67,0X5F,0X67,
    0X5F,0X67,0X5F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,
    0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X5F,0X6F,0X5F,0X67,0X5F,0X67,
    0X5F,0X67,0X5F,0X67,0X3F,0X67,0X3F,0X5F,0X9F,0X6F,0XBF,0X8F,0XBF,0X7F,0X5F,0X67,
    0XFF,0X56,0XFF,0X56,0XFF,0X56,0XDF,0X4E,0XDF,0X4E,0XDF,0X4E,0XBF,0X46,0X9E,0X46,
    0X33,0X44,0XAE,0X73,0X96,0XB5,0XFB,0XDE,0XBE,0XF7,0XDF,0XFF,0X7D,0XEF,0X9A,0XD6,
    0X34,0XA5,0X8E,0X73,0XCB,0X42,0XBA,0X45,0XFF,0X4E,0XFF,0X4E,0XFF,0X56,0X1F,0X57,
    0X1F,0X57,0X3F,0X5F,0X3F,0X5F,0X3F,0X5F,0X5F,0X5F,0X5F,0X67,0X5F,0X67,0X7F,0X67,
    0X7F,0X67,0X7F,0X6F,0X7F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,
    0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,
    0X9F,0X6F,0X9F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X67,0X7F,0X67,0X5F,0X67,0X5F,0X67,
    0X9F,0X6F,0XDF,0X7F,0XDF,0X77,0X3F,0X5F,0X1F,0X57,0X1F,0X57,0XFF,0X56,0XFF,0X4E,
    0XFF,0X4E,0XBA,0X45,0XCC,0X42,0X8E,0X73,0X34,0XA5,0X9A,0XD6,0X7D,0XEF,0XDF,0XFF,
    0XFF,0XFF,0XDF,0XFF,0X5D,0XEF,0X9A,0XD6,0X55,0XAD,0XEF,0X7B,0XAA,0X52,0X8F,0X43,
    0X16,0X45,0XFA,0X4D,0X3F,0X57,0X3F,0X57,0X5F,0X5F,0X5F,0X5F,0X7F,0X5F,0X7F,0X67,
    0X7F,0X67,0X9F,0X67,0X9F,0X67,0X9F,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,
    0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XDF,0X77,0XDF,0X77,0XDF,0X77,0XDF,0X77,0XDF,0X77,
    0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0X9F,0X6F,
    0X9F,0X67,0X9F,0X67,0X7F,0X67,0X7F,0X67,0X7F,0X5F,0X5F,0X5F,0X5F,0X5F,0X3F,0X57,
    0X3F,0X57,0XFA,0X4D,0X36,0X45,0X8F,0X43,0XAA,0X52,0XCF,0X7B,0X55,0XAD,0X9A,0XD6,
    0X5D,0XEF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0X7D,0XEF,0XBA,0XD6,
    0XD7,0XBD,0X92,0X94,0X8E,0X73,0XAA,0X52,0X49,0X4A,0X08,0X42,0XC7,0X39,0XC7,0X39,
    0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,
    0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,
    0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,
    0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,
    0XC7,0X39,0XC7,0X39,0XC7,0X39,0X08,0X42,0X49,0X4A,0XAA,0X52,0X8E,0X73,0X92,0X94,
    0XD7,0XBD,0XBA,0XD6,0X7D,0XEF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
    0XFF,0XFF,0XDF,0XFF,0X9E,0XF7,0X1C,0XE7,0X79,0XCE,0X96,0XB5,0XF3,0X9C,0X71,0X8C,
    0X10,0X84,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,
    0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,
    0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,
    0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,
    0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0X10,0X84,0X71,0X8C,
    0XF3,0X9C,0X96,0XB5,0X79,0XCE,0X1C,0XE7,0X9E,0XF7,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,
    0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0X7D,0XEF,
    0X1C,0XE7,0XBA,0XD6,0X79,0XCE,0X59,0XCE,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
    0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
    0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
    0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
    0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
    0X38,0XC6,0X59,0XCE,0X79,0XCE,0XBA,0XD6,0X1C,0XE7,0X7D,0XEF,0XDF,0XFF,0XFF,0XFF,
    0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};
     
     
    void lcd_gui_test(){
        rtgui_color_t pixel = white;
        int width, height = 59, i;
        rt_uint8_t* p;
        rtgui_color_t tmp[] = {0xffff};
     
        struct rtgui_graphic_driver* drv = rtgui_graphic_driver_get_default();
        const struct rtgui_graphic_driver_ops* ops = drv->ops;
     
        // clear
        i = 272;
        while(i--)
        {
            ops->draw_hline(&pixel, 0, 480, i);
        }
     
        // hline
        i = 5;
        pixel = red;
        while(i--)
        {
            ops->draw_hline(&pixel, 0, 480, 50 + i);
        }
     
        // vline
        i = 5;
        while(i--)
        {
            ops->draw_vline(&pixel, 80 + i, 0, 272);
        }
     
        // draw icon
        p = (unsigned char*)&icon;
        while(height--){
            ops->draw_raw_hline((rt_uint8_t*)p, 200, 200 + 59, 180 - height);
            p += 59 * 2;
        }
       
        // copy icon
        width = height = 59;
        while(height--)
        {
            while(width--)
            {
                ops->get_pixel(tmp, 200 + width, 180 - height);
                ops->set_pixel(tmp, 290 + width,  180 - height);
            }
            width = 59;
        }
    }

    这两个测试文件的显示内容是一样的。

    显示一条5个像素宽的横条与竖条,以及一个图标,再复制一份同样的图标。通过这些来测试基本的五个函数有没有按预期效果显示。

    在application.c中添加测试代码:(L55-L59)


    编译,下载,可以看到测试结果:

    e)      模拟器运行RTGUI

    模拟器在目录bspsimulator下,在开始之前,请阅读目录下的readme.txt。

    使用命令:scons --target=vs –s 来创建Visaul C++ 2005的项目文件。

    打开生成的project.vcproj。

    将lcd_gui_test.c加入,再在application.c中添加测试代码(默认是运行贪吃蛇游戏);

    修改project -> Drivers -> sdl_fb.c,让屏幕分辨率与开发板的一致。

    运行后,就可以看到效果了(注:可能因调用低层代码,窗口没刷新,用其它窗口盖一下,再挪开,就可以看到上图了)

  • 相关阅读:
    P2604 [ZJOI2010]网络扩容
    P2053 [SCOI2007]修车
    P2045 方格取数加强版
    P4134 [BJOI2012]连连看
    P2153 [SDOI2009]晨跑
    P3381 【模板】最小费用最大流
    P3376 【模板】网络最大流
    P1326 足球
    2020牛客多校第八场I题 Interesting Computer Game(并查集+判环)
    Codeforces 1375D Replace by MEX(思维题)
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3188578.html
Copyright © 2011-2022 走看看