UniGraphic demo for TFT and LCD, par or spi

Dependencies:   UniGraphic

Files at this revision

API Documentation at this revision

Comitter:
Geremia
Date:
Mon Feb 23 23:40:04 2015 +0000
Parent:
3:65af1a9fedda
Child:
5:c69049e461b7
Commit message:
added 16bit bitmap test

Changed in this revision

UniGraphic.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
pavement_48x34.h Show annotated file Show diff for this revision Revisions of this file
--- a/UniGraphic.lib	Thu Feb 19 00:39:57 2015 +0000
+++ b/UniGraphic.lib	Mon Feb 23 23:40:04 2015 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/teams/GraphicsDisplay/code/UniGraphic/#668cf78ff93a
+http://developer.mbed.org/teams/GraphicsDisplay/code/UniGraphic/#244f9563ebc1
--- a/main.cpp	Thu Feb 19 00:39:57 2015 +0000
+++ b/main.cpp	Mon Feb 23 23:40:04 2015 +0000
@@ -6,20 +6,24 @@
 //#include "Terminal6x8.h"
 #include "Arial43x48_numb.h"
 #include "pict.h"
+#include "pavement_48x34.h"
 
 //#include "IST3020.h"
 //#include "UC1608.h"
 #include "ILI9341.h"
 //#include "ILI9486.h"
 //#include "TFT_MIPI.h"
+//#include "SSD1306.h"
 
 Serial pc(USBTX, USBRX);
 
-//IST3020 LCD(PAR_8, PortC, PC_8, PC_9, PA_0, PA_1, PA_4,"LCD", 192, 64); // Parallel 8bit, Port, CS, reset, A0, WR, RD for F302
-//UC1608 LCD(SPI_16, 10000000, D11, D12, D13, D10, D9, D8,"LCD", 240, 120); // Spi 16bit, 10MHz, mosi, miso, sclk, cs, reset, dc
-ILI9341 LCD(SPI_16, 10000000, D11, D12, D13, D10, D9, D8,"LCD"); // Spi 16bit, 10MHz, mosi, miso, sclk, cs, reset, dc
-//ILI9486 LCD(PAR_16, PortC, PH_0, PH_1, PA_0, PA_1, PA_4,"LCD"); // Parallel 16bit, Port, CS, reset, A0, WR, RD for F401
-//TFT_MIPI LCD(PAR_16, PortC, PH_0, PH_1, PA_0, PA_1, PA_4,"LCD"); // Parallel 16bit, Port, CS, reset, A0, WR, RD for F401
+//IST3020 myLCD(PAR_8, PortC, PC_8, PC_9, PA_0, PA_1, PA_4,"myLCD", 192, 64); // Parallel 8bit, Port, CS, reset, A0, WR, RD for F302
+//UC1608 myLCD(SPI_16, 10000000, D11, D12, D13, D10, D9, D8,"myLCD", 240, 120); // Spi 16bit, 10MHz, mosi, miso, sclk, cs, reset, dc
+ILI9341 myLCD(SPI_16, 12000000, D11, D12, D13, D10, D9, D8,"myLCD"); // Spi 16bit, 12MHz, mosi, miso, sclk, cs, reset, dc
+//ILI9341 myLCD(PAR_16, PortC, PH_0, PH_1, PA_0, PA_1, PA_4,"myLCD"); // Parallel 16bit, Port, CS, reset, A0, WR, RD for F401
+//ILI9486 myLCD(PAR_16, PortC, PH_0, PH_1, PA_0, PA_1, PA_4,"myLCD"); // Parallel 16bit, Port, CS, reset, A0, WR, RD for F401
+//TFT_MIPI myLCD(PAR_16, PortC, PH_0, PH_1, PA_0, PA_1, PA_4,"myLCD"); // Parallel 16bit, Port, CS, reset, A0, WR, RD for F401
+//SSD1306 myLCD(SPI_16, 10000000, D11, D12, D13, D10, D9, D8,"myLCD", 240, 120); // Spi 16bit, 10MHz, mosi, miso, sclk, cs, reset, dc
 
 Timer t;
 
