Ver Fonte

Version 1.5.3

- added support for GDEQ0426T82 4.26" b/w 800x480
- added support for GDEY0266F51H 2.66" 4-color 184x460
- added support for GDEY029F51H 2.9" 4-color 168x384
- added support for GDEY0420F51 4.2" 4-color 400x300
- added support for Waveshare 3.00" 4-color e-paper display 168x400
- updated support for Waveshare 4.37" 4-color e-paper display 512x368
- the 4-color displays have partial window addressing and refresh
- renamed GDEY042T91 to its new official name GDEY042T81
ZinggJM há 3 anos atrás
pai
commit
17cf7f4597
78 ficheiros alterados com 11692 adições e 418 exclusões
  1. 52 9
      ConnectingHardware.md
  2. 18 2
      README.md
  3. 109 2
      examples/GxEPD2_Example/GxEPD2_Example.ino
  4. 43 8
      examples/GxEPD2_Example/GxEPD2_display_selection.h
  5. 38 8
      examples/GxEPD2_Example/GxEPD2_display_selection_added.h
  6. 23 1
      examples/GxEPD2_Example/GxEPD2_display_selection_new_style.h
  7. 6 1
      examples/GxEPD2_Example/GxEPD2_selection_check.h
  8. 6 3
      examples/GxEPD2_Example/GxEPD2_wiring_examples.h
  9. 43 8
      examples/GxEPD2_GFX_Example/GxEPD2_display_selection.h
  10. 38 8
      examples/GxEPD2_GFX_Example/GxEPD2_display_selection_added.h
  11. 23 1
      examples/GxEPD2_GFX_Example/GxEPD2_display_selection_new_style.h
  12. 6 1
      examples/GxEPD2_GFX_Example/GxEPD2_selection_check.h
  13. 6 3
      examples/GxEPD2_GFX_Example/GxEPD2_wiring_examples.h
  14. 43 8
      examples/GxEPD2_HelloWorld/GxEPD2_display_selection.h
  15. 38 8
      examples/GxEPD2_HelloWorld/GxEPD2_display_selection_added.h
  16. 23 1
      examples/GxEPD2_HelloWorld/GxEPD2_display_selection_new_style.h
  17. 6 1
      examples/GxEPD2_HelloWorld/GxEPD2_selection_check.h
  18. 6 3
      examples/GxEPD2_HelloWorld/GxEPD2_wiring_examples.h
  19. 23 1
      examples/GxEPD2_NotPagedExample/GxEPD2_display_selection_new_style.h
  20. 6 1
      examples/GxEPD2_NotPagedExample/GxEPD2_selection_check.h
  21. 6 3
      examples/GxEPD2_NotPagedExample/GxEPD2_wiring_examples.h
  22. 23 1
      examples/GxEPD2_PagedDisplayUsingCallback/GxEPD2_display_selection_new_style.h
  23. 6 1
      examples/GxEPD2_PagedDisplayUsingCallback/GxEPD2_selection_check.h
  24. 6 3
      examples/GxEPD2_PagedDisplayUsingCallback/GxEPD2_wiring_examples.h
  25. 23 1
      examples/GxEPD2_RotaryUsingBusyCallback/GxEPD2_display_selection_new_style.h
  26. 6 1
      examples/GxEPD2_RotaryUsingBusyCallback/GxEPD2_selection_check.h
  27. 6 3
      examples/GxEPD2_RotaryUsingBusyCallback/GxEPD2_wiring_examples.h
  28. 19 4
      examples/GxEPD2_SD_AVR_Example/GxEPD2_wiring_examples.h
  29. 23 1
      examples/GxEPD2_SD_Example/GxEPD2_display_selection_new_style.h
  30. 6 1
      examples/GxEPD2_SD_Example/GxEPD2_selection_check.h
  31. 6 3
      examples/GxEPD2_SD_Example/GxEPD2_wiring_examples.h
  32. 23 1
      examples/GxEPD2_SerialFlash_Example/GxEPD2_display_selection_new_style.h
  33. 6 1
      examples/GxEPD2_SerialFlash_Example/GxEPD2_selection_check.h
  34. 6 3
      examples/GxEPD2_SerialFlash_Example/GxEPD2_wiring_examples.h
  35. 23 1
      examples/GxEPD2_Spiffs_Example/GxEPD2_display_selection_new_style.h
  36. 6 1
      examples/GxEPD2_Spiffs_Example/GxEPD2_selection_check.h
  37. 6 3
      examples/GxEPD2_Spiffs_Example/GxEPD2_wiring_examples.h
  38. 23 1
      examples/GxEPD2_U8G2_Fonts_Example/GxEPD2_display_selection_new_style.h
  39. 6 1
      examples/GxEPD2_U8G2_Fonts_Example/GxEPD2_selection_check.h
  40. 6 3
      examples/GxEPD2_U8G2_Fonts_Example/GxEPD2_wiring_examples.h
  41. 288 0
      examples/GxEPD2_WiFi_Example/GxEPD2_display_selection_new_style.h
  42. 111 0
      examples/GxEPD2_WiFi_Example/GxEPD2_selection_check.h
  43. 6 3
      examples/GxEPD2_WiFi_Example/GxEPD2_wiring_examples.h
  44. 11 0
      extras/sw_spi/src/GxEPD2_EPD.cpp
  45. 2 0
      extras/sw_spi/src/GxEPD2_EPD.h
  46. 24 2
      extras/tests/GxEPD2_MinimumExample/GxEPD2_display_selection_new_style.h
  47. 6 1
      extras/tests/GxEPD2_MinimumExample/GxEPD2_selection_check.h
  48. 6 3
      extras/tests/GxEPD2_MinimumExample/GxEPD2_wiring_examples.h
  49. 43 8
      extras/tests/GxEPD2_RefreshTests/GxEPD2_display_selection.h
  50. 38 8
      extras/tests/GxEPD2_RefreshTests/GxEPD2_display_selection_added.h
  51. 24 2
      extras/tests/GxEPD2_RefreshTests/GxEPD2_display_selection_new_style.h
  52. 6 1
      extras/tests/GxEPD2_RefreshTests/GxEPD2_selection_check.h
  53. 10 3
      extras/tests/GxEPD2_RefreshTests/GxEPD2_wiring_examples.h
  54. 1 1
      library.properties
  55. 12 5
      src/GxEPD2.h
  56. 12 0
      src/GxEPD2_4C.h
  57. 21 21
      src/GxEPD2_BW.h
  58. 2 0
      src/GxEPD2_EPD.cpp
  59. 1 0
      src/GxEPD2_EPD.h
  60. 1020 0
      src/bitmaps/Bitmaps4c168x384.h
  61. 1047 0
      src/bitmaps/Bitmaps4c184x360.h
  62. 1887 0
      src/bitmaps/Bitmaps4c400x300.h
  63. 1089 0
      src/bitmaps/WS_Bitmaps4c168x400.h
  64. 1 1
      src/epd/GxEPD2_150_BN.cpp
  65. 976 0
      src/epd4c/GxEPD2_266c_GDEY0266F51H.cpp
  66. 78 0
      src/epd4c/GxEPD2_266c_GDEY0266F51H.h
  67. 975 0
      src/epd4c/GxEPD2_290c_GDEY029F51H.cpp
  68. 77 0
      src/epd4c/GxEPD2_290c_GDEY029F51H.h
  69. 933 0
      src/epd4c/GxEPD2_300c.cpp
  70. 77 0
      src/epd4c/GxEPD2_300c.h
  71. 981 0
      src/epd4c/GxEPD2_420c_GDEY0420F51.cpp
  72. 78 0
      src/epd4c/GxEPD2_420c_GDEY0420F51.h
  73. 513 198
      src/epd4c/GxEPD2_437c.cpp
  74. 4 6
      src/epd4c/GxEPD2_437c.h
  75. 417 0
      src/gdeq/GxEPD2_426_GDEQ0426T82.cpp
  76. 84 0
      src/gdeq/GxEPD2_426_GDEQ0426T82.h
  77. 34 34
      src/gdey/GxEPD2_420_GDEY042T81.cpp
  78. 6 6
      src/gdey/GxEPD2_420_GDEY042T81.h

+ 52 - 9
ConnectingHardware.md

@@ -19,32 +19,75 @@
 
 #### mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 - BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
-
-#### mapping suggestion from Waveshare SPI e-Paper to ESP8266 NodeMCU:
-- BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
+- NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
+- NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
+- NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 #### mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
 - BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
+- NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
+- NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
+- NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
-#### mapping suggestion (by G6EJD) from Waveshare SPI e-Paper to ESP8266 Huzzah:
-- BUSY -> 03, RST -> 15, DC -> 02, CS -> 00, CLK -> 14, DIN -> 13, GND -> GND, 3.3V -> 3.3V
+#### mapping of Waveshare e-Paper ESP8266 Driver Board, new version
+- BUSY -> GPIO5, RST -> GPIO2, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
+- NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
+-      the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
+
+#### mapping of Waveshare e-Paper ESP8266 Driver Board, old version
+- BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
+- NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
+-      the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
 
 #### mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
 - NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
 - BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
 
-#### mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
+#### mapping of Waveshare ESP32 Driver Board
+- BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14
+- NOTE: this board uses "unusual" SPI pins and requires re-mapping of HW SPI to these pins in SPIClass
+-       see example GxEPD2_WS_ESP32_Driver.ino, it shows how this can be done easily
+
+#### mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
+- BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
+- note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
+
+#### mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
+- BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
+- for use with Board: "ESP32 Dev Module":
+
+#### new mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
 - BUSY -> A1, RST -> A2, DC -> A3, CS-> A4, CLK -> A5, DIN -> A7
 
 #### mapping suggestion for AVR, UNO, NANO etc.
 - BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
+#### mapping suggestion for AVR, Arduino Micro, Leonardo
+- note: on Leonardo board HW SPI pins are on 6-pin ICSP header
+- BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
+
+#### mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
+- BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
+
 #### mapping suggestion for Arduino MEGA
 - BUSY -> 7, RST -> 9, DC -> 8, CS-> 53, CLK -> 52, DIN -> 51
 
-#### mapping suggestion for Arduino DUE
-- BUSY -> 7, RST -> 9, DC -> 8, CS-> 77, CLK -> 76, DIN -> 75
-- SPI pins are on 6 pin 2x3 SPI header
+#### mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
+- BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
+- SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
+
+#### mapping suggestion for Arduino MKR1000 or MKRZERO
+- note: can't use SS on MKR1000: is defined as 24, should be 4
+- BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
+
+#### mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
+- BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
+
+#### mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+- BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+#### mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
+- BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3
 
 ## connection scheme for (discontinued) DESTM32-S2 connection board for e-paper panels:
 

+ 18 - 2
README.md

@@ -43,6 +43,8 @@
 
 - Waveshare e-paper displays with SPI: http://forum.arduino.cc/index.php?topic=487007.0
 - Good Display ePaper for Arduino : https://forum.arduino.cc/index.php?topic=436411.0
+- Note that these topics are closed. Use only for reference.
+- create a new topic for each question or issue in https://forum.arduino.cc/c/using-arduino/displays/23
 
 ### Note on documentation
 - GxEPD2 uses Adafruit_GFX for Graphics and Text support, which is well documented there
@@ -78,6 +80,7 @@
 - GDEW026M01     2.6" b/w 152x296, UC8151 (IL0373), DES
 - DEPG0266BN     2.66" b/w 152x296, SSD1680, e.g. LILYGO® TTGO T5 2.66 inch
 - GDEY0266Z90    2.66" b/w/r 152x296, SSD1680
+- GDEY0266F51H   2.66" 4-color 184x460, JD79667
 - GDEW027C44     2.7" b/w/r 176x264, IL91874
 - GDEW027W3      2.7" b/w 176x264, EK79652 (IL91874)
 - GDEY027T91     2.7" b/w 176x264, SSD1680
@@ -92,13 +95,17 @@
 - GDEM029C90     2.9" b/w/y 128x296, SSD1680
 - DEPG0290BS     2.9" b/w 128x296, SSD1680, e.g. LILYGO® TTGO T5 V2.4.1 2.9"
 - GDEY029T94     2.9" b/w 128x296, SSD1680
+- GDEY029F51H    2.9" 4-color 168x384, JD79667
+- Waveshare3inch4color 3.0" 4-color 168x400
 - ED037TC1       3.7" b/w 280x480, SSD1677, Waveshare 3.7"
 - GDEW0371W7     3.7" b/w 240x416, UC8171 (IL0324)
 - GDEW042T2      4.2" b/w 400x300, UC8176 (IL0398)
 - GDEW042M01     4.2" b/w 400x300, UC8176 (IL0398), DES
 - GDEW042Z15     4.2" b/w/r 400x300, UC8176 (IL0398)
 - GDEQ042Z21     4.2" b/w/r 400x300, UC8276, (Waveshare V2)
-- GDEY042T91     4.2" b/w 400x300, SSD1683
+- GDEY042T81     4.2" b/w 400x300, SSD1683
+- GDEY0420F51    4.2" 4-color 400x300, HX8717
+- GDEQ0426T82    4.26" b/w 800x480, SSD1677
 - Waveshare437inch4color Waveshare 4.37" 4-color e-paper display 512x368 
 - ACeP565        5.65" Waveshare 5.65" 7-color e-paper display 600x448
 - GDEW0583T7     5.83" b/w 600x448, UC8159c (IL0371)
@@ -126,7 +133,16 @@
 - promotion panels from suppliers are welcome, to add support to GxEPD2
 - donation panels from users are welcome, to add support to GxEPD2
 
-### Version 1.5.2
+### Version 1.5.3
+- added support for GDEQ0426T82 4.26" b/w 800x480
+- added support for GDEY0266F51H 2.66" 4-color 184x460
+- added support for GDEY029F51H 2.9" 4-color 168x384
+- added support for GDEY0420F51 4.2" 4-color 400x300
+- added support for Waveshare 3.00" 4-color e-paper display 168x400
+- updated support for Waveshare 4.37" 4-color e-paper display 512x368
+- the 4-color displays have partial window addressing and refresh
+- renamed GDEY042T91 to its new official name GDEY042T81
+#### Version 1.5.2
 - added support for Waveshare 4.37" 4-color e-paper display 512x368
 - fixed __has_include test (for packages that don't support __has_include)
 - added WIDTH_VISIBLE for correct graphics width for 2.13" b/w 122x250

+ 109 - 2
examples/GxEPD2_Example/GxEPD2_Example.ino

@@ -81,7 +81,13 @@
 #include "bitmaps/Bitmaps3c800x480.h" // 7.5"  b/w/r
 #include "bitmaps/Bitmaps3c880x528.h" // 7.5"  b/w/r
 #include "bitmaps/WS_Bitmaps800x600.h" // 6.0"  grey
+// 4-color
+#include "bitmaps/Bitmaps4c184x360.h" // 2.66" 4-color
+#include "bitmaps/Bitmaps4c168x384.h" // 2.9" 4-color
 #include "bitmaps/WS_Bitmaps4c168x168.h" // 4.37" 4-color
+#include "bitmaps/WS_Bitmaps4c168x400.h" // 3.00" 4-color
+#include "bitmaps/Bitmaps4c400x300.h" // 4.2"" 4-color
+// 7-color
 #include "bitmaps/WS_Bitmaps7c192x143.h" // 5.65" 7-color
 //#include "bitmaps/WS_Bitmaps7c300x180.h" // 7.3" 7-color
 #endif
@@ -142,6 +148,12 @@ void setup()
   //display.init(115200); // default 10ms reset pulse, e.g. for bare panels with DESPI-C02
   display.init(115200, true, 2, false); // USE THIS for Waveshare boards with "clever" reset circuit, 2ms reset pulse
   //display.init(115200, true, 10, false, SPI0, SPISettings(4000000, MSBFIRST, SPI_MODE0)); // extended init method with SPI channel and/or settings selection
+  if (display.pages() > 1)
+  {
+    delay(100);
+    Serial.print("pages = "); Serial.print(display.pages()); Serial.print(" page height = "); Serial.println(display.pageHeight());
+    delay(1000);
+  }
   // first update should be full refresh
   helloWorld();
   delay(1000);
@@ -163,6 +175,7 @@ void setup()
     showFont("glcdfont", 0);
     delay(1000);
   }
+  //drawGrid(); return;
   drawBitmaps();
   drawGraphics();
   //return;
@@ -190,6 +203,7 @@ void setup()
   display.powerOff();
 #endif
   Serial.println("setup done");
+  display.end();
 }
 
 void loop()
@@ -701,6 +715,43 @@ void showPartialUpdate()
   }
 }
 
+void drawGrid()
+{
+  uint16_t x, y;
+  display.firstPage();
+  do
+  {
+    x = 0;
+    do
+    {
+      display.drawLine(x, 0, x, display.height() - 1, GxEPD_BLACK);
+      x += 10;
+    }
+    while (x < display.width());
+    y = 0;
+    do
+    {
+      display.drawLine(0, y, display.width() - 1, y, GxEPD_BLACK);
+      y += 10;
+    }
+    while (y < display.height());
+    x = 0;
+    do
+    {
+      display.fillCircle(x, display.height() / 2, 3, GxEPD_BLACK);
+      x += 50;
+    }
+    while (x <= display.width());
+    y = 0;
+    do
+    {
+      display.fillCircle(display.width() / 2, y, 3, GxEPD_BLACK);
+      y += 50;
+    }
+    while (y <= display.height());
+  }
+  while (display.nextPage());
+}
 
 void drawBitmaps()
 {
@@ -778,6 +829,18 @@ void drawBitmaps()
 #if defined(_WS_Bitmaps4c168x168_H_)
   drawBitmaps4c168x168();
 #endif
+#if defined(_WS_Bitmaps4c168x168_H_)
+  drawBitmaps4c168x168();
+#endif
+#if defined(_GxBitmaps4c168x384_H_)
+  drawBitmaps4c168x384();
+#endif
+#if defined(_GxBitmaps4c184x360_H_)
+  drawBitmaps4c184x360();
+#endif
+#if defined(_GxBitmaps4c400x300_H_)
+  drawBitmaps4c400x300();
+#endif
 #if defined(_WS_Bitmaps7c192x143_H_)
   drawBitmaps7c192x143();
 #endif
@@ -1693,7 +1756,7 @@ void drawBitmaps3c1304x984()
 #if defined(_WS_Bitmaps4c168x168_H_)
 void drawBitmaps4c168x168()
 {
-  if (display.epd2.panel == GxEPD2::Waveshare437inch4color)
+  if ((display.epd2.panel == GxEPD2::Waveshare437inch4color) || (display.epd2.panel == GxEPD2::Waveshare3inch4color))
   {
     display.drawNative(WS_Bitmap4c168x168, 0, (display.epd2.WIDTH - 168) / 2, (display.epd2.HEIGHT - 168) / 2, 168, 168, false, false, true);
     delay(5000);
@@ -1701,6 +1764,50 @@ void drawBitmaps4c168x168()
 }
 #endif
 
+#if defined(_WS_Bitmaps4c168x400_H_)
+void drawBitmaps4c168x400()
+{
+  if (display.epd2.panel == GxEPD2::Waveshare3inch4color)
+  {
+    display.drawNative(WS_Bitmap4c168x400, 0, (display.epd2.WIDTH - 168) / 2, (display.epd2.HEIGHT - 400) / 2, 168, 400, false, false, true);
+    delay(5000);
+  }
+}
+#endif
+
+#if defined(_GxBitmaps4c168x384_H_)
+void drawBitmaps4c168x384()
+{
+  if (display.epd2.panel == GxEPD2::GDEY029F51H)
+  {
+    display.drawNative(Bitmap4c168x384, 0, (display.epd2.WIDTH - 168) / 2, (display.epd2.HEIGHT - 384) / 2, 168, 384, false, false, true);
+    delay(5000);
+  }
+}
+#endif
+
+#if defined(_GxBitmaps4c184x360_H_)
+void drawBitmaps4c184x360()
+{
+  if (display.epd2.panel == GxEPD2::GDEY0266F51H)
+  {
+    display.drawNative(Bitmap4c184x360, 0, (display.epd2.WIDTH - 184) / 2, (display.epd2.HEIGHT - 360) / 2, 184, 360, false, false, true);
+    delay(5000);
+  }
+}
+#endif
+
+#if defined(_GxBitmaps4c400x300_H_)
+void drawBitmaps4c400x300()
+{
+  if (display.epd2.panel == GxEPD2::GDEY0420F51)
+  {
+    display.drawNative(Bitmap4c400x300, 0, (display.epd2.WIDTH - 400) / 2, (display.epd2.HEIGHT - 300) / 2, 400, 300, false, false, true);
+    delay(5000);
+  }
+}
+#endif
+
 #if defined(_WS_Bitmaps7c192x143_H_)
 void drawBitmaps7c192x143()
 {
@@ -1794,7 +1901,7 @@ void drawGraphics()
   {
     display.drawRect(display.width() / 8, display.height() / 8, display.width() * 3 / 4, display.height() * 3 / 4, GxEPD_BLACK);
     display.drawLine(display.width() / 8, display.height() / 8, display.width() * 7 / 8, display.height() * 7 / 8, GxEPD_BLACK);
-    display.drawLine(display.width() / 8, display.height() * 7 / 8, display.width() *7 / 8, display.height() / 8, GxEPD_BLACK);
+    display.drawLine(display.width() / 8, display.height() * 7 / 8, display.width() * 7 / 8, display.height() / 8, GxEPD_BLACK);
     display.drawCircle(display.width() / 2, display.height() / 2, display.height() / 4, GxEPD_BLACK);
     display.drawPixel(display.width() / 4, display.height() / 2 , GxEPD_BLACK);
     display.drawPixel(display.width() * 3 / 4, display.height() / 2 , GxEPD_BLACK);

+ 43 - 8
examples/GxEPD2_Example/GxEPD2_display_selection.h

@@ -50,7 +50,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 // can use only half buffer size
 //GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
@@ -80,6 +81,10 @@
 //GxEPD2_3C < GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4 > display(GxEPD2_750c_Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C < GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4 > display(GxEPD2_750c_Z90(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
@@ -129,7 +134,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 // can use only half buffer size
 //GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
@@ -159,6 +165,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 5.65" 7-color
@@ -202,7 +212,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -229,7 +240,11 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
-//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
+//GxEPD2_4C<GxEPD2_437c, GxEPD2_437c::HEIGHT> display(GxEPD2_437c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
@@ -294,7 +309,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -321,6 +337,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 5.65" 7-color (3C graphics)
@@ -368,7 +388,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW <GxEPD2_583_T8,  MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -396,6 +417,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
@@ -450,7 +475,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -478,6 +504,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
@@ -524,7 +554,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -551,6 +582,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); //GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color

+ 38 - 8
examples/GxEPD2_Example/GxEPD2_display_selection_added.h

@@ -26,7 +26,7 @@
 //GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
 //GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
 //GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
-//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(//*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8  152x152, UC8151 (IL0373)
+//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8  152x152, UC8151 (IL0373)
 //GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
 //GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
 //GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
@@ -57,7 +57,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -85,6 +86,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
@@ -147,7 +152,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -175,7 +181,11 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
-//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(//*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 4.37" 4-color
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
+//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
 //GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 5.65" 7-color
@@ -233,7 +243,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -260,6 +271,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 5.65" 7-color
@@ -313,7 +328,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -340,6 +356,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
@@ -393,7 +413,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 // can use only half buffer size
 //GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583T8 648x480, EK79655 (GD7965)
@@ -423,6 +444,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 5.65" 7-color
@@ -468,7 +493,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -496,6 +522,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte

+ 23 - 1
examples/GxEPD2_Example/GxEPD2_display_selection_new_style.h

@@ -58,7 +58,8 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
-//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T91 // GDEY042T91 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
@@ -87,6 +88,10 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
 // 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
 // 7-color e-paper
 //#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
@@ -207,6 +212,19 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
 #endif
 
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
 #if defined(ARDUINO_ARCH_SAM)
 #define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
 #if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
@@ -259,6 +277,10 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
 #endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
 #undef MAX_DISPLAY_BUFFER_SIZE
 #undef MAX_HEIGHT
 #endif

+ 6 - 1
examples/GxEPD2_Example/GxEPD2_selection_check.h

@@ -49,7 +49,8 @@
 #define GxEPD2_370_TC1_IS_BW true
 #define GxEPD2_420_IS_BW true
 #define GxEPD2_420_M01_IS_BW true
-#define GxEPD2_420_GDEY042T91_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
 #define GxEPD2_583_IS_BW true
 #define GxEPD2_583_T8_IS_BW true
 #define GxEPD2_583_GDEQ0583T31_IS_BW true
@@ -82,6 +83,10 @@
 #define GxEPD2_750c_Z90_IS_3C true
 #define GxEPD2_1248c_IS_3C true
 // 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
 #define GxEPD2_437c_IS_4C true
 // 7-color e-paper
 #define GxEPD2_565c_IS_7C true

+ 6 - 3
examples/GxEPD2_Example/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -76,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 43 - 8
examples/GxEPD2_GFX_Example/GxEPD2_display_selection.h

@@ -50,7 +50,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 // can use only half buffer size
 //GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
@@ -80,6 +81,10 @@
 //GxEPD2_3C < GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4 > display(GxEPD2_750c_Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C < GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4 > display(GxEPD2_750c_Z90(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
@@ -129,7 +134,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 // can use only half buffer size
 //GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
@@ -159,6 +165,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 5.65" 7-color
@@ -202,7 +212,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -229,7 +240,11 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
-//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
+//GxEPD2_4C<GxEPD2_437c, GxEPD2_437c::HEIGHT> display(GxEPD2_437c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
@@ -294,7 +309,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -321,6 +337,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 5.65" 7-color (3C graphics)
@@ -368,7 +388,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW <GxEPD2_583_T8,  MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -396,6 +417,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
@@ -450,7 +475,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -478,6 +504,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
@@ -524,7 +554,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -551,6 +582,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); //GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color

+ 38 - 8
examples/GxEPD2_GFX_Example/GxEPD2_display_selection_added.h

@@ -26,7 +26,7 @@
 //GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
 //GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
 //GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
-//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(//*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8  152x152, UC8151 (IL0373)
+//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8  152x152, UC8151 (IL0373)
 //GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
 //GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
 //GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
@@ -57,7 +57,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -85,6 +86,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
@@ -147,7 +152,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -175,7 +181,11 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
-//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(//*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 4.37" 4-color
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
+//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
 //GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 5.65" 7-color
@@ -233,7 +243,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -260,6 +271,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 5.65" 7-color
@@ -313,7 +328,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -340,6 +356,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
@@ -393,7 +413,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 // can use only half buffer size
 //GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583T8 648x480, EK79655 (GD7965)
@@ -423,6 +444,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 5.65" 7-color
@@ -468,7 +493,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -496,6 +522,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte

+ 23 - 1
examples/GxEPD2_GFX_Example/GxEPD2_display_selection_new_style.h

@@ -58,7 +58,8 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
-//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T91 // GDEY042T91 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
@@ -87,6 +88,10 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
 // 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
 // 7-color e-paper
 //#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
@@ -207,6 +212,19 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
 #endif
 
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
 #if defined(ARDUINO_ARCH_SAM)
 #define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
 #if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
@@ -259,6 +277,10 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
 #endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
 #undef MAX_DISPLAY_BUFFER_SIZE
 #undef MAX_HEIGHT
 #endif

+ 6 - 1
examples/GxEPD2_GFX_Example/GxEPD2_selection_check.h

@@ -49,7 +49,8 @@
 #define GxEPD2_370_TC1_IS_BW true
 #define GxEPD2_420_IS_BW true
 #define GxEPD2_420_M01_IS_BW true
-#define GxEPD2_420_GDEY042T91_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
 #define GxEPD2_583_IS_BW true
 #define GxEPD2_583_T8_IS_BW true
 #define GxEPD2_583_GDEQ0583T31_IS_BW true
@@ -82,6 +83,10 @@
 #define GxEPD2_750c_Z90_IS_3C true
 #define GxEPD2_1248c_IS_3C true
 // 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
 #define GxEPD2_437c_IS_4C true
 // 7-color e-paper
 #define GxEPD2_565c_IS_7C true

+ 6 - 3
examples/GxEPD2_GFX_Example/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -76,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 43 - 8
examples/GxEPD2_HelloWorld/GxEPD2_display_selection.h

@@ -50,7 +50,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 // can use only half buffer size
 //GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
@@ -80,6 +81,10 @@
 //GxEPD2_3C < GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4 > display(GxEPD2_750c_Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C < GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4 > display(GxEPD2_750c_Z90(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
@@ -129,7 +134,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 // can use only half buffer size
 //GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
@@ -159,6 +165,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 5.65" 7-color
@@ -202,7 +212,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -229,7 +240,11 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
-//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
+//GxEPD2_4C<GxEPD2_437c, GxEPD2_437c::HEIGHT> display(GxEPD2_437c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
@@ -294,7 +309,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -321,6 +337,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 5.65" 7-color (3C graphics)
@@ -368,7 +388,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW <GxEPD2_583_T8,  MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -396,6 +417,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
@@ -450,7 +475,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -478,6 +504,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
@@ -524,7 +554,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -551,6 +582,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); //GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color

+ 38 - 8
examples/GxEPD2_HelloWorld/GxEPD2_display_selection_added.h

@@ -26,7 +26,7 @@
 //GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
 //GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
 //GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
-//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(//*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8  152x152, UC8151 (IL0373)
+//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8  152x152, UC8151 (IL0373)
 //GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
 //GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
 //GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
@@ -57,7 +57,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -85,6 +86,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
@@ -147,7 +152,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -175,7 +181,11 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
-//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(//*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 4.37" 4-color
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
+//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
 //GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 5.65" 7-color
@@ -233,7 +243,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -260,6 +271,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 5.65" 7-color
@@ -313,7 +328,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -340,6 +356,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
@@ -393,7 +413,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 // can use only half buffer size
 //GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583T8 648x480, EK79655 (GD7965)
@@ -423,6 +444,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 5.65" 7-color
@@ -468,7 +493,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -496,6 +522,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte

+ 23 - 1
examples/GxEPD2_HelloWorld/GxEPD2_display_selection_new_style.h

@@ -58,7 +58,8 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
-//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T91 // GDEY042T91 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
@@ -87,6 +88,10 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
 // 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
 // 7-color e-paper
 //#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
@@ -207,6 +212,19 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
 #endif
 
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
 #if defined(ARDUINO_ARCH_SAM)
 #define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
 #if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
@@ -259,6 +277,10 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
 #endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
 #undef MAX_DISPLAY_BUFFER_SIZE
 #undef MAX_HEIGHT
 #endif

+ 6 - 1
examples/GxEPD2_HelloWorld/GxEPD2_selection_check.h

@@ -49,7 +49,8 @@
 #define GxEPD2_370_TC1_IS_BW true
 #define GxEPD2_420_IS_BW true
 #define GxEPD2_420_M01_IS_BW true
-#define GxEPD2_420_GDEY042T91_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
 #define GxEPD2_583_IS_BW true
 #define GxEPD2_583_T8_IS_BW true
 #define GxEPD2_583_GDEQ0583T31_IS_BW true
@@ -82,6 +83,10 @@
 #define GxEPD2_750c_Z90_IS_3C true
 #define GxEPD2_1248c_IS_3C true
 // 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
 #define GxEPD2_437c_IS_4C true
 // 7-color e-paper
 #define GxEPD2_565c_IS_7C true

+ 6 - 3
examples/GxEPD2_HelloWorld/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -76,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 23 - 1
examples/GxEPD2_NotPagedExample/GxEPD2_display_selection_new_style.h

@@ -58,7 +58,8 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
-//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T91 // GDEY042T91 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
@@ -87,6 +88,10 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
 // 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
 // 7-color e-paper
 //#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
@@ -207,6 +212,19 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
 #endif
 
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
 #if defined(ARDUINO_ARCH_SAM)
 #define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
 #if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
@@ -259,6 +277,10 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
 #endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
 #undef MAX_DISPLAY_BUFFER_SIZE
 #undef MAX_HEIGHT
 #endif

+ 6 - 1
examples/GxEPD2_NotPagedExample/GxEPD2_selection_check.h

@@ -49,7 +49,8 @@
 #define GxEPD2_370_TC1_IS_BW true
 #define GxEPD2_420_IS_BW true
 #define GxEPD2_420_M01_IS_BW true
-#define GxEPD2_420_GDEY042T91_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
 #define GxEPD2_583_IS_BW true
 #define GxEPD2_583_T8_IS_BW true
 #define GxEPD2_583_GDEQ0583T31_IS_BW true
@@ -82,6 +83,10 @@
 #define GxEPD2_750c_Z90_IS_3C true
 #define GxEPD2_1248c_IS_3C true
 // 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
 #define GxEPD2_437c_IS_4C true
 // 7-color e-paper
 #define GxEPD2_565c_IS_7C true

+ 6 - 3
examples/GxEPD2_NotPagedExample/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -76,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 23 - 1
examples/GxEPD2_PagedDisplayUsingCallback/GxEPD2_display_selection_new_style.h

@@ -58,7 +58,8 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
-//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T91 // GDEY042T91 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
@@ -87,6 +88,10 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
 // 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
 // 7-color e-paper
 //#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
@@ -207,6 +212,19 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
 #endif
 
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
 #if defined(ARDUINO_ARCH_SAM)
 #define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
 #if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
@@ -259,6 +277,10 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
 #endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
 #undef MAX_DISPLAY_BUFFER_SIZE
 #undef MAX_HEIGHT
 #endif

+ 6 - 1
examples/GxEPD2_PagedDisplayUsingCallback/GxEPD2_selection_check.h

@@ -49,7 +49,8 @@
 #define GxEPD2_370_TC1_IS_BW true
 #define GxEPD2_420_IS_BW true
 #define GxEPD2_420_M01_IS_BW true
-#define GxEPD2_420_GDEY042T91_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
 #define GxEPD2_583_IS_BW true
 #define GxEPD2_583_T8_IS_BW true
 #define GxEPD2_583_GDEQ0583T31_IS_BW true
@@ -82,6 +83,10 @@
 #define GxEPD2_750c_Z90_IS_3C true
 #define GxEPD2_1248c_IS_3C true
 // 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
 #define GxEPD2_437c_IS_4C true
 // 7-color e-paper
 #define GxEPD2_565c_IS_7C true

+ 6 - 3
examples/GxEPD2_PagedDisplayUsingCallback/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -76,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 23 - 1
examples/GxEPD2_RotaryUsingBusyCallback/GxEPD2_display_selection_new_style.h

@@ -58,7 +58,8 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
-//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T91 // GDEY042T91 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
@@ -87,6 +88,10 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
 // 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
 // 7-color e-paper
 //#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
@@ -207,6 +212,19 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
 #endif
 
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
 #if defined(ARDUINO_ARCH_SAM)
 #define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
 #if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
@@ -259,6 +277,10 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
 #endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
 #undef MAX_DISPLAY_BUFFER_SIZE
 #undef MAX_HEIGHT
 #endif

+ 6 - 1
examples/GxEPD2_RotaryUsingBusyCallback/GxEPD2_selection_check.h

@@ -49,7 +49,8 @@
 #define GxEPD2_370_TC1_IS_BW true
 #define GxEPD2_420_IS_BW true
 #define GxEPD2_420_M01_IS_BW true
-#define GxEPD2_420_GDEY042T91_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
 #define GxEPD2_583_IS_BW true
 #define GxEPD2_583_T8_IS_BW true
 #define GxEPD2_583_GDEQ0583T31_IS_BW true
@@ -82,6 +83,10 @@
 #define GxEPD2_750c_Z90_IS_3C true
 #define GxEPD2_1248c_IS_3C true
 // 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
 #define GxEPD2_437c_IS_4C true
 // 7-color e-paper
 #define GxEPD2_565c_IS_7C true

+ 6 - 3
examples/GxEPD2_RotaryUsingBusyCallback/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -76,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 19 - 4
examples/GxEPD2_SD_AVR_Example/GxEPD2_wiring_examples.h

@@ -16,12 +16,14 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
+// NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
 // BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
 // NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
+// NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping of Waveshare e-Paper ESP8266 Driver Board, new version
 // BUSY -> GPIO5, RST -> GPIO2, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
@@ -56,16 +58,29 @@
 // mapping suggestion for AVR, UNO, NANO etc.
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
+// mapping suggestion for AVR, Arduino Micro, Leonardo
+// note: on Leonardo board HW SPI pins are on 6-pin ICSP header
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
+
 // mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
 // BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
 
 // mapping suggestion for Arduino MEGA
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 53, CLK -> 52, DIN -> 51
 
-// mapping suggestion for Arduino DUE
-// BUSY -> 7, RST -> 9, DC -> 8, CS-> 77, CLK -> 76, DIN -> 75
-// SPI pins are on 6 pin 2x3 SPI header
+// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
+// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
 
 // mapping suggestion for Arduino MKR1000 or MKRZERO
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
+
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
+
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 23 - 1
examples/GxEPD2_SD_Example/GxEPD2_display_selection_new_style.h

@@ -58,7 +58,8 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
-//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T91 // GDEY042T91 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
@@ -87,6 +88,10 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
 // 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
 // 7-color e-paper
 //#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
@@ -207,6 +212,19 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
 #endif
 
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
 #if defined(ARDUINO_ARCH_SAM)
 #define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
 #if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
@@ -259,6 +277,10 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
 #endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
 #undef MAX_DISPLAY_BUFFER_SIZE
 #undef MAX_HEIGHT
 #endif

+ 6 - 1
examples/GxEPD2_SD_Example/GxEPD2_selection_check.h

@@ -49,7 +49,8 @@
 #define GxEPD2_370_TC1_IS_BW true
 #define GxEPD2_420_IS_BW true
 #define GxEPD2_420_M01_IS_BW true
-#define GxEPD2_420_GDEY042T91_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
 #define GxEPD2_583_IS_BW true
 #define GxEPD2_583_T8_IS_BW true
 #define GxEPD2_583_GDEQ0583T31_IS_BW true
@@ -82,6 +83,10 @@
 #define GxEPD2_750c_Z90_IS_3C true
 #define GxEPD2_1248c_IS_3C true
 // 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
 #define GxEPD2_437c_IS_4C true
 // 7-color e-paper
 #define GxEPD2_565c_IS_7C true

+ 6 - 3
examples/GxEPD2_SD_Example/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -76,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 23 - 1
examples/GxEPD2_SerialFlash_Example/GxEPD2_display_selection_new_style.h

@@ -58,7 +58,8 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
-//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T91 // GDEY042T91 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
@@ -87,6 +88,10 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
 // 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
 // 7-color e-paper
 //#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
@@ -207,6 +212,19 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
 #endif
 
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
 #if defined(ARDUINO_ARCH_SAM)
 #define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
 #if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
@@ -259,6 +277,10 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
 #endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
 #undef MAX_DISPLAY_BUFFER_SIZE
 #undef MAX_HEIGHT
 #endif

+ 6 - 1
examples/GxEPD2_SerialFlash_Example/GxEPD2_selection_check.h

@@ -49,7 +49,8 @@
 #define GxEPD2_370_TC1_IS_BW true
 #define GxEPD2_420_IS_BW true
 #define GxEPD2_420_M01_IS_BW true
-#define GxEPD2_420_GDEY042T91_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
 #define GxEPD2_583_IS_BW true
 #define GxEPD2_583_T8_IS_BW true
 #define GxEPD2_583_GDEQ0583T31_IS_BW true
@@ -82,6 +83,10 @@
 #define GxEPD2_750c_Z90_IS_3C true
 #define GxEPD2_1248c_IS_3C true
 // 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
 #define GxEPD2_437c_IS_4C true
 // 7-color e-paper
 #define GxEPD2_565c_IS_7C true

+ 6 - 3
examples/GxEPD2_SerialFlash_Example/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -76,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 23 - 1
examples/GxEPD2_Spiffs_Example/GxEPD2_display_selection_new_style.h

@@ -58,7 +58,8 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
-//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T91 // GDEY042T91 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
@@ -87,6 +88,10 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
 // 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
 // 7-color e-paper
 //#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
@@ -207,6 +212,19 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
 #endif
 
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
 #if defined(ARDUINO_ARCH_SAM)
 #define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
 #if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
@@ -259,6 +277,10 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
 #endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
 #undef MAX_DISPLAY_BUFFER_SIZE
 #undef MAX_HEIGHT
 #endif

+ 6 - 1
examples/GxEPD2_Spiffs_Example/GxEPD2_selection_check.h

@@ -49,7 +49,8 @@
 #define GxEPD2_370_TC1_IS_BW true
 #define GxEPD2_420_IS_BW true
 #define GxEPD2_420_M01_IS_BW true
-#define GxEPD2_420_GDEY042T91_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
 #define GxEPD2_583_IS_BW true
 #define GxEPD2_583_T8_IS_BW true
 #define GxEPD2_583_GDEQ0583T31_IS_BW true
@@ -82,6 +83,10 @@
 #define GxEPD2_750c_Z90_IS_3C true
 #define GxEPD2_1248c_IS_3C true
 // 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
 #define GxEPD2_437c_IS_4C true
 // 7-color e-paper
 #define GxEPD2_565c_IS_7C true

+ 6 - 3
examples/GxEPD2_Spiffs_Example/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -76,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 23 - 1
examples/GxEPD2_U8G2_Fonts_Example/GxEPD2_display_selection_new_style.h

@@ -58,7 +58,8 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
-//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T91 // GDEY042T91 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
@@ -87,6 +88,10 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
 // 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
 // 7-color e-paper
 //#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
@@ -207,6 +212,19 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
 #endif
 
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
 #if defined(ARDUINO_ARCH_SAM)
 #define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
 #if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
@@ -259,6 +277,10 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
 #endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
 #undef MAX_DISPLAY_BUFFER_SIZE
 #undef MAX_HEIGHT
 #endif

+ 6 - 1
examples/GxEPD2_U8G2_Fonts_Example/GxEPD2_selection_check.h

@@ -49,7 +49,8 @@
 #define GxEPD2_370_TC1_IS_BW true
 #define GxEPD2_420_IS_BW true
 #define GxEPD2_420_M01_IS_BW true
-#define GxEPD2_420_GDEY042T91_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
 #define GxEPD2_583_IS_BW true
 #define GxEPD2_583_T8_IS_BW true
 #define GxEPD2_583_GDEQ0583T31_IS_BW true
@@ -82,6 +83,10 @@
 #define GxEPD2_750c_Z90_IS_3C true
 #define GxEPD2_1248c_IS_3C true
 // 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
 #define GxEPD2_437c_IS_4C true
 // 7-color e-paper
 #define GxEPD2_565c_IS_7C true

+ 6 - 3
examples/GxEPD2_U8G2_Fonts_Example/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -76,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 288 - 0
examples/GxEPD2_WiFi_Example/GxEPD2_display_selection_new_style.h

@@ -0,0 +1,288 @@
+// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
+// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
+//
+// Display Library based on Demo Example from Good Display: http://www.e-paper-display.com/download_list/downloadcategoryid=34&isMode=false.html
+//
+// Author: Jean-Marc Zingg
+//
+// Version: see library.properties
+//
+// Library: https://github.com/ZinggJM/GxEPD2
+
+// Supporting Arduino Forum Topics:
+// Waveshare e-paper displays with SPI: http://forum.arduino.cc/index.php?topic=487007.0
+// Good Display ePaper for Arduino: https://forum.arduino.cc/index.php?topic=436411.0
+
+// NOTE: you may need to adapt or select for your wiring in the processor specific conditional compile sections below
+
+// select the display class (only one), matching the kind of display panel
+#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
+//#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
+//#define GxEPD2_DISPLAY_CLASS GxEPD2_4C
+//#define GxEPD2_DISPLAY_CLASS GxEPD2_7C
+
+// select the display driver class (only one) for your  panel
+//#define GxEPD2_DRIVER_CLASS GxEPD2_102     // GDEW0102T4   80x128, UC8175, (WFT0102CZA2)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_150_BN  // DEPG0150BN 200x200, SSD1681, (FPC8101), TTGO T5 V2.4.1
+//#define GxEPD2_DRIVER_CLASS GxEPD2_154     // GDEP015OC1  200x200, IL3829, (WFC0000CZ07), no longer available
+//#define GxEPD2_DRIVER_CLASS GxEPD2_154_D67 // GDEH0154D67 200x200, SSD1681, (HINK-E154A07-A1)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_154_T8  // GDEW0154T8  152x152, UC8151 (IL0373), (WFT0154CZ17)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M09 // GDEW0154M09 200x200, JD79653A, (WFT0154CZB3)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M10 // GDEW0154M10 152x152, UC8151D, (WFT0154CZ17)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_154_GDEY0154D67 // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_213     // GDE0213B1   122x250, IL3895, (HINK-E0213-G01), phased out
+//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B72 // GDEH0213B72 122x250, SSD1675A (IL3897), (HINK-E0213A22-A0 SLH1852)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B73 // GDEH0213B73 122x250, SSD1675B, (HINK-E0213A22-A0 SLH1914)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B74 // GDEM0213B74 122x250, SSD1680, FPC-7528B)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_213_flex // GDEW0213I5F 104x212, UC8151 (IL0373), (WFT0213CZ16)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_213_M21 // GDEW0213M21 104x212, UC8151 (IL0373), (WFT0213CZ16)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_213_T5D // GDEW0213T5D 104x212, UC8151D, (WFT0213CZ16)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_213_BN // DEPG0213BN  122x250, SSD1680, (FPC-7528B), TTGO T5 V2.4.1, V2.3.1
+//#define GxEPD2_DRIVER_CLASS GxEPD2_213_GDEY0213B74 // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_260     // GDEW026T0   152x296, UC8151 (IL0373), (WFT0154CZ17)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_260_M01 // GDEW026M01  152x296, UC8151 (IL0373), (WFT0260CZB2)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266_BN // DEPG0266BN   152x296, SSD1680, (FPC7510), TTGO T5 V2.66, TTGO T5 V2.4.1
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266_GDEY0266T90 // GDEY0266T90 152x296, SSD1680, (FPC-A003 HB)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_270     // GDEW027W3   176x264, EK79652 (IL91874), (WFI0190CZ22)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_270_GDEY027T91 // GDEY027T91 176x264, SSD1680, (FB)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290     // GDEH029A1   128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5  // GDEW029T5   128x296, UC8151 (IL0373), (WFT0290CZ10)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D  128x296, UC8151D, (WFT0290CZ10)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD  128x296, UC8151D, (WFT0290CZ10)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94  128x296, SSD1680, (FPC-7519 rev.b)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94  128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS  128x296, SSD1680, (FPC-7519 rev.b)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06  128x296, UC8151D, (WFT0290CZ10)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_371     // GDEW0371W7  240x416, UC8171 (IL0324), (missing)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_750     // GDEW075T8   640x384, UC8159c (IL0371), (WF0583CZ09)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7  // GDEW075T7   800x480, EK79655 (GD7965), (WFT0583CZ61)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_750_YT7  // GDEY075T7  800x480, UC8179 (GD7965), (FPC-C001 20.8.20)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_1160_T91 // GDEH116T91 960x640, SSD1677, (none or hidden)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_1248     // GDEW1248T3 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
+// 3-color e-papers
+//#define GxEPD2_DRIVER_CLASS GxEPD2_154c     // GDEW0154Z04 200x200, IL0376F, (WFT0000CZ04), no longer available
+//#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c // GDEH0154Z90 200x200, SSD1681, (HINK-E154A07-A1)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_213c     // GDEW0213Z16 104x212, UC8151 (IL0373), (WFT0213CZ16)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z19c // GDEH0213Z19 104x212, UC8151D, (HINK-E0213A20-A2 2020-11-19)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z98c // GDEY0213Z98 122x250, SSD1680, (FPC-A002 20.04.08)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c     // GDEY0266Z90 152x296, SSD1680, (FPC-7510)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_270c     // GDEW027C44  176x264, IL91874, (WFI0190CZ22)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c     // GDEW029Z10  128x296, UC8151 (IL0373), (WFT0290CZ10)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290_Z13c // GDEH029Z13  128x296, UC8151D, (HINK-E029A10-A3 20160809)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290_C90c // GDEM029C90  128x296, SSD1680, (FPC-7519 rev.b)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c     // GDEW042Z15  400x300, UC8176 (IL0398), (WFT0420CZ15)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_Z21 // GDEQ042Z21  400x300, UC8276, (hidden)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_583c     // GDEW0583Z21 600x448, UC8159c (IL0371), (missing)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_Z83 // GDEW0583Z83 648x480, EK79655 (GD7965), (WFT0583CZ61)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_750c     // GDEW075Z09  640x384, UC8159c (IL0371), (WF0583CZ09)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z08 // GDEW075Z08  800x480, EK79655 (GD7965), (WFT0583CZ61)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
+// 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
+// 7-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEY073D46 // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
+// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
+//#define GxEPD2_DRIVER_CLASS GxEPD2_it60           // ED060SCT 800x600
+//#define GxEPD2_DRIVER_CLASS GxEPD2_it60_1448x1072 // ED060KC1 1448x1072
+//#define GxEPD2_DRIVER_CLASS GxEPD2_it78_1872x1404 // ED078KC2 1872x1404
+//#define GxEPD2_DRIVER_CLASS GxEPD2_it103_1872x1404 // ES103TC1 1872x1404
+
+// SS is usually used for CS. define here for easy change
+#ifndef EPD_CS
+#define EPD_CS SS
+#endif
+
+#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
+
+// somehow there should be an easier way to do this
+#define GxEPD2_BW_IS_GxEPD2_BW true
+#define GxEPD2_3C_IS_GxEPD2_3C true
+#define GxEPD2_4C_IS_GxEPD2_4C true
+#define GxEPD2_7C_IS_GxEPD2_7C true
+#define GxEPD2_1248_IS_GxEPD2_1248 true
+#define GxEPD2_1248c_IS_GxEPD2_1248c true
+#define IS_GxEPD(c, x) (c##x)
+#define IS_GxEPD2_BW(x) IS_GxEPD(GxEPD2_BW_IS_, x)
+#define IS_GxEPD2_3C(x) IS_GxEPD(GxEPD2_3C_IS_, x)
+#define IS_GxEPD2_4C(x) IS_GxEPD(GxEPD2_4C_IS_, x)
+#define IS_GxEPD2_7C(x) IS_GxEPD(GxEPD2_7C_IS_, x)
+#define IS_GxEPD2_1248(x) IS_GxEPD(GxEPD2_1248_IS_, x)
+#define IS_GxEPD2_1248c(x) IS_GxEPD(GxEPD2_1248c_IS_, x)
+
+#include "GxEPD2_selection_check.h"
+
+#if defined (ESP8266)
+#define MAX_DISPLAY_BUFFER_SIZE (81920ul-34000ul-5000ul) // ~34000 base use, change 5000 to your application use
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=D8*/ EPD_CS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
+// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
+//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
+// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
+//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16));
+#undef MAX_DISPLAY_BUFFER_SIZE
+#undef MAX_HEIGHT
+#endif
+
+#if defined(ESP32)
+#define MAX_DISPLAY_BUFFER_SIZE 65536ul // e.g.
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+#if !IS_GxEPD2_1248(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_1248c(GxEPD2_DRIVER_CLASS)
+#if defined(ARDUINO_LOLIN_D32_PRO)
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // my LOLIN_D32_PRO proto board
+#else
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // my suggested wiring and proto board
+//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // LILYGO_T5_V2.4.1
+//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 19, /*RST=*/ 4, /*BUSY=*/ 34)); // LILYGO® TTGO T5 2.66
+//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // e.g. TTGO T8 ESP32-WROVER
+//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare ESP32 Driver Board
+#endif
+#else // GxEPD2_1248 or GxEPD2_1248c
+// Waveshare 12.48 b/w or b/w/r SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3 or b/w/r panel GDEY1248Z51
+// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
+GxEPD2_DISPLAY_CLASS < GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS) > display(GxEPD2_DRIVER_CLASS(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14,
+    /*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
+    /*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5,
+    /*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
+#endif
+#undef MAX_DISPLAY_BUFFER_SIZE
+#undef MAX_HEIGHT
+#endif
+
+// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
+#if defined(ARDUINO_ARCH_STM32)
+#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=PA4*/ EPD_CS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1));
+#undef MAX_DISPLAY_BUFFER_SIZE
+#undef MAX_HEIGHT
+#endif
+
+#if defined(__AVR)
+#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
+#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
+#else // Note: SS is on 10 on UNO, NANO
+#define MAX_DISPLAY_BUFFER_SIZE 800 // 
+#endif
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+// for Arduino Micro or Arduino Leonardo with CS on 10 on my proto boards (SS would be 17) uncomment instead:
+//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
+#if defined(ARDUINO_ARCH_SAM)
+#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#undef MAX_DISPLAY_BUFFER_SIZE
+#undef MAX_HEIGHT
+#endif
+
+#if defined(ARDUINO_ARCH_SAMD)
+#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
+//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 1)); // my Seed XIOA0
+//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // my other Seed XIOA0
+#undef MAX_DISPLAY_BUFFER_SIZE
+#undef MAX_HEIGHT
+#endif
+
+#if defined(ARDUINO_ARCH_RP2040)
+#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+#if defined(ARDUINO_NANO_RP2040_CONNECT)
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+#if defined(ARDUINO_RASPBERRY_PI_PICO)
+// adapt the constructor parameters to your wiring
+//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // my proto board
+// mapping of GoodDisplay DESPI-PICO. NOTE: uses alternate HW SPI pins!
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
+//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
+#endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
+#undef MAX_DISPLAY_BUFFER_SIZE
+#undef MAX_HEIGHT
+#endif
+
+#endif

+ 111 - 0
examples/GxEPD2_WiFi_Example/GxEPD2_selection_check.h

@@ -0,0 +1,111 @@
+// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
+// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
+//
+// Display Library based on Demo Example from Good Display: http://www.e-paper-display.com/download_list/downloadcategoryid=34&isMode=false.html
+//
+// Author: Jean-Marc Zingg
+//
+// Version: see library.properties
+//
+// Library: https://github.com/ZinggJM/GxEPD2
+
+// Supporting Arduino Forum Topics:
+// Waveshare e-paper displays with SPI: http://forum.arduino.cc/index.php?topic=487007.0
+// Good Display ePaper for Arduino: https://forum.arduino.cc/index.php?topic=436411.0
+
+#define GxEPD2_102_IS_BW true
+#define GxEPD2_150_BN_IS_BW true
+#define GxEPD2_154_IS_BW true
+#define GxEPD2_154_D67_IS_BW true
+#define GxEPD2_154_T8_IS_BW true
+#define GxEPD2_154_M09_IS_BW true
+#define GxEPD2_154_M10_IS_BW true
+#define GxEPD2_154_GDEY0154D67_IS_BW true
+#define GxEPD2_213_IS_BW true
+#define GxEPD2_213_B72_IS_BW true
+#define GxEPD2_213_B73_IS_BW true
+#define GxEPD2_213_B74_IS_BW true
+#define GxEPD2_213_flex_IS_BW true
+#define GxEPD2_213_M21_IS_BW true
+#define GxEPD2_213_T5D_IS_BW true
+#define GxEPD2_213_BN_IS_BW true
+#define GxEPD2_213_GDEY0213B74_IS_BW true
+#define GxEPD2_260_IS_BW true
+#define GxEPD2_260_M01_IS_BW true
+#define GxEPD2_266_BN_IS_BW true
+#define GxEPD2_266_GDEY0266T90_IS_BW true
+#define GxEPD2_270_IS_BW true
+#define GxEPD2_270_GDEY027T91_IS_BW true
+#define GxEPD2_290_IS_BW true
+#define GxEPD2_290_T5_IS_BW true
+#define GxEPD2_290_T5D_IS_BW true
+#define GxEPD2_290_I6FD_IS_BW true
+#define GxEPD2_290_T94_IS_BW true
+#define GxEPD2_290_T94_V2_IS_BW true
+#define GxEPD2_290_BS_IS_BW true
+#define GxEPD2_290_M06_IS_BW true
+#define GxEPD2_290_GDEY029T94_IS_BW true
+#define GxEPD2_371_IS_BW true
+#define GxEPD2_370_TC1_IS_BW true
+#define GxEPD2_420_IS_BW true
+#define GxEPD2_420_M01_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
+#define GxEPD2_583_IS_BW true
+#define GxEPD2_583_T8_IS_BW true
+#define GxEPD2_583_GDEQ0583T31_IS_BW true
+#define GxEPD2_750_IS_BW true
+#define GxEPD2_750_T7_IS_BW true
+#define GxEPD2_750_YT7_IS_BW true
+#define GxEPD2_1160_T91_IS_BW true
+#define GxEPD2_1248_IS_BW true
+#define GxEPD2_it60_IS_BW true
+#define GxEPD2_it60_1448x1072_IS_BW true
+#define GxEPD2_it78_1872x1404_IS_BW true
+#define GxEPD2_it103_1872x1404_IS_BW true
+// 3-color e-papers
+#define GxEPD2_154c_IS_3C true
+#define GxEPD2_154_Z90c_IS_3C true
+#define GxEPD2_213c_IS_3C true
+#define GxEPD2_213_Z19c_IS_3C true
+#define GxEPD2_213_Z98c_IS_3C true
+#define GxEPD2_266c_IS_3C true
+#define GxEPD2_270c_IS_3C true
+#define GxEPD2_290c_IS_3C true
+#define GxEPD2_290_Z13c_IS_3C true
+#define GxEPD2_290_C90c_IS_3C true
+#define GxEPD2_420c_IS_3C true
+#define GxEPD2_420c_Z21_IS_3C true
+#define GxEPD2_583c_IS_3C true
+#define GxEPD2_583c_Z83_IS_3C true
+#define GxEPD2_750c_IS_3C true
+#define GxEPD2_750c_Z08_IS_3C true
+#define GxEPD2_750c_Z90_IS_3C true
+#define GxEPD2_1248c_IS_3C true
+// 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
+#define GxEPD2_437c_IS_4C true
+// 7-color e-paper
+#define GxEPD2_565c_IS_7C true
+#define GxEPD2_730c_GDEY073D46_IS_7C true
+
+#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
+#define IS_GxEPD2_DRIVER(c, x) (c##x)
+#define IS_GxEPD2_DRIVER_BW(x) IS_GxEPD2_DRIVER(x, _IS_BW)
+#define IS_GxEPD2_DRIVER_3C(x) IS_GxEPD2_DRIVER(x, _IS_3C)
+#define IS_GxEPD2_DRIVER_4C(x) IS_GxEPD2_DRIVER(x, _IS_4C)
+#define IS_GxEPD2_DRIVER_7C(x) IS_GxEPD2_DRIVER(x, _IS_7C)
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
+#error "GxEPD2_BW used with 3-color driver class"
+#endif
+#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
+#error "GxEPD2_3C used with b/w driver class"
+#endif
+#if !IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
+#error "neither BW nor 3C nor 4C nor 7C kind defined for driver class (error in GxEPD2_selection_check.h)"
+#endif
+
+#endif

+ 6 - 3
examples/GxEPD2_WiFi_Example/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -76,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 11 - 0
extras/sw_spi/src/GxEPD2_EPD.cpp

@@ -38,6 +38,7 @@ GxEPD2_EPD::GxEPD2_EPD(int16_t cs, int16_t dc, int16_t rst, int16_t busy, int16_
   _power_is_on = false;
   _using_partial_mode = false;
   _hibernating = false;
+  _init_display_done = false;
   _reset_duration = 20;
 }
 
@@ -54,6 +55,7 @@ void GxEPD2_EPD::init(uint32_t serial_diag_bitrate, bool initial, uint16_t reset
   _power_is_on = false;
   _using_partial_mode = false;
   _hibernating = false;
+  _init_display_done = false;
   _reset_duration = reset_duration;
   if (serial_diag_bitrate > 0)
   {
@@ -92,6 +94,15 @@ void GxEPD2_EPD::init(int16_t sck, int16_t mosi, uint32_t serial_diag_bitrate, b
   init(serial_diag_bitrate, initial, reset_duration, pulldown_rst_mode);
 }
 
+void GxEPD2_EPD::end()
+{
+  pinMode(_sck, INPUT);
+  pinMode(_mosi, INPUT);
+  if (_cs >= 0) pinMode(_cs, INPUT);
+  if (_dc >= 0) pinMode(_dc, INPUT);
+  if (_rst >= 0) pinMode(_rst, INPUT);
+}
+
 void GxEPD2_EPD::_reset()
 {
   if (_rst >= 0)

+ 2 - 0
extras/sw_spi/src/GxEPD2_EPD.h

@@ -45,6 +45,7 @@ class GxEPD2_EPD
     virtual void init(uint32_t serial_diag_bitrate = 0); // serial_diag_bitrate = 0 : disabled
     virtual void init(uint32_t serial_diag_bitrate, bool initial, uint16_t reset_duration = 20, bool pulldown_rst_mode = false);
     virtual void init(int16_t sck, int16_t mosi, uint32_t serial_diag_bitrate, bool initial, uint16_t reset_duration = 20, bool pulldown_rst_mode = false);
+    virtual void end(); // release SPI and control pins
     //  Support for Bitmaps (Sprites) to Controller Buffer and to Screen
     virtual void clearScreen(uint8_t value) = 0; // init controller memory and screen (default white)
     virtual void writeScreenBuffer(uint8_t value) = 0; // init controller memory (default white)
@@ -129,6 +130,7 @@ class GxEPD2_EPD
     SPISettings _spi_settings;
     bool _initial_write, _initial_refresh;
     bool _power_is_on, _using_partial_mode, _hibernating;
+    bool _init_display_done;
     uint16_t _reset_duration;
 };
 

+ 24 - 2
extras/tests/GxEPD2_MinimumExample/GxEPD2_display_selection_new_style.h

@@ -58,7 +58,8 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
-//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T91 // GDEY042T91 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
@@ -87,6 +88,10 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
 // 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
 // 7-color e-paper
 //#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
@@ -207,11 +212,24 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
 #endif
 
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
 #if defined(ARDUINO_ARCH_SAM)
 #define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
 #if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
 #define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
-#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS)
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
 #define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
 #elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
 #define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
@@ -259,6 +277,10 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
 #endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
 #undef MAX_DISPLAY_BUFFER_SIZE
 #undef MAX_HEIGHT
 #endif

+ 6 - 1
extras/tests/GxEPD2_MinimumExample/GxEPD2_selection_check.h

@@ -49,7 +49,8 @@
 #define GxEPD2_370_TC1_IS_BW true
 #define GxEPD2_420_IS_BW true
 #define GxEPD2_420_M01_IS_BW true
-#define GxEPD2_420_GDEY042T91_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
 #define GxEPD2_583_IS_BW true
 #define GxEPD2_583_T8_IS_BW true
 #define GxEPD2_583_GDEQ0583T31_IS_BW true
@@ -82,6 +83,10 @@
 #define GxEPD2_750c_Z90_IS_3C true
 #define GxEPD2_1248c_IS_3C true
 // 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
 #define GxEPD2_437c_IS_4C true
 // 7-color e-paper
 #define GxEPD2_565c_IS_7C true

+ 6 - 3
extras/tests/GxEPD2_MinimumExample/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -76,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 43 - 8
extras/tests/GxEPD2_RefreshTests/GxEPD2_display_selection.h

@@ -50,7 +50,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 // can use only half buffer size
 //GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
@@ -80,6 +81,10 @@
 //GxEPD2_3C < GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4 > display(GxEPD2_750c_Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C < GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4 > display(GxEPD2_750c_Z90(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
@@ -129,7 +134,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 // can use only half buffer size
 //GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
@@ -159,6 +165,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 5.65" 7-color
@@ -202,7 +212,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -229,7 +240,11 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
-//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
+//GxEPD2_4C<GxEPD2_437c, GxEPD2_437c::HEIGHT> display(GxEPD2_437c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
@@ -294,7 +309,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -321,6 +337,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 5.65" 7-color (3C graphics)
@@ -368,7 +388,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW <GxEPD2_583_T8,  MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -396,6 +417,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
@@ -450,7 +475,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -478,6 +504,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
@@ -524,7 +554,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -551,6 +582,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); //GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color

+ 38 - 8
extras/tests/GxEPD2_RefreshTests/GxEPD2_display_selection_added.h

@@ -26,7 +26,7 @@
 //GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
 //GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
 //GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
-//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(//*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8  152x152, UC8151 (IL0373)
+//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8  152x152, UC8151 (IL0373)
 //GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
 //GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
 //GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
@@ -57,7 +57,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -85,6 +86,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
@@ -147,7 +152,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -175,7 +181,11 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
-//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(//*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 4.37" 4-color
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
+//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
 //GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 5.65" 7-color
@@ -233,7 +243,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -260,6 +271,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 5.65" 7-color
@@ -313,7 +328,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -340,6 +356,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
@@ -393,7 +413,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, GxEPD2_420_GDEY042T91::HEIGHT> display(GxEPD2_420_GDEY042T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 // can use only half buffer size
 //GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583T8 648x480, EK79655 (GD7965)
@@ -423,6 +444,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 //GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 5.65" 7-color
@@ -468,7 +493,8 @@
 //GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
 //GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
 //GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
-//GxEPD2_BW<GxEPD2_420_GDEY042T91, MAX_HEIGHT(GxEPD2_420_GDEY042T91)> display(GxEPD2_420_GDEY042T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T91, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); GDEY042T81, 400x300, SSD1683 (no inking)
+//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
 //GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
 //GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
@@ -496,6 +522,10 @@
 //GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
 //GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
 // 4-color e-paper
+//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
+//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
 //GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
 // 7-color e-paper
 #define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte

+ 24 - 2
extras/tests/GxEPD2_RefreshTests/GxEPD2_display_selection_new_style.h

@@ -58,7 +58,8 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1  280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420     // GDEW042T2   400x300, UC8176 (IL0398), (WFT042CZ15)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01  400x300, UC8176 (IL0398), (WFT042CZ15)
-//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T91 // GDEY042T91 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583     // GDEW0583T7  600x448, UC8159c (IL0371), (missing)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8  // GDEW0583T8  648x480, EK79655 (GD7965), (WFT0583CZ61)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31  648x480, UC8179, (P583010-MF1-B)
@@ -87,6 +88,10 @@
 //#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90  880x528, SSD1677, (HINK-E075A07-A0)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_1248c    // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
 // 4-color e-paper
+//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
+//#define GxEPD2_DRIVER_CLASS GxEPD2_300c     // Waveshare 3.00" 4-color
+//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
 //#define GxEPD2_DRIVER_CLASS GxEPD2_437c     // Waveshare 4.37" 4-color
 // 7-color e-paper
 //#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
@@ -207,11 +212,24 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
 #endif
 
+#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
+#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
+#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
+#endif
+// adapt the constructor parameters to your wiring
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
+#endif
+
 #if defined(ARDUINO_ARCH_SAM)
 #define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
 #if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
 #define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
-#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS)
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
 #define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
 #elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
 #define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
@@ -259,6 +277,10 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
 GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
 //GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
 #endif
+#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
+// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
+GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
+#endif
 #undef MAX_DISPLAY_BUFFER_SIZE
 #undef MAX_HEIGHT
 #endif

+ 6 - 1
extras/tests/GxEPD2_RefreshTests/GxEPD2_selection_check.h

@@ -49,7 +49,8 @@
 #define GxEPD2_370_TC1_IS_BW true
 #define GxEPD2_420_IS_BW true
 #define GxEPD2_420_M01_IS_BW true
-#define GxEPD2_420_GDEY042T91_IS_BW true
+#define GxEPD2_420_GDEY042T81_IS_BW true
+#define GxEPD2_426_GDEQ0426T82_IS_BW true
 #define GxEPD2_583_IS_BW true
 #define GxEPD2_583_T8_IS_BW true
 #define GxEPD2_583_GDEQ0583T31_IS_BW true
@@ -82,6 +83,10 @@
 #define GxEPD2_750c_Z90_IS_3C true
 #define GxEPD2_1248c_IS_3C true
 // 4-color e-paper
+#define GxEPD2_266c_GDEY0266F51H_IS_4C true
+#define GxEPD2_290c_GDEY029F51H_IS_4C true
+#define GxEPD2_300c_IS_4C true
+#define GxEPD2_420c_GDEY0420F51_IS_4C true
 #define GxEPD2_437c_IS_4C true
 // 7-color e-paper
 #define GxEPD2_565c_IS_7C true

+ 10 - 3
extras/tests/GxEPD2_RefreshTests/GxEPD2_wiring_examples.h

@@ -16,7 +16,7 @@
 // mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
 // BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
 // NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
-// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 4k7 pull-down
+// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
 // NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
 
 // mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
@@ -58,6 +58,10 @@
 // mapping suggestion for AVR, UNO, NANO etc.
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
+// mapping suggestion for AVR, Arduino Micro, Leonardo
+// note: on Leonardo board HW SPI pins are on 6-pin ICSP header
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
+
 // mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
 // BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
 
@@ -72,8 +76,11 @@
 // note: can't use SS on MKR1000: is defined as 24, should be 4
 // BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
 
-// mapping suggestion for Arduino Nano RP2040 Connect
+// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
 
-// mapping suggestion for Raspberry Pi Pico RP2040
+// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
+// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
+
+// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
 // BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3

+ 1 - 1
library.properties

@@ -1,5 +1,5 @@
 name=GxEPD2
-version=1.5.2
+version=1.5.3
 author=Jean-Marc Zingg
 maintainer=Jean-Marc Zingg
 sentence=Arduino Display Library for SPI E-Paper displays from Dalian Good Display and Waveshare. 

+ 12 - 5
src/GxEPD2.h

@@ -70,7 +70,8 @@ class GxEPD2
       GDEW0371W7, Waveshare_3_7_bw = GDEW0371W7,
       GDEW042T2,  Waveshare_4_2_bw = GDEW042T2,
       GDEW042M01,
-      GDEY042T91,
+      GDEY042T81,
+      GDEQ0426T82,
       GDEW0583T7, Waveshare_5_83_bw = GDEW0583T7,
       GDEW0583T8,
       GDEQ0583T31,
@@ -98,13 +99,19 @@ class GxEPD2
       GDEQ042Z21,  Waveshare_4_2_V2_bwr = GDEQ042Z21,
       GDEW0583Z21, Waveshare_5_83_bwr = GDEW0583Z21,
       GDEW0583Z83,
-      Waveshare437inch4color,
-      ACeP565,     Waveshare_5_65_7c = ACeP565,
-      GDEY073D46,
       GDEW075Z09,  Waveshare_7_5_bwr = GDEW075Z09,
       GDEW075Z08,  Waveshare_7_5_bwr_Z08 = GDEW075Z08,
       GDEH075Z90,  Waveshare_7_5_bwr_Z90 = GDEH075Z90,
-      GDEY1248Z51
+      GDEY1248Z51,
+      // 4-color
+      GDEY0266F51H,
+      GDEY029F51H,
+      Waveshare3inch4color,
+      GDEY0420F51,
+      Waveshare437inch4color,
+      // 7-color
+      ACeP565,     Waveshare_5_65_7c = ACeP565,
+      GDEY073D46
     };
 };
 

+ 12 - 0
src/GxEPD2_4C.h

@@ -48,6 +48,18 @@
 #  define __has_include(x) true
 #endif
 
+#if __has_include("epd4c/GxEPD2_266c_GDEY0266F51H.h")
+#include "epd4c/GxEPD2_266c_GDEY0266F51H.h"
+#endif
+#if __has_include("epd4c/GxEPD2_290c_GDEY029F51H.h")
+#include "epd4c/GxEPD2_290c_GDEY029F51H.h"
+#endif
+#if __has_include("epd4c/GxEPD2_300c.h")
+#include "epd4c/GxEPD2_300c.h"
+#endif
+#if __has_include("epd4c/GxEPD2_420c_GDEY0420F51.h")
+#include "epd4c/GxEPD2_420c_GDEY0420F51.h"
+#endif
 #if __has_include("epd4c/GxEPD2_437c.h")
 #include "epd4c/GxEPD2_437c.h"
 #endif

+ 21 - 21
src/GxEPD2_BW.h

@@ -157,8 +157,11 @@
 #if __has_include("epd/GxEPD2_420_M01.h")
 #include "epd/GxEPD2_420_M01.h"
 #endif
-#if __has_include("gdey/GxEPD2_420_GDEY042T91.h")
-#include "gdey/GxEPD2_420_GDEY042T91.h"
+#if __has_include("gdey/GxEPD2_420_GDEY042T81.h")
+#include "gdey/GxEPD2_420_GDEY042T81.h"
+#endif
+#if __has_include("gdeq/GxEPD2_426_GDEQ0426T82.h")
+#include "gdeq/GxEPD2_426_GDEQ0426T82.h"
 #endif
 #if __has_include("epd/GxEPD2_583.h")
 #include "epd/GxEPD2_583.h"
@@ -255,12 +258,12 @@ class GxEPD2_BW : public GxEPD2_GFX_BASE_CLASS
       }
       // transpose partial window to 0,0
       x -= _pw_x;
-      y -= _pw_y;
+      if (!_reverse) y -= _pw_y;
+      else y = HEIGHT - _pw_y - y - 1;
       // clip to (partial) window
       if ((x < 0) || (x >= int16_t(_pw_w)) || (y < 0) || (y >= int16_t(_pw_h))) return;
       // adjust for current page
       y -= _current_page * _page_height;
-      if (_reverse) y = _page_height - y - 1;
       // check if in current page
       if ((y < 0) || (y >= int16_t(_page_height))) return;
       uint16_t i = x / 8 + y * (_pw_w / 8);
@@ -282,7 +285,7 @@ class GxEPD2_BW : public GxEPD2_GFX_BASE_CLASS
     // initial false for re-init after processor deep sleep wake up, if display power supply was kept
     // this can be used to avoid the repeated initial full refresh on displays with fast partial update
     // NOTE: garbage will result on fast partial update displays, if initial full update is omitted after power loss
-    // reset_duration = 10 is default; a value of 2 may help with "clever" reset circuit of newer boards from Waveshare 
+    // reset_duration = 10 is default; a value of 2 may help with "clever" reset circuit of newer boards from Waveshare
     // pulldown_rst_mode true for alternate RST handling to avoid feeding 5V through RST pin
     void init(uint32_t serial_diag_bitrate, bool initial, uint16_t reset_duration = 10, bool pulldown_rst_mode = false)
     {
@@ -305,7 +308,7 @@ class GxEPD2_BW : public GxEPD2_GFX_BASE_CLASS
     }
 
     // release SPI and control pins
-    void end() 
+    void end()
     {
       epd2.end();
     }
@@ -346,11 +349,11 @@ class GxEPD2_BW : public GxEPD2_GFX_BASE_CLASS
       h = gx_uint16_min(h, height() - y);
       _rotate(x, y, w, h);
       uint16_t y_part = _reverse ? HEIGHT - h - y : y;
-      epd2.writeImagePart(_buffer, x, y_part, GxEPD2_Type::WIDTH, _page_height, x, y, w, h);
-      epd2.refresh(x, y, w, h);
+      epd2.writeImagePart(_buffer, x, y_part, GxEPD2_Type::WIDTH, _page_height, x, y_part, w, h);
+      epd2.refresh(x, y_part, w, h);
       if (epd2.hasFastPartialUpdate)
       {
-        epd2.writeImagePartAgain(_buffer, x, y_part, GxEPD2_Type::WIDTH, _page_height, x, y, w, h);
+        epd2.writeImagePartAgain(_buffer, x, y_part, GxEPD2_Type::WIDTH, _page_height, x, y_part, w, h);
       }
     }
 
@@ -380,6 +383,7 @@ class GxEPD2_BW : public GxEPD2_GFX_BASE_CLASS
       _pw_w += _pw_x % 8;
       if (_pw_w % 8 > 0) _pw_w += 8 - _pw_w % 8;
       _pw_x -= _pw_x % 8;
+      if (_reverse) _pw_y = HEIGHT - _pw_h - _pw_y;
     }
 
     void firstPage()
@@ -395,12 +399,11 @@ class GxEPD2_BW : public GxEPD2_GFX_BASE_CLASS
       {
         if (_using_partial_mode)
         {
-          uint32_t offset = _reverse ? (HEIGHT - _pw_h) * _pw_w / 8 : 0;
-          epd2.writeImage(_buffer + offset, _pw_x, _pw_y, _pw_w, _pw_h);
+          epd2.writeImage(_buffer, _pw_x, _pw_y, _pw_w, _pw_h);
           epd2.refresh(_pw_x, _pw_y, _pw_w, _pw_h);
           if (epd2.hasFastPartialUpdate)
           {
-            epd2.writeImageAgain(_buffer + offset, _pw_x, _pw_y, _pw_w, _pw_h);
+            epd2.writeImageAgain(_buffer, _pw_x, _pw_y, _pw_w, _pw_h);
             //epd2.refresh(_pw_x, _pw_y, _pw_w, _pw_h); // not needed
           }
         }
@@ -429,9 +432,8 @@ class GxEPD2_BW : public GxEPD2_GFX_BASE_CLASS
         {
           //Serial.print("writeImage("); Serial.print(_pw_x); Serial.print(", "); Serial.print(dest_ys); Serial.print(", ");
           //Serial.print(_pw_w); Serial.print(", "); Serial.print(dest_ye - dest_ys); Serial.println(")");
-          uint32_t offset = _reverse ? (_page_height - (dest_ye - dest_ys)) * _pw_w / 8 : 0;
-          if (!_second_phase) epd2.writeImage(_buffer + offset, _pw_x, dest_ys, _pw_w, dest_ye - dest_ys);
-          else epd2.writeImageAgain(_buffer + offset, _pw_x, dest_ys, _pw_w, dest_ye - dest_ys);
+          if (!_second_phase) epd2.writeImage(_buffer, _pw_x, dest_ys, _pw_w, dest_ye - dest_ys);
+          else epd2.writeImageAgain(_buffer, _pw_x, dest_ys, _pw_w, dest_ye - dest_ys);
         }
         else
         {
@@ -494,12 +496,11 @@ class GxEPD2_BW : public GxEPD2_GFX_BASE_CLASS
         drawCallback(pv);
         if (_using_partial_mode)
         {
-          uint32_t offset = _reverse ? (HEIGHT - _pw_h) * _pw_w / 8 : 0;
-          epd2.writeImage(_buffer + offset, _pw_x, _pw_y, _pw_w, _pw_h);
+          epd2.writeImage(_buffer, _pw_x, _pw_y, _pw_w, _pw_h);
           epd2.refresh(_pw_x, _pw_y, _pw_w, _pw_h);
           if (epd2.hasFastPartialUpdate)
           {
-            epd2.writeImageAgain(_buffer + offset, _pw_x, _pw_y, _pw_w, _pw_h);
+            epd2.writeImageAgain(_buffer, _pw_x, _pw_y, _pw_w, _pw_h);
             //epd2.refresh(_pw_x, _pw_y, _pw_w, _pw_h); // not needed
           }
         }
@@ -530,9 +531,8 @@ class GxEPD2_BW : public GxEPD2_GFX_BASE_CLASS
             {
               fillScreen(GxEPD_WHITE);
               drawCallback(pv);
-              uint32_t offset = _reverse ? (_page_height - (dest_ye - dest_ys)) * _pw_w / 8 : 0;
-              if (phase == 1) epd2.writeImage(_buffer + offset, _pw_x, dest_ys, _pw_w, dest_ye - dest_ys);
-              else epd2.writeImageAgain(_buffer + offset, _pw_x, dest_ys, _pw_w, dest_ye - dest_ys);
+              if (phase == 1) epd2.writeImage(_buffer, _pw_x, dest_ys, _pw_w, dest_ye - dest_ys);
+              else epd2.writeImageAgain(_buffer, _pw_x, dest_ys, _pw_w, dest_ye - dest_ys);
             }
           }
           epd2.refresh(_pw_x, _pw_y, _pw_w, _pw_h);

+ 2 - 0
src/GxEPD2_EPD.cpp

@@ -28,6 +28,7 @@ GxEPD2_EPD::GxEPD2_EPD(int16_t cs, int16_t dc, int16_t rst, int16_t busy, int16_
   _power_is_on = false;
   _using_partial_mode = false;
   _hibernating = false;
+  _init_display_done = false;
   _reset_duration = 10;
   _busy_callback = 0;
   _busy_callback_parameter = 0;
@@ -46,6 +47,7 @@ void GxEPD2_EPD::init(uint32_t serial_diag_bitrate, bool initial, uint16_t reset
   _power_is_on = false;
   _using_partial_mode = false;
   _hibernating = false;
+  _init_display_done = false;
   _reset_duration = reset_duration;
   if (serial_diag_bitrate > 0)
   {

+ 1 - 0
src/GxEPD2_EPD.h

@@ -119,6 +119,7 @@ class GxEPD2_EPD
     SPISettings _spi_settings;
     bool _initial_write, _initial_refresh;
     bool _power_is_on, _using_partial_mode, _hibernating;
+    bool _init_display_done;
     uint16_t _reset_duration;
     void (*_busy_callback)(const void*); 
     const void* _busy_callback_parameter;

+ 1020 - 0
src/bitmaps/Bitmaps4c168x384.h

@@ -0,0 +1,1020 @@
+#ifndef _GxBitmaps4c168x384_H_
+#define _GxBitmaps4c168x384_H_
+
+#if defined(ESP8266) || defined(ESP32)
+#include <pgmspace.h>
+#else
+#include <avr/pgmspace.h>
+#endif
+
+const unsigned char Bitmap4c168x384[16128] PROGMEM = { /* 0X81,0X02,0X80,0X01,0XA8,0X00, */
+  0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55,
+  0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA5,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X6A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X56, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA5, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55,
+  0X55, 0X56, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55,
+  0X5A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XAF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XFF, 0XFF, 0XD5, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XFF, 0X55, 0XD5, 0X55, 0X55, 0X55,
+  0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA,
+  0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0XAA, 0XAA, 0XAB, 0XF9, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAF, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAF, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA,
+  0XAA, 0XBA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X5A,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X6A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XEA, 0XAA, 0XAA, 0XAB, 0XFF, 0XD5, 0X55, 0X55, 0X55,
+  0X6A, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0XFF, 0XFF, 0XAA, 0XAA, 0XAF, 0XFF, 0XF5, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XEA, 0XAA, 0XFF, 0XFF,
+  0XFD, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0X55, 0X55, 0X55,
+  0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5,
+  0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFA, 0XAA, 0XFF, 0X03, 0XFD, 0X55, 0X55, 0X55, 0X6A, 0XAA,
+  0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XA9,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X57, 0XF0, 0X03,
+  0XFE, 0XAA, 0XF0, 0X00, 0X3F, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X5F, 0X00, 0X00, 0X3E, 0XAF, 0XC0, 0X00, 0X0F, 0X55,
+  0X55, 0X55, 0X6A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55,
+  0X55, 0X7C, 0X00, 0X00, 0X0F, 0XAF, 0X00, 0X00, 0X0F, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA5, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55,
+  0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XFC, 0X00, 0X00, 0X03, 0XEF,
+  0X00, 0X00, 0X03, 0XD5, 0X55, 0X55, 0X6A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XA9, 0X55, 0X55, 0X55, 0X57, 0XF0, 0X00, 0X00, 0X00, 0XEC, 0X00, 0X00, 0X03, 0XD5, 0X55, 0X55,
+  0X6A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X95, 0X55, 0X57, 0XF0,
+  0X00, 0X00, 0X00, 0XF0, 0X00, 0X00, 0X03, 0XD5, 0X55, 0X55, 0X5A, 0XAA, 0XA5, 0X55, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X95, 0X55, 0X57, 0XC0, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00,
+  0X00, 0XD5, 0X55, 0X55, 0X5A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X55, 0X55, 0X55,
+  0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0XA5, 0X55, 0X57, 0XC0, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00, 0XD5, 0X55, 0X55, 0X5A, 0XAA,
+  0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0XA5, 0X55, 0X57, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0XD5, 0X55, 0X55, 0X5A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0XA9, 0X55, 0X57, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XD5,
+  0X55, 0X55, 0X5A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0XAA, 0X55,
+  0X57, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XD5, 0X55, 0X55, 0X5A, 0XAA, 0XA5, 0X55,
+  0X55, 0X55, 0X55, 0X6A, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55,
+  0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0XAA, 0X55, 0X57, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X35, 0X55, 0X55, 0X5A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XA9, 0X55,
+  0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA5,
+  0X55, 0X55, 0XAA, 0X55, 0X57, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X35, 0X55, 0X55,
+  0X5A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA,
+  0XA9, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0XAA, 0X95, 0X57, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X35, 0XFF, 0XFD, 0X5A, 0XAA, 0XA5, 0X55, 0X55, 0X55,
+  0X55, 0X6A, 0XAF, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0XAA, 0X95, 0X57, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X17, 0XFF, 0XFF, 0X5A, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X7A, 0XFF, 0X55, 0X55, 0X55,
+  0X55, 0XAA, 0XAB, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55,
+  0XAA, 0XA5, 0X57, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3C, 0X00, 0XFF, 0XD6, 0XAA,
+  0XA9, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAE, 0XAA, 0XA5, 0X55,
+  0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0XAA, 0XA5, 0X55, 0XC0, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0X00, 0X0F, 0XFE, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X7F,
+  0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAE, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X55, 0X55, 0X55, 0XAA, 0XA9, 0X55, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0XFE, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA,
+  0XBE, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0XAA, 0XAF,
+  0XFD, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3E, 0XAA, 0XA9, 0X55,
+  0X55, 0X55, 0X55, 0X7F, 0XFF, 0XD5, 0X55, 0X55, 0X56, 0XAA, 0XBA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X5A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0XAB, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XBF, 0XFF, 0XFD,
+  0X55, 0X55, 0X56, 0XAA, 0XFA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55,
+  0X55, 0X55, 0XAF, 0XFC, 0X00, 0X30, 0X00, 0X00, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X3F, 0XEA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XAF, 0XFF, 0XFF, 0X55, 0X55, 0X5A, 0XAA, 0XFA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0XFF, 0XC0, 0X00, 0X00,
+  0X00, 0X03, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XEA, 0XA9, 0X55, 0X55, 0X55,
+  0X55, 0XAF, 0XFF, 0XFD, 0X55, 0X55, 0X5A, 0XAA, 0XFA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X00, 0X00, 0X00, 0X30,
+  0X00, 0X00, 0X00, 0X00, 0X03, 0XEA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XAF, 0XFF, 0XF5, 0X55, 0X55,
+  0X5A, 0XAB, 0XFA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0XFC, 0X00, 0X00, 0X00, 0X00, 0X3C, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00, 0X00, 0X03, 0XEA,
+  0XA9, 0X55, 0X55, 0X55, 0X55, 0XBF, 0XFF, 0XD5, 0X55, 0X55, 0X5A, 0XAB, 0XEA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X30,
+  0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFA, 0XA9, 0X55, 0X55, 0XD5, 0X55, 0XBF,
+  0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAF, 0XEA, 0XA9, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0XC0, 0X00, 0X00, 0X00, 0X00, 0XF0, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00,
+  0X00, 0X00, 0X03, 0XFA, 0XA9, 0X55, 0X55, 0XD5, 0X55, 0XBF, 0XFF, 0X55, 0X55, 0X55, 0X6A, 0XAF,
+  0XEA, 0XA9, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0XF0, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFA, 0XA9, 0X55,
+  0X55, 0XD5, 0X55, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X6A, 0XBF, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X5A,
+  0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC0, 0X00, 0X00,
+  0X00, 0X3C, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFA, 0XA9, 0X55, 0X55, 0XD5, 0X55, 0XBA, 0XBF, 0X55,
+  0X55, 0X55, 0X6A, 0XBF, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55,
+  0X55, 0X55, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC0, 0X00, 0X00, 0X00, 0X3C, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0XFE, 0XA9, 0X55, 0X55, 0XD5, 0X55, 0XAA, 0XBF, 0X55, 0X55, 0X55, 0X6A, 0XFF, 0XAA, 0XA5,
+  0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0XC0, 0X00, 0X00, 0X00, 0X0F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3E, 0XA9, 0X55, 0X55, 0XF5,
+  0X55, 0XAA, 0XAF, 0X55, 0X55, 0X55, 0XAA, 0XFF, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC0, 0X00, 0X00, 0X00, 0X0F,
+  0XF0, 0X00, 0X00, 0X00, 0X00, 0X3E, 0XAF, 0XD5, 0X55, 0X75, 0X55, 0XAA, 0XA7, 0X55, 0X55, 0X55,
+  0XAA, 0XFF, 0XAA, 0X95, 0X55, 0X57, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3E,
+  0XAF, 0X7F, 0X55, 0X75, 0X55, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0XAA, 0XFF, 0XAA, 0X95, 0X55, 0XDF,
+  0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3E, 0XAF, 0X57, 0X55, 0X7D, 0X55, 0XAA,
+  0XA5, 0X55, 0X55, 0X55, 0XAF, 0XFE, 0XAA, 0X95, 0X55, 0XFF, 0X55, 0XAA, 0XAA, 0XAA, 0XA9, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X3E, 0XFF, 0XD7, 0XD5, 0X7D, 0X55, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0XAF, 0XFE,
+  0XAA, 0X55, 0X55, 0XFF, 0X56, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3E, 0XFF, 0XF5,
+  0XF5, 0X7D, 0X55, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0XAF, 0XFE, 0XAA, 0X55, 0X55, 0XFF, 0XD6, 0XAA,
+  0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X00, 0X00, 0X00, 0X00, 0X00, 0XF0, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3E, 0XBF, 0XF5, 0X75, 0X7D, 0X56, 0XAA, 0XA5, 0X55,
+  0X55, 0X56, 0XBF, 0XFE, 0XAA, 0X55, 0X55, 0XFF, 0XDA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X3E, 0XBF, 0XD5, 0X7D, 0X7D, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X56, 0XBF, 0XFA, 0XAA, 0X55,
+  0X57, 0XFF, 0XFA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X3C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0XFF, 0XD5, 0X5D, 0X7F,
+  0X56, 0XAA, 0X95, 0X55, 0X55, 0X56, 0XFF, 0XFA, 0XAA, 0X55, 0X57, 0XFF, 0X5A, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XC0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XD5, 0X5D, 0X7F, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X56,
+  0XFF, 0XFA, 0XA9, 0X55, 0X55, 0X7F, 0X6A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X0F, 0XD5, 0X55, 0X5F, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X5A, 0XFF, 0XFA, 0XA5, 0X55, 0X55, 0X5D,
+  0X6A, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03,
+  0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF5, 0X55, 0X7F, 0XD6, 0XAA,
+  0X95, 0X55, 0X55, 0X5B, 0XFF, 0XFA, 0XA5, 0X55, 0X55, 0X5D, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0XFD, 0X55, 0X5F, 0XD6, 0XAA, 0X95, 0X55, 0X55, 0X5F, 0XFF, 0XEA,
+  0XA5, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA5, 0X5D, 0X55, 0X55, 0X55, 0X55, 0X6A, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X0F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFD,
+  0X55, 0X5F, 0XD6, 0XAA, 0X95, 0X55, 0X55, 0X5F, 0XFF, 0XEA, 0XA5, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0XAA, 0XA5, 0X5D, 0X55, 0X55, 0X55, 0X55, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3C, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFD, 0X55, 0X5F, 0XF6, 0XAA, 0X95, 0X55,
+  0X55, 0X6F, 0XFF, 0XEA, 0X95, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0X95, 0X75, 0X55, 0X55, 0X55,
+  0X56, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X3F, 0X55, 0X5F, 0XF6, 0XAA, 0X95, 0X55, 0X55, 0X7F, 0XFF, 0XEA, 0X95, 0X55,
+  0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0X55, 0XD5, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X55, 0X5F,
+  0XFA, 0XAA, 0X95, 0X55, 0X55, 0XFF, 0XFF, 0XEA, 0X95, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0X57,
+  0XD5, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X55, 0X5F, 0XFE, 0XAA, 0X95, 0X55, 0X55, 0XFF,
+  0XFF, 0XEA, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X5F, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC0, 0X00, 0X30, 0X00,
+  0X00, 0X0F, 0X55, 0X5F, 0XFE, 0XAA, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XEA, 0X55, 0X55, 0X55, 0X6A,
+  0XAA, 0XAA, 0XA9, 0X7F, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XD5, 0X5F, 0XFE, 0XAA,
+  0X55, 0X55, 0X5B, 0XFF, 0XFF, 0XA9, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA5, 0X7D, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03,
+  0XF0, 0X00, 0XC0, 0X00, 0X00, 0X0F, 0XD5, 0X5F, 0XFF, 0XAA, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XA9,
+  0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA5, 0XFD, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XF0, 0X00, 0XC0, 0X00, 0X00, 0X0F,
+  0XD5, 0X5F, 0XFF, 0XAA, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XA9, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA,
+  0XA7, 0XF5, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X03, 0X3C, 0X0F, 0X00, 0X00, 0X00, 0X0F, 0XD5, 0X5F, 0XFF, 0XEA, 0X55, 0X55,
+  0X7F, 0XFF, 0XFC, 0XA9, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0X9F, 0XF5, 0X55, 0X55, 0X55, 0X6A,
+  0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X0F, 0XFC,
+  0X00, 0X00, 0X00, 0X0F, 0XD5, 0X57, 0XFF, 0XEA, 0X55, 0X55, 0XFF, 0XFF, 0XFC, 0XA5, 0X55, 0X55,
+  0X56, 0XAA, 0XAA, 0XAA, 0X5F, 0XD5, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X03, 0X03, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XD5, 0X57,
+  0XFF, 0XFA, 0X55, 0X57, 0XFF, 0XFF, 0XFC, 0XA5, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XFF, 0XD5,
+  0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0XCC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XD5, 0X57, 0XFF, 0XFA, 0X55, 0X5B, 0XFF, 0XFF,
+  0XF2, 0XA5, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0F, 0XD5, 0X57, 0XFF, 0XFE, 0X55, 0X5F, 0XFF, 0XFF, 0XF0, 0XA5, 0X55, 0X55, 0X5A, 0XAA,
+  0XAA, 0XAB, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XD5, 0X57, 0XFF, 0XFF,
+  0X55, 0XBF, 0XFF, 0XFF, 0XC3, 0X95, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XBF, 0XFD, 0X55, 0X55, 0X55,
+  0X5A, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XD5, 0X57, 0XFF, 0XFF, 0XD7, 0XFF, 0XFF, 0XFF, 0XC2, 0X95,
+  0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XBF, 0XFD, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F,
+  0XD5, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC3, 0X95, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XFF,
+  0XF5, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XD5, 0X5C, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X0E, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAF, 0XFF, 0XF5, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X0F, 0XD5, 0X5C, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X0E, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0XAF, 0XFF, 0XF5, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00,
+  0X40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XD5, 0X5C,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X0E, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XBF, 0XFF, 0XD5, 0X55,
+  0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XC0, 0X00, 0X00, 0X05, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X55, 0X5C, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC,
+  0X0E, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XFF, 0XFF, 0XD5, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XFC, 0X00, 0X03, 0X55, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X3F, 0X55, 0X7C, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X0D, 0X55, 0X55, 0X5A, 0XAA, 0XAB,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XFF, 0XF3, 0XF9, 0X55, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X55, 0X7C, 0X3F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XF0, 0X0D, 0X55, 0X55, 0X5A, 0XAA, 0XAF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XA9, 0X7F, 0XFF, 0X55, 0X55, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X55, 0X7C, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X3D, 0X55,
+  0X55, 0X6A, 0XAA, 0XFF, 0XFF, 0XFE, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55,
+  0X55, 0X57, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFD,
+  0X55, 0XFC, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X3D, 0X55, 0X55, 0X6A, 0XAA, 0XFF, 0XFF, 0XFD,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X57, 0XC0, 0X00, 0X00, 0X00,
+  0X00, 0X3F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X57, 0XFF, 0X3F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0X00, 0X3D, 0X55, 0X55, 0XAA, 0XAF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X6A, 0XAA, 0XAE, 0XAA,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X57, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XC0, 0X03, 0XC0, 0X00,
+  0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFC, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X3D, 0X55, 0X55, 0XAA,
+  0XBF, 0XFF, 0XFF, 0XF5, 0X55, 0X55, 0X6A, 0XAA, 0XAE, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X57,
+  0XC0, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XC0, 0X03, 0XC0, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF,
+  0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X3D, 0X55, 0X56, 0XAA, 0XFF, 0XFF, 0XFF, 0XF5, 0X55, 0X55,
+  0XAA, 0XAA, 0XAE, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X57, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X03,
+  0XF0, 0X03, 0XC0, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0X0F, 0XFF, 0XFF, 0XFF, 0XFC, 0X00,
+  0X3F, 0X55, 0X56, 0XAF, 0XFF, 0XFF, 0XFF, 0XD5, 0X55, 0X56, 0XAA, 0XAA, 0XBE, 0XAA, 0XA5, 0X55,
+  0X55, 0X55, 0X55, 0X57, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFC, 0X03, 0XF0, 0X00, 0X00, 0X00,
+  0X0F, 0XFF, 0XFF, 0XFF, 0X03, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0XFF, 0X55, 0X5A, 0XBF, 0XFF, 0XFF,
+  0XFF, 0X15, 0X55, 0X5A, 0XAA, 0XFA, 0XFE, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XC0, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0XFC, 0X03, 0XF0, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X03, 0XFF,
+  0XFF, 0XFF, 0XF0, 0X00, 0XFF, 0X55, 0X5A, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X5A, 0XAA, 0XFF,
+  0XFE, 0XA9, 0X55, 0X55, 0X95, 0X55, 0X55, 0X55, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3C, 0X00,
+  0XFC, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X03, 0XFF, 0XFF, 0XFF, 0XC0, 0X00, 0XFF, 0XD5,
+  0X5F, 0XFF, 0XFF, 0XFF, 0XF0, 0XD5, 0X55, 0X6A, 0XAA, 0XFF, 0XFE, 0XA9, 0X55, 0X55, 0XA5, 0X55,
+  0X55, 0X55, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0XFC, 0X00, 0X00, 0X00, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0XFF, 0XC0, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC3, 0X55,
+  0X55, 0XAA, 0XAA, 0XBF, 0XFE, 0XA5, 0X55, 0X55, 0XA9, 0X55, 0X55, 0X55, 0XFC, 0X00, 0X0F, 0X00,
+  0X00, 0X00, 0X0F, 0XC0, 0XFC, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0XFF,
+  0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XCF, 0X55, 0X56, 0XAA, 0XAA, 0XBF, 0XFF, 0XD5,
+  0X55, 0X55, 0XA9, 0X55, 0X55, 0X55, 0X7F, 0X00, 0X3C, 0X00, 0X00, 0X00, 0X0F, 0XC0, 0X3F, 0X00,
+  0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X0F, 0X55, 0X56, 0XAA, 0XAA, 0XBF, 0XFF, 0XD5, 0X55, 0X55, 0XAA, 0X55, 0X55, 0X55,
+  0X7F, 0XCC, 0XFB, 0X00, 0X00, 0X00, 0X03, 0XC0, 0X3F, 0XF0, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X00, 0X3F, 0XFF, 0XFC, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X0D, 0X55, 0X5A, 0XAA,
+  0XAA, 0XBF, 0XFF, 0XF5, 0X55, 0X55, 0XEA, 0X95, 0X55, 0X55, 0X5F, 0XFF, 0XFA, 0X00, 0X00, 0X00,
+  0X03, 0XF0, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X3F, 0XFF, 0XF0, 0X00, 0X03,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X3D, 0X55, 0X6A, 0XAA, 0XAA, 0XBF, 0XFF, 0XFD, 0X55, 0X55,
+  0XFF, 0XFF, 0XD5, 0X55, 0X57, 0XFF, 0XAB, 0X00, 0X00, 0X03, 0X00, 0XFC, 0X0F, 0XFF, 0XFF, 0XF0,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X0F, 0XFF, 0XF0, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0,
+  0XF5, 0X55, 0XAA, 0XAA, 0XAA, 0XFF, 0XFF, 0XF5, 0X55, 0X55, 0XAF, 0XFD, 0X55, 0X55, 0X55, 0X55,
+  0X6B, 0X00, 0X00, 0X0F, 0X00, 0X3C, 0X03, 0XFF, 0XFC, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X0F,
+  0XFF, 0XC0, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XF5, 0X55, 0XAA, 0XAA, 0XAA, 0XFF,
+  0XFF, 0X55, 0X55, 0X55, 0XAB, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X6B, 0X00, 0X00, 0X0F, 0XC0, 0X3C,
+  0X03, 0XFF, 0XFC, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0X00, 0X03, 0XFF, 0X00, 0X00, 0X03, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0X00, 0XF5, 0X56, 0XAA, 0XAA, 0XAA, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X5B, 0XC0, 0X00, 0X0F, 0XF0, 0X0F, 0X03, 0XFF, 0XFC, 0X00, 0X0F, 0XFF,
+  0XFF, 0XFF, 0X00, 0X00, 0XFC, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X03, 0XF5, 0X5A,
+  0XAA, 0XAA, 0XAA, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X56, 0XC0,
+  0X00, 0X0F, 0XF0, 0X0F, 0XC0, 0XFF, 0XFC, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X03, 0XF5, 0X6A, 0XAA, 0XAA, 0XAB, 0XD5, 0XFD, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X56, 0XE0, 0X00, 0X03, 0XFC, 0X03, 0XC0, 0XFF,
+  0XFF, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XC0, 0X0F, 0XE5, 0X6A, 0XAA, 0XAA, 0XAA, 0X55, 0XFD, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA9, 0X55,
+  0X55, 0X55, 0X55, 0XF0, 0X00, 0X0F, 0XFF, 0X03, 0XC0, 0X3F, 0XFC, 0X00, 0X00, 0X3F, 0XFF, 0XFF,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X0F, 0XD5, 0XAA, 0XAA, 0XAA,
+  0XA9, 0X55, 0X7D, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0XBC, 0X00, 0X3F,
+  0X7F, 0X00, 0XF0, 0X3F, 0XFF, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F,
+  0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X3F, 0XD5, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X75, 0X55, 0X55, 0X55,
+  0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XCF, 0XFE, 0X7F, 0XC0, 0XFC, 0X3F, 0XFC, 0X00,
+  0X00, 0X0F, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X3F,
+  0XDA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55,
+  0X55, 0X6F, 0XFF, 0XFE, 0X5F, 0XC0, 0X3C, 0X0F, 0XFF, 0X00, 0X00, 0X00, 0XFF, 0XFC, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XC0, 0X00, 0X3F, 0XDA, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFA, 0X97, 0XF0,
+  0X3C, 0X0F, 0XFC, 0X00, 0X00, 0X00, 0X3F, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF,
+  0XFC, 0X00, 0X00, 0XFF, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA,
+  0XAA, 0XA9, 0X55, 0X55, 0X55, 0X56, 0XFF, 0XAA, 0X96, 0XFC, 0X0F, 0X03, 0XFF, 0X00, 0X00, 0X00,
+  0X0F, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0XFF, 0XAA, 0XAA,
+  0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0XA5, 0X7C, 0X03, 0XC3, 0XFF, 0X00, 0X00, 0X00, 0X3C, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0XFF, 0XFF, 0XC0, 0X00, 0X03, 0XFF, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA5, 0X7F, 0X03, 0XC3,
+  0XFF, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0X00, 0X00,
+  0X03, 0XFF, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA9, 0X5F, 0XC0, 0XC0, 0XFF, 0X00, 0X00, 0X00, 0X3F, 0XF0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFC, 0X00, 0X00, 0X03, 0XFF, 0XAA, 0XAA, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XEA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X6A, 0XAA,
+  0XA9, 0X57, 0XC0, 0XF0, 0XFF, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0XFF, 0XC0, 0X00, 0X00, 0X0F, 0XFF, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5A, 0XAA, 0XBF, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X57, 0XF0, 0X3C, 0X3F, 0X00,
+  0X00, 0X00, 0X03, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0XF0, 0X00, 0X00, 0X00, 0X0F, 0XFF,
+  0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAB, 0XFA, 0XAA, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55, 0XFC, 0X3C, 0X3F, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XFF, 0XEA, 0X95, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X95,
+  0X7C, 0X0C, 0X0F, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X3F, 0XFF, 0XEA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X55, 0X6A,
+  0XAA, 0XBF, 0XFF, 0X95, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X95, 0X7F, 0X0F, 0X0F, 0X00, 0X00, 0X00,
+  0X00, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XEA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0X55, 0X5A, 0XAA, 0XAB, 0XFF, 0XFD, 0X55, 0X55,
+  0X55, 0XAA, 0XAA, 0XA5, 0XBF, 0XC3, 0XCF, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XC0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XEA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X56, 0XAA, 0X55, 0X56, 0XAA, 0XAA, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X6A, 0XAA, 0XA7, 0XFF, 0XC0,
+  0XC3, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0XFF, 0XFF, 0XEA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0X55, 0X55, 0XAA, 0XAA,
+  0XBF, 0XFF, 0XFF, 0XFF, 0X55, 0X5A, 0XAA, 0XFF, 0XFF, 0XF0, 0XF3, 0XC0, 0X00, 0X00, 0X3F, 0XF0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XEA, 0X95, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X55, 0X55, 0X6A, 0XAA, 0XAF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFC, 0X30, 0XC0, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAE, 0XAA,
+  0X55, 0X55, 0X5A, 0XAA, 0XAB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X30, 0XC0,
+  0X00, 0X00, 0X3C, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF,
+  0XF9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XFA, 0XAA, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XBF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X0C, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XAF, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XCC, 0X30, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XFE, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X6A, 0XAA, 0XAB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC3, 0X30, 0X00, 0X00,
+  0X00, 0X0F, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X6F, 0XFA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0XCC, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XF5, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFC, 0XCC, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0XFF, 0XFE, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0XAA, 0XAF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0X00, 0X00, 0X3F, 0XFC,
+  0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAB, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X33, 0X00, 0X00, 0X3F, 0XFC, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XAA, 0XAA, 0XAA, 0XA5,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA2, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X33,
+  0X00, 0X00, 0X3F, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA,
+  0XA8, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0XCC, 0XC0, 0X00, 0X03, 0XFF, 0XFF, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFA,
+  0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X80, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XF0, 0X30, 0XC0, 0X00, 0X00, 0X0F, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XEA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA0, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X33, 0X00, 0X00,
+  0X00, 0X00, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA8,
+  0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X0C, 0X30, 0X00, 0X00, 0X00, 0X03, 0XFF, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFA, 0XAA, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X80, 0X00, 0X03, 0XFF, 0XFF, 0XFC,
+  0X00, 0X03, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0XA0, 0X00, 0X00, 0X03, 0XFF, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00,
+  0X00, 0X3F, 0X00, 0X00, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA8, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X03, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAB, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X3C, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X0F, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XC2, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X56, 0XAA, 0XAA, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XFC, 0X0A, 0XA5, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XBC, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X03, 0XCC, 0X00, 0X00,
+  0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0X00, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X0C, 0XC3, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFC, 0X00,
+  0X03, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAB, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X00,
+  0X0C, 0XC3, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0E, 0X95, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAB, 0XF0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X0C, 0XC3, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0XF9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA5, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF,
+  0XFF, 0XFF, 0X00, 0X00, 0X03, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XD5, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA,
+  0XBF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XBF, 0XC0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X3F, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X56, 0XAA, 0XAF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XC0, 0X00,
+  0X00, 0X00, 0X0C, 0X03, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFD, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAF, 0XFC,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X0C, 0X03, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X03, 0XF5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA,
+  0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAB, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X3F, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X03, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF5,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XA9, 0XD5, 0X55, 0X55,
+  0X55, 0X56, 0XAB, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XC3, 0XFC, 0X00, 0X00, 0X00,
+  0X0F, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XD5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XE5, 0X55, 0X55, 0X55, 0X56, 0XAB, 0XFF, 0XC0, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XFF, 0XD5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0XAF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X6B, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00,
+  0XFC, 0X00, 0X00, 0X00, 0X03, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAB, 0XFA, 0X95, 0X55, 0X55, 0X55,
+  0X6A, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0XFC, 0X00, 0X00, 0X00, 0X0C, 0XCC,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XAA, 0XAA, 0XFA, 0XA5, 0X55, 0X55, 0X55, 0X56, 0XFF, 0XFC, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X3F, 0X00, 0XFC, 0X00, 0X00, 0X00, 0X0C, 0XC3, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F,
+  0XFD, 0X55, 0X55, 0X55, 0X57, 0XD5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XEA,
+  0XAA, 0X55, 0X55, 0X55, 0X56, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF,
+  0X00, 0X00, 0X0C, 0XC3, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFD, 0X55, 0X55, 0X55, 0X7F, 0XD5,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0XFF,
+  0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X03, 0X3C, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X56, 0X55, 0X55,
+  0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XF5, 0X55,
+  0X55, 0X55, 0XFF, 0XD5, 0X55, 0X55, 0X55, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0XFF, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X03, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XF5, 0X55, 0X55, 0X55, 0X7F, 0XD5, 0X55, 0X6A,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0XFF, 0XFF, 0XC0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X03, 0X00, 0X00, 0X00, 0X00,
+  0X0F, 0XFF, 0XF5, 0X55, 0X55, 0X55, 0X7F, 0X95, 0X5A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X6A, 0XAA, 0XAA, 0X55, 0X55, 0XFF, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF0,
+  0X3F, 0XF0, 0X00, 0X00, 0X0C, 0X03, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XF5, 0X55, 0X55, 0X55,
+  0X5D, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA9,
+  0X55, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0XFF, 0XFC, 0X00, 0X00, 0X03, 0X0C,
+  0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XF5, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0X57, 0XFF, 0XFF, 0XF0, 0X00, 0X00,
+  0X00, 0X00, 0X3F, 0XF0, 0XFF, 0XFC, 0X00, 0X00, 0X0F, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X3F, 0XFF,
+  0XF5, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X56, 0XAA, 0XAA, 0X97, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XC3, 0XF0, 0XFF,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XF5, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAF, 0XFF,
+  0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X03, 0XF0, 0X3F, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00,
+  0X00, 0X00, 0XFF, 0XFF, 0XFE, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XBF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00,
+  0X3F, 0X03, 0XF0, 0X3F, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFE, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X56, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X0F, 0XC0, 0X3F, 0X00, 0X00,
+  0X00, 0X30, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XF0,
+  0X00, 0X00, 0X00, 0X00, 0X3F, 0XCF, 0XC0, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0XFF, 0XFF, 0XFF, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF,
+  0XC0, 0XFF, 0X00, 0X00, 0XC3, 0X03, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XEA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF,
+  0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0X0F, 0XFC, 0X00, 0X00, 0XC3, 0X03,
+  0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5B, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X03, 0XFC, 0X0F, 0XFC, 0X00, 0X00, 0XC3, 0X03, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF,
+  0XFF, 0XFA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0XBF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XC0,
+  0X00, 0X00, 0XC3, 0X03, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFE, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X00, 0X00,
+  0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF,
+  0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0XBF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFE, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XA6, 0X66, 0X65, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF,
+  0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0XD5,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0XAF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0X00,
+  0X00, 0X00, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0XF5, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XD5, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF,
+  0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X0F, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F,
+  0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0XAB, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XF0, 0X03, 0XFF, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XD5, 0X55,
+  0X55, 0X55, 0XAA, 0XAB, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X3F, 0XC0, 0X00, 0XFF, 0X00, 0X00, 0X03, 0X0C, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAF, 0XFF,
+  0XFF, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00,
+  0X00, 0X3F, 0X00, 0X00, 0X0C, 0X03, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAF, 0XFF, 0XFF, 0XFF, 0XC0, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X0C, 0X03,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XEF, 0X7F, 0XBF, 0XFF, 0XF5, 0X55,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XBF, 0XFF, 0XFF, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X0C, 0X03, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C,
+  0XFF, 0XFF, 0X54, 0X44, 0X04, 0X55, 0X55, 0X56, 0X7F, 0XB5, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XBF,
+  0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F,
+  0X00, 0X00, 0X03, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XE5, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XBF, 0XFF, 0XFF, 0XFC, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X3F, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X03, 0XFF, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFD, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6F,
+  0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X00,
+  0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XF5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0XFF, 0XFF, 0XFA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFA, 0XAA, 0X99, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF,
+  0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0X00, 0X00, 0X00, 0X0F, 0XFF,
+  0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X03, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF,
+  0XFA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFC,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFE, 0XAA, 0XAA, 0XAA, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XBF, 0XFF,
+  0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XF0, 0X03, 0XFF, 0X00, 0X00, 0XCF, 0XFF, 0X00, 0X00,
+  0X00, 0X00, 0X0F, 0XFF, 0XFE, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00,
+  0X3F, 0XC0, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFE, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5A, 0XAA, 0XAB, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XFF, 0XFF, 0XFF,
+  0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X03, 0XFF, 0XFF, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XBF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00,
+  0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XEA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAF, 0XFF, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X57, 0XFF, 0XFF, 0XC0, 0X00,
+  0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F,
+  0XFF, 0XFA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X57, 0XFF, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFE, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X57,
+  0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X03, 0XFF, 0XFE, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X57, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0XC0, 0XC3, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0XFF, 0XFC,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0X00, 0X00, 0X00, 0XC0, 0XC3, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X3F, 0XFF, 0XD6, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X6A, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF,
+  0XFF, 0XF0, 0X00, 0X00, 0XC0, 0XC3, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XF5, 0X6A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X57, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X3F, 0X0C,
+  0X00, 0X30, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XF5, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XAB, 0XBE,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X5B, 0XFF, 0XC0, 0X00, 0X00,
+  0X00, 0X00, 0X0F, 0XF0, 0X03, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X03, 0XFF, 0XFD, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAB, 0XFA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X5B, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XC0, 0X00, 0XFF,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X56, 0XAA,
+  0XAA, 0XAA, 0XAB, 0XFE, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XAF,
+  0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAB, 0XFF, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0XAF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X03, 0X00, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F,
+  0XFF, 0XD5, 0X55, 0X56, 0XAA, 0XAA, 0XAB, 0XFF, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XBF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X03, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XF5, 0X55, 0X55, 0X6A, 0XAA,
+  0XAB, 0XFE, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XFF, 0XF0, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0X00,
+  0X00, 0X00, 0X00, 0X03, 0XFF, 0XFD, 0X55, 0X55, 0X56, 0XAA, 0XAB, 0XBA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XC0,
+  0X00, 0XFF, 0X00, 0X00, 0X3F, 0X03, 0X00, 0X03, 0XCC, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFD,
+  0X55, 0X55, 0X55, 0X6A, 0XAA, 0XBE, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X03, 0XFC, 0X00, 0X00, 0XC0, 0XC3,
+  0X00, 0X00, 0X03, 0X00, 0X3F, 0XFC, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAF, 0XFC, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0XC0, 0X33, 0X00, 0X00, 0XF3, 0X03, 0XFF, 0XFF,
+  0XF0, 0X00, 0X3F, 0XFF, 0XD5, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0XAF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XF0,
+  0X00, 0X00, 0XC0, 0X0F, 0X00, 0X00, 0X0C, 0XCF, 0XFF, 0XFF, 0XFF, 0X00, 0X0F, 0XFF, 0XF5, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XBF, 0XC0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0X00, 0X00, 0X00, 0X30, 0X03, 0X00, 0X00,
+  0X30, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X03, 0XFF, 0XF5, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X33, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X03, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5A, 0XAA, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X0C, 0XCF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X3F, 0XFF, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAF, 0XF0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0XC3,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X3F, 0XFF, 0XD5, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XAA, 0XAF, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF,
+  0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X33, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X0F,
+  0XFF, 0XD5, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XBF,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X03, 0XFC, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X03, 0X30, 0XFF, 0XFF, 0XFF, 0XFB, 0XFF, 0XF3, 0XFF, 0XF9, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X3F, 0XC0, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X0C, 0X3F, 0XFF,
+  0XFB, 0XAA, 0X97, 0X7C, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X6A, 0XAB, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XCC, 0X3F, 0XFF, 0XEA, 0XAA, 0XA5, 0X57, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAF, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0XC3, 0X0F, 0XFF, 0XAA, 0XAA, 0XAA, 0X55, 0X3F, 0XFF, 0XD5, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XBC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XF3, 0XCF, 0XFE, 0XAA, 0XAA,
+  0XAA, 0X95, 0X57, 0XFF, 0XD5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA,
+  0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0XC3, 0XFA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X7F, 0XF5, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAB, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF,
+  0XFC, 0X00, 0X00, 0X00, 0X3F, 0XC0, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30,
+  0XF0, 0XFA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X5F, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0XAC, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X0F, 0XF0,
+  0X03, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3C, 0X30, 0XFE, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA0, 0X00, 0X00,
+  0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X3C, 0X3C, 0X3D, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X7F, 0XD5, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00,
+  0X00, 0X00, 0X03, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3C, 0X3C, 0X0F,
+  0X6A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X57, 0XD5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A,
+  0XA8, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X0F, 0X0F, 0XDA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55,
+  0X55, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XA0, 0X00, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0F, 0X03, 0X03, 0XF6, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X7D, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X56, 0XAA, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
+  0X00, 0XF0, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XC3, 0XC0, 0XF5, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X57, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XA8, 0X0F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X03, 0XFC, 0XFF, 0XFC, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XC3, 0XC0, 0XFD, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X56,
+  0XD5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0X80, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFC, 0X00, 0X00, 0X00, 0X0F, 0XFC, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03,
+  0XC0, 0XF0, 0X3F, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X75, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0XA8, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X3F, 0XF0,
+  0XFC, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF0, 0X3C, 0X0F, 0XDA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X3F, 0XC0, 0XFC, 0X3F, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X03, 0XF0, 0X3C, 0X0F, 0XD6, 0XAA, 0XFF, 0XFA, 0XAA, 0XA5, 0X55, 0X75, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0XAF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00,
+  0X00, 0X00, 0X3F, 0X00, 0XFC, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFC, 0X0F,
+  0X03, 0XF5, 0XAB, 0XFF, 0XFE, 0XAA, 0XA9, 0X55, 0X5D, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XBF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X3F, 0X00, 0XFC, 0X3F,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFC, 0X0F, 0X00, 0XFD, 0X6F, 0XFF, 0XFE, 0XAA,
+  0XAA, 0X55, 0X56, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X7A, 0XAA,
+  0XAF, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XFF, 0X03, 0XC0, 0XFF, 0X5F, 0XF0, 0XFF, 0XAA, 0XAA, 0X95, 0X57, 0X55, 0X55, 0X55,
+  0X56, 0XAF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF5, 0X55, 0X6A, 0XAA, 0XA5, 0XFF, 0XC0, 0X00, 0X00, 0X00,
+  0X3F, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X03, 0XC0, 0X3F,
+  0X7F, 0X00, 0X0F, 0XAA, 0XAA, 0XA9, 0X55, 0XD5, 0X55, 0X55, 0X5A, 0XBF, 0XFF, 0XFF, 0XFF, 0XF5,
+  0X55, 0X55, 0XAA, 0XAA, 0XA5, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X3F, 0XC0, 0X00, 0XFF, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X03, 0XF0, 0X3F, 0XFC, 0X00, 0X03, 0XEA, 0XAA, 0XA9,
+  0X55, 0XD5, 0X55, 0X55, 0X6A, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0XFF,
+  0X00, 0X00, 0X0F, 0XFC, 0X0F, 0XFC, 0X03, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X3F, 0XC0, 0XF0, 0X0F, 0XF0, 0X00, 0X00, 0XEA, 0XAA, 0XAA, 0X95, 0X75, 0X55, 0X55, 0XAB, 0XFF,
+  0XFF, 0XFF, 0X95, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0XFF, 0X00, 0X00, 0X3F, 0XFC, 0X0F, 0XFF,
+  0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0X00, 0X00, 0X0F, 0XC0, 0X3C, 0X03, 0XFC, 0X00,
+  0X00, 0XEA, 0XAA, 0XAA, 0XA5, 0X75, 0X55, 0X56, 0XBF, 0XFF, 0XFF, 0XAA, 0X55, 0X55, 0X55, 0X5A,
+  0XAA, 0XAA, 0X55, 0XFF, 0X00, 0X00, 0XFF, 0XFF, 0X03, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00,
+  0X03, 0XFF, 0XC0, 0X00, 0X0F, 0XF0, 0X3F, 0X03, 0XFC, 0X00, 0X00, 0XEA, 0XAA, 0XAA, 0XA9, 0X75,
+  0X55, 0X5A, 0XFF, 0XFF, 0XEA, 0XA9, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55, 0XFC, 0X00, 0X0F,
+  0XFF, 0XFF, 0X00, 0X3F, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFC, 0X00, 0X0F, 0XF0,
+  0X0F, 0X00, 0XFC, 0X00, 0X00, 0X3A, 0XAA, 0XAA, 0XAA, 0X75, 0X55, 0X6B, 0XFF, 0XFA, 0XAA, 0XA9,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA9, 0X55, 0XFC, 0X00, 0X3F, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0X00, 0X0F, 0XFC, 0X0F, 0XC0, 0X3C, 0X00, 0X00, 0X3A,
+  0XAF, 0XAA, 0XAA, 0XB5, 0X55, 0XBF, 0XFF, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA9,
+  0X57, 0XF0, 0X00, 0X3F, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XC0, 0X30, 0X00, 0X00, 0X3A, 0XFF, 0XFE, 0XAA, 0XA9, 0X56, 0XFF,
+  0XEA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA5, 0X57, 0XF0, 0X00, 0XFF, 0XFF, 0XFF,
+  0XC0, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XF0,
+  0X00, 0X00, 0X00, 0X2B, 0XFF, 0XFE, 0XAA, 0XAA, 0X5F, 0XFA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55,
+  0X56, 0XAA, 0XAA, 0XA5, 0X57, 0XF0, 0X03, 0XFF, 0XFF, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0XFF, 0XFC,
+  0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XF0, 0X00, 0X3F, 0X03, 0XF0, 0X00, 0X00, 0X00, 0X3F, 0XC0, 0XFF,
+  0XAA, 0XAA, 0X7F, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X95, 0X5B, 0XC0,
+  0X0F, 0XFF, 0XFF, 0XFF, 0XC0, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0X00, 0X00, 0X3F, 0XFF, 0XFC, 0X00,
+  0X00, 0X3F, 0X00, 0XFC, 0X00, 0X00, 0X00, 0X2C, 0X00, 0X0F, 0XAA, 0XAA, 0XEA, 0XAA, 0XAA, 0XAA,
+  0XA5, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X95, 0X5F, 0XC0, 0X3F, 0XFF, 0XFF, 0XFF, 0XF0, 0X00,
+  0X00, 0X03, 0XFF, 0XFF, 0X00, 0X00, 0X3F, 0XFF, 0XF0, 0X00, 0X00, 0X0F, 0XC0, 0X3C, 0X00, 0X00,
+  0X00, 0X30, 0X00, 0X0F, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X5A, 0XAA,
+  0XAA, 0X55, 0X5F, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XC0, 0X00,
+  0X3F, 0XFF, 0XC0, 0X00, 0X00, 0X0F, 0XC0, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XEA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0X55, 0X5F, 0X00, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XC0, 0X00, 0X3F, 0XFF, 0X00, 0X00, 0X00, 0X03,
+  0XC0, 0X3F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X03, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0XA9, 0X55, 0X7F, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X3F,
+  0XFF, 0XFF, 0XC0, 0X00, 0X3F, 0XFC, 0X00, 0X00, 0X00, 0X03, 0XF0, 0X0F, 0XC0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA9, 0X55,
+  0X7C, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X3F, 0XFC,
+  0X00, 0X00, 0X00, 0X03, 0XF0, 0X03, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0XEA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XA5, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA5, 0X55, 0XB0, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XF0, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X3F, 0XF0, 0X00, 0X00, 0X00, 0X00, 0XF0, 0X03,
+  0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0XA5, 0X55, 0XF0, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X03, 0XFF, 0XFF, 0XFF,
+  0XFC, 0X00, 0X3F, 0XF0, 0X00, 0X00, 0X00, 0X00, 0XF0, 0X03, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0XFA, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X95, 0X55, 0XF0, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X3F, 0XC0, 0X00, 0X00,
+  0X00, 0X00, 0XF0, 0X00, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X95, 0X55, 0XC0, 0XFF, 0XFF, 0XD5, 0X7F, 0XFF, 0XFC, 0X00,
+  0X03, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X3F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X3A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA,
+  0X55, 0X57, 0XC3, 0XFF, 0XFF, 0X55, 0X5F, 0XFF, 0XFC, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0X00,
+  0X3F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3A, 0XAA,
+  0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0X55, 0X57, 0X0F, 0XFF, 0XF9, 0X55,
+  0X57, 0XFF, 0XFC, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X3F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0XFA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55,
+  0X55, 0XAA, 0XAA, 0XAA, 0X55, 0X5F, 0X0F, 0XFF, 0XE9, 0X55, 0X57, 0XFF, 0XFC, 0X00, 0X0F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XC0, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XEA, 0XAF, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA9, 0X55, 0X5C,
+  0X3F, 0XFF, 0XA9, 0X55, 0X55, 0XFF, 0XFC, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X3F, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X00, 0X00, 0XEA, 0XB0, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA5, 0X55, 0X5C, 0XFF, 0XFE, 0XA5, 0X55, 0X55, 0XFF,
+  0XFC, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XEB, 0X00, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA,
+  0XAA, 0XA5, 0X55, 0X7C, 0XFF, 0XFA, 0XA5, 0X55, 0X55, 0XBF, 0XFC, 0X00, 0X3F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XC0, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0XE8, 0X00, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA5, 0X55, 0X73, 0XFF, 0XEA,
+  0XA5, 0X55, 0X55, 0XBF, 0XFC, 0X00, 0XFF, 0XFF, 0XFF, 0XF7, 0XFF, 0XF0, 0XFC, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X50, 0X00, 0XAA, 0X95, 0X55, 0X55,
+  0X55, 0X55, 0X6A, 0XAA, 0XAA, 0X95, 0X55, 0XF3, 0XFF, 0XAA, 0XA5, 0X55, 0X55, 0XBF, 0XFC, 0X00,
+  0XFF, 0XFF, 0XFD, 0X55, 0XFF, 0XF0, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X03, 0X40, 0X00, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0X55,
+  0X55, 0XCF, 0XFF, 0XAA, 0X95, 0X55, 0X55, 0XBF, 0XFC, 0X00, 0XFF, 0XFF, 0XF5, 0X55, 0X7F, 0XFC,
+  0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X00, 0X00,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0XCF, 0XFA, 0XAA, 0X95, 0X55,
+  0X55, 0XBF, 0XFC, 0X00, 0XFF, 0XFF, 0XA5, 0X55, 0X7F, 0XFC, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X00, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0XAA, 0X55, 0X57, 0X3F, 0XFA, 0XAA, 0X95, 0X55, 0X55, 0XAF, 0XFC, 0X00, 0XFF, 0XFE,
+  0XA5, 0X55, 0X5F, 0XFC, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X57, 0XBF,
+  0XEA, 0XAA, 0X95, 0X55, 0X55, 0XAF, 0XFC, 0X03, 0XFF, 0XFE, 0XA5, 0X55, 0X57, 0XFC, 0XFC, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X0F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X5F, 0XFF, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0XAF,
+  0XFC, 0X03, 0XFF, 0XFA, 0XA5, 0X55, 0X57, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3C, 0XC0,
+  0X00, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X00, 0X95, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA,
+  0XA5, 0X55, 0X5C, 0XFE, 0XAA, 0XAA, 0X55, 0X55, 0X56, 0XAF, 0XFC, 0X03, 0XFF, 0XEA, 0XA5, 0X55,
+  0X55, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X03, 0XC0, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00,
+  0X00, 0X00, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XA5, 0X55, 0X5B, 0XFE, 0XAA, 0XAA,
+  0X55, 0X55, 0X56, 0XAF, 0XFC, 0X03, 0XFF, 0XEA, 0XA5, 0X55, 0X55, 0XFF, 0XFC, 0X00, 0X00, 0X00,
+  0X0F, 0XFC, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X5F, 0XFA, 0XAA, 0XAA, 0X55, 0X55, 0X56, 0XAF, 0XFC, 0X03,
+  0XFF, 0XAA, 0XA5, 0X55, 0X55, 0X7F, 0XFC, 0X00, 0X00, 0X00, 0X30, 0X0F, 0XF0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0X7F, 0XEA, 0XAA, 0XAA, 0X55, 0X55, 0X56, 0XAF, 0XFC, 0X0F, 0XFF, 0X6A, 0XA9, 0X55, 0X55, 0X7F,
+  0XFC, 0X00, 0X00, 0X00, 0XC0, 0X03, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00,
+  0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0XFF, 0XEA, 0XAA, 0XAA, 0X55, 0X55,
+  0X56, 0XAF, 0XFC, 0X0F, 0XFD, 0X6A, 0XA9, 0X55, 0X55, 0X7F, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X03,
+  0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0XFF, 0X6A, 0XAA, 0XA9, 0X55, 0X55, 0X56, 0XAB, 0XFC, 0X0F, 0XFD, 0X6A,
+  0XA9, 0X55, 0X55, 0X5F, 0XFC, 0X00, 0X00, 0X00, 0XC0, 0X00, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X03, 0X00, 0X00, 0X00, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X57, 0XFD, 0XAA,
+  0XAA, 0XA9, 0X55, 0X55, 0X56, 0XAB, 0XFC, 0X0F, 0XF5, 0X6A, 0XA9, 0X55, 0X55, 0X5F, 0XFF, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X57, 0XF5, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X56, 0XAB,
+  0XFC, 0X0F, 0XF5, 0X6A, 0XA9, 0X55, 0X55, 0X57, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA5,
+  0X55, 0X5F, 0XF5, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X5A, 0XAB, 0XFC, 0X3F, 0XF5, 0X6A, 0XA9, 0X55,
+  0X55, 0X57, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00,
+  0X00, 0X00, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X5F, 0XD6, 0XAA, 0XAA, 0XA5,
+  0X55, 0X55, 0X5A, 0XAB, 0XFC, 0X3F, 0XD5, 0X6A, 0XA9, 0X55, 0X55, 0X57, 0XFF, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X00, 0X00, 0X00, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X5F, 0XD6, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X5A, 0XAB, 0XFC, 0X3F,
+  0XD5, 0X6A, 0XA9, 0X55, 0X55, 0X55, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X0F, 0X00, 0X00, 0X00, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X7F,
+  0X5A, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X5A, 0XAB, 0XFC, 0X3F, 0XD5, 0X6A, 0XA9, 0X55, 0X55, 0X55,
+  0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3C, 0X00, 0X00, 0X00,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X7D, 0X5A, 0XAA, 0XAA, 0XA5, 0X55, 0X55,
+  0X5A, 0XAB, 0XFC, 0X3F, 0X55, 0X6A, 0XAA, 0X55, 0X55, 0X75, 0XFF, 0XC0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF0, 0X00, 0X00, 0X00, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA,
+  0XAA, 0X55, 0X55, 0XFD, 0X5A, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X5A, 0XAB, 0XFC, 0X3F, 0X55, 0X6A,
+  0XAA, 0X55, 0X55, 0X75, 0X7F, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF,
+  0XF0, 0X00, 0X00, 0X00, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0XF5, 0X5A, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0X5A, 0XAB, 0XFC, 0X3F, 0X55, 0X6A, 0XAA, 0X55, 0X55, 0X5D, 0X7F, 0XFC,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X55, 0X55,
+  0X55, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X57, 0XD5, 0X6A, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X5A, 0XAB,
+  0XFC, 0XFD, 0X55, 0X5A, 0XAA, 0X55, 0X55, 0X5D, 0X7F, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X3C, 0X00, 0X00, 0X00, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA5, 0X55,
+  0X57, 0XD5, 0X6A, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X5A, 0XAB, 0XFC, 0XFD, 0X55, 0X5A, 0XAA, 0X55,
+  0X55, 0X5D, 0X5F, 0XFF, 0XC3, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X00,
+  0X00, 0X00, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X57, 0X55, 0XAA, 0XAA, 0XAA, 0X95,
+  0X55, 0X55, 0X5A, 0XAB, 0XFC, 0XFD, 0X55, 0X5A, 0XAA, 0X95, 0X55, 0X57, 0X5F, 0XFE, 0XAF, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X00, 0X00, 0X00, 0X55, 0X55, 0X56, 0XAA,
+  0XAA, 0XAA, 0XA5, 0X55, 0X57, 0X55, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X5A, 0XAB, 0XFC, 0XF5,
+  0X55, 0X5A, 0XAA, 0X95, 0X55, 0X57, 0X5F, 0XFF, 0XAF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X03, 0XC0, 0X00, 0X00, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X5D, 0X55,
+  0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X6A, 0XAB, 0XFC, 0XFD, 0X55, 0X5A, 0XAA, 0X95, 0X55, 0X57,
+  0XD7, 0XFF, 0XAF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XC0, 0X00, 0X00,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55,
+  0X6A, 0XA9, 0XFC, 0XF5, 0X55, 0X5A, 0XAA, 0X95, 0X55, 0X55, 0XF7, 0XFF, 0XAF, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XC0, 0X00, 0X00, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X6A, 0XA9, 0XFC, 0XF5, 0X55, 0X5A,
+  0XAA, 0X95, 0X55, 0X55, 0X7D, 0XFF, 0XAF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0XC0, 0X00, 0X00, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0XAA, 0X55, 0X55, 0X55, 0X6A, 0XA9, 0XFC, 0XF5, 0X55, 0X5A, 0XAE, 0X95, 0X55, 0X55, 0X57, 0XFF,
+  0XAF, 0X00, 0X00, 0X00, 0X00, 0X00, 0XF0, 0X00, 0X00, 0X00, 0X00, 0XF0, 0X00, 0X00, 0X55, 0X55,
+  0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X6A, 0XA9,
+  0XFC, 0XD5, 0X55, 0X5A, 0XBE, 0X95, 0X55, 0X55, 0X55, 0XFF, 0XAF, 0X00, 0X00, 0X00, 0X00, 0X03,
+  0XFC, 0X00, 0X00, 0X00, 0X00, 0XF0, 0X00, 0X00, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X6A, 0XA9, 0XFC, 0XD5, 0X55, 0X5A, 0XAF, 0XED,
+  0X55, 0X55, 0X55, 0XFF, 0XAF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3C, 0X00, 0X00, 0X00, 0X00, 0XF0,
+  0X00, 0X00, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55,
+  0X55, 0X55, 0X6A, 0XA9, 0XFC, 0XD5, 0X55, 0X5A, 0XBF, 0XFD, 0X55, 0X55, 0X55, 0X7F, 0XAF, 0XC0,
+  0X00, 0X00, 0X00, 0X00, 0X0F, 0X00, 0X00, 0X00, 0X00, 0XC0, 0X00, 0X00, 0X55, 0X5A, 0XAA, 0XAA,
+  0XAA, 0XA5, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X6A, 0XA9, 0XFF, 0XD5,
+  0X55, 0X5A, 0XBF, 0XF5, 0X55, 0X55, 0X55, 0X7F, 0XAF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X00,
+  0X00, 0X00, 0X00, 0XC0, 0X00, 0X00, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X6A,
+  0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X6A, 0XA9, 0XFF, 0X55, 0X55, 0X5A, 0XFF, 0XF5, 0X55, 0X55,
+  0X55, 0X7F, 0XEB, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X00, 0XC0, 0X00, 0X00,
+  0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55,
+  0X6A, 0XA9, 0XFF, 0X55, 0X55, 0X57, 0XFF, 0XF5, 0X55, 0X55, 0X55, 0X7F, 0XEB, 0XC0, 0X00, 0X00,
+  0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X03, 0XC0, 0X00, 0X00, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0XAA, 0XA9, 0XFF, 0X55, 0X55, 0X56,
+  0XFF, 0XF5, 0X55, 0X55, 0X55, 0X5F, 0XEB, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00,
+  0X03, 0X00, 0X00, 0X00, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0XAA, 0XA9, 0XFF, 0X55, 0X55, 0X56, 0XBF, 0XF5, 0X55, 0X55, 0X55, 0X5F,
+  0XEB, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X0F, 0X00, 0X00, 0X00, 0X56, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0XAA, 0XA9,
+  0XFF, 0X55, 0X55, 0X56, 0XBF, 0XFD, 0X55, 0X55, 0X55, 0X5F, 0XEB, 0XFC, 0X00, 0X00, 0X00, 0X00,
+  0X03, 0X00, 0X00, 0X00, 0X3C, 0X00, 0X00, 0X00, 0X56, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55,
+  0X56, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0XAA, 0XA9, 0XFF, 0X55, 0X55, 0X56, 0XAF, 0XBD,
+  0X55, 0X55, 0X55, 0X57, 0XEA, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X00,
+  0X00, 0X00, 0X5A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0XAA, 0XA9, 0XFD, 0X55, 0X55, 0X56, 0XBF, 0XA9, 0X55, 0X55, 0X55, 0X57, 0XEA, 0XBF,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X03, 0XC0, 0X5A, 0XAA, 0XAA, 0XAA,
+  0XA5, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0XAA, 0XA9, 0XFD, 0X55,
+  0X55, 0X56, 0XAE, 0XA9, 0X55, 0X55, 0X55, 0X57, 0XEA, 0XBF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X03, 0XBF, 0X6A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X5A, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XA9, 0XFD, 0X55, 0X55, 0X56, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X57, 0XEA, 0XBF, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XE7,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0XA9, 0XFD, 0X55, 0X55, 0X56, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X57, 0XFA, 0XAF, 0XF0, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XE5, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XA9, 0XFD, 0X55, 0X55, 0X56,
+  0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XFA, 0XAB, 0XFC, 0X00, 0X03, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0XE9, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0XA9, 0XF5, 0X55, 0X55, 0X56, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0XFA, 0XAB, 0XFF, 0XCC, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3A, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA9,
+  0XF5, 0X55, 0X55, 0X56, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XFA, 0XAA, 0XBF, 0XFF, 0XF5, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA9, 0XF5, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X7A, 0XAA, 0XAB, 0XFF, 0X97, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X3A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X56, 0XAA, 0XA9, 0XF5, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X7A, 0XAA,
+  0XAA, 0XAA, 0X97, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3A, 0XAA, 0XAA, 0XAA, 0XA5,
+  0X55, 0X55, 0X55, 0X55, 0XEA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA5, 0XF5, 0X55,
+  0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X7A, 0XAA, 0XAA, 0XAA, 0XA7, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X3A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0XEF, 0XAA,
+  0XAA, 0XA9, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA5, 0XF5, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X7E, 0XAA, 0XAA, 0XAA, 0XA7, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3A,
+  0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X56, 0XFE, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XA5, 0XD5, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X7E, 0XAA, 0XAA, 0XAA,
+  0XA7, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3A, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55,
+  0X55, 0X56, 0XFF, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA5, 0XD5, 0X55, 0X55, 0X55,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X5E, 0XAA, 0XAA, 0XAA, 0XA9, 0XC0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X3A, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X5B, 0XFE, 0XAA, 0XAA, 0XA5,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0XA5, 0XD5, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55,
+  0X5E, 0XAA, 0XAA, 0XAA, 0XAA, 0XC0, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X00, 0XFA, 0XAA, 0XAA,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA5,
+  0XD5, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XC0,
+  0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X00, 0XFA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X5F,
+  0XFF, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA5, 0XD5, 0X55, 0X55, 0X55, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X57, 0XAA, 0XAA, 0XAA, 0XAA, 0XF0, 0X00, 0X00, 0X0F, 0XC0, 0X00, 0X00,
+  0X03, 0XFA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X5B, 0XFF, 0XEA, 0XAA, 0X95, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0XA5, 0XD5, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X57, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XF0, 0X00, 0X00, 0X0F, 0X70, 0X00, 0X00, 0X03, 0XFA, 0XAA, 0XAA, 0XA5, 0X55,
+  0X55, 0X55, 0X55, 0X6A, 0XFA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA5, 0XD5, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X57, 0XAA, 0XAA, 0XAA, 0XAA, 0XF0, 0X00, 0X00,
+  0X3D, 0X70, 0X00, 0X00, 0X0F, 0XEA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XEA, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA5, 0XD5, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XBC, 0X00, 0X00, 0XF5, 0X7C, 0X00, 0X00, 0X2F, 0XEA,
+  0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XEA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X5A,
+  0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X57, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAC, 0X00, 0X00, 0XF5, 0X6F, 0X00, 0X00, 0XFF, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAF, 0XC0, 0X0F, 0XF5, 0X5F,
+  0XF0, 0X0F, 0XFF, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAF, 0XF0, 0XFF, 0X55, 0X57, 0XFF, 0XFF, 0XFE, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA5,
+  0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAF,
+  0XFF, 0XFF, 0X55, 0X55, 0XFF, 0XFF, 0XFA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAB, 0XFF, 0XFD, 0X55, 0X55, 0X6F, 0XFF,
+  0XEA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X6A,
+  0XAA, 0XAA, 0XAA, 0XA9, 0XFF, 0XD5, 0X55, 0X55, 0X55, 0X7A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA5, 0X55, 0X55,
+  0X55, 0X55, 0X6A, 0XAE, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA,
+  0XA9, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X57, 0XAA, 0XAE, 0XA5, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X6A,
+  0XAA, 0XA5, 0X55, 0X55, 0X55, 0X57, 0XEA, 0XFE, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55,
+  0X5A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X57,
+  0XFF, 0XFE, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X5D, 0X55,
+  0X55, 0X56, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55,
+  0X55, 0X55, 0X55, 0X6A, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFA, 0XA5, 0X55, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X7D, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X57, 0XFF, 0XFA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X95, 0X55, 0XF5, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFA,
+  0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X5B, 0XD5, 0X55, 0X55, 0X55,
+  0X6A, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X6A, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XE5, 0XFF, 0XD5, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA9, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X95, 0X55, 0X55,
+  0X55, 0X5F, 0XFF, 0XFA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFA, 0XA9, 0X55,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XBF, 0XF5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA,
+  0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFE, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAB, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0XFF,
+  0XFF, 0XFE, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XA9, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95,
+  0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF,
+  0XE9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X6A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XBA, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55,
+  0X55, 0X55, 0XFF, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA9,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XAA, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X7E, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7E, 0XAA, 0XAA, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X7A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7A, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55,
+  0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55,
+  0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5,
+  0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X56, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X95, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA,
+  0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA5,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X56, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA5, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA,
+  0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X6A, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA9, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA9,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55,
+};
+#endif

+ 1047 - 0
src/bitmaps/Bitmaps4c184x360.h

@@ -0,0 +1,1047 @@
+#ifndef _GxBitmaps4c184x360_H_
+#define _GxBitmaps4c184x360_H_
+
+#if defined(ESP8266) || defined(ESP32)
+#include <pgmspace.h>
+#else
+#include <avr/pgmspace.h>
+#endif
+
+const unsigned char Bitmap4c184x360[16560] PROGMEM = { /* 0X81,0X02,0X68,0X01,0XB8,0X00, */
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X40, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0XAA, 0XA8, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X50, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50,
+  0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X05, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X00, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X05, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X02, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XA0, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X40, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X2A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X15, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X40, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X01, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X54, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X05, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X50, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X4A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X0A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X02, 0XAA, 0XAA, 0XAA, 0X80, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XA0, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X54, 0X2A, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X02, 0XAA, 0X02, 0XAA, 0X80, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X15,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X02, 0XAA, 0X02, 0XAA, 0X80, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X05, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X52, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X02, 0XAA, 0X02, 0XAA, 0X80, 0XAA, 0XAB, 0XAA, 0XAA, 0XAA, 0X05, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X4A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X02,
+  0XAA, 0X02, 0XAA, 0X80, 0XAA, 0XAA, 0XFA, 0XAA, 0XAA, 0X85, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X02, 0XAA, 0X02,
+  0XAA, 0X80, 0XAA, 0XAA, 0XAF, 0XEA, 0XAA, 0X80, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X2A, 0XA0, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X02, 0XAA, 0X02, 0XAA, 0X80,
+  0XAA, 0XAA, 0XFA, 0XAA, 0XAA, 0XA8, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X54,
+  0X2A, 0XA0, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X02, 0XAA, 0X02, 0XAA, 0X80, 0XAA, 0XAB,
+  0XAA, 0XAA, 0XAA, 0XA8, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0XAA, 0XA0,
+  0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X02, 0XAA, 0X02, 0XAA, 0X80, 0XAA, 0XAA, 0XAA, 0XEA,
+  0XAA, 0XA8, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0XAA, 0XA0, 0X2A, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XAA, 0XBF, 0XAA, 0XAA, 0XAA,
+  0X05, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X42, 0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XAB, 0XEB, 0XAA, 0XAA, 0XAA, 0X85, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X42, 0XAA, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X0A, 0XAA,
+  0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XAA, 0XBF, 0XAA, 0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X0A, 0XAA, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X0A, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XEA, 0XAA, 0XAA, 0XA1, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X0A, 0XAA, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XEA, 0XAA, 0XAA, 0XA0, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X0A, 0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80,
+  0XAA, 0XAA, 0XAA, 0XEA, 0XAA, 0XAA, 0XA0, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X2A,
+  0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0XAA, 0XAB,
+  0XFF, 0XEA, 0XAA, 0XAA, 0XA8, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X54, 0X2A, 0XAA, 0XA0,
+  0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XA8, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X54, 0X2A, 0XAA, 0XA0, 0X2A, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0XAA, 0XAB, 0XFA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X54, 0XAA, 0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0XAA, 0XAB, 0XAE, 0XAA, 0XAA, 0XAA, 0XAA, 0X15,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X54, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0XAA, 0XAB, 0XAE, 0XAA, 0XAA, 0XAA, 0XAA, 0X05, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD,
+  0X55, 0X55, 0X55, 0X55, 0X54, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X80, 0XAA, 0XAB, 0XFF, 0XEA, 0XAA, 0XAA, 0XAA, 0X05, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55,
+  0X55, 0X55, 0X50, 0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X80, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X85, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55,
+  0X50, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80,
+  0XAA, 0XAA, 0XEF, 0XEA, 0XAA, 0XAA, 0XAA, 0X85, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X52, 0XAA,
+  0XAA, 0XA8, 0X00, 0XAA, 0XAA, 0X00, 0X2A, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XAB,
+  0XAE, 0XEA, 0XAA, 0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X52, 0XAA, 0XAA, 0XA8,
+  0X02, 0XAA, 0XAA, 0X80, 0X2A, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XAB, 0XBA, 0XEA,
+  0XAA, 0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X42, 0XAA, 0XAA, 0XA0, 0X0A, 0XAA,
+  0XAA, 0XA0, 0X0A, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XAB, 0XFB, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X42, 0XAA, 0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XA8,
+  0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X81,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X42, 0XAA, 0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XA8, 0X0A, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAB, 0XFF, 0XEA, 0XAA, 0XAA, 0XAA, 0X81, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD,
+  0X55, 0X55, 0X55, 0X55, 0X42, 0XAA, 0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XA8, 0X0A, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XA8, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55,
+  0X55, 0X55, 0X42, 0XAA, 0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XA8, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55,
+  0X42, 0XAA, 0XAA, 0XA0, 0X0A, 0XAA, 0XAA, 0XA0, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00,
+  0XAA, 0XAA, 0XFF, 0XAA, 0XAA, 0XAA, 0XAA, 0X85, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X42, 0XAA,
+  0XAA, 0XA8, 0X02, 0XAA, 0XAA, 0X80, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X02, 0XAA, 0XAB,
+  0XAA, 0XEA, 0XAA, 0XAA, 0XAA, 0X85, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X42, 0XAA, 0XAA, 0XA8,
+  0X00, 0XAA, 0XAA, 0X00, 0X2A, 0XAA, 0XAA, 0XAA, 0XA8, 0X00, 0X00, 0XAA, 0XAA, 0XAB, 0XAA, 0XEA,
+  0XAA, 0XAA, 0XAA, 0X05, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X52, 0XAA, 0XAA, 0XAA, 0X00, 0X00,
+  0X00, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X02, 0XAA, 0XAA, 0XAB, 0XFF, 0XEA, 0XAA, 0XAA,
+  0XAA, 0X05, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X52, 0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X00, 0X0A,
+  0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X0A, 0X02, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X05,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X50, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X00, 0X02, 0XAA, 0X02, 0XAA, 0XAA, 0XAA, 0XFF, 0XAA, 0XAA, 0XAA, 0XAA, 0X05, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD,
+  0X55, 0X55, 0X55, 0X55, 0X50, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X00,
+  0X2A, 0XAA, 0X02, 0XAA, 0XAA, 0XAB, 0XAA, 0XEA, 0XAA, 0XAA, 0XAA, 0X05, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55,
+  0X55, 0X55, 0X50, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0XAA,
+  0X02, 0XAA, 0XAA, 0XAB, 0XAA, 0XEA, 0XAA, 0XAA, 0XAA, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55,
+  0X54, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X0A, 0X02, 0XAA,
+  0XAA, 0XAB, 0XAA, 0XEA, 0XAA, 0XAA, 0XAA, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X54, 0XAA,
+  0XAA, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X02, 0XAA, 0XAA, 0XAA,
+  0XFF, 0XAA, 0XAA, 0XAA, 0XA8, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X54, 0X2A, 0XAA, 0XA0,
+  0X00, 0X00, 0X00, 0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0XA8, 0X00, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XA8, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X54, 0X2A, 0XAA, 0XA0, 0X00, 0X00,
+  0X00, 0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X02, 0XAA, 0XAA, 0XFF, 0XAA, 0XAA, 0XAA,
+  0XA8, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X54, 0X2A, 0XAA, 0XAA, 0XAA, 0XA0, 0X2A, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0XAA, 0XAB, 0XAA, 0XEA, 0XAA, 0XAA, 0XA8, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X2A, 0XAA, 0XAA, 0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0XAA, 0XAB, 0XAA, 0XEA, 0XAA, 0XAA, 0XA0, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X0A, 0XAA, 0XAA, 0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XA8, 0XAA, 0XAB, 0XAA, 0XEA, 0XAA, 0XAA, 0XA0, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X0A, 0XAA, 0XAA, 0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XFF, 0XAA, 0XAA, 0XAA, 0XA1, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X42, 0XAA, 0XAA, 0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X0A, 0XAA, 0X00, 0X2A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X42,
+  0XAA, 0XAA, 0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X0A, 0XA8, 0X00, 0X0A, 0XAA, 0XAA,
+  0XEF, 0XEA, 0XAA, 0XAA, 0X05, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X42, 0XAA, 0XAA,
+  0XAA, 0XA0, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X0A, 0XA0, 0X00, 0X02, 0XAA, 0XAB, 0XAE, 0XEA,
+  0XAA, 0XAA, 0X05, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0XAA, 0XA0, 0X00, 0X00,
+  0X00, 0X00, 0X0A, 0XAA, 0XAA, 0X80, 0XAA, 0X80, 0X2A, 0X00, 0XAA, 0XAB, 0XAA, 0XEA, 0XAA, 0XAA,
+  0X05, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X54, 0X2A, 0XA0, 0X00, 0X00, 0X00, 0X00,
+  0X0A, 0XAA, 0XAA, 0X02, 0XAA, 0X80, 0XAA, 0X80, 0XAA, 0XAB, 0XAA, 0XEA, 0XAA, 0XA8, 0X15, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X54, 0X2A, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X0A, 0XAA,
+  0XAA, 0X02, 0XAA, 0X80, 0XAA, 0X80, 0XAA, 0XAA, 0XFF, 0XAA, 0XAA, 0XA0, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X02,
+  0XAA, 0X02, 0XAA, 0X80, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X02, 0XAA, 0X02,
+  0XAA, 0X80, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA1, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X42, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X02, 0XA8, 0X02, 0XAA, 0X00,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X52, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0XA8, 0X0A, 0XA8, 0X02, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X05, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X2A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X0A, 0X80, 0X02, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XA8, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X54, 0X2A, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X2A, 0X80, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X15,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XA8, 0X00, 0XAA, 0X80, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X42, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X40, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X05, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X54, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X54, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XA0, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X42, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X40, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X05,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X54, 0X2A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X15, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X02, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X2A, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X05, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X54, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X40, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X54, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XA0, 0X15, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X40, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X54, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X50, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X85, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X50, 0X00, 0X00, 0X00, 0X02, 0XAA, 0XAA, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X54, 0X00, 0X00, 0X00, 0XAA, 0XAA, 0XA1, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X54, 0X2A, 0XAA, 0XA0, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X02, 0XAA, 0XA8, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X40, 0XAA,
+  0XA8, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X54, 0X0A, 0XA8, 0X15,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X02, 0XAA, 0X15, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X0A, 0X05, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X00, 0X81, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X54, 0X00, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XA5,
+  0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0X96, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X9A, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0XA9,
+  0X95, 0X55, 0X55, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X5A, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X9A, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0XA9, 0XA5, 0X55,
+  0X55, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X5A, 0XAA, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XA6, 0X96, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X59, 0X69, 0X55, 0X55, 0X5A,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XA5, 0X6A, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5A, 0X96, 0X95, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X59, 0X59, 0X59, 0X55, 0X55, 0X55, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF,
+  0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X96,
+  0X95, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X59, 0X59, 0X59, 0X55, 0X55, 0X5A, 0XA9, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0X55, 0X55,
+  0X55, 0X5A, 0X95, 0X5A, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XA6, 0X96, 0XA9,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0X59, 0X69, 0X55, 0X55, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0X55, 0X55, 0X55, 0X5A,
+  0X95, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA5, 0X55, 0X55,
+  0X55, 0X55, 0X56, 0XAA, 0XA5, 0X55, 0X55, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XAA, 0X95, 0X55, 0X55, 0X5A, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X59, 0X55, 0X59, 0X55,
+  0X55, 0X5A, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X7F, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X59, 0X55, 0X59, 0X55, 0X55, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X65, 0X5A, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0XA5, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XA9,
+  0X6A, 0XA5, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X5A, 0XA9, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XA9, 0X6A, 0XA5,
+  0X55, 0X55, 0X55, 0X55, 0X59, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XA5, 0X56, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XA5, 0X56, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0XA9, 0X55, 0X55, 0X55, 0X56,
+  0X5A, 0XAA, 0XA9, 0X55, 0X55, 0X95, 0X55, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0XA9, 0X55, 0X55, 0X55, 0X56, 0X5A, 0XAA,
+  0XA9, 0X55, 0X55, 0X95, 0X55, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X5A, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0XA5, 0X56, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XA5, 0X56, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X7F, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A, 0X95, 0X5A, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A, 0X95, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XA9, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A, 0X95, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X5A, 0X95, 0X5A, 0X95, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A,
+  0X95, 0X5A, 0X95, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X59, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A,
+  0X95, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X59, 0X55, 0X55, 0X55, 0X55,
+  0X59, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A, 0X95, 0X5A,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A, 0X95, 0X5A, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA9, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X7F, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA9, 0X55, 0X6A, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5A, 0X96, 0XA5, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95,
+  0XA5, 0XA9, 0X55, 0X55, 0X55, 0X56, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0XA9, 0XA9,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XA5, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X6A, 0XAA, 0X95, 0X55, 0X55, 0X5A, 0X99, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XA5, 0X6A, 0XA5, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X6A, 0XA9, 0X55, 0X55, 0X6A, 0X9A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X95, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A,
+  0XA9, 0X55, 0X55, 0XA5, 0X96, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X95, 0X55,
+  0X55, 0X95, 0X95, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XA9, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X95,
+  0X95, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XA5, 0X5A, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XA9,
+  0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XA9, 0X55, 0X55, 0X55, 0X55, 0XA5, 0X96, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X5A, 0X95, 0X56, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XA9, 0X55, 0X55, 0X55, 0X56, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X5A, 0X95, 0X56, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA9,
+  0X55, 0X55, 0X55, 0X55, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X5A, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A,
+  0X95, 0X56, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X56,
+  0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X5A, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X56, 0XA5, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A,
+  0XA9, 0X55, 0X65, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X95, 0X55,
+  0X6A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X5A, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0X95, 0X55, 0X55, 0X55, 0X55, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X95, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XA5, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X6A, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X56, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X59, 0X55,
+  0X59, 0X55, 0X6A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X55, 0X69, 0X55,
+  0X65, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0X96, 0XA5, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X6A, 0X96, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XA9,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA,
+  0X9A, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X69, 0X55, 0X55, 0X55, 0X55, 0X55, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0XA5, 0X6A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X9A, 0XA5,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A,
+  0XA5, 0X55, 0X6A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XA6, 0X96, 0XA9, 0X55, 0X55,
+  0X55, 0X56, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA5,
+  0X6A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X96, 0X95, 0XA9, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0XA9, 0X55, 0X6A, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X96, 0X95, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X6A, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0XA6, 0X96, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XA5, 0X56, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X56, 0X55, 0X65, 0X55, 0X55, 0X95,
+  0X55, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X55, 0X69, 0X55, 0X55, 0X95, 0X55, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A,
+  0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X59, 0X55, 0X59, 0X55, 0X55, 0XA5, 0X56, 0X95, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X59, 0X55, 0X59, 0X55, 0X55, 0X6A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0X55, 0X69, 0X55, 0X55, 0X5A, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XA9,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0X56, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA,
+  0X95, 0X55, 0X55, 0X5A, 0X99, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X6A, 0X9A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XA9, 0X55, 0X55, 0XA5,
+  0X96, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XA5, 0X5A, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XA9, 0X55, 0X55, 0X95, 0X95, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X5A, 0X95, 0X56, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X59, 0X65, 0X69, 0X55, 0X55, 0X95, 0X95, 0X95, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X5A, 0X95, 0X56, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X59, 0X69, 0X59, 0X55, 0X55, 0XA5, 0X96, 0X95, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A,
+  0X95, 0X56, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X59, 0X59, 0X59, 0X55, 0X55, 0X6A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X56,
+  0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0X5A, 0X59, 0X59, 0X55, 0X55, 0X5A, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X56, 0X9A,
+  0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X96, 0XA5, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XA5,
+  0X55, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XA9, 0X56, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XA5,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA9, 0X55, 0X69, 0X5A, 0X6A, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XA9, 0X55, 0X65, 0X56, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X65, 0X56, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X6A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0X69, 0X5A, 0X95, 0X55, 0X65, 0X56, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X6A,
+  0XA5, 0X55, 0X65, 0X56, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0X96, 0XA5, 0X69, 0X55,
+  0X65, 0X56, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0X55, 0X95, 0X59, 0X55, 0X6A, 0XAA,
+  0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0X55, 0X95, 0X59, 0X55, 0X6A, 0XAA, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XA9, 0X55, 0X55, 0X55, 0X56, 0X55, 0X95, 0X59, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9,
+  0X55, 0X55, 0X55, 0X56, 0X55, 0X95, 0X59, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X56, 0X55, 0X95, 0X59, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55,
+  0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X5A,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA,
+  0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A, 0X95, 0X5A, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A, 0X95, 0X5A, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A, 0X95, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A, 0X95, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X5A, 0X95, 0X5A, 0X95, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A,
+  0X95, 0X5A, 0X95, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A,
+  0X95, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X5A, 0X95, 0X5A,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XF0, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00,
+  0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0X55, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XF0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XA9, 0X55, 0X6A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XF0, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XA9, 0X55, 0X6A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XA9,
+  0X55, 0X6A, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X0F, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XA9, 0X55, 0X6A,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X03, 0XC0, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XFF, 0XC0, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFC, 0X00, 0X03, 0XC0, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC,
+  0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00,
+  0X00, 0X0F, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56,
+  0XA5, 0X56, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XA5, 0X5A,
+  0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XA5, 0X6A, 0XAA, 0XA5,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0X55, 0X6A, 0X56, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XA9, 0X55, 0XA9, 0X55, 0XA9, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0XA9, 0X55, 0XA9, 0X55, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0XA9, 0X56, 0XA9, 0X55, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0XA9, 0X56, 0XA5, 0X56, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA,
+  0X5A, 0XA5, 0X5A, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X95,
+  0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0X95, 0XAA, 0X95,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X69, 0X55, 0X56, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X56, 0XA9, 0X55, 0XA9, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0XAA, 0X55,
+  0X5A, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X55, 0X5A, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XA9, 0X55, 0X55, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X6A, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X03, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X5A, 0X95, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XF0, 0X0F, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A,
+  0XA5, 0X55, 0X55, 0X6A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFC, 0X0F, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X55,
+  0X56, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFC, 0X0F, 0XFC, 0X0F, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA9,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC,
+  0X0F, 0XFC, 0X0F, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XA5, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFC,
+  0X0F, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XAA, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XF0, 0XFF, 0XC0, 0X0F, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF,
+  0X00, 0X03, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFC, 0X00, 0X03,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XFC, 0X0F, 0X00, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XF0, 0X3F, 0XC0, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XF0, 0X3F, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X5A, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XC0, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA,
+  0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFC, 0X03, 0XC0, 0XFF, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X6A, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X00, 0X00, 0XF0, 0X03, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X03,
+  0XF0, 0X0F, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X0F, 0XF0, 0X3F,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X03, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XAA, 0XAA, 0XAA, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X00, 0X00, 0X0F, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFC, 0X0F, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC,
+  0X0F, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFF,
+  0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFF, 0XFF, 0XC0,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X69, 0X55, 0XAA, 0XA5, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X56, 0XA9, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X5A, 0XA9, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A,
+  0X95, 0X6A, 0X95, 0X6A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X6A,
+  0X95, 0X6A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X6A, 0X55, 0X5A,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X6A, 0X55, 0X5A, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00,
+  0X03, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XA5, 0X5A, 0X95, 0X6A, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X3F,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XF0, 0X0F, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0,
+  0X0F, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X0F, 0XFF,
+  0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X0F, 0XFF, 0XFC, 0X03,
+  0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X0F, 0XFF, 0XFC, 0X03, 0XFF, 0XFF,
+  0XFF, 0XFC, 0X0F, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X69, 0X55, 0XAA, 0XA5,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X0F, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFC,
+  0X0F, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XA9, 0X5A, 0XAA, 0XAA, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X0F, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XFF,
+  0XFF, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XA9, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XF0, 0X0F, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF, 0XFC, 0X03,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XA9, 0X5A, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XF0, 0X0F, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X5A, 0X95, 0X6A, 0X95, 0X6A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XF0,
+  0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X5A, 0X95, 0X6A, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0XC0,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A,
+  0X95, 0X6A, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XA5, 0X5A,
+  0X95, 0X6A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0XC0, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0XAA, 0XAA, 0XAA, 0XA9, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0XC0, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00,
+  0X00, 0X3F, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X56, 0XAA, 0XAA, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0XC0, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X03,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X00, 0XFF, 0XFF, 0XC0, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF, 0XFC, 0X03, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF,
+  0XFF, 0XC0, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00,
+  0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0XFC, 0X03,
+  0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0XFC, 0X03, 0XFF, 0XFF,
+  0XFF, 0XFC, 0X0F, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5A,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFC,
+  0X03, 0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XFF,
+  0XFC, 0X03, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X03,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X3F, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X6A, 0XA5, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X56, 0XAA, 0XAA, 0X55, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFC, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X56,
+  0XAA, 0XAA, 0XA5, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X03,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XA5, 0X5A,
+  0XA9, 0X5A, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XF0, 0XFC, 0X00, 0X0F, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X56, 0XAA, 0X5A,
+  0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XC0, 0X3C, 0X00, 0X03, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0X95, 0X55, 0XAA, 0XAA, 0X95, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X3C,
+  0X00, 0X03, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X5A, 0XA5, 0X55, 0X5A, 0XAA, 0X95, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X03, 0XFC, 0X0F, 0X00,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X56, 0XAA, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFC, 0X0F, 0XC0, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X56, 0XAA, 0X55, 0X56, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFC, 0X0F, 0XC0, 0XFF, 0XFF, 0X55, 0X55,
+  0X55, 0X55, 0XAA, 0X55, 0X55, 0XAA, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55,
+  0X6A, 0X55, 0X55, 0X56, 0X95, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFC, 0X0F, 0XFF, 0XFF, 0XC0, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0X00, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0X00, 0XFF, 0XFC, 0X03, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X00,
+  0X00, 0X0F, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X3F,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X03, 0XFF, 0XFF, 0XFF,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 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, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 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, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55, 0X55,
+  0X55, 0X55, 0X55, 0X55, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+};
+#endif

+ 1887 - 0
src/bitmaps/Bitmaps4c400x300.h

@@ -0,0 +1,1887 @@
+#ifndef _GxBitmaps4c400x300_H_
+#define _GxBitmaps4c400x300_H_
+
+#if defined(ESP8266) || defined(ESP32)
+#include <pgmspace.h>
+#else
+#include <avr/pgmspace.h>
+#endif
+
+const unsigned char Bitmap4c400x300[30000] PROGMEM = { /* 0X00,0X02,0X90,0X01,0X2C,0X01, */
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0XFF, 0XFF, 0XC0, 0X00, 0X03, 0XFF, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XC0, 0X00, 0XFF,
+  0XFF, 0XFC, 0X00, 0X00, 0X0F, 0XFF, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFC, 0X00, 0X03, 0XFF, 0X00, 0X00, 0X0F, 0XFF,
+  0XFF, 0XF0, 0X00, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0XFF, 0XFF, 0XF0, 0X00, 0X3F, 0XFF, 0XFF, 0XF0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFC, 0X00, 0X03, 0XFF,
+  0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFC, 0X00, 0XFF, 0XFF, 0XFF, 0XC0, 0X03, 0XFF, 0XFF, 0XFC, 0X00,
+  0X3F, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF0, 0X00,
+  0XFF, 0X00, 0X0F, 0XCF, 0XC0, 0X00, 0X0F, 0XC0, 0X03, 0XFC, 0X00, 0XFC, 0X00, 0X3F, 0XC0, 0X0F,
+  0XFC, 0X03, 0XFF, 0X00, 0X00, 0X0F, 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, 0XFC, 0X3F, 0X0F, 0XF0, 0X03, 0XFC, 0X00, 0X00, 0X0F, 0XFC, 0X00,
+  0X00, 0X03, 0XF0, 0X00, 0X3F, 0X00, 0X0F, 0XCF, 0XC0, 0X00, 0X0F, 0XC0, 0X00, 0XFC, 0X00, 0XFC,
+  0X00, 0X0F, 0XC0, 0X0F, 0XC0, 0X00, 0X3F, 0X00, 0X00, 0X0F, 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, 0XFC, 0X3F, 0X0F, 0XF0, 0X03, 0XFC, 0X00,
+  0X00, 0X0F, 0XFC, 0X00, 0X00, 0X03, 0XF0, 0X00, 0X3F, 0X00, 0X3F, 0XCF, 0XF0, 0X00, 0X0F, 0XC0,
+  0X00, 0XFC, 0X00, 0XFC, 0X00, 0X0F, 0XC0, 0X3F, 0XC0, 0X00, 0X3F, 0XC0, 0X00, 0X0F, 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, 0XFC, 0X3F, 0X0F,
+  0XFC, 0X0F, 0XFC, 0X00, 0X00, 0X0F, 0XFC, 0X00, 0X00, 0X03, 0XF0, 0X00, 0X3F, 0X00, 0X3F, 0X03,
+  0XF0, 0X00, 0X0F, 0XC0, 0X03, 0XFC, 0X00, 0XFC, 0X00, 0X3F, 0XC0, 0X3F, 0X00, 0X00, 0X0F, 0XC0,
+  0X00, 0X0F, 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, 0XFC, 0X03, 0X0F, 0XFC, 0X0F, 0XFC, 0X00, 0X00, 0X3F, 0X3F, 0X00, 0X00, 0X03, 0XF0, 0X00,
+  0XFF, 0X00, 0X3F, 0X03, 0XF0, 0X00, 0X0F, 0XFF, 0XFF, 0XF0, 0X00, 0XFF, 0XFF, 0XFF, 0X00, 0X3F,
+  0X00, 0X00, 0X0F, 0XC0, 0X00, 0X0F, 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, 0XFC, 0X0F, 0X0F, 0XFC, 0X0F, 0XFC, 0X00, 0X00, 0X3F, 0X3F, 0X00,
+  0X00, 0X03, 0XFF, 0XFF, 0XFC, 0X00, 0XFC, 0X00, 0XFC, 0X00, 0X0F, 0XFF, 0XFF, 0XC0, 0X00, 0XFF,
+  0XFF, 0XFC, 0X00, 0X3F, 0X00, 0X00, 0X0F, 0XC0, 0X00, 0X0F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X02, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFC, 0X3C, 0X0F, 0XCF, 0X3C, 0XFC, 0X00,
+  0X00, 0X3F, 0X3F, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XF0, 0X00, 0XFC, 0X00, 0XFC, 0X00, 0X0F, 0XFF,
+  0XFC, 0X00, 0X00, 0XFF, 0XFF, 0XC0, 0X00, 0X3F, 0X00, 0X00, 0X0F, 0XC0, 0X00, 0X0F, 0XC0, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFC, 0X00, 0X0F,
+  0XCF, 0X3C, 0XFC, 0X00, 0X00, 0XFC, 0X0F, 0XC0, 0X00, 0X03, 0XFF, 0XFF, 0XC0, 0X03, 0XFF, 0XFF,
+  0XFF, 0X00, 0X0F, 0XC0, 0XFF, 0X00, 0X00, 0XFC, 0X0F, 0XF0, 0X00, 0X3F, 0X00, 0X00, 0X0F, 0XC0,
+  0X00, 0X0F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0XFC, 0X00, 0X0F, 0XCF, 0X3C, 0XFC, 0X00, 0X00, 0XFF, 0XFF, 0XC0, 0X00, 0X03, 0XF0, 0X00,
+  0X00, 0X03, 0XFF, 0XFF, 0XFF, 0X00, 0X0F, 0XC0, 0X3F, 0XC0, 0X00, 0XFC, 0X03, 0XFC, 0X00, 0X3F,
+  0XC0, 0X00, 0X3F, 0XC0, 0X00, 0X0F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0A, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0XFC, 0X00, 0X0F, 0XCF, 0X3C, 0XFC, 0X00, 0X00, 0XFF, 0XFF, 0XC0,
+  0X00, 0X03, 0XF0, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0X00, 0X0F, 0XC0, 0X0F, 0XC0, 0X00, 0XFC,
+  0X00, 0XFC, 0X00, 0X0F, 0XC0, 0X00, 0X3F, 0X00, 0X00, 0X0F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X08,
+  0XAE, 0XAA, 0XAA, 0XAA, 0XEF, 0X01, 0X26, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFC, 0X00, 0X0F, 0XC3, 0XF0, 0XFC, 0X00,
+  0X03, 0XFF, 0XFF, 0XF0, 0X00, 0X03, 0XF0, 0X00, 0X00, 0X0F, 0XC0, 0X00, 0X0F, 0XC0, 0X0F, 0XC0,
+  0X03, 0XF0, 0X00, 0XFC, 0X00, 0X3F, 0X00, 0X0F, 0XFC, 0X03, 0XFF, 0X00, 0X00, 0X0F, 0XC0, 0X00,
+  0X00, 0X00, 0X00, 0XAE, 0XEA, 0XFA, 0XFF, 0XEE, 0X40, 0X33, 0X00, 0X01, 0XAA, 0XAA, 0XA9, 0XAA,
+  0XAA, 0XA6, 0XA4, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFC, 0X00, 0X0F,
+  0XC3, 0XF0, 0XFC, 0X00, 0X03, 0XF0, 0X03, 0XF0, 0X00, 0X03, 0XF0, 0X00, 0X00, 0X0F, 0XC0, 0X00,
+  0X0F, 0XC0, 0X0F, 0XC0, 0X03, 0XFC, 0X00, 0XFC, 0X00, 0X3F, 0XC0, 0X03, 0XFF, 0XFF, 0XFC, 0X00,
+  0X00, 0X0F, 0XC0, 0X00, 0X00, 0X00, 0X02, 0XEE, 0XEB, 0XAE, 0XE0, 0X00, 0XC1, 0XC8, 0XCC, 0XCC,
+  0X1A, 0XAA, 0XAA, 0X9A, 0XA6, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0XFC, 0X00, 0X0F, 0XC3, 0XF0, 0XFC, 0X00, 0X03, 0XF0, 0X03, 0XF0, 0X00, 0X03, 0XF0, 0X00,
+  0X00, 0X0F, 0XC0, 0X00, 0X0F, 0XC0, 0X0F, 0XC0, 0X00, 0XFC, 0X00, 0XFC, 0X00, 0X0F, 0XC0, 0X00,
+  0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X0F, 0XC0, 0X00, 0X00, 0X00, 0X0E, 0XEF, 0XBE, 0XEF, 0X04, 0X27,
+  0X23, 0X00, 0X00, 0X13, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0X6A, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0XFC, 0X00, 0X0F, 0XC0, 0XC0, 0XFC, 0X00, 0X0F, 0XC0, 0X00, 0XFC,
+  0X00, 0X03, 0XF0, 0X00, 0X00, 0X3F, 0X00, 0X00, 0X03, 0XF0, 0X0F, 0XC0, 0X00, 0XFF, 0X00, 0XFC,
+  0X00, 0X0F, 0XF0, 0X00, 0X0F, 0XFF, 0X00, 0X00, 0X00, 0X0F, 0XC0, 0X00, 0X00, 0X00, 0XFF, 0XFF,
+  0XFB, 0XB8, 0X0E, 0X31, 0X0E, 0X3F, 0XFC, 0XC8, 0XC0, 0X5E, 0X6B, 0XAA, 0XAA, 0XA9, 0X69, 0XAA,
+  0XA8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XBB, 0XFA, 0XFF, 0XB8, 0X60, 0X63, 0XC0, 0XFF, 0X5F, 0X00, 0X70, 0XEA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X9A, 0X6A, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFE, 0XFF, 0XAF, 0XB8, 0X3B, 0X36, 0X33, 0XFF, 0XF7, 0X33,
+  0X0C, 0X01, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0XA6, 0XA9, 0XA8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFE, 0XF8, 0X23, 0X20,
+  0X13, 0XFF, 0X77, 0X0C, 0X22, 0X30, 0X6E, 0XAE, 0XAA, 0XAA, 0XAA, 0XAA, 0X9A, 0X6A, 0X40, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0B, 0XFF, 0XEB,
+  0XEF, 0XFB, 0X74, 0XB3, 0XC3, 0XFF, 0XF7, 0X00, 0XC4, 0X80, 0X05, 0XEA, 0XEB, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 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, 0XFE, 0XFB, 0XB0, 0X23, 0X1C, 0X23, 0XD7, 0XDF, 0X33, 0X0C, 0XC8, 0XC2, 0X66,
+  0XAA, 0XAA, 0XAE, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 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, 0XFB, 0XF8, 0X38, 0XC9, 0XCC, 0XF5, 0X7C, 0X30,
+  0XC8, 0XCC, 0X33, 0X2E, 0XAA, 0X9A, 0XAA, 0XAE, 0XAA, 0X9A, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XFC, 0XC7, 0X23,
+  0X00, 0X3F, 0XF3, 0XC1, 0X38, 0X6D, 0X82, 0X19, 0X99, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0XAA, 0XA0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 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, 0XFE,
+  0XFF, 0XFE, 0X31, 0XCC, 0XF3, 0X03, 0XCC, 0X33, 0X00, 0XC0, 0X34, 0XDA, 0XAA, 0XAA, 0X9A, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0B, 0XFF, 0XFF, 0XFF, 0XBF, 0X0C, 0X93, 0X93, 0X33, 0XF3, 0X03, 0X2C, 0X8E, 0X60, 0X99,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA5, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XEF, 0XFB, 0XFE, 0X8B, 0X34, 0XF3, 0X30, 0X0C, 0X36,
+  0X04, 0X48, 0XC7, 0X6A, 0XEB, 0XAB, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X5A, 0XA8, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XDF, 0XFF, 0XFE, 0X08, 0XE3,
+  0X2D, 0X3F, 0X00, 0XC8, 0X33, 0XE4, 0X89, 0XAA, 0X9A, 0XAA, 0XAA, 0XA6, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XA9, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X4B,
+  0XFF, 0XFF, 0XC0, 0XB4, 0XC3, 0XC0, 0X1E, 0X7F, 0X60, 0X0C, 0X5E, 0X9E, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XA9, 0X9A, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X36, 0X33, 0XFF, 0XFF, 0XAF, 0X0E, 0XDC, 0XBF, 0XF0, 0X04, 0XC3, 0X92, 0XC9, 0XAA,
+  0XAA, 0XAA, 0XBA, 0XAB, 0XAA, 0XAE, 0XAA, 0XAE, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X37, 0X36, 0XFF, 0XFF, 0XC2, 0XC0, 0X07, 0X47, 0XBB, 0XF8,
+  0X38, 0X30, 0XE6, 0XEA, 0XAE, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XE9, 0X90, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X77, 0X73, 0X7F, 0XFB, 0X90, 0XCB,
+  0X42, 0XF0, 0X14, 0X20, 0XC4, 0X23, 0X1A, 0XAA, 0X6A, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XA4, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDC, 0X9C,
+  0X9F, 0XFF, 0XEC, 0XB0, 0XBC, 0X0F, 0XCF, 0X4F, 0X6F, 0XB4, 0XAD, 0XA6, 0XBA, 0XAE, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XE9, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XD9, 0XCD, 0XCF, 0XFF, 0X0B, 0X07, 0X03, 0X80, 0XB0, 0XB0, 0X30, 0X03, 0X5A, 0XBA,
+  0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XBA, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X02, 0XCD, 0XDC, 0X4F, 0XFF, 0XC3, 0XC0, 0XB0, 0XFC, 0X04, 0X1D,
+  0X00, 0XF8, 0XB9, 0XAE, 0XAA, 0XAA, 0XAE, 0XBA, 0XEA, 0XAB, 0XAB, 0XAA, 0XAA, 0XBE, 0X80, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X67, 0X67, 0X3F, 0XFF, 0X30, 0XBE,
+  0X0C, 0X47, 0XBF, 0X82, 0XEE, 0X43, 0X67, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XEA, 0XAA, 0XAA,
+  0XAA, 0X6E, 0X90, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0XC9, 0XCD,
+  0X9F, 0XFF, 0XFC, 0X40, 0XD0, 0XE0, 0X40, 0XBC, 0X08, 0XB6, 0X7A, 0XBA, 0XBA, 0XEA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAE, 0XBA, 0X97, 0XA4, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X0C, 0X00, 0XC0, 0X0C, 0X00,
+  0X30, 0X00, 0X0F, 0XF0, 0X30, 0XFF, 0X00, 0XFF, 0X00, 0X30, 0X30, 0X30, 0XCF, 0XFC, 0X0C, 0X0C,
+  0X00, 0X3F, 0X00, 0XFF, 0X00, 0XC0, 0X03, 0XFC, 0X0F, 0XF0, 0X0F, 0XF0, 0XC0, 0XC0, 0XC0, 0X00,
+  0X00, 0X0B, 0X77, 0X24, 0XCF, 0XFD, 0XFC, 0XF8, 0X7F, 0X2C, 0XCC, 0X1B, 0XDF, 0X4C, 0XDB, 0XAA,
+  0XAA, 0XAB, 0XAA, 0XBA, 0XAA, 0XAA, 0XAA, 0XBA, 0XEA, 0XA9, 0XF8, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X33,
+  0X00, 0XF0, 0X3C, 0X00, 0XCC, 0X00, 0X0C, 0X0C, 0X30, 0XC0, 0XC0, 0XC0, 0XC0, 0X30, 0X30, 0X30,
+  0XC0, 0XC0, 0X0C, 0X0C, 0X00, 0XC0, 0XC3, 0X00, 0XC0, 0XC0, 0X0C, 0X03, 0X0C, 0X0C, 0X0C, 0X00,
+  0XC0, 0XC0, 0XC0, 0X00, 0X00, 0X07, 0X9C, 0X7D, 0XDB, 0XFF, 0XFC, 0X3C, 0X02, 0XCC, 0XED, 0X00,
+  0X80, 0XEE, 0XBA, 0XAB, 0XAA, 0XAA, 0XAB, 0XAB, 0XBA, 0XBA, 0XAE, 0XAA, 0XAB, 0XAA, 0XBE, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X00, 0X33, 0X00, 0XF0, 0X3C, 0X00, 0XCC, 0X00, 0X0C, 0X0C, 0X30, 0XC0, 0XC0, 0XC0,
+  0XC0, 0X0C, 0XCC, 0XC0, 0XC0, 0XC0, 0X0C, 0X0C, 0X00, 0XC0, 0X03, 0X00, 0XC0, 0XC0, 0X0C, 0X03,
+  0X0C, 0X0C, 0X0C, 0X00, 0XC0, 0XC0, 0XC0, 0X00, 0X00, 0X0D, 0XE2, 0XD0, 0X8F, 0XFF, 0XFF, 0XF3,
+  0XF8, 0XD0, 0X83, 0XFC, 0X1C, 0XC9, 0X6A, 0XEA, 0XAA, 0XAA, 0XBA, 0XAA, 0XAA, 0XAB, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0XC0, 0XC0, 0XCC, 0XCC, 0X03, 0X03, 0X00, 0X0F, 0XF0,
+  0X30, 0XFF, 0X00, 0XC0, 0XC0, 0X0C, 0XCC, 0XC0, 0XC0, 0XC0, 0X0F, 0XFC, 0X00, 0XC0, 0X03, 0X00,
+  0XC0, 0XC0, 0X0C, 0X03, 0X0F, 0XF0, 0X0F, 0XF0, 0XC0, 0XC0, 0XC0, 0X00, 0X00, 0X0B, 0X71, 0X2F,
+  0X13, 0XFF, 0XFF, 0XFF, 0X0C, 0X3F, 0X02, 0X02, 0XF6, 0XC3, 0XAE, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAB, 0XAA, 0XBA, 0XBA, 0XBA, 0XAA, 0XAE, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0XFF, 0XC0, 0XCC, 0XCC, 0X03,
+  0XFF, 0X00, 0X0C, 0X0C, 0X30, 0XC3, 0X00, 0XC0, 0XC0, 0X0C, 0XCC, 0XC0, 0XC0, 0XC0, 0X0C, 0X0C,
+  0X00, 0XC0, 0X03, 0X00, 0XC0, 0XC0, 0X0C, 0X03, 0X0C, 0X30, 0X0C, 0X00, 0XC0, 0XC0, 0XC0, 0X00,
+  0X00, 0X1D, 0XD3, 0XF5, 0XF1, 0XFF, 0XFF, 0XFF, 0XC1, 0X03, 0XF0, 0X01, 0XC3, 0X2D, 0XAA, 0XAA,
+  0XEA, 0XAA, 0XAA, 0XEB, 0XAE, 0XAB, 0XAA, 0XAA, 0XAA, 0XE9, 0X5A, 0XA8, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0XC0,
+  0XC0, 0XC3, 0X0C, 0X03, 0X03, 0X00, 0X0C, 0X0C, 0X30, 0XC3, 0X00, 0XC0, 0XC0, 0X03, 0X03, 0X00,
+  0XC0, 0XC0, 0X0C, 0X0C, 0X00, 0XC0, 0XC3, 0X00, 0XC0, 0XC0, 0X0C, 0X03, 0X0C, 0X30, 0X0C, 0X00,
+  0XC0, 0XC0, 0XC0, 0X00, 0X00, 0X0E, 0X30, 0X5C, 0X9C, 0XFF, 0XFF, 0XFF, 0XFC, 0XF4, 0X0F, 0XCC,
+  0X2D, 0XCA, 0XBA, 0XBA, 0XAE, 0XAE, 0XAA, 0XAA, 0XAA, 0XAA, 0XEB, 0XAB, 0XAA, 0XAB, 0X9A, 0XA8,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X03, 0X00, 0X30, 0XC3, 0X0C, 0X0C, 0X00, 0XC0, 0X0F, 0XF0, 0X30, 0XC0, 0XC0, 0XFF,
+  0X00, 0X03, 0X03, 0X00, 0XC0, 0XC0, 0X0C, 0X0C, 0X00, 0X3F, 0X00, 0XFF, 0X00, 0XFF, 0X03, 0XFC,
+  0X0C, 0X0C, 0X0C, 0X00, 0X3F, 0X00, 0XFF, 0X00, 0X00, 0X0C, 0X4F, 0X07, 0X34, 0XFF, 0XFF, 0XDF,
+  0XFC, 0X0F, 0XC0, 0XEF, 0XB9, 0X9E, 0XAA, 0XAA, 0XAA, 0XBA, 0XBB, 0XBA, 0XEA, 0XBA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0XC9, 0XFB,
+  0X9D, 0X3F, 0XFF, 0X3F, 0XFF, 0X00, 0XB6, 0X00, 0X42, 0XEB, 0XBB, 0XBA, 0XAA, 0XAB, 0XAA, 0XAE,
+  0XAB, 0XAA, 0XEE, 0XBA, 0XAE, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0D, 0XE7, 0X61, 0XD9, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X3C, 0X07, 0X8C, 0XCA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAB, 0XAA, 0XBA, 0XBB, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XE6, 0XA0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0E, 0XDD, 0XDF, 0X72, 0X3F, 0XFF, 0XFF, 0XFF, 0XF0, 0X9F, 0X3C,
+  0XFB, 0X1E, 0XAA, 0XAB, 0XAA, 0XAE, 0XBA, 0XBB, 0XAB, 0XAA, 0XAA, 0XBA, 0XEA, 0XBA, 0XAA, 0XAA,
+  0XB8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0F, 0XF0, 0X3F, 0XF0, 0X0C, 0X0F, 0XFC, 0X0C, 0X0C, 0X3F, 0XF0, 0XFF, 0X00, 0X3F, 0X00,
+  0X00, 0X03, 0X00, 0X03, 0X00, 0X0F, 0XF0, 0XC0, 0X0C, 0XFF, 0XC0, 0X0F, 0XF0, 0X0F, 0XF0, 0X3F,
+  0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X4E, 0X35, 0X8D, 0X7F, 0XFD, 0XFF,
+  0XFF, 0XFC, 0X03, 0XB0, 0X00, 0X3A, 0XEA, 0XAA, 0XAB, 0XAA, 0XEB, 0XAA, 0XBA, 0XAA, 0XAE, 0XAB,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30, 0X00, 0X33, 0X00, 0XC0, 0X0C, 0X0C, 0X30, 0X00,
+  0XC0, 0XC0, 0XC0, 0XC0, 0X00, 0X0C, 0XC0, 0X03, 0X00, 0X30, 0X0C, 0X30, 0X30, 0XC0, 0X00, 0X0C,
+  0X00, 0X30, 0X0C, 0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X31, 0XDB,
+  0X77, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X02, 0XDC, 0XEA, 0XBA, 0XAE, 0XBA, 0XAE, 0XBA, 0XBB,
+  0XAB, 0XAA, 0XAA, 0XAA, 0XAE, 0XBA, 0XEA, 0XAA, 0XAA, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30, 0X00, 0X33, 0X00, 0XC0,
+  0X0C, 0X0C, 0X30, 0X00, 0XC0, 0XC0, 0XC0, 0X00, 0X00, 0X0C, 0XC0, 0X03, 0X00, 0X30, 0X0C, 0X30,
+  0X30, 0XC0, 0X00, 0X0C, 0X00, 0X30, 0X0C, 0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0E, 0X77, 0X2C, 0XD9, 0XFF, 0XF3, 0XFF, 0XFF, 0XFF, 0XC1, 0XCC, 0X0C, 0XAE, 0XAB, 0XAA,
+  0XEB, 0XBA, 0XEB, 0XAA, 0XBA, 0XAE, 0XAA, 0XAA, 0XAB, 0XAB, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X3F,
+  0XF0, 0XC0, 0XC0, 0XC0, 0X0F, 0XFC, 0X3F, 0XF0, 0XFF, 0X00, 0X3F, 0X00, 0X00, 0X30, 0X30, 0X03,
+  0X00, 0X30, 0X0C, 0X0C, 0XC0, 0XFF, 0XC0, 0X0F, 0XF0, 0X30, 0X0C, 0X3F, 0XC0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XC9, 0XCD, 0XCD, 0X3F, 0XF3, 0XFF, 0XFF, 0XFF, 0XF0, 0XD2,
+  0XC1, 0XAA, 0XEA, 0XEE, 0XBA, 0XAE, 0XBA, 0XBB, 0XAA, 0XEB, 0XBA, 0XAA, 0XAA, 0XBA, 0XAA, 0XB6,
+  0X5A, 0XA4, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X00, 0X30, 0X00, 0XFF, 0XC0, 0XC0, 0X0C, 0X0C, 0X30, 0X00, 0XC3, 0X00, 0X00, 0XC0,
+  0X00, 0X3F, 0XF0, 0X03, 0X00, 0X30, 0X0C, 0X0C, 0XC0, 0XC0, 0X00, 0X0C, 0X00, 0X30, 0X0C, 0X30,
+  0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X07, 0X6C, 0XD6, 0X71, 0X33, 0XCF, 0XFF,
+  0XFF, 0XFF, 0XFC, 0X3C, 0X0F, 0XBA, 0XAE, 0XAA, 0XAB, 0XAB, 0XAB, 0XAE, 0XAE, 0XAA, 0XAB, 0XAE,
+  0XAA, 0XBB, 0XAA, 0XEA, 0XA9, 0XA8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30, 0X00, 0XC0, 0XC0, 0XC0, 0X0C, 0X0C, 0X30, 0X00,
+  0XC3, 0X00, 0XC0, 0XC0, 0X00, 0X30, 0X30, 0X03, 0X00, 0X30, 0X0C, 0X03, 0X00, 0XC0, 0X00, 0X0C,
+  0X00, 0X30, 0X0C, 0X30, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XD6, 0X7C,
+  0XDB, 0XF3, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X0D, 0XCE, 0XBA, 0XEA, 0XBB, 0XBA, 0XBA, 0XAA, 0XEA,
+  0XEB, 0XBB, 0XBA, 0XAB, 0XAA, 0XAA, 0XEE, 0XAA, 0XBA, 0XAA, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X3F, 0XF3, 0X00, 0X30, 0XC0,
+  0X0C, 0X0C, 0X3F, 0XF0, 0XC0, 0XC0, 0X3F, 0X03, 0X00, 0XC0, 0X0C, 0X03, 0XFC, 0X0F, 0XF0, 0X03,
+  0X00, 0XFF, 0XC0, 0X0C, 0X00, 0X0F, 0XF0, 0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0X9D, 0XC7, 0X33, 0XC3, 0XDF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC8, 0XCE, 0XAB, 0XAE, 0XAE,
+  0XBA, 0XEB, 0XEA, 0XAA, 0XAE, 0XBE, 0XBB, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0X80, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF3, 0X71, 0X9D, 0XC3, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC,
+  0X3E, 0XEA, 0XAA, 0XEB, 0XAE, 0XAE, 0XBB, 0XBA, 0XEB, 0XAB, 0XEE, 0XBA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XEA, 0XAA, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XE7, 0X2F, 0X37, 0XC7, 0XF7, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XF3, 0X7A, 0XAB, 0XBB, 0XBA, 0XBB, 0XEA, 0XEA, 0XAB, 0XAA, 0XAA, 0XBE, 0XEB,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XBF, 0XAA, 0XA9, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFD, 0XD3,
+  0X70, 0XC3, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF7, 0XFE, 0XBA, 0XBA, 0XAE, 0XEA, 0XEE, 0XBB, 0XBA,
+  0XAE, 0XEB, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAE, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0X03, 0X0F, 0XF0, 0X0F, 0XC0, 0X03,
+  0X00, 0X30, 0X03, 0X0F, 0XF0, 0X30, 0XC0, 0XC0, 0XFF, 0X00, 0X00, 0X30, 0X00, 0X30, 0X0C, 0X00,
+  0XC0, 0X00, 0XC0, 0X03, 0XFF, 0X03, 0X03, 0X0F, 0XF0, 0X30, 0X3F, 0X00, 0X30, 0X03, 0X00, 0X00,
+  0X00, 0X00, 0XF6, 0X39, 0X37, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XEA, 0XEE, 0XEB, 0XBA,
+  0XEE, 0XBA, 0XEA, 0XEE, 0XEA, 0XAA, 0XEA, 0XAA, 0XEB, 0XAA, 0XAA, 0X7A, 0XA6, 0X66, 0XAA, 0XA0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X30,
+  0X0C, 0X30, 0X30, 0X0C, 0XC0, 0X30, 0X03, 0X00, 0X30, 0X30, 0XF0, 0XC3, 0X00, 0XC0, 0X00, 0X30,
+  0X00, 0XCC, 0X0F, 0X03, 0XC0, 0X03, 0X30, 0X00, 0X30, 0X03, 0X03, 0X0C, 0X0C, 0X30, 0XC0, 0XC0,
+  0XCC, 0X03, 0X00, 0X00, 0X00, 0X00, 0X3D, 0XDF, 0X0C, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE,
+  0XEE, 0XAE, 0XBA, 0XEE, 0XEB, 0XBA, 0XEE, 0XEA, 0XBE, 0XEE, 0XAA, 0XEA, 0XAA, 0XBA, 0XAA, 0XAA,
+  0XAA, 0XAB, 0XAB, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X0C, 0X30, 0X0C, 0X30, 0X00, 0X0C, 0XC0, 0X30, 0X03, 0X00, 0XC0, 0X30, 0XF0, 0XC3,
+  0X00, 0X00, 0X00, 0X30, 0X00, 0XCC, 0X0F, 0X03, 0XC0, 0X03, 0X30, 0X00, 0X30, 0X00, 0XCC, 0X0C,
+  0X0C, 0X30, 0XC0, 0X00, 0XCC, 0X03, 0X00, 0X00, 0X00, 0X00, 0X2F, 0X08, 0X77, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XBA, 0XBA, 0XEB, 0XAE, 0XBB, 0XAB, 0XAE, 0XAE, 0XEA, 0XAA, 0XEA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X6E, 0XC6, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X30, 0X30, 0X0C, 0X30, 0X00, 0X30, 0X30, 0X30, 0X03, 0X03,
+  0X00, 0X30, 0XCC, 0XC3, 0X0F, 0XC0, 0X00, 0X30, 0X03, 0X03, 0X0C, 0XCC, 0XC0, 0X0C, 0X0C, 0X00,
+  0X30, 0X00, 0X30, 0X0F, 0XF0, 0X30, 0XC0, 0X03, 0X03, 0X03, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X73,
+  0X33, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XAF, 0XAE, 0XAE, 0XBB, 0XBA, 0XEE, 0XBA, 0XEA,
+  0XAE, 0XEE, 0XAA, 0XAA, 0XEA, 0XAA, 0XEA, 0XAA, 0XAA, 0XA1, 0XFD, 0X66, 0XA0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X30, 0X30, 0X0C, 0X30, 0X00, 0X3F,
+  0XF0, 0X30, 0X03, 0X03, 0X00, 0X30, 0XC3, 0XC3, 0X00, 0XC0, 0X00, 0X30, 0X03, 0XFF, 0X0C, 0XCC,
+  0XC0, 0X0F, 0XFC, 0X00, 0X30, 0X00, 0X30, 0X0C, 0X00, 0X30, 0XC0, 0X03, 0XFF, 0X03, 0X00, 0X00,
+  0X00, 0X00, 0X07, 0XB7, 0X73, 0X30, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XAE, 0XEE, 0XEB, 0XEE,
+  0XAE, 0XEE, 0XEB, 0XAE, 0XEA, 0XAA, 0XAA, 0XBB, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA6, 0X2B, 0XFA,
+  0XA8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC0, 0X30,
+  0X0C, 0X30, 0X30, 0X30, 0X30, 0X30, 0X03, 0X0C, 0X00, 0X30, 0XC3, 0XC3, 0X00, 0XC0, 0X00, 0X30,
+  0X03, 0X03, 0X0C, 0X30, 0XC0, 0X0C, 0X0C, 0X00, 0X30, 0X00, 0X30, 0X0C, 0X00, 0X30, 0XC0, 0XC3,
+  0X03, 0X03, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF0, 0XC4, 0XC0, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE,
+  0XEB, 0XBA, 0XBA, 0XBA, 0XEE, 0XEB, 0XBB, 0XBA, 0XAE, 0XEE, 0XBA, 0XBE, 0XEE, 0XEE, 0XAE, 0XAB,
+  0XAA, 0X78, 0XA6, 0XAE, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XC0, 0X0F, 0XF0, 0X0F, 0XC0, 0XC0, 0X0C, 0X3F, 0XC3, 0X0F, 0XF0, 0X30, 0XC0, 0XC0,
+  0XFF, 0X03, 0X00, 0X30, 0X0C, 0X00, 0XCC, 0X30, 0XC0, 0X30, 0X03, 0X00, 0X30, 0X00, 0X30, 0X0C,
+  0X00, 0X30, 0X3F, 0X0C, 0X00, 0XC3, 0XFC, 0X00, 0X00, 0X00, 0X00, 0XE7, 0X03, 0X70, 0X00, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFE, 0XAF, 0XBB, 0XBB, 0XBB, 0XBE, 0XBA, 0XBA, 0XAB, 0XBA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XA6, 0XAF, 0XAA, 0XA6, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3C,
+  0X7C, 0X3C, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XBB, 0XBA, 0XEE, 0XEB, 0XAF, 0XEB, 0XAE, 0XBA,
+  0XAB, 0XAB, 0XAB, 0XAA, 0XAE, 0XEA, 0XEB, 0XBA, 0XAA, 0XAB, 0XAA, 0XAA, 0X6A, 0XA0, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X3F, 0XED, 0XCC, 0X00, 0X00, 0X03, 0XFF, 0XCC, 0X0E, 0XEE, 0XEF, 0XAE, 0XEE,
+  0XBA, 0XEE, 0XEA, 0XEB, 0XAA, 0XBA, 0XAA, 0XAA, 0XAB, 0XBA, 0XAA, 0XAA, 0XAA, 0XA6, 0XEA, 0XAA,
+  0XAB, 0XA8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 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, 0X77, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F,
+  0XBB, 0XAB, 0XBB, 0XBB, 0XBE, 0XEE, 0XAE, 0XBA, 0XBB, 0XAA, 0XAA, 0XAA, 0XAA, 0XBB, 0XAE, 0XAE,
+  0XAA, 0XEA, 0X7A, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 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, 0XF0, 0X3F, 0XF0, 0XFF, 0X00, 0X3F, 0X03, 0X03, 0X03, 0X0C, 0X0C, 0X03, 0XFC, 0X00,
+  0X3F, 0XC0, 0XC3, 0XFC, 0X03, 0XFC, 0X00, 0XC0, 0XC0, 0XC3, 0X3F, 0XF0, 0X30, 0X30, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF3, 0X1F, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X0E, 0XEF, 0XBA, 0XBB, 0XBB, 0XBA, 0XAB, 0XEB, 0XAB, 0XAA, 0XAB, 0XAA, 0XAA,
+  0XBB, 0XAA, 0XAB, 0XBA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 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, 0X0C, 0X0C, 0X30, 0X00, 0XC0, 0XC0, 0XC0, 0XC3, 0X03, 0X03, 0X0F,
+  0X0C, 0X0C, 0X03, 0X00, 0X30, 0X30, 0XC3, 0X03, 0X03, 0X03, 0X00, 0XC0, 0XC0, 0XC3, 0X03, 0X00,
+  0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0XFC, 0XCF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XBB, 0XBB, 0XBB, 0XBB, 0XAE, 0XEE, 0XBA, 0XBA,
+  0XBA, 0XBA, 0XAA, 0XBA, 0XAA, 0XAA, 0XEA, 0XAB, 0XAA, 0X6A, 0XBA, 0XAA, 0XAA, 0XAA, 0XB8, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X30, 0X00, 0XC0, 0XC0, 0XC0,
+  0X03, 0X03, 0X03, 0X0F, 0X0C, 0X0C, 0X00, 0X00, 0X30, 0X30, 0XC3, 0X03, 0X03, 0X03, 0X00, 0X33,
+  0X33, 0X03, 0X03, 0X00, 0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X3F, 0X73, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XBB, 0XAE, 0XBB, 0XBB,
+  0XBB, 0XBB, 0XEA, 0XEA, 0XAB, 0XAA, 0XBB, 0XAB, 0XAA, 0XAA, 0XAB, 0XAA, 0X6A, 0XAA, 0XB9, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X00, 0X00, 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, 0XF0, 0X3F,
+  0XF0, 0XFF, 0X00, 0XC0, 0X03, 0XFF, 0X03, 0X0C, 0XCC, 0X0C, 0X3F, 0X00, 0X3F, 0XC0, 0XC3, 0XFC,
+  0X03, 0X03, 0X00, 0X33, 0X33, 0X03, 0X03, 0X00, 0X3F, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF3, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X0F,
+  0XBB, 0XEE, 0XEE, 0XEB, 0XAE, 0XEE, 0XFE, 0XAF, 0XFA, 0XBB, 0XAA, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAE, 0XAA, 0XAA, 0XAA, 0XAF, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X00, 0X30, 0X00, 0XC3, 0X00, 0XC0, 0X03, 0X03, 0X03, 0X0C, 0X3C, 0X0C, 0X03, 0X00,
+  0X30, 0X30, 0XC3, 0X0C, 0X03, 0X03, 0X00, 0X33, 0X33, 0X03, 0X03, 0X00, 0X30, 0X30, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XC0, 0X00,
+  0X00, 0X00, 0X00, 0X0F, 0XBE, 0XBA, 0XEE, 0XEE, 0XEE, 0XBA, 0XEF, 0XFE, 0XBA, 0XAB, 0XBA, 0XAA,
+  0XAA, 0XBA, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XEA, 0XAA, 0XAA, 0XAB, 0XE8, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30, 0X00, 0XC3, 0X00, 0XC0, 0XC3, 0X03, 0X03, 0X0C,
+  0X3C, 0X0C, 0X03, 0X00, 0X30, 0X30, 0XC3, 0X0C, 0X03, 0X03, 0X00, 0X0C, 0X0C, 0X03, 0X03, 0X00,
+  0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X3F, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFB, 0XEE, 0XFB, 0XBA, 0XEE, 0XEE, 0XEE, 0XEE,
+  0XEF, 0XBB, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XEA, 0XA9, 0XBA,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X3F, 0XF0, 0XC0, 0XC0, 0X3F,
+  0X03, 0X03, 0X03, 0X0C, 0X0C, 0X03, 0XFC, 0X00, 0X3F, 0XC0, 0XC3, 0X03, 0X03, 0XFC, 0X00, 0X0C,
+  0X0C, 0X03, 0X03, 0X00, 0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X0E, 0XEE, 0XEE, 0XEE,
+  0XEB, 0XBB, 0XBA, 0XEA, 0XAA, 0XEA, 0XAA, 0XEB, 0XAB, 0XAB, 0XAB, 0XAA, 0XAA, 0XAA, 0XAA, 0XBA,
+  0XAA, 0XA6, 0X92, 0X9A, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3C, 0X00, 0X00, 0X00, 0X00, 0X0F,
+  0X3E, 0XFB, 0XEF, 0XEE, 0XFF, 0XEB, 0XAE, 0XAA, 0XAA, 0XAA, 0XAE, 0XAA, 0XEA, 0XAA, 0XBA, 0XAE,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0XA8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00,
+  0X00, 0X00, 0X00, 0X0C, 0X3F, 0XAE, 0XEF, 0XFF, 0XFB, 0XBF, 0XBA, 0XEB, 0XBA, 0XEA, 0XAA, 0XBA,
+  0XAA, 0XAB, 0XAA, 0XAA, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X9A, 0X80, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X08, 0X3B, 0XEF, 0XBA, 0XEE, 0XFF, 0XFF, 0XAA, 0XBA,
+  0XAA, 0XBA, 0XAA, 0XAE, 0XAE, 0XBA, 0XAB, 0XBA, 0XBA, 0XEB, 0XAA, 0XAA, 0XEE, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XA8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X30, 0X30, 0X3F, 0XC0, 0X3F,
+  0XC0, 0XFF, 0X00, 0X0C, 0X00, 0XFC, 0X0F, 0XFC, 0X30, 0X30, 0XC0, 0X00, 0X3F, 0XC0, 0XFF, 0XC3,
+  0XFF, 0X3F, 0XF0, 0X00, 0X0C, 0X0C, 0X00, 0XC0, 0XC0, 0X0C, 0XC3, 0X03, 0X00, 0XFF, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3E, 0XBE, 0XEF, 0XBB,
+  0XEB, 0XFA, 0XAA, 0XAA, 0XAA, 0XAB, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAB, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XBA, 0XAA, 0XEA, 0XA9, 0X9A, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0X30,
+  0X30, 0XC0, 0X30, 0XC0, 0X30, 0XC0, 0XC0, 0X33, 0X03, 0X03, 0X00, 0XC0, 0X30, 0X30, 0XC0, 0X00,
+  0X30, 0X00, 0XC0, 0X03, 0X00, 0X03, 0X00, 0X00, 0X0C, 0X0C, 0X03, 0X30, 0X30, 0X30, 0XC3, 0XC3,
+  0X03, 0X00, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X3B, 0XBE, 0XEA, 0XFA, 0XEF, 0XEB, 0XBB, 0XAA, 0XAA, 0XAA, 0XBA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAE, 0XBA, 0XAA, 0XAA, 0XAB, 0XAB, 0XBA, 0XAA, 0XAA, 0XA9, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XC0, 0X0C, 0XC0, 0XC0, 0X00, 0XC0, 0X30, 0XC0, 0XC0, 0X33, 0X03, 0X00, 0X00, 0XC0,
+  0X0C, 0XC0, 0XC0, 0X00, 0X30, 0X00, 0XC0, 0X03, 0X00, 0X03, 0X00, 0X00, 0X0C, 0X0C, 0X03, 0X30,
+  0X30, 0X30, 0XC3, 0XC3, 0X03, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X3E, 0XFB, 0XFA, 0XAA, 0XAE, 0XAE, 0XAA, 0XAA, 0XAA, 0XBA, 0XAB, 0XAE,
+  0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XEA, 0XAE, 0XAA, 0XAA, 0X6A, 0XAA, 0XA6, 0X8A, 0X80,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X03, 0X00, 0XC3, 0XF0, 0XC0, 0X30, 0XC0, 0XC0, 0XC0,
+  0XC3, 0X00, 0X00, 0XC0, 0X03, 0X00, 0XC0, 0X00, 0X3F, 0XC0, 0XFF, 0XC3, 0XFF, 0X03, 0X00, 0X00,
+  0X0F, 0XFC, 0X0C, 0X0C, 0X0C, 0XC0, 0XC3, 0X33, 0X03, 0X0F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3B, 0XFB, 0XFF, 0XAB, 0XEA, 0XAA, 0XAE, 0XAE,
+  0XAA, 0XAA, 0XEA, 0XAA, 0XAB, 0XAA, 0XAA, 0XAA, 0XEB, 0XAA, 0XEE, 0XBA, 0XAA, 0X6A, 0XAA, 0XAA,
+  0XAA, 0X6A, 0XA9, 0XA8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X03, 0X00, 0XC0, 0X30, 0XC0,
+  0X30, 0XC0, 0XC0, 0XFF, 0XC3, 0X00, 0X00, 0XC0, 0X03, 0X00, 0XC0, 0X00, 0X30, 0X00, 0XC0, 0X03,
+  0X00, 0X03, 0X00, 0X00, 0X0C, 0X0C, 0X0F, 0XFC, 0X0C, 0XC0, 0XC3, 0X0F, 0X03, 0X00, 0XC0, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XEF, 0XFB, 0XEA,
+  0X9A, 0XAF, 0XFA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAE, 0XAB, 0XAA, 0XAA, 0XAA, 0XAA, 0XAB,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X96, 0X1A, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X03,
+  0X00, 0XC0, 0X30, 0XC0, 0X30, 0XC0, 0XC0, 0XC0, 0XC3, 0X03, 0X00, 0XC0, 0X03, 0X00, 0XC0, 0X00,
+  0X30, 0X00, 0XC0, 0X03, 0X00, 0X03, 0X00, 0X00, 0X0C, 0X0C, 0X0C, 0X0C, 0X03, 0X00, 0XC3, 0X0F,
+  0X03, 0X00, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X3F, 0XFE, 0XAA, 0XBF, 0XAA, 0XFF, 0XAA, 0XAE, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XEA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0XA0, 0XB0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0F, 0XF0, 0X03, 0X00, 0X3F, 0XC0, 0X3F, 0XC0, 0XFF, 0X03, 0X00, 0X30, 0XFC, 0X00, 0XC0,
+  0X03, 0X00, 0XFF, 0X00, 0X30, 0X00, 0XFF, 0XC3, 0XFF, 0X03, 0X00, 0XC0, 0X0C, 0X0C, 0X30, 0X03,
+  0X03, 0X00, 0XC3, 0X03, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X0F, 0XFE, 0XBF, 0XFE, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA6,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XEA, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X2A,
+  0X79, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0B, 0XEB, 0XFF, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XBA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAB, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0X9A, 0X66, 0X93, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XAF, 0XBB, 0XAA,
+  0XBE, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XA6, 0XA8, 0X74, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X0B, 0XFA, 0XFE, 0XBA, 0XBE, 0XEA, 0XAA, 0XAA, 0X7A, 0XAE, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAB, 0XAE, 0XAB, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X6B, 0X1D, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X3F, 0XF0, 0XC0, 0XC0, 0XC0, 0XFF, 0X00, 0XFF, 0XC0, 0X3F, 0XC0, 0XFF, 0XC0, 0XFC, 0X00,
+  0X3F, 0XC0, 0X3F, 0XC0, 0XC3, 0X03, 0X0F, 0XFC, 0X30, 0XC0, 0XC0, 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, 0X0F, 0XEB, 0XEA, 0XEB, 0XB6, 0XAA, 0XEA, 0XAA, 0XAA, 0XE9, 0XAB, 0XAA,
+  0XEA, 0XAA, 0XAB, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XEA, 0XAA, 0XAA, 0XAA, 0XA6, 0XA9, 0XA6,
+  0XA9, 0XA2, 0XD0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0XC0, 0XC0, 0XC3, 0X00, 0XC0, 0X0C, 0X00, 0XC0, 0X30,
+  0XC0, 0X03, 0X03, 0X00, 0X30, 0X30, 0XC0, 0X30, 0XC3, 0XC3, 0X00, 0XC0, 0X30, 0XF0, 0XC0, 0XC0,
+  0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3B, 0XBE, 0XEE, 0XEA, 0XAA, 0XAA, 0XAA, 0XAE,
+  0XAA, 0XAA, 0X7A, 0XAA, 0XAA, 0XAA, 0XA9, 0X9A, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0XEB, 0XAA, 0XAA,
+  0XAB, 0XA6, 0XAA, 0XA9, 0XDA, 0X98, 0XA4, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X33, 0X33, 0X03, 0X00, 0XC0,
+  0X0C, 0X00, 0XC0, 0X30, 0XC0, 0X03, 0X00, 0X00, 0X30, 0X30, 0XC0, 0X30, 0XC3, 0XC3, 0X00, 0XC0,
+  0X30, 0XF0, 0XC0, 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, 0XEE, 0XFE, 0XFA, 0XEF,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X69, 0XFA, 0XAA, 0XAB, 0XAA, 0XAA, 0XB6, 0XAA, 0X9A, 0XAA, 0XAA,
+  0XAA, 0X6A, 0XAA, 0XAA, 0XA9, 0X7A, 0XAA, 0XA9, 0X56, 0XA5, 0X2E, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X33,
+  0X33, 0X03, 0X00, 0XC0, 0X0C, 0X00, 0XC0, 0X30, 0XFF, 0XC0, 0XFC, 0X00, 0X3F, 0XC0, 0XC0, 0X30,
+  0XC3, 0X33, 0X00, 0XC0, 0X30, 0XCC, 0XC0, 0XC3, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0XEE, 0XEE, 0XEA, 0XBA, 0XAA, 0XBA, 0XAB, 0XAE, 0XBA, 0XAA, 0XFF, 0XAA, 0XAA, 0XAA, 0XAA, 0XA9,
+  0X9A, 0XAE, 0XAE, 0XBA, 0XAA, 0XFB, 0XEA, 0XBA, 0XAA, 0XAA, 0XAA, 0XA8, 0XF5, 0X6A, 0X4A, 0X80,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0X00, 0X33, 0X33, 0X03, 0X00, 0XC0, 0X0C, 0X00, 0XC0, 0X30, 0XC0, 0X00, 0X03, 0X00,
+  0X30, 0X00, 0XC0, 0X30, 0XC3, 0X0F, 0X00, 0XC0, 0X30, 0XC3, 0XC0, 0XC0, 0X30, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X03, 0XFB, 0XEA, 0XAF, 0XAE, 0XBA, 0XAA, 0XBA, 0XBA, 0X66, 0X9B, 0XFF, 0XEE,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XA9, 0XA6, 0XAA, 0XAA, 0XBA, 0X6E, 0XAA, 0XAA, 0XAA, 0XAB, 0XAA, 0XAB,
+  0X1D, 0X6A, 0X61, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X0C, 0X0C, 0X03, 0X00, 0XC0, 0X0C, 0X00, 0XC0, 0X30,
+  0XC0, 0X03, 0X03, 0X00, 0X30, 0X00, 0XC0, 0X30, 0XC3, 0X0F, 0X00, 0XC0, 0X30, 0XC3, 0XC0, 0XC0,
+  0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XAB, 0XEF, 0XAB, 0XEA, 0XAE, 0XEA, 0XAA, 0XA6,
+  0XAA, 0XAF, 0XEB, 0XAA, 0XAA, 0XBA, 0XAA, 0XAA, 0XAA, 0XA9, 0XAA, 0XAA, 0XAA, 0X96, 0XEE, 0XAA,
+  0XEA, 0XB9, 0XFA, 0X97, 0X77, 0X56, 0X99, 0XA4, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X0C, 0X0C, 0X00, 0XFF, 0X00,
+  0X0C, 0X00, 0X3F, 0XC0, 0XFF, 0XC0, 0XFC, 0X00, 0X30, 0X00, 0X3F, 0XC0, 0XC3, 0X03, 0X00, 0XC0,
+  0X30, 0XC0, 0XC0, 0X3F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XEB, 0XEA, 0XAA, 0XBA,
+  0XAE, 0XEA, 0XAA, 0XAA, 0XAA, 0XAE, 0XAA, 0XAB, 0XAA, 0XA9, 0X6A, 0XAA, 0XAA, 0XAA, 0XAE, 0XAA,
+  0XAA, 0X9A, 0X6A, 0XBA, 0XAA, 0XBD, 0X95, 0X79, 0X8F, 0X76, 0XA8, 0X68, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F,
+  0XAF, 0XEE, 0XBE, 0XBA, 0XAA, 0XAE, 0XAA, 0XA9, 0XAA, 0XAA, 0XAA, 0XEA, 0XAE, 0XA7, 0XFE, 0XAA,
+  0XAB, 0XAA, 0X9B, 0XAA, 0XAA, 0XA7, 0XAA, 0XAA, 0XAA, 0XB7, 0XD7, 0X99, 0X99, 0XFD, 0XAA, 0X9A,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X0E, 0XFE, 0XEA, 0XEA, 0XEA, 0XAA, 0XAA, 0XAE, 0XAA, 0XAA, 0XBA, 0XEA, 0XEA,
+  0XAA, 0XAF, 0XFF, 0XEA, 0XAA, 0XAA, 0XA6, 0XEA, 0XAA, 0XDA, 0XA9, 0XAA, 0XEA, 0XBF, 0X6A, 0XA6,
+  0X62, 0X5D, 0X6A, 0X6A, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0E, 0XBB, 0XBE, 0XEA, 0XAB, 0XAA, 0XAA, 0XAA, 0XBA,
+  0XEA, 0XAA, 0XAE, 0XAA, 0XAA, 0XAB, 0XFB, 0XFE, 0XAA, 0XAA, 0XA9, 0XBA, 0XAA, 0XB7, 0XAA, 0XAA,
+  0XAA, 0XB7, 0X5A, 0X6A, 0X69, 0X97, 0X5A, 0X99, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X0F, 0XF0, 0X3F, 0XC3, 0X03,
+  0X03, 0X00, 0XC0, 0X0F, 0XF0, 0X3F, 0XC0, 0X00, 0X0C, 0X03, 0X03, 0X03, 0XFC, 0X00, 0XFF, 0XC3,
+  0X03, 0X03, 0X0F, 0XF0, 0X03, 0XFF, 0X00, 0XFF, 0X03, 0XFF, 0X03, 0XF0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XBE, 0XAE, 0XAE, 0XAA,
+  0XAE, 0XAE, 0XAA, 0XAA, 0XAA, 0XAE, 0XAA, 0XAB, 0XAA, 0XAF, 0XFE, 0XBF, 0X66, 0XAE, 0X55, 0X96,
+  0XAA, 0XA6, 0XAA, 0XAB, 0XAA, 0XBF, 0X5A, 0XB9, 0XA6, 0X76, 0X5A, 0XA6, 0XA0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30,
+  0X0C, 0X30, 0X33, 0X03, 0X03, 0X03, 0X30, 0X0C, 0X0C, 0X30, 0X30, 0X00, 0X33, 0X03, 0XC3, 0X03,
+  0X03, 0X00, 0X0C, 0X03, 0X03, 0X03, 0X30, 0X0C, 0X00, 0X30, 0X03, 0X00, 0XC3, 0X00, 0X0C, 0X0C,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3B,
+  0XAF, 0XBB, 0XEE, 0XEB, 0XAA, 0XAA, 0XAB, 0XAA, 0XAB, 0XAA, 0XEA, 0XEA, 0XAA, 0XAF, 0XEE, 0XAA,
+  0XFD, 0X55, 0XFF, 0X57, 0XAA, 0XAD, 0XAA, 0XAA, 0XBA, 0XBF, 0XD6, 0XAA, 0XEA, 0X95, 0XD5, 0XA9,
+  0XA8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X00, 0X30, 0X0C, 0X30, 0X30, 0XCC, 0XCC, 0X03, 0X30, 0X0C, 0X0C, 0X30, 0X30, 0X00,
+  0X33, 0X03, 0XC3, 0X03, 0X03, 0X00, 0X0C, 0X00, 0XCC, 0XCC, 0X30, 0X0C, 0X00, 0X30, 0X03, 0X00,
+  0XC3, 0X00, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X3A, 0XFE, 0XFB, 0XFF, 0XEA, 0XBA, 0XBB, 0XAE, 0XBA, 0XBA, 0XAB, 0XAE, 0XAA,
+  0XAA, 0XAF, 0X7B, 0XAB, 0XAA, 0XEA, 0XFF, 0X7F, 0XFA, 0XA9, 0XAB, 0XAA, 0XAA, 0XFF, 0X75, 0XA9,
+  0X96, 0X99, 0X56, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X30, 0X0C, 0X3F, 0XC0, 0XCC, 0XCC, 0X0C, 0X0C, 0X0F,
+  0XF0, 0X30, 0X30, 0X00, 0XC0, 0XC3, 0X33, 0X03, 0X03, 0X00, 0X0C, 0X00, 0XCC, 0XCC, 0X30, 0X0C,
+  0X00, 0X30, 0X03, 0X00, 0XC3, 0XFF, 0X03, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X2E, 0XBE, 0XBB, 0XEE, 0XFA, 0XAA, 0XAB, 0XAA, 0XAE,
+  0X9E, 0XAA, 0XAA, 0XBA, 0XAE, 0XA7, 0XDA, 0XEA, 0XAA, 0XAA, 0X7F, 0XFF, 0X7E, 0XAB, 0X6A, 0X5B,
+  0XAA, 0XFF, 0XF5, 0X6A, 0XA9, 0XD7, 0X75, 0X6A, 0X6A, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30, 0X0C, 0X30, 0XC0, 0XCC,
+  0XCC, 0X0F, 0XFC, 0X0C, 0X30, 0X30, 0X30, 0X00, 0XFF, 0XC3, 0X0F, 0X03, 0X03, 0X00, 0X0C, 0X00,
+  0XCC, 0XCC, 0X30, 0X0C, 0X00, 0X30, 0X03, 0X00, 0XC3, 0X00, 0X00, 0X0C, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3B, 0XBE, 0XAA, 0XEA, 0XAB,
+  0XBA, 0XEA, 0XBA, 0XBA, 0X66, 0XBB, 0XBB, 0XAB, 0XAA, 0XAD, 0XEA, 0XEA, 0XEE, 0XAA, 0XBF, 0XBB,
+  0X7B, 0XAA, 0X7B, 0XAA, 0XAB, 0XFD, 0XF9, 0X5A, 0XDA, 0XA5, 0X95, 0X66, 0X66, 0X80, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30,
+  0X0C, 0X30, 0XC0, 0X30, 0X30, 0X0C, 0X0C, 0X0C, 0X30, 0X30, 0X30, 0X00, 0XC0, 0XC3, 0X0F, 0X03,
+  0X03, 0X00, 0X0C, 0X00, 0X30, 0X30, 0X30, 0X0C, 0X00, 0X30, 0X03, 0X00, 0XC3, 0X00, 0X0C, 0X0C,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3A,
+  0XBE, 0XEB, 0XBB, 0XBA, 0XAA, 0XAE, 0XEB, 0XAA, 0XEA, 0XAA, 0XAA, 0XAA, 0XAA, 0XB6, 0X76, 0XBA,
+  0XAB, 0XBA, 0X77, 0XF7, 0XFE, 0XEA, 0X5A, 0XAA, 0XAB, 0XFF, 0X77, 0X55, 0XAD, 0X67, 0X66, 0X59,
+  0X56, 0X90, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X00, 0X0F, 0XF0, 0X30, 0X30, 0X30, 0X30, 0X30, 0X03, 0X0C, 0X0C, 0X3F, 0XC0, 0X03,
+  0X00, 0X33, 0X03, 0X03, 0XFC, 0X00, 0X0C, 0X00, 0X30, 0X30, 0X0F, 0XF0, 0X00, 0X30, 0X00, 0XFF,
+  0X03, 0XFF, 0X03, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X3B, 0XBB, 0XAF, 0XBB, 0XAE, 0XEE, 0XBA, 0XEA, 0XE9, 0XA6, 0XEB, 0XAE, 0XBA,
+  0XBA, 0X5D, 0XDA, 0XAA, 0XAA, 0XAA, 0XBF, 0X7B, 0X77, 0X7A, 0XDA, 0XAB, 0XAF, 0X7F, 0XF9, 0X96,
+  0X66, 0X69, 0X75, 0X7A, 0X7D, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X2E, 0XEB, 0XEE, 0XEE, 0XAB, 0XAA, 0XAE, 0XAE, 0X7A,
+  0XAA, 0XAA, 0XEB, 0XAB, 0XAB, 0X59, 0XA7, 0XAE, 0XAE, 0XBA, 0XAF, 0X9E, 0X9F, 0XEE, 0XD5, 0XAA,
+  0X5F, 0XFF, 0XBD, 0XD5, 0X97, 0X59, 0X9D, 0X55, 0X9D, 0X64, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3B, 0XEE, 0XEE, 0XAA, 0XEE,
+  0XB6, 0XEA, 0XEA, 0XEA, 0XAE, 0XAE, 0XAE, 0XAA, 0XBA, 0X69, 0XDE, 0X6B, 0XAA, 0XAA, 0X9F, 0XD5,
+  0XB6, 0X76, 0XA5, 0XD5, 0X7F, 0XF7, 0XDD, 0XD6, 0X5D, 0XDB, 0X66, 0X59, 0X99, 0XA8, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3A,
+  0XBB, 0XBA, 0XBA, 0XAB, 0XFA, 0XAE, 0XAE, 0XAA, 0XAA, 0XAB, 0XEA, 0XEB, 0XA9, 0X5A, 0X66, 0XDA,
+  0XAA, 0XAE, 0XAF, 0XFE, 0X59, 0XED, 0XAD, 0XFF, 0XA9, 0XFF, 0XFE, 0X75, 0X99, 0XB5, 0XDE, 0X55,
+  0X99, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0F, 0XF0, 0X0F, 0XF0, 0X30, 0X30, 0X33, 0XFF, 0X03, 0X0C, 0X0C, 0X0F, 0XF0, 0X00, 0XFF,
+  0X00, 0X0C, 0X00, 0XFC, 0X03, 0X03, 0X30, 0X30, 0X30, 0X0C, 0X00, 0XFF, 0X03, 0XFC, 0X00, 0X00,
+  0XC0, 0XC0, 0XCC, 0X0C, 0X0C, 0X0F, 0XC0, 0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X7B, 0XFB, 0XEA, 0XEB, 0XBE, 0XEA, 0XEB, 0XAA, 0XEA, 0XBA, 0XAA, 0XAE, 0XAA,
+  0XA5, 0X6D, 0X9D, 0X9D, 0XEA, 0XEA, 0X9F, 0XFF, 0X69, 0X5D, 0XD9, 0XEF, 0XAF, 0XFF, 0X7B, 0X6D,
+  0X59, 0XFF, 0XED, 0X5D, 0X66, 0X6A, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X30, 0X0C, 0X30, 0X3C, 0X30, 0X30, 0X03, 0X0F, 0X0C,
+  0X30, 0X0C, 0X00, 0XC0, 0XC0, 0X33, 0X03, 0X03, 0X03, 0X0C, 0X30, 0X30, 0X30, 0X33, 0X00, 0XC0,
+  0XC3, 0X03, 0X00, 0X00, 0XC0, 0XC0, 0XCC, 0X0C, 0X0C, 0X30, 0X30, 0X30, 0X30, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X2E, 0XBB, 0XFE, 0XBA, 0XEB, 0XBA, 0XBA, 0XAE, 0XB6,
+  0XAA, 0XAB, 0XAB, 0XBE, 0XEB, 0X66, 0XDD, 0XE6, 0XA6, 0X5A, 0XA7, 0XDF, 0XF6, 0X97, 0XDA, 0X0F,
+  0XAA, 0X7F, 0XF7, 0X5E, 0X55, 0X6F, 0X77, 0X96, 0X59, 0X6A, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X30, 0X0C, 0X30, 0X3C, 0X30,
+  0X30, 0X03, 0X0F, 0X0C, 0X30, 0X00, 0X00, 0XC0, 0XC0, 0X33, 0X03, 0X00, 0X03, 0X30, 0X0C, 0XCC,
+  0XC0, 0X33, 0X00, 0XC0, 0XC3, 0X03, 0X00, 0X00, 0X33, 0X33, 0X0C, 0X0C, 0X0C, 0X30, 0X00, 0X30,
+  0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XBA, 0XEE, 0XEA, 0XEE, 0XEA,
+  0XBA, 0XEB, 0XAB, 0XAA, 0XAB, 0XAA, 0XE6, 0XDE, 0XA5, 0X76, 0X66, 0XDD, 0X7B, 0XB6, 0X97, 0XDF,
+  0XFF, 0X66, 0X75, 0XB1, 0XEA, 0XFF, 0XFF, 0XE7, 0X5B, 0X7F, 0XF7, 0X55, 0X5D, 0X5A, 0X90, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X30,
+  0X0C, 0X30, 0X33, 0X30, 0X30, 0X03, 0X0C, 0XCC, 0X30, 0XFC, 0X00, 0XFF, 0X00, 0XC0, 0XC3, 0X00,
+  0X03, 0XCC, 0X0C, 0XCC, 0XC0, 0XC0, 0XC0, 0XFF, 0X03, 0X03, 0X00, 0X00, 0X33, 0X33, 0X0F, 0XFC,
+  0X0C, 0X30, 0X00, 0X3F, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F,
+  0XBE, 0XFB, 0XBB, 0XBB, 0XAE, 0XBB, 0XBA, 0XFA, 0XEA, 0XEA, 0XAA, 0XAA, 0XA7, 0X79, 0X9D, 0XEF,
+  0X69, 0XED, 0X99, 0XF7, 0XF7, 0XDD, 0X6D, 0X7F, 0X76, 0X6F, 0XEF, 0XDF, 0XD5, 0X5B, 0XFF, 0XD9,
+  0X95, 0X96, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X00, 0X30, 0X0C, 0X30, 0X30, 0XF0, 0X30, 0X03, 0X0C, 0X3C, 0X30, 0X0C, 0X00, 0XC0,
+  0XC0, 0XFF, 0XC3, 0X00, 0X03, 0X0C, 0X0C, 0XCC, 0XC0, 0XFF, 0XC0, 0XC3, 0X03, 0X03, 0X00, 0X00,
+  0X33, 0X33, 0X0C, 0X0C, 0X0C, 0X30, 0X00, 0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0XBA, 0XBE, 0XBA, 0XEB, 0XAA, 0XBA, 0XEA, 0XAB, 0XBA, 0XAA, 0XAB, 0XAA, 0XA7,
+  0X69, 0X7E, 0X66, 0X7F, 0XDD, 0XFF, 0X55, 0XFD, 0XFF, 0XFB, 0X5E, 0X5F, 0X3D, 0X9F, 0XFE, 0XF6,
+  0XD6, 0X65, 0XFF, 0X65, 0X5B, 0X59, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30, 0X0C, 0X30, 0X30, 0XF0, 0X30, 0X03, 0X0C, 0X3C,
+  0X30, 0X0C, 0X00, 0XC0, 0XC0, 0XC0, 0XC3, 0X03, 0X03, 0X03, 0X03, 0X03, 0X00, 0XC0, 0XC0, 0XC3,
+  0X03, 0X03, 0X00, 0X00, 0X0C, 0X0C, 0X0C, 0X0C, 0X0C, 0X30, 0X30, 0X30, 0X30, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3B, 0XBF, 0XBB, 0XBE, 0XBB, 0XBE, 0XAF, 0XBB, 0XBA,
+  0XBA, 0XAA, 0XDA, 0XEA, 0X9D, 0XBF, 0XE7, 0X6E, 0XFF, 0X6F, 0X6D, 0X7E, 0X7F, 0XF7, 0XE5, 0XDB,
+  0XE6, 0X67, 0XFF, 0XFD, 0XF5, 0X76, 0X57, 0X56, 0X55, 0XD5, 0XA8, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X0F, 0XF0, 0X30, 0X30, 0X30,
+  0X30, 0X03, 0X0C, 0X0C, 0X0F, 0XF0, 0X00, 0XFF, 0X03, 0X00, 0X30, 0XFC, 0X03, 0X03, 0X03, 0X03,
+  0X03, 0X00, 0X30, 0XC0, 0XC3, 0XFC, 0X03, 0X00, 0X0C, 0X0C, 0X0C, 0X0C, 0X0C, 0X0F, 0XC0, 0X30,
+  0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3A, 0XEE, 0XEF, 0XBB, 0XAB,
+  0XAE, 0XEE, 0XAE, 0XBA, 0XAA, 0XEA, 0XEA, 0X66, 0XA5, 0XF6, 0X6D, 0X7F, 0XFF, 0XFF, 0X57, 0X5F,
+  0X57, 0XF7, 0X75, 0X97, 0XDB, 0X97, 0XFF, 0XF7, 0X75, 0X67, 0X56, 0X67, 0X59, 0X96, 0X68, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3B,
+  0XAF, 0XEE, 0XFB, 0XEE, 0XEF, 0XBB, 0XEB, 0X7E, 0XBA, 0XBA, 0XE6, 0XAD, 0XAD, 0X6B, 0X9E, 0X5F,
+  0XFF, 0XFF, 0X97, 0XDF, 0XF5, 0XFF, 0XDF, 0X57, 0XFD, 0XF9, 0X7F, 0XFF, 0X7D, 0X5D, 0XE5, 0XD5,
+  0X95, 0XB5, 0X5A, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X0B, 0XEE, 0XBB, 0XEE, 0XEB, 0XBF, 0XAE, 0XBF, 0XBA, 0XAE, 0XAA, 0XE6, 0XDA,
+  0X95, 0XF6, 0X5F, 0X67, 0XFF, 0XFF, 0X5F, 0XFF, 0XFF, 0X7D, 0XFF, 0X75, 0XFD, 0XDF, 0X6F, 0XFF,
+  0XDF, 0X59, 0XD5, 0X9D, 0X57, 0XF6, 0X6A, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0B, 0XEB, 0XEE, 0XFB, 0XFF, 0XAA, 0XFB, 0XBF, 0XAE,
+  0XEA, 0XAA, 0XD9, 0X9D, 0X9F, 0XB7, 0X9B, 0X67, 0XFF, 0XFD, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD,
+  0XFF, 0X77, 0XF7, 0XFF, 0XFF, 0XD5, 0XED, 0XD9, 0XD7, 0X7F, 0X56, 0X40, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC0, 0X0F, 0XF0, 0X3F, 0XF0, 0X00,
+  0XFC, 0X0C, 0X0C, 0X0C, 0XFF, 0XC0, 0X30, 0X03, 0XFC, 0X03, 0X00, 0X3F, 0XF0, 0X03, 0XFC, 0X0F,
+  0XF0, 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, 0X0E, 0XAE, 0XBE, 0XEF, 0XEA,
+  0XAF, 0XBA, 0X7E, 0XBE, 0XAE, 0XBA, 0XAB, 0XA6, 0XD9, 0XDA, 0X67, 0XD9, 0X9D, 0X95, 0X9F, 0XFF,
+  0XFF, 0XFF, 0XDF, 0X70, 0X3F, 0XA7, 0XFF, 0XDF, 0XFD, 0XD7, 0XD5, 0X57, 0X55, 0XFD, 0X56, 0X80,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X30, 0X0C,
+  0X0C, 0X30, 0X00, 0X03, 0X03, 0X0C, 0X0C, 0X0C, 0X0C, 0X00, 0XCC, 0X03, 0X03, 0X03, 0X00, 0X30,
+  0X00, 0X03, 0X00, 0X30, 0X0C, 0X30, 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, 0X0F,
+  0XAB, 0XBA, 0XFE, 0XBA, 0XBE, 0XAF, 0XEE, 0XAB, 0XAB, 0XAA, 0XD6, 0X7D, 0X9F, 0XA7, 0X66, 0XD7,
+  0X59, 0X59, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XDB, 0X1F, 0XFE, 0XFF, 0XDF, 0X7F, 0XF5, 0XFF, 0XB5,
+  0XA5, 0XFF, 0XE6, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0X30, 0X0C, 0X0C, 0X30, 0X00, 0X03, 0X00, 0X0C, 0X0C, 0X0C, 0X0C, 0X00, 0XCC, 0X03,
+  0X03, 0X03, 0X00, 0X30, 0X00, 0X03, 0X00, 0X30, 0X0C, 0X30, 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, 0X0F, 0XAE, 0XEB, 0XAE, 0XAE, 0XFA, 0XFB, 0XEE, 0XFF, 0XAE, 0XAE, 0XB7, 0X9B,
+  0X7D, 0X9D, 0X9D, 0XDE, 0X77, 0XB7, 0X5F, 0XFF, 0XFF, 0XDF, 0X7F, 0XF7, 0X4F, 0XFD, 0XFF, 0XFF,
+  0XFD, 0XFD, 0XB7, 0X77, 0X55, 0XFF, 0X56, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X0F, 0XF0, 0X3F, 0XF0, 0X00, 0XFC, 0X0C, 0X0C, 0X0C,
+  0X0C, 0X03, 0X03, 0X03, 0XFC, 0X03, 0X00, 0X3F, 0XF0, 0X03, 0XFC, 0X30, 0X0C, 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, 0X0F, 0XEF, 0XBA, 0XEE, 0XAE, 0XEB, 0XAE, 0XEB, 0XAE,
+  0XEA, 0XEA, 0XA9, 0XF7, 0X7E, 0XDA, 0XD9, 0XE5, 0XE7, 0X59, 0X97, 0XFF, 0XFF, 0XFF, 0XDD, 0XFD,
+  0XE3, 0XEF, 0X7F, 0XF7, 0X7F, 0X7D, 0X7F, 0XDD, 0XF9, 0X77, 0XF6, 0X90, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFC, 0X0C, 0X30, 0X30, 0X00, 0X00,
+  0X03, 0X0C, 0X0C, 0X0C, 0X0C, 0X03, 0XFF, 0X03, 0X03, 0X03, 0X00, 0X30, 0X00, 0X03, 0X00, 0X30,
+  0X0C, 0X30, 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, 0X0B, 0XEE, 0XEE, 0XAE, 0XEB,
+  0XBE, 0XEE, 0XEE, 0XEB, 0XAE, 0XAE, 0X77, 0XBE, 0X79, 0XB7, 0X67, 0XB7, 0X77, 0X7D, 0X5B, 0XFF,
+  0XFF, 0XFD, 0XFF, 0XFF, 0X70, 0XDF, 0X7F, 0XFF, 0XFD, 0XF7, 0X77, 0X7D, 0XD5, 0X76, 0XF7, 0X60,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X0C,
+  0X30, 0X30, 0X00, 0X03, 0X03, 0X0C, 0X0C, 0X0C, 0X0C, 0X03, 0X03, 0X03, 0X03, 0X03, 0X00, 0X30,
+  0X00, 0X03, 0X00, 0X30, 0X0C, 0X30, 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, 0X07,
+  0XEB, 0XBB, 0XBB, 0XAE, 0XEE, 0XEE, 0XFA, 0XBA, 0XEB, 0XA7, 0XB7, 0X6F, 0X6A, 0X67, 0X75, 0X75,
+  0X9E, 0XD9, 0XD7, 0XFF, 0XFF, 0XFF, 0XFF, 0XDF, 0XDD, 0X1F, 0XFF, 0XDF, 0X7D, 0XFF, 0XDF, 0XFD,
+  0X7D, 0X55, 0X95, 0XD0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X30, 0X03, 0X0C, 0X0C, 0X3F, 0XF0, 0X00, 0XFC, 0X03, 0XF0, 0X0C, 0X0C, 0X0C, 0X00, 0XC3,
+  0XFC, 0X03, 0XFC, 0X3F, 0XF0, 0X03, 0X00, 0X0F, 0XF0, 0X30, 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, 0X03, 0XEF, 0XBE, 0XBB, 0XAB, 0XBE, 0XEF, 0XEB, 0XEE, 0XEA, 0XAA, 0X6F, 0XFE,
+  0X67, 0XB6, 0X9B, 0X79, 0XED, 0XED, 0X97, 0XFF, 0XFF, 0XFF, 0X7D, 0XFD, 0XF7, 0X7F, 0XDF, 0XFF,
+  0XFF, 0X7C, 0XF7, 0X7F, 0XF5, 0X65, 0XD6, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XEA, 0XAB, 0XBB, 0XBA, 0XEA, 0XFB, 0XAB, 0XFA,
+  0XBA, 0XB7, 0X9F, 0XFF, 0X69, 0X6D, 0XF6, 0X5D, 0XD7, 0XDF, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XDF,
+  0XF7, 0X47, 0XDF, 0XDF, 0X7F, 0XDF, 0X7F, 0XF7, 0X7F, 0X55, 0XD5, 0X60, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XAF, 0XBE, 0XBB, 0XAE,
+  0XAE, 0XAA, 0XBA, 0XAB, 0XBD, 0X9A, 0XEF, 0XFF, 0XFD, 0XDB, 0X66, 0X6D, 0X9E, 0XFD, 0X5B, 0XFF,
+  0XFF, 0XFF, 0XF7, 0XFF, 0X7F, 0X73, 0XFF, 0XFF, 0XF7, 0X7D, 0XCD, 0XFF, 0X3D, 0X65, 0XE5, 0XA0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03,
+  0XEB, 0XEE, 0XEE, 0XEA, 0XEA, 0XFB, 0XAE, 0XEE, 0XAF, 0X6D, 0XFF, 0XFF, 0X6A, 0X76, 0XF7, 0X5F,
+  0X77, 0X7F, 0XD7, 0XFF, 0XFF, 0XFF, 0XFF, 0XF7, 0XF7, 0XF0, 0XF7, 0XF7, 0XFF, 0XDF, 0X77, 0XDF,
+  0XCF, 0XD7, 0X75, 0X64, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0XFC, 0X0F, 0XF0, 0X00, 0XC0, 0X03, 0XF0, 0X3F, 0XC0, 0XC3, 0X03, 0X03, 0XFC, 0X00,
+  0X00, 0XC0, 0X0C, 0X30, 0X30, 0X0F, 0XF0, 0X0F, 0XFC, 0X03, 0X00, 0X30, 0X30, 0X03, 0X03, 0XF0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X03, 0XEE, 0XEE, 0XEE, 0XEE, 0XBB, 0XBA, 0XEB, 0XAB, 0XFF, 0X9B, 0XFF, 0XFD,
+  0X97, 0X67, 0X67, 0X9B, 0X6F, 0XBF, 0X97, 0XFF, 0XFF, 0XF7, 0XFD, 0XFF, 0XFF, 0X77, 0X3F, 0XFF,
+  0XF7, 0XFD, 0XCF, 0X77, 0XFC, 0X17, 0XD9, 0X64, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X03, 0X0C, 0X0C, 0X03, 0X30, 0X0C, 0X0C, 0X30, 0X30, 0XC3,
+  0XC3, 0X0C, 0X03, 0X00, 0X00, 0XF0, 0X3C, 0X30, 0X30, 0X0C, 0X0C, 0X0C, 0X00, 0X0C, 0XC0, 0X30,
+  0XC0, 0X03, 0X0C, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XEF, 0XEA, 0XFE, 0XBB, 0XBE, 0XEE, 0XBA, 0XEA,
+  0XFB, 0XF6, 0XFF, 0XFA, 0X66, 0XD6, 0XDE, 0XD7, 0XD9, 0XFF, 0XD7, 0XDF, 0XFF, 0XFF, 0XFF, 0X7F,
+  0X7F, 0XDD, 0X3F, 0XF7, 0XFF, 0XDF, 0XF3, 0XDD, 0X33, 0XD7, 0XCD, 0X58, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X0C, 0X0C, 0X03, 0X30, 0X0C,
+  0X00, 0X30, 0X30, 0XC3, 0XC3, 0X0C, 0X00, 0X00, 0X00, 0XF0, 0X3C, 0X0C, 0XC0, 0X0C, 0X0C, 0X0C,
+  0X00, 0X0C, 0XC0, 0X33, 0X00, 0X03, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XEB, 0XAE, 0XEB, 0XAB,
+  0XBE, 0XEE, 0XEB, 0XAB, 0XAA, 0XFB, 0XFF, 0XD6, 0X66, 0XDB, 0X79, 0XF7, 0XDF, 0XF7, 0XDF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0X7F, 0XF7, 0X0F, 0XFF, 0XF7, 0X7F, 0X74, 0XFC, 0XF3, 0X1B, 0X95, 0X64,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X3F, 0X0F,
+  0XF0, 0X0C, 0X0C, 0X03, 0XF0, 0X3F, 0XC0, 0XC3, 0X33, 0X0C, 0X3F, 0X00, 0X00, 0XCC, 0XCC, 0X03,
+  0X00, 0X0F, 0XF0, 0X0F, 0XFC, 0X30, 0X30, 0X3C, 0XC0, 0X03, 0X03, 0XF0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0XFA, 0XEE, 0XBA, 0XEE, 0XFE, 0XEE, 0XEF, 0XFA, 0XBB, 0XAB, 0XEE, 0X66, 0X65, 0XB5, 0X9F, 0X6D,
+  0XDD, 0XFF, 0XD7, 0XFF, 0XFF, 0XFF, 0XFF, 0XF7, 0XDF, 0XFD, 0XC7, 0XFF, 0XFF, 0XF7, 0XFF, 0X77,
+  0XCC, 0X9B, 0XF3, 0X58, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X03, 0X0C, 0X30, 0X0F, 0XFC, 0X00, 0X0C, 0X30, 0X00, 0XC3, 0X0F, 0X0C, 0X03, 0X00,
+  0X00, 0XCC, 0XCC, 0X03, 0X00, 0X0C, 0X0C, 0X0C, 0X00, 0X3F, 0XF0, 0X30, 0XC0, 0X03, 0X00, 0X0C,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0XFA, 0XBE, 0XBB, 0XBB, 0XAA, 0XEE, 0XEF, 0XAB, 0XBA, 0XBE, 0X5A, 0X99,
+  0XDA, 0X7D, 0X7B, 0XFF, 0XFF, 0XFF, 0XDF, 0XF7, 0XFF, 0XFD, 0XFF, 0XFF, 0XFF, 0XFF, 0X43, 0XFD,
+  0XF7, 0XDF, 0X33, 0X3F, 0X33, 0X5F, 0XF1, 0X58, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X03, 0X0C, 0X30, 0X0C, 0X0C, 0X0C, 0X0C, 0X30, 0X00, 0XC3,
+  0X0F, 0X0C, 0X03, 0X00, 0X00, 0XC3, 0X0C, 0X03, 0X00, 0X0C, 0X0C, 0X0C, 0X00, 0X30, 0X30, 0X30,
+  0X30, 0X03, 0X0C, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFA, 0XBA, 0XBA, 0XEA, 0XFF, 0XAE, 0XBE, 0XBB,
+  0XAA, 0XBD, 0X6B, 0X99, 0X97, 0XFF, 0X57, 0XF7, 0XFF, 0XFF, 0XFF, 0XFF, 0X7F, 0XFF, 0X7F, 0XFD,
+  0XF7, 0XFF, 0XF0, 0XFF, 0XFF, 0XFF, 0XCF, 0X33, 0XCC, 0XDC, 0XFC, 0X94, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFC, 0X0C, 0X0C, 0X30, 0X03, 0X03,
+  0XF0, 0X30, 0X00, 0XC3, 0X03, 0X03, 0XFC, 0X0C, 0X00, 0XC3, 0X0C, 0X03, 0X00, 0X0F, 0XF0, 0X0F,
+  0XFC, 0XC0, 0X0C, 0X30, 0X30, 0X03, 0X03, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X7A, 0XEF, 0X7B, 0XAF,
+  0XBF, 0XBA, 0XEA, 0XEA, 0XBA, 0XBA, 0X67, 0X67, 0X67, 0XDF, 0X5F, 0XFF, 0XFD, 0XFF, 0XDF, 0XFF,
+  0XDF, 0XFF, 0XFF, 0XFF, 0XDF, 0XFF, 0XDC, 0XFD, 0XF7, 0XCF, 0XF3, 0X3C, 0XF3, 0X3F, 0XFC, 0XDC,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X3E, 0X7B, 0XBA, 0XFA, 0XEA, 0XBB, 0XBB, 0XBB, 0XAF, 0XE6, 0X6B, 0XB6, 0X65, 0XDF, 0XD7, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFC, 0XF7, 0XFF, 0XFF, 0XFF, 0XFF, 0XDF, 0XFC, 0X3F, 0XFC, 0XFF, 0X3F, 0XCF,
+  0X73, 0X0C, 0XFF, 0X15, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X3E, 0XB6, 0XBB, 0XAB, 0XAE, 0XEB, 0XBA, 0XEA, 0XAF, 0XE6, 0X6E, 0XD9,
+  0XD7, 0XEF, 0XF5, 0XFF, 0X7F, 0XFF, 0XFF, 0XFF, 0XF2, 0XFF, 0XFC, 0XFF, 0XF7, 0XFF, 0X3C, 0X3F,
+  0XFF, 0XF3, 0XF3, 0XCF, 0X34, 0X3F, 0XFC, 0X3D, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3E, 0X7D, 0XBA, 0XFB, 0XEB, 0XBA, 0XAF, 0X9B,
+  0XEE, 0XA7, 0X97, 0X97, 0X67, 0XFF, 0XFD, 0XFF, 0XFF, 0XFF, 0XFF, 0XDF, 0XFD, 0X9F, 0XCF, 0XDF,
+  0XFF, 0XFF, 0XFF, 0X0F, 0XFF, 0XFC, 0XFC, 0XFF, 0X3B, 0X0F, 0X7F, 0XD6, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF0, 0XFF, 0XC0, 0XFF, 0X00, 0XFF,
+  0X03, 0X03, 0X00, 0XFF, 0X00, 0X00, 0XC0, 0X0C, 0X0C, 0X3F, 0XC0, 0X03, 0XFC, 0X03, 0XFC, 0X0C,
+  0X0C, 0X0C, 0XFF, 0XC3, 0XFC, 0X03, 0XFC, 0X30, 0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3E, 0XBF, 0X6E, 0XBF,
+  0XAE, 0XBA, 0XBB, 0XBB, 0XDF, 0XA9, 0X9E, 0XDE, 0X77, 0XFE, 0XDF, 0XFF, 0XFF, 0XFD, 0XDC, 0XFF,
+  0XFD, 0XDB, 0XFF, 0XFC, 0XFF, 0X7F, 0XCF, 0XCF, 0XFF, 0XDF, 0XDF, 0X3C, 0X36, 0X3F, 0XFD, 0XCD,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X0C,
+  0X00, 0XC0, 0XC3, 0X00, 0XC3, 0XC3, 0X03, 0X00, 0XC0, 0X03, 0X30, 0X0F, 0X0C, 0X30, 0X30, 0X03,
+  0X03, 0X0C, 0X03, 0X0C, 0X0C, 0X0C, 0XC0, 0X03, 0X03, 0X03, 0X00, 0X30, 0X30, 0X30, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X1F, 0XBF, 0XEA, 0XBB, 0XAB, 0XBA, 0XEA, 0XBF, 0XEB, 0XA9, 0X9B, 0XA7, 0X97, 0XFE, 0XFB, 0XDF,
+  0XFF, 0XFF, 0XCF, 0XFD, 0XFF, 0X65, 0XFF, 0X7F, 0X7F, 0XF3, 0XFE, 0XC7, 0X7C, 0XFB, 0XE7, 0XEF,
+  0XDF, 0X3F, 0XCF, 0XDD, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X00, 0X0C, 0X00, 0XC0, 0XC3, 0X00, 0XC3, 0XC3, 0X03, 0X00, 0X00, 0X03, 0X30, 0X0F,
+  0X0C, 0X30, 0X30, 0X03, 0X03, 0X0C, 0X03, 0X03, 0X33, 0X30, 0XC0, 0X03, 0X03, 0X03, 0X00, 0X30,
+  0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X0F, 0X7F, 0XDE, 0X6A, 0XFB, 0XB6, 0XE7, 0XBF, 0XB7, 0X9E, 0X6F, 0X5F,
+  0XD7, 0XFF, 0XDD, 0XFF, 0XFF, 0XFD, 0XFF, 0X67, 0XFF, 0XF9, 0X9F, 0XB9, 0XF7, 0XFD, 0XBD, 0X7D,
+  0XFF, 0X99, 0XB8, 0XCC, 0X68, 0X3F, 0X7D, 0XCD, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF0, 0X0C, 0X00, 0XFF, 0X03, 0X00, 0XC3, 0X33, 0X03, 0X0F,
+  0XC0, 0X0C, 0X0C, 0X0C, 0XCC, 0X30, 0X30, 0X03, 0XFC, 0X0C, 0X03, 0X03, 0X33, 0X30, 0XFF, 0XC3,
+  0XFC, 0X03, 0XFC, 0X30, 0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X6F, 0XFB, 0XAA, 0XBF, 0XEF, 0XFD, 0XBD,
+  0X7A, 0XE6, 0X97, 0XDF, 0XF7, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X8E, 0X99, 0XFF, 0XFF, 0X66, 0XDA,
+  0X6F, 0X9E, 0XDB, 0XFC, 0X7F, 0X66, 0X33, 0XFF, 0X06, 0X1F, 0X7F, 0XDE, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X00, 0XC3, 0X03, 0X00,
+  0XC3, 0X0F, 0X03, 0X00, 0XC0, 0X0F, 0XFC, 0X0C, 0X3C, 0X30, 0X30, 0X03, 0X00, 0X0C, 0X03, 0X03,
+  0X33, 0X30, 0XC0, 0X03, 0X0C, 0X03, 0X00, 0X30, 0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XEE, 0X79,
+  0XFF, 0XBF, 0XFA, 0XF6, 0XAE, 0XEE, 0X5B, 0XEF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X3F, 0X7A,
+  0X5F, 0XFF, 0XF9, 0X66, 0X66, 0XE9, 0X6F, 0XDD, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0XDB, 0XFD, 0X75,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X0C,
+  0X00, 0XC3, 0X03, 0X00, 0XC3, 0X0F, 0X03, 0X00, 0XC0, 0X0C, 0X0C, 0X0C, 0X3C, 0X30, 0X30, 0X03,
+  0X00, 0X0C, 0X03, 0X00, 0XC0, 0XC0, 0XC0, 0X03, 0X0C, 0X03, 0X00, 0X30, 0X30, 0X30, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X03, 0X7F, 0XDF, 0XDA, 0X5E, 0X6F, 0XF6, 0XB7, 0X76, 0XE7, 0XA7, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0X5F, 0XED, 0XA7, 0XFF, 0XFF, 0XFF, 0XD9, 0X56, 0XFF, 0XFD, 0X4F, 0XF7, 0XFF, 0X3F,
+  0XFE, 0X57, 0X7F, 0XDE, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0XF0, 0X0C, 0X00, 0XC0, 0XC0, 0XFF, 0X03, 0X03, 0X00, 0XFF, 0X00, 0X30, 0X03, 0X0C,
+  0X0C, 0X3F, 0XC0, 0X03, 0X00, 0X03, 0XFC, 0X00, 0XC0, 0XC0, 0XFF, 0XC3, 0X03, 0X03, 0X00, 0X0F,
+  0XC0, 0X3F, 0XC3, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XEF, 0XF9, 0XD9, 0X99, 0X6B, 0X7A, 0X7B, 0XBA, 0X57, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X7F, 0XE6, 0XD9, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XDC, 0XF7,
+  0X53, 0XFF, 0X33, 0XF7, 0X77, 0X77, 0XF7, 0X75, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XDF, 0XDF, 0XFE, 0X9B, 0XEA, 0X76, 0XB6,
+  0XE7, 0XB7, 0XA7, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X73, 0XFF, 0XAA, 0X9F, 0XDF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XDF, 0XF4, 0XF3, 0XFF, 0X3F, 0X74, 0XD5, 0XFB, 0X5E, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF7, 0XFD,
+  0XE6, 0X9E, 0X6D, 0XEE, 0X6F, 0X7B, 0X5B, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X7B, 0XF9,
+  0X9D, 0X65, 0XFD, 0XFD, 0XF7, 0XFF, 0X7D, 0XFD, 0XD4, 0XFF, 0X73, 0XCC, 0XF6, 0X22, 0XDD, 0X75,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0XF7, 0XF7, 0XFF, 0X79, 0XF6, 0XDB, 0X6D, 0XF6, 0XE6, 0XE7, 0XFF, 0XE7, 0XFF, 0X7F, 0XFF,
+  0XFF, 0XFF, 0X7D, 0XFF, 0XBB, 0XBA, 0X5F, 0XDF, 0XFF, 0XFF, 0XFF, 0XF3, 0XFD, 0X3C, 0XFC, 0XCF,
+  0X77, 0X31, 0XFB, 0X7E, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XC0, 0X0C, 0X00, 0XC0, 0X00, 0XFF, 0X0C, 0X0C, 0X0C, 0X30, 0XC0, 0XC0, 0XFF, 0X00,
+  0X0C, 0X00, 0XC3, 0XFF, 0X00, 0XFF, 0XC0, 0XFF, 0X00, 0X0F, 0XFC, 0X03, 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, 0XFF, 0XFF, 0XFF, 0XB6, 0XE7, 0X9B, 0XAD, 0X9B, 0XEF, 0XD7, 0XFF,
+  0XDF, 0XFF, 0XFF, 0XFF, 0XFF, 0XEE, 0X7D, 0XFB, 0X79, 0X99, 0XA7, 0XFF, 0X7F, 0X7F, 0XFF, 0XDF,
+  0X77, 0X5F, 0XCF, 0XF3, 0X72, 0X4D, 0XDD, 0X65, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X30, 0X0C, 0X00, 0XC0, 0X03, 0X00, 0XCC, 0X0C, 0X0C, 0X30,
+  0XF0, 0XC3, 0X00, 0XC0, 0X0F, 0X03, 0XC3, 0X00, 0X00, 0X0C, 0X03, 0X00, 0XC0, 0X0C, 0X00, 0X0C,
+  0XC0, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3D, 0XF7, 0XFF, 0XB6, 0X79, 0XB6, 0XDE,
+  0XB9, 0XE7, 0XE7, 0XFF, 0X66, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XBB, 0X7F, 0XEE, 0X9B, 0X79, 0X7F,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0XCF, 0XFC, 0XCD, 0XD9, 0XC0, 0XF6, 0X76, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X30, 0X0C, 0X00, 0XC0, 0X03, 0X00,
+  0XC3, 0X33, 0X30, 0X30, 0XF0, 0XC3, 0X00, 0X00, 0X0F, 0X03, 0XC3, 0X00, 0X00, 0X0C, 0X03, 0X00,
+  0XC0, 0X0C, 0X00, 0X0C, 0XC0, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X7F, 0XFF,
+  0X7D, 0XBE, 0XDB, 0XAB, 0X77, 0XFB, 0XD7, 0XF6, 0XBD, 0XFF, 0XF7, 0XFF, 0XF7, 0XDF, 0X7D, 0XFF,
+  0XF7, 0XB9, 0XA6, 0X97, 0XDF, 0XF7, 0XFF, 0XFF, 0X37, 0X53, 0XF3, 0XFC, 0XDB, 0X30, 0XE7, 0X57,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X0C,
+  0X00, 0XC0, 0X03, 0X00, 0XC3, 0X33, 0X30, 0X30, 0XCC, 0XC3, 0X0F, 0XC0, 0X0C, 0XCC, 0XC3, 0XFF,
+  0X00, 0X0C, 0X03, 0X00, 0XC0, 0X0F, 0XFC, 0X30, 0X30, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0F, 0X3F, 0XFF, 0XBE, 0X6D, 0XB7, 0X7A, 0X7E, 0XFF, 0XFF, 0XFD, 0X5E, 0X9D, 0XFF, 0XF7,
+  0XFF, 0XFB, 0X9D, 0XFD, 0XFE, 0XDE, 0XEB, 0X69, 0XF7, 0X7F, 0XFF, 0XF7, 0XFF, 0XF3, 0XFF, 0XCF,
+  0XD1, 0XCC, 0XF5, 0X75, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0F, 0XFC, 0X0C, 0X00, 0XC0, 0X03, 0X00, 0XC3, 0X33, 0X30, 0X30, 0XC3, 0XC3, 0X00, 0XC0,
+  0X0C, 0XCC, 0XC3, 0X00, 0X00, 0X0C, 0X03, 0X00, 0XC0, 0X0C, 0X00, 0X3F, 0XF0, 0X0C, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XDF, 0X7F, 0X7F, 0X7F, 0X69, 0XF7, 0XAD, 0XFF, 0XFF, 0XFD,
+  0XED, 0XEF, 0XFD, 0XF7, 0X7F, 0XFD, 0XD9, 0XFF, 0XFF, 0XEB, 0X67, 0XA6, 0X5F, 0XFD, 0XFF, 0XFF,
+  0XDC, 0XD4, 0XF3, 0X37, 0X2E, 0X30, 0XE7, 0X76, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X0C, 0X00, 0XC0, 0X03, 0X00, 0XC0, 0XC0, 0XC0, 0X30,
+  0XC3, 0XC3, 0X00, 0XC0, 0X0C, 0X30, 0XC3, 0X00, 0X00, 0X0C, 0X03, 0X00, 0XC0, 0X0C, 0X00, 0X30,
+  0X30, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0B, 0XCF, 0XCD, 0XFF, 0X5F, 0X9F, 0XBB,
+  0X5F, 0XFF, 0XFF, 0XFD, 0X67, 0X5E, 0XEF, 0XFD, 0XFD, 0XFF, 0XF7, 0X77, 0XFF, 0XFE, 0XFB, 0X6E,
+  0XA5, 0XFF, 0XFF, 0XFF, 0XFF, 0X3C, 0XFF, 0XCF, 0XDD, 0XCC, 0XF9, 0X65, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0X03, 0X0F, 0XF0, 0XFF, 0X00, 0XFF,
+  0X00, 0XC0, 0XC0, 0X30, 0XC0, 0XC0, 0XFF, 0X00, 0X0C, 0X30, 0XC3, 0XFF, 0X00, 0X0C, 0X00, 0XFF,
+  0X00, 0X0F, 0XFC, 0XC0, 0X0C, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0XF7, 0XFD,
+  0XFF, 0XDF, 0X5D, 0XF9, 0XBB, 0XFF, 0XFD, 0XFF, 0X77, 0XB9, 0XF7, 0XBF, 0XDF, 0XDF, 0X67, 0X7F,
+  0XDC, 0XFD, 0XEF, 0XB6, 0X79, 0X9F, 0XF3, 0XFD, 0XEF, 0XCF, 0XDC, 0XF9, 0X09, 0XB0, 0X35, 0X97,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0X73, 0X7E, 0X7F, 0XDF, 0XDB, 0X7E, 0XDD, 0XFF, 0XFE, 0XFF, 0X9B, 0X67, 0XBF, 0XDF,
+  0XD9, 0XFB, 0XF7, 0XD7, 0XFF, 0X3F, 0XB6, 0XDB, 0X9B, 0X67, 0XFF, 0X1B, 0X7F, 0XFF, 0XFE, 0XCE,
+  0XCB, 0X7C, 0X3D, 0X75, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0X7F, 0XFB, 0XE7, 0XBF, 0X7E, 0XFF, 0XFD, 0XEF,
+  0XD7, 0XB7, 0X7B, 0XFF, 0X77, 0XDD, 0XD7, 0X79, 0XF7, 0XFF, 0XFB, 0X79, 0XAE, 0XA6, 0XFF, 0XFF,
+  0XFD, 0XB0, 0XFD, 0XFD, 0X8D, 0XE3, 0X3D, 0X76, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDC, 0XDF, 0XBF, 0XDF, 0XF7, 0X7F,
+  0XBF, 0X7F, 0XFB, 0X7F, 0XE6, 0X79, 0XB7, 0X77, 0XFD, 0XEF, 0XF7, 0XFE, 0X7D, 0XF3, 0XFF, 0XAE,
+  0XE6, 0X79, 0X9F, 0X76, 0X6B, 0X6C, 0X3E, 0XFD, 0XC2, 0X7C, 0X3E, 0X55, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X00, 0XC0, 0X3F, 0XC0, 0X3F,
+  0XC0, 0X00, 0X3F, 0X03, 0X03, 0X0F, 0XFC, 0X0C, 0X00, 0XC0, 0X0F, 0XFC, 0X3F, 0XC0, 0X00, 0XFF,
+  0X0F, 0XF0, 0X0C, 0X0C, 0X30, 0XFF, 0XC0, 0XFC, 0X00, 0X00, 0XC0, 0X03, 0X00, 0X30, 0X03, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XB7, 0XDF,
+  0XBF, 0X6F, 0XFE, 0XFF, 0XFF, 0XFF, 0XFD, 0XEF, 0XF5, 0XDB, 0X7E, 0XFB, 0XDD, 0X77, 0XE7, 0X2F,
+  0X6F, 0XFF, 0XFF, 0X7F, 0X7B, 0X9A, 0X6F, 0XEB, 0XB6, 0XFB, 0X0F, 0XB2, 0XD3, 0XF3, 0X3D, 0X76,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X03,
+  0X30, 0X30, 0X30, 0X30, 0X30, 0X00, 0XC0, 0XC3, 0X03, 0X0C, 0X00, 0X0C, 0X00, 0XC0, 0X0C, 0X00,
+  0X30, 0X30, 0X00, 0XC0, 0X0C, 0X0C, 0X0C, 0X0C, 0X30, 0X0C, 0X03, 0X03, 0X00, 0X00, 0XC0, 0X0C,
+  0XC0, 0X3C, 0X0F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X3B, 0XFB, 0X9F, 0XF7, 0XFF, 0XFF, 0XFF, 0XFD, 0XFD, 0XDD, 0XFD, 0XED, 0XE7, 0X7D,
+  0XFB, 0X5F, 0XF7, 0X97, 0XD7, 0XDF, 0XCF, 0XF7, 0XA7, 0XB7, 0XA6, 0XF6, 0X6F, 0XFF, 0XC3, 0XF2,
+  0XB0, 0X7F, 0X0F, 0X75, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X0C, 0X03, 0X30, 0X30, 0X30, 0X30, 0X30, 0X00, 0XC0, 0X03, 0X03, 0X0C, 0X00, 0X0C,
+  0X00, 0XC0, 0X0C, 0X00, 0X30, 0X30, 0X00, 0XC0, 0X0C, 0X0C, 0X0C, 0X0C, 0X30, 0X0C, 0X03, 0X00,
+  0X00, 0X00, 0XC0, 0X0C, 0XC0, 0X3C, 0X0F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X1D, 0XF7, 0XFF, 0X3A, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X7B,
+  0XFD, 0X76, 0X6F, 0XB7, 0XF7, 0X99, 0XFB, 0X5A, 0XF9, 0XFD, 0XFF, 0XFE, 0XDE, 0X6A, 0X5A, 0X7E,
+  0XEE, 0XDE, 0XF1, 0XFF, 0X78, 0XED, 0X0D, 0X5D, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFC, 0X0C, 0X0C, 0X3F, 0XC0, 0X30, 0X30, 0X00, 0X3F, 0X03,
+  0XFF, 0X0F, 0XFC, 0X0C, 0X00, 0XC0, 0X0F, 0XFC, 0X30, 0X30, 0X00, 0XFF, 0X0F, 0XF0, 0X0C, 0X0C,
+  0X30, 0X0C, 0X00, 0XFC, 0X00, 0X00, 0XC0, 0X30, 0X30, 0X33, 0X33, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0E, 0XFF, 0XDB, 0XFF, 0XB7, 0XFF,
+  0XFF, 0XFF, 0X7F, 0X9D, 0XFF, 0X6D, 0XD7, 0X7D, 0XFD, 0XDD, 0XFF, 0X99, 0X7E, 0X7F, 0XFF, 0XFF,
+  0XAB, 0XB7, 0XB7, 0XBF, 0X67, 0XBF, 0XFF, 0X73, 0X9C, 0X3F, 0XCB, 0X74, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X0F, 0XFC, 0X30, 0XC0, 0X30,
+  0X33, 0XC0, 0X00, 0XC3, 0X03, 0X0C, 0X00, 0X0C, 0X00, 0XC0, 0X0C, 0X00, 0X30, 0X30, 0X00, 0XC0,
+  0X0C, 0X30, 0X0C, 0X0C, 0X30, 0X0C, 0X00, 0X03, 0X00, 0X00, 0XC0, 0X3F, 0XF0, 0X33, 0X33, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X07, 0X7F,
+  0X3B, 0XDD, 0XDF, 0X7F, 0XFF, 0XFF, 0XF7, 0XDE, 0XDF, 0X5D, 0XBD, 0XFB, 0X7D, 0XF7, 0XFF, 0X59,
+  0XAF, 0X5F, 0X7F, 0X3D, 0XB7, 0X6A, 0XA9, 0X9B, 0XEB, 0XE6, 0X73, 0XCD, 0XBD, 0XFB, 0X07, 0X5C,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X0C,
+  0X0C, 0X30, 0XC0, 0X30, 0X30, 0X00, 0XC0, 0XC3, 0X03, 0X0C, 0X00, 0X0C, 0X00, 0XC0, 0X0C, 0X00,
+  0X30, 0X30, 0X00, 0XC0, 0X0C, 0X30, 0X0C, 0X0C, 0X30, 0X0C, 0X03, 0X03, 0X00, 0X00, 0XC0, 0X30,
+  0X30, 0X30, 0XC3, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X01, 0XAF, 0XF6, 0XFF, 0XEF, 0XF5, 0XFF, 0XDF, 0X7F, 0XF7, 0XBF, 0XDD, 0X5B, 0X77,
+  0XFE, 0X6F, 0X7F, 0X66, 0X57, 0XE7, 0XDF, 0XFF, 0XFE, 0XBD, 0XDB, 0XB6, 0XFD, 0XFF, 0XBC, 0XFB,
+  0X6E, 0X3F, 0XC7, 0X74, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X0C, 0X30, 0X03, 0X30, 0X30, 0X3F, 0XC0, 0X00, 0X3F, 0X03, 0X03, 0X0F, 0XFC, 0X0F,
+  0XF0, 0XFF, 0X0F, 0XFC, 0X3F, 0XC0, 0X00, 0XC0, 0X0C, 0X0C, 0X03, 0XF0, 0X30, 0X0C, 0X00, 0XFC,
+  0X0C, 0X00, 0XC0, 0XC0, 0X0C, 0X30, 0XC3, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X02, 0XDD, 0XDE, 0X7F, 0X7B, 0XFF, 0X7F, 0XDF, 0XFF, 0XF7,
+  0X77, 0XDF, 0X77, 0XFF, 0X7D, 0XDD, 0XFF, 0X66, 0X6A, 0XF6, 0XFD, 0XFF, 0XDF, 0XDA, 0X9E, 0X6A,
+  0X7E, 0X7F, 0XEF, 0X3C, 0XB6, 0X3F, 0X0B, 0X74, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X7B, 0X73, 0XBF, 0XEF, 0XDF,
+  0XFD, 0XDF, 0XF7, 0XFD, 0XDF, 0XF7, 0X7B, 0X77, 0XDF, 0X7F, 0XFF, 0X99, 0X95, 0XBD, 0X7F, 0XCF,
+  0XFB, 0XF7, 0XB6, 0XDF, 0X9F, 0XE7, 0XFF, 0XCF, 0X6F, 0XCF, 0XD3, 0X70, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X9B,
+  0X7F, 0X6D, 0XF7, 0XFF, 0X5F, 0XEB, 0XFF, 0X7D, 0XED, 0XF7, 0X59, 0XFF, 0XFF, 0X7F, 0X7F, 0X6E,
+  0X69, 0X9F, 0X9F, 0XFF, 0XFF, 0XBA, 0XEB, 0XA9, 0XEB, 0XFF, 0XBF, 0XF3, 0XD9, 0X8F, 0X73, 0XF0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X36, 0XDF, 0XDF, 0XFE, 0XF3, 0XFD, 0XFD, 0XFF, 0XFF, 0X77, 0XFB, 0XD7, 0X7F,
+  0XFF, 0XD7, 0XFF, 0X99, 0X96, 0X6B, 0XD5, 0XFF, 0XCF, 0XFF, 0X6D, 0XDA, 0XD9, 0XFB, 0X7F, 0X3C,
+  0XDB, 0XFF, 0XCC, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XC0, 0X0F, 0XF0, 0X30, 0X03, 0X0C, 0X3F, 0XC0, 0X3F, 0XF0, 0XFF, 0X00, 0X00, 0XC0,
+  0X0C, 0X0C, 0X3F, 0XC0, 0X00, 0X3F, 0X03, 0X03, 0X03, 0XFF, 0X0F, 0XF0, 0X30, 0X0F, 0XC0, 0XC0,
+  0XC3, 0XFF, 0X0F, 0XF0, 0X00, 0X3F, 0XC0, 0XC0, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0D, 0XB7, 0XEB, 0XCF, 0XFF, 0XF7, 0XDF, 0XFD, 0XFF,
+  0X9E, 0X7F, 0XDB, 0XFF, 0XFF, 0XFF, 0XFF, 0X6A, 0X69, 0X97, 0XE9, 0X7F, 0XFF, 0XF7, 0XEE, 0X9D,
+  0XBA, 0XBF, 0XF3, 0XF3, 0X37, 0X67, 0X8C, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X30, 0X0C, 0X0C, 0X3C, 0X0F, 0X0C, 0X30, 0X30, 0X30, 0X00,
+  0XC0, 0XC0, 0X03, 0X30, 0X0F, 0X0C, 0X30, 0X30, 0X00, 0XC0, 0XC3, 0X03, 0X03, 0X00, 0X0C, 0X0C,
+  0X30, 0X30, 0X30, 0XC0, 0XC3, 0X00, 0X0C, 0X0C, 0X00, 0X30, 0X30, 0XC0, 0XC0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X09, 0X9D, 0XCD, 0XFE, 0X7F,
+  0XFD, 0XFF, 0X7F, 0XDF, 0XF7, 0XFF, 0XF7, 0X7F, 0XFF, 0XFF, 0XFF, 0X97, 0X9A, 0X69, 0XFE, 0X9F,
+  0XF3, 0XFF, 0XF9, 0XEB, 0X9D, 0XDF, 0XBF, 0XFF, 0X0D, 0XEC, 0XCC, 0XF0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X30, 0X0C, 0X0C, 0X3C, 0X0F, 0X0C,
+  0X30, 0X30, 0X30, 0X00, 0XC0, 0XC0, 0X03, 0X30, 0X0F, 0X0C, 0X30, 0X30, 0X00, 0XC0, 0X03, 0X03,
+  0X03, 0X00, 0X0C, 0X0C, 0X30, 0X30, 0X00, 0XC0, 0XC3, 0X00, 0X0C, 0X0C, 0X00, 0X30, 0X30, 0X33,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01,
+  0XE5, 0XFE, 0XFD, 0XFF, 0X3F, 0XDF, 0XFF, 0XFF, 0XF7, 0X7F, 0XF7, 0XFF, 0XFF, 0XFF, 0XFF, 0XAE,
+  0X6D, 0X99, 0XBE, 0X55, 0XFF, 0XFF, 0XCF, 0XED, 0XAA, 0XA6, 0XFF, 0XCF, 0XC3, 0X9C, 0XCC, 0X30,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X0C,
+  0X0C, 0X33, 0X33, 0X0C, 0X3F, 0XC0, 0X3F, 0XF0, 0XC0, 0XC0, 0X0C, 0X0C, 0X0C, 0XCC, 0X30, 0X30,
+  0X00, 0XC0, 0X03, 0XFF, 0X03, 0XFF, 0X0F, 0XF0, 0X30, 0X0F, 0XC0, 0XFF, 0XC3, 0XFF, 0X0C, 0X0C,
+  0X00, 0X3F, 0XC0, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X5E, 0X7F, 0X7F, 0XAF, 0XF7, 0XFD, 0XFF, 0XF7, 0XFF, 0XDF, 0XFD, 0XFF,
+  0XFF, 0XFF, 0XFD, 0XE6, 0XE6, 0XE6, 0X5F, 0X9A, 0X7F, 0XCF, 0XFF, 0XEB, 0X77, 0X6D, 0XB3, 0XFF,
+  0X33, 0XEC, 0X43, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0F, 0XFC, 0X0C, 0X0C, 0X33, 0X33, 0X0C, 0X30, 0XC0, 0X30, 0X00, 0XC0, 0XC0, 0X0F, 0XFC,
+  0X0C, 0X3C, 0X30, 0X30, 0X00, 0XC0, 0X03, 0X03, 0X03, 0X00, 0X0C, 0X30, 0X30, 0X00, 0X30, 0XC0,
+  0XC3, 0X00, 0X0C, 0X0C, 0X00, 0X30, 0X30, 0X0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDB, 0X7F, 0X3F, 0XDF, 0X7F, 0X3F, 0XF7, 0XFD,
+  0XFD, 0XFD, 0XFF, 0XFF, 0XFF, 0XCF, 0XFF, 0XEE, 0XDA, 0X66, 0X6B, 0XE6, 0X5F, 0XFF, 0X72, 0X7E,
+  0XAA, 0XEB, 0XBF, 0XFC, 0XF1, 0XDF, 0X8F, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X0C, 0X0C, 0X30, 0XC3, 0X0C, 0X30, 0XC0, 0X30, 0X00,
+  0XC0, 0XC0, 0X0C, 0X0C, 0X0C, 0X3C, 0X30, 0X30, 0X00, 0XC0, 0XC3, 0X03, 0X03, 0X00, 0X0C, 0X30,
+  0X30, 0X30, 0X30, 0XC0, 0XC3, 0X00, 0X0C, 0X0C, 0X00, 0X30, 0X30, 0X0C, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X35, 0X9F, 0XF7, 0XF7,
+  0X9C, 0XDD, 0XFF, 0XFF, 0X7F, 0X5F, 0X7F, 0XDF, 0XF3, 0XFF, 0XFE, 0XF7, 0XEE, 0X66, 0X65, 0XF9,
+  0XA5, 0XFF, 0XFF, 0XE6, 0XDD, 0XB6, 0XDF, 0X3F, 0XCC, 0XFD, 0XC0, 0XF0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X30, 0X03, 0X0F, 0XF0, 0X30, 0XC3, 0X0C,
+  0X30, 0X30, 0X3F, 0XF0, 0XFF, 0X00, 0X30, 0X03, 0X0C, 0X0C, 0X3F, 0XC0, 0X00, 0X3F, 0X03, 0X03,
+  0X03, 0XFF, 0X0C, 0X0C, 0X30, 0X0F, 0XC0, 0XC0, 0XC3, 0XFF, 0X0F, 0XF0, 0X00, 0X3F, 0XC0, 0X0C,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X06, 0XDB, 0XF2, 0XFB, 0XE7, 0XFF, 0XDF, 0XFF, 0XFF, 0XFF, 0XFD, 0XFF, 0X7F, 0XDF, 0XF7, 0X7F,
+  0X9B, 0X99, 0X9A, 0XBE, 0X66, 0X7F, 0XFC, 0XFF, 0X7A, 0XFB, 0XBE, 0XFF, 0XFC, 0X32, 0XCF, 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, 0X09, 0XB5, 0XFE, 0X7D, 0XFA, 0XFF, 0XFF, 0XFF, 0XF7, 0XF7, 0XFF, 0XF7,
+  0XDF, 0XEF, 0XEF, 0XAF, 0XF9, 0XEA, 0X65, 0X6F, 0X66, 0X95, 0XFF, 0X2E, 0XEE, 0X77, 0X7B, 0X73,
+  0XCF, 0X3D, 0X41, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X66, 0XFC, 0XEF, 0X99, 0XBD, 0X7F, 0XFF,
+  0XFF, 0XF7, 0X3F, 0XFD, 0XBF, 0XDF, 0XDF, 0XDA, 0XF6, 0X9D, 0X9A, 0X6F, 0XE7, 0X6A, 0X7F, 0XCF,
+  0X99, 0XBB, 0XBD, 0XEF, 0XFC, 0XC3, 0XC3, 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, 0XDE, 0X6F, 0X25,
+  0XED, 0X9E, 0X9F, 0XFF, 0XFC, 0XFC, 0XFF, 0X7E, 0X66, 0XF7, 0XBF, 0XE7, 0XAD, 0XE9, 0XA6, 0X97,
+  0XFA, 0X76, 0XDF, 0XCD, 0XFB, 0XEE, 0X6F, 0XD8, 0XFF, 0XD1, 0XC1, 0X80, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X3F, 0XF0, 0X3F, 0XC0, 0XFF,
+  0X03, 0X00, 0X0F, 0XFC, 0X00, 0XFF, 0X03, 0XFC, 0X0F, 0XF0, 0X00, 0X30, 0X03, 0X30, 0X30, 0X03,
+  0XFC, 0X03, 0XFF, 0X00, 0XC0, 0X30, 0X30, 0XFF, 0XC3, 0X0F, 0XF0, 0X30, 0X30, 0X30, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X37, 0X7F, 0XF6, 0XF6, 0X99, 0X9F, 0X7F, 0XFF, 0XFF, 0XCF, 0XFF, 0X9A, 0X6E, 0XF5, 0XF9,
+  0XBA, 0X9D, 0X99, 0X99, 0XF6, 0X66, 0X6F, 0XFE, 0X66, 0X6E, 0XEE, 0XEF, 0XFF, 0XF3, 0X02, 0XC0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X30,
+  0X00, 0XC0, 0X30, 0XC0, 0XC3, 0X00, 0X0C, 0X00, 0X00, 0XC0, 0X0C, 0X03, 0X0C, 0X0C, 0X00, 0X3C,
+  0X0F, 0X30, 0X30, 0X03, 0X03, 0X03, 0X00, 0X03, 0X30, 0X30, 0X30, 0X0C, 0X03, 0X0C, 0X00, 0X30,
+  0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X26, 0XE6, 0XFE, 0X7B, 0X6B, 0XF7, 0XF7, 0XFF, 0XFF, 0X3C, 0XCF,
+  0XE5, 0XBF, 0XDA, 0X7E, 0XDF, 0X6A, 0XA6, 0X66, 0X7D, 0XB9, 0XD9, 0XFF, 0XEF, 0X67, 0XD9, 0XFE,
+  0X7F, 0XFF, 0X32, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X0C, 0X30, 0X00, 0XC0, 0X30, 0XC0, 0XC3, 0X00, 0X0C, 0X00, 0X00, 0XC0, 0X0C, 0X03,
+  0X0C, 0X0C, 0X00, 0X3C, 0X0F, 0X0C, 0XC0, 0X03, 0X03, 0X03, 0X00, 0X03, 0X30, 0X30, 0X30, 0X0C,
+  0X03, 0X0C, 0X00, 0X30, 0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0D, 0X9D, 0XFC, 0XAC, 0X9D, 0XBD, 0XFF,
+  0XFF, 0XFF, 0XFD, 0XFD, 0XFF, 0XF6, 0X99, 0XBF, 0X69, 0XB6, 0X76, 0X69, 0XAF, 0X9E, 0XAD, 0X9F,
+  0XED, 0XBA, 0X7E, 0X99, 0XFF, 0XFF, 0X03, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X3F, 0XF0, 0XC0, 0X30, 0XFF, 0X03, 0X00, 0X0F, 0XFC,
+  0X00, 0XFF, 0X0C, 0X03, 0X0F, 0XF0, 0X00, 0X33, 0X33, 0X03, 0X00, 0X03, 0XFC, 0X03, 0XFF, 0X0C,
+  0X0C, 0X30, 0X30, 0X0C, 0X03, 0X0F, 0XF0, 0X30, 0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X67, 0X7F,
+  0XDF, 0XE9, 0X9E, 0X7C, 0XFF, 0XFD, 0XCF, 0X3F, 0XFF, 0XE6, 0X6A, 0X5F, 0XFB, 0XBB, 0X6A, 0X66,
+  0X5B, 0XE7, 0X5A, 0XD9, 0XFF, 0XD6, 0XE7, 0XEF, 0X9D, 0XFF, 0X3C, 0XC0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30, 0X00, 0XC0, 0X30, 0XC0,
+  0X03, 0X00, 0X0C, 0X00, 0X00, 0XC0, 0X0C, 0X03, 0X0C, 0X30, 0X00, 0X33, 0X33, 0X03, 0X00, 0X03,
+  0X03, 0X03, 0X00, 0X0F, 0XFC, 0X30, 0X30, 0X0C, 0X03, 0X0C, 0X00, 0X30, 0X30, 0X30, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XDA, 0XEF, 0XD9, 0X35, 0XAD, 0X93, 0XFF, 0XFF, 0XAB, 0XBC, 0XB9, 0X9A, 0XB6, 0XE7,
+  0XD9, 0X9E, 0X66, 0XD9, 0X99, 0XFA, 0XB7, 0X69, 0X9F, 0XF9, 0XBB, 0X9B, 0XAF, 0XFC, 0XD0, 0XD0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30,
+  0X00, 0XC0, 0X30, 0XC0, 0X03, 0X00, 0X0C, 0X00, 0X00, 0XC0, 0X0C, 0X03, 0X0C, 0X30, 0X00, 0X30,
+  0XC3, 0X03, 0X00, 0X03, 0X03, 0X03, 0X00, 0X0C, 0X0C, 0X30, 0X30, 0X0C, 0X03, 0X0C, 0X00, 0X30,
+  0X30, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XF9, 0X67, 0XF7, 0XCE, 0X5A, 0XFC, 0XCF, 0XFF, 0XDE, 0X5F,
+  0X7A, 0XE7, 0X69, 0X69, 0XFE, 0XAE, 0XAD, 0XB6, 0X66, 0X7D, 0X66, 0XDE, 0XE6, 0XFF, 0X79, 0XF9,
+  0XFB, 0X30, 0X7C, 0XB0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X00, 0X3F, 0XF0, 0X3F, 0XC0, 0XC0, 0X03, 0XFC, 0X0F, 0XFC, 0X00, 0XC0, 0X03, 0XFC,
+  0X0C, 0X0C, 0X00, 0X30, 0XC3, 0X03, 0X00, 0X03, 0XFC, 0X03, 0XFF, 0X30, 0X03, 0X0F, 0XC0, 0X0C,
+  0X03, 0X0C, 0X00, 0X0F, 0XC0, 0X3F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0D, 0XBD, 0XC0, 0XF3, 0XAB, 0XFF,
+  0X3F, 0XFB, 0XF9, 0XEB, 0XD9, 0XF6, 0XAD, 0XA5, 0XFD, 0XD9, 0XDA, 0X69, 0X99, 0XAE, 0XBB, 0X6D,
+  0X9A, 0XFF, 0XA7, 0XAE, 0XDC, 0XFA, 0XC0, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X5B,
+  0X00, 0XFC, 0X56, 0XD7, 0XC9, 0XFE, 0XFE, 0XC4, 0XE7, 0X7E, 0X59, 0X9A, 0X7F, 0XAE, 0XA9, 0X99,
+  0XA6, 0X5F, 0X56, 0X9B, 0XDD, 0X9B, 0XFE, 0X7C, 0XFF, 0XDD, 0XBC, 0XB0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0XFF, 0X00, 0XFF, 0XF6, 0XF7, 0XF3, 0XFF, 0X7E, 0X6F, 0X2E, 0X6E, 0X6E, 0X6D,
+  0X9F, 0XD6, 0X76, 0XD9, 0X99, 0X9B, 0XE9, 0XE6, 0XBA, 0XED, 0XBF, 0XBF, 0XFF, 0XE6, 0XC3, 0XF0,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XBF, 0XC9, 0XFD, 0XFC, 0XBF, 0XFF, 0XFF,
+  0X7E, 0X67, 0XE6, 0X9A, 0X67, 0XFB, 0X69, 0X9A, 0X99, 0X99, 0XF6, 0X6D, 0X9D, 0X9B, 0XDB, 0XDF,
+  0XF3, 0X7B, 0X3C, 0X70, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0F, 0XF0, 0X30, 0X00, 0XC0, 0XC3, 0X00, 0X30, 0X0C, 0X00, 0X3F, 0XC0, 0XFF, 0XC0, 0X00,
+  0XC0, 0X30, 0X30, 0X3F, 0XC0, 0X03, 0X00, 0X30, 0XC0, 0XC0, 0X03, 0X00, 0X3F, 0XC0, 0X30, 0XC0,
+  0X0C, 0XFF, 0XC0, 0XC0, 0XC0, 0X3F, 0XF0, 0X3F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFD, 0XFF,
+  0XFD, 0XDF, 0XFF, 0XFF, 0XFD, 0XDB, 0XDA, 0XE9, 0X99, 0XF9, 0XB7, 0X99, 0XD9, 0X99, 0XBE, 0X7B,
+  0X7B, 0XFD, 0XA7, 0XFB, 0XEF, 0XE6, 0XC3, 0X3C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X30, 0X00, 0XC0, 0XC3, 0XC0, 0XF0, 0X33, 0X00, 0XC0,
+  0X30, 0XC0, 0X00, 0X03, 0X30, 0X3C, 0X30, 0X30, 0X30, 0X03, 0XC0, 0XF0, 0XC0, 0XC0, 0X0C, 0XC0,
+  0X30, 0X30, 0X30, 0XC0, 0X0C, 0X0C, 0X00, 0XC0, 0XC0, 0X03, 0X00, 0XC0, 0X30, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X3F, 0XFF, 0XDB, 0XFF, 0XB7, 0XBF, 0XFF, 0XFF, 0X25, 0XF5, 0X99, 0XA6, 0X7E, 0X9A, 0XA6,
+  0X99, 0X96, 0X6F, 0X66, 0XE7, 0X9A, 0X7E, 0X79, 0XDC, 0XED, 0XB3, 0X3C, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X0C, 0X30, 0X00, 0XC0, 0XC3, 0XC0,
+  0XF0, 0X33, 0X00, 0XC0, 0X00, 0XC0, 0X00, 0X03, 0X30, 0X3C, 0X30, 0X30, 0X30, 0X03, 0XC0, 0XF0,
+  0X33, 0X00, 0X0C, 0XC0, 0X30, 0X30, 0X30, 0XC0, 0X0C, 0X0C, 0X00, 0X33, 0X00, 0X03, 0X00, 0XC0,
+  0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X3E, 0XFF, 0XD9, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF6, 0XBA, 0X9E,
+  0X59, 0X9F, 0X66, 0X7B, 0X66, 0X69, 0X9B, 0X9B, 0X9E, 0X7B, 0XA6, 0XBF, 0XFF, 0X36, 0XCC, 0XF8,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X30,
+  0X00, 0XC0, 0XC3, 0X33, 0X30, 0XC0, 0XC0, 0XC3, 0XF0, 0XFF, 0XC0, 0X0C, 0X0C, 0X33, 0X30, 0X30,
+  0X30, 0X03, 0X33, 0X30, 0X0C, 0X00, 0X30, 0X30, 0X3F, 0XC0, 0X30, 0XC0, 0X0C, 0X0C, 0X00, 0X0C,
+  0X00, 0X03, 0X00, 0XC0, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X2B, 0XFF, 0XFD, 0X9F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XF2, 0X5F, 0X69, 0XA6, 0X67, 0XF9, 0XA5, 0XE9, 0X96, 0X65, 0XF9, 0XEE, 0XE7, 0X6D, 0X9E,
+  0X37, 0XEC, 0XF3, 0X3C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X00, 0X30, 0X00, 0XC0, 0XC3, 0X33, 0X30, 0XFF, 0XC0, 0XC0, 0X30, 0XC0, 0X00, 0X0F,
+  0XFC, 0X30, 0XF0, 0X30, 0X30, 0X03, 0X33, 0X30, 0X0C, 0X00, 0X3F, 0XF0, 0X30, 0X30, 0X30, 0XC0,
+  0X0C, 0X0C, 0X00, 0X0C, 0X00, 0X03, 0X00, 0XC0, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X2F, 0XBF, 0XFF,
+  0X67, 0XF7, 0XFF, 0XFF, 0XFF, 0XF9, 0X9B, 0X9B, 0X69, 0X9B, 0XF6, 0X9A, 0X96, 0X99, 0X9A, 0XB6,
+  0X66, 0X6F, 0X9F, 0XED, 0XFB, 0X3B, 0XC2, 0X34, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30, 0X00, 0XC0, 0XC3, 0X0C, 0X30, 0XC0, 0XC0, 0XC0,
+  0X30, 0XC0, 0X00, 0X0C, 0X0C, 0X30, 0XF0, 0X30, 0X30, 0X03, 0X0C, 0X30, 0X0C, 0X00, 0X30, 0X30,
+  0X30, 0X30, 0X30, 0XC0, 0X0C, 0X0C, 0X00, 0X0C, 0X00, 0X03, 0X00, 0XC0, 0X30, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0E, 0XEF, 0XFF, 0XD9, 0X6F, 0XFF, 0XFF, 0XFF, 0XFF, 0X67, 0XE6, 0X66, 0X65, 0XFE, 0X66,
+  0X6A, 0X79, 0X65, 0X6E, 0XEE, 0XD9, 0XEA, 0XBB, 0XCB, 0X37, 0X37, 0X3C, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X3F, 0XC0, 0X3F, 0X03, 0X0C,
+  0X33, 0X00, 0X30, 0X3F, 0XC0, 0XFF, 0XC0, 0X30, 0X03, 0X30, 0X30, 0X3F, 0XC0, 0X03, 0X0C, 0X30,
+  0X0C, 0X00, 0XC0, 0X0C, 0X3F, 0XC0, 0X30, 0XFF, 0X0C, 0X0C, 0X00, 0X0C, 0X00, 0X03, 0X00, 0X3F,
+  0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XEF, 0XFF, 0XFE, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0X26, 0XE6,
+  0X99, 0X96, 0X7F, 0X69, 0XE5, 0X99, 0X9A, 0X67, 0X9D, 0XBA, 0X9D, 0XF6, 0XFC, 0XFB, 0X32, 0X30,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0B, 0XBE, 0XFF, 0XFF, 0X9F, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XF9, 0X7E, 0X66, 0X69, 0X97, 0XE6, 0X6B, 0XA6, 0X65, 0X99, 0XEA, 0XED, 0XEE, 0XBD,
+  0XFF, 0X73, 0X37, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XBF, 0XFF,
+  0XFF, 0XFE, 0X81, 0XFF, 0XFF, 0XFF, 0XD6, 0XBD, 0X99, 0X96, 0X66, 0XF6, 0X76, 0X5A, 0X66, 0X69,
+  0XB7, 0X67, 0X9D, 0XBF, 0X8C, 0XEF, 0X32, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0XEF, 0XBF, 0XFF, 0XFF, 0X80, 0X07, 0X5F, 0XFF, 0XFD, 0X5F, 0X69, 0XA6, 0X59, 0X7E,
+  0X69, 0X99, 0X99, 0X9E, 0X6E, 0XBE, 0XEE, 0XDA, 0XF3, 0X33, 0X36, 0X70, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0XC3, 0X0C, 0X00, 0XC3, 0X03,
+  0XF0, 0X00, 0XC0, 0XC0, 0XC0, 0XC3, 0X00, 0X30, 0X0C, 0X00, 0XC0, 0XC0, 0X03, 0XF0, 0X3F, 0XC0,
+  0XFF, 0XC3, 0XFF, 0X03, 0XF0, 0X0C, 0X0C, 0X00, 0X03, 0X00, 0X03, 0X00, 0XC0, 0X0C, 0X00, 0X0C,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFE, 0XFF, 0XFF, 0XFE, 0XC0, 0X00, 0XFF, 0XFF, 0XFF, 0X27,
+  0X99, 0X99, 0XA5, 0X9E, 0X66, 0XE7, 0X66, 0XD9, 0X99, 0XE9, 0XE7, 0XBD, 0XFE, 0XDF, 0X33, 0X40,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0X03, 0XC3,
+  0X0F, 0X03, 0XC3, 0X0C, 0X0C, 0X00, 0XC0, 0XC0, 0XC0, 0XC3, 0XC0, 0XF0, 0X33, 0X00, 0XF0, 0XC0,
+  0X0C, 0X0C, 0X30, 0X30, 0XC0, 0X03, 0X00, 0X0C, 0X0C, 0X0C, 0X0C, 0X00, 0X03, 0X00, 0X0C, 0XC0,
+  0XF0, 0X3C, 0X00, 0X33, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XBF, 0XEF, 0XFF, 0XFE, 0XC0, 0X00,
+  0XBF, 0XFF, 0XFE, 0XD9, 0XE6, 0X66, 0X5A, 0X67, 0XD9, 0X9A, 0X99, 0XA6, 0X66, 0X9E, 0XBB, 0X6F,
+  0X7C, 0XA3, 0X26, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0F, 0X03, 0XC3, 0X0F, 0X03, 0XC3, 0X0C, 0X00, 0X00, 0XC0, 0XC0, 0XC0, 0XC3, 0XC0, 0XF0,
+  0X33, 0X00, 0XF0, 0XC0, 0X0C, 0X00, 0X30, 0X30, 0XC0, 0X03, 0X00, 0X0C, 0X00, 0X0C, 0X0C, 0X00,
+  0X03, 0X00, 0X0C, 0XC0, 0XF0, 0X3C, 0X00, 0X33, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X02, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XC0, 0X00, 0X3E, 0XFF, 0XFF, 0X66, 0XF9, 0XA6, 0X65, 0X9B, 0XF9, 0X99, 0X99, 0X9A,
+  0X79, 0XFD, 0XEE, 0XE9, 0XB3, 0XDC, 0XDD, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0XCC, 0XC3, 0X0C, 0XCC, 0XC3, 0X0C, 0X00, 0X00, 0XFF, 0XC0,
+  0XC0, 0XC3, 0X33, 0X30, 0XC0, 0XC0, 0XCC, 0XC0, 0X03, 0XF0, 0X3F, 0XC0, 0XFF, 0XC3, 0XFF, 0X0C,
+  0X00, 0X0F, 0XFC, 0X00, 0X03, 0X00, 0X30, 0X30, 0XCC, 0XCC, 0X00, 0XC0, 0XC0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XEF, 0XD0, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XFA, 0XFB, 0XFF, 0XFB, 0XC0, 0X00, 0XB7, 0X5F, 0XFF, 0XF9, 0X7E, 0X59, 0X9A, 0X65,
+  0X7D, 0XA7, 0X66, 0X76, 0X9A, 0X9A, 0XDD, 0XFF, 0XED, 0XAC, 0XCD, 0XC0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0XCC, 0XC3, 0X0C, 0XCC, 0XC3, 0X0C,
+  0X00, 0X00, 0XC0, 0XC0, 0XC0, 0XC3, 0X33, 0X30, 0XFF, 0XC0, 0XC3, 0XC0, 0X00, 0X0C, 0X30, 0X00,
+  0XC0, 0X03, 0X00, 0X0C, 0X00, 0X0C, 0X0C, 0X00, 0X03, 0X00, 0X3F, 0XF0, 0XCC, 0XCC, 0X00, 0XFF,
+  0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF,
+  0XFF, 0XD0, 0X00, 0X00, 0X00, 0X00, 0XEF, 0XEF, 0XFF, 0XFF, 0XC0, 0X00, 0X3F, 0XB7, 0XFF, 0XF2,
+  0X6F, 0X66, 0X65, 0X99, 0X9F, 0XDA, 0X9A, 0X66, 0X6F, 0X6D, 0XAF, 0X9F, 0XCE, 0XD3, 0X23, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X30, 0XC3,
+  0X0C, 0X30, 0XC3, 0X0C, 0X0C, 0X00, 0XC0, 0XC0, 0XC0, 0XC3, 0X0C, 0X30, 0XC0, 0XC0, 0XC3, 0XC0,
+  0X0C, 0X0C, 0X30, 0X00, 0XC0, 0X03, 0X00, 0X0C, 0X0C, 0X0C, 0X0C, 0X00, 0X03, 0X00, 0X30, 0X30,
+  0XC3, 0X0C, 0X00, 0XC0, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X03, 0XBB, 0XBE, 0XFF, 0X00, 0X00, 0X07, 0X1F, 0XFE, 0XFF, 0XBF, 0XFF, 0XC0, 0X00,
+  0X3F, 0X5D, 0X7F, 0XFF, 0X97, 0XD9, 0X99, 0X96, 0X67, 0XE9, 0X79, 0X9B, 0X66, 0X9A, 0X5F, 0XBC,
+  0XF7, 0X73, 0XB1, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X30, 0XC3, 0X0C, 0X30, 0XC3, 0X03, 0XF0, 0X00, 0XC0, 0XC0, 0X3F, 0X03, 0X0C, 0X33,
+  0X00, 0X30, 0XC0, 0XC0, 0X03, 0XF0, 0X30, 0X00, 0XFF, 0XC3, 0XFF, 0X03, 0XF0, 0X0C, 0X0C, 0X30,
+  0X03, 0X00, 0XC0, 0X0C, 0XC3, 0X0C, 0X03, 0X00, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFB, 0XFB, 0X67, 0XC0, 0X00, 0X3C, 0XFF, 0XEB, 0XBF,
+  0XFF, 0XFF, 0X80, 0X00, 0X3F, 0XEF, 0XE7, 0XFE, 0X5B, 0XED, 0X99, 0X99, 0X99, 0XFD, 0XA6, 0X66,
+  0X6E, 0X6D, 0XA9, 0XDF, 0X9A, 0XEB, 0X1F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XBF, 0XFB, 0XFB, 0XFC, 0X00,
+  0XC0, 0X3F, 0XFE, 0XFB, 0XBF, 0XFF, 0X00, 0X00, 0X3F, 0X7B, 0XF9, 0XFF, 0XA5, 0X7E, 0X66, 0X66,
+  0X66, 0X5F, 0XE6, 0X6A, 0X65, 0X9A, 0XE6, 0XFB, 0X65, 0XCC, 0XB3, 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, 0X07, 0X9E,
+  0XB7, 0XF7, 0XBF, 0X00, 0XCF, 0X1F, 0XFB, 0XEF, 0XFF, 0XFF, 0X80, 0X00, 0X3E, 0XF7, 0XFE, 0X5F,
+  0XDA, 0X7D, 0X99, 0X99, 0X66, 0X66, 0XF9, 0X9D, 0X9A, 0XE7, 0X7F, 0XF5, 0XAE, 0X9C, 0XD3, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X03, 0XEB, 0XFF, 0X7F, 0XFF, 0XD0, 0XCF, 0XFF, 0X3E, 0XFB, 0XFF, 0XFF, 0XC0, 0X00,
+  0X3D, 0XEF, 0XBE, 0XF7, 0XF5, 0X9F, 0X66, 0X66, 0X59, 0X99, 0X6F, 0X99, 0XA9, 0X9A, 0XDF, 0XFE,
+  0X59, 0XF3, 0X3F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0F, 0XF0, 0X3F, 0XC0, 0XC3, 0XFF, 0X0C, 0X0C, 0X0F, 0XF0, 0X03, 0XFF, 0X00, 0XFF, 0X00,
+  0X0C, 0X0C, 0X30, 0X30, 0X30, 0X03, 0X00, 0XC0, 0X30, 0X30, 0X0F, 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, 0X0B, 0XBD, 0XBB, 0XB9, 0XEF, 0XFC, 0XF0, 0XFF, 0X3E, 0XFB,
+  0XEF, 0XFF, 0XC0, 0X00, 0X3F, 0XDF, 0XFD, 0XFF, 0X7E, 0X67, 0X99, 0X99, 0XA5, 0X95, 0X9F, 0X6A,
+  0X59, 0XB9, 0XEF, 0XFF, 0XE7, 0X8C, 0XC3, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30, 0X30, 0XC3, 0X00, 0X0F, 0X0C, 0X0C, 0X0C, 0X00,
+  0X30, 0X03, 0X00, 0XC0, 0X0C, 0X0C, 0X30, 0X30, 0X3C, 0X0F, 0X03, 0X30, 0X3C, 0X30, 0X30, 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, 0X0F, 0X7B, 0XDB, 0XDD, 0XF7, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XBF, 0XFF, 0XFF, 0XFC, 0X00, 0X3E, 0XDF, 0XFD, 0XFF, 0XFF, 0XD9, 0XE6, 0X66,
+  0X59, 0X69, 0X97, 0XA7, 0XEB, 0X66, 0XBD, 0XBF, 0XFC, 0XC0, 0XCB, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30, 0X30, 0XC3, 0X00, 0X0F,
+  0X0C, 0X0C, 0X0C, 0X00, 0X30, 0X03, 0X00, 0XC0, 0X0C, 0X0C, 0X30, 0X30, 0X3C, 0X0F, 0X03, 0X30,
+  0X3C, 0X30, 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, 0X03, 0XE7,
+  0X79, 0X38, 0XEE, 0X7E, 0XD3, 0XFF, 0XFF, 0XBE, 0XFF, 0XFF, 0XFC, 0X00, 0X3D, 0XDF, 0XFE, 0XFF,
+  0XFF, 0XD9, 0XF9, 0X99, 0X99, 0X96, 0X66, 0XD7, 0XFD, 0XEF, 0XD9, 0XFF, 0XFF, 0XFC, 0X07, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF0, 0X3F,
+  0XC0, 0XC3, 0XFF, 0X0C, 0XCC, 0X0C, 0X0C, 0X00, 0X30, 0X03, 0X00, 0XC0, 0X0F, 0XFC, 0X30, 0X30,
+  0X33, 0X33, 0X0C, 0X0C, 0X33, 0X30, 0X0F, 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, 0XED, 0XB7, 0X7F, 0XF7, 0XF7, 0XCF, 0XFF, 0XFF, 0XFB, 0XBF, 0XFF, 0XFC, 0X00,
+  0X3F, 0XFF, 0XFD, 0XFF, 0XFF, 0XF6, 0X7E, 0X66, 0X66, 0X69, 0X99, 0X76, 0X66, 0X66, 0X66, 0X7D,
+  0XFF, 0XFF, 0X7F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0C, 0X00, 0X30, 0XC0, 0XC3, 0X00, 0X0C, 0X3C, 0X0C, 0X0C, 0X00, 0X30, 0X03, 0X00, 0XC0,
+  0X0C, 0X0C, 0X30, 0X30, 0X33, 0X33, 0X0F, 0XFC, 0X30, 0XF0, 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, 0XF6, 0X7E, 0XFF, 0X9F, 0X9F, 0X3F, 0XF0, 0XFE, 0XEF,
+  0X7F, 0XFF, 0XFF, 0XC3, 0XFF, 0XFF, 0XFD, 0XFF, 0XFF, 0XFE, 0X1E, 0X66, 0X66, 0X65, 0X66, 0X69,
+  0X99, 0X99, 0X9A, 0X7F, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30, 0XC0, 0XC3, 0X00, 0X0C, 0X3C, 0X0C, 0X0C, 0X00,
+  0X30, 0X03, 0X00, 0XC0, 0X0C, 0X0C, 0X30, 0X30, 0X30, 0XC3, 0X0C, 0X0C, 0X30, 0XF0, 0X30, 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, 0X3D, 0XE7, 0XFB, 0XFB, 0XFE,
+  0XFF, 0XFF, 0X3F, 0XEF, 0XFF, 0XFF, 0XFF, 0XCF, 0XFF, 0XFF, 0XFD, 0XFB, 0XFF, 0XFF, 0XE7, 0XD9,
+  0X99, 0X66, 0X9B, 0X9E, 0X9A, 0X66, 0X99, 0XBF, 0X99, 0X7F, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C, 0X00, 0X30, 0X30, 0XC3, 0XFF, 0X0C,
+  0X0C, 0X0F, 0XF0, 0X00, 0X30, 0X00, 0XFF, 0X00, 0X0C, 0X0C, 0X0F, 0XC0, 0X30, 0XC3, 0X30, 0X03,
+  0X30, 0X30, 0X0F, 0XC0, 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, 0X3F,
+  0XFE, 0XFF, 0XBD, 0XF4, 0XFF, 0XFF, 0XFF, 0XFE, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XF7,
+  0XFF, 0XFF, 0X9E, 0XE6, 0X66, 0X66, 0X5B, 0X66, 0X66, 0X69, 0X66, 0XE5, 0XFF, 0XFF, 0XFF, 0XFF,
+  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, 0X2F, 0XFB, 0X7B, 0XFF, 0XE7, 0XFF, 0XFF, 0XFF, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFD, 0XBF, 0XFF, 0XFF, 0XE5, 0X79, 0X99, 0X96, 0X65, 0X99, 0X99, 0X96, 0X69, 0X7F,
+  0XFF, 0XFF, 0XFF, 0X6F, 0XFF, 0XD0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XBE, 0XE7, 0X79, 0XFF, 0XFF, 0XBF, 0XFB, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0XDB, 0XFF, 0XFF, 0XF6, 0XBD, 0X99, 0X99, 0X9B, 0X66,
+  0XD9, 0XA9, 0XE6, 0XBF, 0X7F, 0XFF, 0X56, 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, 0X3B, 0XFD, 0XFF, 0XBC, 0X4F,
+  0XBF, 0XFF, 0XB7, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0XF7, 0XFF, 0XFF, 0XF7, 0X5F,
+  0X99, 0X9A, 0X65, 0X99, 0X6D, 0X9A, 0X59, 0X77, 0XFD, 0XD7, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3E,
+  0X64, 0X67, 0XDB, 0XDF, 0XFF, 0XFB, 0X7D, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0X6F,
+  0X7F, 0XFF, 0XF6, 0X67, 0X9A, 0X65, 0X9A, 0X69, 0X9A, 0X66, 0X66, 0XBF, 0X77, 0X7F, 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, 0X3D, 0XD2, 0X72, 0X7F, 0XBF, 0XFF, 0XFF, 0XDF, 0X76, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFD, 0XE7, 0XFF, 0XFF, 0XFD, 0XF7, 0XE5, 0X9A, 0X65, 0X96, 0X66, 0X99, 0XA5, 0XB7,
+  0X77, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFD, 0X6D, 0XFB, 0XFF, 0XFF, 0XEE, 0XF9, 0XED,
+  0XEF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0XDE, 0X7F, 0X7F, 0XFD, 0XD9, 0XF6, 0X65, 0X99, 0X9A,
+  0XD9, 0XD9, 0X99, 0XFF, 0XFF, 0X77, 0X7F, 0XFF, 0XFF, 0XFF, 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, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF7, 0X1D, 0XFB,
+  0XBB, 0XFF, 0XDF, 0X7D, 0XE7, 0XFF, 0XFF, 0XFE, 0XFF, 0XFF, 0XFE, 0X6D, 0XFF, 0XBF, 0XFE, 0X72,
+  0X7E, 0X66, 0X66, 0X66, 0X66, 0XA6, 0X66, 0XDD, 0XF7, 0XFF, 0XFD, 0XF7, 0XFF, 0XFF, 0XFF, 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,
+  0XFE, 0XF6, 0XE7, 0X6F, 0XFB, 0X9F, 0XB9, 0XD7, 0XDF, 0XBF, 0XEF, 0XB7, 0XDB, 0XFB, 0XFD, 0XD9,
+  0XFF, 0XBF, 0XFF, 0X7D, 0X9D, 0X99, 0X99, 0X99, 0XA6, 0X59, 0X97, 0XFF, 0XFF, 0XFF, 0XFF, 0XDF,
+  0XFD, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X3E, 0XEF, 0X76, 0X12, 0X77, 0XFF, 0X1E, 0XF8, 0XC7, 0X6B, 0XFF, 0XFE,
+  0XFF, 0XBF, 0XFE, 0X6D, 0XBF, 0X7F, 0XFF, 0X9F, 0X9F, 0X99, 0X99, 0X99, 0X9D, 0XB5, 0X9B, 0XFF,
+  0XFF, 0XF7, 0XDD, 0XFF, 0X77, 0XF7, 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, 0X2F, 0X51, 0XEC, 0XF9, 0XEE, 0XDE, 0XFF, 0XFD,
+  0XB7, 0XB5, 0XED, 0XBF, 0XFF, 0XFF, 0XFC, 0XDD, 0XFF, 0XBF, 0XFF, 0XDC, 0X5B, 0XD9, 0X99, 0X66,
+  0X66, 0X76, 0X6D, 0XFF, 0XFF, 0XFF, 0XFD, 0XF7, 0XFF, 0X7F, 0XFF, 0XFF, 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, 0X03, 0XFC, 0X0E, 0X1F,
+  0XDD, 0XB7, 0X4F, 0X6D, 0XED, 0XDF, 0X7B, 0X7B, 0XFF, 0XFF, 0XFF, 0X77, 0X7F, 0X7F, 0XFF, 0XE7,
+  0XB5, 0XF6, 0X66, 0X99, 0XD9, 0X99, 0X9D, 0X99, 0XFF, 0XFF, 0XFF, 0XF7, 0XDF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0E, 0X51, 0XD8, 0X7B, 0XDF, 0XB5, 0XFF, 0X93, 0XBE, 0XFD, 0X7F, 0XFF, 0XFF, 0XFD, 0X9F,
+  0X7F, 0XBF, 0XFF, 0XFD, 0X5A, 0X7D, 0X99, 0X66, 0X6D, 0X99, 0X96, 0X59, 0X97, 0XFF, 0XFF, 0XFF,
+  0XFD, 0XF7, 0X7F, 0XFF, 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, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XF0, 0XFE, 0XC6, 0X72, 0X7F, 0X3F, 0XD7, 0X27, 0X5F, 0XEF,
+  0XFF, 0XFF, 0XFF, 0X62, 0X7F, 0X7B, 0XFF, 0XFD, 0XB5, 0X9F, 0X99, 0X99, 0X97, 0XFD, 0X99, 0X97,
+  0X59, 0X5F, 0XFF, 0XFD, 0XFF, 0XFD, 0XFF, 0XFF, 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, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X17, 0XF0, 0X67, 0XF1, 0XDC, 0X7F, 0X7B, 0XC7,
+  0XFD, 0XFF, 0X3B, 0X7F, 0XBB, 0XFF, 0XFD, 0X77, 0X7F, 0XEF, 0XFF, 0XFF, 0X49, 0X9B, 0XD9, 0X99,
+  0X9B, 0XFF, 0XFD, 0XDD, 0X66, 0X65, 0X5F, 0XFF, 0XF7, 0X77, 0XDD, 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, 0X01, 0XC2, 0X42, 0X1E, 0XC7,
+  0X87, 0XBF, 0XFF, 0XFF, 0XFE, 0X7B, 0XE7, 0XDF, 0XFF, 0XFE, 0XFF, 0X5E, 0X7F, 0XDF, 0XEF, 0XFF,
+  0XE6, 0X65, 0XFE, 0X59, 0X7F, 0XFF, 0XFF, 0XFA, 0X66, 0X59, 0XA5, 0X7F, 0XFF, 0XD7, 0X7F, 0XFF,
+  0XFF, 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, 0X03, 0XED,
+  0X84, 0X1F, 0X09, 0XEF, 0XCF, 0X78, 0X6D, 0XF9, 0XEF, 0X47, 0X36, 0XFF, 0X7F, 0XFF, 0XFC, 0XF6,
+  0X7F, 0XBF, 0XFF, 0XFF, 0XFD, 0X97, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XE5, 0X96, 0X59, 0X95,
+  0XFF, 0XFD, 0X5D, 0XFF, 0XFF, 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, 0X07, 0XFF, 0XFF, 0XF9, 0X52, 0XFE, 0XFF, 0X7F, 0XFE, 0X7D, 0XF7, 0XDE, 0X6D, 0XFF,
+  0X9F, 0XEF, 0XFF, 0X5B, 0X7F, 0XFF, 0XEF, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XE5, 0XD6, 0X59, 0X57, 0XFF, 0XF7, 0X5F, 0XFF, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XB5, 0XEF, 0XFF, 0X7F, 0X59, 0XE7, 0XF1, 0X8F, 0XF7,
+  0XFF, 0XFF, 0XD6, 0XD7, 0XFF, 0XFF, 0XFC, 0X9D, 0X9F, 0XEF, 0XEE, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XC1, 0X3F, 0X7F, 0XF6, 0XA5, 0X5B, 0XFF, 0X77, 0XFF, 0XFF, 0XF0, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XBF, 0XDB, 0X6F, 0XFB, 0XDF,
+  0XFF, 0XB4, 0X1B, 0XEF, 0XFF, 0XBF, 0XB6, 0X6D, 0XBE, 0XDF, 0XEF, 0X5B, 0X6F, 0XDF, 0XEF, 0XBF,
+  0XFF, 0XFE, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X0C, 0X80, 0X3F, 0XDA, 0X99, 0X6F, 0XFF,
+  0X7F, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0A, 0X80, 0X02, 0XA0, 0X00, 0X00,
+  0X00, 0X01, 0X50, 0X00, 0X54, 0X00, 0X00, 0X00, 0X0A, 0X80, 0X02, 0XA0, 0X00, 0X00, 0X00, 0X05,
+  0X40, 0X01, 0X50, 0X00, 0X00, 0X00, 0X02, 0XA0, 0X00, 0XA8, 0X00, 0X00, 0X00, 0X05, 0X40, 0X01,
+  0X50, 0X00, 0X00, 0X00, 0XA8, 0X00, 0X2A, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF,
+  0XBF, 0XFD, 0X77, 0XFE, 0X7B, 0XFF, 0XB7, 0XFF, 0XF7, 0XFD, 0X7F, 0XFF, 0X7F, 0XFF, 0XFC, 0XB7,
+  0X6F, 0XEF, 0XFB, 0XFF, 0XFF, 0XFD, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X00,
+  0X7F, 0X76, 0X96, 0XBF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XA8,
+  0X2A, 0XAA, 0X00, 0X00, 0X00, 0X15, 0X55, 0X05, 0X55, 0X40, 0X00, 0X00, 0XAA, 0XA8, 0X2A, 0XAA,
+  0X00, 0X00, 0X00, 0X55, 0X54, 0X15, 0X55, 0X00, 0X00, 0X00, 0X2A, 0XAA, 0X0A, 0XAA, 0X80, 0X00,
+  0X00, 0X55, 0X54, 0X15, 0X55, 0X00, 0X00, 0X0A, 0XAA, 0X82, 0XAA, 0XA0, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFB, 0XBF, 0XEF, 0XEE, 0XFF, 0XF1, 0XEF, 0XEF, 0XEE, 0XDF, 0XEE,
+  0XFB, 0XFF, 0XFF, 0X5A, 0X5F, 0XDB, 0XEE, 0XEF, 0XFF, 0XFF, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
+  0XCC, 0XCF, 0XC0, 0X00, 0X00, 0XFF, 0XF9, 0X59, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X02, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X02,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X40, 0X00, 0X00, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XA0, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X40, 0X00, 0X2A, 0XAA, 0XAA, 0XAA, 0XA8,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XD9, 0XFB, 0XEE, 0XFF, 0XFF, 0XDE, 0XFF, 0XD7,
+  0XFE, 0XF5, 0X7E, 0X5F, 0XE7, 0XBF, 0XFD, 0XB7, 0XDF, 0XEF, 0XEF, 0XBF, 0XFF, 0XFF, 0XBF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XF3, 0XFF, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XE7, 0X9F, 0XFF, 0XFF, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X01, 0X55, 0X55, 0X55,
+  0X55, 0X54, 0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X05, 0X55, 0X55, 0X55, 0X55, 0X50,
+  0X00, 0X02, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X00, 0X05, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0XAA,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0X65, 0XFF, 0XFF,
+  0XFF, 0XF7, 0XBB, 0XF7, 0XFF, 0XFF, 0X7F, 0XD7, 0XFF, 0X9F, 0XFF, 0X58, 0X9F, 0XFB, 0XEB, 0XEF,
+  0XFF, 0XFF, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XF7, 0X30, 0XFF, 0XF0, 0X00, 0X00, 0X00, 0X01, 0XFF,
+  0XE6, 0X6F, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X00,
+  0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X00, 0X05, 0X55,
+  0X55, 0X55, 0X55, 0X54, 0X00, 0X02, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X05, 0X55, 0X55, 0X55,
+  0X55, 0X54, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X3F, 0XFF, 0XEF, 0XEF, 0XBF, 0XFF, 0XFF, 0XF6, 0XFD, 0XBE, 0XAF, 0XFB, 0XEF, 0XFB, 0XFC, 0XDD,
+  0XDF, 0XDB, 0XEF, 0XBF, 0XFF, 0XFF, 0X9F, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X3C, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0A, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XA8, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XA8, 0X00, 0X05, 0X55, 0X55, 0X55, 0X55, 0X54, 0X00, 0X02, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X00,
+  0X05, 0X55, 0X55, 0X55, 0X55, 0X54, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XFE, 0XF7, 0XFF, 0XFB, 0XEF,
+  0XFF, 0XF9, 0XFC, 0X67, 0X9F, 0XF6, 0XEB, 0XBF, 0XFF, 0XFF, 0XE7, 0XB7, 0XFF, 0XFF, 0XFF, 0XEF,
+  0X0F, 0XCF, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X55, 0X00, 0X0A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X00, 0X05, 0X55, 0X55, 0X55, 0X55, 0X54, 0X00, 0X02, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XAA, 0X00, 0X05, 0X55, 0X55, 0X55, 0X55, 0X54, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XAA,
+  0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XEF, 0XFF,
+  0XE7, 0XFF, 0XF7, 0XFF, 0XFF, 0XBF, 0XBE, 0XDB, 0X7F, 0XEB, 0XEE, 0XFE, 0XFF, 0XFF, 0XDA, 0X69,
+  0XEF, 0X7B, 0XFF, 0XFC, 0XF3, 0X3C, 0X01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X02, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X00, 0X55, 0X55, 0X55,
+  0X55, 0X54, 0X00, 0X02, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X50,
+  0X00, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X2A,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0B, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFF, 0XFA, 0XFF, 0XFF, 0XEF, 0XBA, 0X6E, 0XFC, 0X76, 0X5F, 0XF7, 0XEE, 0XFE,
+  0XFF, 0XFF, 0XF5, 0X99, 0XDB, 0X99, 0XFF, 0XCC, 0X33, 0X3F, 0X33, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X02, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X00,
+  0X00, 0X55, 0X55, 0X55, 0X55, 0X54, 0X00, 0X02, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X01, 0X55,
+  0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X00, 0X01, 0X55, 0X55, 0X55,
+  0X55, 0X50, 0X00, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XFF, 0XFF, 0XBF, 0XFF, 0XBB, 0XFF, 0XFF, 0XFF, 0XFF, 0XF7, 0XFF, 0XFF, 0XFE, 0XD9,
+  0XDF, 0XFB, 0XEA, 0XFB, 0XFF, 0XFF, 0XD9, 0X99, 0XEF, 0X66, 0X7F, 0XFF, 0XFF, 0XF6, 0XB0, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X02, 0XAA, 0XAA,
+  0XAA, 0XAA, 0XA0, 0X00, 0X00, 0X55, 0X55, 0X55, 0X55, 0X54, 0X00, 0X02, 0XAA, 0XAA, 0XAA, 0XAA,
+  0XA0, 0X00, 0X01, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0XA8, 0X00,
+  0X01, 0X55, 0X55, 0X55, 0X55, 0X50, 0X00, 0X2A, 0XAA, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFE, 0XBA, 0XFF, 0XFF, 0XFE, 0XEB, 0XBF, 0XFA,
+  0XF9, 0XFF, 0XF8, 0X76, 0X9F, 0XF7, 0XFA, 0XFB, 0XBF, 0XFF, 0XDD, 0X9B, 0XE7, 0X99, 0XBF, 0XFF,
+  0XFD, 0X0D, 0X30, 0X60, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X15, 0X55, 0X55, 0X55, 0X50, 0X00, 0X00,
+  0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X55, 0X55, 0X55, 0X55, 0X40, 0X00, 0X00, 0X2A, 0XAA,
+  0XAA, 0XAA, 0XA0, 0X00, 0X00, 0X55, 0X55, 0X55, 0X55, 0X40, 0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0XA8,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFD, 0XFF, 0XBF,
+  0XFE, 0XFD, 0XFF, 0XEF, 0XFF, 0XFE, 0XFD, 0XDB, 0X5F, 0XFA, 0XEB, 0XFB, 0XFF, 0XFF, 0XD9, 0X9B,
+  0XDA, 0XD9, 0X7F, 0XFF, 0XFF, 0XC8, 0XF1, 0XDC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X15, 0X55, 0X55,
+  0X55, 0X50, 0X00, 0X00, 0XAA, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X55, 0X55, 0X55, 0X55, 0X40,
+  0X00, 0X00, 0X2A, 0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X00, 0X55, 0X55, 0X55, 0X55, 0X40, 0X00, 0X0A,
+  0XAA, 0XAA, 0XAA, 0XA8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F,
+  0XFF, 0XFF, 0XEB, 0XEF, 0XEF, 0XFF, 0XFE, 0XFF, 0XFF, 0X97, 0XBC, 0X9D, 0X9B, 0XF9, 0XFB, 0XEA,
+  0XEF, 0XFF, 0XF9, 0XD9, 0XE6, 0X66, 0X7F, 0XFF, 0XFF, 0XF4, 0XF0, 0X26, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X2A, 0XAA, 0XAA, 0XAA, 0X00, 0X00,
+  0X00, 0X05, 0X55, 0X55, 0X55, 0X40, 0X00, 0X00, 0X2A, 0XAA, 0XAA, 0XAA, 0X00, 0X00, 0X00, 0X15,
+  0X55, 0X55, 0X55, 0X00, 0X00, 0X00, 0X0A, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X15, 0X55, 0X55,
+  0X55, 0X00, 0X00, 0X02, 0XAA, 0XAA, 0XAA, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X3F, 0XC3, 0XFF, 0XFF, 0XBF, 0XFF, 0XE7, 0XFF, 0XFF, 0XFE, 0XFE, 0X7E, 0X77,
+  0X6F, 0XF6, 0XEB, 0XEF, 0XBF, 0XFF, 0XF3, 0X66, 0XBE, 0XE6, 0XFF, 0XFF, 0X7F, 0X13, 0XC0, 0X0D,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0A, 0XAA,
+  0XAA, 0XA8, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X55, 0X00, 0X00, 0X00, 0X0A, 0XAA, 0XAA, 0XA8,
+  0X00, 0X00, 0X00, 0X05, 0X55, 0X55, 0X54, 0X00, 0X00, 0X00, 0X02, 0XAA, 0XAA, 0XAA, 0X00, 0X00,
+  0X00, 0X05, 0X55, 0X55, 0X54, 0X00, 0X00, 0X00, 0XAA, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3E, 0X00, 0XFF, 0XEF, 0XFF, 0XFD, 0X7F, 0XFF, 0XFE,
+  0XFF, 0XFF, 0X6F, 0X9C, 0X97, 0XF9, 0XFB, 0XEF, 0XBF, 0XFF, 0XF2, 0X67, 0X99, 0X66, 0X7B, 0XFF,
+  0XBF, 0XF0, 0XF3, 0X01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X02, 0XAA, 0XAA, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X55, 0X55, 0X54, 0X00, 0X00, 0X00,
+  0X02, 0XAA, 0XAA, 0XA0, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X00, 0XAA,
+  0XAA, 0XA8, 0X00, 0X00, 0X00, 0X01, 0X55, 0X55, 0X50, 0X00, 0X00, 0X00, 0X2A, 0XAA, 0XAA, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFC, 0X00, 0X3F, 0XFF, 0XFE,
+  0XFB, 0XFE, 0XEF, 0XE5, 0XFB, 0XFE, 0XED, 0X7C, 0XDB, 0XFA, 0XEF, 0XEE, 0XEE, 0XFF, 0XF9, 0XAE,
+  0X76, 0XB6, 0XB7, 0XFF, 0X7F, 0XC3, 0XC3, 0XF3, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X15, 0X55,
+  0X50, 0X00, 0X00, 0X00, 0X00, 0XAA, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X55, 0X55, 0X40, 0X00,
+  0X00, 0X00, 0X00, 0X2A, 0XAA, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X55, 0X55, 0X40, 0X00, 0X00, 0X00,
+  0X0A, 0XAA, 0XA8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X03, 0XFE, 0XEF, 0XBF, 0XD6, 0XFF, 0XFF, 0XFF, 0XFD, 0XDB, 0X5F, 0X67, 0XF9, 0XFF, 0XEF,
+  0XBB, 0XFF, 0XF7, 0X56, 0XBE, 0X69, 0X77, 0XFF, 0XB3, 0XCF, 0X22, 0XF8, 0X3D, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X2A, 0XAA, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X05, 0X55, 0X40, 0X00, 0X00, 0X00, 0X00, 0X2A, 0XAA, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X15, 0X55, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0A, 0XAA, 0X80, 0X00, 0X00, 0X00, 0X00, 0X15, 0X55,
+  0X00, 0X00, 0X00, 0X00, 0X02, 0XAA, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XBE, 0X6C,
+  0X9B, 0XF9, 0XFF, 0XBE, 0XBB, 0XFF, 0XF8, 0XA9, 0XE6, 0XB6, 0XB7, 0XFF, 0X77, 0X0F, 0X32, 0XFF,
+  0X23, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X02,
+  0XA8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X55, 0X00, 0X00, 0X00, 0X00, 0X00, 0X02, 0XA8, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X01, 0X54, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XAA, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X01, 0X54, 0X00, 0X00, 0X00, 0X00, 0X00, 0X2A, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XF6, 0XFF, 0XBF, 0XFE, 0XFF,
+  0XFF, 0XFF, 0XFD, 0X9F, 0X77, 0XFE, 0XFF, 0XBB, 0XBB, 0XBF, 0XFF, 0X5A, 0X6D, 0X99, 0XB7, 0XFF,
+  0X3C, 0X3C, 0XC2, 0X66, 0X7F, 0XC0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X14, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0XA0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X28, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X50, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0A, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF,
+  0XEF, 0XBF, 0XFB, 0XFF, 0XDB, 0XEF, 0XFB, 0XDD, 0X9B, 0XF9, 0XFF, 0XFA, 0XEE, 0XFE, 0XFC, 0XE6,
+  0XE6, 0X69, 0XB9, 0XFF, 0XB0, 0XFC, 0X4A, 0XF7, 0X7F, 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, 0X0F, 0XFF, 0XFF, 0XFF, 0XDB, 0X67, 0XBF, 0XBA, 0X9F, 0X97, 0XFE, 0XBF, 0XFB,
+  0XBB, 0XBF, 0XFF, 0X59, 0X9F, 0XB6, 0X76, 0XFF, 0X3F, 0XFC, 0XCA, 0X36, 0XFB, 0XF0, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0X7F, 0XBF, 0XFF, 0XFF, 0X7B, 0XF7, 0X3D,
+  0X67, 0XF9, 0XFF, 0XFB, 0XBB, 0XBF, 0XFC, 0XA9, 0XB9, 0X9A, 0X79, 0XFF, 0X3B, 0XF1, 0XCE, 0XCF,
+  0X41, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFF,
+  0XFF, 0XF6, 0X7F, 0X9F, 0X67, 0XFE, 0XBF, 0XEB, 0XBB, 0XBF, 0XFD, 0XDD, 0X9B, 0X99, 0XB9, 0XFF,
+  0XDC, 0XF1, 0X2A, 0XFE, 0XF4, 0XF0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X02, 0XFF, 0XFF, 0XFF, 0XEF, 0XFB, 0XEE, 0X36, 0X9B, 0XFD, 0XFF, 0XEE, 0XBB, 0XBF, 0XFE, 0X26,
+  0XB9, 0X99, 0XB6, 0XFF, 0X3F, 0XC7, 0X3A, 0XB4, 0XFD, 0XB0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFE, 0X7E, 0XFE, 0XDD, 0XD7, 0XFA, 0XFF, 0XEB,
+  0XBA, 0XEF, 0XFF, 0XD9, 0X9E, 0X69, 0XB9, 0XFF, 0XCF, 0XCC, 0XAD, 0XB9, 0XBC, 0XF0, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XDF,
+  0X2F, 0XFD, 0XFF, 0XBE, 0XEE, 0XEF, 0XFF, 0X3A, 0XEE, 0XD6, 0XF6, 0XFF, 0XCF, 0X20, 0XAE, 0XBF,
+  0XDC, 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, 0X0F, 0XFF, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XDD, 0XD7, 0XFA, 0XFF, 0XAE, 0XEE, 0XBF, 0XFF, 0XD6, 0X77, 0XA9, 0X79, 0XFF,
+  0XCF, 0X33, 0X9A, 0X9F, 0XED, 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, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XE7, 0X1F, 0XFD, 0XEF, 0XBB, 0XAA, 0XFB, 0XFF, 0X2B,
+  0XAE, 0X79, 0XB6, 0XFF, 0XCD, 0X03, 0X8B, 0X83, 0XBF, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XBF, 0XFF, 0XF7, 0XD6, 0XFE, 0XFF, 0XAB,
+  0XBE, 0XEF, 0XFF, 0XD9, 0XDB, 0XA6, 0XB9, 0XFF, 0XC7, 0X3E, 0XEA, 0XBC, 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, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XC7,
+  0X26, 0XFD, 0XBF, 0XBB, 0XAB, 0XBB, 0XFF, 0X76, 0XAD, 0X9B, 0X79, 0XFE, 0XCF, 0XD3, 0XA7, 0XBF,
+  0X77, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XF7, 0XDD, 0XFF, 0XAF, 0XAE, 0XEE, 0XEF, 0XFF, 0X29, 0XDB, 0XB9, 0XB6, 0XFF,
+  0XC3, 0XF2, 0XEB, 0X6F, 0XF3, 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, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XDB, 0X26, 0XFE, 0X7F, 0XAB, 0XAE, 0XBB, 0XFF, 0XCB,
+  0XAD, 0X99, 0XB9, 0XFE, 0XF3, 0XCE, 0XBA, 0XAF, 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, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XE3, 0X65, 0XFF, 0XBF, 0XEB,
+  0XBB, 0XBF, 0XFF, 0X25, 0XDA, 0X9B, 0X76, 0XEF, 0XD3, 0XF2, 0XE6, 0XAD, 0XDF, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XFF, 0XF7,
+  0XD9, 0XFE, 0X7F, 0XEE, 0XBB, 0XBB, 0XFF, 0X36, 0XAD, 0XB6, 0XB9, 0XFB, 0XE3, 0XC3, 0XAA, 0XDC,
+  0XBE, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF,
+  0XFF, 0XFF, 0XFF, 0XFB, 0X65, 0XFE, 0XBF, 0XEA, 0XEB, 0XAF, 0XFF, 0XD9, 0X9A, 0X69, 0XB6, 0XEE,
+  0XF2, 0XF2, 0XEE, 0XAC, 0X31, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 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, 0XF7, 0X99, 0XFF, 0X7F, 0XEB, 0XAE, 0XBF, 0XFF, 0X36,
+  0XED, 0X97, 0X79, 0XFB, 0XF0, 0XC3, 0XAA, 0XAF, 0X3C, 0X90, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFB, 0X76, 0XFF, 0XAB, 0XEA,
+  0XEE, 0XEB, 0XFF, 0XDD, 0X9A, 0XE6, 0XE6, 0XFB, 0XBC, 0XF3, 0XBA, 0XAF, 0X3F, 0X30, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F, 0XFF, 0XFF, 0XFF, 0XF3,
+  0X65, 0XFE, 0X7F, 0XFA, 0XEE, 0XEF, 0XFF, 0X2A, 0XB6, 0X6E, 0X67, 0XEF, 0XBC, 0XC3, 0XAA, 0XEF,
+  0XBF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X3F,
+  0XFF, 0XFF, 0XFF, 0XF6, 0X79, 0XFF, 0X9F, 0XFA, 0XEB, 0XAF, 0XFF, 0XD7, 0X6B, 0XA5, 0XE8, 0XBA,
+  0XFC, 0XF2, 0XBA, 0XAB, 0XFF, 0X5C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X0F, 0XFF, 0XFF, 0XFF, 0XF9, 0XD6, 0X7E, 0X6F, 0XFB, 0XBE, 0XEF, 0XFF, 0X1A,
+  0XB5, 0X9E, 0X59, 0XEF, 0XBC, 0XD3, 0XEA, 0XAB, 0X3D, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFF, 0XFF, 0XF9, 0X79, 0XFF, 0XDF, 0XFB,
+  0XAB, 0XAB, 0XEF, 0XDE, 0X5A, 0XDB, 0XA7, 0XBB, 0XBC, 0XF0, 0XBA, 0X6B, 0X7C, 0X79, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 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, 0XF6,
+  0XC6, 0X7F, 0XAF, 0XFA, 0XBE, 0XBF, 0XFD, 0XD9, 0XBD, 0XA7, 0X99, 0XEB, 0XEC, 0X93, 0XBA, 0XAB,
+  0XBD, 0XF0, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X0F, 0XFF, 0XFF, 0XFD, 0XF6, 0X7E, 0XDB, 0XFB, 0XEB, 0XBB, 0XEF, 0X26, 0X9B, 0X67, 0X66, 0XEE,
+  0XBC, 0X3A, 0XEB, 0XAB, 0XDF, 0X1C, 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, 0X3F, 0XFF, 0XFE, 0XC9, 0XBF, 0XEF, 0XFA, 0XEE, 0XFB, 0XFD, 0XB6,
+  0X6D, 0XB9, 0XB6, 0XEB, 0XEF, 0X3A, 0XEE, 0X9B, 0XFC, 0X8C, 0XD0, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0XFF, 0XFD, 0XD9, 0X7E, 0XDB, 0XFA,
+  0XEE, 0XBE, 0XEF, 0X6E, 0X66, 0X7D, 0X99, 0XAE, 0XBF, 0X3A, 0XAA, 0XAB, 0X0D, 0XCC, 0X90, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFE,
+  0XE6, 0X7F, 0X6B, 0XFB, 0XBB, 0XBB, 0XFC, 0X95, 0XBB, 0X35, 0XA5, 0XEE, 0XEF, 0X3E, 0XEE, 0X9B,
+  0XFC, 0X84, 0X30, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 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, 0XFC, 0XDD, 0X7E, 0XE7, 0XFA, 0XEE, 0XEF, 0XEC, 0XB9, 0X9E, 0XD9, 0X9F, 0XBA,
+  0XBB, 0X3A, 0XAB, 0X8A, 0XFD, 0XC7, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
+  0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFD, 0XD9, 0XBD, 0XDB, 0XFA, 0XAB, 0XAE, 0XFC, 0XC6,
+  0X75, 0X2D, 0X9A, 0XAE, 0XEB, 0X1E, 0XBA, 0XAA, 0X7C, 0X48, 0XE4, 0X00, 0X00, 0X00, 0X00, 0X00,
+};
+#endif

+ 1089 - 0
src/bitmaps/WS_Bitmaps4c168x400.h

@@ -0,0 +1,1089 @@
+/**
+    @filename   :   imagedata.cpp
+    @brief      :   data file for epd demo
+
+    Copyright (C) Waveshare     2022/7/22
+
+   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 _WS_Bitmaps4c168x400_H_
+#define _WS_Bitmaps4c168x400_H_
+
+#if defined(ESP8266) || defined(ESP32)
+#include <pgmspace.h>
+#else
+#include <avr/pgmspace.h>
+#endif
+
+
+const unsigned char WS_Bitmap4c168x400[] PROGMEM = {
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x15,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x50, 0x15, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x50, 0x15, 0x50, 0x15, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x50, 0x15, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x40, 0x15, 0x50, 0x15, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA,
+  0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x5F,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15,
+  0x50, 0x15, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF,
+  0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x05, 0x50, 0x15, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55,
+  0x55, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x5F, 0xFF, 0xFF, 0xFF,
+  0xFD, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x54, 0x00, 0x14, 0x00, 0x00, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x7F, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF,
+  0xFF, 0x55, 0x55, 0x55, 0x54, 0x01, 0x55, 0x00, 0x01, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x54, 0x15,
+  0x55, 0x50, 0x05, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xAA, 0xAA, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x57, 0xFF, 0xFF, 0xF5, 0x55, 0x55, 0x55,
+  0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xEA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x57, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA,
+  0xAB, 0xFE, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x5F, 0xFF, 0xFF,
+  0xD5, 0x55, 0x55, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x05,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xFF, 0xEA, 0xAA, 0xAA, 0xAF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x7F, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x7F, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x7F, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55,
+  0x55, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xFF,
+  0xFF, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xFF, 0xFF, 0xFF, 0xFD, 0x55,
+  0x55, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x00, 0x40, 0x40, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAB, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF,
+  0xFF, 0x55, 0x55, 0x55, 0x54, 0x01, 0x40, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xAA, 0xAB, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x54, 0x05,
+  0x40, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF,
+  0xEA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xD5, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55,
+  0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x54, 0x05, 0x40, 0x50, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0x55,
+  0x55, 0x55, 0x54, 0x05, 0x40, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x57, 0xFF, 0xFF, 0xFF,
+  0xFF, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x54, 0x05, 0x40, 0x00,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x7F, 0xFF,
+  0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x01, 0x40, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x5F, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55,
+  0x55, 0x05, 0x40, 0x01, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xD5, 0x55,
+  0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF,
+  0xFF, 0xFF, 0xF5, 0x55, 0x55, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x41, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55,
+  0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x05, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x55, 0x55, 0x55, 0xDB, 0xFF, 0xFF, 0xFF, 0x55,
+  0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x5F, 0x55, 0x55, 0x55,
+  0x7F, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x54, 0x00, 0x55, 0x40, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x5F, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0xF5, 0x55, 0x55, 0x5F, 0xFF, 0xFF, 0x55, 0x55, 0x55,
+  0x54, 0x01, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xD5, 0x55,
+  0x55, 0xFF, 0xD5, 0x55, 0x57, 0xFF, 0xFD, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x7F, 0xFF, 0xFD, 0x55, 0x55, 0xFF,
+  0xFD, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF,
+  0xFF, 0xFF, 0xD5, 0x55, 0x5F, 0xFF, 0xFD, 0x56, 0x65, 0xFF, 0xFD, 0x55, 0x55, 0x55, 0x55, 0x01,
+  0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x7F,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xF5, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x55,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF,
+  0xFF, 0x55, 0x55, 0x55, 0x7F, 0xFF, 0xFF, 0xFF, 0xF5, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x55, 0x55, 0x57, 0xFF,
+  0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x5F, 0xFF, 0x55, 0x55, 0xFF, 0xFF, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xD5, 0x55, 0x7F, 0xFF,
+  0xF5, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xF5, 0x55, 0x57, 0xFF, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFD,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF,
+  0xF9, 0x55, 0x55, 0x75, 0x55, 0x55, 0x5F, 0xFF, 0xFF, 0xFD, 0x55, 0x55, 0x55, 0x54, 0x15, 0x41,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFD, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0xFF, 0xFF, 0xFF, 0xF5, 0x55, 0x55, 0x55, 0x54, 0x15, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x5F, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x54, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF,
+  0x55, 0x55, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xF5, 0x55, 0x5F, 0xFF, 0xFF, 0xFF,
+  0xFD, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x50, 0x15, 0x55, 0x55, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA,
+  0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x55,
+  0x50, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x54, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x54, 0x01, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x05, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x50, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x05, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xEA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xBF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x05, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x40, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x40, 0x40, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xEA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05,
+  0x40, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x40, 0x54, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x40, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x05, 0x40, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00,
+  0x05, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x40, 0x50,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x50,
+  0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x40, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x54, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x01, 0x40, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x05, 0x55,
+  0x55, 0x55, 0x55, 0x40, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x15, 0x55, 0x40, 0x05, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x40, 0x05,
+  0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x40, 0x05, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00,
+  0x55, 0x55, 0x40, 0x01, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x40, 0x01, 0x55, 0x54,
+  0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x40, 0x00, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x15, 0x55,
+  0x00, 0x00, 0x55, 0x50, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x05, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xEA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00,
+  0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x05, 0x50, 0x00, 0x00,
+  0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x57, 0xFF, 0xFF,
+  0xFA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x50, 0x00, 0x00, 0x05, 0x54, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00,
+  0x55, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50,
+  0x00, 0x01, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x55, 0x40,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x50, 0x15, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x55, 0x40, 0x01, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x40, 0x01,
+  0x55, 0x55, 0x55, 0x55, 0x54, 0x01, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA,
+  0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00,
+  0x14, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x55, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x40, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x05,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+  0x40, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x15, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00,
+  0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x54, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50,
+  0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xFE, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x01, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xAB, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xFF,
+  0xFF, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xBF, 0xFE, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFE, 0xAA, 0xAA, 0xAF, 0xFA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAB, 0xEA, 0xAA,
+  0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50,
+  0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x50, 0x15, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x00, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x40, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA,
+  0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAB,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x05,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x01, 0x55, 0x40, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAB,
+  0xEA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x55, 0x50, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAF, 0xFA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFA, 0xAA, 0xAA, 0xBF, 0xFE, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x40, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05,
+  0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xFF, 0xFF, 0xAA,
+  0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x01, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAB, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x00, 0x15, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA,
+  0xAF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x40,
+  0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xBF, 0xFF, 0xFF, 0xFE, 0xAA, 0xBF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x54, 0x00, 0x05, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x55, 0x54, 0x00, 0x00, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x05, 0x55, 0x55, 0x40, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x15, 0x55, 0x55, 0x50,
+  0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x50, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00,
+  0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x15, 0x55,
+  0x55, 0x50, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x05, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00,
+  0x05, 0x50, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFE, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00, 0x55, 0x55, 0x55, 0x55,
+  0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x01, 0x40, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x01, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x00, 0x01, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x41, 0x50,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA,
+  0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x40, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x05, 0x50, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x50, 0x50, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x00, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x01, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00,
+  0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50,
+  0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x55, 0x40, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x01, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x15,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x01, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x55, 0x50, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x55, 0x54, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x15, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFE,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x00, 0x01, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x00, 0x05, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x50,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x01, 0x55, 0x54, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x15, 0x55, 0x55, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFE, 0xAA, 0xAF, 0xEA, 0xAA, 0xAA, 0xAF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA,
+  0xAB, 0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xFE, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA,
+  0xFF, 0xEA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFA, 0xAA, 0xAB, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFE, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFE,
+  0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x40, 0x15, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFA, 0xAA, 0xBF, 0xFF, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00,
+  0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x05, 0x50, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xEA, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x01, 0x40, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x01,
+  0x01, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA,
+  0xBF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00,
+  0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x40, 0x50, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x05, 0x40, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAF,
+  0xFE, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x50, 0x50,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF,
+  0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x50, 0x40, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x54, 0x00, 0x05, 0x40, 0x05, 0x40, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x15, 0x40,
+  0x05, 0x50, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x15, 0x40, 0x05, 0x54, 0x00, 0x15, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xEA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x50, 0x00, 0x55, 0x40, 0x05, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x40, 0x05, 0x54,
+  0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x40, 0x05, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA,
+  0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00,
+  0x55, 0x40, 0x05, 0x50, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x40, 0x05, 0x40, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x54, 0x00, 0x55, 0x40, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x15, 0x40,
+  0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x15, 0x40, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x00, 0x15, 0x40, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x50, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x01, 0x55, 0x40, 0x00, 0x00,
+  0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA,
+  0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x54, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xAA, 0xAA,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAB,
+  0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xBE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xEA, 0xAA, 0xAB, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAF, 0xEA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xAA,
+  0xAA, 0xAB, 0xFF, 0xFF, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40,
+  0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x01, 0x55, 0x40, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF, 0xFF, 0xFF, 0xEA, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA,
+  0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05,
+  0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x01, 0x55, 0x40, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF,
+  0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF,
+  0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFF, 0xEA,
+  0xAA, 0xAB, 0xFF, 0xFF, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xBF, 0xFA, 0xAA, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA,
+  0xAA, 0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAB,
+  0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAB, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFE,
+  0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFE, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54,
+  0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x50, 0x00, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x50,
+  0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50,
+  0x00, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x50, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x40, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55,
+  0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x55, 0x40, 0x01, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x54, 0x00, 0x05, 0x55, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x05, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00,
+  0x00, 0x05, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF,
+  0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x40, 0x00, 0x01, 0x55, 0x55, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x55, 0x54,
+  0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x15, 0x40, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x15, 0x40, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAF, 0xFF, 0xFE, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x05, 0x50, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xEA, 0xAF, 0xFF, 0xFE, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x05, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAF, 0xFF,
+  0xFE, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x14, 0x00,
+  0x05, 0x54, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x01, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAF, 0xFF, 0xFE, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x40, 0x01, 0x54, 0x00, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xEA, 0xAF, 0xFF, 0xFE, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x50, 0x00, 0x55, 0x40, 0x01, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAF, 0xFF, 0xFE, 0xAA,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x55, 0x50, 0x01, 0x54,
+  0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAF, 0xFF, 0xFE, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x55, 0x50, 0x01, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x15, 0x05, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA,
+  0xAB, 0xFF, 0xFA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00,
+  0x15, 0x50, 0x01, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x14, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xFF, 0xEA, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00, 0x15, 0x54, 0x01, 0x50, 0x00, 0x15,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x14, 0x01, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x14, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA,
+  0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00,
+  0x00, 0x15, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x00, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xEA, 0xBF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05,
+  0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xAA,
+  0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xBF, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x50, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x01,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xEA, 0xBF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x40, 0x40, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x40, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xBF,
+  0xFF, 0xFF, 0xFF, 0xFE, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x50, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05,
+  0x40, 0x54, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAB, 0xFF, 0xFF, 0xFF, 0xEA, 0xBF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x40, 0x50, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFE, 0xAA, 0xBF, 0xFF, 0xFF, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00, 0x15, 0x55, 0x55, 0x40, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x05, 0x40, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAB, 0xFF,
+  0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00,
+  0x15, 0x55, 0x55, 0x50, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x40, 0x00,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xFF, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x40, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x54, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x40, 0x05, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55,
+  0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x15, 0x55, 0x55, 0x50, 0x00, 0x15, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x50, 0x00, 0x05, 0x55, 0x55, 0x50, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x01, 0x55, 0x55, 0x00,
+  0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAA,
+  0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFE, 0xAA, 0xAA, 0xBE, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x00, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAB, 0xFF, 0xEA, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x50, 0x00, 0x00,
+  0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x01, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAF, 0xFF, 0xFE, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA,
+  0xFF, 0xFF, 0xFF, 0xEA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x40, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00,
+  0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAF, 0xFF, 0xFF, 0xFF, 0xFA, 0xBF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x55, 0x40, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x01, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x01, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xBF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00,
+  0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x55, 0x50, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFA, 0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x55, 0x54, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xEA,
+  0xAA, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00,
+  0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x15, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xAA, 0xAB, 0xAA, 0xEA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x50, 0x00, 0x01, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAF, 0xAA,
+  0xFE, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xBF, 0xAA, 0xFE, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFE, 0xAA, 0xFF, 0xAA, 0xFF, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x01, 0x55, 0x40, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xFF, 0xAA, 0xFF, 0xAA,
+  0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x01, 0x40,
+  0x05, 0x40, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xFF, 0xAA, 0xFF, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x15, 0x40, 0x05, 0x50, 0x00, 0x15, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA,
+  0xFF, 0xAA, 0xFE, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x50, 0x00, 0x15, 0x40, 0x05, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05,
+  0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xFF, 0xAA, 0xFA, 0xAA, 0xBF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x40, 0x05, 0x54,
+  0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x01, 0x55, 0x40, 0x15, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFE, 0xAA, 0xBF, 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x40, 0x05, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xBF, 0xAA,
+  0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00,
+  0x55, 0x40, 0x05, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xAF, 0xAA, 0xAA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x50, 0x00, 0x55, 0x40, 0x05, 0x50, 0x00, 0x15,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xEA, 0xBF, 0xAA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x50, 0x00, 0x55, 0x40, 0x05, 0x40, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xAA, 0xAA, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x55, 0x40,
+  0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x15, 0x40, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x15, 0x40, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x00, 0x15, 0x40, 0x00, 0x00,
+  0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x01, 0x55, 0x40, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x40, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+  0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA,
+  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40,
+  0x00, 0x01, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x01, 0x55, 0x40,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFA, 0xAF, 0xFE, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x54, 0x05, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xEA, 0xAF, 0xFA, 0xAA, 0xAB,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x05, 0x55, 0x50, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA, 0xAF, 0xFA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x54, 0x01, 0x55, 0x40, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xAA,
+  0xAF, 0xEA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00,
+  0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAF, 0xEA, 0xAA, 0xAA, 0xBF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00,
+  0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFE, 0xAA, 0xFF, 0xAA, 0xAE, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x50, 0x00, 0x01, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAB, 0xFF, 0xAA,
+  0xBF, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x40, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x15,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAB, 0xFF, 0xAA, 0xBF, 0xEA, 0xBF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFE, 0xAB, 0xFE, 0xAA, 0xFF, 0xEA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAB, 0xFE, 0xAA, 0xFF, 0xEA,
+  0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x50, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xFE, 0xAA, 0xFF, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x15, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA,
+  0xAA, 0xAA, 0xFA, 0xAA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00,
+  0x00, 0x00, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFE, 0xAA, 0xAA, 0xAB, 0xFA, 0xAA, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAB, 0xFA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF,
+  0xFA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40,
+  0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0xAF, 0xFA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFE, 0xAA, 0xFF, 0xFA, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x50, 0x15, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+};
+
+#endif

+ 1 - 1
src/epd/GxEPD2_150_BN.cpp

@@ -397,7 +397,7 @@ void GxEPD2_150_BN::_Init_Part()
 void GxEPD2_150_BN::_Update_Full()
 {
   _writeCommand(0x22);
-  _writeData(0xf4);
+  _writeData(0xf7); // immediate power off
   _writeCommand(0x20);
   _waitWhileBusy("_Update_Full", full_refresh_time);
 }

+ 976 - 0
src/epd4c/GxEPD2_266c_GDEY0266F51H.cpp

@@ -0,0 +1,976 @@
+// Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
+// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
+//
+// based on Demo Example from Good Display: https://www.good-display.com/comp/xcompanyFile/downloadNew.do?appId=24&fid=1435&id=1018
+// Panel: GDEY0266F51H : https://www.good-display.com/product/467.html
+// Panel specs: https://v4.cecdn.yun300.cn/100001_1909185148/GDEY0266F51H.pdf
+// Controller: JD79667 : no specs, see panel specs for command list subset
+//
+// Author: Jean-Marc Zingg
+//
+// Version: see library.properties
+//
+// Library: https://github.com/ZinggJM/GxEPD2
+
+#include "GxEPD2_266c_GDEY0266F51H.h"
+
+GxEPD2_266c_GDEY0266F51H::GxEPD2_266c_GDEY0266F51H(int16_t cs, int16_t dc, int16_t rst, int16_t busy) :
+  GxEPD2_EPD(cs, dc, rst, busy, LOW, 50000000, WIDTH, HEIGHT, panel, hasColor, hasPartialUpdate, hasFastPartialUpdate)
+{
+  _paged = false;
+}
+
+void GxEPD2_266c_GDEY0266F51H::clearScreen(uint8_t value)
+{
+  clearScreen(value, 0xFF);
+}
+
+void GxEPD2_266c_GDEY0266F51H::clearScreen(uint8_t black_value, uint8_t color_value)
+{
+  writeScreenBuffer(black_value, color_value);
+  refresh();
+}
+
+void GxEPD2_266c_GDEY0266F51H::writeScreenBuffer(uint8_t value)
+{
+  writeScreenBuffer(value, 0xFF);
+}
+
+void GxEPD2_266c_GDEY0266F51H::writeScreenBuffer(uint8_t black_value, uint8_t color_value)
+{
+  //Serial.println("writeScreenBuffer");
+  if (!_init_display_done) _InitDisplay();
+  _writeCommand(0x10);
+  _startTransfer();
+  for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(HEIGHT) / 4; i++)
+  {
+    _transfer(0xFF == black_value ? 0x55 : 0x00);
+  }
+  _endTransfer();
+  _initial_write = false; // initial full screen buffer clean done
+}
+
+void GxEPD2_266c_GDEY0266F51H::writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  //Serial.print("writeImage("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+    x -= x % 8; // byte boundary
+    w = wb * 8; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t data = 0xFF;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 8 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 8 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&bitmap[idx]);
+#else
+          data = bitmap[idx];
+#endif
+        }
+        else
+        {
+          data = bitmap[idx];
+        }
+        if (invert) data = ~data;
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      _startTransfer();
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 8; i++)
+      {
+        uint8_t data = bitmap[i];
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
+      }
+      _endTransfer();
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      _paged = false;
+      int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+      x -= x % 8; // byte boundary
+      w = wb * 8; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      _startTransfer();
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+        {
+          uint8_t data = 0xFF;
+          if ((j >= x) && (j <= x + w) && (i >= y) && (i < y + h))
+          {
+            uint32_t idx = mirror_y ? (j - x) / 8 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 8 + uint32_t(i - y) * wb;
+            if (pgm)
+            {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+              data = pgm_read_byte(&bitmap[idx]);
+#else
+              data = bitmap[idx];
+#endif
+            }
+            else
+            {
+              data = bitmap[idx];
+            }
+            if (invert) data = ~data;
+          }
+          for (int16_t k = 0; k < 2; k++)
+          {
+            uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                            (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+            data <<= 4;
+            _transfer(data2);
+          }
+        }
+      }
+      _endTransfer();
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_266c_GDEY0266F51H::writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!black && !color) return;
+  if (!color) return writeImage(black, x, y, w, h, invert, mirror_y, pgm);
+  //Serial.print("writeImage("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+    x -= x % 8; // byte boundary
+    w = wb * 8; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 8 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 8 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          black_data = pgm_read_byte(&black[idx]);
+          color_data = pgm_read_byte(&color[idx]);
+#else
+          black_data = black[idx];
+          color_data = color[idx];
+#endif
+        }
+        else
+        {
+          black_data = black[idx];
+          color_data = color[idx];
+        }
+        if (invert)
+        {
+          black_data = ~black_data;
+          color_data = ~color_data;
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      _startTransfer();
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 8; i++)
+      {
+        uint8_t black_data = black[i];
+        uint8_t color_data = color[i];
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
+        }
+      }
+      _endTransfer();
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      _paged = false;
+      int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+      x -= x % 8; // byte boundary
+      w = wb * 8; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      _startTransfer();
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+        {
+          uint8_t black_data = 0xFF, color_data = 0xFF;
+          if ((j >= x) && (j < x + w) && (i >= y) && (i < y + h))
+          {
+            uint32_t idx = mirror_y ? (j - x) / 8 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 8 + uint32_t(i - y) * wb;
+            if (pgm)
+            {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+              black_data = pgm_read_byte(&black[idx]);
+              color_data = pgm_read_byte(&color[idx]);
+#else
+              black_data = black[idx];
+              color_data = color[idx];
+#endif
+            }
+            else
+            {
+              black_data = black[idx];
+              color_data = color[idx];
+            }
+            if (invert)
+            {
+              black_data = ~black_data;
+              color_data = ~color_data;
+            }
+          }
+          for (int16_t k = 0; k < 2; k++)
+          {
+            uint8_t out_data = 0x00;
+            for (int16_t l = 0; l < 4; l++)
+            {
+              out_data <<= 2;
+              if (!(color_data & 0x80)) out_data |= 0x03; // red
+              else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+              black_data <<= 1;
+              color_data <<= 1;
+            }
+            _transfer(out_data);
+          }
+        }
+      }
+      _endTransfer();
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_266c_GDEY0266F51H::writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  //Serial.print("writeImagePart("); Serial.print(x_part); Serial.print(", "); Serial.print(y_part); Serial.print(", ");
+  //Serial.print(w_bitmap); Serial.print(", "); Serial.print(h_bitmap); Serial.print(", ");
+  //Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 7) / 8; // width bytes, bitmaps are padded
+  x_part -= x_part % 8; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  // make x, w multiple of 8
+  w += x % 8; // adjust for byte boundary of x
+  x -= x % 8; // byte boundary ox
+  w = 8 * ((w + 7) / 8); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (hasPartialUpdate)
+  {
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t data;
+        // use wb_bitmap, h_bitmap of bitmap for index!
+        uint32_t idx = mirror_y ? x_part / 8 + j + dx / 8 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + uint32_t(y_part + i + dy) * wb_bitmap;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&bitmap[idx]);
+#else
+          data = bitmap[idx];
+#endif
+        }
+        else
+        {
+          data = bitmap[idx];
+        }
+        if (invert) data = ~data;
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+      {
+        uint8_t data = 0xFF;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 8 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 8 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            data = pgm_read_byte(&bitmap[idx]);
+#else
+            data = bitmap[idx];
+#endif
+          }
+          else
+          {
+            data = bitmap[idx];
+          }
+          if (invert) data = ~data;
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_266c_GDEY0266F51H::writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  //Serial.print("writeImagePart("); Serial.print(x_part); Serial.print(", "); Serial.print(y_part); Serial.print(", ");
+  //Serial.print(w_bitmap); Serial.print(", "); Serial.print(h_bitmap); Serial.print(", ");
+  //Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  if (!black && !color) return;
+  if (!color) return writeImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 7) / 8; // width bytes, bitmaps are padded
+  x_part -= x_part % 8; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  // make x, w multiple of 8
+  w += x % 8; // adjust for byte boundary of x
+  x -= x % 8; // byte boundary ox
+  w = 8 * ((w + 7) / 8); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (hasPartialUpdate)
+  {
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        // use wb_bitmap, h_bitmap of bitmap for index!
+        uint32_t idx = mirror_y ? x_part / 8 + j + dx / 8 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + uint32_t(y_part + i + dy) * wb_bitmap;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          black_data = pgm_read_byte(&black[idx]);
+          color_data = pgm_read_byte(&color[idx]);
+#else
+          black_data = black[idx];
+          color_data = color[idx];
+#endif
+        }
+        else
+        {
+          black_data = black[idx];
+          color_data = color[idx];
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+      {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 8 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 8 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            black_data = pgm_read_byte(&black[idx]);
+            color_data = pgm_read_byte(&color[idx]);
+#else
+            black_data = black[idx];
+            color_data = color[idx];
+#endif
+          }
+          else
+          {
+            black_data = black[idx];
+            color_data = color[idx];
+          }
+          if (invert)
+          {
+            black_data = ~black_data;
+            color_data = ~color_data;
+          }
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_266c_GDEY0266F51H::writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!data1) return;
+  //Serial.print("writeNative("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 3) / 4; // width bytes, bitmaps are padded
+    x -= x % 4; // byte boundary
+    w = wb * 4; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 4; j++)
+      {
+        uint8_t data;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 4 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 4 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&data1[idx]);
+#else
+          data = data1[idx];
+#endif
+        }
+        else
+        {
+          data = data1[idx];
+        }
+        if (invert) data = ~data;
+        _transfer(data);
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      _startTransfer();
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 4; i++)
+      {
+        uint8_t data = data1[i];
+        _transfer(data);
+      }
+      _endTransfer();
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      //Serial.println("not paged");
+      _paged = false;
+      int16_t wb = (w + 3) / 4; // width bytes, bitmaps are padded
+      x -= x % 4; // byte boundary
+      w = wb * 4; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      _startTransfer();
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 4)
+        {
+          uint8_t data = 0x55;
+          if (data1)
+          {
+            if ((j >= x) && (j < x + w) && (i >= y) && (i < y + h))
+            {
+              uint32_t idx = mirror_y ? (j - x) / 4 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 4 + uint32_t(i - y) * wb;
+              if (pgm)
+              {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+                data = pgm_read_byte(&data1[idx]);
+#else
+                data = data1[idx];
+#endif
+              }
+              else
+              {
+                data = data1[idx];
+              }
+              if (invert) data = ~data;
+            }
+          }
+          _transfer(data);
+        }
+      }
+      _endTransfer();
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_266c_GDEY0266F51H::writeNativePart(const uint8_t* data1, const uint8_t* data2, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!data1) return;
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 3) / 4; // width bytes, bitmaps are padded
+  x_part -= x_part % 4; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  w += x % 4; // adjust for byte boundary of x
+  x -= x % 4; // byte boundary
+  w = 4 * ((w + 3) / 4); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (hasPartialUpdate)
+  {
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 4; j++)
+      {
+        uint8_t data;
+        // use wb_bitmap, h_bitmap of bitmap for index!
+        uint32_t idx = mirror_y ? x_part / 4 + j + dx / 4 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 4 + j + dx / 4 + uint32_t(y_part + i + dy) * wb_bitmap;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&data1[idx]);
+#else
+          data = data1[idx];
+#endif
+        }
+        else
+        {
+          data = data1[idx];
+        }
+        if (invert) data = ~data;
+        _transfer(data);
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 4)
+      {
+        uint8_t data = 0x55;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 4 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 4 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            data = pgm_read_byte(&data1[idx]);
+#else
+            data = data1[idx];
+#endif
+          }
+          else
+          {
+            data = data1[idx];
+          }
+          if (invert) data = ~data;
+        }
+        _transfer(data);
+      }
+    }
+    _endTransfer();
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_266c_GDEY0266F51H::drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImage(bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_266c_GDEY0266F51H::drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImagePart(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_266c_GDEY0266F51H::drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImage(black, color, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_266c_GDEY0266F51H::drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImagePart(black, color, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_266c_GDEY0266F51H::drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeNative(data1, data2, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_266c_GDEY0266F51H::refresh(bool partial_update_mode)
+{
+  if (hasPartialUpdate) _setPartialRamArea(0, 0, WIDTH, HEIGHT);
+  _refresh(partial_update_mode);
+}
+
+void GxEPD2_266c_GDEY0266F51H::refresh(int16_t x, int16_t y, int16_t w, int16_t h)
+{
+  // intersection with screen
+  int16_t w1 = x < 0 ? w + x : w; // reduce
+  int16_t h1 = y < 0 ? h + y : h; // reduce
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  w1 = x1 + w1 < int16_t(WIDTH) ? w1 : int16_t(WIDTH) - x1; // limit
+  h1 = y1 + h1 < int16_t(HEIGHT) ? h1 : int16_t(HEIGHT) - y1; // limit
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  // make x1, w1 multiple of 4
+  w1 += x1 % 4;
+  if (w1 % 4 > 0) w1 += 4 - w1 % 4;
+  x1 -= x1 % 4;
+  bool fullscreen = ((x1 == 0) && (y1 == 0) && (w1 == WIDTH) && (h1 == HEIGHT));
+  if (hasPartialUpdate) _setPartialRamArea(x1, y1, w1, h1, !fullscreen);
+  _refresh(!fullscreen);
+}
+
+void GxEPD2_266c_GDEY0266F51H::powerOff()
+{
+  _PowerOff();
+}
+
+void GxEPD2_266c_GDEY0266F51H::hibernate()
+{
+  _PowerOff();
+  if (_rst >= 0)
+  {
+    _writeCommand(0x07); // deep sleep
+    _writeData(0xA5);    // control code
+    _hibernating = true;
+    _init_display_done = false;
+  }
+}
+
+void GxEPD2_266c_GDEY0266F51H::setPaged()
+{
+  if (!hasPartialUpdate)
+  {
+    _paged = true;
+    _InitDisplay();
+    _writeCommand(0x10);
+  }
+}
+
+void GxEPD2_266c_GDEY0266F51H::_refresh(bool partial_update_mode)
+{
+  _writeCommand(0x50); // VCOM and Data Interval Setting
+  _writeData(partial_update_mode ? 0x97 : 0x37); // floating or white
+  _writeCommand(0x12); // Display Refresh
+  _writeData(0x00);
+  delay(1);
+  _waitWhileBusy("_refresh", full_refresh_time);
+  //_power_is_on = false; // not needed
+  _init_display_done = false; // needed
+}
+
+void GxEPD2_266c_GDEY0266F51H::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool partial_mode)
+{
+  //Serial.print("_setPartialRamArea("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  _writeCommand(0x83);
+  _writeData(x / 256);
+  _writeData(x % 256);
+  _writeData((x + w - 1) / 256);
+  _writeData((x + w - 1) % 256);
+  _writeData(y / 256);
+  _writeData(y % 256);
+  _writeData((y + h - 1) / 256);
+  _writeData((y + h - 1) % 256);
+  _writeData(partial_mode ? 0x01 : 0x00);
+}
+
+void GxEPD2_266c_GDEY0266F51H::_PowerOn()
+{
+  if (!_power_is_on)
+  {
+    _writeCommand(0x04);
+    _waitWhileBusy("_PowerOn", power_on_time);
+  }
+  _power_is_on = true;
+}
+
+void GxEPD2_266c_GDEY0266F51H::_PowerOff()
+{
+  if (_power_is_on)
+  {
+    _writeCommand(0x02);
+    _writeData(0x00);
+    _waitWhileBusy("_PowerOff", power_off_time);
+  }
+  _power_is_on = false;
+}
+
+void GxEPD2_266c_GDEY0266F51H::_InitDisplay()
+{
+  //Serial.println("_InitDisplay");
+  // initcode from Good Dispay demo for GDEY029F51H
+  if ((_rst >= 0) && (_hibernating || _initial_write))
+  {
+    digitalWrite(_rst, HIGH);
+    delay(20); // At least 20ms delay
+    digitalWrite(_rst, LOW); // Module reset
+    delay(2);  // At least 40ms delay, 2ms for WS "clever" reset
+    digitalWrite(_rst, HIGH);
+    delay(2); // At least 50ms delay (32ms measured)
+    _waitWhileBusy("_InitDisplay reset", power_on_time);
+    _hibernating = false;
+    _power_is_on = false;
+  }
+  _writeCommand(0x4D); // ??
+  _writeData(0x78);
+  _writeCommand(0x00); // PSR
+  _writeData(0x0F);    // default res (176x296)), scan up, shift left, booster on, no effect (no RST)
+  _writeData(0x29);    // LUT from MPT, no add scan, VCOM default, TS_AUTO, VGN default, VCOM default, VCOM floating after refresh
+  _writeCommand(0x01); // PWRR
+  _writeData(0x07);    // VMODE default, VSPL internal, VSP/VSN internal, VGP/VGN internal
+  _writeData(0x00);    // VGP/VGN 20V
+  _writeCommand(0x03); // POFS
+  _writeData(0x10);    // T_VDGP_OFF 40ms, T_VDS_OFF 20ms
+  _writeData(0x54);    // VGP_LEN 2500ms, VGP_EXT 2000ms
+  _writeData(0x44);    // XON_DLY 2000ms, XON_LEN 2000ms
+  _writeCommand(0x06); // BTST Booster Soft Start
+  _writeData(0x05);    // PHB_SFT, PHA_SFT
+  _writeData(0x00);    // PHA_ON
+  _writeData(0x3F);    // PHA_OFF
+  _writeData(0x0A);    // PHB_ON
+  _writeData(0x25);    // PHB_OFF
+  _writeData(0x12);    // PHC_ON
+  _writeData(0x1A);    // PHC_OFF
+  _writeCommand(0x50); // CDI
+  _writeData(0x37);    // (VBD 1, DDX 1) Gray1, 10hsync
+  //_writeData(0x17); // black border
+  //_writeData(0x37); // white border (default)
+  //_writeData(0x57); // yellow border
+  //_writeData(0x77); // red border
+  //_writeData(0x97); // floating border
+  _writeCommand(0x60); // TCON
+  _writeData(0x02);    // ?
+  _writeData(0x02);    // ?
+  _writeCommand(0x61);      // TRES
+  _writeData(WIDTH / 256);  // Source_BITS_H
+  _writeData(WIDTH % 256);  // Source_BITS_L
+  _writeData(HEIGHT / 256); // Gate_BITS_H
+  _writeData(HEIGHT % 256); // Gate_BITS_L
+  _writeCommand(0xE7); // ??
+  _writeData(0x1C);
+  _writeCommand(0xE3); // PWS
+  _writeData(0x22);
+  _writeCommand(0xB4); // LVD
+  _writeData(0xD0);
+  _writeCommand(0xB5); // ??
+  _writeData(0x03);
+  _writeCommand(0xE9); // ??
+  _writeData(0x01);
+  _writeCommand(0x30); // PLL
+  _writeData(0x08);    // Dynamic frame rate enabled
+  _PowerOn();
+  _init_display_done = true;
+}

+ 78 - 0
src/epd4c/GxEPD2_266c_GDEY0266F51H.h

@@ -0,0 +1,78 @@
+// Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
+// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
+//
+// based on Demo Example from Good Display: https://www.good-display.com/comp/xcompanyFile/downloadNew.do?appId=24&fid=1435&id=1018
+// Panel: GDEY0266F51H : https://www.good-display.com/product/467.html
+// Panel specs: https://v4.cecdn.yun300.cn/100001_1909185148/GDEY0266F51H.pdf
+// Controller: JD79667 : no specs, see panel specs for command list subset
+//
+// Author: Jean-Marc Zingg
+//
+// Version: see library.properties
+//
+// Library: https://github.com/ZinggJM/GxEPD2
+
+#ifndef _GxEPD2_266c_GDEY0266F51H_H_
+#define _GxEPD2_266c_GDEY0266F51H_H_
+
+#include "../GxEPD2_EPD.h"
+
+class GxEPD2_266c_GDEY0266F51H : public GxEPD2_EPD
+{
+  public:
+    // attributes
+    static const uint16_t WIDTH = 184;
+    static const uint16_t WIDTH_VISIBLE = WIDTH;
+    static const uint16_t HEIGHT = 360;
+    static const GxEPD2::Panel panel = GxEPD2::GDEY0266F51H;
+    static const bool hasColor = true;
+    static const bool hasPartialUpdate = true; // can be switched off
+    static const bool hasFastPartialUpdate = false;
+    static const uint16_t power_on_time = 200; // ms, e.g. 158625us
+    static const uint16_t power_off_time = 100; // ms, e.g. 81326us
+    static const uint16_t full_refresh_time = 25000; // ms, e.g. 26028097us
+    static const uint16_t partial_refresh_time = 25000; // ms, e.g. 26028097us
+    // constructor
+    GxEPD2_266c_GDEY0266F51H(int16_t cs, int16_t dc, int16_t rst, int16_t busy);
+    // methods (virtual)
+    //  Support for Bitmaps (Sprites) to Controller Buffer and to Screen
+    void clearScreen(uint8_t value = 0xFF); // init controller memory and screen (default white)
+    void clearScreen(uint8_t black_value, uint8_t color_value); // init controller memory and screen
+    void writeScreenBuffer(uint8_t value = 0xFF); // init controller memory (default white)
+    void writeScreenBuffer(uint8_t black_value, uint8_t color_value); // init controller memory
+    // write to controller memory, without screen refresh; x and w should be multiple of 8
+    void writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write sprite of native data to controller memory, without screen refresh; x and w should be multiple of 8
+    void writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeNativePart(const uint8_t* data1, const uint8_t* data2, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write to controller memory, with screen refresh; x and w should be multiple of 8
+    void drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                       int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                       int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write sprite of native data to controller memory, with screen refresh; x and w should be multiple of 8
+    void drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void refresh(bool partial_update_mode = false); // screen refresh from controller memory to full screen
+    void refresh(int16_t x, int16_t y, int16_t w, int16_t h); // screen refresh from controller memory, partial screen
+    void powerOff(); // turns off generation of panel driving voltages, avoids screen fading over time
+    void hibernate(); // turns powerOff() and sets controller to deep sleep for minimum power use, ONLY if wakeable by RST (rst >= 0)
+    void setPaged(); // for GxEPD2_154c paged workaround, also for 4-color for use with hasPartialUpdate = false
+  private:
+    void _refresh(bool partial_update_mode);
+    void _setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool partial_mode = true);
+    void _PowerOn();
+    void _PowerOff();
+    void _InitDisplay();
+  private:
+    bool _paged;
+};
+
+#endif

+ 975 - 0
src/epd4c/GxEPD2_290c_GDEY029F51H.cpp

@@ -0,0 +1,975 @@
+// Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
+// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
+//
+// based on Demo Example from Good Display: https://www.good-display.com/comp/xcompanyFile/downloadNew.do?appId=24&fid=1785&id=1151
+// Panel: GDEY029F51H : https://www.good-display.com/product/464.html
+// Controller: JD79667, no specs, see GDEY0266F51H panel specs for command list subset
+//
+// Author: Jean-Marc Zingg
+//
+// Version: see library.properties
+//
+// Library: https://github.com/ZinggJM/GxEPD2
+
+#include "GxEPD2_290c_GDEY029F51H.h"
+
+GxEPD2_290c_GDEY029F51H::GxEPD2_290c_GDEY029F51H(int16_t cs, int16_t dc, int16_t rst, int16_t busy) :
+  GxEPD2_EPD(cs, dc, rst, busy, LOW, 50000000, WIDTH, HEIGHT, panel, hasColor, hasPartialUpdate, hasFastPartialUpdate)
+{
+  _paged = false;
+}
+
+void GxEPD2_290c_GDEY029F51H::clearScreen(uint8_t value)
+{
+  clearScreen(value, 0xFF);
+}
+
+void GxEPD2_290c_GDEY029F51H::clearScreen(uint8_t black_value, uint8_t color_value)
+{
+  writeScreenBuffer(black_value, color_value);
+  refresh();
+}
+
+void GxEPD2_290c_GDEY029F51H::writeScreenBuffer(uint8_t value)
+{
+  writeScreenBuffer(value, 0xFF);
+}
+
+void GxEPD2_290c_GDEY029F51H::writeScreenBuffer(uint8_t black_value, uint8_t color_value)
+{
+  //Serial.println("writeScreenBuffer");
+  if (!_init_display_done) _InitDisplay();
+  _writeCommand(0x10);
+  _startTransfer();
+  for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(HEIGHT) / 4; i++)
+  {
+    _transfer(0xFF == black_value ? 0x55 : 0x00);
+  }
+  _endTransfer();
+  _initial_write = false; // initial full screen buffer clean done
+}
+
+void GxEPD2_290c_GDEY029F51H::writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  //Serial.print("writeImage("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+    x -= x % 8; // byte boundary
+    w = wb * 8; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t data = 0xFF;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 8 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 8 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&bitmap[idx]);
+#else
+          data = bitmap[idx];
+#endif
+        }
+        else
+        {
+          data = bitmap[idx];
+        }
+        if (invert) data = ~data;
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      _startTransfer();
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 8; i++)
+      {
+        uint8_t data = bitmap[i];
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
+      }
+      _endTransfer();
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      _paged = false;
+      int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+      x -= x % 8; // byte boundary
+      w = wb * 8; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      _startTransfer();
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+        {
+          uint8_t data = 0xFF;
+          if ((j >= x) && (j <= x + w) && (i >= y) && (i < y + h))
+          {
+            uint32_t idx = mirror_y ? (j - x) / 8 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 8 + uint32_t(i - y) * wb;
+            if (pgm)
+            {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+              data = pgm_read_byte(&bitmap[idx]);
+#else
+              data = bitmap[idx];
+#endif
+            }
+            else
+            {
+              data = bitmap[idx];
+            }
+            if (invert) data = ~data;
+          }
+          for (int16_t k = 0; k < 2; k++)
+          {
+            uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                            (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+            data <<= 4;
+            _transfer(data2);
+          }
+        }
+      }
+      _endTransfer();
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_290c_GDEY029F51H::writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!black && !color) return;
+  if (!color) return writeImage(black, x, y, w, h, invert, mirror_y, pgm);
+  //Serial.print("writeImage("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+    x -= x % 8; // byte boundary
+    w = wb * 8; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 8 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 8 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          black_data = pgm_read_byte(&black[idx]);
+          color_data = pgm_read_byte(&color[idx]);
+#else
+          black_data = black[idx];
+          color_data = color[idx];
+#endif
+        }
+        else
+        {
+          black_data = black[idx];
+          color_data = color[idx];
+        }
+        if (invert)
+        {
+          black_data = ~black_data;
+          color_data = ~color_data;
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      _startTransfer();
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 8; i++)
+      {
+        uint8_t black_data = black[i];
+        uint8_t color_data = color[i];
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
+        }
+      }
+      _endTransfer();
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      _paged = false;
+      int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+      x -= x % 8; // byte boundary
+      w = wb * 8; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      _startTransfer();
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+        {
+          uint8_t black_data = 0xFF, color_data = 0xFF;
+          if ((j >= x) && (j < x + w) && (i >= y) && (i < y + h))
+          {
+            uint32_t idx = mirror_y ? (j - x) / 8 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 8 + uint32_t(i - y) * wb;
+            if (pgm)
+            {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+              black_data = pgm_read_byte(&black[idx]);
+              color_data = pgm_read_byte(&color[idx]);
+#else
+              black_data = black[idx];
+              color_data = color[idx];
+#endif
+            }
+            else
+            {
+              black_data = black[idx];
+              color_data = color[idx];
+            }
+            if (invert)
+            {
+              black_data = ~black_data;
+              color_data = ~color_data;
+            }
+          }
+          for (int16_t k = 0; k < 2; k++)
+          {
+            uint8_t out_data = 0x00;
+            for (int16_t l = 0; l < 4; l++)
+            {
+              out_data <<= 2;
+              if (!(color_data & 0x80)) out_data |= 0x03; // red
+              else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+              black_data <<= 1;
+              color_data <<= 1;
+            }
+            _transfer(out_data);
+          }
+        }
+      }
+      _endTransfer();
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_290c_GDEY029F51H::writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  //Serial.print("writeImagePart("); Serial.print(x_part); Serial.print(", "); Serial.print(y_part); Serial.print(", ");
+  //Serial.print(w_bitmap); Serial.print(", "); Serial.print(h_bitmap); Serial.print(", ");
+  //Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 7) / 8; // width bytes, bitmaps are padded
+  x_part -= x_part % 8; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  // make x, w multiple of 8
+  w += x % 8; // adjust for byte boundary of x
+  x -= x % 8; // byte boundary ox
+  w = 8 * ((w + 7) / 8); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (hasPartialUpdate)
+  {
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t data;
+        // use wb_bitmap, h_bitmap of bitmap for index!
+        uint32_t idx = mirror_y ? x_part / 8 + j + dx / 8 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + uint32_t(y_part + i + dy) * wb_bitmap;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&bitmap[idx]);
+#else
+          data = bitmap[idx];
+#endif
+        }
+        else
+        {
+          data = bitmap[idx];
+        }
+        if (invert) data = ~data;
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+      {
+        uint8_t data = 0xFF;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 8 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 8 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            data = pgm_read_byte(&bitmap[idx]);
+#else
+            data = bitmap[idx];
+#endif
+          }
+          else
+          {
+            data = bitmap[idx];
+          }
+          if (invert) data = ~data;
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_290c_GDEY029F51H::writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  //Serial.print("writeImagePart("); Serial.print(x_part); Serial.print(", "); Serial.print(y_part); Serial.print(", ");
+  //Serial.print(w_bitmap); Serial.print(", "); Serial.print(h_bitmap); Serial.print(", ");
+  //Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  if (!black && !color) return;
+  if (!color) return writeImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 7) / 8; // width bytes, bitmaps are padded
+  x_part -= x_part % 8; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  // make x, w multiple of 8
+  w += x % 8; // adjust for byte boundary of x
+  x -= x % 8; // byte boundary ox
+  w = 8 * ((w + 7) / 8); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (hasPartialUpdate)
+  {
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        // use wb_bitmap, h_bitmap of bitmap for index!
+        uint32_t idx = mirror_y ? x_part / 8 + j + dx / 8 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + uint32_t(y_part + i + dy) * wb_bitmap;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          black_data = pgm_read_byte(&black[idx]);
+          color_data = pgm_read_byte(&color[idx]);
+#else
+          black_data = black[idx];
+          color_data = color[idx];
+#endif
+        }
+        else
+        {
+          black_data = black[idx];
+          color_data = color[idx];
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+      {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 8 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 8 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            black_data = pgm_read_byte(&black[idx]);
+            color_data = pgm_read_byte(&color[idx]);
+#else
+            black_data = black[idx];
+            color_data = color[idx];
+#endif
+          }
+          else
+          {
+            black_data = black[idx];
+            color_data = color[idx];
+          }
+          if (invert)
+          {
+            black_data = ~black_data;
+            color_data = ~color_data;
+          }
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_290c_GDEY029F51H::writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!data1) return;
+  //Serial.print("writeNative("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 3) / 4; // width bytes, bitmaps are padded
+    x -= x % 4; // byte boundary
+    w = wb * 4; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 4; j++)
+      {
+        uint8_t data;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 4 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 4 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&data1[idx]);
+#else
+          data = data1[idx];
+#endif
+        }
+        else
+        {
+          data = data1[idx];
+        }
+        if (invert) data = ~data;
+        _transfer(data);
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      _startTransfer();
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 4; i++)
+      {
+        uint8_t data = data1[i];
+        _transfer(data);
+      }
+      _endTransfer();
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      //Serial.println("not paged");
+      _paged = false;
+      int16_t wb = (w + 3) / 4; // width bytes, bitmaps are padded
+      x -= x % 4; // byte boundary
+      w = wb * 4; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      _startTransfer();
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 4)
+        {
+          uint8_t data = 0x55;
+          if (data1)
+          {
+            if ((j >= x) && (j < x + w) && (i >= y) && (i < y + h))
+            {
+              uint32_t idx = mirror_y ? (j - x) / 4 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 4 + uint32_t(i - y) * wb;
+              if (pgm)
+              {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+                data = pgm_read_byte(&data1[idx]);
+#else
+                data = data1[idx];
+#endif
+              }
+              else
+              {
+                data = data1[idx];
+              }
+              if (invert) data = ~data;
+            }
+          }
+          _transfer(data);
+        }
+      }
+      _endTransfer();
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_290c_GDEY029F51H::writeNativePart(const uint8_t* data1, const uint8_t* data2, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!data1) return;
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 3) / 4; // width bytes, bitmaps are padded
+  x_part -= x_part % 4; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  w += x % 4; // adjust for byte boundary of x
+  x -= x % 4; // byte boundary
+  w = 4 * ((w + 3) / 4); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (hasPartialUpdate)
+  {
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 4; j++)
+      {
+        uint8_t data;
+        // use wb_bitmap, h_bitmap of bitmap for index!
+        uint32_t idx = mirror_y ? x_part / 4 + j + dx / 4 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 4 + j + dx / 4 + uint32_t(y_part + i + dy) * wb_bitmap;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&data1[idx]);
+#else
+          data = data1[idx];
+#endif
+        }
+        else
+        {
+          data = data1[idx];
+        }
+        if (invert) data = ~data;
+        _transfer(data);
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 4)
+      {
+        uint8_t data = 0x55;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 4 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 4 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            data = pgm_read_byte(&data1[idx]);
+#else
+            data = data1[idx];
+#endif
+          }
+          else
+          {
+            data = data1[idx];
+          }
+          if (invert) data = ~data;
+        }
+        _transfer(data);
+      }
+    }
+    _endTransfer();
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_290c_GDEY029F51H::drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImage(bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_290c_GDEY029F51H::drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImagePart(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_290c_GDEY029F51H::drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImage(black, color, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_290c_GDEY029F51H::drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImagePart(black, color, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_290c_GDEY029F51H::drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeNative(data1, data2, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_290c_GDEY029F51H::refresh(bool partial_update_mode)
+{
+  if (hasPartialUpdate) _setPartialRamArea(0, 0, WIDTH, HEIGHT);
+  _refresh(partial_update_mode);
+}
+
+void GxEPD2_290c_GDEY029F51H::refresh(int16_t x, int16_t y, int16_t w, int16_t h)
+{
+  // intersection with screen
+  int16_t w1 = x < 0 ? w + x : w; // reduce
+  int16_t h1 = y < 0 ? h + y : h; // reduce
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  w1 = x1 + w1 < int16_t(WIDTH) ? w1 : int16_t(WIDTH) - x1; // limit
+  h1 = y1 + h1 < int16_t(HEIGHT) ? h1 : int16_t(HEIGHT) - y1; // limit
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  // make x1, w1 multiple of 4
+  w1 += x1 % 4;
+  if (w1 % 4 > 0) w1 += 4 - w1 % 4;
+  x1 -= x1 % 4;
+  bool fullscreen = ((x1 == 0) && (y1 == 0) && (w1 == WIDTH) && (h1 == HEIGHT));
+  if (hasPartialUpdate) _setPartialRamArea(x1, y1, w1, h1, !fullscreen);
+  _refresh(!fullscreen);
+}
+
+void GxEPD2_290c_GDEY029F51H::powerOff()
+{
+  _PowerOff();
+}
+
+void GxEPD2_290c_GDEY029F51H::hibernate()
+{
+  _PowerOff();
+  if (_rst >= 0)
+  {
+    _writeCommand(0x07); // deep sleep
+    _writeData(0xA5);    // control code
+    _hibernating = true;
+    _init_display_done = false;
+  }
+}
+
+void GxEPD2_290c_GDEY029F51H::setPaged()
+{
+  if (!hasPartialUpdate)
+  {
+    _paged = true;
+    _InitDisplay();
+    _writeCommand(0x10);
+  }
+}
+
+void GxEPD2_290c_GDEY029F51H::_refresh(bool partial_update_mode)
+{
+  _writeCommand(0x50); // VCOM and Data Interval Setting
+  _writeData(partial_update_mode ? 0x97 : 0x37); // floating or white
+  _writeCommand(0x12); // Display Refresh
+  _writeData(0x00);
+  delay(1);
+  _waitWhileBusy("_refresh", full_refresh_time);
+  //_power_is_on = false; // not needed
+  _init_display_done = false; // needed
+}
+
+void GxEPD2_290c_GDEY029F51H::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool partial_mode)
+{
+  //Serial.print("_setPartialRamArea("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  _writeCommand(0x83);
+  _writeData(x / 256);
+  _writeData(x % 256);
+  _writeData((x + w - 1) / 256);
+  _writeData((x + w - 1) % 256);
+  _writeData(y / 256);
+  _writeData(y % 256);
+  _writeData((y + h - 1) / 256);
+  _writeData((y + h - 1) % 256);
+  _writeData(partial_mode ? 0x01 : 0x00);
+}
+
+void GxEPD2_290c_GDEY029F51H::_PowerOn()
+{
+  if (!_power_is_on)
+  {
+    _writeCommand(0x04);
+    _waitWhileBusy("_PowerOn", power_on_time);
+  }
+  _power_is_on = true;
+}
+
+void GxEPD2_290c_GDEY029F51H::_PowerOff()
+{
+  if (_power_is_on)
+  {
+    _writeCommand(0x02);
+    _writeData(0x00);
+    _waitWhileBusy("_PowerOff", power_off_time);
+  }
+  _power_is_on = false;
+}
+
+void GxEPD2_290c_GDEY029F51H::_InitDisplay()
+{
+  //Serial.println("_InitDisplay");
+  // initcode from Good Dispay demo for GDEY029F51H
+  if ((_rst >= 0) && (_hibernating || _initial_write))
+  {
+    digitalWrite(_rst, HIGH);
+    delay(20); // At least 20ms delay
+    digitalWrite(_rst, LOW); // Module reset
+    delay(2);  // At least 40ms delay, 2ms for WS "clever" reset
+    digitalWrite(_rst, HIGH);
+    delay(2); // At least 50ms delay (32ms measured)
+    _waitWhileBusy("_InitDisplay reset", power_on_time);
+    _hibernating = false;
+    _power_is_on = false;
+  }
+  _writeCommand(0x4D); // ??
+  _writeData(0x78);
+  _writeCommand(0x00); // PSR
+  _writeData(0x0F);    // default res (176x296)), scan up, shift left, booster on, no effect (no RST)
+  _writeData(0x29);    // LUT from MPT, no add scan, VCOM default, TS_AUTO, VGN default, VCOM default, VCOM floating after refresh
+  _writeCommand(0x01); // PWRR
+  _writeData(0x07);    // VMODE default, VSPL internal, VSP/VSN internal, VGP/VGN internal
+  _writeData(0x00);    // VGP/VGN 20V
+  _writeCommand(0x03); // POFS
+  _writeData(0x10);    // T_VDGP_OFF 40ms, T_VDS_OFF 20ms
+  _writeData(0x54);    // VGP_LEN 2500ms, VGP_EXT 2000ms
+  _writeData(0x44);    // XON_DLY 2000ms, XON_LEN 2000ms
+  _writeCommand(0x06); // BTST Booster Soft Start
+  _writeData(0x05);    // PHB_SFT, PHA_SFT
+  _writeData(0x00);    // PHA_ON
+  _writeData(0x3F);    // PHA_OFF
+  _writeData(0x0A);    // PHB_ON
+  _writeData(0x25);    // PHB_OFF
+  _writeData(0x12);    // PHC_ON
+  _writeData(0x1A);    // PHC_OFF
+  _writeCommand(0x50); // CDI
+  _writeData(0x37);    // (VBD 1, DDX 1) Gray1, 10hsync
+  //_writeData(0x17); // black border
+  //_writeData(0x37); // white border (default)
+  //_writeData(0x57); // yellow border
+  //_writeData(0x77); // red border
+  //_writeData(0x97); // floating border
+  _writeCommand(0x60); // TCON
+  _writeData(0x02);    // ?
+  _writeData(0x02);    // ?
+  _writeCommand(0x61);      // TRES
+  _writeData(WIDTH / 256);  // Source_BITS_H
+  _writeData(WIDTH % 256);  // Source_BITS_L
+  _writeData(HEIGHT / 256); // Gate_BITS_H
+  _writeData(HEIGHT % 256); // Gate_BITS_L
+  _writeCommand(0xE7); // ??
+  _writeData(0x1C);
+  _writeCommand(0xE3); // PWS
+  _writeData(0x22);
+  _writeCommand(0xB4); // LVD
+  _writeData(0xD0);
+  _writeCommand(0xB5); // ??
+  _writeData(0x03);
+  _writeCommand(0xE9); // ??
+  _writeData(0x01);
+  _writeCommand(0x30); // PLL
+  _writeData(0x08);    // Dynamic frame rate enabled
+  _PowerOn();
+  _init_display_done = true;
+}

+ 77 - 0
src/epd4c/GxEPD2_290c_GDEY029F51H.h

@@ -0,0 +1,77 @@
+// Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
+// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
+//
+// based on Demo Example from Good Display: https://www.good-display.com/comp/xcompanyFile/downloadNew.do?appId=24&fid=1785&id=1151
+// Panel: GDEY029F51H : https://www.good-display.com/product/464.html
+// Controller: JD79667, no specs, see GDEY0266F51H panel specs for command list subset
+//
+// Author: Jean-Marc Zingg
+//
+// Version: see library.properties
+//
+// Library: https://github.com/ZinggJM/GxEPD2
+
+#ifndef _GxEPD2_290c_GDEY029F51H_H_
+#define _GxEPD2_290c_GDEY029F51H_H_
+
+#include "../GxEPD2_EPD.h"
+
+class GxEPD2_290c_GDEY029F51H : public GxEPD2_EPD
+{
+  public:
+    // attributes
+    static const uint16_t WIDTH = 168;
+    static const uint16_t WIDTH_VISIBLE = WIDTH;
+    static const uint16_t HEIGHT = 384;
+    static const GxEPD2::Panel panel = GxEPD2::GDEY029F51H;
+    static const bool hasColor = true;
+    static const bool hasPartialUpdate = true; // can be switched off
+    static const bool hasFastPartialUpdate = false;
+    static const uint16_t power_on_time = 200; // ms, e.g. 157485us
+    static const uint16_t power_off_time = 100; // ms, e.g. 81338us
+    static const uint16_t full_refresh_time = 25000; // ms, e.g. 21428295us
+    static const uint16_t partial_refresh_time = 25000; // ms, e.g. 21428295us
+    // constructor
+    GxEPD2_290c_GDEY029F51H(int16_t cs, int16_t dc, int16_t rst, int16_t busy);
+    // methods (virtual)
+    //  Support for Bitmaps (Sprites) to Controller Buffer and to Screen
+    void clearScreen(uint8_t value = 0xFF); // init controller memory and screen (default white)
+    void clearScreen(uint8_t black_value, uint8_t color_value); // init controller memory and screen
+    void writeScreenBuffer(uint8_t value = 0xFF); // init controller memory (default white)
+    void writeScreenBuffer(uint8_t black_value, uint8_t color_value); // init controller memory
+    // write to controller memory, without screen refresh; x and w should be multiple of 8
+    void writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write sprite of native data to controller memory, without screen refresh; x and w should be multiple of 8
+    void writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeNativePart(const uint8_t* data1, const uint8_t* data2, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write to controller memory, with screen refresh; x and w should be multiple of 8
+    void drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                       int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                       int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write sprite of native data to controller memory, with screen refresh; x and w should be multiple of 8
+    void drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void refresh(bool partial_update_mode = false); // screen refresh from controller memory to full screen
+    void refresh(int16_t x, int16_t y, int16_t w, int16_t h); // screen refresh from controller memory, partial screen
+    void powerOff(); // turns off generation of panel driving voltages, avoids screen fading over time
+    void hibernate(); // turns powerOff() and sets controller to deep sleep for minimum power use, ONLY if wakeable by RST (rst >= 0)
+    void setPaged(); // for GxEPD2_154c paged workaround, also for 4-color for use with hasPartialUpdate = false
+  private:
+    void _refresh(bool partial_update_mode);
+    void _setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool partial_mode = true);
+    void _PowerOn();
+    void _PowerOff();
+    void _InitDisplay();
+  private:
+    bool _paged;
+};
+
+#endif

+ 933 - 0
src/epd4c/GxEPD2_300c.cpp

@@ -0,0 +1,933 @@
+// Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
+// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
+//
+// based on Demo Example from Waveshare: https://github.com/waveshareteam/e-Paper/tree/master/Arduino/epd3in0g
+// Panel: 3inch 4-Color E-Paper : https://www.waveshare.com/product/displays/e-paper/3inch-e-paper-module-g.htm
+// Controller: unknown
+// initcode extracted from Waveshare library file epd3in0g.cpp from: https://github.com/waveshareteam/e-Paper/tree/master/Arduino/epd3in0g
+//
+// Author: Jean-Marc Zingg
+//
+// Version: see library.properties
+//
+// Library: https://github.com/ZinggJM/GxEPD2
+
+#include "GxEPD2_300c.h"
+
+GxEPD2_300c::GxEPD2_300c(int16_t cs, int16_t dc, int16_t rst, int16_t busy) :
+  GxEPD2_EPD(cs, dc, rst, busy, LOW, 50000000, WIDTH, HEIGHT, panel, hasColor, hasPartialUpdate, hasFastPartialUpdate)
+{
+  _paged = false;
+}
+
+void GxEPD2_300c::clearScreen(uint8_t value)
+{
+  clearScreen(value, 0xFF);
+}
+
+void GxEPD2_300c::clearScreen(uint8_t black_value, uint8_t color_value)
+{
+  writeScreenBuffer(black_value, color_value);
+  refresh();
+}
+
+void GxEPD2_300c::writeScreenBuffer(uint8_t value)
+{
+  writeScreenBuffer(value, 0xFF);
+}
+
+void GxEPD2_300c::writeScreenBuffer(uint8_t black_value, uint8_t color_value)
+{
+  //Serial.println("writeScreenBuffer");
+  if (!_init_display_done) _InitDisplay();
+  _writeCommand(0x10);
+  for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(HEIGHT) / 4; i++)
+  {
+    _writeData(0xFF == black_value ? 0x55 : 0x00);
+  }
+  _initial_write = false; // initial full screen buffer clean done
+}
+
+void GxEPD2_300c::writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  //Serial.print("writeImage("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+    x -= x % 8; // byte boundary
+    w = wb * 8; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t data = 0xFF;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 8 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 8 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&bitmap[idx]);
+#else
+          data = bitmap[idx];
+#endif
+        }
+        else
+        {
+          data = bitmap[idx];
+        }
+        if (invert) data = ~data;
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _writeData(data2);
+        }
+      }
+    }
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 8; i++)
+      {
+        uint8_t data = bitmap[i];
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _writeData(data2);
+        }
+      }
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      _paged = false;
+      int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+      x -= x % 8; // byte boundary
+      w = wb * 8; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+        {
+          uint8_t data = 0xFF;
+          if ((j >= x) && (j <= x + w) && (i >= y) && (i < y + h))
+          {
+            uint32_t idx = mirror_y ? (j - x) / 8 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 8 + uint32_t(i - y) * wb;
+            if (pgm)
+            {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+              data = pgm_read_byte(&bitmap[idx]);
+#else
+              data = bitmap[idx];
+#endif
+            }
+            else
+            {
+              data = bitmap[idx];
+            }
+            if (invert) data = ~data;
+          }
+          for (int16_t k = 0; k < 2; k++)
+          {
+            uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                            (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+            data <<= 4;
+            _writeData(data2);
+          }
+        }
+      }
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_300c::writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!black && !color) return;
+  if (!color) return writeImage(black, x, y, w, h, invert, mirror_y, pgm);
+  //Serial.print("writeImage("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+    x -= x % 8; // byte boundary
+    w = wb * 8; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 8 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 8 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          black_data = pgm_read_byte(&black[idx]);
+          color_data = pgm_read_byte(&color[idx]);
+#else
+          black_data = black[idx];
+          color_data = color[idx];
+#endif
+        }
+        else
+        {
+          black_data = black[idx];
+          color_data = color[idx];
+        }
+        if (invert)
+        {
+          black_data = ~black_data;
+          color_data = ~color_data;
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _writeData(out_data);
+        }
+      }
+    }
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 8; i++)
+      {
+        uint8_t black_data = black[i];
+        uint8_t color_data = color[i];
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _writeData(out_data);
+        }
+      }
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      _paged = false;
+      int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+      x -= x % 8; // byte boundary
+      w = wb * 8; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+        {
+          uint8_t black_data = 0xFF, color_data = 0xFF;
+          if ((j >= x) && (j < x + w) && (i >= y) && (i < y + h))
+          {
+            uint32_t idx = mirror_y ? (j - x) / 8 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 8 + uint32_t(i - y) * wb;
+            if (pgm)
+            {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+              black_data = pgm_read_byte(&black[idx]);
+              color_data = pgm_read_byte(&color[idx]);
+#else
+              black_data = black[idx];
+              color_data = color[idx];
+#endif
+            }
+            else
+            {
+              black_data = black[idx];
+              color_data = color[idx];
+            }
+            if (invert)
+            {
+              black_data = ~black_data;
+              color_data = ~color_data;
+            }
+          }
+          for (int16_t k = 0; k < 2; k++)
+          {
+            uint8_t out_data = 0x00;
+            for (int16_t l = 0; l < 4; l++)
+            {
+              out_data <<= 2;
+              if (!(color_data & 0x80)) out_data |= 0x03; // red
+              else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+              black_data <<= 1;
+              color_data <<= 1;
+            }
+            _writeData(out_data);
+          }
+        }
+      }
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_300c::writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  //Serial.print("writeImagePart("); Serial.print(x_part); Serial.print(", "); Serial.print(y_part); Serial.print(", ");
+  //Serial.print(w_bitmap); Serial.print(", "); Serial.print(h_bitmap); Serial.print(", ");
+  //Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 7) / 8; // width bytes, bitmaps are padded
+  x_part -= x_part % 8; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  // make x, w multiple of 8
+  w += x % 8; // adjust for byte boundary of x
+  x -= x % 8; // byte boundary ox
+  w = 8 * ((w + 7) / 8); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (hasPartialUpdate)
+  {
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t data;
+        // use wb_bitmap, h_bitmap of bitmap for index!
+        uint32_t idx = mirror_y ? x_part / 8 + j + dx / 8 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + uint32_t(y_part + i + dy) * wb_bitmap;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&bitmap[idx]);
+#else
+          data = bitmap[idx];
+#endif
+        }
+        else
+        {
+          data = bitmap[idx];
+        }
+        if (invert) data = ~data;
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _writeData(data2);
+        }
+      }
+    }
+  }
+  else
+  {
+    _writeCommand(0x10);
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+      {
+        uint8_t data = 0xFF;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 8 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 8 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            data = pgm_read_byte(&bitmap[idx]);
+#else
+            data = bitmap[idx];
+#endif
+          }
+          else
+          {
+            data = bitmap[idx];
+          }
+          if (invert) data = ~data;
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _writeData(data2);
+        }
+      }
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_300c::writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  //Serial.print("writeImagePart("); Serial.print(x_part); Serial.print(", "); Serial.print(y_part); Serial.print(", ");
+  //Serial.print(w_bitmap); Serial.print(", "); Serial.print(h_bitmap); Serial.print(", ");
+  //Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  if (!black && !color) return;
+  if (!color) return writeImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 7) / 8; // width bytes, bitmaps are padded
+  x_part -= x_part % 8; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  // make x, w multiple of 8
+  w += x % 8; // adjust for byte boundary of x
+  x -= x % 8; // byte boundary ox
+  w = 8 * ((w + 7) / 8); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (hasPartialUpdate)
+  {
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        // use wb_bitmap, h_bitmap of bitmap for index!
+        uint32_t idx = mirror_y ? x_part / 8 + j + dx / 8 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + uint32_t(y_part + i + dy) * wb_bitmap;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          black_data = pgm_read_byte(&black[idx]);
+          color_data = pgm_read_byte(&color[idx]);
+#else
+          black_data = black[idx];
+          color_data = color[idx];
+#endif
+        }
+        else
+        {
+          black_data = black[idx];
+          color_data = color[idx];
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _writeData(out_data);
+        }
+      }
+    }
+  }
+  else
+  {
+    _writeCommand(0x10);
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+      {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 8 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 8 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            black_data = pgm_read_byte(&black[idx]);
+            color_data = pgm_read_byte(&color[idx]);
+#else
+            black_data = black[idx];
+            color_data = color[idx];
+#endif
+          }
+          else
+          {
+            black_data = black[idx];
+            color_data = color[idx];
+          }
+          if (invert)
+          {
+            black_data = ~black_data;
+            color_data = ~color_data;
+          }
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _writeData(out_data);
+        }
+      }
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_300c::writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!data1) return;
+  //Serial.print("writeNative("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 3) / 4; // width bytes, bitmaps are padded
+    x -= x % 4; // byte boundary
+    w = wb * 4; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 4; j++)
+      {
+        uint8_t data;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 4 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 4 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&data1[idx]);
+#else
+          data = data1[idx];
+#endif
+        }
+        else
+        {
+          data = data1[idx];
+        }
+        if (invert) data = ~data;
+        _writeData(data);
+      }
+    }
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 4; i++)
+      {
+        uint8_t data = data1[i];
+        _writeData(data);
+      }
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      //Serial.println("not paged");
+      _paged = false;
+      int16_t wb = (w + 3) / 4; // width bytes, bitmaps are padded
+      x -= x % 4; // byte boundary
+      w = wb * 4; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 4)
+        {
+          uint8_t data = 0x55;
+          if (data1)
+          {
+            if ((j >= x) && (j < x + w) && (i >= y) && (i < y + h))
+            {
+              uint32_t idx = mirror_y ? (j - x) / 4 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 4 + uint32_t(i - y) * wb;
+              if (pgm)
+              {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+                data = pgm_read_byte(&data1[idx]);
+#else
+                data = data1[idx];
+#endif
+              }
+              else
+              {
+                data = data1[idx];
+              }
+              if (invert) data = ~data;
+            }
+          }
+          _writeData(data);
+        }
+      }
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_300c::writeNativePart(const uint8_t* data1, const uint8_t* data2, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!data1) return;
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 3) / 4; // width bytes, bitmaps are padded
+  x_part -= x_part % 4; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  w += x % 4; // adjust for byte boundary of x
+  x -= x % 4; // byte boundary
+  w = 4 * ((w + 3) / 4); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (hasPartialUpdate)
+  {
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 4; j++)
+      {
+        uint8_t data;
+        // use wb_bitmap, h_bitmap of bitmap for index!
+        uint32_t idx = mirror_y ? x_part / 4 + j + dx / 4 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 4 + j + dx / 4 + uint32_t(y_part + i + dy) * wb_bitmap;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&data1[idx]);
+#else
+          data = data1[idx];
+#endif
+        }
+        else
+        {
+          data = data1[idx];
+        }
+        if (invert) data = ~data;
+        _writeData(data);
+      }
+    }
+  }
+  else
+  {
+    _writeCommand(0x10);
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 4)
+      {
+        uint8_t data = 0x55;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 4 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 4 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            data = pgm_read_byte(&data1[idx]);
+#else
+            data = data1[idx];
+#endif
+          }
+          else
+          {
+            data = data1[idx];
+          }
+          if (invert) data = ~data;
+        }
+        _writeData(data);
+      }
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_300c::drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImage(bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_300c::drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                                int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImagePart(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_300c::drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImage(black, color, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_300c::drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                                int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImagePart(black, color, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_300c::drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeNative(data1, data2, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_300c::refresh(bool partial_update_mode)
+{
+  if (hasPartialUpdate) _setPartialRamArea(0, 0, WIDTH, HEIGHT);
+  _refresh(partial_update_mode);
+}
+
+void GxEPD2_300c::refresh(int16_t x, int16_t y, int16_t w, int16_t h)
+{
+  // intersection with screen
+  int16_t w1 = x < 0 ? w + x : w; // reduce
+  int16_t h1 = y < 0 ? h + y : h; // reduce
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  w1 = x1 + w1 < int16_t(WIDTH) ? w1 : int16_t(WIDTH) - x1; // limit
+  h1 = y1 + h1 < int16_t(HEIGHT) ? h1 : int16_t(HEIGHT) - y1; // limit
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  // make x1, w1 multiple of 4
+  w1 += x1 % 4;
+  if (w1 % 4 > 0) w1 += 4 - w1 % 4;
+  x1 -= x1 % 4;
+  bool fullscreen = ((x1 == 0) && (y1 == 0) && (w1 == WIDTH) && (h1 == HEIGHT));
+  if (hasPartialUpdate) _setPartialRamArea(x1, y1, w1, h1, !fullscreen);
+  _refresh(!fullscreen);
+}
+
+void GxEPD2_300c::powerOff()
+{
+  _PowerOff();
+}
+
+void GxEPD2_300c::hibernate()
+{
+  _PowerOff();
+  if (_rst >= 0)
+  {
+    _writeCommand(0x07); // deep sleep
+    _writeData(0xA5);    // control code
+    _hibernating = true;
+    _init_display_done = false;
+  }
+}
+
+void GxEPD2_300c::setPaged()
+{
+  if (!hasPartialUpdate)
+  {
+    _paged = true;
+    _InitDisplay();
+    _writeCommand(0x10);
+  }
+}
+
+void GxEPD2_300c::_refresh(bool partial_update_mode)
+{
+  _writeCommand(0x50); // VCOM and Data Interval Setting
+  _writeData(partial_update_mode ? 0x97 : 0x37); // floating or white
+  _writeCommand(0x12); // Display Refresh
+  _writeData(0x00);
+  delay(1);
+  _waitWhileBusy("_refresh", full_refresh_time);
+  //_power_is_on = false; // not needed
+  _init_display_done = false; // needed
+}
+
+void GxEPD2_300c::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool partial_mode)
+{
+  //Serial.print("_setPartialRamArea("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  _writeCommand(0x83);
+  _writeData(x / 256);
+  _writeData(x % 256);
+  _writeData((x + w - 1) / 256);
+  _writeData((x + w - 1) % 256);
+  _writeData(y / 256);
+  _writeData(y % 256);
+  _writeData((y + h - 1) / 256);
+  _writeData((y + h - 1) % 256);
+  _writeData(partial_mode ? 0x01 : 0x00);
+}
+
+void GxEPD2_300c::_PowerOn()
+{
+  if (!_power_is_on)
+  {
+    _writeCommand(0x04);
+    _waitWhileBusy("_PowerOn", power_on_time);
+  }
+  _power_is_on = true;
+}
+
+void GxEPD2_300c::_PowerOff()
+{
+  if (_power_is_on)
+  {
+    _writeCommand(0x02);
+    _writeData(0x00);
+    _waitWhileBusy("_PowerOff", power_off_time);
+  }
+  _power_is_on = false;
+}
+
+void GxEPD2_300c::_InitDisplay()
+{
+  Serial.println("_InitDisplay");
+  // this display needs a hard reset after every refesh, reason umknown
+  ////if ((_rst >= 0) && (_hibernating || _initial_write))
+  {
+    digitalWrite(_rst, HIGH);
+    delay(20);
+    digitalWrite(_rst, LOW);
+    delay(2);
+    digitalWrite(_rst, HIGH);
+    delay(2);
+    _waitWhileBusy("_InitDisplay reset", power_on_time);
+    _power_is_on = false;
+  }
+  _writeCommand(0x66);
+  _writeData(0x49);
+  _writeData(0x55);
+  _writeData(0x13);
+  _writeData(0x5D);
+  _writeData(0x05);
+  _writeData(0x10);
+  _writeCommand(0xB0);
+  _writeData(0x00); //1 boost
+  _writeCommand(0x01); // Power Settings
+  _writeData(0x0F);
+  _writeData(0x00);
+  _writeCommand(0x00); // Panel Settings
+  _writeData(0x4F);
+  _writeData(0x6B);
+  _writeCommand(0x06); // Booster Soft Start
+  _writeData(0xD7);
+  _writeData(0xDE);
+  _writeData(0x12);
+  _writeCommand(0x61); // Resolution Setting
+  _writeData(WIDTH / 256); // Source_BITS_H
+  _writeData(WIDTH % 256); // Source_BITS_L
+  _writeData(HEIGHT / 256); // Gate_BITS_H
+  _writeData(HEIGHT % 256); // Gate_BITS_L
+  _writeCommand(0x50); // VCOM and Data Interval Setting
+  //_writeData(0x17); // black border
+  _writeData(0x37); // white border (default)
+  //_writeData(0x57); // yellow border
+  //_writeData(0x77); // red border
+  //_writeData(0x97); // floating border
+  _writeCommand(0x60); // TCON
+  _writeData(0x0C);
+  _writeData(0x05);
+  _writeCommand(0xE3); // PWS
+  _writeData(0xFF);
+  _writeCommand(0x84); // T_VDCS
+  _writeData(0x00);
+  _PowerOn();
+  _init_display_done = true;
+}

+ 77 - 0
src/epd4c/GxEPD2_300c.h

@@ -0,0 +1,77 @@
+// Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
+// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
+//
+// based on Demo Example from Waveshare: https://github.com/waveshareteam/e-Paper/tree/master/Arduino/epd3in0g
+// Panel: 3inch 4-Color E-Paper : https://www.waveshare.com/product/displays/e-paper/3inch-e-paper-module-g.htm
+// Controller: unknown
+//
+// Author: Jean-Marc Zingg
+//
+// Version: see library.properties
+//
+// Library: https://github.com/ZinggJM/GxEPD2
+
+#ifndef _GxEPD2_300c_H_
+#define _GxEPD2_300c_H_
+
+#include "../GxEPD2_EPD.h"
+
+class GxEPD2_300c : public GxEPD2_EPD
+{
+  public:
+    // attributes
+    static const uint16_t WIDTH = 168;
+    static const uint16_t WIDTH_VISIBLE = WIDTH;
+    static const uint16_t HEIGHT = 400;
+    static const GxEPD2::Panel panel = GxEPD2::Waveshare3inch4color;
+    static const bool hasColor = true;
+    static const bool hasPartialUpdate = true;
+    static const bool hasFastPartialUpdate = false;
+    static const uint16_t power_on_time = 600; // ms, e.g. 574001us
+    static const uint16_t power_off_time = 50; // ms, e.g. 41000us
+    static const uint16_t full_refresh_time = 13000; // ms, e.g. 12358001us
+    static const uint16_t partial_refresh_time = 13000; // ms, e.g. 12358001us
+    // constructor
+    GxEPD2_300c(int16_t cs, int16_t dc, int16_t rst, int16_t busy);
+    // methods (virtual)
+    //  Support for Bitmaps (Sprites) to Controller Buffer and to Screen
+    void clearScreen(uint8_t value = 0xFF); // init controller memory and screen (default white)
+    void clearScreen(uint8_t black_value, uint8_t color_value); // init controller memory and screen
+    void writeScreenBuffer(uint8_t value = 0xFF); // init controller memory (default white)
+    void writeScreenBuffer(uint8_t black_value, uint8_t color_value); // init controller memory
+    // write to controller memory, without screen refresh; x and w should be multiple of 8
+    void writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write sprite of native data to controller memory, without screen refresh; x and w should be multiple of 8
+    void writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeNativePart(const uint8_t* data1, const uint8_t* data2, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write to controller memory, with screen refresh; x and w should be multiple of 8
+    void drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                       int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                       int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write sprite of native data to controller memory, with screen refresh; x and w should be multiple of 8
+    void drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void refresh(bool partial_update_mode = false); // screen refresh from controller memory to full screen
+    void refresh(int16_t x, int16_t y, int16_t w, int16_t h); // screen refresh from controller memory, partial screen
+    void powerOff(); // turns off generation of panel driving voltages, avoids screen fading over time
+    void hibernate(); // turns powerOff() and sets controller to deep sleep for minimum power use, ONLY if wakeable by RST (rst >= 0)
+    void setPaged(); // for GxEPD2_154c paged workaround, also for 4-color for use with hasPartialUpdate = false
+  private:
+    void _refresh(bool partial_update_mode);
+    void _setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool partial_mode = true);
+    void _PowerOn();
+    void _PowerOff();
+    void _InitDisplay();
+  private:
+    bool _paged;
+};
+
+#endif

+ 981 - 0
src/epd4c/GxEPD2_420c_GDEY0420F51.cpp

@@ -0,0 +1,981 @@
+// Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
+// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
+//
+// based on Demo Example from Good Display: https://www.good-display.com/comp/xcompanyFile/downloadNew.do?appId=24&fid=1892&id=1326
+// Panel: GDEY0420F51 : https://www.good-display.com/product/506.html
+// Panel specs: https://v4.cecdn.yun300.cn/100001_1909185148/GDEY042F51.pdf
+// Controller: HX8717, no specs, see panel specs for command list subset
+//
+// Author: Jean-Marc Zingg
+//
+// Version: see library.properties
+//
+// Library: https://github.com/ZinggJM/GxEPD2
+
+#include "GxEPD2_420c_GDEY0420F51.h"
+
+GxEPD2_420c_GDEY0420F51::GxEPD2_420c_GDEY0420F51(int16_t cs, int16_t dc, int16_t rst, int16_t busy) :
+  GxEPD2_EPD(cs, dc, rst, busy, LOW, 50000000, WIDTH, HEIGHT, panel, hasColor, hasPartialUpdate, hasFastPartialUpdate)
+{
+  _paged = false;
+}
+
+void GxEPD2_420c_GDEY0420F51::clearScreen(uint8_t value)
+{
+  clearScreen(value, 0xFF);
+}
+
+void GxEPD2_420c_GDEY0420F51::clearScreen(uint8_t black_value, uint8_t color_value)
+{
+  writeScreenBuffer(black_value, color_value);
+  refresh();
+}
+
+void GxEPD2_420c_GDEY0420F51::writeScreenBuffer(uint8_t value)
+{
+  writeScreenBuffer(value, 0xFF);
+}
+
+void GxEPD2_420c_GDEY0420F51::writeScreenBuffer(uint8_t black_value, uint8_t color_value)
+{
+  //Serial.println("writeScreenBuffer");
+  if (!_init_display_done) _InitDisplay();
+  _writeCommand(0x10);
+  _startTransfer();
+  for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(HEIGHT) / 4; i++)
+  {
+    _transfer(0xFF == black_value ? 0x55 : 0x00);
+  }
+  _endTransfer();
+  _initial_write = false; // initial full screen buffer clean done
+}
+
+void GxEPD2_420c_GDEY0420F51::writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  //Serial.print("writeImage("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+    x -= x % 8; // byte boundary
+    w = wb * 8; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t data = 0xFF;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 8 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 8 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&bitmap[idx]);
+#else
+          data = bitmap[idx];
+#endif
+        }
+        else
+        {
+          data = bitmap[idx];
+        }
+        if (invert) data = ~data;
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      _startTransfer();
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 8; i++)
+      {
+        uint8_t data = bitmap[i];
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
+      }
+      _endTransfer();
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      _paged = false;
+      int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+      x -= x % 8; // byte boundary
+      w = wb * 8; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      _startTransfer();
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+        {
+          uint8_t data = 0xFF;
+          if ((j >= x) && (j <= x + w) && (i >= y) && (i < y + h))
+          {
+            uint32_t idx = mirror_y ? (j - x) / 8 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 8 + uint32_t(i - y) * wb;
+            if (pgm)
+            {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+              data = pgm_read_byte(&bitmap[idx]);
+#else
+              data = bitmap[idx];
+#endif
+            }
+            else
+            {
+              data = bitmap[idx];
+            }
+            if (invert) data = ~data;
+          }
+          for (int16_t k = 0; k < 2; k++)
+          {
+            uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                            (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+            data <<= 4;
+            _transfer(data2);
+          }
+        }
+      }
+      _endTransfer();
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_420c_GDEY0420F51::writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!black && !color) return;
+  if (!color) return writeImage(black, x, y, w, h, invert, mirror_y, pgm);
+  //Serial.print("writeImage("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+    x -= x % 8; // byte boundary
+    w = wb * 8; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 8 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 8 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          black_data = pgm_read_byte(&black[idx]);
+          color_data = pgm_read_byte(&color[idx]);
+#else
+          black_data = black[idx];
+          color_data = color[idx];
+#endif
+        }
+        else
+        {
+          black_data = black[idx];
+          color_data = color[idx];
+        }
+        if (invert)
+        {
+          black_data = ~black_data;
+          color_data = ~color_data;
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      _startTransfer();
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 8; i++)
+      {
+        uint8_t black_data = black[i];
+        uint8_t color_data = color[i];
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
+        }
+      }
+      _endTransfer();
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      _paged = false;
+      int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+      x -= x % 8; // byte boundary
+      w = wb * 8; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      _startTransfer();
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+        {
+          uint8_t black_data = 0xFF, color_data = 0xFF;
+          if ((j >= x) && (j < x + w) && (i >= y) && (i < y + h))
+          {
+            uint32_t idx = mirror_y ? (j - x) / 8 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 8 + uint32_t(i - y) * wb;
+            if (pgm)
+            {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+              black_data = pgm_read_byte(&black[idx]);
+              color_data = pgm_read_byte(&color[idx]);
+#else
+              black_data = black[idx];
+              color_data = color[idx];
+#endif
+            }
+            else
+            {
+              black_data = black[idx];
+              color_data = color[idx];
+            }
+            if (invert)
+            {
+              black_data = ~black_data;
+              color_data = ~color_data;
+            }
+          }
+          for (int16_t k = 0; k < 2; k++)
+          {
+            uint8_t out_data = 0x00;
+            for (int16_t l = 0; l < 4; l++)
+            {
+              out_data <<= 2;
+              if (!(color_data & 0x80)) out_data |= 0x03; // red
+              else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+              black_data <<= 1;
+              color_data <<= 1;
+            }
+            _transfer(out_data);
+          }
+        }
+      }
+      _endTransfer();
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_420c_GDEY0420F51::writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  //Serial.print("writeImagePart("); Serial.print(x_part); Serial.print(", "); Serial.print(y_part); Serial.print(", ");
+  //Serial.print(w_bitmap); Serial.print(", "); Serial.print(h_bitmap); Serial.print(", ");
+  //Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 7) / 8; // width bytes, bitmaps are padded
+  x_part -= x_part % 8; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  // make x, w multiple of 8
+  w += x % 8; // adjust for byte boundary of x
+  x -= x % 8; // byte boundary ox
+  w = 8 * ((w + 7) / 8); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (hasPartialUpdate)
+  {
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t data;
+        // use wb_bitmap, h_bitmap of bitmap for index!
+        uint32_t idx = mirror_y ? x_part / 8 + j + dx / 8 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + uint32_t(y_part + i + dy) * wb_bitmap;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&bitmap[idx]);
+#else
+          data = bitmap[idx];
+#endif
+        }
+        else
+        {
+          data = bitmap[idx];
+        }
+        if (invert) data = ~data;
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+      {
+        uint8_t data = 0xFF;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 8 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 8 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            data = pgm_read_byte(&bitmap[idx]);
+#else
+            data = bitmap[idx];
+#endif
+          }
+          else
+          {
+            data = bitmap[idx];
+          }
+          if (invert) data = ~data;
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_420c_GDEY0420F51::writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  //Serial.print("writeImagePart("); Serial.print(x_part); Serial.print(", "); Serial.print(y_part); Serial.print(", ");
+  //Serial.print(w_bitmap); Serial.print(", "); Serial.print(h_bitmap); Serial.print(", ");
+  //Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  if (!black && !color) return;
+  if (!color) return writeImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 7) / 8; // width bytes, bitmaps are padded
+  x_part -= x_part % 8; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  // make x, w multiple of 8
+  w += x % 8; // adjust for byte boundary of x
+  x -= x % 8; // byte boundary ox
+  w = 8 * ((w + 7) / 8); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (hasPartialUpdate)
+  {
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 8; j++)
+      {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        // use wb_bitmap, h_bitmap of bitmap for index!
+        uint32_t idx = mirror_y ? x_part / 8 + j + dx / 8 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + uint32_t(y_part + i + dy) * wb_bitmap;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          black_data = pgm_read_byte(&black[idx]);
+          color_data = pgm_read_byte(&color[idx]);
+#else
+          black_data = black[idx];
+          color_data = color[idx];
+#endif
+        }
+        else
+        {
+          black_data = black[idx];
+          color_data = color[idx];
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+      {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 8 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 8 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            black_data = pgm_read_byte(&black[idx]);
+            color_data = pgm_read_byte(&color[idx]);
+#else
+            black_data = black[idx];
+            color_data = color[idx];
+#endif
+          }
+          else
+          {
+            black_data = black[idx];
+            color_data = color[idx];
+          }
+          if (invert)
+          {
+            black_data = ~black_data;
+            color_data = ~color_data;
+          }
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
+        }
+      }
+    }
+    _endTransfer();
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_420c_GDEY0420F51::writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!data1) return;
+  //Serial.print("writeNative("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 3) / 4; // width bytes, bitmaps are padded
+    x -= x % 4; // byte boundary
+    w = wb * 4; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 4; j++)
+      {
+        uint8_t data;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 4 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 4 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&data1[idx]);
+#else
+          data = data1[idx];
+#endif
+        }
+        else
+        {
+          data = data1[idx];
+        }
+        if (invert) data = ~data;
+        _transfer(data);
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      _startTransfer();
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 4; i++)
+      {
+        uint8_t data = data1[i];
+        _transfer(data);
+      }
+      _endTransfer();
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      //Serial.println("not paged");
+      _paged = false;
+      int16_t wb = (w + 3) / 4; // width bytes, bitmaps are padded
+      x -= x % 4; // byte boundary
+      w = wb * 4; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      _startTransfer();
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 4)
+        {
+          uint8_t data = 0x55;
+          if (data1)
+          {
+            if ((j >= x) && (j < x + w) && (i >= y) && (i < y + h))
+            {
+              uint32_t idx = mirror_y ? (j - x) / 4 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 4 + uint32_t(i - y) * wb;
+              if (pgm)
+              {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+                data = pgm_read_byte(&data1[idx]);
+#else
+                data = data1[idx];
+#endif
+              }
+              else
+              {
+                data = data1[idx];
+              }
+              if (invert) data = ~data;
+            }
+          }
+          _transfer(data);
+        }
+      }
+      _endTransfer();
+    }
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_420c_GDEY0420F51::writeNativePart(const uint8_t* data1, const uint8_t* data2, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!data1) return;
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 3) / 4; // width bytes, bitmaps are padded
+  x_part -= x_part % 4; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  w += x % 4; // adjust for byte boundary of x
+  x -= x % 4; // byte boundary
+  w = 4 * ((w + 3) / 4); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (hasPartialUpdate)
+  {
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 4; j++)
+      {
+        uint8_t data;
+        // use wb_bitmap, h_bitmap of bitmap for index!
+        uint32_t idx = mirror_y ? x_part / 4 + j + dx / 4 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 4 + j + dx / 4 + uint32_t(y_part + i + dy) * wb_bitmap;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&data1[idx]);
+#else
+          data = data1[idx];
+#endif
+        }
+        else
+        {
+          data = data1[idx];
+        }
+        if (invert) data = ~data;
+        _transfer(data);
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 4)
+      {
+        uint8_t data = 0x55;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 4 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 4 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            data = pgm_read_byte(&data1[idx]);
+#else
+            data = data1[idx];
+#endif
+          }
+          else
+          {
+            data = data1[idx];
+          }
+          if (invert) data = ~data;
+        }
+        _transfer(data);
+      }
+    }
+    _endTransfer();
+  }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_420c_GDEY0420F51::drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImage(bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_420c_GDEY0420F51::drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImagePart(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_420c_GDEY0420F51::drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImage(black, color, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_420c_GDEY0420F51::drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImagePart(black, color, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_420c_GDEY0420F51::drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeNative(data1, data2, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+}
+
+void GxEPD2_420c_GDEY0420F51::refresh(bool partial_update_mode)
+{
+  if (hasPartialUpdate) _setPartialRamArea(0, 0, WIDTH, HEIGHT);
+  _refresh(partial_update_mode);
+}
+
+void GxEPD2_420c_GDEY0420F51::refresh(int16_t x, int16_t y, int16_t w, int16_t h)
+{
+  // intersection with screen
+  int16_t w1 = x < 0 ? w + x : w; // reduce
+  int16_t h1 = y < 0 ? h + y : h; // reduce
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  w1 = x1 + w1 < int16_t(WIDTH) ? w1 : int16_t(WIDTH) - x1; // limit
+  h1 = y1 + h1 < int16_t(HEIGHT) ? h1 : int16_t(HEIGHT) - y1; // limit
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  // make x1, w1 multiple of 4
+  w1 += x1 % 4;
+  if (w1 % 4 > 0) w1 += 4 - w1 % 4;
+  x1 -= x1 % 4;
+  bool fullscreen = ((x1 == 0) && (y1 == 0) && (w1 == WIDTH) && (h1 == HEIGHT));
+  if (hasPartialUpdate) _setPartialRamArea(x1, y1, w1, h1, !fullscreen);
+  _refresh(!fullscreen);
+}
+
+void GxEPD2_420c_GDEY0420F51::powerOff()
+{
+  _PowerOff();
+}
+
+void GxEPD2_420c_GDEY0420F51::hibernate()
+{
+  _PowerOff();
+  if (_rst >= 0)
+  {
+    _writeCommand(0x07); // deep sleep
+    _writeData(0xA5);    // control code
+    _hibernating = true;
+    _init_display_done = false;
+  }
+}
+
+void GxEPD2_420c_GDEY0420F51::setPaged()
+{
+  if (!hasPartialUpdate)
+  {
+    _paged = true;
+    _InitDisplay();
+    _writeCommand(0x10);
+  }
+}
+
+void GxEPD2_420c_GDEY0420F51::_refresh(bool partial_update_mode)
+{
+  _writeCommand(0x50); // VCOM and Data Interval Setting
+  _writeData(partial_update_mode ? 0x97 : 0x37); // floating or white
+  _writeCommand(0x12); // Display Refresh
+  _writeData(0x00);
+  delay(1);
+  _waitWhileBusy("_refresh", full_refresh_time);
+  //_power_is_on = false; // not needed
+  _init_display_done = false; // needed
+}
+
+void GxEPD2_420c_GDEY0420F51::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool partial_mode)
+{
+  //Serial.print("_setPartialRamArea("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  _writeCommand(0x83);
+  _writeData(x / 256);
+  _writeData(x % 256);
+  _writeData((x + w - 1) / 256);
+  _writeData((x + w - 1) % 256);
+  _writeData(y / 256);
+  _writeData(y % 256);
+  _writeData((y + h - 1) / 256);
+  _writeData((y + h - 1) % 256);
+  _writeData(partial_mode ? 0x01 : 0x00);
+}
+
+void GxEPD2_420c_GDEY0420F51::_PowerOn()
+{
+  if (!_power_is_on)
+  {
+    _writeCommand(0x04);
+    _waitWhileBusy("_PowerOn", power_on_time);
+  }
+  _power_is_on = true;
+}
+
+void GxEPD2_420c_GDEY0420F51::_PowerOff()
+{
+  if (_power_is_on)
+  {
+    _writeCommand(0x02);
+    _writeData(0x00);
+    _waitWhileBusy("_PowerOff", power_off_time);
+  }
+  _power_is_on = false;
+}
+
+void GxEPD2_420c_GDEY0420F51::_InitDisplay()
+{
+  //Serial.println("_InitDisplay");
+  // initcode from Good Dispay demo for GDEY029F51H
+  if ((_rst >= 0) && (_hibernating || _initial_write))
+  {
+    digitalWrite(_rst, HIGH);
+    delay(20); // At least 20ms delay
+    digitalWrite(_rst, LOW); // Module reset
+    delay(2);  // At least 40ms delay, 2ms for WS "clever" reset
+    digitalWrite(_rst, HIGH);
+    delay(2); // At least 50ms delay (32ms measured)
+    _waitWhileBusy("_InitDisplay reset", power_on_time);
+    _hibernating = false;
+    _power_is_on = false;
+  }
+  _writeCommand(0x00); // PSR
+  _writeData(0x0F);    // default res (400x300)), scan up, shift left, booster on, no effect (no RST)
+  _writeData(0x09);    // LUT from MPT, no add scan, VCOM default, TS_AUTO, VGN default, VCOM default, VCOM floating after refresh  
+  _writeCommand(0x01); // PWRR
+  _writeData(0x07);    // VMODE default, VSPL internal, VSP/VSN internal, VGP/VGN internal
+  _writeData(0x00);    // VGP/VGN 20V
+  _writeData(0x22);    // RED 
+  _writeData(0x78);
+  _writeData(0x0A);    // WHITE
+  _writeData(0x22);    // RED   
+  _writeCommand(0x03); // POFS
+  _writeData(0x10);    // T_VDGP_OFF 40ms, T_VDS_OFF 20ms
+  _writeData(0x54);    // VGP_LEN 2500ms, VGP_EXT 2000ms
+  _writeData(0x44);    // XON_DLY 2000ms, XON_LEN 2000ms
+  _writeCommand(0x06); // BTST Booster Soft Start
+  _writeData(0x26);  
+  _writeData(0x26);  
+  _writeData(0x26);  
+  _writeCommand(0x30); // PLL
+  _writeData(0xf7 & 0x02); 
+  _writeCommand(0x41); // TSE temperature sensor
+  _writeData(0x00);    // disable 
+  _writeCommand(0x50); // CDI
+  _writeData(0x37);    // (VBD 1, DDX 1) Gray1, 10hsync
+  //_writeData(0x17); // black border
+  //_writeData(0x37); // white border (default)
+  //_writeData(0x57); // yellow border
+  //_writeData(0x77); // red border
+  //_writeData(0x97); // floating border
+  _writeCommand(0x60); // TCON
+  _writeData(0x02);    // ?
+  _writeData(0x02);    // ?
+  _writeCommand(0x61);      // TRES
+  _writeData(WIDTH / 256);  // Source_BITS_H
+  _writeData(WIDTH % 256);  // Source_BITS_L
+  _writeData(HEIGHT / 256); // Gate_BITS_H
+  _writeData(HEIGHT % 256); // Gate_BITS_L
+  _writeCommand(0x65); //0x65
+  _writeData(0x00);  
+  _writeData(0x00);  
+  _writeData(0x00);  
+  _writeData(0x00);  
+  _writeCommand(0x82); // VDCS
+  _writeData(0xAD);  
+  _writeCommand(0xE7); //0xE7
+  _writeData(0x1C);  
+  _writeCommand(0xE3); // PWS
+  _writeData(0x22);  
+  _writeCommand(0xE0); //0xE0
+  _writeData(0x00);  
+  _writeCommand(0xE9); 
+  _writeData(0x01);
+  _PowerOn();
+  _init_display_done = true;
+}

+ 78 - 0
src/epd4c/GxEPD2_420c_GDEY0420F51.h

@@ -0,0 +1,78 @@
+// Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
+// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
+//
+// based on Demo Example from Good Display: https://www.good-display.com/comp/xcompanyFile/downloadNew.do?appId=24&fid=1892&id=1326
+// Panel: GDEY0420F51 : https://www.good-display.com/product/506.html
+// Panel specs: https://v4.cecdn.yun300.cn/100001_1909185148/GDEY042F51.pdf
+// Controller: HX8717, no specs, see panel specs for command list subset
+//
+// Author: Jean-Marc Zingg
+//
+// Version: see library.properties
+//
+// Library: https://github.com/ZinggJM/GxEPD2
+
+#ifndef _GxEPD2_420c_GDEY0420F51_H_
+#define _GxEPD2_420c_GDEY0420F51_H_
+
+#include "../GxEPD2_EPD.h"
+
+class GxEPD2_420c_GDEY0420F51 : public GxEPD2_EPD
+{
+  public:
+    // attributes
+    static const uint16_t WIDTH = 400;
+    static const uint16_t WIDTH_VISIBLE = WIDTH;
+    static const uint16_t HEIGHT = 300;
+    static const GxEPD2::Panel panel = GxEPD2::GDEY0420F51;
+    static const bool hasColor = true;
+    static const bool hasPartialUpdate = true; // can be switched off
+    static const bool hasFastPartialUpdate = false;
+    static const uint16_t power_on_time = 100; // ms, e.g. 65197us
+    static const uint16_t power_off_time = 100; // ms, e.g. 84464us
+    static const uint16_t full_refresh_time = 30000; // ms, e.g. 27676925us
+    static const uint16_t partial_refresh_time = 30000; // ms, e.g. 27676925us
+    // constructor
+    GxEPD2_420c_GDEY0420F51(int16_t cs, int16_t dc, int16_t rst, int16_t busy);
+    // methods (virtual)
+    //  Support for Bitmaps (Sprites) to Controller Buffer and to Screen
+    void clearScreen(uint8_t value = 0xFF); // init controller memory and screen (default white)
+    void clearScreen(uint8_t black_value, uint8_t color_value); // init controller memory and screen
+    void writeScreenBuffer(uint8_t value = 0xFF); // init controller memory (default white)
+    void writeScreenBuffer(uint8_t black_value, uint8_t color_value); // init controller memory
+    // write to controller memory, without screen refresh; x and w should be multiple of 8
+    void writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write sprite of native data to controller memory, without screen refresh; x and w should be multiple of 8
+    void writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeNativePart(const uint8_t* data1, const uint8_t* data2, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write to controller memory, with screen refresh; x and w should be multiple of 8
+    void drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                       int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                       int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write sprite of native data to controller memory, with screen refresh; x and w should be multiple of 8
+    void drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void refresh(bool partial_update_mode = false); // screen refresh from controller memory to full screen
+    void refresh(int16_t x, int16_t y, int16_t w, int16_t h); // screen refresh from controller memory, partial screen
+    void powerOff(); // turns off generation of panel driving voltages, avoids screen fading over time
+    void hibernate(); // turns powerOff() and sets controller to deep sleep for minimum power use, ONLY if wakeable by RST (rst >= 0)
+    void setPaged(); // for GxEPD2_154c paged workaround, also for 4-color for use with hasPartialUpdate = false
+  private:
+    void _refresh(bool partial_update_mode);
+    void _setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool partial_mode = true);
+    void _PowerOn();
+    void _PowerOff();
+    void _InitDisplay();
+  private:
+    bool _paged;
+};
+
+#endif

+ 513 - 198
src/epd4c/GxEPD2_437c.cpp

@@ -28,7 +28,7 @@ void GxEPD2_437c::clearScreen(uint8_t value)
 void GxEPD2_437c::clearScreen(uint8_t black_value, uint8_t color_value)
 {
   writeScreenBuffer(black_value, color_value);
-  _Update_Full();
+  refresh();
 }
 
 void GxEPD2_437c::writeScreenBuffer(uint8_t value)
@@ -38,8 +38,8 @@ void GxEPD2_437c::writeScreenBuffer(uint8_t value)
 
 void GxEPD2_437c::writeScreenBuffer(uint8_t black_value, uint8_t color_value)
 {
-  _initial_write = false; // initial full screen buffer clean done
-  _Init_Full();
+  //Serial.println("writeScreenBuffer");
+  if (!_init_display_done) _InitDisplay();
   _writeCommand(0x10);
   _startTransfer();
   for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(HEIGHT) / 4; i++)
@@ -47,6 +47,7 @@ void GxEPD2_437c::writeScreenBuffer(uint8_t black_value, uint8_t color_value)
     _transfer(0xFF == black_value ? 0x55 : 0x00);
   }
   _endTransfer();
+  _initial_write = false; // initial full screen buffer clean done
 }
 
 void GxEPD2_437c::writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
@@ -54,60 +55,45 @@ void GxEPD2_437c::writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16
   //Serial.print("writeImage("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
   //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
   delay(1); // yield() to avoid WDT on ESP8266 and ESP32
-  if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
   {
-    //Serial.println("paged");
-    _startTransfer();
-    for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 8; i++)
-    {
-      uint8_t data = bitmap[i];
-      for (int16_t k = 0; k < 2; k++)
-      {
-        uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
-                        (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
-        data <<= 4;
-        _transfer(data2);
-      }
-    }
-    _endTransfer();
-    if (y + h == HEIGHT) // last page
-    {
-      //Serial.println("paged ended");
-      _paged = false;
-    }
-  }
-  else
-  {
-    _paged = false;
     int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
     x -= x % 8; // byte boundary
     w = wb * 8; // byte boundary
-    if ((w <= 0) || (h <= 0)) return;
-    _Init_Full();
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
     _writeCommand(0x10);
     _startTransfer();
-    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    for (int16_t i = 0; i < h1; i++)
     {
-      for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+      for (int16_t j = 0; j < w1 / 8; j++)
       {
         uint8_t data = 0xFF;
-        if ((j >= x) && (j <= x + w) && (i >= y) && (i < y + h))
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 8 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 8 + uint32_t(i + dy) * wb;
+        if (pgm)
         {
-          uint32_t idx = mirror_y ? (j - x) / 8 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 8 + uint32_t(i - y) * wb;
-          if (pgm)
-          {
 #if defined(__AVR) || defined(ESP8266) || defined(ESP32)
-            data = pgm_read_byte(&bitmap[idx]);
+          data = pgm_read_byte(&bitmap[idx]);
 #else
-            data = bitmap[idx];
+          data = bitmap[idx];
 #endif
-          }
-          else
-          {
-            data = bitmap[idx];
-          }
-          if (invert) data = ~data;
         }
+        else
+        {
+          data = bitmap[idx];
+        }
+        if (invert) data = ~data;
         for (int16_t k = 0; k < 2; k++)
         {
           uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
@@ -119,84 +105,156 @@ void GxEPD2_437c::writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16
     }
     _endTransfer();
   }
-  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
-}
-
-void GxEPD2_437c::writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
-{
-  if (!black && !color) return;
-  if (!color) return writeImage(black, x, y, w, h, invert, mirror_y, pgm);
-  //Serial.print("writeImage("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
-  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
-  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
-  if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+  else
   {
-    //Serial.println("paged");
-    _startTransfer();
-    for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 8; i++)
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
     {
-      uint8_t black_data = black[i];
-      uint8_t color_data = color[i];
-      for (int16_t k = 0; k < 2; k++)
+      //Serial.println("paged");
+      _startTransfer();
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 8; i++)
       {
-        uint8_t out_data = 0x00;
-        for (int16_t l = 0; l < 4; l++)
+        uint8_t data = bitmap[i];
+        for (int16_t k = 0; k < 2; k++)
         {
-          out_data <<= 2;
-          if (!(color_data & 0x80)) out_data |= 0x03; // red
-          else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
-          black_data <<= 1;
-          color_data <<= 1;
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
         }
-        _transfer(out_data);
+      }
+      _endTransfer();
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
       }
     }
-    _endTransfer();
-    if (y + h == HEIGHT) // last page
+    else
     {
-      //Serial.println("paged ended");
       _paged = false;
+      int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+      x -= x % 8; // byte boundary
+      w = wb * 8; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      _startTransfer();
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+        {
+          uint8_t data = 0xFF;
+          if ((j >= x) && (j <= x + w) && (i >= y) && (i < y + h))
+          {
+            uint32_t idx = mirror_y ? (j - x) / 8 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 8 + uint32_t(i - y) * wb;
+            if (pgm)
+            {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+              data = pgm_read_byte(&bitmap[idx]);
+#else
+              data = bitmap[idx];
+#endif
+            }
+            else
+            {
+              data = bitmap[idx];
+            }
+            if (invert) data = ~data;
+          }
+          for (int16_t k = 0; k < 2; k++)
+          {
+            uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                            (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+            data <<= 4;
+            _transfer(data2);
+          }
+        }
+      }
+      _endTransfer();
     }
   }
-  else
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_437c::writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (!black && !color) return;
+  if (!color) return writeImage(black, x, y, w, h, invert, mirror_y, pgm);
+  //Serial.print("writeImage("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
   {
-    _paged = false;
     int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
     x -= x % 8; // byte boundary
     w = wb * 8; // byte boundary
-    if ((w <= 0) || (h <= 0)) return;
-    _Init_Full();
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
     _writeCommand(0x10);
     _startTransfer();
-    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    for (int16_t i = 0; i < h1; i++)
     {
-      for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+      for (int16_t j = 0; j < w1 / 8; j++)
       {
         uint8_t black_data = 0xFF, color_data = 0xFF;
-        if ((j >= x) && (j < x + w) && (i >= y) && (i < y + h))
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 8 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 8 + uint32_t(i + dy) * wb;
+        if (pgm)
         {
-          uint32_t idx = mirror_y ? (j - x) / 8 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 8 + uint32_t(i - y) * wb;
-          if (pgm)
-          {
 #if defined(__AVR) || defined(ESP8266) || defined(ESP32)
-            black_data = pgm_read_byte(&black[idx]);
-            color_data = pgm_read_byte(&color[idx]);
+          black_data = pgm_read_byte(&black[idx]);
+          color_data = pgm_read_byte(&color[idx]);
 #else
-            black_data = black[idx];
-            color_data = color[idx];
+          black_data = black[idx];
+          color_data = color[idx];
 #endif
-          }
-          else
-          {
-            black_data = black[idx];
-            color_data = color[idx];
-          }
-          if (invert)
+        }
+        else
+        {
+          black_data = black[idx];
+          color_data = color[idx];
+        }
+        if (invert)
+        {
+          black_data = ~black_data;
+          color_data = ~color_data;
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
           {
-            black_data = ~black_data;
-            color_data = ~color_data;
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
           }
+          _transfer(out_data);
         }
+      }
+    }
+    _endTransfer();
+  }
+  else
+  {
+    if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
+    {
+      //Serial.println("paged");
+      _startTransfer();
+      for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(h) / 8; i++)
+      {
+        uint8_t black_data = black[i];
+        uint8_t color_data = color[i];
         for (int16_t k = 0; k < 2; k++)
         {
           uint8_t out_data = 0x00;
@@ -211,16 +269,82 @@ void GxEPD2_437c::writeImage(const uint8_t* black, const uint8_t* color, int16_t
           _transfer(out_data);
         }
       }
+      _endTransfer();
+      if (y + h == HEIGHT) // last page
+      {
+        //Serial.println("paged ended");
+        _paged = false;
+      }
+    }
+    else
+    {
+      _paged = false;
+      int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+      x -= x % 8; // byte boundary
+      w = wb * 8; // byte boundary
+      if ((w <= 0) || (h <= 0)) return;
+      _writeCommand(0x10);
+      _startTransfer();
+      for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+      {
+        for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+        {
+          uint8_t black_data = 0xFF, color_data = 0xFF;
+          if ((j >= x) && (j < x + w) && (i >= y) && (i < y + h))
+          {
+            uint32_t idx = mirror_y ? (j - x) / 8 + uint32_t((h - 1 - (i - y))) * wb : (j - x) / 8 + uint32_t(i - y) * wb;
+            if (pgm)
+            {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+              black_data = pgm_read_byte(&black[idx]);
+              color_data = pgm_read_byte(&color[idx]);
+#else
+              black_data = black[idx];
+              color_data = color[idx];
+#endif
+            }
+            else
+            {
+              black_data = black[idx];
+              color_data = color[idx];
+            }
+            if (invert)
+            {
+              black_data = ~black_data;
+              color_data = ~color_data;
+            }
+          }
+          for (int16_t k = 0; k < 2; k++)
+          {
+            uint8_t out_data = 0x00;
+            for (int16_t l = 0; l < 4; l++)
+            {
+              out_data <<= 2;
+              if (!(color_data & 0x80)) out_data |= 0x03; // red
+              else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+              black_data <<= 1;
+              color_data <<= 1;
+            }
+            _transfer(out_data);
+          }
+        }
+      }
+      _endTransfer();
     }
-    _endTransfer();
   }
   delay(1); // yield() to avoid WDT on ESP8266 and ESP32
 }
 
 void GxEPD2_437c::writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
-                                 int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
+  //Serial.print("writeImagePart("); Serial.print(x_part); Serial.print(", "); Serial.print(y_part); Serial.print(", ");
+  //Serial.print(w_bitmap); Serial.print(", "); Serial.print(h_bitmap); Serial.print(", ");
+  //Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
   delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
   if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
   if ((x_part < 0) || (x_part >= w_bitmap)) return;
   if ((y_part < 0) || (y_part >= h_bitmap)) return;
@@ -228,7 +352,9 @@ void GxEPD2_437c::writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t
   x_part -= x_part % 8; // byte boundary
   w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
   h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
-  x -= x % 8; // byte boundary
+  // make x, w multiple of 8
+  w += x % 8; // adjust for byte boundary of x
+  x -= x % 8; // byte boundary ox
   w = 8 * ((w + 7) / 8); // byte boundary, bitmaps are padded
   int16_t x1 = x < 0 ? 0 : x; // limit
   int16_t y1 = y < 0 ? 0 : y; // limit
@@ -239,18 +365,18 @@ void GxEPD2_437c::writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t
   w1 -= dx;
   h1 -= dy;
   if ((w1 <= 0) || (h1 <= 0)) return;
-  _Init_Full();
-  _writeCommand(0x10);
-  _startTransfer();
-  for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+  if (hasPartialUpdate)
   {
-    for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
     {
-      uint8_t data = 0xFF;
-      if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+      for (int16_t j = 0; j < w1 / 8; j++)
       {
+        uint8_t data;
         // use wb_bitmap, h_bitmap of bitmap for index!
-        uint32_t idx = mirror_y ? (x_part + j - x1) / 8 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 8 + uint32_t(y_part + i - y1) * wb_bitmap;
+        uint32_t idx = mirror_y ? x_part / 8 + j + dx / 8 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + uint32_t(y_part + i + dy) * wb_bitmap;
         if (pgm)
         {
 #if defined(__AVR) || defined(ESP8266) || defined(ESP32)
@@ -264,22 +390,60 @@ void GxEPD2_437c::writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t
           data = bitmap[idx];
         }
         if (invert) data = ~data;
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
       }
-      for (int16_t k = 0; k < 2; k++)
+    }
+    _endTransfer();
+  }
+  else
+  {
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
       {
-        uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
-                        (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
-        data <<= 4;
-        _transfer(data2);
+        uint8_t data = 0xFF;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 8 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 8 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            data = pgm_read_byte(&bitmap[idx]);
+#else
+            data = bitmap[idx];
+#endif
+          }
+          else
+          {
+            data = bitmap[idx];
+          }
+          if (invert) data = ~data;
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t data2 = (data & 0x80 ? 0x40 : 0x00) | (data & 0x40 ? 0x10 : 0x00) |
+                          (data & 0x20 ? 0x04 : 0x00) | (data & 0x10 ? 0x01 : 0x00);
+          data <<= 4;
+          _transfer(data2);
+        }
       }
     }
+    _endTransfer();
   }
-  _endTransfer();
   delay(1); // yield() to avoid WDT on ESP8266 and ESP32
 }
 
 void GxEPD2_437c::writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
-                                 int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   //Serial.print("writeImagePart("); Serial.print(x_part); Serial.print(", "); Serial.print(y_part); Serial.print(", ");
   //Serial.print(w_bitmap); Serial.print(", "); Serial.print(h_bitmap); Serial.print(", ");
@@ -287,6 +451,8 @@ void GxEPD2_437c::writeImagePart(const uint8_t* black, const uint8_t* color, int
   //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
   if (!black && !color) return;
   if (!color) return writeImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
   delay(1); // yield() to avoid WDT on ESP8266 and ESP32
   if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
   if ((x_part < 0) || (x_part >= w_bitmap)) return;
@@ -295,7 +461,9 @@ void GxEPD2_437c::writeImagePart(const uint8_t* black, const uint8_t* color, int
   x_part -= x_part % 8; // byte boundary
   w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
   h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
-  x -= x % 8; // byte boundary
+  // make x, w multiple of 8
+  w += x % 8; // adjust for byte boundary of x
+  x -= x % 8; // byte boundary ox
   w = 8 * ((w + 7) / 8); // byte boundary, bitmaps are padded
   int16_t x1 = x < 0 ? 0 : x; // limit
   int16_t y1 = y < 0 ? 0 : y; // limit
@@ -306,18 +474,18 @@ void GxEPD2_437c::writeImagePart(const uint8_t* black, const uint8_t* color, int
   w1 -= dx;
   h1 -= dy;
   if ((w1 <= 0) || (h1 <= 0)) return;
-  _Init_Full();
-  _writeCommand(0x10);
-  _startTransfer();
-  for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+  if (hasPartialUpdate)
   {
-    for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
     {
-      uint8_t black_data = 0xFF, color_data = 0xFF;
-      if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+      for (int16_t j = 0; j < w1 / 8; j++)
       {
+        uint8_t black_data = 0xFF, color_data = 0xFF;
         // use wb_bitmap, h_bitmap of bitmap for index!
-        uint32_t idx = mirror_y ? (x_part + j - x1) / 8 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 8 + uint32_t(y_part + i - y1) * wb_bitmap;
+        uint32_t idx = mirror_y ? x_part / 8 + j + dx / 8 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + uint32_t(y_part + i + dy) * wb_bitmap;
         if (pgm)
         {
 #if defined(__AVR) || defined(ESP8266) || defined(ESP32)
@@ -333,38 +501,129 @@ void GxEPD2_437c::writeImagePart(const uint8_t* black, const uint8_t* color, int
           black_data = black[idx];
           color_data = color[idx];
         }
-        if (invert)
+        for (int16_t k = 0; k < 2; k++)
         {
-          black_data = ~black_data;
-          color_data = ~color_data;
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
         }
       }
-      for (int16_t k = 0; k < 2; k++)
+    }
+    _endTransfer();
+  }
+  else
+  {
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 8)
       {
-        uint8_t out_data = 0x00;
-        for (int16_t l = 0; l < 4; l++)
+        uint8_t black_data = 0xFF, color_data = 0xFF;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
         {
-          out_data <<= 2;
-          if (!(color_data & 0x80)) out_data |= 0x03; // red
-          else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
-          black_data <<= 1;
-          color_data <<= 1;
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 8 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 8 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            black_data = pgm_read_byte(&black[idx]);
+            color_data = pgm_read_byte(&color[idx]);
+#else
+            black_data = black[idx];
+            color_data = color[idx];
+#endif
+          }
+          else
+          {
+            black_data = black[idx];
+            color_data = color[idx];
+          }
+          if (invert)
+          {
+            black_data = ~black_data;
+            color_data = ~color_data;
+          }
+        }
+        for (int16_t k = 0; k < 2; k++)
+        {
+          uint8_t out_data = 0x00;
+          for (int16_t l = 0; l < 4; l++)
+          {
+            out_data <<= 2;
+            if (!(color_data & 0x80)) out_data |= 0x03; // red
+            else out_data |= black_data & 0x80 ? 0x01 : 0x00; // white or black
+            black_data <<= 1;
+            color_data <<= 1;
+          }
+          _transfer(out_data);
         }
-        _transfer(out_data);
       }
     }
+    _endTransfer();
   }
-  _endTransfer();
   delay(1); // yield() to avoid WDT on ESP8266 and ESP32
 }
 
 void GxEPD2_437c::writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
-  if (data1)
+  if (!data1) return;
+  //Serial.print("writeNative("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
+  if (hasPartialUpdate)
+  {
+    int16_t wb = (w + 3) / 4; // width bytes, bitmaps are padded
+    x -= x % 4; // byte boundary
+    w = wb * 4; // byte boundary
+    int16_t x1 = x < 0 ? 0 : x; // limit
+    int16_t y1 = y < 0 ? 0 : y; // limit
+    int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+    int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+    int16_t dx = x1 - x;
+    int16_t dy = y1 - y;
+    w1 -= dx;
+    h1 -= dy;
+    if ((w1 <= 0) || (h1 <= 0)) return;
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
+    {
+      for (int16_t j = 0; j < w1 / 4; j++)
+      {
+        uint8_t data;
+        // use wb, h of bitmap for index!
+        uint32_t idx = mirror_y ? j + dx / 4 + uint32_t((h - 1 - (i + dy))) * wb : j + dx / 4 + uint32_t(i + dy) * wb;
+        if (pgm)
+        {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+          data = pgm_read_byte(&data1[idx]);
+#else
+          data = data1[idx];
+#endif
+        }
+        else
+        {
+          data = data1[idx];
+        }
+        if (invert) data = ~data;
+        _transfer(data);
+      }
+    }
+    _endTransfer();
+  }
+  else
   {
-    //Serial.print("writeNative("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
-    //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
-    delay(1); // yield() to avoid WDT on ESP8266 and ESP32
     if (_paged && (x == 0) && (w == int16_t(WIDTH)) && (h < int16_t(HEIGHT)))
     {
       //Serial.println("paged");
@@ -383,12 +642,12 @@ void GxEPD2_437c::writeNative(const uint8_t* data1, const uint8_t* data2, int16_
     }
     else
     {
+      //Serial.println("not paged");
       _paged = false;
       int16_t wb = (w + 3) / 4; // width bytes, bitmaps are padded
       x -= x % 4; // byte boundary
       w = wb * 4; // byte boundary
       if ((w <= 0) || (h <= 0)) return;
-      _Init_Full();
       _writeCommand(0x10);
       _startTransfer();
       for (int16_t i = 0; i < int16_t(HEIGHT); i++)
@@ -421,28 +680,27 @@ void GxEPD2_437c::writeNative(const uint8_t* data1, const uint8_t* data2, int16_
       }
       _endTransfer();
     }
-    delay(1); // yield() to avoid WDT on ESP8266 and ESP32
   }
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
 }
 
 void GxEPD2_437c::writeNativePart(const uint8_t* data1, const uint8_t* data2, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
-                                  int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
-  //Serial.print("writeNativePart("); Serial.print(x_part); Serial.print(", "); Serial.print(y_part); Serial.print(", ");
-  //Serial.print(w_bitmap); Serial.print(", "); Serial.print(h_bitmap); Serial.print(", ");
-  //Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
-  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
   if (!data1) return;
   delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if (!_init_display_done) _InitDisplay();
+  if (_initial_write) writeScreenBuffer();
   if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
   if ((x_part < 0) || (x_part >= w_bitmap)) return;
   if ((y_part < 0) || (y_part >= h_bitmap)) return;
-  int16_t wb_bitmap = (w_bitmap + 1) / 2; // width bytes, bitmaps are padded
-  x_part -= x_part % 2; // byte boundary
+  int16_t wb_bitmap = (w_bitmap + 3) / 4; // width bytes, bitmaps are padded
+  x_part -= x_part % 4; // byte boundary
   w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
   h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  w += x % 4; // adjust for byte boundary of x
   x -= x % 4; // byte boundary
-  w = 4 * ((w + 1) / 4); // byte boundary, bitmaps are padded
+  w = 4 * ((w + 3) / 4); // byte boundary, bitmaps are padded
   int16_t x1 = x < 0 ? 0 : x; // limit
   int16_t y1 = y < 0 ? 0 : y; // limit
   int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
@@ -452,18 +710,18 @@ void GxEPD2_437c::writeNativePart(const uint8_t* data1, const uint8_t* data2, in
   w1 -= dx;
   h1 -= dy;
   if ((w1 <= 0) || (h1 <= 0)) return;
-  _Init_Full();
-  _writeCommand(0x10);
-  _startTransfer();
-  for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+  if (hasPartialUpdate)
   {
-    for (int16_t j = 0; j < int16_t(WIDTH); j += 4)
+    _setPartialRamArea(x1, y1, w1, h1);
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < h1; i++)
     {
-      uint8_t data = 0x55;
-      if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+      for (int16_t j = 0; j < w1 / 4; j++)
       {
+        uint8_t data;
         // use wb_bitmap, h_bitmap of bitmap for index!
-        uint32_t idx = mirror_y ? (x_part + j - x1) / 4 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 4 + uint32_t(y_part + i - y1) * wb_bitmap;
+        uint32_t idx = mirror_y ? x_part / 4 + j + dx / 4 + uint32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 4 + j + dx / 4 + uint32_t(y_part + i + dy) * wb_bitmap;
         if (pgm)
         {
 #if defined(__AVR) || defined(ESP8266) || defined(ESP32)
@@ -477,11 +735,43 @@ void GxEPD2_437c::writeNativePart(const uint8_t* data1, const uint8_t* data2, in
           data = data1[idx];
         }
         if (invert) data = ~data;
+        _transfer(data);
       }
-      _transfer(data);
     }
+    _endTransfer();
+  }
+  else
+  {
+    _writeCommand(0x10);
+    _startTransfer();
+    for (int16_t i = 0; i < int16_t(HEIGHT); i++)
+    {
+      for (int16_t j = 0; j < int16_t(WIDTH); j += 4)
+      {
+        uint8_t data = 0x55;
+        if ((j >= x1) && (j < x1 + w) && (i >= y1) && (i < y1 + h))
+        {
+          // use wb_bitmap, h_bitmap of bitmap for index!
+          uint32_t idx = mirror_y ? (x_part + j - x1) / 4 + uint32_t((h_bitmap - 1 - (y_part + i - y1))) * wb_bitmap : (x_part + j - x1) / 4 + uint32_t(y_part + i - y1) * wb_bitmap;
+          if (pgm)
+          {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+            data = pgm_read_byte(&data1[idx]);
+#else
+            data = data1[idx];
+#endif
+          }
+          else
+          {
+            data = data1[idx];
+          }
+          if (invert) data = ~data;
+        }
+        _transfer(data);
+      }
+    }
+    _endTransfer();
   }
-  _endTransfer();
   delay(1); // yield() to avoid WDT on ESP8266 and ESP32
 }
 
@@ -492,7 +782,7 @@ void GxEPD2_437c::drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_
 }
 
 void GxEPD2_437c::drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
-                                int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   writeImagePart(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
   refresh(x, y, w, h);
@@ -505,7 +795,7 @@ void GxEPD2_437c::drawImage(const uint8_t* black, const uint8_t* color, int16_t
 }
 
 void GxEPD2_437c::drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
-                                int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   writeImagePart(black, color, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
   refresh(x, y, w, h);
@@ -519,13 +809,27 @@ void GxEPD2_437c::drawNative(const uint8_t* data1, const uint8_t* data2, int16_t
 
 void GxEPD2_437c::refresh(bool partial_update_mode)
 {
-  if (partial_update_mode) refresh(0, 0, WIDTH, HEIGHT);
-  else _Update_Full();
+  if (hasPartialUpdate) _setPartialRamArea(0, 0, WIDTH, HEIGHT);
+  _refresh(partial_update_mode);
 }
 
 void GxEPD2_437c::refresh(int16_t x, int16_t y, int16_t w, int16_t h)
 {
-  _Update_Part();
+  // intersection with screen
+  int16_t w1 = x < 0 ? w + x : w; // reduce
+  int16_t h1 = y < 0 ? h + y : h; // reduce
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  w1 = x1 + w1 < int16_t(WIDTH) ? w1 : int16_t(WIDTH) - x1; // limit
+  h1 = y1 + h1 < int16_t(HEIGHT) ? h1 : int16_t(HEIGHT) - y1; // limit
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  // make x1, w1 multiple of 4
+  w1 += x1 % 4;
+  if (w1 % 4 > 0) w1 += 4 - w1 % 4;
+  x1 -= x1 % 4;
+  bool fullscreen = ((x1 == 0) && (y1 == 0) && (w1 == WIDTH) && (h1 == HEIGHT));
+  if (hasPartialUpdate) _setPartialRamArea(x1, y1, w1, h1, !fullscreen);
+  _refresh(!fullscreen);
 }
 
 void GxEPD2_437c::powerOff()
@@ -541,14 +845,46 @@ void GxEPD2_437c::hibernate()
     _writeCommand(0x07); // deep sleep
     _writeData(0xA5);    // control code
     _hibernating = true;
+    _init_display_done = false;
   }
 }
 
 void GxEPD2_437c::setPaged()
 {
-  _paged = true;
-  _Init_Full();
-  _writeCommand(0x10);
+  if (!hasPartialUpdate)
+  {
+    _paged = true;
+    _InitDisplay();
+    _writeCommand(0x10);
+  }
+}
+
+void GxEPD2_437c::_refresh(bool partial_update_mode)
+{
+  _writeCommand(0x50); // VCOM and Data Interval Setting
+  _writeData(partial_update_mode ? 0x97 : 0x37); // floating or white
+  _writeCommand(0x12); // Display Refresh
+  _writeData(0x00);
+  delay(1);
+  _waitWhileBusy("_refresh", full_refresh_time);
+  //_power_is_on = false; // not needed
+  _init_display_done = false; // needed
+}
+
+void GxEPD2_437c::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool partial_mode)
+{
+  //Serial.print("_setPartialRamArea("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  _writeCommand(0x83);
+  _writeData(x / 256);
+  _writeData(x % 256);
+  _writeData((x + w - 1) / 256);
+  _writeData((x + w - 1) % 256);
+  _writeData(y / 256);
+  _writeData(y % 256);
+  _writeData((y + h - 1) / 256);
+  _writeData((y + h - 1) % 256);
+  _writeData(partial_mode ? 0x01 : 0x00);
 }
 
 void GxEPD2_437c::_PowerOn()
@@ -570,16 +906,21 @@ void GxEPD2_437c::_PowerOff()
     _waitWhileBusy("_PowerOff", power_off_time);
   }
   _power_is_on = false;
-  _using_partial_mode = false;
 }
 
 void GxEPD2_437c::_InitDisplay()
 {
-  if (_hibernating)
+  if ((_rst >= 0) && (_hibernating || _initial_write))
   {
-    _reset();
-    delay(20);
-    _reset();
+    digitalWrite(_rst, HIGH);
+    delay(20); // At least 20ms delay
+    digitalWrite(_rst, LOW); // Module reset
+    delay(2);  // At least 40ms delay, 2ms for WS "clever" reset
+    digitalWrite(_rst, HIGH);
+    delay(2); // At least 50ms delay (32ms measured)
+    _waitWhileBusy("_InitDisplay reset", power_on_time);
+    _hibernating = false;
+    _power_is_on = false;
   }
   if (_initial_write) delay(20);
   _writeCommand(0xAA); // CMDH
@@ -630,32 +971,6 @@ void GxEPD2_437c::_InitDisplay()
   _writeData(0x2F);
   _writeCommand(0x84); // T_VDCS
   _writeData(0x01);
-}
-
-void GxEPD2_437c::_Init_Full()
-{
-  _InitDisplay();
-  _PowerOn();
-}
-
-void GxEPD2_437c::_Init_Part()
-{
-  _InitDisplay();
   _PowerOn();
-}
-
-void GxEPD2_437c::_Update_Full()
-{
-  _writeCommand(0x12); // Display Refresh
-  _writeData(0x01);
-  delay(1);
-  _waitWhileBusy("_Update_Full", full_refresh_time);
-}
-
-void GxEPD2_437c::_Update_Part()
-{
-  _writeCommand(0x12); // Display Refresh
-  _writeData(0x01);
-  delay(1);
-  _waitWhileBusy("_Update_Part", partial_refresh_time);
+  _init_display_done = true;
 }

+ 4 - 6
src/epd4c/GxEPD2_437c.h

@@ -25,7 +25,7 @@ class GxEPD2_437c : public GxEPD2_EPD
     static const uint16_t HEIGHT = 368;
     static const GxEPD2::Panel panel = GxEPD2::Waveshare437inch4color;
     static const bool hasColor = true;
-    static const bool hasPartialUpdate = false;
+    static const bool hasPartialUpdate = true;
     static const bool hasFastPartialUpdate = false;
     static const uint16_t power_on_time = 200; // ms, e.g. 172000us
     static const uint16_t power_off_time = 150; // ms, e.g. 140000us
@@ -63,15 +63,13 @@ class GxEPD2_437c : public GxEPD2_EPD
     void refresh(int16_t x, int16_t y, int16_t w, int16_t h); // screen refresh from controller memory, partial screen
     void powerOff(); // turns off generation of panel driving voltages, avoids screen fading over time
     void hibernate(); // turns powerOff() and sets controller to deep sleep for minimum power use, ONLY if wakeable by RST (rst >= 0)
-    void setPaged(); // for GxEPD2_154c and GxEPD2_437c paged workaround
+    void setPaged(); // for GxEPD2_154c paged workaround, also for 4-color for use with hasPartialUpdate = false
   private:
+    void _refresh(bool partial_update_mode);
+    void _setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool partial_mode = true);
     void _PowerOn();
     void _PowerOff();
     void _InitDisplay();
-    void _Init_Full();
-    void _Init_Part();
-    void _Update_Full();
-    void _Update_Part();
   private:
     bool _paged;
 };

+ 417 - 0
src/gdeq/GxEPD2_426_GDEQ0426T82.cpp

@@ -0,0 +1,417 @@
+// Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
+// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
+//
+// based on Demo Example from Good Display, available here: https://www.good-display.com/comp/xcompanyFile/downloadNew.do?appId=24&fid=1722&id=1158
+// Panel: GDEQ0426T82 : https://www.good-display.com/product/457.html
+// Controller : SSD1677 : https://v4.cecdn.yun300.cn/100001_1909185148/SSD1677.pdf
+//
+// Author: Jean-Marc Zingg
+//
+// Version: see library.properties
+//
+// Library: https://github.com/ZinggJM/GxEPD2
+
+#include "GxEPD2_426_GDEQ0426T82.h"
+
+GxEPD2_426_GDEQ0426T82::GxEPD2_426_GDEQ0426T82(int16_t cs, int16_t dc, int16_t rst, int16_t busy) :
+  GxEPD2_EPD(cs, dc, rst, busy, HIGH, 10000000, WIDTH, HEIGHT, panel, hasColor, hasPartialUpdate, hasFastPartialUpdate)
+{
+}
+
+void GxEPD2_426_GDEQ0426T82::clearScreen(uint8_t value)
+{
+  writeScreenBuffer(value);
+  refresh(true);
+  writeScreenBufferAgain(value);
+}
+
+void GxEPD2_426_GDEQ0426T82::writeScreenBuffer(uint8_t value)
+{
+  if (!_using_partial_mode) _Init_Part();
+  _writeScreenBuffer(0x24, value); // set current
+  _initial_write = false; // initial full screen buffer clean done
+}
+
+void GxEPD2_426_GDEQ0426T82::writeScreenBufferAgain(uint8_t value)
+{
+  if (!_using_partial_mode) _Init_Part();
+  _writeScreenBuffer(0x24, value); // set current
+  _writeScreenBuffer(0x26, value); // set previous
+}
+
+void GxEPD2_426_GDEQ0426T82::_writeScreenBuffer(uint8_t command, uint8_t value)
+{
+  _writeCommand(command);
+  _startTransfer();
+  for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(HEIGHT) / 8; i++)
+  {
+    _transfer(value);
+  }
+  _endTransfer();
+}
+
+void GxEPD2_426_GDEQ0426T82::writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  _writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
+}
+
+void GxEPD2_426_GDEQ0426T82::writeImageForFullRefresh(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  _writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
+  _writeImage(0x26, bitmap, x, y, w, h, invert, mirror_y, pgm);
+}
+
+
+void GxEPD2_426_GDEQ0426T82::writeImageAgain(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  _writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
+  _writeImage(0x26, bitmap, x, y, w, h, invert, mirror_y, pgm);
+}
+
+void GxEPD2_426_GDEQ0426T82::_writeImage(uint8_t command, const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (_initial_write) writeScreenBuffer(); // initial full screen buffer clean
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
+  x -= x % 8; // byte boundary
+  w = wb * 8; // byte boundary
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (!_using_partial_mode) _Init_Part();
+  _setPartialRamArea(x1, y1, w1, h1);
+  _writeCommand(command);
+  _startTransfer();
+  for (int16_t i = 0; i < h1; i++)
+  {
+    for (int16_t j = 0; j < w1 / 8; j++)
+    {
+      uint8_t data;
+      // use wb, h of bitmap for index!
+      int32_t idx = mirror_y ? j + dx / 8 + ((h - 1 - int32_t(i + dy))) * wb : j + dx / 8 + int32_t(i + dy) * wb;
+      if (pgm)
+      {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+        data = pgm_read_byte(&bitmap[idx]);
+#else
+        data = bitmap[idx];
+#endif
+      }
+      else
+      {
+        data = bitmap[idx];
+      }
+      if (invert) data = ~data;
+      _transfer(data);
+    }
+  }
+  _endTransfer();
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_426_GDEQ0426T82::writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  _writeImagePart(0x24, bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+}
+
+void GxEPD2_426_GDEQ0426T82::writeImagePartAgain(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  _writeImagePart(0x24, bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  _writeImagePart(0x26, bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+}
+
+void GxEPD2_426_GDEQ0426T82::_writeImagePart(uint8_t command, const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (_initial_write) writeScreenBuffer(); // initial full screen buffer clean
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+  if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
+  if ((x_part < 0) || (x_part >= w_bitmap)) return;
+  if ((y_part < 0) || (y_part >= h_bitmap)) return;
+  int16_t wb_bitmap = (w_bitmap + 7) / 8; // width bytes, bitmaps are padded
+  x_part -= x_part % 8; // byte boundary
+  w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
+  h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
+  x -= x % 8; // byte boundary
+  w = 8 * ((w + 7) / 8); // byte boundary, bitmaps are padded
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
+  int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
+  int16_t dx = x1 - x;
+  int16_t dy = y1 - y;
+  w1 -= dx;
+  h1 -= dy;
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  if (!_using_partial_mode) _Init_Part();
+  _setPartialRamArea(x1, y1, w1, h1);
+  _writeCommand(command);
+  _startTransfer();
+  for (int16_t i = 0; i < h1; i++)
+  {
+    for (int16_t j = 0; j < w1 / 8; j++)
+    {
+      uint8_t data;
+      // use wb_bitmap, h_bitmap of bitmap for index!
+      int32_t idx = mirror_y ? x_part / 8 + j + dx / 8 + int32_t((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + int32_t(y_part + i + dy) * wb_bitmap;
+      if (pgm)
+      {
+#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
+        data = pgm_read_byte(&bitmap[idx]);
+#else
+        data = bitmap[idx];
+#endif
+      }
+      else
+      {
+        data = bitmap[idx];
+      }
+      if (invert) data = ~data;
+      _transfer(data);
+    }
+  }
+  _endTransfer();
+  delay(1); // yield() to avoid WDT on ESP8266 and ESP32
+}
+
+void GxEPD2_426_GDEQ0426T82::writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (black)
+  {
+    writeImage(black, x, y, w, h, invert, mirror_y, pgm);
+  }
+}
+
+void GxEPD2_426_GDEQ0426T82::writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (black)
+  {
+    writeImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  }
+}
+
+void GxEPD2_426_GDEQ0426T82::writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (data1)
+  {
+    writeImage(data1, x, y, w, h, invert, mirror_y, pgm);
+  }
+}
+
+void GxEPD2_426_GDEQ0426T82::drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImage(bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+  writeImageAgain(bitmap, x, y, w, h, invert, mirror_y, pgm);
+}
+
+void GxEPD2_426_GDEQ0426T82::drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  writeImagePart(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  refresh(x, y, w, h);
+  writeImagePartAgain(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+}
+
+void GxEPD2_426_GDEQ0426T82::drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (black)
+  {
+    drawImage(black, x, y, w, h, invert, mirror_y, pgm);
+  }
+}
+
+void GxEPD2_426_GDEQ0426T82::drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+    int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (black)
+  {
+    drawImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
+  }
+}
+
+void GxEPD2_426_GDEQ0426T82::drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+{
+  if (data1)
+  {
+    drawImage(data1, x, y, w, h, invert, mirror_y, pgm);
+  }
+}
+
+void GxEPD2_426_GDEQ0426T82::refresh(bool partial_update_mode)
+{
+  if (partial_update_mode) refresh(0, 0, WIDTH, HEIGHT);
+  else
+  {
+    if (_using_partial_mode) _Init_Full();
+    _Update_Full();
+    _initial_refresh = false; // initial full update done
+  }
+}
+
+void GxEPD2_426_GDEQ0426T82::refresh(int16_t x, int16_t y, int16_t w, int16_t h)
+{
+  if (_initial_refresh) return refresh(false); // initial update needs be full update
+  // intersection with screen
+  int16_t w1 = x < 0 ? w + x : w; // reduce
+  int16_t h1 = y < 0 ? h + y : h; // reduce
+  int16_t x1 = x < 0 ? 0 : x; // limit
+  int16_t y1 = y < 0 ? 0 : y; // limit
+  w1 = x1 + w1 < int16_t(WIDTH) ? w1 : int16_t(WIDTH) - x1; // limit
+  h1 = y1 + h1 < int16_t(HEIGHT) ? h1 : int16_t(HEIGHT) - y1; // limit
+  if ((w1 <= 0) || (h1 <= 0)) return;
+  // make x1, w1 multiple of 8
+  w1 += x1 % 8;
+  if (w1 % 8 > 0) w1 += 8 - w1 % 8;
+  x1 -= x1 % 8;
+  if (!_using_partial_mode) _Init_Part();
+  _setPartialRamArea(x1, y1, w1, h1);
+  _Update_Part();
+}
+
+void GxEPD2_426_GDEQ0426T82::powerOff()
+{
+  _PowerOff();
+}
+
+void GxEPD2_426_GDEQ0426T82::hibernate()
+{
+  _PowerOff();
+  if (_rst >= 0)
+  {
+    _writeCommand(0x10); // deep sleep mode
+    _writeData(0x1);     // enter deep sleep
+    _hibernating = true;
+  }
+}
+
+void GxEPD2_426_GDEQ0426T82::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h)
+{
+  //Serial.print("_setPartialRamArea("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", ");
+  //Serial.print(w); Serial.print(", "); Serial.print(h); Serial.println(")");
+  // gates are reversed on this display, but controller has no gates reverse scan
+  // reverse data entry on y
+  y = HEIGHT - y - h; // reversed partial window
+  _writeCommand(0x11); // set ram entry mode
+  _writeData(0x01);    // x increase, y decrease : y reversed
+  _writeCommand(0x44);
+  _writeData(x % 256);
+  _writeData(x / 256);
+  _writeData((x + w - 1) % 256);
+  _writeData((x + w - 1) / 256);
+  _writeCommand(0x45);
+  _writeData((y + h - 1) % 256);
+  _writeData((y + h - 1) / 256);
+  _writeData(y % 256);
+  _writeData(y / 256);
+  _writeCommand(0x4e);
+  _writeData(x % 256);
+  _writeData(x / 256);
+  _writeCommand(0x4f);
+  _writeData((y + h - 1) % 256);
+  _writeData((y + h - 1) / 256);
+}
+
+void GxEPD2_426_GDEQ0426T82::_PowerOn()
+{
+  if (!_power_is_on)
+  {
+    _writeCommand(0x22);
+    _writeData(0xf8);
+    _writeCommand(0x20);
+    _waitWhileBusy("_PowerOn", power_on_time);
+  }
+  _power_is_on = true;
+}
+
+void GxEPD2_426_GDEQ0426T82::_PowerOff()
+{
+  if (_power_is_on)
+  {
+    _writeCommand(0x22);
+    _writeData(0x83);
+    _writeCommand(0x20);
+    _waitWhileBusy("_PowerOff", power_off_time);
+  }
+  _power_is_on = false;
+  _using_partial_mode = false;
+}
+
+void GxEPD2_426_GDEQ0426T82::_InitDisplay()
+{
+  if (_hibernating) _reset();
+  delay(10); // 10ms according to specs
+  //_waitWhileBusy("_InitDisplay reset", power_on_time);
+  _writeCommand(0x12);  //SWRESET
+  delay(10); // 10ms according to specs
+  _writeCommand(0x18);
+  _writeData(0x80);
+  _writeCommand(0x0C);
+  _writeData(0xAE);
+  _writeData(0xC7);
+  _writeData(0xC3);
+  _writeData(0xC0);
+  _writeData(0x80);
+  _writeCommand(0x01); // Driver output control
+  _writeData((HEIGHT - 1) % 256); // gates A0..A7
+  _writeData((HEIGHT - 1) / 256); // gates A8, A9
+  _writeData(0x02); // SM (interlaced) ??
+  _writeCommand(0x3C); // BorderWavefrom
+  _writeData(0x01);
+  _setPartialRamArea(0, 0, WIDTH, HEIGHT);
+}
+
+void GxEPD2_426_GDEQ0426T82::_Init_Full()
+{
+  _InitDisplay();
+  _PowerOn();
+  _using_partial_mode = false;
+}
+
+void GxEPD2_426_GDEQ0426T82::_Init_Part()
+{
+  _InitDisplay();
+  _PowerOn();
+  _using_partial_mode = true;
+}
+
+void GxEPD2_426_GDEQ0426T82::_Update_Full()
+{
+  _writeCommand(0x21); // Display Update Controll
+  _writeData(0x40);    // bypass RED as 0
+  _writeData(0x00);    // single chip application
+  if (useFastFullUpdate)
+  {
+    _writeCommand(0x1A); // Write to temperature register
+    _writeData(0x5A);
+    _writeCommand(0x22);
+    _writeData(0xd4);
+  }
+  else
+  {
+    _writeCommand(0x22);
+    _writeData(0xf4);
+  }
+  _writeCommand(0x20);
+  _waitWhileBusy("_Update_Full", full_refresh_time);
+}
+
+void GxEPD2_426_GDEQ0426T82::_Update_Part()
+{
+  _writeCommand(0x21); // Display Update Controll
+  _writeData(0x00);    // RED normal
+  _writeData(0x00);    // single chip application
+  _writeCommand(0x22);
+  _writeData(0xfc);
+  _writeCommand(0x20);
+  _waitWhileBusy("_Update_Part", partial_refresh_time);
+}

+ 84 - 0
src/gdeq/GxEPD2_426_GDEQ0426T82.h

@@ -0,0 +1,84 @@
+// Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
+// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
+//
+// based on Demo Example from Good Display, available here: https://www.good-display.com/comp/xcompanyFile/downloadNew.do?appId=24&fid=1722&id=1158
+// Panel: GDEQ0426T82 : https://www.good-display.com/product/457.html
+// Controller : SSD1677 : https://v4.cecdn.yun300.cn/100001_1909185148/SSD1677.pdf
+//
+// Author: Jean-Marc Zingg
+//
+// Version: see library.properties
+//
+// Library: https://github.com/ZinggJM/GxEPD2
+
+#ifndef _GxEPD2_426_GDEQ0426T82_H_
+#define _GxEPD2_426_GDEQ0426T82_H_
+
+#include "../GxEPD2_EPD.h"
+
+class GxEPD2_426_GDEQ0426T82 : public GxEPD2_EPD
+{
+  public:
+    // attributes
+    static const uint16_t WIDTH = 800; // source, max 960
+    static const uint16_t WIDTH_VISIBLE = WIDTH;
+    static const uint16_t HEIGHT = 480; // gates, max 680
+    static const GxEPD2::Panel panel = GxEPD2::GDEQ0426T82;
+    static const bool hasColor = false;
+    static const bool hasPartialUpdate = true;
+    static const bool hasFastPartialUpdate = true;
+    static const bool useFastFullUpdate = true; // set false for extended (low) temperature range
+    static const uint16_t power_on_time = 100; // ms, e.g. 83873us
+    static const uint16_t power_off_time = 200; // ms, e.g. 138810us
+    static const uint16_t full_refresh_time = 1600; // ms, e.g. 1567341us
+    static const uint16_t partial_refresh_time = 600; // ms, e.g. 499962us
+    // constructor
+    GxEPD2_426_GDEQ0426T82(int16_t cs, int16_t dc, int16_t rst, int16_t busy);
+    // methods (virtual)
+    //  Support for Bitmaps (Sprites) to Controller Buffer and to Screen
+    void clearScreen(uint8_t value = 0xFF); // init controller memory and screen (default white)
+    void writeScreenBuffer(uint8_t value = 0xFF); // init controller memory (default white)
+    void writeScreenBufferAgain(uint8_t value = 0xFF); // init previous buffer controller memory (default white)
+    // write to controller memory, without screen refresh; x and w should be multiple of 8
+    void writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImageForFullRefresh(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                        int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // for differential update: set current and previous buffers equal (for fast partial update to work correctly)
+    void writeImageAgain(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void writeImagePartAgain(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                             int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write sprite of native data to controller memory, without screen refresh; x and w should be multiple of 8
+    void writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write to controller memory, with screen refresh; x and w should be multiple of 8
+    void drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                       int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                       int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    // write sprite of native data to controller memory, with screen refresh; x and w should be multiple of 8
+    void drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void refresh(bool partial_update_mode = false); // screen refresh from controller memory to full screen
+    void refresh(int16_t x, int16_t y, int16_t w, int16_t h); // screen refresh from controller memory, partial screen
+    void powerOff(); // turns off generation of panel driving voltages, avoids screen fading over time
+    void hibernate(); // turns powerOff() and sets controller to deep sleep for minimum power use, ONLY if wakeable by RST (rst >= 0)
+  private:
+    void _writeScreenBuffer(uint8_t command, uint8_t value);
+    void _writeImage(uint8_t command, const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void _writeImagePart(uint8_t command, const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+                         int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
+    void _setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h);
+    void _PowerOn();
+    void _PowerOff();
+    void _InitDisplay();
+    void _Init_Full();
+    void _Init_Part();
+    void _Update_Full();
+    void _Update_Part();
+};
+
+#endif

+ 34 - 34
src/gdey/GxEPD2_420_GDEY042T91.cpp → src/gdey/GxEPD2_420_GDEY042T81.cpp

@@ -2,7 +2,7 @@
 // Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
 //
 // based on Demo Example from Good Display, available here: https://www.good-display.com/product/386.html
-// Panel: GDEY042T91 : https://www.good-display.com/product/386.html
+// Panel: GDEY042T81 : https://www.good-display.com/product/386.html
 // Controller : SSD1683 : https://v4.cecdn.yun300.cn/100001_1909185148/SSD1683.PDF
 //
 // Author: Jean-Marc Zingg
@@ -11,35 +11,35 @@
 //
 // Library: https://github.com/ZinggJM/GxEPD2
 
-#include "GxEPD2_420_GDEY042T91.h"
+#include "GxEPD2_420_GDEY042T81.h"
 
-GxEPD2_420_GDEY042T91::GxEPD2_420_GDEY042T91(int16_t cs, int16_t dc, int16_t rst, int16_t busy) :
+GxEPD2_420_GDEY042T81::GxEPD2_420_GDEY042T81(int16_t cs, int16_t dc, int16_t rst, int16_t busy) :
   GxEPD2_EPD(cs, dc, rst, busy, HIGH, 10000000, WIDTH, HEIGHT, panel, hasColor, hasPartialUpdate, hasFastPartialUpdate)
 {
 }
 
-void GxEPD2_420_GDEY042T91::clearScreen(uint8_t value)
+void GxEPD2_420_GDEY042T81::clearScreen(uint8_t value)
 {
   writeScreenBuffer(value);
   refresh(true);
   writeScreenBufferAgain(value);
 }
 
-void GxEPD2_420_GDEY042T91::writeScreenBuffer(uint8_t value)
+void GxEPD2_420_GDEY042T81::writeScreenBuffer(uint8_t value)
 {
   if (!_using_partial_mode) _Init_Part();
   _writeScreenBuffer(0x24, value); // set current
   _initial_write = false; // initial full screen buffer clean done
 }
 
-void GxEPD2_420_GDEY042T91::writeScreenBufferAgain(uint8_t value)
+void GxEPD2_420_GDEY042T81::writeScreenBufferAgain(uint8_t value)
 {
   if (!_using_partial_mode) _Init_Part();
   _writeScreenBuffer(0x24, value); // set current
   _writeScreenBuffer(0x26, value); // set previous
 }
 
-void GxEPD2_420_GDEY042T91::_writeScreenBuffer(uint8_t command, uint8_t value)
+void GxEPD2_420_GDEY042T81::_writeScreenBuffer(uint8_t command, uint8_t value)
 {
   _writeCommand(command);
   _startTransfer();
@@ -50,25 +50,25 @@ void GxEPD2_420_GDEY042T91::_writeScreenBuffer(uint8_t command, uint8_t value)
   _endTransfer();
 }
 
-void GxEPD2_420_GDEY042T91::writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+void GxEPD2_420_GDEY042T81::writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   _writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
 }
 
-void GxEPD2_420_GDEY042T91::writeImageForFullRefresh(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+void GxEPD2_420_GDEY042T81::writeImageForFullRefresh(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   _writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
   _writeImage(0x26, bitmap, x, y, w, h, invert, mirror_y, pgm);
 }
 
 
-void GxEPD2_420_GDEY042T91::writeImageAgain(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+void GxEPD2_420_GDEY042T81::writeImageAgain(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   _writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
   _writeImage(0x26, bitmap, x, y, w, h, invert, mirror_y, pgm);
 }
 
-void GxEPD2_420_GDEY042T91::_writeImage(uint8_t command, const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+void GxEPD2_420_GDEY042T81::_writeImage(uint8_t command, const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   if (_initial_write) writeScreenBuffer(); // initial full screen buffer clean
   delay(1); // yield() to avoid WDT on ESP8266 and ESP32
@@ -115,20 +115,20 @@ void GxEPD2_420_GDEY042T91::_writeImage(uint8_t command, const uint8_t bitmap[],
   delay(1); // yield() to avoid WDT on ESP8266 and ESP32
 }
 
-void GxEPD2_420_GDEY042T91::writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+void GxEPD2_420_GDEY042T81::writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
     int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   _writeImagePart(0x24, bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
 }
 
-void GxEPD2_420_GDEY042T91::writeImagePartAgain(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+void GxEPD2_420_GDEY042T81::writeImagePartAgain(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
     int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   _writeImagePart(0x24, bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
   _writeImagePart(0x26, bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
 }
 
-void GxEPD2_420_GDEY042T91::_writeImagePart(uint8_t command, const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+void GxEPD2_420_GDEY042T81::_writeImagePart(uint8_t command, const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
     int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   if (_initial_write) writeScreenBuffer(); // initial full screen buffer clean
@@ -182,7 +182,7 @@ void GxEPD2_420_GDEY042T91::_writeImagePart(uint8_t command, const uint8_t bitma
   delay(1); // yield() to avoid WDT on ESP8266 and ESP32
 }
 
-void GxEPD2_420_GDEY042T91::writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+void GxEPD2_420_GDEY042T81::writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   if (black)
   {
@@ -190,7 +190,7 @@ void GxEPD2_420_GDEY042T91::writeImage(const uint8_t* black, const uint8_t* colo
   }
 }
 
-void GxEPD2_420_GDEY042T91::writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+void GxEPD2_420_GDEY042T81::writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
     int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   if (black)
@@ -199,7 +199,7 @@ void GxEPD2_420_GDEY042T91::writeImagePart(const uint8_t* black, const uint8_t*
   }
 }
 
-void GxEPD2_420_GDEY042T91::writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+void GxEPD2_420_GDEY042T81::writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   if (data1)
   {
@@ -207,14 +207,14 @@ void GxEPD2_420_GDEY042T91::writeNative(const uint8_t* data1, const uint8_t* dat
   }
 }
 
-void GxEPD2_420_GDEY042T91::drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+void GxEPD2_420_GDEY042T81::drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   writeImage(bitmap, x, y, w, h, invert, mirror_y, pgm);
   refresh(x, y, w, h);
   writeImageAgain(bitmap, x, y, w, h, invert, mirror_y, pgm);
 }
 
-void GxEPD2_420_GDEY042T91::drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+void GxEPD2_420_GDEY042T81::drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
     int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   writeImagePart(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
@@ -222,7 +222,7 @@ void GxEPD2_420_GDEY042T91::drawImagePart(const uint8_t bitmap[], int16_t x_part
   writeImagePartAgain(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
 }
 
-void GxEPD2_420_GDEY042T91::drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+void GxEPD2_420_GDEY042T81::drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   if (black)
   {
@@ -230,7 +230,7 @@ void GxEPD2_420_GDEY042T91::drawImage(const uint8_t* black, const uint8_t* color
   }
 }
 
-void GxEPD2_420_GDEY042T91::drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
+void GxEPD2_420_GDEY042T81::drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
     int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   if (black)
@@ -239,7 +239,7 @@ void GxEPD2_420_GDEY042T91::drawImagePart(const uint8_t* black, const uint8_t* c
   }
 }
 
-void GxEPD2_420_GDEY042T91::drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
+void GxEPD2_420_GDEY042T81::drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
 {
   if (data1)
   {
@@ -247,7 +247,7 @@ void GxEPD2_420_GDEY042T91::drawNative(const uint8_t* data1, const uint8_t* data
   }
 }
 
-void GxEPD2_420_GDEY042T91::refresh(bool partial_update_mode)
+void GxEPD2_420_GDEY042T81::refresh(bool partial_update_mode)
 {
   if (partial_update_mode) refresh(0, 0, WIDTH, HEIGHT);
   else
@@ -258,7 +258,7 @@ void GxEPD2_420_GDEY042T91::refresh(bool partial_update_mode)
   }
 }
 
-void GxEPD2_420_GDEY042T91::refresh(int16_t x, int16_t y, int16_t w, int16_t h)
+void GxEPD2_420_GDEY042T81::refresh(int16_t x, int16_t y, int16_t w, int16_t h)
 {
   if (_initial_refresh) return refresh(false); // initial update needs be full update
   // intersection with screen
@@ -278,12 +278,12 @@ void GxEPD2_420_GDEY042T91::refresh(int16_t x, int16_t y, int16_t w, int16_t h)
   _Update_Part();
 }
 
-void GxEPD2_420_GDEY042T91::powerOff()
+void GxEPD2_420_GDEY042T81::powerOff()
 {
   _PowerOff();
 }
 
-void GxEPD2_420_GDEY042T91::hibernate()
+void GxEPD2_420_GDEY042T81::hibernate()
 {
   _PowerOff();
   if (_rst >= 0)
@@ -294,7 +294,7 @@ void GxEPD2_420_GDEY042T91::hibernate()
   }
 }
 
-void GxEPD2_420_GDEY042T91::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h)
+void GxEPD2_420_GDEY042T81::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h)
 {
   _writeCommand(0x11); // set ram entry mode
   _writeData(0x03);    // x increase, y increase : normal mode
@@ -313,7 +313,7 @@ void GxEPD2_420_GDEY042T91::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t
   _writeData(y / 256);
 }
 
-void GxEPD2_420_GDEY042T91::_PowerOn()
+void GxEPD2_420_GDEY042T81::_PowerOn()
 {
   if (!_power_is_on)
   {
@@ -325,7 +325,7 @@ void GxEPD2_420_GDEY042T91::_PowerOn()
   _power_is_on = true;
 }
 
-void GxEPD2_420_GDEY042T91::_PowerOff()
+void GxEPD2_420_GDEY042T81::_PowerOff()
 {
   if (_power_is_on)
   {
@@ -338,7 +338,7 @@ void GxEPD2_420_GDEY042T91::_PowerOff()
   _using_partial_mode = false;
 }
 
-void GxEPD2_420_GDEY042T91::_InitDisplay()
+void GxEPD2_420_GDEY042T81::_InitDisplay()
 {
   if (_hibernating) _reset();
   delay(10); // 10ms according to specs
@@ -355,21 +355,21 @@ void GxEPD2_420_GDEY042T91::_InitDisplay()
   _setPartialRamArea(0, 0, WIDTH, HEIGHT);
 }
 
-void GxEPD2_420_GDEY042T91::_Init_Full()
+void GxEPD2_420_GDEY042T81::_Init_Full()
 {
   _InitDisplay();
   _PowerOn();
   _using_partial_mode = false;
 }
 
-void GxEPD2_420_GDEY042T91::_Init_Part()
+void GxEPD2_420_GDEY042T81::_Init_Part()
 {
   _InitDisplay();
   _PowerOn();
   _using_partial_mode = true;
 }
 
-void GxEPD2_420_GDEY042T91::_Update_Full()
+void GxEPD2_420_GDEY042T81::_Update_Full()
 {
   _writeCommand(0x21); // Display Update Controll
   _writeData(0x40);    // bypass RED as 0
@@ -390,7 +390,7 @@ void GxEPD2_420_GDEY042T91::_Update_Full()
   _waitWhileBusy("_Update_Full", full_refresh_time);
 }
 
-void GxEPD2_420_GDEY042T91::_Update_Part()
+void GxEPD2_420_GDEY042T81::_Update_Part()
 {
   _writeCommand(0x21); // Display Update Controll
   _writeData(0x00);    // RED normal

+ 6 - 6
src/gdey/GxEPD2_420_GDEY042T91.h → src/gdey/GxEPD2_420_GDEY042T81.h

@@ -2,7 +2,7 @@
 // Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
 //
 // based on Demo Example from Good Display, available here: https://www.good-display.com/product/386.html
-// Panel: GDEY042T91 : https://www.good-display.com/product/386.html
+// Panel: GDEY042T81 : https://www.good-display.com/product/386.html
 // Controller : SSD1683 : https://v4.cecdn.yun300.cn/100001_1909185148/SSD1683.PDF
 //
 // Author: Jean-Marc Zingg
@@ -11,19 +11,19 @@
 //
 // Library: https://github.com/ZinggJM/GxEPD2
 
-#ifndef _GxEPD2_420_GDEY042T91_H_
-#define _GxEPD2_420_GDEY042T91_H_
+#ifndef _GxEPD2_420_GDEY042T81_H_
+#define _GxEPD2_420_GDEY042T81_H_
 
 #include "../GxEPD2_EPD.h"
 
-class GxEPD2_420_GDEY042T91 : public GxEPD2_EPD
+class GxEPD2_420_GDEY042T81 : public GxEPD2_EPD
 {
   public:
     // attributes
     static const uint16_t WIDTH = 400;
     static const uint16_t WIDTH_VISIBLE = WIDTH;
     static const uint16_t HEIGHT = 300;
-    static const GxEPD2::Panel panel = GxEPD2::GDEY042T91;
+    static const GxEPD2::Panel panel = GxEPD2::GDEY042T81;
     static const bool hasColor = false;
     static const bool hasPartialUpdate = true;
     static const bool hasFastPartialUpdate = true;
@@ -33,7 +33,7 @@ class GxEPD2_420_GDEY042T91 : public GxEPD2_EPD
     static const uint16_t full_refresh_time = 1200; // ms, e.g. 1140000us
     static const uint16_t partial_refresh_time = 400; // ms, e.g. 358000us
     // constructor
-    GxEPD2_420_GDEY042T91(int16_t cs, int16_t dc, int16_t rst, int16_t busy);
+    GxEPD2_420_GDEY042T81(int16_t cs, int16_t dc, int16_t rst, int16_t busy);
     // methods (virtual)
     //  Support for Bitmaps (Sprites) to Controller Buffer and to Screen
     void clearScreen(uint8_t value = 0xFF); // init controller memory and screen (default white)