From 46ddc8425fb624c290305e56a63afff891a56fab Mon Sep 17 00:00:00 2001 From: "gein@sfedu.ru" Date: Fri, 14 Mar 2025 22:46:50 +0300 Subject: [PATCH] rewrite --- Docs.md | 67 + ESP82_PANEL.ino | 302 ++++ README.md | 17 - data/.venv/bin/python | 1 + data/.venv/bin/python3 | 1 + data/.venv/bin/python3.12 | 1 + data/.venv/lib64 | 1 + data/.venv/pyvenv.cfg | 5 + data/kit128 (copy).bmp | Bin 0 -> 24630 bytes kit128.bmp => data/kit128.bmp | Bin data/kitleft.h | 5 + data/main.py | 39 + data/output.h | 5 + fonts/Font_BOLD.h | 2704 +++++++++++++++++++++++++++++++++ output.h | 25 - output.txt | 64 - panel.ino | 224 --- 17 files changed, 3131 insertions(+), 330 deletions(-) create mode 100644 Docs.md create mode 100644 ESP82_PANEL.ino delete mode 100644 README.md create mode 120000 data/.venv/bin/python create mode 120000 data/.venv/bin/python3 create mode 120000 data/.venv/bin/python3.12 create mode 120000 data/.venv/lib64 create mode 100644 data/.venv/pyvenv.cfg create mode 100644 data/kit128 (copy).bmp rename kit128.bmp => data/kit128.bmp (100%) create mode 100644 data/kitleft.h create mode 100644 data/main.py create mode 100644 data/output.h create mode 100644 fonts/Font_BOLD.h delete mode 100644 output.h delete mode 100644 output.txt delete mode 100644 panel.ino diff --git a/Docs.md b/Docs.md new file mode 100644 index 0000000..7548dc7 --- /dev/null +++ b/Docs.md @@ -0,0 +1,67 @@ +# Веб-сервер ESP8266 & P10 PAnel + +## Описание +Этот проект реализует подключение и взаимодействие через веб-сервер ESP8266 и LED панели P10 4*3 + +## Возможности +- Обработка веб-запросов +- Изменение текста на матрице +- Реализовано 4 режима работы матрицы +- Вывод инвормации в JSON-формате + +## Используемые библиотеки +- ESP8266WiFi +- Ticker +- DMD2 +- ESPAsyncWebServer +- ESPAsyncTCP +- ArduinoJSON + +## Установка +Клонируйте репозиторий: +```sh +git clone https://github.com/ +``` + +Установите недостающие библиотеки и загрузите код на ESP8266 + +## Путь и тело запроса + +**GET /api/led** +Возвращает текущее состояние панели + +**POST /api/text** +Принимает текст отображающийся на панели +Пример запроса: +```json +{ + "text":"Hello \nfrom \nGitTea" +} +``` +**POST /api/led** +Изменяет состояние панели (Включение/выключение) и изменяет режим работы панели +Пример запроса: +Запрос на включение/выключение: +```json +{ + "panel": "on" +} +``` +```json +{ + "panel": "off" +} +``` +Запрос на изменение режима: (state : 1-4) +```json +{ + "state": "1" +} +``` +Запросы на включение и изменение режима могут приниматься вместе: +```json +{ + "panel": "on", + "state": "3" +} +``` diff --git a/ESP82_PANEL.ino b/ESP82_PANEL.ino new file mode 100644 index 0000000..f9a4e99 --- /dev/null +++ b/ESP82_PANEL.ino @@ -0,0 +1,302 @@ +#include +#include +#include +#include +#include +#include +#include +#include "data/output.h" +#include "data/kitleft.h" + +const uint8_t* FONT = Font_BOLD; +const int WIDTH = 4; // Количество матриц в ширину +const int HEIGHT = 3; // Количество матриц в высоту + +AsyncWebServer server(80); +String displayText = "Привет из СКБ \"КИТ\""; +bool isON = true; +bool showText = true; +bool scroll = true; +const char* skb = "СКБ"; +const char* kit = "\"КИТ\""; +const char* ictib = "ИКТИБ"; +const char* ssid = "SKBKIT"; +const char* password = "skbkit2024"; +IPAddress staticIP(10, 131, 170, 4); +IPAddress gateway(10, 131, 170, 1); +IPAddress subnet(255, 255, 255, 0); + +SPIDMD dmd(WIDTH, HEIGHT); +DMD_TextBox* box = nullptr; // Указатель на текстовый бокс +Ticker ticker; + +void setupWiFi() { + WiFi.begin(ssid, password); + if (!WiFi.config(staticIP, gateway, subnet)) { + Serial.println("Failed WiFi connect!"); + } else { + Serial.println("Static WiFi configured!"); + } + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println("\nConnected to WiFi"); + Serial.println(WiFi.localIP()); +} + +void drawBinaryArrayKit() { + dmd.clearScreen(); + + for (int x = 0; x < WIDTH * 32; x++) { + for (int y = 0; y < HEIGHT * 16; y++) { + int idx = y * (WIDTH * 32) + x; // Индекс с учетом полной ширины + if (output[idx] == 1) { + dmd.setPixel(x, y, GRAPHICS_ON); + } else { + dmd.setPixel(x, y, GRAPHICS_OFF); + } + } + } +} + +void drawBinaryArrayKitLeft() { + dmd.clearScreen(); + + for (int x = 0; x < WIDTH * 32; x++) { + for (int y = 0; y < HEIGHT * 16; y++) { + int idx = y * (WIDTH * 32) + x; // Индекс с учетом полной ширины + if (kitleft[idx] == 1) { + dmd.setPixel(x, y, GRAPHICS_ON); + } else { + dmd.setPixel(x, y, GRAPHICS_OFF); + } + } + } +} + +void switchDisplayMode() { + if (isON) { + if (showText) { + drawScrollingText(); // Запускаем скролл текста на второй строке + } else { + drawBinaryArrayKit(); + } + showText = !showText; + } +} + +void switchDisplayModeScroll() { + if (isON && scroll) { + //box->scrollX(1); // Двигаем текст влево + //box->drawScrollingText(); + dmd.marqueeScrollX(1); + } +} + +void drawScrollingText() { + if (!box) { + box = new DMD_TextBox(dmd, 0, 17, WIDTH * 32, HEIGHT * 16); // Устанавливаем текстовый бокс на вторую строку + } else { + box->clear(); + } + + box->print(displayText.c_str()); +} + + + +void drawText() { + dmd.clearScreen(); + + if (!box) { // Создаём текстовый бокс только один раз + box = new DMD_TextBox(dmd, 0, 0, WIDTH * 32, HEIGHT * 16); + } else { + box->clear(); // Очищаем текущий бокс перед обновлением текста + } + + box->print(displayText.c_str()); +} + +void handleText(AsyncWebServerRequest* request, const JsonVariant& json) { + if (!json.containsKey("text")) { + request->send(400, "application/json", "{\"error\": \"Missing text field\"}"); + return; + } + + displayText = json["text"].as(); + drawText(); + + request->send(200, "application/json", "{\"status\": \"OK\"}"); +} + +void handleTurn(AsyncWebServerRequest* request, const JsonVariant& json) { + String panelTurn = json["panel"].as(); + String panelState = json["state"].as(); + + if (json.containsKey("panel")) { + panelTurn = json["panel"].as(); + } + if (json.containsKey("state")) { + panelState = json["state"].as(); + } + + ticker.detach(); + + if (!panelTurn.isEmpty()) { + if (panelTurn == "on") { + isON = true; + } else if (panelTurn == "off") { + isON = false; + dmd.clearScreen(); + dmd.drawFilledBox(0, 0, WIDTH * 32 - 1, HEIGHT * 16 - 1, GRAPHICS_OFF); + } + } + + if (!panelState.isEmpty()) { + if (panelState == "1") { // Скролинг текста + dmd.clearScreen(); + dmd.selectFont(FONT); + dmd.drawLine(0, 14, 16, 14, GRAPHICS_ON); // x y x y + dmd.drawLine(0, 13, 16, 13, GRAPHICS_ON); + + dmd.drawLine(16, 14, 20, 5, GRAPHICS_ON); + dmd.drawLine(16, 13, 20, 4, GRAPHICS_ON); + + dmd.drawLine(20, 5, 30, 5, GRAPHICS_ON); + dmd.drawLine(20, 4, 30, 4, GRAPHICS_ON); + + dmd.drawCircle(33, 4, 3, GRAPHICS_ON); + dmd.drawCircle(33, 4, 2, GRAPHICS_ON); //1 line + + dmd.drawLine(20, 14, 40, 14, GRAPHICS_ON); + dmd.drawLine(20, 13, 40, 13, GRAPHICS_ON); + + dmd.drawLine(40, 14, 45, 5, GRAPHICS_ON); + dmd.drawLine(40, 13, 45, 4, GRAPHICS_ON); + + dmd.drawLine(45, 5, 60, 5, GRAPHICS_ON); + dmd.drawLine(45, 4, 60, 4, GRAPHICS_ON); + + dmd.drawLine(60, 5, 65, 14, GRAPHICS_ON); + dmd.drawLine(60, 4, 65, 13, GRAPHICS_ON); + + dmd.drawLine(65, 14, 75, 14, GRAPHICS_ON); + dmd.drawLine(65, 13, 75, 13, GRAPHICS_ON); + dmd.drawCircle(78, 13, 3, GRAPHICS_ON); + dmd.drawCircle(78, 13, 2, GRAPHICS_ON); //2 line + + dmd.drawCircle(68, 4, 3, GRAPHICS_ON); + dmd.drawCircle(68, 4, 2, GRAPHICS_ON); + dmd.drawLine(71, 5, 85, 5, GRAPHICS_ON); + dmd.drawLine(71, 4, 85, 4, GRAPHICS_ON); + dmd.drawLine(85, 5, 90, 14, GRAPHICS_ON); + dmd.drawLine(85, 4, 90, 13, GRAPHICS_ON); + dmd.drawLine(90, 14, 100, 14, GRAPHICS_ON); + dmd.drawLine(90, 13, 100, 13, GRAPHICS_ON); + dmd.drawLine(100, 14, 105, 5, GRAPHICS_ON); + dmd.drawLine(100, 13, 105, 4, GRAPHICS_ON); + dmd.drawLine(105, 5, 128, 5, GRAPHICS_ON); + dmd.drawLine(105, 4, 128, 4, GRAPHICS_ON); // 3 line + + // ====================================== + + dmd.drawLine(0, 35, 16, 35, GRAPHICS_ON); + dmd.drawLine(0, 36, 16, 36, GRAPHICS_ON); + dmd.drawLine(16, 35, 21, 43, GRAPHICS_ON); + dmd.drawLine(16, 36, 21, 44, GRAPHICS_ON); + dmd.drawLine(21, 43, 31, 43, GRAPHICS_ON); + dmd.drawLine(21, 44, 31, 44, GRAPHICS_ON); + dmd.drawCircle(34, 44, 3, GRAPHICS_ON); + dmd.drawCircle(34, 44, 2, GRAPHICS_ON); // 1 line + + dmd.drawLine(20, 35, 40, 35, GRAPHICS_ON); + dmd.drawLine(20, 36, 40, 36, GRAPHICS_ON); + dmd.drawLine(40, 35, 45, 43, GRAPHICS_ON); + dmd.drawLine(40, 36, 45, 44, GRAPHICS_ON); // 2 line + + dmd.drawLine(45, 43, 60, 43, GRAPHICS_ON); + dmd.drawLine(45, 44, 60, 44, GRAPHICS_ON); + + dmd.drawLine(60, 43, 65, 35, GRAPHICS_ON); + dmd.drawLine(60, 44, 65, 36, GRAPHICS_ON); + dmd.drawLine(65, 35, 75, 35, GRAPHICS_ON); + dmd.drawLine(65, 36, 75, 36, GRAPHICS_ON); + dmd.drawCircle(78, 36, 3, GRAPHICS_ON); + dmd.drawCircle(78, 36, 2, GRAPHICS_ON); + } else if (panelState == "2") { // Текст и картинка динамика + dmd.clearScreen(); + drawText(); + ticker.attach(5, switchDisplayMode); + dmd.clearScreen(); + drawBinaryArrayKit(); + } else if (panelState == "3") { // Текст и картинка статика + dmd.clearScreen(); + drawBinaryArrayKitLeft(); + dmd.drawString_P(79, 2, skb); + dmd.drawString_P(71, 17, kit); + dmd.drawString_P(68, 32, ictib); + } + } + + String response = "{\"panel\" : " + String(isON ? "\"on\"" : "\"off\"") + ", \"state\" : " + (panelState.isEmpty() ? "null" : panelState) + "}"; + request->send(200, "application/json", response); +} + +void setup() { + Serial.begin(9600); + setupWiFi(); + dmd.setBrightness(255); + dmd.selectFont(FONT); + dmd.begin(); + dmd.clearScreen(); + + box = new DMD_TextBox(dmd, 0, 0, WIDTH * 32, HEIGHT * 16); // Создаём текстовый бокс один раз + + box->print("Hello"); + + server.on( + "/api/text", HTTP_POST, + [](AsyncWebServerRequest* request) {}, + NULL, + [](AsyncWebServerRequest* request, uint8_t* data, size_t len, size_t, size_t) { + StaticJsonDocument<256> jsonReq; + DeserializationError error = deserializeJson(jsonReq, data, len); + + if (error) { + request->send(400, "application/json", "{\"error\": \"Invalid JSON\"}"); + return; + } + + handleText(request, jsonReq.as()); // Передаём как const JsonVariant& + }); + + server.on("/api/led", HTTP_GET, [](AsyncWebServerRequest* request) { + if (isON) { + request->send(200, "application/json", "{\"panel\" : \"on\"}"); + } else if (!isON) { + request->send(200, "application/json", "{\"panel\" : \"off\"}"); + } + }); + + server.on( + "/api/led", HTTP_POST, [](AsyncWebServerRequest* request) {}, + NULL, [](AsyncWebServerRequest* request, uint8_t* data, size_t len, size_t, size_t) { + StaticJsonDocument<256> jsonReq; + DeserializationError error = deserializeJson(jsonReq, data, len); + + if (error) { + request->send(400, "application/json", "{\"error\": \"Invalid JSON\"}"); + return; + } + + handleTurn(request, jsonReq.as()); + }); + + server.begin(); +} + +void loop() { +} diff --git a/README.md b/README.md deleted file mode 100644 index 05b9a88..0000000 --- a/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# The code for the panel P10 + ESP32 -********* -* List of features - + Edit text in real time via HomeAssistiant - + Split sentences into lines (features) - + Add a drawing as a binary image - + Panel operation modes(-> Text scroll -> Image ->) || (static image + static text) - + OTA (Over The Air Updates) (features) - + State of panel - + Remote panel on/off -# Docs for API -* Endpoints - + 10.131.170.4 - the local static IP - + /api/text - endpoint for editing text (POST) - + /api/led - endpint for on/off panel (POST) - + /api/led - endpoint for check on/off panel (GET), return "{"led":"true"}" if panel ON and "{"led":"false"}" if panel OFF - + /api/state - endpoint for swith operation modes (POST), body: ({"State" : "1"} -> static image and static text) || body: ({"State" : "2"} -> Text scroll -> Image ->) diff --git a/data/.venv/bin/python b/data/.venv/bin/python new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/data/.venv/bin/python @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/data/.venv/bin/python3 b/data/.venv/bin/python3 new file mode 120000 index 0000000..ae65fda --- /dev/null +++ b/data/.venv/bin/python3 @@ -0,0 +1 @@ +/usr/bin/python3 \ No newline at end of file diff --git a/data/.venv/bin/python3.12 b/data/.venv/bin/python3.12 new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/data/.venv/bin/python3.12 @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/data/.venv/lib64 b/data/.venv/lib64 new file mode 120000 index 0000000..7951405 --- /dev/null +++ b/data/.venv/lib64 @@ -0,0 +1 @@ +lib \ No newline at end of file diff --git a/data/.venv/pyvenv.cfg b/data/.venv/pyvenv.cfg new file mode 100644 index 0000000..17ce5e1 --- /dev/null +++ b/data/.venv/pyvenv.cfg @@ -0,0 +1,5 @@ +home = /usr/bin +include-system-site-packages = false +version = 3.12.3 +executable = /usr/bin/python3.12 +command = /usr/bin/python3 -m venv /home/maks_gejn/Arduino/ESP82_PANEL/data/.venv diff --git a/data/kit128 (copy).bmp b/data/kit128 (copy).bmp new file mode 100644 index 0000000000000000000000000000000000000000..462218d922792a89790932f3f871f77c5778b2c0 GIT binary patch literal 24630 zcmeI$QBK1!41i&H-UT=UC)hLMojdF(oE%{-l4ZOs$wHH?^*?Eqo4B#_rR;&vuk+>Q z`Z>$>UB2J){gChL%bQ%~bGcssTz>ciy>*Wt{$RhcL%x&>gA?@(M!Rd4= zs5VZGzz=c+jlzYrKK$w{tre@8yH3z;_66Pe<#Kk}UGtWkcL?R=d$Vql>aDC(&2b6$ zO7DH#ZnJ~MKHeC2SJ^vtwtq$IX3-TIgT6x9=8rVksMnF!r(_GI6=bAusb_x5Zu9@~ zwmVJzDE=Y+t=L2U_QBDyHa5Bt>m%^A0{j&$KN^nUNseH78#I8xWC8i{k&5XjXmaV` za+^sXJdl(Vn>Z9KZ4 zXzSnlX9e^iva<~K2`GN! 0] = 1 + image = 1 - image + image = list(np.ravel(image)) + image_text = '' + for i, pixel_data in enumerate(image): + image_text += str(pixel_data) + if i != len(image) - 1: + image_text += ', ' + text = f"#ifndef _OUTPUT_\n#define _OUTPUT_\nbyte output[128*64] = {{ {image_text} }};\n\n#endif" + + with open(args.output, 'w') as f: + f.write(text) + +if __name__ == "__main__": + main() diff --git a/data/output.h b/data/output.h new file mode 100644 index 0000000..7f7059b --- /dev/null +++ b/data/output.h @@ -0,0 +1,5 @@ +#ifndef _OUTPUT_ +#define _OUTPUT_ +byte output[128*64] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +#endif \ No newline at end of file diff --git a/fonts/Font_BOLD.h b/fonts/Font_BOLD.h new file mode 100644 index 0000000..10c2dc1 --- /dev/null +++ b/fonts/Font_BOLD.h @@ -0,0 +1,2704 @@ +# include +# ifndef _FONT_BOLD_H_ +# define _FONT_BOLD_H_ +extern const uint8_t Font_BOLD[] = { +0x05, 0x11, // size - magic numbers +0x0f, // width - for monospace font? +0x10, // height +0x20, // first char #32 in ASCII +0xa0, // char count +// char widths +0x01, 0x03, 0x07, 0x0b, 0x09, 0x0f, 0x0c, 0x03, 0x04, 0x04, 0x06, 0x09, 0x03, 0x05, 0x03, 0x05, 0x08, 0x06, 0x08, 0x08, 0x0a, 0x07, 0x08, 0x08, 0x08, 0x08, 0x03, 0x03, 0x09, 0x09, 0x09, 0x09, 0x11, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x09, 0x0c, 0x0b, 0x03, 0x09, 0x0b, 0x09, 0x0d, 0x0b, 0x0c, 0x0a, 0x0c, 0x0b, 0x0a, 0x0b, 0x0b, 0x0d, 0x11, 0x0a, 0x0b, 0x0a, 0x05, 0x05, 0x05, 0x07, 0x0a, 0x04, 0x08, 0x09, 0x08, 0x09, 0x09, 0x07, 0x09, 0x09, 0x03, 0x04, 0x09, 0x03, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x06, 0x08, 0x06, 0x09, 0x09, 0x0f, 0x09, 0x0b, 0x07, 0x06, 0x02, 0x06, 0x01, 0x09, 0x09, 0x08, 0x09, 0x0b, 0x0d, 0x09, 0x0a, 0x08, 0x0d, 0x0e, 0x0b, 0x0d, 0x09, 0x08, 0x0d, 0x0a, 0x0b, 0x0b, 0x0b, 0x08, 0x0d, 0x0a, 0x11, 0x0a, 0x0b, 0x0b, 0x0a, 0x0c, 0x0d, 0x0b, 0x0c, 0x0b, 0x0a, 0x0b, 0x0b, 0x0b, 0x0d, 0x0a, 0x0c, 0x0b, 0x0f, 0x10, 0x0f, 0x10, 0x0b, 0x0b, 0x11, 0x0c, 0x09, 0x09, 0x09, 0x06, 0x0b, 0x09, 0x0d, 0x08, 0x09, 0x09, 0x08, 0x0a, 0x0b, 0x09, 0x09, 0x09, +// font data + // ---------------- + 0x00, 0x00, + // --- + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // -*- + // -*- + // --- + // *** + // *** + // *** + // --- + // --- + 0xfe, 0xfe, 0xfe, 0x38, 0x3b, 0x38, + // ------- + // ***-*** + // ***-*** + // ***-*** + // ***-*** + // ***-*** + // ------- + // ------- + // ------- + // ------- + // ------- + // ------- + // ------- + // ------- + // ------- + // ------- + 0x3e, 0x3e, 0x3e, 0x00, 0x3e, 0x3e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // ----------- + // ----**--**- + // ----**--**- + // ---**--**-- + // *********** + // *********** + // ---**--**-- + // --***-***-- + // --**--**--- + // *********** + // *********** + // --**--**--- + // -**--**---- + // -**--**---- + // ----------- + // ----------- + 0x30, 0x30, 0xb0, 0xf8, 0xfe, 0x36, 0xb0, 0xf8, 0xfe, 0x36, 0x30, 0x06, 0x36, 0x3f, 0x0f, 0x06, 0x36, 0x3f, 0x0f, 0x06, 0x06, 0x06, + // ----*---- + // --*****-- + // -*******- + // ***-*-*** + // ***-*---- + // ***-*---- + // -*****--- + // --******- + // ----***** + // ----*-*** + // ***-*-*** + // ***-*-*** + // -*******- + // --*****-- + // ----*---- + // ----*---- + 0x38, 0x7c, 0xfe, 0xc6, 0xff, 0xc6, 0x8e, 0x8c, 0x08, 0x0c, 0x1c, 0x3c, 0x30, 0xff, 0x31, 0x3f, 0x1f, 0x0f, + // --------------- + // -****-----**--- + // **--**---**---- + // **--**---**---- + // **--**--**----- + // **--**--**----- + // -****--**------ + // -------**------ + // ------**------- + // ------**--****- + // -----**--**--** + // -----**--**--** + // ----**---**--** + // ----**---**--** + // ---**-----****- + // --------------- + 0x3c, 0x7e, 0x42, 0x42, 0x7e, 0x3c, 0x00, 0xc0, 0xf0, 0x3c, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, 0x3c, 0x0f, 0x03, 0x00, 0x3c, 0x7e, 0x42, 0x42, 0x7e, 0x3c, + // ------------ + // ---****----- + // -********--- + // -***--***--- + // -***--***--- + // --***-**---- + // ---****----- + // --*****----- + // -*******-**- + // ***--******- + // ***---****-- + // ***---*****- + // -*********** + // --*****---*- + // ------------ + // ------------ + 0x00, 0x1c, 0xbc, 0xfe, 0xe6, 0xc6, 0xfe, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x0e, 0x1f, 0x3f, 0x31, 0x31, 0x33, 0x3f, 0x1f, 0x1e, 0x1f, 0x3b, 0x10, + // --- + // *** + // *** + // *** + // *** + // *** + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // --- + 0x3e, 0x3e, 0x3e, 0x00, 0x00, 0x00, + // ---- + // --** + // -*** + // -*** + // -**- + // ***- + // ***- + // ***- + // ***- + // ***- + // ***- + // ***- + // -**- + // -*** + // -*** + // --** + 0xe0, 0xfc, 0xfe, 0x0e, 0x0f, 0x7f, 0xff, 0xe0, + // ---- + // **-- + // ***- + // ***- + // -**- + // -*** + // -*** + // -*** + // -*** + // -*** + // -*** + // -*** + // -**- + // ***- + // ***- + // **-- + 0x0e, 0xfe, 0xfc, 0xe0, 0xe0, 0xff, 0x7f, 0x0f, + // ------ + // --**-- + // *-**-* + // ****** + // --**-- + // -****- + // **--** + // ------ + // ------ + // ------ + // ------ + // ------ + // ------ + // ------ + // ------ + // ------ + 0x4c, 0x68, 0x3e, 0x3e, 0x68, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // --------- + // --------- + // --------- + // ---***--- + // ---***--- + // ---***--- + // ********* + // ********* + // ********* + // ---***--- + // ---***--- + // ---***--- + // --------- + // --------- + // --------- + // --------- + 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8, 0xc0, 0xc0, 0xc0, 0x01, 0x01, 0x01, 0x0f, 0x0f, 0x0f, 0x01, 0x01, 0x01, + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // *** + // *** + // *** + // --* + // -** + 0x00, 0x00, 0x00, 0x38, 0xb8, 0xf8, + // ----- + // ----- + // ----- + // ----- + // ----- + // ----- + // ----- + // ----- + // ***** + // ***** + // ***** + // ----- + // ----- + // ----- + // ----- + // ----- + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // --- + // *** + // *** + // *** + // --- + // --- + 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, + // ----- + // ---** + // ---** + // --**- + // --**- + // --**- + // --**- + // -***- + // -**-- + // -**-- + // -**-- + // -**-- + // **--- + // **--- + // ----- + // ----- + 0x00, 0x80, 0xf8, 0xfe, 0x06, 0x30, 0x3f, 0x0f, 0x00, 0x00, + // -------- + // --****-- + // -******- + // -**--**- + // ***--*** + // ***--*** + // ***--*** + // ***--*** + // ***--*** + // ***--*** + // ***--*** + // -**--**- + // -******- + // --****-- + // -------- + // -------- + 0xf0, 0xfc, 0xfe, 0x06, 0x06, 0xfe, 0xfc, 0xf0, 0x07, 0x1f, 0x3f, 0x30, 0x30, 0x3f, 0x1f, 0x07, + // ------ + // ----** + // ---*** + // --**** + // -***** + // ****** + // **-*** + // ---*** + // ---*** + // ---*** + // ---*** + // ---*** + // ---*** + // ---*** + // ------ + // ------ + 0x60, 0x70, 0x38, 0xfc, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, + // -------- + // --****-- + // -******- + // ***--*** + // ***--*** + // -----*** + // ----***- + // ----***- + // ---***-- + // --***--- + // --***--- + // -***---- + // ******** + // ******** + // -------- + // -------- + 0x18, 0x1c, 0x1e, 0x06, 0xc6, 0xfe, 0xfc, 0x38, 0x30, 0x38, 0x3e, 0x3f, 0x37, 0x31, 0x30, 0x30, + // -------- + // --****-- + // -******- + // ***--*** + // ***--*** + // -----*** + // ---****- + // ---****- + // -----*** + // -----*** + // ***--*** + // ***--*** + // -******- + // --****-- + // -------- + // -------- + 0x18, 0x1c, 0x1e, 0xc6, 0xc6, 0xfe, 0xfc, 0x38, 0x0c, 0x1c, 0x3c, 0x30, 0x30, 0x3f, 0x1f, 0x0f, + // ---------- + // -----***-- + // ----****-- + // ----****-- + // ---*****-- + // --**-***-- + // --**-***-- + // -**--***-- + // **---***-- + // ********** + // ********** + // -----***-- + // -----***-- + // -----***-- + // ---------- + // ---------- + 0x00, 0x80, 0xe0, 0x70, 0x1c, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x3f, 0x3f, 0x3f, 0x06, 0x06, + // ------- + // ******* + // ******* + // **----- + // **----- + // *****-- + // ******- + // **--*** + // -----** + // -----** + // -----** + // **--*** + // ******- + // -****-- + // ------- + // ------- + 0xfe, 0xfe, 0x66, 0x66, 0xe6, 0xc6, 0x86, 0x18, 0x38, 0x30, 0x30, 0x38, 0x1f, 0x0f, + // -------- + // --*****- + // -******* + // -**--*** + // ***----- + // ******-- + // *******- + // ***--*** + // ***--*** + // ***--*** + // ***--*** + // -**--*** + // -******- + // --****-- + // -------- + // -------- + 0xf0, 0xfc, 0xfe, 0x66, 0x66, 0xee, 0xce, 0x8c, 0x07, 0x1f, 0x3f, 0x30, 0x30, 0x3f, 0x1f, 0x0f, + // -------- + // ******** + // ******** + // -----*** + // ----***- + // ----**-- + // ---***-- + // ---**--- + // --***--- + // --***--- + // -***---- + // -***---- + // -***---- + // -***---- + // -------- + // -------- + 0x06, 0x06, 0x06, 0xc6, 0xf6, 0x7e, 0x1e, 0x0e, 0x00, 0x3c, 0x3f, 0x3f, 0x03, 0x00, 0x00, 0x00, + // -------- + // --****-- + // -******- + // ***--*** + // ***--*** + // ***--*** + // -******- + // --****-- + // -**--**- + // ***--*** + // ***--*** + // ***--*** + // -******- + // --****-- + // -------- + // -------- + 0x38, 0x7c, 0xfe, 0xc6, 0xc6, 0xfe, 0x7c, 0x38, 0x0e, 0x1f, 0x3f, 0x30, 0x30, 0x3f, 0x1f, 0x0e, + // -------- + // --****-- + // -******- + // ***--**- + // ***--*** + // ***--*** + // ***--*** + // ***--*** + // -******* + // --****** + // -----*** + // ***--**- + // -******- + // --****-- + // -------- + // -------- + 0xf8, 0xfc, 0xfe, 0x06, 0x06, 0xfe, 0xfc, 0xf0, 0x08, 0x19, 0x3b, 0x33, 0x33, 0x3f, 0x1f, 0x07, + // --- + // --- + // --- + // --- + // *** + // *** + // *** + // --- + // --- + // --- + // --- + // *** + // *** + // *** + // --- + // --- + 0x70, 0x70, 0x70, 0x38, 0x38, 0x38, + // --- + // --- + // --- + // --- + // *** + // *** + // *** + // --- + // --- + // --- + // --- + // *** + // *** + // *** + // --* + // -** + 0x70, 0x70, 0x70, 0x38, 0xb8, 0xf8, + // --------- + // --------- + // --------- + // --------* + // ------*** + // ---****** + // -******-- + // ****----- + // ****----- + // -******-- + // ---****** + // ------*** + // --------* + // --------- + // --------- + // --------- + 0x80, 0xc0, 0xc0, 0xe0, 0x60, 0x60, 0x70, 0x30, 0x38, 0x01, 0x03, 0x03, 0x07, 0x06, 0x06, 0x0e, 0x0c, 0x1c, + // --------- + // --------- + // --------- + // --------- + // ********* + // ********* + // ********* + // --------- + // --------- + // ********* + // ********* + // ********* + // --------- + // --------- + // --------- + // --------- + 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, + // --------- + // --------- + // --------- + // *-------- + // ***------ + // ******--- + // --******- + // -----**** + // -----**** + // --******- + // ******--- + // ***------ + // *-------- + // --------- + // --------- + // --------- + 0x38, 0x30, 0x70, 0x60, 0x60, 0xe0, 0xc0, 0xc0, 0x80, 0x1c, 0x0c, 0x0e, 0x06, 0x06, 0x07, 0x03, 0x03, 0x01, + // --------- + // --*****-- + // -*******- + // ****--*** + // ***---*** + // -----**** + // ----****- + // ---****-- + // ---***--- + // ---***--- + // --------- + // ---***--- + // ---***--- + // ---***--- + // --------- + // --------- + 0x18, 0x1c, 0x1e, 0x8e, 0xc6, 0xe6, 0xfe, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x3b, 0x3b, 0x3b, 0x00, 0x00, 0x00, + // ------******----- + // ----**********--- + // --****-----****-- + // --**--***-**-**-- + // -**--*******-***- + // -**-**---***--**- + // **-***---***--**- + // **-**----**---**- + // **-**----**---**- + // **-**---***--**-- + // **-**---***-***-- + // **--**********--- + // -**-****-***----- + // -***----------*** + // --**************- + // ----**********--- + 0xc0, 0xf0, 0x3c, 0xcc, 0xe6, 0x76, 0x1b, 0x1b, 0x1b, 0xf3, 0xfb, 0x7f, 0x06, 0x1e, 0xfc, 0xf0, 0x00, 0x0f, 0x3f, 0x70, 0x67, 0xdf, 0xd8, 0xd8, 0xd8, 0xce, 0xdf, 0xdf, 0xd8, 0xcc, 0xce, 0x67, 0x61, 0x20, + // ----------- + // ---*****--- + // ---*****--- + // ---*****--- + // --***-***-- + // --***-***-- + // --***-***-- + // -***---***- + // -*********- + // -*********- + // *********** + // ***-----*** + // ***-----*** + // **-------** + // ----------- + // ----------- + 0x00, 0x80, 0xf0, 0xfe, 0x7e, 0x0e, 0x7e, 0xfe, 0xf0, 0x80, 0x00, 0x3c, 0x3f, 0x1f, 0x07, 0x07, 0x07, 0x07, 0x07, 0x1f, 0x3f, 0x3c, + // ----------- + // *********-- + // **********- + // *********** + // ***-----*** + // ***-----*** + // **********- + // *********-- + // **********- + // ***-----*** + // ***-----*** + // *********** + // **********- + // *********-- + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0xce, 0xce, 0xce, 0xce, 0xce, 0xfe, 0x7c, 0x38, 0x3f, 0x3f, 0x3f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3f, 0x1f, 0x0e, + // ----------- + // ----****--- + // --********- + // -********** + // -***---**** + // ***-----**- + // ***-------- + // ***-------- + // ***-------- + // ***-----**- + // -***---**** + // -********** + // --********- + // ----****--- + // ----------- + // ----------- + 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x0e, 0x0e, 0x1e, 0x3c, 0x3c, 0x18, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x38, 0x38, 0x3c, 0x1e, 0x1e, 0x0c, + // ----------- + // ********--- + // **********- + // **********- + // ***----**** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***----**** + // **********- + // **********- + // ********--- + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0x0e, 0x0e, 0x0e, 0x0e, 0x1e, 0xfc, 0xfc, 0xf0, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x3c, 0x1f, 0x1f, 0x07, + // ---------- + // ********** + // ********** + // ********** + // ***------- + // ***------- + // ********** + // ********** + // ********** + // ***------- + // ***------- + // ********** + // ********** + // ********** + // ---------- + // ---------- + 0xfe, 0xfe, 0xfe, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0x3f, 0x3f, 0x3f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, + // --------- + // ********* + // ********* + // ********* + // ***------ + // ***------ + // ********- + // ********- + // ********- + // ***------ + // ***------ + // ***------ + // ***------ + // ***------ + // --------- + // --------- + 0xfe, 0xfe, 0xfe, 0xce, 0xce, 0xce, 0xce, 0xce, 0x0e, 0x3f, 0x3f, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + // ------------ + // ----*****--- + // --*********- + // -*********** + // -***----**** + // ***------**- + // ***--------- + // ***---****** + // ***---****** + // ***---****** + // -***-----*** + // -*********** + // --*********- + // ----*****--- + // ------------ + // ------------ + 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x0e, 0x8e, 0x8e, 0x9e, 0xbc, 0xbc, 0x98, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x38, 0x3b, 0x3b, 0x3b, 0x1f, 0x1f, 0x0f, + // ----------- + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // *********** + // *********** + // *********** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0xfe, 0xfe, 0x3f, 0x3f, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x3f, 0x3f, + // --- + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // --- + // --- + 0xfe, 0xfe, 0xfe, 0x3f, 0x3f, 0x3f, + // --------- + // ------*** + // ------*** + // ------*** + // ------*** + // ------*** + // ------*** + // ------*** + // ------*** + // ***---*** + // ***---*** + // ********* + // -*******- + // --*****-- + // --------- + // --------- + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x0e, 0x1e, 0x3e, 0x38, 0x38, 0x38, 0x3f, 0x1f, 0x0f, + // ----------- + // ***----**** + // ***---****- + // ***---***-- + // ***--***--- + // ***-***---- + // *******---- + // ********--- + // ****-***--- + // ***---***-- + // ***---***-- + // ***----***- + // ***-----*** + // ***-----*** + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0xc0, 0xe0, 0xf0, 0xfc, 0x9e, 0x0e, 0x06, 0x02, 0x3f, 0x3f, 0x3f, 0x01, 0x00, 0x01, 0x07, 0x0f, 0x3e, 0x38, 0x30, + // --------- + // ***------ + // ***------ + // ***------ + // ***------ + // ***------ + // ***------ + // ***------ + // ***------ + // ***------ + // ***------ + // ********* + // ********* + // ********* + // --------- + // --------- + 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + // ------------- + // ****-----**** + // ****-----**** + // *****---***** + // *****---***** + // *****---***** + // ***-**-**-*** + // ***-**-**-*** + // ***-**-**-*** + // ***-**-**-*** + // ***--***--*** + // ***--***--*** + // ***--***--*** + // ***---*---*** + // ------------- + // ------------- + 0xfe, 0xfe, 0xfe, 0x3e, 0xf8, 0xc0, 0x00, 0xc0, 0xf8, 0x3e, 0xfe, 0xfe, 0xfe, 0x3f, 0x3f, 0x3f, 0x00, 0x03, 0x1f, 0x3c, 0x1f, 0x03, 0x00, 0x3f, 0x3f, 0x3f, + // ----------- + // ***-----*** + // ****----*** + // *****---*** + // *****---*** + // ******--*** + // ***-**--*** + // ***-***-*** + // ***--**-*** + // ***--****** + // ***---***** + // ***---***** + // ***----**** + // ***-----*** + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0x3c, 0xf8, 0xe0, 0x80, 0x00, 0xfe, 0xfe, 0xfe, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x03, 0x0f, 0x1e, 0x3f, 0x3f, 0x3f, + // ------------ + // ----****---- + // --********-- + // -**********- + // -***----***- + // ***------*** + // ***------*** + // ***------*** + // ***------*** + // ***------*** + // -***----***- + // -**********- + // --********-- + // ----****---- + // ------------ + // ------------ + 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x0e, 0x0e, 0x0e, 0x1c, 0xfc, 0xf8, 0xe0, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x38, 0x38, 0x38, 0x1c, 0x1f, 0x0f, 0x03, + // ---------- + // ********-- + // *********- + // ********** + // ***----*** + // ***----*** + // ********** + // *********- + // ********-- + // ***------- + // ***------- + // ***------- + // ***------- + // ***------- + // ---------- + // ---------- + 0xfe, 0xfe, 0xfe, 0xce, 0xce, 0xce, 0xce, 0xfe, 0xfc, 0x78, 0x3f, 0x3f, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + // ------------ + // ---******--- + // --********-- + // -**********- + // -***----***- + // ***------*** + // ***------*** + // ***------*** + // ***---*--*** + // ***--******* + // -***--****** + // -**********- + // --*********- + // ---*****-*** + // ----------*- + // ------------ + 0xe0, 0xf8, 0xfc, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x1e, 0xfc, 0xf8, 0xe0, 0x03, 0x0f, 0x1f, 0x3c, 0x38, 0x3a, 0x3f, 0x3e, 0x1e, 0x3f, 0x7f, 0x27, + // ----------- + // *********-- + // **********- + // *********** + // ***-----*** + // ***-----*** + // *********** + // **********- + // ********--- + // ***--****-- + // ***---****- + // ***----***- + // ***----**** + // ***-----*** + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0xce, 0xce, 0xce, 0xce, 0xce, 0xfe, 0xfc, 0x78, 0x3f, 0x3f, 0x3f, 0x01, 0x01, 0x03, 0x07, 0x1f, 0x3e, 0x3c, 0x30, + // ---------- + // --******-- + // -********- + // ********** + // ***----*** + // ***------- + // *******--- + // -********- + // ---******* + // -------*** + // ***----*** + // ********** + // -********- + // --******-- + // ---------- + // ---------- + 0x78, 0xfc, 0xfe, 0xce, 0xce, 0xce, 0xce, 0x9e, 0x9c, 0x18, 0x0c, 0x1c, 0x3c, 0x39, 0x39, 0x39, 0x39, 0x3f, 0x1f, 0x0f, + // ----------- + // *********** + // *********** + // *********** + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----------- + // ----------- + 0x0e, 0x0e, 0x0e, 0x0e, 0xfe, 0xfe, 0xfe, 0x0e, 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, + // ----------- + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ****---**** + // -*********- + // -*********- + // ---*****--- + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x07, 0x1f, 0x1f, 0x3c, 0x38, 0x38, 0x38, 0x3c, 0x1f, 0x1f, 0x07, + // ------------- + // ***-------*** + // ***-------*** + // -***-----***- + // -***-----***- + // -***-----***- + // --***---***-- + // --***---***-- + // ---***-***--- + // ---***-***--- + // ---***-***--- + // ----*****---- + // ----*****---- + // ----*****---- + // ------------- + // ------------- + 0x06, 0x3e, 0xfe, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0xfe, 0x3e, 0x06, 0x00, 0x00, 0x00, 0x07, 0x3f, 0x3f, 0x38, 0x3f, 0x3f, 0x07, 0x00, 0x00, 0x00, + // ----------------- + // ***----***----*** + // ***----***----*** + // ***---*****---*** + // -***--**-**--***- + // -***--**-**--***- + // -***-***-***-***- + // -***-***-***-***- + // -***-**---**-***- + // -***-**---**-***- + // --*****---*****-- + // --*****---*****-- + // --****-----****-- + // --****-----****-- + // ----------------- + // ----------------- + 0x0e, 0xfe, 0xfe, 0xf0, 0x00, 0xc0, 0xf8, 0xfe, 0x0e, 0xfe, 0xf8, 0xc0, 0x00, 0xf0, 0xfe, 0xfe, 0x0e, 0x00, 0x03, 0x3f, 0x3f, 0x3c, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x3c, 0x3f, 0x3f, 0x03, 0x00, + // ---------- + // ***----*** + // ***----*** + // -***--***- + // --**--**-- + // --******-- + // ---****--- + // ---****--- + // ---****--- + // --******-- + // --**--**-- + // -***--***- + // ***----*** + // ***----*** + // ---------- + // ---------- + 0x06, 0x0e, 0x3e, 0xf8, 0xe0, 0xe0, 0xf8, 0x3e, 0x0e, 0x06, 0x30, 0x38, 0x3e, 0x0f, 0x03, 0x03, 0x0f, 0x3e, 0x38, 0x30, + // ----------- + // ***-----*** + // ***-----*** + // -***---***- + // --***-***-- + // --***-***-- + // ---*****--- + // ---*****--- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----------- + // ----------- + 0x06, 0x0e, 0x3e, 0xf8, 0xf0, 0xc0, 0xf0, 0xf8, 0x3e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, + // ---------- + // ********** + // ********** + // ********** + // ------***- + // -----***-- + // ----***--- + // ---****--- + // ---***---- + // --***----- + // -***------ + // ********** + // ********** + // ********** + // ---------- + // ---------- + 0x0e, 0x0e, 0x0e, 0x8e, 0xce, 0xee, 0xfe, 0x3e, 0x1e, 0x0e, 0x38, 0x3c, 0x3e, 0x3f, 0x3b, 0x39, 0x38, 0x38, 0x38, 0x38, + // ----- + // ***** + // ***** + // ***** + // ***-- + // ***-- + // ***-- + // ***-- + // ***-- + // ***-- + // ***-- + // ***-- + // ***-- + // ***** + // ***** + // ***** + 0xfe, 0xfe, 0xfe, 0x0e, 0x0e, 0xff, 0xff, 0xff, 0xe0, 0xe0, + // ----- + // **--- + // **--- + // -**-- + // -**-- + // -**-- + // -**-- + // -***- + // --**- + // --**- + // --**- + // --**- + // ---** + // ---** + // ----- + // ----- + 0x06, 0xfe, 0xf8, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x30, + // ----- + // ***** + // ***** + // ***** + // --*** + // --*** + // --*** + // --*** + // --*** + // --*** + // --*** + // --*** + // --*** + // ***** + // ***** + // ***** + 0x0e, 0x0e, 0xfe, 0xfe, 0xfe, 0xe0, 0xe0, 0xff, 0xff, 0xff, + // ------- + // --***-- + // --***-- + // -*****- + // -**-**- + // ***-*** + // **---** + // **---** + // ------- + // ------- + // ------- + // ------- + // ------- + // ------- + // ------- + // ------- + 0xe0, 0xf8, 0x3e, 0x0e, 0x3e, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // ---------- + // ---------- + // ---------- + // ---------- + // ---------- + // ---------- + // ---------- + // ---------- + // ---------- + // ---------- + // ---------- + // ---------- + // ---------- + // ---------- + // ********** + // ********** + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + // ---- + // **-- + // -**- + // --** + // ---- + // ---- + // ---- + // ---- + // ---- + // ---- + // ---- + // ---- + // ---- + // ---- + // ---- + // ---- + 0x02, 0x06, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, + // -------- + // -------- + // -------- + // -------- + // --*****- + // -******* + // **---*** + // ----**** + // --****** + // -***-*** + // ***--*** + // ***--*** + // ******** + // -****-** + // -------- + // -------- + 0x40, 0x60, 0x30, 0x30, 0xb0, 0xf0, 0xf0, 0xe0, 0x1c, 0x3e, 0x3f, 0x33, 0x31, 0x1f, 0x3f, 0x3f, + // --------- + // ***------ + // ***------ + // ***------ + // ***-***-- + // ********- + // ****-**** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ****-**** + // ********- + // ***-***-- + // --------- + // --------- + 0xfe, 0xfe, 0xfe, 0x60, 0x30, 0x70, 0xf0, 0xe0, 0xc0, 0x3f, 0x3f, 0x3f, 0x18, 0x30, 0x38, 0x3f, 0x1f, 0x0f, + // -------- + // -------- + // -------- + // -------- + // --****-- + // -******- + // ****-*** + // ***---*- + // ***----- + // ***----- + // ***---*- + // ****-*** + // -******- + // --****-- + // -------- + // -------- + 0xc0, 0xe0, 0xf0, 0x70, 0x30, 0x70, 0xe0, 0x40, 0x0f, 0x1f, 0x3f, 0x38, 0x30, 0x38, 0x1c, 0x08, + // --------- + // ------*** + // ------*** + // ------*** + // --***-*** + // -******** + // ****-**** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ****-**** + // -******** + // --***-*** + // --------- + // --------- + 0xc0, 0xe0, 0xf0, 0x70, 0x30, 0x60, 0xfe, 0xfe, 0xfe, 0x0f, 0x1f, 0x3f, 0x38, 0x30, 0x18, 0x3f, 0x3f, 0x3f, + // --------- + // --------- + // --------- + // --------- + // --*****-- + // -*******- + // ***---*** + // ***---*** + // ********* + // ********* + // ***------ + // ***---*** + // -*******- + // --*****-- + // --------- + // --------- + 0xc0, 0xe0, 0xf0, 0x30, 0x30, 0x30, 0xf0, 0xe0, 0xc0, 0x0f, 0x1f, 0x3f, 0x33, 0x33, 0x33, 0x3b, 0x1b, 0x0b, + // ------- + // --***** + // -****** + // -***--- + // ******- + // ******- + // -***--- + // -***--- + // -***--- + // -***--- + // -***--- + // -***--- + // -***--- + // -***--- + // ------- + // ------- + 0x30, 0xfc, 0xfe, 0xfe, 0x36, 0x36, 0x06, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, + // --------- + // --------- + // --------- + // --------- + // --***-*** + // -******** + // ****-**** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ****-**** + // -******** + // ------*** + // ***---*** + // ********* + 0xc0, 0xe0, 0xf0, 0x70, 0x30, 0x60, 0xf0, 0xf0, 0xf0, 0xcf, 0xdf, 0xdf, 0x98, 0x90, 0x98, 0xff, 0xff, 0xff, + // --------- + // ***------ + // ***------ + // ***------ + // ***-****- + // ********* + // ****--*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // --------- + // --------- + 0xfe, 0xfe, 0xfe, 0x60, 0x30, 0x30, 0xf0, 0xf0, 0xe0, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, + // --- + // *** + // *** + // --- + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // --- + // --- + 0xf6, 0xf6, 0xf6, 0x3f, 0x3f, 0x3f, + // ---- + // -*** + // -*** + // ---- + // -*** + // -*** + // -*** + // -*** + // -*** + // -*** + // -*** + // -*** + // -*** + // **** + // ***- + // **-- + 0x00, 0xf6, 0xf6, 0xf6, 0xe0, 0xff, 0x7f, 0x3f, + // --------- + // ***------ + // ***------ + // ***------ + // ***---*** + // ***--***- + // ***-***-- + // ******--- + // ******--- + // *******-- + // ***-***-- + // ***--***- + // ***--***- + // ***---*** + // --------- + // --------- + 0xfe, 0xfe, 0xfe, 0x80, 0xc0, 0xe0, 0x70, 0x30, 0x10, 0x3f, 0x3f, 0x3f, 0x03, 0x07, 0x1f, 0x3e, 0x38, 0x20, + // --- + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // *** + // --- + // --- + 0xfe, 0xfe, 0xfe, 0x3f, 0x3f, 0x3f, + // --------------- + // --------------- + // --------------- + // --------------- + // ***-****--****- + // *************** + // ****--****--*** + // ***---***---*** + // ***---***---*** + // ***---***---*** + // ***---***---*** + // ***---***---*** + // ***---***---*** + // ***---***---*** + // --------------- + // --------------- + 0xf0, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0xf0, 0xf0, 0xe0, 0x60, 0x30, 0x30, 0xf0, 0xf0, 0xe0, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, + // --------- + // --------- + // --------- + // --------- + // ***-****- + // ********* + // ****--*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // --------- + // --------- + 0xf0, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0xf0, 0xf0, 0xe0, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, + // --------- + // --------- + // --------- + // --------- + // --*****-- + // -*******- + // ****-**** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ****-**** + // -*******- + // --*****-- + // --------- + // --------- + 0xc0, 0xe0, 0xf0, 0x70, 0x30, 0x70, 0xf0, 0xe0, 0xc0, 0x0f, 0x1f, 0x3f, 0x38, 0x30, 0x38, 0x3f, 0x1f, 0x0f, + // --------- + // --------- + // --------- + // --------- + // ***-***-- + // ********- + // ****-**** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ****-**** + // ********- + // ***-***-- + // ***------ + // ***------ + 0xf0, 0xf0, 0xf0, 0x60, 0x30, 0x70, 0xf0, 0xe0, 0xc0, 0xff, 0xff, 0xff, 0x18, 0x30, 0x38, 0x3f, 0x1f, 0x0f, + // --------- + // --------- + // --------- + // --------- + // --***-*** + // -******** + // ****-**** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ****-**** + // -******** + // --***-*** + // ------*** + // ------*** + 0xc0, 0xe0, 0xf0, 0x70, 0x30, 0x60, 0xf0, 0xf0, 0xf0, 0x0f, 0x1f, 0x3f, 0x38, 0x30, 0x18, 0xff, 0xff, 0xff, + // ------ + // ------ + // ------ + // ------ + // ***-** + // ****** + // ****-- + // ***--- + // ***--- + // ***--- + // ***--- + // ***--- + // ***--- + // ***--- + // ------ + // ------ + 0xf0, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, + // -------- + // -------- + // -------- + // -------- + // -******- + // ******** + // ***--*** + // ****---- + // -*****-- + // --*****- + // ----**** + // ***--*** + // ******** + // -******- + // -------- + // -------- + 0xe0, 0xf0, 0xf0, 0xb0, 0x30, 0x70, 0x70, 0x60, 0x18, 0x39, 0x3b, 0x33, 0x37, 0x3f, 0x3e, 0x1c, + // ------ + // --**-- + // -***-- + // -***-- + // ****** + // ****** + // -***-- + // -***-- + // -***-- + // -***-- + // -***-- + // -***-- + // -***** + // --**** + // ------ + // ------ + 0x30, 0xfc, 0xfe, 0xfe, 0x30, 0x30, 0x00, 0x1f, 0x3f, 0x3f, 0x30, 0x30, + // --------- + // --------- + // --------- + // --------- + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***--**** + // ********* + // -****-*** + // --------- + // --------- + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x1f, 0x3f, 0x3f, 0x30, 0x30, 0x18, 0x3f, 0x3f, 0x3f, + // --------- + // --------- + // --------- + // --------- + // ***---*** + // ***---*** + // ***---*** + // -***-***- + // -***-***- + // --**-**-- + // --*****-- + // --*****-- + // ---***--- + // ---***--- + // --------- + // --------- + 0x70, 0xf0, 0xf0, 0x80, 0x00, 0x80, 0xf0, 0xf0, 0x70, 0x00, 0x01, 0x0f, 0x3f, 0x3c, 0x3f, 0x0f, 0x01, 0x00, + // --------------- + // --------------- + // --------------- + // --------------- + // ***---***---*** + // ***---***---*** + // -**---***---**- + // -***-*****-***- + // -***-**-**-***- + // --**-**-**-**-- + // --*****-*****-- + // --****---****-- + // ---***---***--- + // ---***---***--- + // --------------- + // --------------- + 0x30, 0xf0, 0xf0, 0x80, 0x00, 0x80, 0xf0, 0xf0, 0xf0, 0x80, 0x00, 0x80, 0xf0, 0xf0, 0x30, 0x00, 0x01, 0x0f, 0x3f, 0x3c, 0x3f, 0x07, 0x00, 0x07, 0x3f, 0x3c, 0x3f, 0x0f, 0x01, 0x00, + // --------- + // --------- + // --------- + // --------- + // ***---*** + // -***-***- + // -***-***- + // --*****-- + // ---***--- + // ---***--- + // --*****-- + // -***-***- + // -***-***- + // ***---*** + // --------- + // --------- + 0x10, 0x70, 0xf0, 0xe0, 0x80, 0xe0, 0xf0, 0x70, 0x10, 0x20, 0x38, 0x3c, 0x1f, 0x07, 0x1f, 0x3c, 0x38, 0x20, + // ----------- + // ----------- + // ----------- + // ----------- + // ***-----*** + // ***-----*** + // -***---***- + // -***---***- + // --**---**-- + // --***-***-- + // ---**-***-- + // ---*****--- + // ----***---- + // ----***---- + // ---****---- + // ---***----- + 0x30, 0xf0, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf0, 0x30, 0x00, 0x00, 0x03, 0xcf, 0xfe, 0xf8, 0x7e, 0x0f, 0x07, 0x00, 0x00, + // ------- + // ------- + // ------- + // ------- + // ******* + // ******* + // ----*** + // ---***- + // --***-- + // --***-- + // -***--- + // ***---- + // ******* + // ******* + // ------- + // ------- + 0x30, 0x30, 0x30, 0xb0, 0xf0, 0xf0, 0x70, 0x38, 0x3c, 0x3f, 0x37, 0x33, 0x30, 0x30, + // ---*** + // --**** + // --**-- + // --**-- + // --**-- + // --**-- + // -***-- + // ***--- + // ***--- + // -***-- + // --**-- + // --**-- + // --**-- + // --**-- + // --**** + // ---*** + 0x80, 0xc0, 0xfe, 0x7f, 0x03, 0x03, 0x01, 0x03, 0x7f, 0xfe, 0xc0, 0xc0, + // -- + // ** + // ** + // ** + // ** + // ** + // ** + // ** + // ** + // ** + // ** + // ** + // ** + // ** + // ** + // -- + 0xfe, 0xfe, 0x7f, 0x7f, + // ***--- + // ****-- + // --**-- + // --**-- + // --**-- + // --**-- + // --***- + // ---*** + // ---*** + // --***- + // --**-- + // --**-- + // --**-- + // --**-- + // ****-- + // ***--- + 0x03, 0x03, 0x7f, 0xfe, 0xc0, 0x80, 0xc0, 0xc0, 0xfe, 0x7f, 0x03, 0x01, + // ---------------- + 0x00, 0x00, + // --------- + // ---***--- + // ---***--- + // ---***--- + // ---***--- + // ********* + // ********* + // ********* + // ---***--- + // ---***--- + // ---***--- + // ---***--- + // ---***--- + // ---***--- + // ---***--- + // ---***--- + 0xe0, 0xe0, 0xe0, 0xfe, 0xfe, 0xfe, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, + // --------- + // --------- + // --------- + // --------- + // ***-***-- + // ********- + // ****-**** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ****-**** + // ********- + // ***-***-- + // ***------ + // ***------ + 0xf0, 0xf0, 0xf0, 0x60, 0x30, 0x70, 0xf0, 0xe0, 0xc0, 0xff, 0xff, 0xff, 0x18, 0x30, 0x38, 0x3f, 0x1f, 0x0f, + // -------- + // -------- + // -------- + // -------- + // --****-- + // -******- + // ****-*** + // ***---*- + // ***----- + // ***----- + // ***---*- + // ****-*** + // -******- + // --****-- + // -------- + // -------- + 0xc0, 0xe0, 0xf0, 0x70, 0x30, 0x70, 0xe0, 0x40, 0x0f, 0x1f, 0x3f, 0x38, 0x30, 0x38, 0x1c, 0x08, + // --------- + // --------- + // --------- + // --------- + // ********* + // ********* + // ---***--- + // ---***--- + // ---***--- + // ---***--- + // ---***--- + // ---***--- + // ---***--- + // ---***--- + // --------- + // --------- + 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xf0, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, + // ----------- + // ----------- + // ----------- + // ----------- + // ***-----*** + // ***-----*** + // -***---***- + // -***---***- + // --**---**-- + // --***-***-- + // ---**-***-- + // ---*****--- + // ---*****--- + // ----***---- + // ----***---- + // ---***----- + 0x30, 0xf0, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf0, 0x30, 0x00, 0x00, 0x03, 0x9f, 0xfe, 0xf8, 0x7e, 0x1f, 0x07, 0x00, 0x00, + // ------------- + // -----***----- + // -----***----- + // -----***----- + // --**-***-**-- + // -***********- + // ***--***--*** + // ***--***--*** + // ***--***--*** + // ***--***--*** + // ***--***--*** + // ***--***--*** + // -***********- + // --**-***-**-- + // -----***----- + // -----***----- + 0xc0, 0xe0, 0xf0, 0x30, 0x20, 0xfe, 0xfe, 0xfe, 0x20, 0x30, 0xf0, 0xe0, 0xc0, 0x0f, 0x1f, 0x3f, 0x30, 0x10, 0xff, 0xff, 0xff, 0x10, 0x30, 0x3f, 0x1f, 0x0f, + // --------- + // --------- + // --------- + // --------- + // ***---*** + // -***-***- + // -***-***- + // --*****-- + // ---***--- + // ---***--- + // --*****-- + // -***-***- + // -***-***- + // ***---*** + // --------- + // --------- + 0x10, 0x70, 0xf0, 0xe0, 0x80, 0xe0, 0xf0, 0x70, 0x10, 0x20, 0x38, 0x3c, 0x1f, 0x07, 0x1f, 0x3c, 0x38, 0x20, + // ---------- + // ---------- + // ---------- + // ---------- + // ***---***- + // ***---***- + // ***---***- + // ***---***- + // ***---***- + // ***---***- + // ***---***- + // ***---***- + // ********** + // ********** + // --------** + // --------** + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0x3f, 0x3f, 0x3f, 0x30, 0x30, 0x30, 0x3f, 0x3f, 0xff, 0xf0, + // -------- + // -------- + // -------- + // -------- + // ***--*** + // ***--*** + // ***--*** + // ***--*** + // ******** + // -******* + // -----*** + // -----*** + // -----*** + // -----*** + // -------- + // -------- + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x01, 0x03, 0x03, 0x03, 0x03, 0x3f, 0x3f, 0x3f, + // ------------- + // ------------- + // ------------- + // ------------- + // ***--***--*** + // ***--***--*** + // ***--***--*** + // ***--***--*** + // ***--***--*** + // ***--***--*** + // ***--***--*** + // ***--***--*** + // ************* + // ************* + // ------------- + // ------------- + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x3f, 0x3f, 0x3f, 0x30, 0x30, 0x3f, 0x3f, 0x3f, 0x30, 0x30, 0x3f, 0x3f, 0x3f, + // -------------- + // -------------- + // -------------- + // -------------- + // ***--***--***- + // ***--***--***- + // ***--***--***- + // ***--***--***- + // ***--***--***- + // ***--***--***- + // ***--***--***- + // ***--***--***- + // ************** + // ************** + // ------------** + // ------------** + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0x3f, 0x3f, 0x3f, 0x30, 0x30, 0x3f, 0x3f, 0x3f, 0x30, 0x30, 0x3f, 0x3f, 0xff, 0xf0, + // ----------- + // ----------- + // ----------- + // ----------- + // ******----- + // ******----- + // ---***----- + // ---***----- + // ---*******- + // ---******** + // ---***--*** + // ---***--*** + // ---******** + // ---*******- + // ----------- + // ----------- + 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x33, 0x33, 0x3f, 0x3f, 0x1e, + // ------------- + // ------------- + // ------------- + // ------------- + // ***-------*** + // ***-------*** + // ***-------*** + // ***-------*** + // ********--*** + // *********-*** + // ***---***-*** + // ***---***-*** + // *********-*** + // ********--*** + // ------------- + // ------------- + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x3f, 0x3f, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0x3f, 0x1e, 0x00, 0x3f, 0x3f, 0x3f, + // --------- + // --------- + // --------- + // --------- + // ***------ + // ***------ + // ***------ + // ***------ + // ********- + // ********* + // ***---*** + // ***---*** + // ********* + // ********- + // --------- + // --------- + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0x3f, 0x1e, + // -------- + // -------- + // -------- + // -------- + // --****-- + // -******- + // ***--*** + // -----*** + // ---***** + // ---***** + // -----*** + // ***--*** + // -******- + // --****-- + // -------- + // -------- + 0x40, 0x60, 0x70, 0x30, 0x30, 0xf0, 0xe0, 0xc0, 0x08, 0x18, 0x38, 0x33, 0x33, 0x3f, 0x1f, 0x0f, + // ------------- + // ------------- + // ------------- + // ------------- + // ***----****-- + // ***---******- + // ***--***--*** + // ***--***--*** + // ********--*** + // ********--*** + // ***--***--*** + // ***--***--*** + // ***---******- + // ***----****-- + // ------------- + // ------------- + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x30, 0x30, 0xf0, 0xe0, 0xc0, 0x3f, 0x3f, 0x3f, 0x03, 0x03, 0x0f, 0x1f, 0x3f, 0x30, 0x30, 0x3f, 0x1f, 0x0f, + // ---------- + // ---------- + // ---------- + // ---------- + // --******** + // -********* + // -***---*** + // -***---*** + // -********* + // --******** + // --***--*** + // -***---*** + // -***---*** + // ***----*** + // ---------- + // ---------- + 0x00, 0xe0, 0xf0, 0xf0, 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xf0, 0x20, 0x39, 0x3f, 0x1f, 0x07, 0x03, 0x03, 0x3f, 0x3f, 0x3f, + // ----------- + // ---*****--- + // ---*****--- + // ---*****--- + // --***-***-- + // --***-***-- + // --***-***-- + // -***---***- + // -*********- + // -*********- + // *********** + // ***-----*** + // ***-----*** + // **-------** + // ----------- + // ----------- + 0x00, 0x80, 0xf0, 0xfe, 0x7e, 0x0e, 0x7e, 0xfe, 0xf0, 0x80, 0x00, 0x3c, 0x3f, 0x1f, 0x07, 0x07, 0x07, 0x07, 0x07, 0x1f, 0x3f, 0x3c, + // ----------- + // **********- + // **********- + // **********- + // ***-------- + // ***-------- + // *********-- + // **********- + // *********** + // ***-----*** + // ***-----*** + // *********** + // **********- + // *********-- + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0x8e, 0x00, 0x3f, 0x3f, 0x3f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3f, 0x1f, 0x0f, + // ----------- + // *********-- + // **********- + // *********** + // ***-----*** + // ***-----*** + // **********- + // *********-- + // **********- + // ***-----*** + // ***-----*** + // *********** + // **********- + // *********-- + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0xce, 0xce, 0xce, 0xce, 0xce, 0xfe, 0x7c, 0x38, 0x3f, 0x3f, 0x3f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3f, 0x1f, 0x0e, + // -------- + // ******** + // ******** + // ******** + // ***----- + // ***----- + // ***----- + // ***----- + // ***----- + // ***----- + // ***----- + // ***----- + // ***----- + // ***----- + // -------- + // -------- + 0xfe, 0xfe, 0xfe, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + // ------------- + // --**********- + // --**********- + // --**********- + // --***----***- + // --***----***- + // --***----***- + // --***----***- + // --***----***- + // -***-----***- + // -***-----***- + // ************* + // ************* + // ************* + // ***-------*** + // ***-------*** + 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x0e, 0x0e, 0x0e, 0x0e, 0xfe, 0xfe, 0xfe, 0x00, 0xf8, 0xfe, 0xff, 0x3f, 0x39, 0x38, 0x38, 0x38, 0x38, 0x3f, 0xff, 0xff, 0xf8, + // ---------- + // ********** + // ********** + // ********** + // ***------- + // ***------- + // ********** + // ********** + // ********** + // ***------- + // ***------- + // ********** + // ********** + // ********** + // ---------- + // ---------- + 0xfe, 0xfe, 0xfe, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0x3f, 0x3f, 0x3f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, + // ----------------- + // ***----***----*** + // ****---***---**** + // --***--***--***-- + // ---**--***--**--- + // ---**--***--**--- + // ---***-***-***--- + // ----*********---- + // ---***********--- + // ---***-***-***--- + // --***--***--***-- + // -***---***---***- + // -***---***---***- + // ***----***----*** + // ----------------- + // ----------------- + 0x06, 0x06, 0x0e, 0x7c, 0xf8, 0xc0, 0x80, 0xfe, 0xfe, 0xfe, 0x80, 0xc0, 0xf8, 0x7c, 0x0e, 0x06, 0x06, 0x20, 0x38, 0x3c, 0x1f, 0x07, 0x03, 0x01, 0x3f, 0x3f, 0x3f, 0x01, 0x03, 0x07, 0x1f, 0x3c, 0x38, 0x20, + // ---------- + // ---*****-- + // -********- + // -********* + // ****---*** + // -**----**- + // ----****-- + // ----*****- + // -------*** + // -**----*** + // ****---*** + // -********* + // -********- + // ---*****-- + // ---------- + // ---------- + 0x10, 0x3c, 0x3c, 0x1e, 0xce, 0xce, 0xce, 0xfe, 0xbc, 0x18, 0x04, 0x1e, 0x1e, 0x3c, 0x38, 0x38, 0x38, 0x3f, 0x1f, 0x0f, + // ----------- + // ***-----*** + // ***----**** + // ***----**** + // ***---***** + // ***--****** + // ***--**-*** + // ***-***-*** + // ***-**--*** + // ******--*** + // *****---*** + // ****----*** + // ****----*** + // ***-----*** + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0x00, 0x80, 0xe0, 0xf0, 0x3c, 0xfe, 0xfe, 0xfe, 0x3f, 0x3f, 0x3f, 0x1e, 0x07, 0x03, 0x00, 0x00, 0x3f, 0x3f, 0x3f, + // ----***---- + // ***-***-*** + // ***-----*** + // ***----**** + // ***---***** + // ***--****** + // ***--**-*** + // ***-***-*** + // ***-**--*** + // ******--*** + // *****---*** + // ****----*** + // ****----*** + // ***-----*** + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0x00, 0x83, 0xe3, 0xf3, 0x38, 0xfe, 0xfe, 0xfe, 0x3f, 0x3f, 0x3f, 0x1e, 0x07, 0x03, 0x00, 0x00, 0x3f, 0x3f, 0x3f, + // ---------- + // ***----*** + // ***---**** + // ***---**-- + // ***--***-- + // ***--**--- + // ***-***--- + // ******---- + // *******--- + // ***-***--- + // ***--***-- + // ***---***- + // ***---***- + // ***----*** + // ---------- + // ---------- + 0xfe, 0xfe, 0xfe, 0x80, 0xc0, 0xf0, 0x7c, 0x1e, 0x06, 0x06, 0x3f, 0x3f, 0x3f, 0x01, 0x03, 0x07, 0x1f, 0x3c, 0x38, 0x20, + // ------------ + // --********** + // --********** + // --********** + // --***----*** + // --***----*** + // --***----*** + // --***----*** + // --***----*** + // --***----*** + // --***----*** + // *****----*** + // *****----*** + // ****-----*** + // ------------ + // ------------ + 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x0e, 0x0e, 0x0e, 0x0e, 0xfe, 0xfe, 0xfe, 0x38, 0x38, 0x3f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, + // ------------- + // ****-----**** + // ****-----**** + // *****---***** + // *****---***** + // *****---***** + // ***-**-**-*** + // ***-**-**-*** + // ***-**-**-*** + // ***-**-**-*** + // ***--***--*** + // ***--***--*** + // ***--***--*** + // ***---*---*** + // ------------- + // ------------- + 0xfe, 0xfe, 0xfe, 0x3e, 0xf8, 0xc0, 0x00, 0xc0, 0xf8, 0x3e, 0xfe, 0xfe, 0xfe, 0x3f, 0x3f, 0x3f, 0x00, 0x03, 0x1f, 0x3c, 0x1f, 0x03, 0x00, 0x3f, 0x3f, 0x3f, + // ----------- + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // *********** + // *********** + // *********** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0xfe, 0xfe, 0x3f, 0x3f, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x3f, 0x3f, + // ------------ + // ----****---- + // --********-- + // -**********- + // -***----***- + // ***------*** + // ***------*** + // ***------*** + // ***------*** + // ***------*** + // -***----***- + // -**********- + // --********-- + // ----****---- + // ------------ + // ------------ + 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x0e, 0x0e, 0x0e, 0x1c, 0xfc, 0xf8, 0xe0, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x38, 0x38, 0x38, 0x1c, 0x1f, 0x0f, 0x03, + // ----------- + // *********** + // *********** + // *********** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xfe, 0xfe, 0xfe, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, + // ---------- + // ********-- + // *********- + // ********** + // ***----*** + // ***----*** + // ********** + // *********- + // ********-- + // ***------- + // ***------- + // ***------- + // ***------- + // ***------- + // ---------- + // ---------- + 0xfe, 0xfe, 0xfe, 0xce, 0xce, 0xce, 0xce, 0xfe, 0xfc, 0x78, 0x3f, 0x3f, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + // ----------- + // ----****--- + // --********- + // -*********- + // -***---**** + // ***-----**- + // ***-------- + // ***-------- + // ***-------- + // ***-----**- + // -***---**** + // -*********- + // --********- + // ----****--- + // ----------- + // ----------- + 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x0e, 0x0e, 0x1e, 0x3c, 0x3c, 0x10, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x38, 0x38, 0x3c, 0x1e, 0x1e, 0x04, + // ----------- + // *********** + // *********** + // *********** + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----***---- + // ----------- + // ----------- + 0x0e, 0x0e, 0x0e, 0x0e, 0xfe, 0xfe, 0xfe, 0x0e, 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, + // ----------- + // ***-----*** + // ***-----*** + // -***---***- + // --***--***- + // --***-***-- + // ---******-- + // ----****--- + // ----****--- + // ----***---- + // ----***---- + // --****----- + // --****----- + // --***------ + // ----------- + // ----------- + 0x06, 0x0e, 0x3e, 0x78, 0xf0, 0xc0, 0xe0, 0xf8, 0x7e, 0x1e, 0x06, 0x00, 0x00, 0x38, 0x38, 0x3f, 0x1f, 0x07, 0x01, 0x00, 0x00, 0x00, + // ------------- + // -----***----- + // -----***----- + // --*********-- + // -***********- + // ************* + // ***--***--*** + // ***--***--*** + // ***--***--*** + // ************* + // -***********- + // --*********-- + // -----***----- + // -----***----- + // ------------- + // ------------- + 0xe0, 0xf0, 0xf8, 0x38, 0x38, 0xfe, 0xfe, 0xfe, 0x38, 0x38, 0xf8, 0xf0, 0xe0, 0x03, 0x07, 0x0f, 0x0e, 0x0e, 0x3f, 0x3f, 0x3f, 0x0e, 0x0e, 0x0f, 0x07, 0x03, + // ---------- + // ***----*** + // ***----*** + // -***--***- + // --**--**-- + // --******-- + // ---****--- + // ---****--- + // ---****--- + // --******-- + // --**--**-- + // -***--***- + // ***----*** + // ***----*** + // ---------- + // ---------- + 0x06, 0x0e, 0x3e, 0xf8, 0xe0, 0xe0, 0xf8, 0x3e, 0x0e, 0x06, 0x30, 0x38, 0x3e, 0x0f, 0x03, 0x03, 0x0f, 0x3e, 0x38, 0x30, + // ------------ + // ***-----***- + // ***-----***- + // ***-----***- + // ***-----***- + // ***-----***- + // ***-----***- + // ***-----***- + // ***-----***- + // ***-----***- + // ***-----***- + // ************ + // ************ + // ************ + // ---------*** + // ---------*** + 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x00, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3f, 0xff, 0xff, 0xf8, + // ----------- + // ***-----*** + // ***-----*** + // ***-----*** + // ***-----*** + // ***----**** + // *********** + // -********** + // --*****-*** + // --------*** + // --------*** + // --------*** + // --------*** + // --------*** + // ----------- + // ----------- + 0x7e, 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x3f, 0x3f, 0x3f, + // --------------- + // ***---***---*** + // ***---***---*** + // ***---***---*** + // ***---***---*** + // ***---***---*** + // ***---***---*** + // ***---***---*** + // ***---***---*** + // ***---***---*** + // ***---***---*** + // *************** + // *************** + // *************** + // --------------- + // --------------- + 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x3f, + // ---------------- + // ***---***---***- + // ***---***---***- + // ***---***---***- + // ***---***---***- + // ***---***---***- + // ***---***---***- + // ***---***---***- + // ***---***---***- + // ***---***---***- + // ***---***---***- + // **************** + // **************** + // **************** + // -------------*** + // -------------*** + 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x00, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x3f, 0xff, 0xff, 0xf8, + // --------------- + // *******-------- + // *******-------- + // *******-------- + // ----***-------- + // ----***-------- + // ----*********-- + // ----**********- + // ----*********** + // ----***-----*** + // ----***-----*** + // ----*********** + // ----**********- + // ----*********-- + // --------------- + // --------------- + 0x0e, 0x0e, 0x0e, 0x0e, 0xfe, 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3f, 0x1f, 0x0f, + // ---------------- + // ***----------*** + // ***----------*** + // ***----------*** + // ***----------*** + // ***----------*** + // *********----*** + // **********---*** + // ***********--*** + // ***-----***--*** + // ***-----***--*** + // ***********--*** + // **********---*** + // *********----*** + // ---------------- + // ---------------- + 0xfe, 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x3f, 0x3f, 0x3f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3f, 0x1f, 0x0f, 0x00, 0x00, 0x3f, 0x3f, 0x3f, + // ----------- + // ***-------- + // ***-------- + // ***-------- + // ***-------- + // ***-------- + // *********-- + // **********- + // *********** + // ***-----*** + // ***-----*** + // *********** + // **********- + // *********-- + // ----------- + // ----------- + 0xfe, 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x3f, 0x3f, 0x3f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3f, 0x1f, 0x0f, + // ----------- + // ---****---- + // -********-- + // **********- + // -**----***- + // --------*** + // -----****** + // -----****** + // -----****** + // --------*** + // -**----***- + // **********- + // -********-- + // ---****---- + // ----------- + // ----------- + 0x08, 0x1c, 0x1c, 0x0e, 0x0e, 0xce, 0xce, 0xdc, 0xfc, 0xf8, 0xe0, 0x08, 0x1c, 0x1c, 0x38, 0x38, 0x39, 0x39, 0x1d, 0x1f, 0x0f, 0x03, + // ----------------- + // ***-----******--- + // ***----********-- + // ***---**********- + // ***---***----***- + // ***--***------*** + // ********------*** + // ********------*** + // ********------*** + // ***--***------*** + // ***---***----***- + // ***---**********- + // ***----********-- + // ***-----******--- + // ----------------- + // ----------------- + 0xfe, 0xfe, 0xfe, 0xc0, 0xc0, 0xe0, 0xf8, 0xfc, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x1e, 0xfc, 0xf8, 0xe0, 0x3f, 0x3f, 0x3f, 0x01, 0x01, 0x03, 0x0f, 0x1f, 0x3c, 0x38, 0x38, 0x38, 0x38, 0x3c, 0x1f, 0x0f, 0x03, + // ------------ + // ---********* + // --********** + // -*********** + // -***-----*** + // -***-----*** + // -*********** + // --********** + // ----******** + // ---****--*** + // --****---*** + // --***----*** + // -****----*** + // ****-----*** + // ------------ + // ------------ + 0x00, 0x78, 0xfc, 0xfe, 0xce, 0xce, 0xce, 0xce, 0xce, 0xfe, 0xfe, 0xfe, 0x20, 0x30, 0x3c, 0x3e, 0x1f, 0x07, 0x03, 0x01, 0x01, 0x3f, 0x3f, 0x3f, + // --------- + // --------- + // --------- + // --------- + // --*****-- + // -*******- + // **---***- + // ----****- + // --******- + // -***-***- + // ***--***- + // ***--***- + // ********- + // -****-*** + // --------- + // --------- + 0x40, 0x60, 0x30, 0x30, 0xb0, 0xf0, 0xf0, 0xe0, 0x00, 0x1c, 0x3e, 0x3f, 0x33, 0x31, 0x1f, 0x3f, 0x3f, 0x20, + // --------- + // --******* + // -*******- + // -**------ + // **-****-- + // ********- + // ****-***- + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // -***-***- + // -*******- + // --*****-- + // --------- + // --------- + 0xf0, 0xfc, 0xee, 0x76, 0x36, 0x76, 0xf6, 0xe6, 0x82, 0x07, 0x1f, 0x3f, 0x38, 0x30, 0x38, 0x3f, 0x1f, 0x07, + // --------- + // --------- + // --------- + // --------- + // ********- + // ********* + // ***---*** + // ***---*** + // ********- + // ********- + // ***---*** + // ***---*** + // ********* + // ********- + // --------- + // --------- + 0xf0, 0xf0, 0xf0, 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xe0, 0x3f, 0x3f, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0x3f, 0x1c, + // ------ + // ------ + // ------ + // ------ + // ****** + // ****** + // ***--- + // ***--- + // ***--- + // ***--- + // ***--- + // ***--- + // ***--- + // ***--- + // ------ + // ------ + 0xf0, 0xf0, 0xf0, 0x30, 0x30, 0x30, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, + // ----------- + // ----------- + // ----------- + // ----------- + // --********- + // --********- + // --***--***- + // --***--***- + // --***--***- + // --***--***- + // --***--***- + // -***---***- + // *********** + // *********** + // **-------** + // **-------** + 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x30, 0x30, 0xf0, 0xf0, 0xf0, 0x00, 0xf0, 0xf8, 0x3f, 0x3f, 0x37, 0x30, 0x30, 0x3f, 0x3f, 0xff, 0xf0, + // --------- + // --------- + // --------- + // --------- + // --*****-- + // -*******- + // ***---*** + // ***---*** + // ********* + // ********* + // ***------ + // ***---*** + // -*******- + // --*****-- + // --------- + // --------- + 0xc0, 0xe0, 0xf0, 0x30, 0x30, 0x30, 0xf0, 0xe0, 0xc0, 0x0f, 0x1f, 0x3f, 0x33, 0x33, 0x33, 0x3b, 0x1b, 0x0b, + // ------------- + // ------------- + // ------------- + // ------------- + // ***--***--*** + // ***--***--*** + // --**-***-**-- + // --**-***-**-- + // ---*******--- + // --*********-- + // --**-***-**-- + // -***-***-***- + // -**--***--**- + // ***--***--*** + // ------------- + // ------------- + 0x30, 0x30, 0xf0, 0xc0, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0xc0, 0xf0, 0x30, 0x30, 0x20, 0x38, 0x3e, 0x0f, 0x03, 0x3f, 0x3f, 0x3f, 0x03, 0x0f, 0x3e, 0x38, 0x20, + // -------- + // -------- + // -------- + // -------- + // --*****- + // -******* + // **---*** + // -----*** + // ---****- + // ---****- + // -----*** + // **---*** + // -******* + // --*****- + // -------- + // -------- + 0x40, 0x60, 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xe0, 0x08, 0x18, 0x30, 0x33, 0x33, 0x3f, 0x3f, 0x1c, + // --------- + // --------- + // --------- + // --------- + // ***---*** + // ***--**** + // ***--**** + // ***-***** + // ***-***** + // *****-*** + // *****-*** + // ****--*** + // ****--*** + // ***---*** + // --------- + // --------- + 0xf0, 0xf0, 0xf0, 0x00, 0x80, 0xe0, 0xf0, 0xf0, 0xf0, 0x3f, 0x3f, 0x3f, 0x1e, 0x07, 0x01, 0x3f, 0x3f, 0x3f, + // --------- + // --*---*-- + // ---***--- + // --------- + // ***---*** + // ***--**** + // ***--**** + // ***-***** + // ***-***** + // *****-*** + // *****-*** + // ****--*** + // ****--*** + // ***---*** + // --------- + // --------- + 0xf0, 0xf0, 0xf2, 0x04, 0x84, 0xe4, 0xf2, 0xf0, 0xf0, 0x3f, 0x3f, 0x3f, 0x1e, 0x07, 0x01, 0x3f, 0x3f, 0x3f, + // -------- + // -------- + // -------- + // -------- + // ***--*** + // ***--*** + // ***-**-- + // ***-**-- + // *****--- + // ******-- + // ***-**-- + // ***-***- + // ***-***- + // ***--*** + // -------- + // -------- + 0xf0, 0xf0, 0xf0, 0x00, 0xc0, 0xf0, 0x30, 0x30, 0x3f, 0x3f, 0x3f, 0x03, 0x1f, 0x3e, 0x38, 0x20, + // ---------- + // ---------- + // ---------- + // ---------- + // --******** + // --******** + // --***--*** + // --***--*** + // --***--*** + // --***--*** + // --***--*** + // --***--*** + // *****--*** + // ****---*** + // ---------- + // ---------- + 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x30, 0x30, 0xf0, 0xf0, 0xf0, 0x30, 0x30, 0x3f, 0x3f, 0x1f, 0x00, 0x00, 0x3f, 0x3f, 0x3f, + // ----------- + // ----------- + // ----------- + // ----------- + // ***-----*** + // ***-----*** + // ****---**** + // ****---**** + // *****-***** + // **-**-**-** + // **-**-**-** + // **--***--** + // **--***--** + // **--***--** + // ----------- + // ----------- + 0xf0, 0xf0, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf0, 0xf0, 0x3f, 0x3f, 0x01, 0x07, 0x3f, 0x38, 0x3f, 0x07, 0x01, 0x3f, 0x3f, + // --------- + // --------- + // --------- + // --------- + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ********* + // ********* + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // --------- + // --------- + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x3f, 0x3f, 0x3f, 0x03, 0x03, 0x03, 0x3f, 0x3f, 0x3f, + // --------- + // --------- + // --------- + // --------- + // --*****-- + // -*******- + // ****-**** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ****-**** + // -*******- + // --*****-- + // --------- + // --------- + 0xc0, 0xe0, 0xf0, 0x70, 0x30, 0x70, 0xf0, 0xe0, 0xc0, 0x0f, 0x1f, 0x3f, 0x38, 0x30, 0x38, 0x3f, 0x1f, 0x0f, + // --------- + // --------- + // --------- + // --------- + // ********* + // ********* + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // ***---*** + // --------- + // --------- + 0xf0, 0xf0, 0xf0, 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xf0, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f +}; +#endif diff --git a/output.h b/output.h deleted file mode 100644 index beba187..0000000 --- a/output.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef _OUTPUT_ -#define _OUTPUT_ - -byte output[16 * 32] = { -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -const int dataSize = sizeof(output) / sizeof(output[0]); - -#endif \ No newline at end of file diff --git a/output.txt b/output.txt deleted file mode 100644 index 48d43e1..0000000 --- a/output.txt +++ /dev/null @@ -1,64 +0,0 @@ -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000 -11100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000 -11100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101100000000 -10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101101111111 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101111111 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101111111 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100111110 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110011100 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111011000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000000000111000000 -00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111100000000000000000000000000110011000000 -00000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111110000000000000000001111001000000 -00000000000000000000000000000000000000000000000000000000000000001110111111111111111111111111111111111101111111111111111100000000 -00000000000000000000000000000000000000000000000000000000000000001111011111111111111111111111111111111101111111111111111110000000 -00000000000000000000000000000000000000000000000000000000000000001111100000000000000000011111111111111110111111111111111100000000 -00000000000000000000000000000000000000000000000000000000000000000111111111111111111111001111111111111111011111111110011000000000 -00000000000000000000000000000000000000000000000000000000000000000111111111111111111111100111111111111111100000000000111000000000 -00000000000000000000000000000000000000000000000000000000000000000111111111111111111111110011111111111111111111111111110000000000 -00000000000000000000000000000000000000000000000000000000000000000011111111111110111111111001111111111111111111111111100000000000 -00000000000000000000000000000000000000000000000000000000000000000001111111111100011111111100111111111111111111111111000000000000 -00000000000000000000000000000000000000000000000000000000000000000000111111111100011111111110000000011111111111111110000000000000 -00000000000000000000000000000000000000000000000000000000000000000000011111111110111111111111111111000000011111111100000000000000 -00000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111101111110000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111110111000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111110000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111110000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111110000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000111111100000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000011111110000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000001111110000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000111111000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000011111000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000111100000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000011110000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -11111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/panel.ino b/panel.ino deleted file mode 100644 index 404574a..0000000 --- a/panel.ino +++ /dev/null @@ -1,224 +0,0 @@ -//------------------Include Libraries------------------// -#include -#include -#include -#include -#include -#include -#include -#include "data/output.h" -//------------------------------------------------------// - -#define DEBUG 1 - -//------------------Settings for panel------------------// -#define FONT Font_BOLD -#define DISPLAYS_ACROSS 1 -#define DISPLAYS_DOWN 1 -DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN); -//-------------------------------------------------------// - -//------------------Wi-Fi Settings----------------------// -const char *ssid = "SKBKIT"; -const char *password = "skbkit2024"; -IPAddress staticIP(10, 131, 170, 4); -IPAddress gateway(10, 131, 170, 1); -IPAddress subnet(255, 255, 255, 0); -//-------------------------------------------------------// - -//------------------Web Server Settings-----------------// -AsyncWebServer server(80); -//-------------------------------------------------------// - -//------------------Other Variables---------------------// -String displayText = "Привет из СКБ \"КИТ\""; -bool isScrolling = true; -bool showImage = false; -unsigned long lastScrollTime = 0; -unsigned long scrollDuration = 5000; -unsigned long imageStartTime = 0; -hw_timer_t *timer = NULL; -//-------------------------------------------------------// - -//------------------Wi-Fi Connection Setup-------------// -void setupWiFi() { - WiFi.begin(ssid, password); - if (!WiFi.config(staticIP, gateway, subnet)) { - Serial.println("Failed to configure Static IP"); - } else { - Serial.println("Static IP configured!"); - } - - while (WiFi.status() != WL_CONNECTED) { - delay(500); - Serial.print("."); - } - - Serial.println("\nConnected to WiFi"); - Serial.println(WiFi.localIP()); -} -//-------------------------------------------------------// - -//------------------Web Server Handlers-----------------// -void handleText(AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total) { - JsonDocument jsonReq; - String dataRequest = String((char *)data, len); - DeserializationError error = deserializeJson(jsonReq, dataRequest); - - if (error) { - Serial.println(F("deserializeJson() failed")); - request->send(400, "text/html", ""); - return; - } - - if (jsonReq["text"].is()) { - displayText = jsonReq["text"].as(); - } - - request->send(200, "text/html; charset=UTF-8", ""); -} - -void handleStateChange(AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total) { - JsonDocument jsonReq; - String dataRequest = String((char *)data, len); - DeserializationError error = deserializeJson(jsonReq, dataRequest); - - if (error) { - request->send(400, "text/html", ""); - return; - } - - String state = jsonReq["state"]; - - if (state == "1") { - dmd.clearScreen(true); // Reset the screen - displayText = "Привет из СКБ \"КИТ\""; - } else if (state == "2") { - isScrolling = true; - lastScrollTime = millis(); - showImage = false; - } else if (state == "3") { - showImage = true; - imageStartTime = millis(); - } - - request->send(200, "text/html", ""); -} -//-------------------------------------------------------// - -//------------------Panel Management--------------------// -void handlePanelState(AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total) { - JsonDocument jsonReq; - String dataRequest = String((char *)data, len); - DeserializationError error = deserializeJson(jsonReq, dataRequest); - - if (error) { - request->send(400, "text/html", ""); - return; - } - - String state = jsonReq["panel"]; - if (state == "on") { - displayText = "Привет из СКБ \"КИТ\""; - } else if (state == "off") { - displayText = ""; - } - - request->send(200, "text/html", ""); -} -//-------------------------------------------------------// - -//------------------Display Binary Array Function------// -void displayBinaryArray() { - for (int y = 0; y < 32; y++) { - for (int x = 0; x < 16; x++) { - int idx = x * 32 + y; - if (output[idx] == 1) { - dmd.writePixel(x, y, GRAPHICS_NORMAL, true); - } else { - dmd.writePixel(x, y, GRAPHICS_NORMAL, false); - } - } - } -} -//-------------------------------------------------------// - -//------------------Marquee Scroll Function-------------// -void scrollText() { - dmd.drawMarquee(displayText.c_str(), displayText.length(), (32 * DISPLAYS_ACROSS) - 1, 0); - - long start = millis(); - long timer = start; - bool ret = false; - - while (!ret) { - if ((timer + 30) < millis()) { - ret = dmd.stepMarquee(-1, 0); - timer = millis(); - } - } - - if (millis() - lastScrollTime >= scrollDuration) { - isScrolling = false; - showImage = true; - imageStartTime = millis(); - } -} -//-------------------------------------------------------// - -//------------------Timer Interrupt Function------------// -void IRAM_ATTR triggerScan() { - dmd.scanDisplayBySPI(); -} -//-------------------------------------------------------// - -//------------------Setup Function-----------------------// -void setup() { - Serial.begin(115200); - dmd.selectFont(FONT); - SPIFFS.begin(true); - pinMode(22, OUTPUT); - - setupWiFi(); - - server.on("/api/led", HTTP_GET, [](AsyncWebServerRequest *request) { - String state = isScrolling ? "true" : "false"; - request->send(200, "application/json", "{\"state\": \"" + state + "\"}"); - }); - - server.on("/api/led", HTTP_POST, [](AsyncWebServerRequest *request) {}, NULL, handlePanelState); - server.on("/api/text", HTTP_POST, [](AsyncWebServerRequest *request) {}, NULL, handleText); - server.on("/api/state", HTTP_POST, [](AsyncWebServerRequest *request) {}, NULL, handleStateChange); - - server.begin(); - - uint8_t cpuClock = ESP.getCpuFreqMHz(); - timer = timerBegin(0, cpuClock, true); - timerAttachInterrupt(timer, &triggerScan, true); - timerAlarmWrite(timer, 300, true); - timerAlarmEnable(timer); - - dmd.clearScreen(true); -} -//-------------------------------------------------------// - -//------------------Loop Function------------------------// -void loop() { - dmd.clearScreen(true); - - if (isScrolling) { - scrollText(); - } - - if (showImage) { - displayBinaryArray(); - if (millis() - imageStartTime >= 5000) { - showImage = false; - isScrolling = true; - lastScrollTime = millis(); - } - } - - delay(500); -} -//-------------------------------------------------------//