@@ -29,99 +33,101 @@
 char orient=1;
 int main()
 {
-//    LCD.set_contrast(26);//for uc1608
- //   LCD.set_contrast(46);//for ist3020
-    LCD.set_orientation(orient);
+//    myLCD.set_contrast(26);//for uc1608
+ //   myLCD.set_contrast(46);//for ist3020
+    myLCD.set_orientation(orient);
     int time, time2;
     pc.baud (115200);
     pc.printf("\n\nSystem Core Clock = %.3f MHZ\r\n",(float)SystemCoreClock/1000000);
     t.start();
 
-   // LCD.claim(stdout);      // send stdout to the LCD display
-    //LCD.claim(stderr);      // send stderr to the LCD display
-    LCD.background(backgroundcolor);    // set background to black
-    LCD.foreground(foregroundcolor);    // set chars to white
-    LCD.cls();                // clear the screen
- //   LCD.set_font((unsigned char*) Terminal6x8);
-    LCD.locate(0,30);
-    LCD.printf("Display ID: %.8X\r\n", LCD.tftID);
+   // myLCD.claim(stdout);      // send stdout to the LCD display
+    //myLCD.claim(stderr);      // send stderr to the LCD display
+    myLCD.background(backgroundcolor);    // set background to black
+    myLCD.foreground(foregroundcolor);    // set chars to white
+    myLCD.cls();                // clear the screen
+ //   myLCD.set_font((unsigned char*) Terminal6x8);
+    myLCD.locate(0,30);
+    myLCD.printf("Display ID: %.8X\r\n", myLCD.tftID);
+    pc.printf("Display ID: %.8X\r\n", myLCD.tftID);
     // mem write/read test
     unsigned short readback;
-    unsigned short colorstep = (0x10000/LCD.width());
-    for(unsigned short i=0; i<LCD.width(); i++)
+    unsigned short colorstep = (0x10000/myLCD.width());
+    for(unsigned short i=0; i<myLCD.width(); i++)
     {
-        LCD.pixel(i,0,i*colorstep); // write line
+        myLCD.pixel(i,0,i*colorstep); // write line
     }
     bool readerror=false;
-    for(unsigned short i=0; i<LCD.width(); i++) // verify line
+    for(unsigned short i=0; i<myLCD.width(); i++) // verify line
     {
-        readback = LCD.pixelread(i,0);
+        readback = myLCD.pixelread(i,0);
         if(readback!=i*colorstep)
         {
             readerror=true;
             pc.printf("pix %.4X readback %.4X\r\n", i*colorstep, readback);
         }
     }
-    LCD.locate(0,10);
-    LCD.printf("pixelread test %s\r\n", readerror ? "FAIL":"PASS");
+    myLCD.locate(0,10);
+    myLCD.printf("pixelread test %s\r\n", readerror ? "FAIL":"PASS");
     wait(2);
 
     
     
     while(1)
     {
-    LCD.set_orientation((orient++)%4);
-//    LCD.set_orientation(2);
-    LCD.cls();
-    LCD.set_font((unsigned char*) Terminal6x8,32,127,false); //variable width disabled
-    LCD.locate(0,0);
-    LCD.printf("Display Test\r\nSome text just to see if auto carriage return works correctly 00__");
-    LCD.set_font((unsigned char*) Terminal6x8);
- //   LCD.locate(0,0);
-    LCD.printf("\r\nDisplay Test\r\nSome text just to see if auto carriage return works correctly 00__");
+    myLCD.set_orientation((orient++)%4);
+//    myLCD.set_orientation(2);
+    myLCD.cls();
+    myLCD.set_font((unsigned char*) Terminal6x8,32,127,false); //variable width disabled
+    myLCD.locate(0,0);
+    myLCD.printf("Display Test\r\nSome text just to see if auto carriage return works correctly 00__");
+    myLCD.set_font((unsigned char*) Terminal6x8);
+ //   myLCD.locate(0,0);
+    myLCD.printf("\r\nDisplay Test\r\nSome text just to see if auto carriage return works correctly 00__");
     pc.printf("  Display Test \r\n");
     wait(3);
     t.reset();
-    LCD.cls();
+    myLCD.cls();
     time=t.read_us();
-    LCD.locate(2,55);
-    LCD.printf("cls: %.3fms", (float)time/1000);
+    myLCD.locate(2,55);
+    myLCD.printf("cls: %.3fms", (float)time/1000);
     pc.printf("cls: %.3fms\r\n", (float)time/1000);
     wait(3);
-    LCD.cls();
+
+    myLCD.cls();
     t.reset();
     // draw some graphics
-    //LCD.cls();
-    LCD.set_font((unsigned char*) Arial24x23);
-    LCD.locate(10,10);
-    LCD.printf("Test");
+    //myLCD.cls();
+    myLCD.set_font((unsigned char*) Arial24x23);
+    myLCD.locate(10,10);
+    myLCD.printf("Test");
 
-    LCD.line(0,0,LCD.width()-1,0,foregroundcolor);
-    LCD.line(0,0,0,LCD.height()-1,foregroundcolor);
-    LCD.line(0,0,LCD.width()-1,LCD.height()-1,foregroundcolor);
+    myLCD.line(0,0,myLCD.width()-1,0,foregroundcolor);
+    myLCD.line(0,0,0,myLCD.height()-1,foregroundcolor);
+    myLCD.line(0,0,myLCD.width()-1,myLCD.height()-1,foregroundcolor);
 
-    LCD.rect(10,30,50,40,foregroundcolor);
-    LCD.fillrect(60,30,100,40,foregroundcolor);
+    myLCD.rect(10,30,50,40,foregroundcolor);
+    myLCD.fillrect(60,30,100,40,foregroundcolor);
 
-    LCD.circle(150,32,30,foregroundcolor);
-    LCD.fillcircle(140,20,10,foregroundcolor);
+    myLCD.circle(150,32,30,foregroundcolor);
+    myLCD.fillcircle(140,20,10,foregroundcolor);
 
     double s;
 
-    for (unsigned short i=0; i<LCD.width(); i++)
+    for (unsigned short i=0; i<myLCD.width(); i++)
         {
         s =10 * sin((long double) i / 10 );
-        LCD.pixel(i,40 + (int)s ,foregroundcolor);
+        myLCD.pixel(i,40 + (int)s ,foregroundcolor);
         }
 
 
     time=t.read_us();
-    LCD.locate(2,55);
-    LCD.set_font((unsigned char*) Terminal6x8);
-    LCD.printf("plot: %.3fms", (float)time/1000);
+    myLCD.locate(2,55);
+    myLCD.set_font((unsigned char*) Terminal6x8);
+    myLCD.printf("plot: %.3fms", (float)time/1000);
     pc.printf("plot: %.3fms\r\n", (float)time/1000);
     wait(3);
-    LCD.cls();
+    myLCD.cls();
     t.reset();
     Bitmap_s pic = {
     64, // XSize
@@ -129,80 +135,92 @@
     8, // Bytes in Line
     burp,  // Pointer to picture data 
     };
-    LCD.Bitmap_BW(pic,LCD.width()-64,0);
+    myLCD.Bitmap_BW(pic,myLCD.width()-64,0);
     time=t.read_us();
-    LCD.locate(2,55);
-    LCD.printf("bmp: %.3fms", (float)time/1000);
+    myLCD.locate(2,55);
+    myLCD.printf("bmp: %.3fms", (float)time/1000);
     pc.printf("bmp: %.3fms\r\n", (float)time/1000);
     wait(3);
-    LCD.cls();
-    LCD.set_font((unsigned char*) Arial43x48_numb, 46, 58, false); //only numbers, variable-width disabled
+    myLCD.cls();
+    myLCD.set_font((unsigned char*) Arial43x48_numb, 46, 58, false); //only numbers, variable-width disabled
     t.reset();
-    LCD.locate(0,0);
-    LCD.printf("%d", 12345);
+    myLCD.locate(0,0);
+    myLCD.printf("%d", 12345);
     time=t.read_us();
-    LCD.locate(2,55);
-    LCD.set_font((unsigned char*) Terminal6x8);
-    LCD.printf("Big Font speed: %.3fms", (float)time/1000);
+    myLCD.locate(2,55);
+    myLCD.set_font((unsigned char*) Terminal6x8);
+    myLCD.printf("Big Font speed: %.3fms", (float)time/1000);
     pc.printf("Big Font speed: %.3fms\r\n", (float)time/1000);
     wait(3);
     // sparse pixels test
-    LCD.cls();
-    LCD.FastWindow(false);
+    myLCD.cls();
+    myLCD.FastWindow(true);
     t.reset();
     for(unsigned int i=0; i<20000; i++)
     {
-        LCD.pixel((i+(i*89)%LCD.width()), (i+(i*61)%LCD.height()), White);
+        myLCD.pixel((i+(i*89)%myLCD.width()), (i+(i*61)%myLCD.height()), White);
     }
-    LCD.copy_to_lcd();
+    myLCD.copy_to_lcd();
     time=t.read_us();
-    LCD.cls();
-    LCD.FastWindow(true);
+    myLCD.cls();
+    myLCD.FastWindow(false);
     t.reset();
     for(unsigned int i=0; i<20000; i++)
     {
-        LCD.pixel((i+(i*89)%LCD.width()), (i+(i*61)%LCD.height()), White);
+        myLCD.pixel((i+(i*89)%myLCD.width()), (i+(i*61)%myLCD.height()), White);
     }
-    LCD.copy_to_lcd();
+    myLCD.copy_to_lcd();
     time2=t.read_us();
-    LCD.locate(2,55);
-    LCD.printf("std: %.3fms fastw: %.3fms", (float)time/1000, (float)time2/1000);
-    pc.printf("std: %.3fms fastw: %.3fms\r\n", (float)time/1000, (float)time2/1000);
+    myLCD.locate(2,55);
+    myLCD.printf("std: %.3fms fastw: %.3fms", (float)time2/1000, (float)time/1000);
+    pc.printf("std: %.3fms fastw: %.3fms\r\n", (float)time2/1000, (float)time/1000);
     wait(3);
     // scroll test, only for TFT
-    LCD.cls();
-    LCD.set_font((unsigned char*) Arial24x23);
-    LCD.locate(10,10);
-    LCD.printf("Scrolling");
-    LCD.rect(0,0,LCD.width()-1,LCD.height()-1,White);
-    LCD.rect(1,1,LCD.width()-2,LCD.height()-2,Blue);
-    LCD.setscrollarea(0,LCD.sizeY());
+    myLCD.cls();
+    myLCD.set_font((unsigned char*) Arial24x23);
+    myLCD.locate(10,10);
+    myLCD.printf("Scrolling");
+    myLCD.rect(0,0,myLCD.width()-1,myLCD.height()-1,White);
+    myLCD.rect(1,1,myLCD.width()-2,myLCD.height()-2,Blue);
+    myLCD.setscrollarea(0,myLCD.sizeY());
     wait(1);
-    LCD.scroll(1); //up 1
+    myLCD.scroll(1); //up 1
     wait(1);
-    LCD.scroll(0); //center
+    myLCD.scroll(0); //center
     wait(1);
-    LCD.scroll(LCD.sizeY()-1); //down 1
+    myLCD.scroll(myLCD.sizeY()-1); //down 1
     wait(1);
-    LCD.scroll(LCD.sizeY()); // same as 0, center
+    myLCD.scroll(myLCD.sizeY()); // same as 0, center
     wait(1);
-    LCD.scroll(LCD.sizeY()>>1); // half screen
+    myLCD.scroll(myLCD.sizeY()>>1); // half screen
     wait(1);
-    LCD.scrollreset(); // center
+    myLCD.scrollreset(); // center
     wait(1);
-    for(unsigned short i=1; i<=LCD.sizeY(); i++)
+    for(unsigned short i=1; i<=myLCD.sizeY(); i++)
     {
-        LCD.scroll(i);
+        myLCD.scroll(i);
         wait_ms(2);
     }
     wait(2);
     // color inversion
     for(unsigned short i=0; i<=8; i++)
     {
-        LCD.invert(i&1);
+        myLCD.invert(i&1);
         wait_ms(200);
     }
     wait(2);
-    
+    // bmp 16bit test
+    myLCD.cls();
+    t.reset();
+    for(int y=0; y<myLCD.height(); y+=34)
+    {
+        for(int x=0; x<myLCD.width(); x+=48) myLCD.Bitmap(x,y,48,34,(unsigned char *)pavement_48x34);
+    }
+    time=t.read_us();
+    myLCD.locate(2,55);
+    myLCD.set_font((unsigned char*) Terminal6x8);
+    myLCD.printf("Bmp speed: %.3fms", (float)time/1000);
+    pc.printf("Bmp speed: %.3fms\r\n", (float)time/1000);
+    wait(2);
     }
 }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pavement_48x34.h	Mon Feb 23 23:40:04 2015 +0000
