summaryrefslogtreecommitdiffstats
path: root/keyboards/cluepad
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2016-06-21 22:39:54 -0400
committerGitHub <noreply@github.com>2016-06-21 22:39:54 -0400
commit649b33d7783cf3021928534b7ae127e0a89e8807 (patch)
treec2b5e0cf8ff4aa2918e3b88ab75dbdb071cc0a1d /keyboards/cluepad
parent464c8e274f993d3571fe5ea5e836fe55a3912ffe (diff)
Renames keyboard folder to keyboards, adds couple of tmk's fixes (#432)
* fixes from tmk's repo * rename keyboard to keyboards
Diffstat (limited to 'keyboards/cluepad')
-rw-r--r--keyboards/cluepad/Makefile74
-rw-r--r--keyboards/cluepad/backlight.c54
-rw-r--r--keyboards/cluepad/cluepad.c35
-rw-r--r--keyboards/cluepad/cluepad.h41
-rw-r--r--keyboards/cluepad/config.h101
-rw-r--r--keyboards/cluepad/keymaps/default/compiled.hex1123
-rw-r--r--keyboards/cluepad/keymaps/default/keymap.c122
7 files changed, 1550 insertions, 0 deletions
diff --git a/keyboards/cluepad/Makefile b/keyboards/cluepad/Makefile
new file mode 100644
index 0000000000..eb7a58025e
--- /dev/null
+++ b/keyboards/cluepad/Makefile
@@ -0,0 +1,74 @@
+
+
+# # project specific files
+SRC = backlight.c
+
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section Size in *bytes*
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# Build Options
+# comment out to disable the options.
+#
+BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
+# MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
+# EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
+# CONSOLE_ENABLE ?= yes # Console for debug(+400)
+# COMMAND_ENABLE ?= yes # Commands for debug and configuration
+NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE ?= yes # Enable numpad's backlight functionality
+RGBLIGHT_ENABLE ?= yes
+# MIDI_ENABLE ?= YES # MIDI controls
+# UNICODE_ENABLE ?= YES # Unicode
+# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
+
+
+ifndef QUANTUM_DIR
+ include ../../Makefile
+endif
diff --git a/keyboards/cluepad/backlight.c b/keyboards/cluepad/backlight.c
new file mode 100644
index 0000000000..a9caed1df8
--- /dev/null
+++ b/keyboards/cluepad/backlight.c
@@ -0,0 +1,54 @@
+#include <avr/io.h>
+#include "backlight.h"
+#include "led.h"
+
+#include "print.h"
+
+int pwm_level;
+
+void led_set_kb(uint8_t usb_led)
+{
+ print("led_set\n");
+}
+
+void init_backlight_pin(void)
+{
+ // Set C7 to output
+ DDRC |= (1<<7);
+
+ // Initialize the timer
+ TC4H = 0x03;
+ OCR4C = 0xFF;
+ TCCR4A = 0b10000010;
+ TCCR4B = 0b00000001;
+}
+
+void backlight_set(uint8_t level)
+{
+ // Determine the PWM level
+ switch (level)
+ {
+ case 0:
+ // 33%
+ pwm_level = 0x54;
+ break;
+ case 1:
+ // 66%
+ pwm_level = 0xA8;
+ break;
+ case 2:
+ // 100%
+ pwm_level = 0xFF;
+ break;
+ case 3:
+ // 0%
+ pwm_level = 0x00;
+ break;
+ default:
+ xprintf("Unknown level: %d\n", level);
+ }
+
+ // Write the PWM level to the timer
+ TC4H = pwm_level >> 8;
+ OCR4A = 0xFF & pwm_level;
+}
diff --git a/keyboards/cluepad/cluepad.c b/keyboards/cluepad/cluepad.c
new file mode 100644
index 0000000000..a4dbd6fdc2
--- /dev/null
+++ b/keyboards/cluepad/cluepad.c
@@ -0,0 +1,35 @@
+#include "cluepad.h"
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+ // leave these blank
+};
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+ // leave these blank
+};
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ if (matrix_init_user) {
+ (*matrix_init_user)();
+ }
+
+ #ifdef BACKLIGHT_ENABLE
+ init_backlight_pin();
+ #endif
+
+ // JTAG disable for PORT F. write JTD bit twice within four cycles.
+ MCUCR |= (1<<JTD);
+ MCUCR |= (1<<JTD);
+};
+
+void matrix_scan_kb(void) {
+ // put your looping keyboard code here
+ // runs every cycle (a lot)
+ if (matrix_scan_user) {
+ (*matrix_scan_user)();
+ }
+};
diff --git a/keyboards/cluepad/cluepad.h b/keyboards/cluepad/cluepad.h
new file mode 100644
index 0000000000..8635ee583a
--- /dev/null
+++ b/keyboards/cluepad/cluepad.h
@@ -0,0 +1,41 @@
+#ifndef CLUEPAD_H
+#define CLUEPAD_H
+
+#include "matrix.h"
+#include "keymap.h"
+#include <stddef.h>
+
+
+/* Cluepad matrix layout
+ * .-------------------.
+ * |NLCK| /| *| -|
+ * |-------------------|
+ * | 7| 8| 9| |
+ * |--------------| |
+ * | 4| 5| 6| +|
+ * |-------------------|
+ * | 1| 2| 3| |
+ * |--------------| |
+ * | 0| .| Ent|
+ * '-------------------'
+ */
+// The first section contains all of the arguments
+// The second converts the arguments into a two-dimensional array
+#define KEYMAP( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, \
+ k30, k31, k32, k33, \
+ k40, k42 \
+) { \
+ { k00, k01, k02, k03, }, \
+ { k10, k11, k12, k13, }, \
+ { k20, k21, k22, KC_NO, }, \
+ { k30, k31, k32, k33, }, \
+ { k40, KC_NO, k42, KC_NO } \
+}
+
+void matrix_init_user(void);
+void matrix_scan_user(void);
+
+#endif
diff --git a/keyboards/cluepad/config.h b/keyboards/cluepad/config.h
new file mode 100644
index 0000000000..0955e0f702
--- /dev/null
+++ b/keyboards/cluepad/config.h
@@ -0,0 +1,101 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xC1ED
+#define PRODUCT_ID 0x2312
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Clueboard
+#define PRODUCT Cluepad with RGB Underlighting
+#define DESCRIPTION QMK keyboard firmware for Cluepad
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 4
+
+// ROWS: Top to bottom, COLS: Left to right
+/* Row pin configuration
+* row: 0 1 2 3 4
+* pin:
+*/
+#define MATRIX_ROW_PINS { B0, D3, D5, D4, D6 }
+/* Column pin configuration
+ * col: 0 1 2 3
+ * pin: F4 E6 B1 D2
+ */
+#define MATRIX_COL_PINS { F4, E6, B1, D2 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 5
+
+/* Number of backlighting levels */
+#define BACKLIGHT_LEVELS 3
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* Underlight configuration
+ */
+ #define ws2812_PORTREG PORTF
+ #define ws2812_DDRREG DDRF
+ #define ws2812_pin 6
+ #define RGBLED_NUM 4 // Number of LEDs
+ #define RGBLIGHT_HUE_STEP 10
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* Debug forcibly enabled */
+#define ALWAYS_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+#endif
diff --git a/keyboards/cluepad/keymaps/default/compiled.hex b/keyboards/cluepad/keymaps/default/compiled.hex
new file mode 100644
index 0000000000..7a045783a1
--- /dev/null
+++ b/keyboards/cluepad/keymaps/default/compiled.hex
@@ -0,0 +1,1123 @@
+:100000000C9453020C9497020C9497020C94970250
+:100010000C9497020C9497020C9497020C949702FC
+:100020000C9497020C9497020C94C6110C9498129D
+:100030000C948B1F0C9497020C9497020C949702CB
+:100040000C9497020C9497020C9497020C949702CC
+:100050000C9497020C94F31F0C9497020C94970243
+:100060000C9497020C9497020C9497020C949702AC
+:100070000C9497020C9497020C9497020C9497029C
+:100080000C942E0D0C9497020C9497020C949702EA
+:100090000C9497020C9497020C9497020C9497027C
+:1000A0000C9497020C9497020C949702F1020D03A2
+:1000B000F502F902FD0201030503090305132713E5
+:1000C0001514271315146C138F131514E413F71359
+:1000D000A916A916D816D8166218621862186218DE
+:1000E00017176218C717C7172E18371862185C1829
+:1000F000D417D417D417D417D417D417D417D417A8
+:10010000D417D417D417D417D417D417D417D41797
+:10011000E417F217F91700180A1800F001F002F0BE
+:1001200003F004F005F006F007F0534154005500C9
+:1001300056005F006000610057005C005D005E00DB
+:10014000000059005A005B00580062000000630084
+:1001500000005341010001000020010004200100C3
+:10016000062003208350022000000100052001002A
+:1001700007200120000001000000643214643214E2
+:10018000783C1E1E140A0500000000010101020255
+:10019000030405050607090A0B0C0E0F11121415AE
+:1001A00017191B1D1F212325282A2C2F31343639DE
+:1001B0003B3E414346494C4F5255585A5D61646736
+:1001C0006A6D707376797C7F8386898C8F9295981F
+:1001D0009B9EA2A5A7AAADB0B3B6B9BCBEC1C4C60A
+:1001E000C9CBCED0D3D5D7DADCDEE0E2E4E6E8EA6C
+:1001F000EBEDEEF0F1F3F4F5F6F8F9FAFAFBFCFDAD
+:10020000FDFEFEFEFFFFFFFFFFFFFFFEFEFEFDFD0A
+:10021000FCFBFAFAF9F8F6F5F4F3F1F0EEEDEBEA9F
+:10022000E8E6E4E2E0DEDCDAD7D5D3D0CECBC9C64F
+:10023000C4C1BEBCB9B6B3B0ADAAA7A5A29E9B98D7
+:1002400095928F8C898683807C797673706D6A67CE
+:1002500064615D5A5855524F4C494643413E3B39C3
+:100260003634312F2C2A282523211F1D1B19171541
+:100270001412110F0E0C0B0A0907060505040302E0
+:10028000020101010000000001010202020202025B
+:10029000030303030303030303030303030304042C
+:1002A0000404040404040404040405050505050508
+:1002B00005050505060606060606060607070707DE
+:1002C0000707070808080808080909090909090AA9
+:1002D0000A0A0A0A0B0B0B0B0B0C0C0C0C0C0D0D69
+:1002E0000D0D0E0E0E0E0F0F0F101010101111111C
+:1002F00012121213131314141415151616161717B9
+:1003000018181919191A1A1B1B1C1C1D1D1E1E1F3B
+:10031000202021212223232424252626272828299A
+:100320002A2B2B2C2D2E2F303031323334353637CB
+:1003300038393A3B3C3D3E3F4041424445464749BF
+:100340004A4B4C4E4F5152535556585A5B5D5E6066
+:1003500062636567696B6D6E70727476797B7D7FA1
+:10036000818486888B8D909295979A9D9FA2A5A84F
+:10037000ABAEB1B4B7BABEC1C4C8CBCFD3D6DADE48
+:10038000E2E6EAEEF2F8FF3E0343006C007500651A
+:10039000007000610064002000770069007400684C
+:1003A000002000520047004200200055006E00640B
+:1003B00000650072006C00690067006800740069E5
+:1003C000006E0067000000140343006C00750065B8
+:1003D0000062006F00610072006400000004030905
+:1003E0000409023B00020100A0FA09040000010315
+:1003F000010100092111010001223F0007058103CD
+:1004000008000A090401000103000000092111018C
+:1004100000012239000705820310000112011001BA
+:1004200000000008EDC112230100010200010501D6
+:100430000906A101050719E029E71500250195081E
+:1004400075018102050819012905950575019102BB
+:1004500095017503910105071900297715002501FC
+:10046000957875018102C005010906A101050719EA
+:10047000E029E715002501950875018102950175B0
+:100480000881010508190129059505750191029555
+:1004900001750391010507190029FF150025FF9536
+:1004A0000675088100C011241FBECFEFDAE0DEBF61
+:1004B000CDBF04B603FE24C08091E1019091E2011A
+:1004C000A091E301B091E4018730904BA740B04B7D
+:1004D000B9F41092E1011092E2011092E30110923E
+:1004E000E40114BE84B7877F84BF88E10FB6F89417
+:1004F00080936000109260000FBEE0E0F8E3099581
+:1005000011E0A0E0B1E0E0E0F6E402C005900D9259
+:10051000AA31B107D9F711E0AAE1B1E001C01D92FB
+:10052000A13EB107E1F70E940D0F0C94FE220C943E
+:10053000000008953F9A83E08093BF008FEF80937F
+:10054000D10082E88093C00081E08093C1000895CB
+:10055000813069F048F0823089F0833091F4109254
+:10056000BD011092BC010DC084E590E002C088EA94
+:1005700090E09093BD018093BC0103C08FEF90E0A9
+:10058000F8CF8091BD018093BF008091BC01809322
+:10059000CF000895089508958AEC92E0892B11F018
+:1005A0000E94CA020E949A020E94A50A85B780682A
+:1005B00085BF85B7806885BF08958BEC92E0892B55
+:1005C00011F00C94CB020895462F50E048305105AD
+:1005D00038F5FA01EA5AFF4FDC0112968C910C941F
+:1005E000B0228823E9F00C94E20A8823C9F00C9425
+:1005F000A4098823A9F00C94BC09882389F00C94E1
+:10060000DB09882369F00C94F609882349F00C94DF
+:10061000100A882329F00C942B0A81110C94D80A13
+:10062000089581E0089581E008950C9413030895DE
+:100630000F931F93CF93DF938C01FC01C081D18175
+:10064000CE010E94BA1DBE010E94C703EC01B80191
+:100650000E941503882309F48DC0F8018281882344
+:1006600009F44AC08091250181111FC0C431F0E511
+:10067000DF0709F051C00E94170381E08093250134
+:100680000E94BD1F909324018093230110921C01AE
+:1006900010921E0110921D011092200110921F0154
+:1006A000109222011092210165C080912301909146
+:1006B00024010E94C91F883C910570F480911C019F
+:1006C000E82FF0E0EE0FFF1FE35EFE4FD183C08303
+:1006D0008F5F80931C014EC0C43880E5D80721F09D
+:1006E000C538D04501F13AC0F8018281882341F034
+:1006F00010921A0182E01EC0C438E0E5DE0759F509
+:1007000080911A01811106C086E20E94581586E286
+:100710000E94151682E01CC0C438F0E5DF0741F3E3
+:10072000C538D045D9F4F8018281882331F0109280
+:100730001B0180E20E9464161DC080911B01811183
+:1007400006C087E20E94581587E20E94151680E2D3
+:100750000E946B160FC0C538D04529F381E0809305
+:100760001A0180931B01C801DF91CF911F910F9156
+:100770000C94110380E0DF91CF911F910F910895A8
+:100780000C94CC020C94DD0280E090E00895E72FF9
+:10079000F0E095E0899FE00DF11D1124EE0FFF1FA1
+:1007A000EE0FFF1FE60FF11DEE0FFF1FE65DFE4F80
+:1007B000859194910895880F991FFC01E656F040A9
+:1007C000859194910895880F991FFC01E65EFE4F74
+:1007D0008591949108950F931F93CF93DF93EC012C
+:1007E000811521E39207A0F5C11580E3D80708F031
+:1007F000D7C0C83ED105D8F4C03ED10508F003C229
+:10080000C83AD10578F4C53AD10508F06AC0C130BC
+:10081000D10509F463C008F4F3C1C430D10508F070
+:10082000F2C1EEC1CB3BD10508F466C0E9C1C115E8
+:1008300090E2D90708F0AFC0C11521E0D20708F057
+:10084000E2C1C03FD10508F4DBC18E0110651BC2B7
+:10085000C03880E5D80700F5C03790E5D90708F023
+:10086000A3C0C11520E5D20709F4ACC050F4CE01F5
+:10087000905480319F4008F0C3C1DF708E01106A30
+:1008800002C2C13080E5D80709F4AAC0C43190E59E
+:10089000D90708F4ABC0B4C1C33820E5D20709F4C6
+:1008A0008EC050F4C13890E5D90709F482C008F031
+:1008B00083C000E011EDE7C1C03181E5D80708F43D
+:1008C0009FC1C11597E5D90708F432C1CE019057F1
+:1008D0008115904108F094C1DF708FC101E010E0F4
+:1008E000D2C1C53AD10509F490C1C63AD10509F083
+:1008F0008FC102E810E4C7C1C83AD10509F48BC121
+:10090000C93AD10509F48AC1CA3AD10509F489C1A5
+:10091000CB3AD10509F488C1CC3AD10509F487C195
+:10092000CD3AD10509F486C1C03BD10509F485C192
+:10093000CE3AD10509F484C1CF3AD10509F483C177
+:10094000C13BD10509F482C1C23BD10509F481C183
+:10095000C33BD10509F480C1C43BD10509F47FC173
+:10096000C53BD10509F47EC1C63BD10509F47DC163
+:10097000C73BD10509F47CC1C83BD10509F47BC153
+:10098000C93BD10509F47AC1CA3BD10509F479C143
+:1009900000E014E478C1CE019F700E94E30374C1AB
+:1009A000DD278E01106C6FC1CF70DD278E01146DB5
+:1009B0006AC100E010ED67C100E012ED64C100E023
+:1009C00013ED61C10E94C1188FEF94E32CE08150B8
+:1009D00090402040E1F700C000000E94182053C161
+:1009E0008091B60181608093B6014DC10E94C22101
+:1009F000811102C00E94A3210E94DF2190E0909308
+:100A0000E0018093DF01C23080E5D80721F48091B6
+:100A1000DF01816086C0C43090E5D90721F4809160
+:100A2000DF0182607EC0C63020E5D20721F48091CC
+:100A3000DF01846076C0C83080E5D80719F4809162
+:100A4000DF0127C0CA3090E5D90721F48091DF018A
+:100A5000806167C0CC3020E5D20721F48091DF01AE
+:100A600080625FC0CE3080E5D80721F48091DF013D
+:100A7000806457C0C03190E5D90721F48091DF012F
+:100A800080684FC0C23120E5D20729F48091DF0190
+:100A90008460886046C0C33080E5D80721F4809127
+:100AA000DF018E7F3EC0C53090E5D90721F48091EB
+:100AB000DF018D7F36C0C73020E5D20721F4809159
+:100AC000DF018B7F2EC0C93080E5D80719F48091F3
+:100AD000DF0126C0CB3090E5D90721F48091DF01FA
+:100AE0008F7E1FC0CD3020E5D20721F48091DF0139
+:100AF0008F7D17C0CF3080E5D80721F48091DF01CA
+:100B00008F7B0FC0C13190E5D90721F48091DF01BF
+:100B10008F7707C0C331D04531F48091DF018B7FDF
+:100B2000877F8093DF018091DF010E94E321ABC0CA
+:100B30008D2F99278F70992781309105D9F49E01C7
+:100B40002370332702C0880F991F2A95E2F79C680B
+:100B50008E0144E0000F111F4A95E1F70027137042
+:100B6000802B912B53E0CC0FDD1F5A95E1F7C07617
+:100B7000DD272FC08230910531F4DC2FCC278E0188
+:100B8000016F106A80C08330910569F4CE018370D3
+:100B9000992701E010E002C0000F111F8A95E2F7CB
+:100BA000C8019C680FC084309105B9F4CE018370F0
+:100BB000992701E010E002C0000F111F8A95E2F7AB
+:100BC000C8019A6823E0CC0FDD1F2A95E1F7C07EAB
+:100BD000D7708C010C2B1D2B56C08530910531F43C
+:100BE000DC2FCC278E01046F106A4DC0069709F0E8
+:100BF0004AC0CF71DD27DC2FCC278E01106243C0A5
+:100C000000E010E040C08E013EC001E810E43BC0AF
+:100C100003E810E438C002EE14E435C009EE14E431
+:100C200032C00AEE14E42FC005EB14E42CC006EB2E
+:100C300014E429C007EB14E426C00CEC14E423C030
+:100C40000DEC14E420C003E815E41DC00AE815E427
+:100C50001AC002E915E417C004E915E414C001E262
+:100C600016E411C003E216E40EC004E216E40BC061
+:100C700005E216E408C006E216E405C007E216E441
+:100C800002C00AE216E4C801DF91CF911F910F91D3
+:100C90000895E72FF0E095E0899FE00DF11D112404
+:100CA000EE0FFF1FEE0FFF1FE60FF11DEE0FFF1FF0
+:100CB000E65DFE4F85919491803E9105E0F4803C85
+:100CC000910558F58133910509F46FC048F48932D4
+:100CD000910509F463C08A32910509F46DC072C0B0
+:100CE00089339105E9F082389105D1F0853391057A
+:100CF00009F44DC067C0833E910581F138F4803E10
+:100D00009105B9F0823E9105D9F05CC0863E91050F
+:100D100061F1873E9105A1F155C00E94DB03089562
+:100D20002091DF0120FD02C021FF4CC080EE90E049
+:100D300049C08091DF0180FFF9CF89E390E042C094
+:100D40008091DF0182FF0EC08091DF0184FF03C02C
+:100D500080E090E037C083EE90E034C08091DF0106
+:100D600082FFF2CF82EE90E02DC08091DF0183FF01
+:100D70000BC08091DF0184FDEBCF87EE90E022C0B5
+:100D80008091DF0183FFF5CF86EE90E01BC080915C
+:100D9000DF0185FF07C089E290E014C08091DF0188
+:100DA00085FFF9CF85E390E00DC08091DF0186FFDC
+:100DB00007C08AE290E006C08091DF0186FFF9CF8C
+:100DC00081E390E00E94EB0308950C949902E82FD0
+:100DD000F0E0EC5EFE4F8081E82FEF70F0E082954E
+:100DE0008F7021E030E0A90102C0440F551F8A95A1
+:100DF000E2F740A308950F931F93CF93DF9385B736
+:100E0000806885BF85B7806885BFC4E0D0E001E019
+:100E100010E0FE01EC5EFE4F8081E82FEF70F0E005
+:100E200021A182958F70A80102C0440F551F8A9599
+:100E3000E2F7CA01822B81A38C2F0E94E70621973B
+:100E400040F783E090E061E070E0FC01E05FFE4F7E
+:100E50002081E22FEF70F0E042A122952F70DB019C
+:100E600002C0AA0FBB1F2A95E2F79D01242B22A3E3
+:100E7000019758F7DF91CF911F910F910C94C00308
+:100E8000EF92FF920F931F93CF93DF930BE211E04A
+:100E9000C4E0EE24E394F12CD5E08C2F0E94E70609
+:100EA00083E090E040E0FC01E05FFE4F5081E52FE1
+:100EB000EF70F0E020A130E052955F7002C03595F0
+:100EC00027955A95E2F720FD07C09701082E01C02B
+:100ED000220F0A94EAF7422B019728F7F801829132
+:100EE0008F01841719F04083D09300018C2F0E944A
+:100EF000E706C15090F68091000187FD1CC081502B
+:100F0000809300018F3F39F08FE99FE00197F1F75F
+:100F100000C0000010C080E090E0FC01E55DFE4FE5
+:100F2000DC01AA5DBE4F14962C91248301978B3F60
+:100F3000EFEF9E0791F70E94C20381E0DF91CF910E
+:100F40001F910F91FF90EF900895E82FF0E0E55D7D
+:100F5000FE4F8081089508950F931F93CF9300E370
+:100F600011E0C0E0F80182918F0190E00E94351FEE
+:100F7000C80FF1E00B321F07A9F78C2FCF911F91FB
+:100F80000F91089521B3342F3095232331B3432B90
+:100F90003FB7F894FC01680F791FE617F70789F04F
+:100FA000819198E041BB000000C087FF21BB880F02
+:100FB000000000C000C000C021BB00C09A9591F79E
+:100FC000ECCF3FBF089520B3242B20BB9B01220F01
+:100FD000331F620F731F0E94C20787EC90E00197D6
+:100FE000F1F700C00000089540E40C94E307AF92CD
+:100FF000BF92CF92DF92EF92FF920F931F93CF9306
+:10100000DF936C01790150E0FA01E957FD4F4491FB
+:101010008FEF90E0FC01E61BF109E957FD4FE491E9
+:10102000E09509F495C0C42FD0E08E1B91098C9FE8
+:1010300090018D9F300D9C9F300D1124E32F8CE388
+:10104000A82EB12CC601B5010E948822DC016230B5
+:10105000710509F446C0D0F46115710599F161304C
+:10106000710509F079C0C31BD109B501681B790B63
+:10107000C69FC001C79F900DD69F900D1124B5014A
+:101080000E948822032F060F142F67C06430710559
+:1010900009F44BC0B8F16530710509F05DC0C31BA0
+:1010A000D109B501681B790BC69FC001C79F900D80
+:1010B000D69F900D1124B5010E948822132FE32F93
+:1010C000E60F44C0C31BD109CC9DC001CD9D900D3E
+:1010D000DC9D900D1124B5010E948822132F160F5C
+:1010E00035C0C31BD109CA9FC001CB9F900DDA9FA9
+:1010F000900D1124B5010E948822142F032FE32F95
+:10110000E60F2BC0C31BD109B501681B790BC69F25
+:10111000C001C79F900DD69F900D1124B5010E946C
+:101120008822132F160F032F0FC0C31BD109CA9F8C
+:10113000C001CB9F900DDA9F900D1124B5010E9444
+:101140008822032F060F132FE42F07C0042F05C09A
+:10115000E42F142F042F01C0E0E0D70111960C9367
+:1011600011971C931296EC93DF91CF911F910F91E1
+:10117000FF90EF90DF90CF90BF90AF90089587E001
+:1011800090E00C94BE22AB01BC0187E090E00C948F
+:10119000DC22EEEBF1E083E08083AFEBB1E08C91F9
+:1011A000807884668F778C938CEC828383836091C4
+:1011B000BE017091BF018091C0019091C1010C945A
+:1011C000C3088091BE0180FF06C064E070E086EC39
+:1011D00091E00C94F40780E090E0FC01EA53FE4FAC
+:1011E00011821082128203968C309105B1F7EDCFF7
+:1011F00020E030E0F901EA53FE4F818360834283AF
+:101200002D5F3F4F2C303105A9F70C94E108EF9288
+:10121000FF920F931F93CF93DF9300D01F92CDB710
+:10122000DEB70091BE011091BF012091C001309145
+:10123000C1010093C2011093C3012093C4013093F4
+:10124000C5012091BE0120FF21C0042FF62EE92EFA
+:10125000182F9E012F5F3F4F0E94F7078091C20118
+:1012600010FB87F98093C20116958091C3018078A5
+:10127000182BE0FA17F91093C301F092C401009300
+:10128000C5014B8169818A810E94F8080F900F90F7
+:101290000F90DF91CF911F910F91FF90EF900895E4
+:1012A0000F931F93CF93DF93EC01062F142F909190
+:1012B000BE0190FF44C0892F8E77823021F4CE0189
+:1012C0000E9407091BC0892F86958F732EE3280F74
+:1012D0002F73243018F41091C10110C0865C8F73F5
+:1012E000893060F4C92FCC1FCC27CC1FD091BF010F
+:1012F0008D2F880FC82BD7FBDD27D0F98091BE0139
+:10130000C0FB87F98093BE01C6958091BF018078AC
+:10131000C82BD0FBC7F9C093BF010093C001109345
+:10132000C1016091BE017091BF018091C001909197
+:10133000C101DF91CF911F910F910C94C308DF91F0
+:10134000CF911F910F910895EEEBF1E02081221FC4
+:101350002227221F3091BF01432F440F842F822B5D
+:1013600037FB992790F90A9668E671E00E949C2263
+:10137000438162810C9450092091BE01221F2227D3
+:10138000221F3091BF01432F440F842F822B37FB44
+:10139000992790F98A3091051CF4825A9E4F01C01A
+:1013A0000A9768E671E00E949C224091C101609119
+:1013B000C0010C9450096091C001862F90E08F3ECF
+:1013C000910514F46F5E01C06FEF8091BE01881F1C
+:1013D0008827881F9091BF01292F220F97FB9927FB
+:1013E00090F94091C101822B0C9450096091C00189
+:1013F000862F90E0419714F0615101C060E0809128
+:10140000BE01881F8827881F9091BF01292F220FB6
+:1014100097FB992790F94091C101822B0C945009B8
+:101420004091C101842F90E08F3E910514F44F5EEE
+:1014300001C04FEF8091BE01881F8827881F9091BF
+:10144000BF01292F220F97FB992790F96091C001C6
+:10145000822B0C9450094091C101842F90E0419758
+:1014600014F0415101C040E08091BE01881F8827DF
+:10147000881F9091BF01292F220F97FB992790F980
+:101480006091C001822B0C9450098091410181111F
+:101490000FC081E08093410189E0809391008FB774
+:1014A000F89493E09093990090ED909398008FBFFB
+:1014B0000895E1E7F0E08081826080830895E1E7AC
+:1014C000F0E080818D7F808308959091BE0190FF30
+:1014D0003BC09178811102C0926007C0883110F042
+:1014E0009E6203C08F73880F982B9093BE0160910A
+:1014F000BE017091BF018091C0019091C1010E9415
+:10150000C3088091BE01982F9E77923019F40E94F3
+:101510005F0A07C08695825C8F73863110F40E9443
+:10152000590A8091BE01881F8827881F9091BF01AA
+:10153000292F220F97FB992790F94091C1016091C3
+:10154000C001822B0C94500908958091B6018160EE
+:101550008093B60181E0809342010E94C2218111F3
+:1015600004C00E94A3210E94C9080E94BF08609382
+:10157000BE017093BF018093C0019093C1016E774B
+:1015800061F40E94C9080E94BF086093BE01709375
+:10159000BF018093C0019093C1010E94450A8091D0
+:1015A000BE0180FF04C086958F730C94650A089570
+:1015B0008091BE0186958F738F5F883108F081E03E
+:1015C0000C94650A8091BE01982F909590FB80F94C
+:1015D0008093BE016091BE017091BF018091C001F6
+:1015E0009091C1010E94C3088091BE0180FF04C098
+:1015F00086958F730C94650A0E945F0A2FEF80E72F
+:1016000092E0215080409040E1F700C000000C942F
+:10161000E108CF93C82F80913F01909140010E9433
+:10162000C91FEC2FF0E0ED57FE4FE491F0E08E176C
+:101630009F0718F10E94BD1F9093400180933F01C6
+:10164000E0913E01F0E0E957FE4F44918091BE01E8
+:10165000881F8827881F9091BF01292F220F97FB91
+:10166000992790F96091C001822B0E94070980910F
+:101670003E0190E0019680933E01CF910895CF9373
+:10168000C82F80913C0190913D010E94C91FEC2F11
+:10169000F0E0E058FE4FE491F0E08E179F07E8F08D
+:1016A0000E94BD1F90933D0180933C014091C10178
+:1016B0006091C00180913A0190913B010E9407091D
+:1016C00080913A0190913B01019668E671E00E9499
+:1016D000882290933B0180933A01CF910895CF9255
+:1016E000DF92FF920F931F93CF93DF93F82E809199
+:1016F0003801909139010E94C91FEF2DE695F0E065
+:10170000E058FE4FE491F0E08E179F07F0F10E9441
+:10171000BD1F909339018093380106EC11E0C0E0C1
+:10172000D0E088E6C82EDD24D394809136019091D4
+:1017300037018C0F9D1FB6010E94882298014091AD
+:10174000C1016091C0010E94F707C65ADF4F0D5FCB
+:101750001F4FC83681E0D80741F70E94E108209169
+:10176000360130913701F0FE0AC0C9010196BE0171
+:101770000E948822909337018093360106C0215041
+:1017800031093093370120933601DF91CF911F91BA
+:101790000F91FF90DF90CF9008958F929F92AF921C
+:1017A000BF92CF92DF92EF92FF920F931F93CF934E
+:1017B000DF93C82F80FF03C0DD24DA9402C0DD244C
+:1017C000D39480913401909135010E94C91FC69530
+:1017D000EC2FF0E0E358FE4FE491F0E08E179F0706
+:1017E00008F466C00E94BD1F9093350180933401B8
+:1017F00096ECE92E91E0F92E08EC11E0C0E0D0E083
+:1018000027E0822E912CF80131971082F701108287
+:10181000F801108287E0A82EB12CC12C80913301F1
+:101820008C0D87FD8C5F992787FD9095C817D90788
+:10183000E9F42091C1012A9DC0012B9D900D112436
+:10184000B4010E949C22462F8091BE01881F8827E8
+:10185000881F9091BF01592F550F97FB992790F939
+:1018600097016091C001852B0E94F707CD0CF1E034
+:10187000AF1AB10899F6219683E0E80EF11C0D5FCE
+:101880001F4FC430D10509F0BECF0E94E1088091FE
+:10189000330191E0D91206C0811102C083E006C075
+:1018A000815004C090E001968370992780933301A2
+:1018B000DF91CF911F910F91FF90EF90DF90CF902C
+:1018C000BF90AF909F908F9008959F92AF92BF92DC
+:1018D000CF92DF92EF92FF920F931F93CF93DF93FC
+:1018E000CDB7DEB72C970FB6F894DEBF0FBECDBFD5
+:1018F000182F80913101909132010E94C91FE12F70
+:10190000F0E0E658FE4FE491F0E08E179F0708F4F0
+:1019100093C00E94BD1F9093320180933101CE018C
+:1019200001967C015E0193E0A90EB11CC12CD12C63
+:101930008701F50131971082F7011082F5011082BD
+:10194000912C9091010180913001999E800D11247C
+:1019500087FD04C084301CF083E001C080E099273B
+:1019600087FD9095C816D906A1F48091BE01881F05
+:101970008827881F9091BF01592F550F97FB9927F2
+:1019800090F997014091C1016091C001852B0E949F
+:10199000F7079394F7E09F12D4CF8FEFC81AD80AB5
+:1019A00093E0E90EF11CE3E0AE0EB11CF4E0CF16BB
+:1019B000D10409F0BECFA8ECB1E089E090E0FC01D1
+:1019C000E370FF279D0121503109AF01440F551FDE
+:1019D000E40FF51FBF01600F711FFB014181F90189
+:1019E000408321503109FB014081F9014083FB0113
+:1019F00022812C93019613968D30910501F70E9458
+:101A0000E1089091010180913001913049F48A3FC1
+:101A10002CF489EF809330018FEF08C081500AC009
+:101A20008B303CF08AE08093300181E080930101AB
+:101A300003C08F5F809330012C960FB6F894DEBF01
+:101A40000FBECDBFDF91CF911F910F91FF90EF900F
+:101A5000DF90CF90BF90AF909F9008951F920F920C
+:101A60000FB60F9211242F933F934F935F936F9371
+:101A70007F938F939F93AF93BF93EF93FF93809147
+:101A8000BE0186958F739EE3980F9F73943020F468
+:101A900082500E94090B23C09AE3980F9F739330E2
+:101AA00020F486500E943F0B1AC097E3980F9F7353
+:101AB000963020F489500E946F0B11C091E3980F6B
+:101AC0009F73963020F48F500E94CD0B08C09BE28C
+:101AD000980F9F73933018F485510E94650CFF9105
+:101AE000EF91BF91AF919F918F917F916F915F9196
+:101AF0004F913F912F910F900FBE0F901F9018950F
+:101B00008091530108950895CF93DF9300D01F92E1
+:101B1000CDB7DEB72091D601243021F523E029830B
+:101B20009B838A8381E08093E9008FEF9091E800A6
+:101B3000815095FD06C095ED9A95F1F70000811151
+:101B4000F5CF8091E80085FF0DC040E050E063E0F4
+:101B500070E0CE0101960E94B60F8091E8008E776A
+:101B60008093E8000F900F900F90DF91CF91089530
+:101B7000CF93DF9300D01F92CDB7DEB72091D6016F
+:101B8000243021F522E029839B838A8381E080939E
+:101B9000E9008FEF9091E800815095FD06C095ED2A
+:101BA0009A95F1F700008111F5CF8091E80085FF4B
+:101BB0000DC040E050E063E070E0CE0101960E946D
+:101BC000B60F8091E8008E778093E8000F900F9019
+:101BD0000F90DF91CF910895CF93DF932091D6019D
+:101BE000243009F048C0EC0180910C018823E1F019
+:101BF00080910D018823C1F082E08093E9008FEF8E
+:101C00009091E800815095FD06C095E19A95F1F715
+:101C100000008111F5CF8091E80085FF2CC040E0E5
+:101C200050E060E170E017C081E08093E9008FEF41
+:101C30009091E800815095FD06C095ED9A95F1F7D9
+:101C400000008111F5CF8091E80085FF14C040E0CD
+:101C500050E068E070E0CE010E94B60F8091E8008D
+:101C60008E778093E80080E1FE01A3E4B1E001906B
+:101C70000D928A95E1F7DF91CF9108958091D5017A
+:101C8000811109C00E944B110E94A8118091E200AD
+:101C900084608093E20008951092D501089508951C
+:101CA00008950C94801F42E061EC81E00E94C51011
+:101CB00042E161EC82E00C94C5108091D801833040
+:101CC00009F453C030F4813071F0823009F48CC0D3
+:101CD00008958A3009F478C08B3009F45EC08930E9
+:101CE00009F09AC020C08091D701813A09F094C0D0
+:101CF0008091E800877F8093E8008091DB019091DC
+:101D0000DC01892B21F460E183E491E003C060E011
+:101D100080E090E070E00E9401108091E8008B77F5
+:101D20008093E80008958091D701813209F074C052
+:101D30008091DB019091DC01029708F06DC08091E9
+:101D4000E800877F8093E8008091E80082FD05C06D
+:101D50008091D6018111F8CF5FC08091F10080930E
+:101D600053018091E8008B7753C08091D701813A6D
+:101D700009F052C08091DB019091DC01892B09F0C0
+:101D80004BC08091E800877F8093E8008091E80055
+:101D900080FFFCCF80910C0136C08091D701813249
+:101DA000D9F58091DB019091DC01892BA9F5809117
+:101DB000E800877F8093E8000E94FA108091D901A3
+:101DC00080930C010C94C1188091D701813221F5C8
+:101DD0008091E800877F8093E8000E94FA1080914C
+:101DE000DA018093540108958091D701813AA1F4DA
+:101DF0008091E800877F8093E8008091E80080FF71
+:101E0000FCCF809154018093F1008091E8008E779F
+:101E10008093E8000C94FA10089584B7877F84BFFC
+:101E200088E10FB6F89480936000109260000FBEB6
+:101E300090E080E80FB6F894809361009093610081
+:101E40000FBE0E9492140E944B110E94A811809113
+:101E5000E20084608093E20078940E942E140E9435
+:101E6000941482E091E00E9449148091D60185305B
+:101E700069F40E94411F8091D4018823B1F30E942C
+:101E80006F1F882391F30E94A00FEFCF0E949C1434
+:101E9000ECCF292F332723303105C9F064F42130EA
+:101EA000310581F02230310509F042C08BE390E02A
+:101EB00021EE33E041C021323105F1F0223231050B
+:101EC00049F136C082E190E02CE134E035C0992739
+:101ED0008130910541F08230910541F0892B41F527
+:101EE000EDEDF3E005C0E7ECF3E002C0E7E8F3E076
+:101EF000849190E09F0120C0662339F06130C1F4E5
+:101F000089E090E02CE034E017C089E090E023EF16
+:101F100033E012C0662339F0613051F489E390E078
+:101F20002EE234E009C08FE390E027E634E004C0FD
+:101F300080E090E020E030E0FA01318320830895D2
+:101F400080E189BD82E189BD09B400FEFDCF8091A9
+:101F5000D8008F7D8093D8008091E00082608093CC
+:101F6000E0008091E00081FDFCCF0895CF92DF92E8
+:101F7000EF92FF920F931F93CF93DF93EC018B01AE
+:101F80006A010E941911811133C0C114D10439F0C2
+:101F9000F60180819181081B190BC80FD91FE12C14
+:101FA000F12C0115110519F18091E80085FD16C08D
+:101FB0008091E8008E778093E800C114D10449F045
+:101FC000F60180819181E80EF91EF182E08285E0C0
+:101FD0000FC00E941911882321F30AC089918093B0
+:101FE000F10001501109FFEFEF1AFF0ADACF80E08C
+:101FF000DF91CF911F910F91FF90EF90DF90CF90E5
+:1020000008952091DD013091DE012617370748F051
+:102010006115710539F42091E8002E772093E800CE
+:1020200001C0B90140E061157105A9F12091D60107
+:10203000222309F443C0253009F442C02091E8006E
+:1020400023FD40C02091E80022FD32C02091E8002D
+:1020500020FFE9CF4091F3002091F20030E0342BD3
+:10206000FC01CF016115710559F02830310540F4AC
+:1020700081918093F100615071092F5F3F4FF1CF43
+:1020800041E02830310509F040E02091E8002E774A
+:102090002093E800C8CF4111C9CF0AC08091D60172
+:1020A000882361F0853061F08091E80083FD0AC0EB
+:1020B0008091E80082FFF2CF80E0089582E00895E9
+:1020C00083E0089581E008952091DD013091DE01E3
+:1020D0002617370748F06115710539F42091E8009B
+:1020E0002E772093E80001C0B901FC0120E06115C2
+:1020F000710591F18091D601882309F440C08530A3
+:1021000009F43FC08091E80083FD3DC08091E80064
+:1021100082FD2FC08091E80080FFE9CF2091F3007D
+:102120008091F20090E0922B6115710559F0883092
+:10213000910540F424912093F1003196615071098A
+:102140000196F2CF21E0089709F020E08091E800A5
+:102150008E778093E800CBCF2111CCCF0AC080913D
+:10216000D601882361F0853061F08091E80083FD1D
+:102170000AC08091E80082FFF2CF80E0089582E0FB
+:10218000089583E0089581E00895982F973058F5D9
+:102190009093E900981739F07091EC002091ED00D0
+:1021A0005091F00003C0242F762F50E021FF19C07A
+:1021B0003091EB003E7F3093EB003091ED003D7F9E
+:1021C0003093ED003091EB0031603093EB00709371
+:1021D000EC002093ED005093F0002091EE0027FFDB
+:1021E00007C09F5FD3CF8F708093E90081E008958F
+:1021F00080E008958091D70187FF11C08091E800A9
+:1022000082FD05C08091D6018111F8CF11C0809167
+:10221000E8008B770BC08091D601882349F080912C
+:10222000E80080FFF8CF8091E8008E778093E80087
+:1022300008952091E4003091E50095E64091EC008E
+:10224000842F817040FF22C08091E80080FD1CC077
+:102250008091D601882391F0853091F08091EB0038
+:1022600085FD10C04091E4005091E50042175307EE
+:1022700029F39A01915011F784E0089582E00895BE
+:1022800083E0089581E0089580E008954091E8009A
+:1022900042FFDECF08950E94B9110E94C111E0EE05
+:1022A000F0E0808181608083E8EDF0E080818F77CD
+:1022B000808319BCA7EDB0E08C918E7F8C938081D8
+:1022C0008F7E80831092D50108950F931F93CF9333
+:1022D000DF930E94B9110E94C111C8EDD0E088813E
+:1022E0008F77888388818068888388818F7D8883C1
+:1022F00019BC1092D6011092D2011092D401109202
+:10230000D30100EE10E0F80180818B7F808388810B
+:102310008160888342E060E080E00E94C510E1EEC9
+:10232000F0E080818E7F8083E2EEF0E0808181604A
+:102330008083808188608083F80180818E7F8083A4
+:10234000888180618883DF91CF911F910F910895DB
+:10235000E8EDF0E080818F7E8083E7EDF0E0808122
+:102360008160808384E082BF81E08093D5010C94FA
+:102370006511E8EDF0E080818E7F80831092E200AD
+:1023800008951092DA001092E10008951F920F92C2
+:102390000FB60F9211242F933F934F935F936F9338
+:1023A0007F938F939F93AF93BF93EF93FF9380910E
+:1023B000E10082FF0BC08091E20082FF07C08091A4
+:1023C000E1008B7F8093E1000E942D148091DA0060
+:1023D00080FF1FC08091D80080FF1BC08091DA0071
+:1023E0008E7F8093DA008091D90080FF0DC080E15C
+:1023F00089BD82E189BD09B400FEFDCF81E08093F3
+:10240000D6010E943E0E05C019BC1092D6010E9452
+:102410004C0E8091E10080FF19C08091E20080FFA6
+:1024200015C08091E2008E7F8093E2008091E200EF
+:1024300080618093E2008091D80080628093D80010
+:1024400019BC85E08093D6010E94500E8091E10076
+:1024500084FF30C08091E20084FF2CC080E189BD00
+:1024600082E189BD09B4