@@ -0,0 +1,207 @@
+__align(2)
+const unsigned char pavement_48x34[] = { /* 0X40,0X10,0X30,0X00,0X22,0X00,0X01,0X1B, */
+0X0F,0XB4,0XCD,0XB3,0XAD,0XAB,0X6D,0XA3,0XCB,0X82,0X6D,0X9B,0X6D,0X9B,0X4C,0X9B,
+0X0B,0X8B,0X48,0X62,0X4C,0X93,0XAD,0XA3,0XAE,0XA3,0X6C,0X9B,0X4C,0X93,0X0B,0X7B,
+0X8D,0X9B,0X4C,0X93,0XEB,0X82,0XEB,0X7A,0X8A,0X6A,0X6A,0X6A,0XCB,0X72,0XEB,0X7A,
+0X0B,0X83,0X4C,0X8B,0XAE,0X93,0XEE,0X9B,0XAE,0XA3,0XAE,0XA3,0XAE,0X9B,0XCE,0XA3,
+0XCE,0XAB,0XCA,0X6A,0X30,0X8C,0X71,0X94,0X71,0X94,0X31,0X8C,0XF0,0X83,0X10,0X8C,
+0XEF,0X83,0XD3,0XA4,0X51,0X94,0X71,0X94,0X0B,0X63,0X4C,0X93,0X0B,0X8B,0X50,0XB4,
+0X0E,0XBC,0XAD,0XAB,0X8D,0XA3,0XAD,0XAB,0X6C,0X9B,0X0F,0XAC,0XEE,0XAB,0X8D,0XA3,
+0X4C,0X93,0XAA,0X6A,0X6D,0X8B,0XAE,0XA3,0XAD,0XAB,0XCE,0XAB,0X2C,0X8B,0XAE,0X9B,
+0X6D,0X9B,0X2C,0X8B,0XCB,0X7A,0XCA,0X72,0XCB,0X72,0X49,0X5A,0XAA,0X6A,0X0C,0X73,
+0XEB,0X7A,0X6C,0X93,0X4C,0X93,0X8D,0X9B,0XCE,0XA3,0X8D,0XA3,0XAD,0XA3,0XCE,0XAB,
+0X2F,0XB4,0X4C,0X7B,0X51,0X8C,0X51,0X94,0X10,0X8C,0XF0,0X83,0X10,0X84,0X30,0X8C,
+0X51,0X94,0X92,0X9C,0X30,0X94,0X10,0X84,0X2C,0X6B,0X2C,0X8B,0XCE,0XAB,0X2F,0XBC,
+0XCE,0XB3,0XCE,0XAB,0XAD,0XAB,0XAD,0XAB,0X8D,0XA3,0XEF,0XAB,0XEE,0XAB,0XCE,0XA3,
+0X8D,0X9B,0X07,0X52,0XAE,0X9B,0X2F,0XB4,0XCE,0XAB,0XAE,0XA3,0X6D,0X93,0X4C,0X93,
+0X6D,0X9B,0X0B,0X83,0X2C,0X83,0X2C,0X83,0XEB,0X7A,0X6A,0X62,0XAA,0X6A,0X8E,0X8B,
+0X4D,0X83,0X4C,0X93,0X0B,0X8B,0X2C,0X8B,0X4C,0X93,0X8D,0X9B,0XCE,0XA3,0XAE,0XA3,
+0X70,0XC4,0XAA,0X62,0X31,0X8C,0X71,0X94,0XCF,0X83,0XAE,0X7B,0XCF,0X7B,0XCF,0X83,
+0XEF,0X83,0XAF,0X7B,0XEF,0X83,0X10,0X8C,0X2C,0X6B,0X6D,0X9B,0XCE,0XAB,0XEE,0XB3,
+0X8D,0XAB,0X6C,0X9B,0X4C,0X9B,0XCE,0XB3,0XAE,0XAB,0X8D,0XA3,0XEE,0XAB,0X8D,0XA3,
+0XAD,0XA3,0XAA,0X6A,0XF3,0XC4,0X0F,0XAC,0XAE,0XA3,0X6D,0X93,0X0B,0X83,0X8D,0X9B,
+0X6D,0X93,0XEF,0XA3,0X6D,0X93,0X2C,0X8B,0XEC,0X72,0XAB,0X62,0X0C,0X73,0X6D,0X83,
+0X8D,0X8B,0X8D,0X9B,0X4C,0X8B,0X2C,0X8B,0XEB,0X82,0X2C,0X93,0X6D,0X9B,0XEE,0XAB,
+0X12,0XCD,0X28,0X4A,0XF0,0X83,0X10,0X84,0XCF,0X83,0XCF,0X7B,0XF0,0X83,0XF0,0X83,
+0XEF,0X83,0XF0,0X83,0XCF,0X83,0X10,0X8C,0X2B,0X6B,0XAE,0X93,0XCE,0XAB,0XAD,0XAB,
+0XEF,0XAB,0XAE,0X9B,0XEE,0XAB,0XCE,0XA3,0XAE,0XA3,0XCE,0XAB,0XCE,0XA3,0XCE,0XA3,
+0XB1,0XBC,0X65,0X39,0X08,0X52,0XCB,0X72,0X6D,0X93,0X4D,0X93,0X2C,0X8B,0X4C,0X8B,
+0X8D,0X9B,0X6D,0X93,0X4C,0X93,0X4D,0X8B,0X6A,0X62,0X8A,0X5A,0XCB,0X72,0X0C,0X73,
+0X6D,0X83,0X4C,0X83,0XAA,0X62,0X0C,0X73,0X89,0X62,0XCB,0X72,0XEB,0X7A,0X2C,0X83,
+0X86,0X39,0XE3,0X20,0X6E,0X73,0X51,0X94,0XF0,0X83,0X31,0X8C,0X10,0X84,0XCF,0X83,
+0XEF,0X8B,0X51,0X94,0XF0,0X83,0X51,0X94,0X2C,0X6B,0X49,0X5A,0XCE,0XA3,0XAE,0XA3,
+0XAB,0X62,0XCF,0X8B,0X62,0X10,0XC3,0X18,0XE8,0X49,0XAB,0X62,0X29,0X52,0XC7,0X39,
+0X08,0X4A,0X08,0X42,0XA7,0X39,0XCB,0X62,0X08,0X4A,0XC3,0X20,0X05,0X29,0X86,0X39,
+0X6A,0X52,0X6A,0X5A,0XE8,0X41,0X86,0X39,0X08,0X42,0X49,0X52,0X44,0X29,0X25,0X29,
+0X08,0X52,0XE7,0X51,0X8A,0X6A,0XA6,0X41,0XC7,0X51,0X08,0X5A,0X28,0X62,0XAA,0X72,
+0X89,0X72,0X28,0X62,0XAA,0X72,0X65,0X39,0X46,0X29,0XEC,0X62,0X6A,0X52,0X49,0X4A,
+0X8A,0X5A,0X4D,0X73,0XEC,0X6A,0X08,0X4A,0XAB,0X5A,0XA7,0X39,0XCB,0X62,0X4D,0X73,
+0XCF,0X83,0X71,0X9C,0X45,0X29,0XC8,0X39,0XCF,0X83,0X0F,0X8C,0X30,0X8C,0X30,0X8C,
+0XCF,0X83,0XAE,0X7B,0X8E,0X7B,0X8E,0X7B,0X6D,0X7B,0X82,0X10,0XCB,0X62,0X6D,0X73,
+0X2C,0X6B,0XCB,0X62,0XAB,0X5A,0XEB,0X62,0X4D,0X73,0X2C,0X6B,0X8A,0X52,0XEB,0X7A,
+0X0B,0X83,0X4C,0X8B,0X4C,0X93,0X6D,0X93,0X4C,0X93,0XAE,0XA3,0X0E,0XAC,0XAD,0XA3,
+0X8C,0XA3,0X6C,0X9B,0X4C,0X93,0XA9,0X72,0X8B,0X5A,0X30,0X8C,0X10,0X8C,0XB2,0XA4,
+0X91,0X9C,0X91,0X9C,0X71,0X94,0XEF,0X83,0X6D,0X7B,0X10,0X8C,0X91,0X9C,0X50,0X9C,
+0XCF,0X8B,0XAE,0X83,0XE7,0X41,0X30,0X8C,0X50,0X94,0X30,0X8C,0X30,0X94,0X0F,0X8C,
+0X6D,0X73,0X6D,0X73,0X6D,0X73,0XEF,0X83,0XCF,0X83,0XC3,0X18,0X6D,0X73,0X4D,0X73,
+0X6D,0X73,0X0C,0X6B,0XEC,0X6A,0X0C,0X6B,0X2C,0X6B,0X4D,0X73,0X89,0X5A,0XEB,0X7A,
+0X0B,0X83,0X0B,0X7B,0XEB,0X82,0X0B,0X83,0X2C,0X93,0X2F,0XB4,0XCE,0XAB,0XAD,0XA3,
+0X6C,0XA3,0XEB,0X8A,0X6C,0X9B,0X47,0X5A,0X50,0X94,0X71,0X9C,0X71,0X94,0X91,0X9C,
+0XD2,0XA4,0X91,0X9C,0X10,0X8C,0X10,0X8C,0X30,0X94,0X71,0X9C,0X71,0X9C,0X30,0X94,
+0X0F,0X8C,0X0F,0X94,0X69,0X52,0XEF,0X8B,0X10,0X8C,0X30,0X8C,0XCE,0X83,0XCE,0X83,
+0XAE,0X7B,0XEF,0X83,0XCF,0X83,0X30,0X8C,0X0F,0X8C,0X45,0X29,0X6D,0X73,0X2C,0X6B,
+0X2C,0X6B,0X2D,0X73,0X2C,0X73,0X2C,0X6B,0X2C,0X73,0X2C,0X6B,0X8A,0X5A,0XCB,0X7A,
+0X0B,0X7B,0XCF,0X9B,0X6D,0X93,0XAD,0X9B,0X8D,0X9B,0XAD,0XA3,0XAD,0XA3,0XCE,0XAB,
+0X4C,0X9B,0X2C,0X93,0X70,0XB4,0X88,0X62,0X10,0X8C,0X51,0X94,0X71,0X94,0X91,0X9C,
+0X91,0X9C,0X92,0X9C,0X51,0X94,0X0F,0X8C,0X51,0X94,0X71,0X9C,0X30,0X94,0X50,0X94,
+0XEF,0X8B,0XCE,0X8B,0X28,0X4A,0XEF,0X8B,0XEF,0X8B,0XEF,0X8B,0X8E,0X7B,0XAF,0X83,
+0XCF,0X83,0XEF,0X8B,0X30,0X8C,0XEF,0X8B,0XAE,0X7B,0X44,0X29,0X2C,0X6B,0X4D,0X73,
+0X6D,0X73,0X2C,0X6B,0XAB,0X62,0XAA,0X5A,0X8E,0X7B,0XCF,0X83,0X69,0X52,0XCA,0X7A,
+0X4C,0X8B,0XAD,0X9B,0XAD,0XA3,0X8D,0X9B,0X6C,0X9B,0X8D,0X93,0XCE,0XAB,0XCE,0XAB,
+0X8D,0XA3,0XAD,0XAB,0X0F,0XB4,0XA9,0X6A,0XF0,0X8B,0X92,0X9C,0X71,0X9C,0X50,0X94,
+0X51,0X94,0X91,0X9C,0X51,0X94,0X30,0X8C,0XD2,0XA4,0XB2,0XA4,0X91,0X9C,0X50,0X9C,
+0X6E,0X7B,0XAE,0X8B,0X08,0X42,0X50,0X94,0X51,0X94,0XAE,0X7B,0X8E,0X7B,0X10,0X8C,
+0X50,0X94,0X30,0X8C,0XEF,0X83,0XCE,0X83,0X10,0X8C,0X65,0X31,0XAB,0X5A,0X8E,0X7B,
+0X4D,0X73,0X0C,0X6B,0XCB,0X62,0XCB,0X62,0XAE,0X7B,0X8E,0X7B,0XCB,0X62,0X0B,0X83,
+0X4C,0X8B,0X6C,0X93,0X8D,0X9B,0X4C,0X93,0X2C,0X8B,0XEE,0XA3,0X0E,0XB4,0XCD,0XAB,
+0XCD,0XA3,0XCE,0XAB,0XEE,0XB3,0XA9,0X72,0X10,0X8C,0X51,0X94,0X30,0X94,0XF0,0X8B,
+0X71,0X9C,0X30,0X94,0X51,0X94,0X30,0X94,0XB2,0XA4,0X91,0X9C,0X91,0XA4,0X10,0X8C,
+0XAE,0X7B,0X50,0X9C,0X69,0X52,0XD2,0XA4,0X30,0X94,0X10,0X8C,0X51,0X94,0XEF,0X8B,
+0XEF,0X83,0XAE,0X7B,0XAE,0X7B,0XEF,0X83,0X10,0X8C,0X08,0X42,0X6D,0X7B,0XAE,0X83,
+0X6D,0X73,0X0C,0X6B,0X0C,0X6B,0XEC,0X6A,0X2C,0X6B,0X2C,0X73,0X4D,0X73,0X2D,0X83,
+0X6D,0X8B,0X6D,0X93,0X2C,0X8B,0X4C,0X8B,0XAD,0X9B,0XEE,0XAB,0XEE,0XAB,0X8C,0XA3,
+0X4C,0X9B,0X8D,0XA3,0XCE,0XB3,0XAA,0X72,0X0C,0X6B,0X71,0X94,0X30,0X8C,0X30,0X8C,
+0XEF,0X8B,0X10,0X8C,0X51,0X9C,0X51,0X9C,0X71,0X9C,0X51,0X9C,0X30,0X94,0XAE,0X83,
+0X30,0X94,0X91,0XA4,0X4C,0X73,0X71,0X9C,0X0F,0X8C,0XCF,0X83,0XCF,0X83,0X30,0X8C,
+0XCF,0X83,0X6D,0X73,0XEF,0X83,0XCF,0X83,0XAE,0X83,0X66,0X31,0X6D,0X73,0XAE,0X83,
+0X2C,0X6B,0X4D,0X73,0X6D,0X7B,0X4D,0X7B,0XEB,0X62,0X8E,0X7B,0XEE,0X8B,0X66,0X39,
+0X2C,0X83,0X2C,0X83,0X2C,0X83,0XCE,0X9B,0XCE,0XA3,0X0F,0XAC,0XEF,0XAB,0X0B,0X8B,
+0X8D,0X9B,0X2F,0XB4,0XCD,0XB3,0XEA,0X7A,0XCF,0X83,0X30,0X8C,0XEF,0X8B,0X51,0X94,
+0X30,0X94,0X92,0X9C,0X51,0X9C,0X30,0X94,0X10,0X8C,0X30,0X94,0X91,0X9C,0X10,0X8C,
+0XCF,0X83,0X71,0X9C,0X69,0X52,0X30,0X8C,0XCF,0X83,0XCF,0X83,0XCF,0X83,0XEF,0X8B,
+0X10,0X8C,0XEF,0X83,0X10,0X8C,0X10,0X8C,0XAE,0X7B,0X04,0X21,0XAE,0X83,0X6D,0X73,
+0X0C,0X63,0X10,0X8C,0XCF,0X8B,0X6D,0X7B,0X0C,0X6B,0XAE,0X83,0XCE,0X83,0X49,0X62,
+0X2C,0X8B,0X0C,0X83,0XAE,0X9B,0XCE,0X9B,0XAD,0XA3,0XAD,0XA3,0XAD,0X9B,0X8D,0XA3,
+0XB1,0XBC,0XCE,0XAB,0XCE,0XB3,0X68,0X62,0XAE,0X83,0X10,0X8C,0XEF,0X8B,0X91,0X9C,
+0X91,0X9C,0X51,0X94,0X30,0X94,0XCF,0X83,0X30,0X94,0X71,0X9C,0X71,0X9C,0X50,0X94,
+0X10,0X8C,0X75,0XBD,0X29,0X4A,0XAE,0X7B,0X8E,0X7B,0XAE,0X7B,0XCF,0X83,0X0F,0X8C,
+0XEF,0X8B,0XEF,0X8B,0X10,0X8C,0X10,0X8C,0XEF,0X8B,0X86,0X39,0X8E,0X7B,0X6D,0X73,
+0X4D,0X73,0XCE,0X83,0XAE,0X83,0X4D,0X7B,0X4D,0X73,0X4D,0X73,0XD2,0XA4,0X08,0X5A,
+0XEB,0X82,0X6D,0X8B,0X50,0XAC,0XEE,0XAB,0XCE,0XA3,0XEE,0XAB,0XAD,0XAB,0X6C,0XA3,
+0XEE,0XAB,0XCD,0XB3,0X50,0XBC,0XCA,0X72,0XF0,0X8B,0X10,0X8C,0XEF,0X83,0X71,0X9C,
+0X91,0X9C,0X30,0X94,0XEF,0X8B,0X6E,0X7B,0XCF,0X83,0X71,0X9C,0X50,0X9C,0X30,0X94,
+0X92,0XA4,0X54,0XBD,0X6D,0X73,0XD3,0XA4,0X8E,0X7B,0X0F,0X8C,0XF3,0XAC,0X71,0X9C,
+0X10,0X8C,0XEF,0X83,0XEF,0X83,0X51,0X94,0X91,0X9C,0X85,0X31,0XCB,0X62,0X2C,0X6B,
+0X4D,0X73,0XCF,0X83,0X4D,0X73,0X2C,0X73,0X4D,0X73,0X6D,0X73,0X2F,0X8C,0XE7,0X49,
+0XEB,0X7A,0XAE,0X9B,0X50,0XAC,0X0F,0XAC,0X4F,0XB4,0XAD,0XA3,0XCD,0XAB,0X8D,0XA3,
+0XCE,0XAB,0XEE,0XAB,0XD1,0XD4,0XEA,0X6A,0X0C,0X6B,0X10,0X8C,0X30,0X8C,0XB2,0XA4,
+0XD2,0XA4,0X10,0X8C,0X8E,0X7B,0XCF,0X83,0X30,0X94,0X71,0X9C,0X50,0X94,0XB2,0XA4,
+0X49,0X52,0X24,0X29,0XE3,0X18,0X86,0X31,0X89,0X5A,0X28,0X4A,0X49,0X52,0X69,0X52,
+0X28,0X4A,0X8A,0X5A,0XE7,0X41,0X08,0X42,0X45,0X31,0X41,0X08,0X61,0X10,0XE7,0X41,
+0X08,0X42,0X28,0X4A,0XC7,0X41,0X65,0X31,0X85,0X31,0XE7,0X41,0XA6,0X39,0XC3,0X20,
+0X28,0X52,0X08,0X52,0XCA,0X6A,0X48,0X5A,0X89,0X5A,0XE7,0X49,0X69,0X5A,0X2C,0X7B,
+0XCA,0X6A,0X89,0X5A,0X28,0X52,0X66,0X31,0XC7,0X41,0XCB,0X62,0X69,0X52,0XCB,0X62,
+0XEB,0X6A,0X48,0X52,0X65,0X31,0XA6,0X39,0X08,0X42,0X69,0X52,0X89,0X5A,0XCA,0X62,
+0X6D,0X93,0X4C,0X83,0X4C,0X8B,0XEB,0X7A,0X0F,0X9C,0XA6,0X39,0X2C,0X7B,0XAE,0X8B,
+0XEF,0X93,0X0F,0X8C,0X8E,0X83,0X6E,0X7B,0XCF,0X83,0X2D,0X73,0X6D,0X7B,0XEF,0X8B,
+0X25,0X29,0XCB,0X72,0XCE,0XA3,0X2C,0X93,0X4C,0X93,0X6D,0X9B,0X8D,0XA3,0X4C,0X9B,
+0X2C,0X8B,0XCB,0X7A,0X0C,0X83,0XC7,0X49,0X09,0X42,0X4D,0X73,0X0F,0X8C,0X0F,0X8C,
+0XAF,0X83,0XCF,0X83,0X71,0X9C,0X92,0X9C,0X71,0X9C,0X30,0X94,0X0F,0X94,0X30,0X9C,
+0X30,0X94,0XCE,0X83,0X08,0X52,0X8D,0X93,0X2C,0X8B,0X2C,0X83,0X8D,0X93,0XEE,0X9B,
+0X0F,0XA4,0XAE,0X9B,0X4C,0X8B,0X8E,0X93,0XAE,0X93,0XAA,0X62,0X50,0XA4,0X8E,0X83,
+0X8E,0X83,0X0F,0X8C,0XAE,0X83,0X10,0X8C,0X30,0X94,0X0F,0X94,0XCE,0X83,0X10,0X8C,
+0X08,0X4A,0X2C,0X8B,0X8D,0XA3,0X2C,0X9B,0XAE,0XA3,0X50,0XB4,0XEE,0XAB,0X6D,0X9B,
+0XEB,0X8A,0XEB,0X82,0X4C,0X8B,0X08,0X52,0XCF,0X83,0X10,0X94,0XEF,0X93,0XCF,0X8B,
+0X10,0X94,0X91,0X9C,0X51,0X9C,0X71,0X9C,0X91,0XA4,0X30,0X94,0X51,0X9C,0X30,0X9C,
+0X50,0X9C,0XEF,0X8B,0XAA,0X6A,0X8D,0X93,0X4D,0X8B,0XAD,0X9B,0XAD,0X93,0XCE,0XA3,
+0X0F,0XA4,0XAE,0X9B,0XAE,0X9B,0XAE,0X9B,0XEF,0XA3,0X69,0X5A,0X30,0X9C,0XCF,0X8B,
+0XB2,0XA4,0X50,0X9C,0XEF,0X8B,0X0F,0X94,0X30,0X94,0XEF,0X8B,0XAE,0X83,0X0C,0X6B,
+0XC7,0X41,0X89,0X72,0X6C,0X9B,0X4C,0X9B,0X2F,0XAC,0XEE,0XAB,0XCE,0XA3,0X8D,0X93,
+0X6D,0X93,0X6C,0X93,0X6D,0X8B,0XC6,0X41,0XCF,0X83,0X0F,0X94,0XEF,0X93,0XAE,0X8B,
+0XEF,0X93,0X30,0X9C,0X30,0X9C,0X0F,0X94,0XCE,0X8B,0XEF,0X8B,0X91,0XA4,0X91,0XA4,
+0X51,0X9C,0X8D,0X7B,0X49,0X5A,0XAE,0X93,0XEF,0X9B,0XCE,0X9B,0X6D,0X93,0X6D,0X8B,
+0XCE,0X9B,0XCE,0X9B,0XAE,0X93,0XCE,0X9B,0XEE,0XA3,0X69,0X5A,0XEF,0X93,0XEF,0X93,
+0X50,0X9C,0X71,0X9C,0XEF,0X8B,0X6D,0X7B,0X0F,0X8C,0XAE,0X83,0XAE,0X83,0X4D,0X73,
+0XC7,0X41,0XCA,0X82,0XEB,0X8A,0X4C,0X93,0X0F,0XB4,0X71,0XBC,0X8E,0X9B,0XEB,0X7A,
+0X6D,0X93,0X2B,0X83,0XAA,0X72,0X8A,0X62,0X6E,0X7B,0X30,0X94,0XEF,0X93,0XEF,0X93,
+0X0F,0X94,0X0F,0X94,0XCF,0X8B,0XCF,0X8B,0X0F,0X94,0X30,0X9C,0X71,0XA4,0X71,0XA4,
+0X51,0X9C,0XEF,0X83,0X8A,0X62,0XEF,0XA3,0XCE,0X9B,0XAE,0X9B,0X2C,0X83,0XCE,0X9B,
+0X0F,0XA4,0XAD,0X9B,0X6D,0X93,0X6D,0X8B,0XCE,0X9B,0X48,0X5A,0X0F,0X94,0X71,0XA4,
+0X30,0X9C,0X71,0X9C,0X8D,0X7B,0XEF,0X8B,0X30,0X9C,0XEF,0X8B,0X8E,0X83,0X0F,0X8C,
+0X49,0X52,0X8A,0X72,0X2C,0X93,0X6D,0X9B,0XAE,0XA3,0X8D,0X9B,0X2C,0X8B,0X0C,0X83,
+0X0B,0X83,0X0B,0X83,0X0C,0X7B,0XCA,0X6A,0X30,0X94,0X50,0X9C,0XEF,0X93,0XCF,0X8B,
+0XCF,0X8B,0XEF,0X8B,0X30,0X9C,0XCF,0X8B,0XEF,0X93,0X0F,0X94,0X71,0XA4,0X10,0X94,
+0X30,0X9C,0XAE,0X83,0XEB,0X72,0X2F,0XAC,0X2F,0XAC,0XAE,0X9B,0XCE,0X93,0XEF,0XA3,
+0XEE,0X9B,0X0C,0X83,0XEB,0X7A,0XCE,0X93,0XEE,0X9B,0X28,0X52,0X30,0X9C,0XEF,0X8B,
+0XEF,0X8B,0XEF,0X8B,0X30,0X94,0X30,0X94,0X30,0X9C,0X30,0X94,0XCF,0X83,0XCE,0X83,
+0XA6,0X39,0XEB,0X7A,0X8E,0X9B,0X8D,0X9B,0X6D,0X9B,0X6D,0X9B,0XCB,0X7A,0X4C,0X8B,
+0X2B,0X8B,0X8D,0X9B,0X8D,0X93,0X0B,0X7B,0XCF,0X83,0X0F,0X94,0XEF,0X8B,0XCF,0X8B,
+0XEF,0X8B,0X10,0X94,0X10,0X94,0X30,0X94,0X30,0X94,0X30,0X9C,0XEF,0X93,0XEF,0X93,
+0X30,0X94,0XAD,0X83,0X8A,0X6A,0X8D,0X93,0XAE,0X93,0XAE,0X93,0XAE,0X9B,0XEF,0XA3,
+0XAD,0X93,0X4D,0X8B,0XCE,0X93,0XEE,0X9B,0XEF,0XA3,0X0B,0X73,0XAE,0X8B,0XCE,0X8B,
+0XCF,0X8B,0X30,0X94,0X50,0X94,0X10,0X94,0XAE,0X83,0X8E,0X7B,0X8E,0X7B,0X30,0X94,
+0XE8,0X41,0X6D,0X93,0XAD,0XA3,0X8D,0X9B,0X8D,0X9B,0XEB,0X82,0X8D,0X93,0X4C,0X8B,
+0X8D,0X9B,0XCE,0XA3,0X8D,0X93,0XEA,0X72,0X0D,0X6B,0XEF,0X8B,0XEF,0X93,0XAE,0X8B,
+0XEF,0X8B,0X30,0X9C,0X0F,0X94,0X30,0X94,0X91,0XA4,0X30,0X9C,0X50,0X9C,0X30,0X9C,
+0X71,0XA4,0XB1,0XA4,0X69,0X62,0X4C,0X8B,0X4D,0X8B,0XAE,0X9B,0XCE,0X9B,0X0F,0XA4,
+0XEF,0X9B,0XCE,0X9B,0X0F,0XA4,0X30,0XAC,0XEF,0XA3,0X69,0X5A,0X6D,0X7B,0X71,0X9C,
+0X51,0X9C,0X91,0XA4,0X10,0X94,0XAE,0X83,0X2C,0X73,0X8E,0X7B,0X6E,0X7B,0XEF,0X8B,
+0X08,0X4A,0X2C,0X8B,0XAD,0XA3,0XAD,0XA3,0XCE,0XA3,0X8D,0X9B,0X8D,0X93,0X8D,0X9B,
+0X8D,0X9B,0X8D,0X9B,0X8D,0X9B,0X88,0X62,0X4D,0X73,0XCF,0X8B,0XEF,0X93,0XCF,0X8B,
+0X71,0X9C,0X71,0X9C,0XEF,0X8B,0X0F,0X94,0X30,0X9C,0XEF,0X93,0X30,0X94,0X30,0X9C,
+0X50,0X9C,0X0F,0X8C,0X69,0X62,0X6D,0X8B,0XAE,0X93,0XCE,0X9B,0X0F,0XA4,0XEF,0XA3,
+0X2F,0XA4,0X0F,0XA4,0XCE,0X9B,0XCE,0X9B,0X0F,0XA4,0XE7,0X49,0X30,0X9C,0X71,0X9C,
+0X92,0X9C,0X91,0XA4,0X10,0X94,0X0F,0X8C,0XAE,0X83,0X51,0X9C,0XAE,0X83,0XAE,0X7B,
+0XC7,0X39,0X2C,0X8B,0X6D,0X9B,0X6D,0X9B,0X8D,0X9B,0X4C,0X8B,0X6C,0X93,0X8D,0XA3,
+0X2B,0X93,0X4C,0X93,0X6D,0X93,0X0A,0X73,0X4D,0X7B,0XCF,0X83,0XCF,0X8B,0XEF,0X93,
+0X0F,0X94,0X50,0X9C,0X30,0X94,0XEF,0X8B,0X10,0X8C,0X0F,0X94,0X50,0X9C,0X0F,0X94,
+0X10,0X94,0X0F,0X8C,0X69,0X62,0X8E,0X93,0XAE,0X93,0XCE,0X9B,0X0F,0XA4,0XEF,0XA3,
+0X0F,0XA4,0XEE,0XA3,0X0F,0XA4,0XCE,0X9B,0X91,0XB4,0XEB,0X62,0X92,0XA4,0X91,0XA4,
+0XD2,0XA4,0X92,0X9C,0X30,0X94,0X0F,0X8C,0XAE,0X83,0XCE,0X83,0XCF,0X83,0X51,0X94,
+0X8A,0X5A,0X4C,0X93,0XCB,0X82,0X6D,0X9B,0X4D,0X93,0X0C,0X83,0X6C,0X9B,0X4C,0X93,
+0X8D,0X9B,0XEF,0XAB,0XEF,0XA3,0X0E,0X94,0X4D,0X73,0X10,0X8C,0XEF,0X8B,0XCF,0X8B,
+0X30,0X94,0X50,0X9C,0X30,0X94,0XEF,0X8B,0XEF,0X8B,0X30,0X94,0X71,0X9C,0X51,0X9C,
+0X71,0X9C,0X6F,0X9C,0XEB,0X72,0X8E,0X8B,0XEF,0X9B,0X50,0XAC,0X0F,0XA4,0X0F,0XA4,
+0X48,0X5A,0X48,0X5A,0XCA,0X72,0XAA,0X6A,0XCA,0X6A,0X04,0X21,0X07,0X4A,0X69,0X52,
+0XCA,0X62,0X4C,0X73,0X6D,0X7B,0XCB,0X62,0XCB,0X62,0X0C,0X6B,0X69,0X52,0X2C,0X6B,
+0XE3,0X20,0X45,0X39,0XC7,0X49,0XC7,0X49,0X08,0X5A,0X49,0X62,0XCA,0X72,0XAA,0X72,
+0X07,0X5A,0X69,0X6A,0X2B,0X7B,0X65,0X31,0XE3,0X20,0X89,0X5A,0X49,0X5A,0XEB,0X62,
+0X2C,0X73,0XCA,0X62,0X0B,0X6B,0X2C,0X73,0X0C,0X6B,0X2C,0X73,0X6D,0X7B,0XCB,0X62,
+0X4C,0X73,0XA5,0X31,0XC7,0X41,0X2C,0X7B,0XCB,0X6A,0X4C,0X83,0X2C,0X7B,0X89,0X6A,
+0XCE,0XAB,0X0F,0XB4,0X8D,0XA3,0X4C,0X93,0XAE,0XA3,0X8D,0X9B,0XAD,0X9B,0X08,0X5A,
+0X0C,0X8B,0XC7,0X49,0XA7,0X41,0X09,0X52,0X0B,0X8B,0XAD,0XA3,0X8D,0XA3,0X0B,0X8B,
+0XCB,0X7A,0X69,0X72,0X89,0X72,0X08,0X52,0XE3,0X28,0X62,0X08,0X26,0X29,0X69,0X62,
+0XEA,0X7A,0X49,0X62,0XE7,0X51,0XEB,0X82,0XEB,0X82,0X0B,0X83,0X2C,0X8B,0X2C,0X8B,
+0XAE,0X93,0XA6,0X39,0XAB,0X5A,0X2D,0X6B,0XAE,0X7B,0XCF,0X83,0X6D,0X73,0XF0,0X83,
+0X8E,0X7B,0X10,0X8C,0X50,0X94,0X30,0X94,0XC3,0X18,0XA7,0X41,0XEB,0X7A,0XAE,0X9B,
+0X4F,0XBC,0X0F,0XB4,0X0E,0XB4,0XEE,0XB3,0XEE,0XB3,0X0F,0XB4,0X8D,0XA3,0X0B,0X93,
+0X8D,0X9B,0X48,0X62,0X49,0X6A,0XAB,0X7A,0X2B,0X93,0X6C,0X9B,0X8D,0XA3,0X8D,0X9B,
+0X2C,0X93,0X0C,0X8B,0XCB,0X7A,0XEB,0X82,0XAA,0X6A,0X86,0X39,0X69,0X5A,0XEB,0X7A,
+0X0B,0X83,0X4C,0X93,0X4C,0X93,0X6D,0X9B,0X4C,0X93,0XAD,0XA3,0XAD,0XAB,0XCE,0XAB,
+0X2F,0XB4,0XEB,0X6A,0X10,0X8C,0X30,0X8C,0X71,0X94,0X91,0X9C,0X10,0X8C,0X51,0X94,
+0X30,0X8C,0X51,0X94,0X10,0X94,0X10,0X8C,0X08,0X42,0X8A,0X72,0XEE,0XB3,0X50,0XBC,
+0X0F,0XBC,0X0E,0XB4,0XAE,0XAB,0X8D,0XA3,0X0F,0XB4,0XCE,0XAB,0X8D,0XA3,0X2C,0X93,
+0X2F,0XB4,0XC7,0X49,0X6C,0X9B,0X4C,0X9B,0X2C,0X93,0X6D,0X9B,0X6D,0X9B,0X6C,0X9B,
+0X2C,0X93,0XCB,0X7A,0XCB,0X7A,0X4D,0X8B,0XCB,0X7A,0XEB,0X7A,0XEB,0X72,0X6D,0X83,
+0X6D,0X8B,0XAD,0X9B,0XAD,0XA3,0X4C,0X93,0XAE,0X9B,0X2F,0XB4,0XEE,0XB3,0XAD,0XAB,
+0XEE,0XB3,0XCA,0X62,0X71,0X94,0XB2,0X9C,0XF3,0XA4,0X92,0X9C,0X10,0X8C,0X10,0X8C,
+0X71,0X9C,0X51,0X94,0X0F,0X8C,0X30,0X94,0X89,0X5A,0XCE,0XAB,0X0E,0XB4,0X2F,0XBC,
+0XCE,0XAB,0XAD,0XAB,0X6D,0X9B,0X2F,0XB4,0X0F,0XBC,0XCE,0XAB,0XEE,0XAB,0XCE,0XA3,
+0XEE,0XAB,0X89,0X6A,0X8D,0XA3,0X6D,0X9B,0XEF,0XA3,0X70,0XB4,0X0F,0XB4,0X8D,0XA3,
+0X2C,0X93,0XEB,0X82,0X0C,0X8B,0X8D,0X9B,0XCB,0X72,0X0B,0X7B,0X4C,0X83,0X6D,0X8B,
+0X8D,0X93,0X4C,0X93,0XAD,0X9B,0X2C,0X93,0XAE,0X9B,0X2F,0XB4,0X0F,0XB4,0X2C,0X93,
+0X30,0XB4,0X69,0X52,0X92,0X9C,0XB2,0X9C,0X91,0X9C,0XEF,0X83,0XEF,0X83,0X30,0X8C,
+0X92,0X9C,0XEF,0X83,0XEF,0X8B,0XEF,0X8B,0X6D,0X73,0XAE,0XA3,0X2F,0XBC,0X0F,0XB4,
+0XAD,0XAB,0X8D,0XA3,0X0F,0XB4,0X0F,0XB4,0XCE,0XAB,0XAD,0XA3,0XAD,0XA3,0XEE,0XAB,
+0X0F,0XAC,0X48,0X62,0X8D,0XA3,0X8D,0X9B,0XEE,0XAB,0XEE,0XB3,0X50,0XB4,0X4C,0X93,
+0X2C,0X93,0X2C,0X93,0X6C,0X9B,0X0C,0X8B,0XCB,0X72,0X0B,0X7B,0X2C,0X83,0X4C,0X8B,
+0X4C,0X93,0X2C,0X8B,0X0B,0X8B,0X4C,0X93,0X6D,0X9B,0XEE,0XAB,0XAD,0XA3,0X8D,0XA3,
+0X0F,0XB4,0XCA,0X62,0X91,0X94,0X92,0X9C,0X30,0X8C,0XEF,0X83,0X6E,0X73,0X51,0X94,
+0XCF,0X83,0XAE,0X83,0XEF,0X83,0XEF,0X83,0X2C,0X6B,0X70,0XBC,0X50,0XBC,0X6D,0XA3,
+0X8D,0XA3,0XCD,0XB3,0XCD,0XB3,0XCE,0XAB,0X8D,0XA3,0X0B,0X93,0X2C,0X93,0XAD,0XA3,
+0X8D,0X9B,0X89,0X6A,0X8D,0X9B,0X8D,0XA3,0XCE,0XA3,0XAD,0XA3,0X6D,0X9B,0XCB,0X7A,
+0X2C,0X8B,0XAD,0X9B,0X4C,0X9B,0X0C,0X8B,0X8A,0X62,0X49,0X5A,0X2C,0X83,0X4C,0X8B,
+0X2C,0X8B,0X2C,0X83,0X2C,0X83,0X6D,0X93,0XEF,0XA3,0X0F,0XAC,0XEF,0XA3,0XCE,0XA3,
+0X0F,0XB4,0XEB,0X6A,0X92,0X94,0X51,0X94,0X51,0X94,0X10,0X8C,0X10,0X8C,0X10,0X8C,
+0XCF,0X83,0XCF,0X7B,0XF0,0X83,0X10,0X8C,0X6D,0X73,0XCE,0XAB,0X4D,0X8B,0X2C,0X93,
+};