aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar TerryMathews <terry@terrymathews.net>2016-06-12 22:26:47 -0400
committerGravatar Jack Humbert <jack.humb@gmail.com>2016-06-12 22:26:47 -0400
commit25d4772754186b8ab6ef86c28049da67a460f123 (patch)
treec68ca4c6ee77f3601c2c8d3fe7573e0cdc8fd791
parent6955719075a9a07524814e4183f3f90f83db1c6a (diff)
downloadqmk_firmware-25d4772754186b8ab6ef86c28049da67a460f123.tar.gz
adds support for Phantom TKL keyboard (#399)
ANSI 125 layout, capslock and scrolllock implemented, support for WS2812LED strip included.
-rw-r--r--keyboard/phantom/Makefile112
-rw-r--r--keyboard/phantom/config.h91
-rw-r--r--keyboard/phantom/keymaps/default/compiled.hex1488
-rw-r--r--keyboard/phantom/keymaps/default/keymap.c169
-rw-r--r--keyboard/phantom/led.c44
-rw-r--r--keyboard/phantom/phantom.c28
-rw-r--r--keyboard/phantom/phantom.h46
-rw-r--r--keyboard/phantom/pinout.jpgbin0 -> 86118 bytes
-rw-r--r--keyboard/phantom/pinout.txt1
9 files changed, 1979 insertions, 0 deletions
diff --git a/keyboard/phantom/Makefile b/keyboard/phantom/Makefile
new file mode 100644
index 000000000..0fbcf914f
--- /dev/null
+++ b/keyboard/phantom/Makefile
@@ -0,0 +1,112 @@
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make all = Make software.
+#
+# make clean = Clean out built project files.
+#
+# make coff = Convert ELF to AVR COFF.
+#
+# make extcoff = Convert ELF to AVR Extended COFF.
+#
+# make program = Download the hex file to the device.
+# Please customize your programmer settings(PROGRAM_CMD)
+#
+# make teensy = Download the hex file to the device, using teensy_loader_cli.
+# (must have teensy_loader_cli installed).
+#
+# make dfu = Download the hex file to the device, using dfu-programmer (must
+# have dfu-programmer installed).
+#
+# make flip = Download the hex file to the device, using Atmel FLIP (must
+# have Atmel FLIP installed).
+#
+# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
+# (must have dfu-programmer installed).
+#
+# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
+# (must have Atmel FLIP installed).
+#
+# make debug = Start either simulavr or avarice as specified for debugging,
+# with avr-gdb or avr-insight as the front end for debugging.
+#
+# make filename.s = Just compile filename.c into the assembler code only.
+#
+# make filename.i = Create a preprocessed source file for use in submitting
+# bug reports to the GCC project.
+#
+# To rebuild project do "make clean" then "make all".
+#----------------------------------------------------------------------------
+
+SRC = led.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 ?= no # 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
+RGBLIGHT_ENABLE ?=yes # Enable keyboard underlight functionality (+4870)
+BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality (+1150)
+MIDI_ENABLE ?= no # MIDI controls
+AUDIO_ENABLE ?= no
+UNICODE_ENABLE ?= no # Unicode
+BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
+
+
+ifndef QUANTUM_DIR
+ include ../../Makefile
+endif
diff --git a/keyboard/phantom/config.h b/keyboard/phantom/config.h
new file mode 100644
index 000000000..d5878766f
--- /dev/null
+++ b/keyboard/phantom/config.h
@@ -0,0 +1,91 @@
+/*
+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 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0003
+#define MANUFACTURER PHANTOM
+#define PRODUCT PHANTOM RGB MOD
+#define DESCRIPTION QMK keyboard firmware for PHANTOM TKL
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+// ROWS: Top to bottom, COLS: Left to right
+/* Row pin configuration
+*/
+#define MATRIX_ROW_PINS { B5, B4, B3, B2, B1, B0 }
+/* Column pin configuration
+ */
+#define MATRIX_COL_PINS { D5, C7, C6, D4, D0, E6, F0, F1, F4, F5, F6, F7, D7, D6, D1, D2, D3 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 5
+
+/* 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 PORTE
+ #define ws2812_DDRREG DDRE
+ #define ws2812_pin 2
+ #define RGBLED_NUM 20 // 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
+
+/* 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/keyboard/phantom/keymaps/default/compiled.hex b/keyboard/phantom/keymaps/default/compiled.hex
new file mode 100644
index 000000000..37bbfb555
--- /dev/null
+++ b/keyboard/phantom/keymaps/default/compiled.hex
@@ -0,0 +1,1488 @@
+:100000000C945A070C949E070C949E070C949E0720
+:100010000C949E070C949E070C949E070C949E07CC
+:100020000C949E070C949E070C9490190C94621AE1
+:100030000C9481280C949E070C949E070C949E07A8
+:100040000C949E070C949E070C949E070C949E079C
+:100050000C949E070C94E8280C949E070C949E0721
+:100060000C949E070C949E070C949E070C949E077C
+:100070000C949E070C949E070C949E070C949E076C
+:100080000C9431140C949E070C949E070C949E07BC
+:100090000C949E070C949E070C949E070C949E074C
+:1000A0000C949E070C949E070C949E077B089A085C
+:1000B000CB08A108A808AF08B608BD08C408C71A2D
+:1000C000E91AD41BE91AD41B2B1B4E1BD41BA31BF0
+:1000D000B61B241F241F531F531F931FD220D2204F
+:1000E000D220B51FD2205C205C20C520D220D22097
+:1000F000CD20692069206920692069206920692054
+:1001000069206920692069206920692069206920A7
+:1001100069207920892090209720A12000F001F00B
+:1001200002F003F004F005F006F007F008F02900F3
+:1001300035003A003B003C003D003E003F004000DF
+:10014000410042004300440045004600470048008B
+:100150001E001F0020002100220023002400250093
+:10016000260027002D002E002A002A0049004A0000
+:100170004B002B0014001A000800150017001C008B
+:1001800018000C00120013002F00300031004C004A
+:100190004D004E00390004001600070009000A0057
+:1001A0000B000D000E000F00330034002800280063
+:1001B000280028002800E100E1001D001B000600C7
+:1001C0001900050011001000360037003800E50066
+:1001D000E500520052005200E000E300E2002C0073
+:1001E0002C002C002C002C002C002C00E600E7003A
+:1001F0000152E400500051004F00010001000100D5
+:1002000001000100010001000100010001000100E6
+:1002100001000100010001000100010001000100D6
+:1002200001000100010001000100010001000100C6
+:100230000100010000500050010001000100010018
+:1002400001000100010001000100010001000100A6
+:100250000100010001000100010001000100010096
+:100260000100010001000100010001000100010086
+:100270000100010001005200010001000100010025
+:1002800001000100010001200220032004200520BC
+:1002900006200720082001000100010001000100E4
+:1002A0000100010001000100010001000100010046
+:1002B0000100010001000100010001000100010036
+:1002C0000100010001000A44454255473A20656E8D
+:1002D00061626C65642E0A005374617465206F66F8
+:1002E00020726F772025583A2025303136620A0077
+:1002F00048756D616E2D7265616461626C65206D1B
+:1003000061747269782073746174653A0D0A0044EF
+:1003100065626F756E63696E672064656C617920D4
+:1003200072656D61696E696E673A2025580A0054DE
+:10033000494D4552332064697361626C65642E0ACD
+:100340000054494D45523320656E61626C65642EE0
+:100350000A007267626C696768742073657420684C
+:100360007376205B454550524F4D5D3A2025752CE4
+:1003700025752C25750A007267626C6967687420A0
+:10038000746F67676C653A207267626C696768743E
+:100390005F636F6E6669672E656E61626C65203D96
+:1003A0002025750A007267626C69676874206D6F3A
+:1003B00064653A2025750A007267626C6967687423
+:1003C0005F696E6974207267626C696768745F63E5
+:1003D0006F6E6669672E6D6F6465203D20302E203C
+:1003E00057726974652064656661756C7420766106
+:1003F0006C75657320746F20454550524F4D2E0A21
+:10040000007267626C696768745F696E6974206501
+:1004100065636F6E666967206973206E6F7420650F
+:100420006E61626C65642E0A007267626C6967684F
+:10043000745F696E6974207374617274210A00724A
+:1004400067626C696768745F696E69742063616C68
+:100450006C65642E0A007267626C696768745F631A
+:100460006F6E6669672E76616C203D2025640A00F8
+:100470007267626C696768745F636F6E6669672E26
+:10048000736174203D2025640A007267626C69679D
+:1004900068745F636F6E6669672E687565203D20BE
+:1004A00025640A007267686C696768745F636F6EC1
+:1004B0006669672E6D6F6465203D2025640A0072B1
+:1004C00067626C696768745F636F6E6669672E65E3
+:1004D0006E61626C65203D2025640A007267626C63
+:1004E000696768745F636F6E666967206570726FB5
+:1004F0006D0A006565636F6E6669675F757064613C
+:1005000074655F7267626C696768745F6465666171
+:10051000756C740A00643214643214783C1E1E1424
+:100520000A0500000000010101020203040505069E
+:1005300007090A0B0C0E0F1112141517191B1D1F9A
+:10054000212325282A2C2F313436393B3E4143467E
+:10055000494C4F5255585A5D6164676A6D707376A5
+:10056000797C7F8386898C8F9295989B9EA2A5A784
+:10057000AAADB0B3B6B9BCBEC1C4C6C9CBCED0D388
+:10058000D5D7DADCDEE0E2E4E6E8EAEBEDEEF0F126
+:10059000F3F4F5F6F8F9FAFAFBFCFDFDFEFEFEFFBA
+:1005A000FFFFFFFFFFFFFEFEFEFDFDFCFBFAFAF979
+:1005B000F8F6F5F4F3F1F0EEEDEBEAE8E6E4E2E06C
+:1005C000DEDCDAD7D5D3D0CECBC9C6C4C1BEBCB968
+:1005D000B6B3B0ADAAA7A5A29E9B9895928F8C8921
+:1005E0008683807C797673706D6A6764615D5A5822
+:1005F00055524F4C494643413E3B393634312F2CFE
+:100600002A282523211F1D1B1917151412110F0E3F
+:100610000C0B0A090706050504030202010101008B
+:1006200000000001010202020202020303030303AD
+:100630000303030303030303030404040404040483
+:10064000040404040405050505050505050505065E
+:10065000060606060606060707070707070708082F
+:10066000080808080909090909090A0A0A0A0A0BF7
+:100670000B0B0B0B0C0C0C0C0C0D0D0D0D0E0E0EB4
+:100680000E0F0F0F10101010111111121212131360
+:1006900013141414151516161617171818191919F6
+:1006A0001A1A1B1B1C1C1D1D1E1E1F20202121226F
+:1006B00023232424252626272828292A2B2B2C2DC2
+:1006C0002E2F30303132333435363738393A3B3CDF
+:1006D0003D3E3F40414244454647494A4B4C4E4FC0
+:1006E0005152535556585A5B5D5E60626365676947
+:1006F0006B6D6E70727476797B7D7F818486888B5A
+:100700008D909295979A9D9FA2A5A8ABAEB1B4B7D4
+:10071000BABEC1C4C8CBCFD3D6DADEE2E6EAEEF287
+:10072000F8FF5B735D004B6579626F6172642073E3
+:10073000746172742E0A005B575D005B535D005B51
+:10074000525D005B445D005B435D00200350004848
+:100750000041004E0054004F004D00200052004761
+:1007600000420020004D004F0044000000100350E4
+:1007700000480041004E0054004F004D00000004AE
+:1007800003090409027400040100A0FA090400002E
+:1007900001030101000921110100012240000705A8
+:1007A000810308000A090401000103000000092177
+:1007B000110100012236000705820308000A09041E
+:1007C00002000203000000092111010001222000A3
+:1007D0000705830320000107050303200001090426
+:1007E000030001030000000921110100012239006A
+:1007F000070584031000011201100100000008ED3C
+:10080000FE606003000102000105010906A1010567
+:100810000719E029E71500250195087501810205F2
+:100820000819012905950575019102950175039136
+:1008300001050719002977150025019578750181B3
+:1008400002C00631FF0974A1010975150025FF9545
+:1008500020750881020976150025FF9520750891FD
+:1008600002C005010980A101850216010026B7001A
+:100870001A01002AB700751095018100C0050C0906
+:1008800001A1018503160100269C021A01002A9C81
+:1008900002751095018100C005010906A101050737
+:1008A00019E029E7150025019508750181029501D8
+:1008B0007508810105081901290595057501910241
+:1008C0009501750391010507190029FF150026FF01
+:1008D00000950675088100C00A00253032582000B6
+:1008E0006B6579626F6172645F7265706F72743A82
+:1008F00020004B6579626F617264204C454473201F
+:1009000073746174653A2025780A0064656C5F6BC6
+:1009100065795F6269743A2063616E27742064654B
+:100920006C3A20253032580A006164645F6B657947
+:100930005F6269743A2063616E2774206164643A6F
+:1009400020253032580A00646F6E652E0A00626FEF
+:100950006F676D61676963207363616E3A202E2E45
+:100960002E20003F00433E20004C25640A0074699D
+:100970006D65725F636F756E743A202530346C5804
+:100980000A006B6579626F6172645F6E6B726F3AB9
+:100990002025580A006B6579626F6172645F696433
+:1009A0006C653A2025580A006B6579626F61726444
+:1009B0005F70726F746F636F6C3A2025580A00681D
+:1009C0006F73745F6B6579626F6172645F6C65648D
+:1009D0007328293A2025580A000A092D20537461EA
+:1009E000747573202D0A004743433A20342E382E65
+:1009F00032204156522D4C4942433A20312E382E56
+:100A00003073766E204156525F415243483A20611E
+:100A10007672350A004F5054494F4E533A204C5588
+:100A2000464120424F4F544D414749432045585479
+:100A300052414B455920434F4E534F4C4520434F55
+:100A40004D4D414E44204E4B524F20343039360AE2
+:100A5000004255494C443A20756E6B6E6F776E209C
+:100A60002832313A32373A3237204A756E203132E5
+:100A70002032303136290A005649443A203078462F
+:100A8000454544285048414E544F4D292050494433
+:100A90003A20307836303630285048414E544F4D49
+:100AA00020524742204D4F4429205645523A20308B
+:100AB00078303030330A00444553433A20514D4B8F
+:100AC000206B6579626F617264206669726D77610F
+:100AD000726520666F72205048414E544F4D20542D
+:100AE0004B4C0A000A092D2056657273696F6E20FF
+:100AF0002D0A000A092D20436F6E736F6C65202D3F
+:100B00000A4553432F713A09717569740A000A093D
+:100B10002D204D61676963202D0A443A09446562BE
+:100B20007567204D65737361676520546F67676CE7
+:100B3000650A583A094D6174726978204465627596
+:100B400067204D6F646520546F67676C65202D20AA
+:100B500053686F77206B6579707265737365732066
+:100B6000696E206D617472697820677269640A4BDE
+:100B70003A094B6579626F617264204465627567FA
+:100B800020546F67676C65202D2053686F77206B4A
+:100B900065797072657373207265706F72740A4D37
+:100BA0003A094465627567204D6F75736520546F0F
+:100BB00067676C650A563A0956657273696F6E0A03
+:100BC000533A095374617475730A433A0941637463
+:100BD000697661746520436F6E736F6C65204D6F2D
+:100BE00064650A46312D4631303A0953776974639A
+:100BF0006820746F204C6179657220302D3920286F
+:100C0000463130203D204C30290A302D393A0953E5
+:100C1000776974636820746F204C61796572203045
+:100C20002D390A4553433A09537769746368207430
+:100C30006F204C6179657220302028616C74657278
+:100C40006E617465206B65792031290A47524156DF
+:100C5000453A0953776974636820746F204C617951
+:100C6000657220302028616C7465726E6174652035
+:100C70006B65792032290A50415553453A094A7526
+:100C80006D7020746F20426F6F746C6F6164657259
+:100C900020285265736574290A453A095072696EB5
+:100CA0007420454550524F4D2053657474696E67EA
+:100CB000730A4E3A094E4B524F20546F67676C656A
+:100CC0000A000A002575002E6E6B726F3A20000A2A
+:100CD000002575002E737761705F6261636B736CC2
+:100CE0006173685F6261636B73706163653A200072
+:100CF0000A002575002E737761705F6772617665F3
+:100D00005F6573633A20000A002575002E6E6F5FE1
+:100D10006775693A20000A002575002E73776170A7
+:100D20005F72616C745F726775693A20000A002512
+:100D300075002E737761705F6C616C745F6C6775A2
+:100D4000693A20000A002575002E636170736C6F8C
+:100D5000636B5F746F5F636F6E74726F6C3A2000C9
+:100D60000A002575002E737761705F636F6E747271
+:100D70006F6C5F636170736C6F636B3A20000A0085
+:100D800025303258006B65796D61705F636F6E66F8
+:100D900069672E7261773A20000A002575002E6D72
+:100DA0006F7573653A20000A002575002E6B657912
+:100DB000626F6172643A20000A002575002E6D6131
+:100DC000747269783A20000A002575002E656E61FC
+:100DD000626C653A20000A00253032580064656272
+:100DE00075675F636F6E6669672E7261773A200080
+:100DF0000A0025750064656661756C745F6C6179C5
+:100E000065723A20003F004E4B524F3A206F6666A3
+:100E10000A004E4B524F3A206F6E0A000A6D6F75F2
+:100E200073653A206F66660A000A6D6F7573653ADE
+:100E3000206F6E0A000A6B6579626F6172643A20F6
+:100E40006F66660A000A6B6579626F6172643A20A8
+:100E50006F6E0A000A6D61747269783A206F666677
+:100E60000A000A6D61747269783A206F6E0A000A8E
+:100E700064656275673A206F66660A000A64656297
+:100E800075673A206F6E0A000A0A4A756D70696EBE
+:100E90006720746F20626F6F746C6F616465722E6F
+:100EA0002E2E2000433E20006565636F6E666967E5
+:100EB0003A0A000011241FBECFEFDAE0DEBFCDBF3B
+:100EC00004B603FE24C08091620290916302A09157
+:100ED0006402B09165028730904BA740B04BB9F4E3
+:100EE00010926202109263021092640210926502E4
+:100EF00014BE84B7877F84BF88E10FB6F8948093CF
+:100F00006000109260000FBEE0E0F8E3099511E088
+:100F1000A0E0B1E0E6EAFCE502C005900D92AC333A
+:100F2000B107D9F712E0ACE3B1E001C01D92A236DF
+:100F3000B107E1F70E94D0160C94512E0C940000DA
+:100F4000FF93EF93E0913C01F0913D01309709F060
+:100F50000995EF91FF910895FC018591803011F082
+:100F6000EFDFFBCF0895FF27E0E230E247FF0CC040
+:100F7000419597FF09C0EDE2609570958095909539
+:100F8000611D711D811D911D27FF02C0219530E358
+:100F900050E2AA27660F771F881F991FAA1FA41760
+:100FA00010F0A41B63955A95A9F7AA3008F0A95F21
+:100FB000A05DAF93F395611571058105910541F72A
+:100FC000ED3211F4EF93F395F21718F43F93F39584
+:100FD000FBCF8F91B5DFFA95E1F70895E991F9918B
+:100FE0008591803021F0853219F0AADFF9CF08957C
+:100FF00020E0E89455915532C1F3503311F46894D0
+:1010000055915A3348F4505390F3220F022E220F79
+:10101000220F200D250FF4CF0EF42195899199917F
+:10102000533619F3533729F1533559F1BC01882749
+:101030009927E8945C3621F48991999168945591A7
+:10104000543639F446EF7EF077FF0DC08FEF9FEFF7
+:101050000AC055374AE039F0583540E121F05236A0
+:1010600042E009F00895FF93EF937DDFEF91FF9148
+:10107000B7CFFF93EF93FC0181918030B9F360DF2C
+:10108000FBCFFF93EF9368DFF1CFDF93CF93CDB723
+:10109000DEB72596A3DFCF91DF910895269A279A90
+:1010A000089581FF02C02E9A01C02E9882FF02C0CF
+:1010B0002F9A08952F980895089508958CE598E043
+:1010C000892B11F00E945C080C944E088DE598E085
+:1010D000892B11F00C945D080895CF93DF93EC01F8
+:1010E000462F50E04930510508F05CC0FA01EA5A39
+:1010F000FF4F0C94032E0E948A27827280933E0138
+:101100009A81992369F0882319F085E390E002C061
+:1011100089E290E00E94E726DF91CF910C94D627D8
+:10112000882319F085E390E002C089E290E00E94F4
+:101130003827F2CF8A818823A9F1DF91CF910C94CF
+:10114000D6118A81882371F1DF91CF910C943F10E1
+:101150008A81882339F1DF91CF910C9458108A81CC
+:10116000882301F1DF91CF910C9477108A81882335
+:10117000C9F0DF91CF910C9492108A81882391F06D
+:10118000DF91CF910C94AC108A81882359F0DF91C4
+:10119000CF910C94C7108A81882321F0DF91CF91E1
+:1011A0000C94CC11DF91CF91089581E0089581E0F6
+:1011B00008950C94D70808950F931F93CF93DF934E
+:1011C000EC0108811981C8010E946726B8010E94BC
+:1011D00077098C01BE010E94D908882309F47AC0DE
+:1011E0008A818823C9F180914A0181111EC004318E
+:1011F00080E5180789F50E94DB0881E080934A01A9
+:101200000E94B328909349018093480110924101B4
+:101210001092430110924201109245011092440134
+:10122000109247011092460155C08091480190915B
+:1012300049010E94BF28883C910570F480914101CA
+:10124000E82FF0E0EE0FFF1FEE5BFE4F11830083EF
+:101250008F5F809341013EC0043880E5180721F07C
+:1012600005381045A1F02AC08A81882321F0109208
+:101270003F0182E012C080913F01811106C086E2E9
+:101280000E94C21D86E20E948A1E82E014C08A81EA
+:10129000882331F01092400180E20E94D91E1AC0CA
+:1012A00080914001811106C087E20E94C21D87E241
+:1012B0000E948A1E80E20E94E01E0CC081E08093A2
+:1012C0003F0180934001CE01DF91CF911F910F919B
+:1012D0000C94D50880E0DF91CF911F910F91089574
+:1012E0000C945E080C94660880E090E0089591E10B
+:1012F000799FF001112496E6899FE00DF11D1124DC
+:10130000E60FF11DEE0FFF1FE25DFE4F85919491F8
+:101310000895880F991F84569040FC0185919491FF
+:101320000895880F991F845E9E4FFC0185919491CA
+:1013300008950F931F93CF93DF93EC01811520E362
+:10134000920740F5811530E2930708F0C4C08B3B4B
+:10135000910588F4883A910508F06BC0853A9105AB
+:1013600008F05CC08430910508F056C081309105CA
+:1013700009F4CCC1C8C18F3F910511F008F04CC0F1
+:10138000803F910508F0A4C0805E9109089708F499
+:1013900043C0B9C1C13080E5D80709F4A4C020F525
+:1013A000C0312FE4D20770F4C11530E4D30708F040
+:1013B00096C0C11581E3D80708F0A5C18E01112799
+:1013C000106CE5C1C115D04509F09DC10E943C21BA
+:1013D0003FEF84E39CE0315080409040E1F700C053
+:1013E00000000E940D29D3C1C11527E5D20758F48A
+:1013F000C03131E5D30708F022C1C43180E5D807F8
+:1014000008F47BC080C1CE0190578115904108F04F
+:101410007AC18E011F7075C18E01B9C1853A9105DF
+:1014200009F477C1863A910509F476C103E810E41E
+:10143000AEC1883A910509F472C1893A910509F45F
+:1014400071C18A3A910509F470C18B3A910509F48A
+:101450006FC18C3A910509F46EC18D3A910509F47A
+:101460006DC1803B910509F46CC18E3A910509F478
+:101470006BC18F3A910509F46AC1813B910509F46A
+:1014800069C1823B910509F468C1833B910509F468
+:1014900067C1843B910509F466C1853B910509F458
+:1014A00065C1863B910509F464C1873B910509F448
+:1014B00063C1883B910509F462C1893B910509F438
+:1014C00061C18A3B910509F060C10AE216E45FC17F
+:1014D0008C0110655CC19F700E94910959C18E01F9
+:1014E0001F70106A54C186EC92E00E94AC07809194
+:1014F00009028160809309024AC10E94BF2A8111BA
+:1015000002C00E94A52A0E94DC2A90E09093620209
+:1015100080936102C23020E5D20721F480916102FC
+:10152000816086C0C43030E5D30721F48091610228
+:1015300082607EC0C63080E5D80721F480916102C8
+:10154000846076C0C83090E5D90719F480916102B3
+:1015500027C0CA3020E5D20721F480916102806162
+:1015600067C0CC3030E5D30721F4809161028062FE
+:101570005FC0CE3080E5D80721F48091610280649D
+:1015800057C0C03190E5D90721F48091610280688D
+:101590004FC0C23120E5D20729F4809161028460F6
+:1015A000886046C0C33030E5D30721F480916102E2
+:1015B0008E7F3EC0C53080E5D80721F4809161025E
+:1015C0008D7F36C0C73090E5D90721F48091610244
+:1015D0008B7F2EC0C93020E5D20719F480916102BB
+:1015E00026C0CB3030E5D30721F4809161028F7E95
+:1015F0001FC0CD3080E5D80721F4809161028F7D36
+:1016000017C0CF3090E5D90721F4809161028F7B1C
+:101610000FC0C13120E5D20721F4809161028F779C
+:1016200007C0C331D04531F4809161028B7F877F41
+:1016300080936102809161020E94E02AA8C08D2FF0
+:1016400099278F70992781309105E9F48E010370F5
+:1016500011279C0102C0220F331F0A95E2F789016E
+:101660001C68CE01E4E0880F991FEA95E1F788270E
+:101670009370082B192BF3E0CC0FDD1FFA95E1F7DF
+:10168000C076DD272CC08230910529F41C2F00275D
+:10169000016F106A7CC08330910561F4CE018370C4
+:1016A000992701E010E002C0000F111F8A95E2F7B0
+:1016B0001C680EC084309105A9F4CE01837099276F
+:1016C00001E010E002C0000F111F8A95E2F71A68CE
+:1016D00063E0CC0FDD1F6A95E1F7C07ED7700C2B5D
+:1016E0001D2B55C08530910529F41C2F0027046F50
+:1016F000106A4DC0069709F04AC0CF71DD271C2F34
+:101700000027106244C000E010E041C001E010E09A
+:101710003EC001E810E43BC002E810E438C002EE2D
+:1017200014E435C009EE14E432C00AEE14E42FC00C
+:1017300005EB14E42CC006EB14E429C007EB14E419
+:1017400026C00CEC14E423C00DEC14E420C003E824
+:1017500015E41DC00AE815E41AC002E915E417C033
+:1017600004E915E414C001E216E411C003E216E432
+:101770000EC004E216E40BC005E216E408C006E25F
+:1017800016E405C007E216E402C000E014E4C80154
+:10179000DF91CF911F910F91089591E1799FF00111
+:1017A000112496E6899FE00DF11D1124E60FF11D2D
+:1017B000EE0FFF1FE25DFE4F85919491803E9105F3
+:1017C000E0F4803C910558F58133910509F46FC030
+:1017D00048F48932910509F463C08A32910509F40D
+:1017E0006DC072C089339105E9F082389105D1F05E
+:1017F0008533910509F44DC067C0833E910581F1A1
+:1018000038F4803E9105B9F0823E9105D9F05CC074
+:10181000863E910561F1873E9105A1F155C00E9478
+:10182000890908952091610220FD02C021FF4CC06A
+:1018300080EE90E049C08091610280FFF9CF89E39A
+:1018400090E042C08091610282FF0EC080916102EF
+:1018500084FF03C080E090E037C083EE90E034C0A6
+:101860008091610282FFF2CF82EE90E02DC08091E4
+:10187000610283FF0BC08091610284FDEBCF87EE94
+:1018800090E022C08091610283FFF5CF86EE90E068
+:101890001BC08091610285FF07C089E290E014C0FF
+:1018A0008091610285FFF9CF85E390E00DC08091C2
+:1018B000610286FF07C08AE290E006C08091610263
+:1018C00086FFF9CF81E390E00E94990908950C9476
+:1018D0005108E82FF0E0E05FFE4F8081E82FEF70C5
+:1018E000F0E0282F22952F7081E090E0022E01C0B9
+:1018F000880F0A94EAF780A308950F931F93CF935C
+:10190000DF9385B7806885BF85B7806885BFC0E1F4
+:10191000D0E001E010E0FE01E05FFE4F8081E82FA3
+:10192000EF70F0E021A182958F70A80102C0440FF2
+:10193000551F8A95E2F7242B21A38C2F0E94690C56
+:10194000219748F785E090E041E050E0FC01EF5D31
+:10195000FE4F2081E22FEF70F0E062A122952F7000
+:10196000DA0102C0AA0FBB1F2A95E2F76A2B62A315
+:10197000019760F7DF91CF911F910F910C9470093F
+:10198000EF92FF920F931F93CF93DF93CCE5D1E0BB
+:1019900080E1F82E01E010E095E0E92E8F2D0E9405
+:1019A000690C25E030E080E0F901EF5DFE4F9081A9
+:1019B000E92FEF70F0E040A150E092959F7002C0D7
+:1019C000559547959A95E2F740FD07C0A801022E6C
+:1019D00001C0440F0A94EAF7842B2150310920F703
+:1019E0009A91981719F08883E09200018F2D0E9438
+:1019F000690CFA948FEFF812D1CF2091000127FDE6
+:101A00002CC08091090280FF10C0822F992787FD8A
+:101A100090959F932F938FE093E09F938F930E94D5
+:101A200045080F900F900F900F908091000181500A
+:101A30008093000187FD07C08FE99FE00197F1F7D0
+:101A400000C000000AC0ADE6B1E0ECE5F1E0829133
+:101A50008E9391E0EB34F907D1F70E94720981E08F
+:101A6000DF91CF911F910F91FF90EF9008958F928A
+:101A70009F92AF92BF92CF92DF92EF92FF920F931D
+:101A80001F9391E001C0990F8A95EAF7B92FEDE60F
+:101A9000F1E040E150E060E070E0CB0101E010E0F7
+:101AA00020E030E0A291AB2371F048015901042EEF
+:101AB00004C0880C991CAA1CBB1C0A94D2F7682984
+:101AC00079298A299B294150510960F71F910F916B
+:101AD000FF90EF90DF90CF90BF90AF909F908F904E
+:101AE00008950F931F93CF93DF938091090280FF96
+:101AF00004C080EF92E00E94AC07C0E0D0E008EDA7
+:101B000012E08091090280FF14C08C2F0E94370DD3
+:101B1000CB010E9428289F938F93DF93CF931F932D
+:101B20000F930E9445080F900F900F900F900F9009
+:101B30000F902196C630D10521F7DF91CF911F91EB
+:101B40000F910895CF93DF93C5E0D0E08C2F0E94D2
+:101B5000370DCB010E940A28D80FC150B8F78D2F3E
+:101B6000DF91CF9108953EB1242F209523233EB1DC
+:101B7000342B4FB7F894FC01680F791FE617F7076D
+:101B800089F0819198E03EB9000000C087FF2EB92E
+:101B9000880F000000C000C000C02EB900C09A9598
+:101BA00091F7ECCF4FBF08952DB1242B2DB99B0198
+:101BB000220F331F260F371FB9010E94B30D87EC88
+:101BC00090E00197F1F700C00000089544E00C9404
+:101BD000D40DCF92DF92EF92FF920F931F93CF938A
+:101BE000DF937C01E42FF0E0EE5DF94F4491EFEFDD
+:101BF000F0E0E61BF109EE5DF94FE491E09509F4A0
+:101C000098C0042F10E08FEF90E08E1B9109809F09
+:101C1000B001819F700D909F700D1124E72FF72F59
+:101C2000CCE3D0E0C701BE010E94DB2DDC016230B5
+:101C3000710509F447C0D8F461157105A1F161304F
+:101C4000710509F07AC00E1B1109CE018A1B9B0B8E
+:101C5000DC010A9FC0010B9F900D1A9F900D11246B
+:101C6000BE010E94DB2DCE2EC60ED42E67C064307E
+:101C7000710509F44BC0B8F16530710509F05DC01C
+:101C80000E1B1109BE01681B790B069FC001079F3F
+:101C9000900D169F900D1124BE010E94DB2DDE2EAB
+:101CA000FE2FF60F44C00E1B11090E9DC0010F9DA3
+:101CB000900D1E9D900D1124BE010E94DB2DDE2E85
+:101CC000D60E35C00E1B11090A9FC0010B9F900D47
+:101CD0001A9F900D1124BE010E94DB2DD42ECE2E12
+:101CE000FE2FF60F2BC00E1B1109BE01681B790BCE
+:101CF000069FC001079F900D169F900D1124BE01F5
+:101D00000E94DB2DDE2ED60ECE2E0FC00E1B11092B
+:101D10000A9FC0010B9F900D1A9F900D1124BE01C8
+:101D20000E94DB2DCE2EC60EDE2EF42F07C0C42E51
+:101D300005C0F42FD42EC42E01C0F0E0D9011196B5
+:101D4000CC921197DC921296FC93DF91CF911F9168
+:101D50000F91FF90EF90DF90CF90089587E090E093
+:101D60000C94112EAB01BC0187E090E00C942F2E57
+:101D70008091090280FF08C083EF94E09F938F93C6
+:101D80000E9445080F900F9083E08093100280918D
+:101D90001102807884668F77809311028CEC809397
+:101DA00012028093130260911002709111028091CF
+:101DB0001202909113020C94B20E8091090280FFDE
+:101DC00008C08CED94E09F938F930E9445080F907C
+:101DD0000F908091090280FF0FC0809110028170E6
+:101DE0001F928F938FEB94E09F938F930E944508EF
+:101DF0000F900F900F900F908091090280FF10C0FC
+:101E00008091100286958F731F928F9384EA94E0DD
+:101E10009F938F930E9445080F900F900F900F9003
+:101E20008091090280FF19C090911002991F992793
+:101E3000991F20911102822F880F892B27FB2227BF
+:101E400020F92F938F938AE894E09F938F930E94B9
+:101E500045080F900F900F900F908091090280FF1E
+:101E60000EC0809112021F928F9380E794E09F939F
+:101E70008F930E9445080F900F900F900F908091C4
+:101E8000090280FF0EC0809113021F928F9386E596
+:101E900094E09F938F930E9445080F900F900F90AE
+:101EA0000F9008958091100280FF06C064E170E0F9
+:101EB00088E192E00C94E60DEAE1F2E0DF0111978F
+:101EC0001C92DF0112971C921082339682E0E63555
+:101ED000F807A1F7EBCFEAE1F2E0DF0111978C936D
+:101EE000DF0112976C934083339692E0E635F90751
+:101EF000A1F70C94520FCF92DF92EF92FF920F93C3
+:101F00001F93CF93DF9300D01F92CDB7DEB7F82E8B
+:101F1000C92ED62EE42E00911002109111022091AC
+:101F200012023091130200931402109315022093B1
+:101F30001602309317028091100280FF1EC09E018E
+:101F40002F5F3F4F8F2D0E94E90D80911402F0FA10
+:101F500087F980931402F6942091150220782F2996
+:101F6000C0FA27F920931502D0921602E0921702C8
+:101F70004B8169818A810E946B0F0F900F900F90A7
+:101F8000DF91CF911F910F91FF90EF90DF90CF9055
+:101F900008950F931F93CF93DF93C82F192F062F08
+:101FA000D42F8091100280FF65C0982F9E779230C9
+:101FB00029F48C2F912F0E947B0F1AC0282F269571
+:101FC0002F739EE3920F9F73943018F4D0911302F5
+:101FD0000FC0265C2F73293058F4881F8827881F6C
+:101FE00010911102C12FCC0FC82B17FB112710F92C
+:101FF00080911002C0FB87F980931002C6958091F2
+:10200000110280788C2B10FB87F9809311020093CA
+:102010001202D0931302609110027091110280910C
+:102020001202909113020E94B20E809113021F922D
+:102030008F93809112021F928F9390911002991F9B
+:102040009927991F20911102822F880F892B27FB36
+:10205000222720F92F938F9382E593E09F938F930C
+:102060000E9445088DB79EB708960FB6F8949EBF9C
+:102070000FBE8DBFDF91CF911F910F9108952091D9
+:102080001002221F2227221F30911102432F440FDA
+:10209000842F822B37FB992790F90A9668E671E026
+:1020A0000E94EF2D40911302609112020C94C90F0F
+:1020B00020911002221F2227221F30911102432F4C
+:1020C000440F842F822B37FB992790F98A30910592
+:1020D0001CF4825A9E4F01C00A9768E671E00E9484
+:1020E000EF2D40911302609112020C94C90F609180
+:1020F0001202862F90E08F3E910514F46F5E01C0AE
+:102100006FEF80911002881F8827881F909111021D
+:10211000292F220F97FB992790F940911302822BC8
+:102120000C94C90F60911202862F90E0419714F031
+:10213000615101C060E080911002881F8827881FCC
+:1021400090911102292F220F97FB992790F9409126
+:102150001302822B0C94C90F40911302842F90E03C
+:102160008F3E910514F44F5E01C04FEF8091100235
+:10217000881F8827881F90911102292F220F97FB13
+:10218000992790F960911202822B0C94C90F40910B
+:102190001302842F90E0419714F0415101C040E0B8
+:1021A00080911002881F8827881F90911102292F83
+:1021B000220F97FB992790F960911202822B0C94C1
+:1021C000C90F80917E0181110FC081E080937E0153
+:1021D00089E0809391008FB7F89493E090939900F1
+:1021E00090ED909398008FBF089580917100826068
+:1021F000809371008091090280FF08C081E493E020
+:102200009F938F930E9445080F900F90089580919F
+:1022100071008D7F809371008091090280FF08C05A
+:102220008FE293E09F938F930E9445080F900F9049
+:1022300008959091100290FF4DC09178811102C0D5
+:10224000926003C0883120F09E629093100205C016
+:102250008F73880F892B8093100260911002709108
+:10226000110280911202909113020E94B20E80918D
+:10227000100286958F731F928F9385EA93E09F9348
+:102280008F930E94450880911002982F9E770F909F
+:102290000F900F900F90923019F40E94071107C011
+:1022A0008695825C8F73863110F40E94F5108091C0
+:1022B0001002881F8827881F90911102292F220F52
+:1022C00097FB992790F94091130260911202822B9B
+:1022D0000C94C90F089580910902816080930902CE
+:1022E0008FE394E09F938F930E94450881E0809351
+:1022F0007F01809109020F900F9080FF08C089E252
+:1023000094E09F938F930E9445080F900F900E9436
+:10231000BF2A811110C08091090280FF08C081E0AE
+:1023200094E09F938F930E9445080F900F900E9416
+:10233000A52A0E94B80E0E94AE0E60931002709300
+:10234000110280931202909313026E77C1F4809170
+:10235000090280FF08C088EB93E09F938F930E944F
+:1023600045080F900F900E94B80E0E94AE0E609329
+:1023700010027093110280931202909313020E9434
+:10238000DD0E0E94E1108091100280FF04C086954E
+:102390008F730C94191108958091100286958F7394
+:1023A0008F5F883108F081E00C9419118091100240
+:1023B000982F909590FB80F9809310026091100205
+:1023C0007091110280911202909113020E94B20E3C
+:1023D0008091100281701F928F9387E793E09F9303
+:1023E0008F930E944508809110020F900F900F90DC
+:1023F0000F9080FF04C086958F730C9419110E9472
+:1024000007112FEF80E792E0215080409040E1F7E4
+:1024100000C000000C94520FCF93C82F80917C0114
+:1024200090917D010E94BF28EC2FF0E0E25EFA4F10
+:10243000E491F0E08E179F0710F10E94B32890936B
+:102440007D0180937C01E0917B01F0E0EE5DFA4F2D
+:10245000449180911002881F8827881F9091110253
+:10246000292F220F97FB992790F960911202822B56
+:102470000E947B0F80917B018F5F80937B01CF91C6
+:102480000895CF93C82F8091790190917A010E948D
+:10249000BF28EC2FF0E0E55EFA4FE491F0E08E17F4
+:1024A0009F07E8F00E94B32890937A018093790106
+:1024B000409113026091120280917701909178010E
+:1024C0000E947B0F8091770190917801019668E6D8
+:1024D00071E00E94DB2D9093780180937701CF917A
+:1024E0000895DF92EF92FF920F931F93CF93DF93A4
+:1024F000D82E80917501909176010E94BF28ED2D14
+:10250000E695F0E0E55EFA4FE491F0E08E179F0764
+:10251000E8F10E94B328909376018093750108E159
+:1025200012E0C0E0D0E088E6E82EFF24F39480912A
+:102530007301909174018C0F9D1FB7010E94DB2DD8
+:10254000980140911302609112020E94E90D629677
+:102550000D5F1F4FC83681E0D80749F70E94520F20
+:102560002091730130917401D0FE0AC0C901019617
+:10257000BE010E94DB2D909374018093730106C00D
+:10258000215031093093740120937301DF91CF9171
+:102590001F910F91FF90EF90DF9008958F929F927F
+:1025A000AF92BF92CF92DF92EF92FF920F931F9361
+:1025B000CF93DF93C82F80FD03C09924939402C06A
+:1025C00099249A9480917101909172010E94BF2880
+:1025D000C695EC2FF0E0E85EFA4FE491F0E08E173C
+:1025E0009F0708F469C00E94B328909372018093FA
+:1025F000710128E1E22E22E0F22E0AE112E0C0E0B1
+:10260000D0E037E0A32EB12CF80131971082F7010A
+:102610001082F801108297E0C92ED12C812C809174
+:102620007001880D87FD8C5E992787FD9095C817EE
+:10263000D907E9F4209113022C9DC0012D9D900D26
+:102640001124B5010E94EF2D462F80911002881FA2
+:102650008827881F90911102592F550F97FB9927B2
+:1026600090F9970160911202852B0E94E90D890C67
+:10267000F1E0CF1AD108C114D10489F6219683E084
+:10268000E80EF11C0D5F1F4FC431D10509F0BCCF1E
+:102690000E94520F8091700191E0991206C0811141
+:1026A00002C083E107C0815005C090E00196BE01E1
+:1026B0000E94EF2D80937001DF91CF911F910F91B8
+:1026C000FF90EF90DF90CF90BF90AF909F908F9052
+:1026D00008959F92AF92BF92CF92DF92EF92FF92B6
+:1026E0000F931F93CF93DF93CDB7DEB7EC970FB661
+:1026F000F894DEBF0FBECDBF182F80916E01909170
+:102700006F010E94BF28E12FF0E0EB5EFA4FE491E9
+:10271000F0E08E179F0708F492C00E94B3289093B0
+:102720006F0180936E018E010F5F1F4F5E0183E08A
+:10273000A80EB11CE12CF12C6801F5013197108233
+:10274000F8011082F5011082912C90910101809185
+:102750006D01999E800D112487FD04C084311CF009
+:1027600083E101C080E0992787FD9095E816F9067E
+:10277000A1F480911002881F8827881F9091110270
+:10278000592F550F97FB992790F998014091130203
+:1027900060911202852B0E94E90D9394F7E09F123D
+:1027A000D4CF8FEFE81AF80A0D5F1F4FE3E0AE0EAB
+:1027B000B11CF4E1EF16F10409F0BFCF2AE132E0D9
+:1027C00009E010E054E1E52EF12CC801B7010E94A8
+:1027D000EF2DD9011197FC01EE0FFF1FE80FF91F34
+:1027E000EC0DFD1D81818C93D901129780818C9312
+:1027F0008281F90180830F5F1F4F2D5F3F4F0D31A5
+:10280000110519F70E94520F9091010180916D01FD
+:10281000913049F48A3F2CF489EF80936D018FEF5A
+:1028200008C081500AC08B313CF08AE180936D0171
+:1028300081E08093010103C08F5F80936D01EC966E
+:102840000FB6F894DEBF0FBECDBFDF91CF911F91C1
+:102850000F91FF90EF90DF90CF90BF90AF909F903F
+:1028600008951F920F920FB60F9211242F933F934A
+:102870004F935F936F937F938F939F93AF93BF9388
+:10288000EF93FF938091100286958F739EE3980FCC
+:102890009F73943020F482500E940C1223C09AE35C
+:1028A000980F9F73933020F486500E9441121AC0F3
+:1028B00097E3980F9F73963020F489500E9471120D
+:1028C00011C091E3980F9F73963020F48F500E94AF
+:1028D000CE1208C09BE2980F9F73933018F4855175
+:1028E0000E946913FF91EF91BF91AF919F918F91DA
+:1028F0007F916F915F914F913F912F910F900FBEFC
+:102900000F901F90189580919301089508959FB797
+:10291000F894109282019FBF90915802943009F070
+:1029200058C09091E9009F702091EC0020FF02C0F8
+:1029300020E801C020E0292B93E09093E9009091DA
+:10294000EB0090FF43C09091EE0097FF3FC0909145
+:102950008001992321F09091E80095FF37C01092F3
+:10296000800196E03091E80035FD15C030915802A5
+:10297000343061F53091EB0035FD28C0915021F4E1
+:1029800081E08093800122C0EFE9FFE03197F1F709
+:1029900000C00000E7CF8093F1008091E80085FD42
+:1029A0000AC08091E80080FFFCCF8091E8008E771C
+:1029B0008093E80006C08FB7F89491E0909382016D
+:1029C0008FBF2F702093E90080E008952F7020932F
+:1029D000E9008FEF0895CF93DF9300D01F92CDB71A
+:1029E000DEB720915802243021F523E029839B8310
+:1029F0008A8382E08093E9008FEF9091E800815014
+:102A000095FD06C095ED9A95F1F700008111F5CF7F
+:102A10008091E80085FF0DC040E050E063E070E089
+:102A2000CE0101960E9483178091E8008E778093F3
+:102A3000E8000F900F900F90DF91CF910895CF9302
+:102A4000DF9300D01F92CDB7DEB72091580224301B
+:102A500019F522E029839B838A832093E9008FEF75
+:102A60009091E800815095FD06C095ED9A95F1F79B
+:102A700000008111F5CF8091E80085FF0DC040E096
+:102A800050E063E070E0CE0101960E9483178091D0
+:102A9000E8008E778093E8000F900F900F90DF9101
+:102AA000CF910895CF93DF93EC0180915802843049
+:102AB00009F046C090910C019923D9F090910D0135
+:102AC0009923B9F08093E9008FEF9091E80081504D
+:102AD00095FD06C095E19A95F1F700008111F5CFBB
+:102AE0008091E80085FF2CC040E050E060E170E09C
+:102AF00017C081E08093E9008FEF9091E80081504A
+:102B000095FD06C095ED9A95F1F700008111F5CF7E
+:102B10008091E80085FF14C040E050E068E070E07C
+:102B2000CE010E9483178091E8008E778093E800A1
+:102B300080E1FE01A3E8B1E001900D928A95E1F7F2
+:102B4000DF91CF91089587E497E00E94AC078091D0
+:102B50005702811109C00E9415190E9472198091B3
+:102B6000E20084608093E200089583E497E00E948D
+:102B7000AC071092570208958FE397E00C94AC07CE
+:102B80008BE397E00C94AC0787E397E00E94AC07D7
+:102B90000C947B28809181018F5F8093810162E397
+:102BA0000E94CF2D911135C0109281018091820138
+:102BB000882379F180915802843049F58091E900A9
+:102BC0008F709091EC0090FF02C090E801C090E0FF
+:102BD000982B83E08093E9008091EB0080FF14C084
+:102BE0008091EE0087FF10C08091E80085FF03C050
+:102BF0001092F100F9CF8091E80080FF05C080912C
+:102C0000E8008E778093E8009F709093E90010921F
+:102C10008201089542E061EC81E00E948F1842E059
+:102C200061EC82E00E948F1842E261EC83E00E9436
+:102C30008F1842E161EC84E00C948F1880915A0265
+:102C4000833009F455C030F4813071F0823009F4DA
+:102C50008EC008958A3009F47AC08B3009F460C0C0
+:102C6000893009F09CC020C080915902813A09F056
+:102C700096C08091E800877F8093E80080915D0294
+:102C800090915E02892B21F060E080E090E003C02B
+:102C900060E183E891E070E00E94CC178091E80049
+:102CA0008B778093E800089580915902813209F072
+:102CB00076C080915D0290915E02009719F00397B3
+:102CC00009F06DC08091E800877F8093E8008091D3
+:102CD000E80082FD05C0809158028111F8CF5FC0E5
+:102CE0008091F100809393018091E8008B7753C02D
+:102CF00080915902813A09F052C080915D02909111
+:102D00005E02892B09F04BC08091E800877F809399
+:102D1000E8008091E80080FFFCCF80910C0136C074
+:102D2000809159028132D9F580915D0290915E02C5
+:102D3000892BA9F58091E800877F8093E8000E94A5
+:102D4000C41880915B0280930C010C943C2180910B
+:102D50005902813221F58091E800877F8093E80055
+:102D60000E94C41880915C02809394010895809120
+:102D70005902813AA1F48091E800877F8093E800AE
+:102D80008091E80080FFFCCF809194018093F10056
+:102D90008091E8008E778093E8000C94C418089521
+:102DA00084B7877F84BF88E10FB6F8948093600072
+:102DB000109260000FBE80E8809361001092610065
+:102DC0000E948C1C0E9415190E9472198091E200C9
+:102DD00084608093E20087E894E10E94052878945B
+:102DE0000E94EC1B0E948E1C82E091E00E94091C54
+:102DF00086E297E00E94AC0780915802853089F402
+:102E000082E297E00E94AC070E944228809156021D
+:102E1000882391F30E946D28882371F30E946D1717
+:102E2000EBCF0E94B41CE8CF292F33272330310584
+:102E3000A9F06CF42130310509F442C0223031058B
+:102E400009F043C084E790E023E837E042C0213234
+:102E50003105C9F02232310519F137C09927813087
+:102E6000910541F08230910541F0892B71F5EFE732
+:102E7000F7E005C0EDE6F7E002C0EBE4F7E084918F
+:102E800090E09F0126C0643000F5E62FF0E0EE0FE1
+:102E9000FF1FED5CFE4F2081318189E090E019C079
+:102EA000643098F4E62FF0E0DF01AA0FBB1FA55DA8
+:102EB000BE4F2D913C91E95DFE4F808190E009C0AD
+:102EC00082E190E027EF37E004C080E090E020E06E
+:102ED00030E0FA0131832083089580E189BD82E1E9
+:102EE00089BD09B400FEFDCF8091D8008F7D80930D
+:102EF000D8008091E00082608093E0008091E00043
+:102F000081FDFCCF0895CF92DF92EF92FF920F9355
+:102F10001F93CF93DF937C018B01EA010E94E51898
+:102F2000811131C0209731F088819981081B190BDC
+:102F3000E80EF91EC12CD12C0115110519F1809153
+:102F4000E80085FD14C08091E8008E778093E8004A
+:102F5000209741F0888199818C0D9D1D99838883EC
+:102F600085E011C00E94E518882331F30CC0F701F9
+:102F700081917F018093F10001501109FFEFCF1A79
+:102F8000DF0ADACF80E0DF91CF911F910F91FF90A0
+:102F9000EF90DF90CF90089520915F023091600212
+:102FA0002617370748F06115710539F42091E800BC
+:102FB0002E772093E80001C0B901FC0120E06115E3
+:102FC0007105B9F180915802882309F440C0853019
+:102FD00009F43FC08091E80083FD3DC08091E80086
+:102FE00082FF06C08091E80082FF26C080E008953D
+:102FF0008091E80080FFE3CF2091F3008091F20000
+:1030000090E0922B6115710551F08830910538F4EC
+:1030100021912093F100615071090196F3CF21E0D5
+:10302000089709F020E08091E8008E778093E8000F
+:10303000C6CF2111C7CFD6CF80915802882339F04F
+:10304000853039F08091E80083FFCCCF04C082E066
+:10305000089583E0089581E0089520915F02309102
+:1030600060022617370748F06115710539F4209181
+:10307000E8002E772093E80001C0B901FC0120E0B0
+:1030800061157105C1F180915802882309F441C08E
+:10309000853009F440C08091E80083FD3EC08091F6
+:1030A000E80082FF06C08091E80082FF27C080E030
+:1030B00008958091E80080FFE3CF2091F300809194
+:1030C000F20090E0922B6115710559F0883091055E
+:1030D00040F424912093F1003196615071090196DA
+:1030E000F2CF21E0089709F020E08091E8008E7788
+:1030F0008093E800C5CF2111C6CFD5CF809158026B
+:10310000882339F0853039F08091E80083FFCBCFF8
+:1031100004C082E0089583E0089581E00895982F27
+:10312000973058F59093E900981739F07091EC00BA
+:103130002091ED005091F00003C0242F762F50E035
+:1031400021FF19C03091EB003E7F3093EB003091AE
+:10315000ED003D7F3093ED003091EB003160309316
+:10316000EB007093EC002093ED005093F000209161
+:10317000EE0027FF07C09F5FD3CF8F708093E900D9
+:1031800081E0089580E008958091590287FD05C08F
+:103190008091E80080FF0EC012C08091E80082FD9F
+:1031A00005C0809158028111F8CF08958091E80000
+:1031B0008B7708C0809158028111EACF08958091E1
+:1031C000E8008E778093E80008958091E400909164
+:1031D000E50045E62091EC0020FF21C02091E800A9
+:1031E00020FD21C020915802222389F0253089F04A
+:1031F0002091EB0025FD0FC02091E4003091E50007
+:103200002817390739F3415041F0C901E3CF82E073
+:10321000089583E0089581E0089584E00895209161
+:10322000E80022FFDFCF80E008950E9483190E940A
+:103230008B19E0EEF0E0808181608083E8EDF0E0C2
+:1032400080818F77808319BCA7EDB0E08C918E7F51
+:103250008C9380818F7E80831092570208950F9304
+:103260001F93CF93DF930E9483190E948B19C8ED9F
+:10327000D0E088818F77888388818068888388817F
+:103280008F7D888319BC10925802109254021092BC
+:1032900056021092550200EE10E0F80180818B7FFB
+:1032A000808388818160888342E060E080E00E94C2
+:1032B0008F18E1EEF0E080818E7F8083E2EEF0E017
+:1032C000808181608083808188608083F801808133
+:1032D0008E7F8083888180618883DF91CF911F9169
+:1032E0000F910895E8EDF0E080818F7E8083E7ED17
+:1032F000F0E080818160808384E082BF81E0809300
+:1033000057020C942F19E8EDF0E080818E7F8083C6
+:103310001092E20008951092DA001092E1000895F0
+:103320001F920F920FB60F9211242F933F934F933A
+:103330005F936F937F938F939F93AF93BF93EF931D
+:10334000FF938091E10082FF0BC08091E20082FF39
+:1033500007C08091E1008B7F8093E1000E94CA1535
+:103360008091DA0080FF1FC08091D80080FF1BC0D1
+:103370008091DA008E7F8093DA008091D90080FFFF
+:103380000DC080E189BD82E189BD09B400FEFDCF99
+:1033900081E0809358020E94A31505C019BC1092C9
+:1033A00058020E94B5158091E10080FF19C08091FC
+:1033B000E20080FF15C08091E2008E7F8093E200E2
+:1033C0008091E20080618093E2008091D800806269
+:1033D0008093D80019BC85E0809358020E94C015E4
+:1033E0008091E10084FF30C08091E20084FF2CC016
+:1033F00080E189BD82E189BD09B400FEFDCF8091E5
+:10340000D8008F7D8093D8008091E1008F7E8093DB
+:10341000E1008091E2008F7E8093E2008091E200E3
+:1034200081608093E20080915402882311F084E04F
+:1034300007C08091E30087FF02C083E001C081E004
+:10344000809358020E94C4158091E10083FF29C037
+:103450008091E20083FF25C08091E100877F809307
+:10346000E10082E080935802109254028091E100C2
+:103470008E7F8093E1008091E2008E7F8093E20056
+:103480008091E20080618093E20042E060E080E0B1
+:103490000E948F188091F00088608093F0000E9455
+:1034A000BC15FF91EF91BF91AF919F918F917F914B
+:1034B0006F915F914F913F912F910F900FBE0F90A1
+:1034C0001F9018951F920F920FB60F9211242F93F1
+:1034D0003F934F935F936F937F938F939F93AF939C
+:1034E000BF93CF93EF93FF93C091E900CF7080918A
+:1034F000EC001092E9008091F000877F8093F0004B
+:1035000078940E949E1A1092E9008091F0008860E1
+:103510008093F000C093E900FF91EF91CF91BF91AC
+:10352000AF919F918F917F916F915F914F913F915B
+:103530002F910F900FBE0F901F9018951F93CF9350
+:10354000DF93CDB7DEB7AA970FB6F894DEBF0FBEF4
+:10355000CDBFE9E5F2E08091F100819322E0E13610
+:10356000F207C9F70E941E168091E80083FF1CC174
+:103570002091590230915A02832F90E08A309105B0
+:1035800008F012C1FC01E15AFF4F0C94032E2038C1
+:1035900081F0223809F008C180915D028F7080931C
+:1035A000E9008091EB0085FB882780F91092E90003
+:1035B00006C08091550290915602911182609091BF
+:1035C000E800977F9093E8008093F1001092F1005B
+:1035D000C5C0822F8D7F09F0E7C0222319F0223069
+:1035E00061F0E2C080915B02813009F0DDC03330D0
+:1035F00009F080E08093560228C080915B0281111F
+:1036000024C020915D022F7009F4CEC02093E90000
+:103610008091EB0080FF19C08091EB00333011F4F2
+:10362000806211C080618093EB0081E090E0022E07
+:1036300001C0880F0A94EAF78093EA001092EA002A
+:103640008091EB0088608093EB001092E9008091FC
+:10365000E800877F86C02111A7C010915B021F7709
+:103660008091E3008078812B8093E3008091E800D3
+:10367000877F8093E8000E94C4188091E80080FF53
+:10368000FCCF8091E30080688093E300112311F068
+:1036900083E001C082E08093580286C02058223027
+:1036A00008F082C080915B0290915C028C3D23E027
+:1036B000920779F583E08A838AE289834FB7F89489
+:1036C000DE01139620E03EE051E2E32FF0E050935C
+:1036D0005700E49120FF03C0E295EF703F5FEF7069
+:1036E0008E2F90E0EA3010F0C79601C0C0968D93FF
+:1036F0009D932F5F243149F74FBF8091E800877F6A
+:103700008093E8006AE270E0CE0101960E94CC1737
+:1037100014C0AE014F5F5F4F60915D020E941417AD
+:10372000009709F441C02091E800277F2093E8002A
+:10373000BC0189819A810E942D188091E8008B77C5
+:103740008093E80031C0203879F58091E800877FC8
+:103750008093E800809154028093F1008091E8000A
+:103760008E778093E8000E94C4181EC021111CC0EF
+:1037700090915B029230C0F48091E800877F809343
+:10378000E800909354020E94C41880915402811161
+:1037900004C08091E30087FF02C084E001C081E0A3
+:1037A000809358020E940A168091E80083FF0AC0A5
+:1037B0008091E800877F8093E8008091EB00806231
+:1037C0008093EB00AA960FB6F894DEBF0FBECDBF74
+:1037D000DF91CF911F910895CF9380915802882354
+:1037E000B1F08091E9008F709091EC0090FF02C0E1
+:1037F00090E801C090E0C92FC82B1092E900809199
+:10380000E80083FD0E949E1ACF70C093E900CF911B
+:10381000089590939A01809399010895E0919901F8
+:10382000F0919A01309721F00190F081E02D0994F8
+:1038300080E00895FF920F931F93CF93DF938C0145
+:10384000E0919901F0919A01309799F10280F3810A
+:10385000E02D09958091090282FF2BC080FF04C0F2
+:1038600080EE98E00E94AC07E80180E1F82E0AEDB6
+:1038700018E08091090280FF0BC088811F928F930E
+:103880001F930F930E9445080F900F900F900F9079
+:10389000FA942196F110EDCF8091090280FF09C0C2
+:1038A00088ED98E0DF91CF911F910F91FF900C94DC
+:1038B000AC07DF91CF911F910F91FF900895209158
+:1038C0009701309198018217930771F090939801B6
+:1038D00080939701E0919901F0919A01309721F03E
+:1038E0000680F781E02D099408952091950130918B
+:1038F00096018217930771F090939601809395013A
+:10390000E0919901F0919A01309721F00084F185BE
+:10391000E02D0994089508950C948B1C0E94AA2808
+:103920000E947D0C0E9472290C946B11CF93DF933F
+:103930001F92CDB7DEB79091090292FF10C090FFA1
+:103940000EC01F928F9322EF38E03F932F9389830D
+:103950000E9445080F900F900F900F9089810F9053
+:10396000DF91CF910C94670C3F924F925F926F92D0
+:103970007F928F929F92AF92BF92CF92DF92EF92FF
+:10398000FF920F931F93CF93DF93CDB7DEB72B97A3
+:103990000FB6F894DEBF0FBECDBF0E94C00C84EB03
+:1039A00091E09F838E8305E010E0412C512C320181
+:1039B0004394302E802F0E94370DEE81FF81F290CC
+:1039C000E290D290C290FF83EE83C626D726E826E7
+:1039D000F926C114D104E104F104A1F40150110944
+:1039E00040F78FEF89838A831B820E94B32881600E
+:1039F000782F9D838C8349815A816B818D810E94B0
+:103A0000941D57C02091090221FF0AC06887798759
+:103A10008A879B870E94710D9B858A857985688539
+:103A2000E0E1F0E0530142010E2E04C0880C991C25
+:103A3000AA1CBB1C0A94D2F7A50194012C213D219C
+:103A40004E215F21232B242B252B79F1E9833A8208
+:103A5000DC01CB0188219921AA21BB2121E0892BFE
+:103A60008A2B8B2B09F420E02B830E94B3288160E2
+:103A7000782F9D838C8349815A816B818D810E942F
+:103A8000941DF801EE0FFF1FEE0FFF1FE456FE4FCF
+:103A900080819181A281B38188259925AA25BB25A2
+:103AA00080839183A283B38304C0319708F0BACF97
+:103AB00095CF10919B010E940E1C1817E9F00E94EF
+:103AC0000E1C80939B012B960FB6F894DEBF0FBEA1
+:103AD000CDBFDF91CF911F910F91FF90EF90DF90BD
+:103AE000CF90BF90AF909F908F907F906F905F909E
+:103AF0004F903F900C94961C2B960FB6F894DEBF17
+:103B00000FBECDBFDF91CF911F910F91FF90EF902E
+:103B1000DF90CF90BF90AF909F908F907F906F90ED
+:103B20005F904F903F900895CF93DF93CDB7DEB76E
+:103B30002B970FB6F894DEBF0FBECDBF4F835887CB
+:103B400069877A878B87DE01119686E0FD011192E5
+:103B50008A95E9F785E0FE01379601900D928A95E6
+:103B6000E1F749815A816B817C818D819E810E9420
+:103B70000C242B960FB6F894DEBF0FBECDBFDF919D
+:103B8000CF910895CF93C82F882309F4C1C08238FC
+:103B900059F40E940E1C81FDBBC089E30E94E726F8
+:103BA0000E94D62789E30CC0833879F40E940E1C4A
+:103BB00080FDAEC083E50E94E7260E94D62783E5FC
+:103BC0000E943827CF910C94D627843859F40E944C
+:103BD0000E1C82FD9DC087E40E94E7260E94D62726
+:103BE00087E4EECF8CEF8C0F813A48F48C2F0E9443
+:103BF000832D81118DC08C2F0E94E726E3CF80E2B8
+:103C00008C0F883048F4C77081E001C0880FCA95D6
+:103C1000EAF70E948D27D6CF8BE58C0F833078F49E
+:103C2000C53A29F0C63A31F482E890E005C081E84F
+:103C300090E002C083E890E0CF910C945F1C88E58F
+:103C40008C0F833108F064C0C83A39F1C93A41F1A8
+:103C5000CA3A49F1CB3A51F1CC3A59F1CD3A61F136
+:103C6000C03B69F1CE3A71F1CF3A79F1C13B81F1B4
+:103C7000C23B89F1C33B91F1C43B99F1C53BA1F132
+:103C8000C63BA9F1C73BB1F1C83BB9F1C93BC1F192
+:103C9000CA3BC9F58AE292E038C082EE90E035C0B6
+:103CA00089EE90E032C08AEE90E02FC085EB90E084
+:103CB0002CC086EB90E029C087EB90E026C08CEC0E
+:103CC00090E023C08DEC90E020C083E891E01DC01F
+:103CD0008AE891E01AC082E991E017C084E991E096
+:103CE00014C081E292E011C083E292E00EC084E24F
+:103CF00092E00BC085E292E008C086E292E005C047
+:103D000087E292E002C080E090E0CF910C94751CB5
+:103D1000CF910895882309F44BC0823859F40E944A
+:103D20000E1C81FF45C089E30E94E7260E94D6272A
+:103D300089E30CC0833871F40E940E1C80FF38C0E8
+:103D400083E50E94E7260E94D62783E50E94382754
+:103D50000C94D627843859F40E940E1C82FF28C088
+:103D600087E40E94E7260E94D62787E4EFCF9CEFE6
+:103D7000980F913A58F390E2980F983050F487706A
+:103D800091E001C0990F8A95EAF7892F0E94932745
+:103D9000DFCF9BE5980F933020F480E090E00C9407
+:103DA0005F1C885A833120F480E090E00C94751CED
+:103DB0000895882321F00E948D270C94D62708951A
+:103DC000882321F00E9493270C94D62708958F9280
+:103DD0009F92AF92BF92CF92DF92EF92FF920F939A
+:103DE0001F93CF93DF931F92CDB7DEB74C01A62E62
+:103DF000472FFC01E580E2948FE0E822F280FF206B
+:103E000021F079830E94AA27498149830E94E026F4
+:103E10004981882381F0FF2071F080E28A0D88308B
+:103E200050F082E00E94C9260E94E026BB24B39491
+:103E3000B826498101C0B12CE42FE295EF70F0E083
+:103E4000E759FF4F0C94032E842F807F142F1F708F
+:103E5000882311F01295107FFF2089F0112309F4B7
+:103E60008AC180E28A0D883020F4812F0E948D273C
+:103E700003C0812F0E949D270E94D6277CC18A2DD6
+:103E80000E948A1E112309F48DC180E28A0D8830B8
+:103E900020F4812F0E94932703C0812F0E94A32723
+:103EA0000E94D6277FC1242F207F842F8F7020323D
+:103EB00011F08295807FAA2021F0F1E0AF16B1F0D9
+:103EC00021C0FF2041F0EE2039F191E0E91224C039
+:103ED0000E94BD2767C1EE2021F0E1E0EE1609F453
+:103EE00061C189830E94C027898100C1FF2029F018
+:103EF000F5E0FE1508F456C10FC094E09E1508F4D5
+:103F000051C1F4C0FF2059F0EE2031F0F401958149
+:103F100090FF31C19F7095830E94D91E43C1EE204E
+:103F200009F4E4C02EC1242F26952695237030E095
+:103F30002115310521F02130310561F033C1FF2019
+:103F400021F08A2D942F937002C080E090E00E94AF
+:103F50005F1C28C1FF2021F08A2D942F937002C08E
+:103F600080E090E00E94751C1DC1842F837009F0D1
+:103F70004EC0F11017C12A2D229526952770220FC9
+:103F8000220F8A2D8F70C82ED12CE12CF12C022EFD
+:103F900004C0CC0CDD1CEE1CFF1C0A94D2F7A4FE5E
+:103FA00010C06FE070E080E090E004C0660F771F03
+:103FB000881F991F2A95D2F76095709580959095E6
+:103FC00003C060E070E0CB01242F26952695237076
+:103FD00030E02230310569F02330310589F06C2959
+:103FE0007D298E299F292130310571F00E945E259F
+:103FF000D9C06C297D298E299F290E947825D2C09D
+:104000000E945E25C701B6010E944425CBC0FF2057
+:1040100019F0842F817001C08695882309F4C2C0ED
+:104020002A2D229526952770220F220F8A2D8F7018
+:10403000C82ED12CE12CF12C022E04C0CC0CDD1C9E
+:10404000EE1CFF1C0A94D2F7A4FE10C06FE070E0D3
+:1040500080E090E004C0660F771F881F991F2A95A3
+:10406000D2F7609570958095909503C060E070E000
+:10407000CB01242F26952695237030E02230310580
+:1040800069F02330310589F06C297D298E299F291B
+:104090002130310571F00E94322684C06C297D29BF
+:1040A0008E299F290E944C267DC00E943226C7017E
+:1040B000B6010E94182676C00A2D10E0F801E05ED5
+:1040C000F109E531F10508F052C0E758FF4F0C94B3
+:1040D000032E1A2D1F70842F8F71FF2021F00E9454
+:1040E000B125812F19CF0E94D225812F0E94E01E79
+:1040F00059C0FF2049F0F4E0FE1508F453C0842FA6
+:104100008F710E94F7254EC085E08E1508F44AC0D5
+:10411000F6CFFF2039F0842F8F710E94B12542C065
+:10412000FF20C9F3842F8F710E94D2253BC0FF204E
+:1041300029F0842F8F710E949C2534C00E94922503
+:1041400031C0FF2051F0142F1F71812F0E94B12523
+:1041500063E0812F0E94C02625C081E00E94C9260D
+:1041600091E09E15F8F482E00E94C9261BC0FF2052
+:1041700031F0EE2081F28A2D0E94C21D13C0EE2084
+:1041800089F28A2D0E948A1E0DC04F706A2DC401CB
+:104190000E9474090E94B92405C04F706A2DC401A1
+:1041A0000E946D08BB20F1F00E94BC2680FD1AC061
+:1041B000F40112820E94B6260E94B125C4010E9419
+:1041C00000210E94B6260F90DF91CF911F910F9191
+:1041D000FF90EF90DF90CF90BF90AF909F908F9027
+:1041E0000C94D2250F90DF91CF911F910F91FF90EA
+:1041F000EF90DF90CF90BF90AF909F908F900895F9
+:104200000F931F93CF93DF93EC01288139818B812A
+:104210009C81892B31F03F3F11F080E003C02F3F9C
+:10422000E1F781E0811113C0CE010E94DC088823F0
+:1042300071F0688179818A810E94B2268C010E9486
+:1042400066260E943925B801CE010E94E71EDF9143
+:10425000CF911F910F9108950E94AA270E94BA271B
+:104260000E947C270E94D62780E090E00E945F1C7D
+:1042700080E090E00C94751C0E949A270C942C21ED
+:104280000E94A726292F22952F7030E02C3031056F
+:104290004CF42A3031056CF42250310922303105BA
+:1042A000B0F407C02C30310571F02F30310559F0D2
+:1042B0000EC0803F31F018F4803E48F402C0843FC5
+:1042C00031F481E0089593FB882780F9089580E018
+:1042D0000895CF93DF9300D000D01F92CDB7DEB703
+:1042E0000F900F900F900F900F90DF91CF91089546
+:1042F000CF93DF9300D000D000D0CDB7DEB72696A5
+:104300000FB6F894DEBF0FBECDBFDF91CF910895F9
+:104310001F93CF93DF93C091B40116E08091B50154
+:10432000C81799F0D0E01C9FF0011D9FF00D1124DB
+:10433000EA54FE4F4081518162817381848195816D
+:104340000E9478212196C770E9CFDF91CF911F910C
+:1043500008954091E6015091E7016091E801709164
+:10436000E9018091EA019091EB010C947821CF93BF
+:104370008091EB0182958F7009F05FC08091E80118
+:10438000882309F45AC02091B401A091B50160912D
+:10439000E6017091E7018091E9019091EA0131E035
+:1043A0006F3F09F030E0B32FC6E02A1709F445C08B
+:1043B000009721F07F3F21F44B2F03C041E001C063
+:1043C00040E030E040FD35C0C29FF001C39FF00DDA
+:1043D0001124EA54FE4F418174132BC040816413B1
+:1043E00028C04281411125C0438154814817590793
+:1043F00010F441505109481B590B483C5105C8F471
+:104400008091EB018F7080618093EB0186E0829F49
+:10441000F001839FF00D1124E554FE4F80818F70D1
+:104420008061808386EE91E00E940021CF910C9400
+:1044300088212F5F3F4F2770B8CFCF910895CF923B
+:10444000DF92EF92FF920F931F93CF93DF93CDB73D
+:10445000DEB762970FB6F894DEBF0FBECDBF8C01FA
+:1044600085E0F801DE011D9601900D928A95E1F735
+:10447000D8014C9111965C91119712966C911297FC
+:104480001396ED90FC9014977091E601E091E7018E
+:104490002091E9013091EA012115310531F0EF3F1A
+:1044A00031F481E07F3F19F403C081E001C080E076
+:1044B000B82FB170CB2E80FD6CC1D090E801DD200B
+:1044C00009F4F5C0F091EB01E216F30638F0C701EC
+:1044D000821B930B883C910548F09BC0209530953A
+:1044E0002E0D3F1D283C310508F093C08F2F807F93
+:1044F00009F052C0E51314C0741312C0D62E611116
+:104500000FC0FF70F061F093EB010E94A92186EECD
+:1045100091E00E9400218091EB01F80185836CC13C
+:10452000EF2831F05F3F31F481E04F3F19F403C0D1
+:1045300081E001C080E080FD03C081E0862701C0EA
+:1045400080E0F82FF170FF2E80FF1CC08091B40135
+:104550002091B50136E0821709F428C190E0389F18
+:10456000F001399FF00D1124EA54FE4F7181571369
+:1045700006C07081471303C07281671303C00196A0
+:104580008770E9CFD62E662309F436C18091EB01FE
+:1045900081608093EB0153C0E51308C0741306C01B
+:1045A000611104C0D8011596FC93AEC04D875E879B
+:1045B0008D859E856A8B0E9440216A89882329F116
+:1045C000D62E662311F12091EB01822F82958F70F8
+:1045D00090E002970CF460C08091E6019091E701B1
+:1045E00098878F831986FB86EA862C87CE010796EB
+:1045F00051C0E51731F14D875E878D859E856A8BA9
+:104600000E9440216A8981112EC0C8010E940021A8
+:10461000A4C08F2F807F69F77E2DF98AE88A898967
+:104620000E94692186EE91E00E940021E6EEF1E011
+:1046300086E0DF011D928A95E9F70E94A921D12C1D
+:10464000DBC07413D8CF6111D6CFD8011596FC9377
+:10465000C8010E940021E6EEF1E086E0DF011D9234
+:104660008A95E9F7C9C0D62E662379F22091EB012D
+:10467000822F82958F7090E0029774F08091E6010E
+:104680009091E7019A8389831B82FD82EC822E83BD
+:10469000CE0101960E94002186E0F801A6EEB1E06D
+:1046A00001900D928A95E1F70E94B7216FC0E21642
+:1046B000F30628F0C701821B930B9C0104C02095D0
+:1046C00030952E0D3F1D283C310508F052C0D62EE6
+:1046D000662309F49ACFE5132CC074132AC0809185
+:1046E000EB0180FD1DC0982F92959F70C9F0D801F5
+:1046F00015968C9315979F3039F09F5F9295907F18
+:104700008F70892B15968C93C8010E94002186E03A
+:10471000F801A6EEB1E001900D928A95E1F736C05E
+:1047200086E0F801A6EEB1E001900D928A95E1F7DE
+:1047300063C04D875E878D859E850E9440218823BA
+:1047400079F086E0F801A6EEB1E001900D928A952D
+:10475000E1F70E94B7210E94A921DD24D3944CC027
+:104760008091EB0181608093EB01C8010E940021E0
+:1047700043C07E2DF98AE88A89890E946921E6EE84
+:10478000F1E086E0DF011D928A95E9F70E94A921F8
+:1047900033C0662309F439CF4D875E878D859E85AA
+:1047A0000E944021882309F430CFCBCF4D875E870C
+:1047B0008D859E850E94A726292F22952F7030E097
+:1047C000223031052CF49F7041F0811106C00CC0DD
+:1047D000243031052CF49F7049F4805E883020F03D
+:1047E000C8010E940021CF2CDC2C06C0D8011596F0
+:1047F0009C91907F91F7F8CF8D2D62960FB6F8942B
+:10480000DEBF0FBECDBFDF91CF911F910F91FF9003
+:10481000EF90DF90CF9008951F93CF93DF93CDB7A4
+:10482000DEB72C970FB6F894DEBF0FBECDBF4F8317
+:10483000588769877A878B879C87CE0107960E9465
+:104840001F228823C1F02F8138858A859B85892B7B
+:1048500031F03F3F11F080E003C02F3FE1F781E0EE
+:10486000811147C04F81588569857A858B859C85E4
+:104870000E9478213EC086E0FE013796DE01119647
+:1048800001900D928A95E1F7FF81E8854A855B8565
+:104890004115510531F0EF3F31F481E0FF3F19F44C
+:1048A00003C081E001C080E080FD23C02091B501FC
+:1048B00030E0C9010196877099276091B40170E0DA
+:1048C00086179707F1F1F983EA835D834C8396E0BD
+:1048D000929FD001939FB00D1124AA54BE4FFE01A8
+:1048E000319601900D929A95E1F78093B5010E945F
+:1048F000882116E08091B4019091B501891779F172
+:10490000189FC00111248A549E4F0E941F228823A1
+:1049100031F1E091B4011E9FF0011124EA54FE4FE1
+:104920004081518162817381848195810E947821C7
+:104930008091B40190E00196877099278093B4012B
+:10494000D9CF0E943C211092B5011092B401E6EE3D
+:10495000F1E086E0DF011D928A95E9F7CACF2C9637
+:104960000FB6F894DEBF0FBECDBFDF91CF911F9180
+:104970000895EF92FF920F931F93CF93DF93FC0163
+:10498000009709F46FC0F12CEE24E394EF01219617
+:104990008491843740F4843008F055C0813081F030
+:1049A000823021F15FC0853709F447C0C0F19CE730
+:1049B000980F903708F056C08F770E948A1E45C026
+:1049C0008F010E5F1F4FFE01849190E2980F983087
+:1049D00050F48770FE2D01C0FF0F8A95EAF78F2FE4
+:1049E0000E94AD2715C00E94C21D14C08F010E5F2A
+:1049F0001F4FFE01849190E2980F983068F4877001
+:104A0000FE2D01C0FF0F8A95EAF78F2F0E94B32772
+:104A10000E94D627E80119C00E948A1EFBCFCF0151
+:104A20000296FE01C491CC2361F0EFE9FFE03197DB
+:104A3000F1F700C00000C150F6CFCF010296FE0191
+:104A4000F490EC0102C00E94C21D8F2D882341F01A
+:104A5000EFE9FFE03197F1F700C000008150F6CF99
+:104A6000FE0194CFDF91CF911F910F91FF90EF90B6
+:104A7000089508956093F0017093F1018093F2011D
+:104A80009093F3010C942C210F931F930091F0014C
+:104A90001091F1012091F2013091F301062B172BB7
+:104AA000282B392B0093F0011093F1012093F20190
+:104AB0003093F3011F910F910C942C210F931F93AE
+:104AC0000091F0011091F1012091F2013091F30178
+:104AD00006231723282339230093F0011093F101B3
+:104AE0002093F2013093F3011F910F910C942C212C
+:104AF0000F931F930091F0011091F1012091F201A9
+:104B00003091F30106271727282739270093F00152
+:104B10001093F1012093F2013093F3011F910F9153
+:104B20000C942C211092EC011092ED011092EE01E8
+:104B30001092EF010C942C2141E050E060E070E015
+:104B400004C0440F551F661F771F8A95D2F7409304
+:104B5000EC015093ED016093EE017093EF010C9422
+:104B60002C2141E050E060E070E004C0440F551F8C
+:104B7000661F771F8A95D2F78091EC019091ED0125
+:104B8000A091EE01B091EF01842B952BA62BB72BB2
+:104B90008093EC019093ED01A093EE01B093EF01AF
+:104BA0000C942C2141E050E060E070E004C0440F20
+:104BB000551F661F771F8A95D2F7409550956095CF
+:104BC00070958091EC019091ED01A091EE01B09172
+:104BD000EF0184239523A623B7238093EC019093C0
+:104BE000ED01A093EE01B093EF010C942C2141E074
+:104BF00050E060E070E004C0440F551F661F771F4F
+:104C00008A95D2F78091EC019091ED01A091EE018F
+:104C1000B091EF0184279527A627B7278093EC0151
+:104C20009093ED01A093EE01B093EF010C942C2131
+:104C30000F931F930091EC011091ED012091EE0173
+:104C40003091EF01062B172B282B392B0093EC0109
+:104C50001093ED012093EE013093EF011F910F911E
+:104C60000C942C210F931F930091EC011091ED01F6
+:104C70002091EE013091EF010623172328233923D9
+:104C80000093EC011093ED012093EE013093EF01BE
+:104C90001F910F910C942C210F931F930091EC0105
+:104CA0001091ED012091EE013091EF0106271727B9
+:104CB000282739270093EC011093ED012093EE0192
+:104CC0003093EF011F910F910C942C210895CF92F6
+:104CD000DF92EF92FF920F931F93CF93DF93EC013C
+:104CE000C090F001D090F101E090F201F090F3015A
+:104CF0008091EC019091ED01A091EE01B091EF0156
+:104D0000C82AD92AEA2AFB2A0FE110E0B701A60136
+:104D1000002E04C076956795579547950A94D2F76B
+:104D200040FD05C00150110988F780E007C0BE01B1
+:104D3000802F0E94CD0B0197A9F3802FDF91CF9197
+:104D40001F910F91FF90EF90DF90CF900895CF9338
+:104D5000DF93EC010E946726BE010E94CD0BDF911C
+:104D6000CF910895CB010E94A72608958091F40168
+:104D700085958595859508958091F40187700895AE
+:104D800098E0899F90011124622B6093F4010C94A8
+:104D9000B1254091F401809584238093F401982FEC
+:104DA000977069F450E0282F332727FD309542177C
+:104DB000530729F08595859585950C94D2250895FE
+:104DC0009091F401977081E009F480E0089590914A
+:104DD0000C01992361F190910D01992341F1982FD4
+:104DE0009695969596959F3088F4E0910E01F091F6
+:104DF0000F01E90FF11D877021E030E001C0220FA3
+:104E00008A95EAF78181822B818308959091090226
+:104E100090FF2DC01F928F9389E299E09F938F930B
+:104E20000E9445080F900F900F900F9008954091A9
+:104E30000E0150910F0120E030E09FEFFA01E20FE8
+:104E4000F31F6281681799F09F3F19F4611101C047
+:104E5000922F2F5F3F4F2E30310581F79F3F39F062
+:104E6000FA01E90FF11D97FDFA95828308950895DF
+:104E700090910C01992369F190910D01992349F1C9
+:104E8000982F9695969596959F3090F4E0910E0107
+:104E9000F0910F01E90FF11D877021E030E001C0B2
+:104EA000220F8A95EAF7209581812823218308958E
+:104EB0009091090290FF1FC01F928F938BE099E0A1
+:104EC0009F938F930E9445080F900F900F900F9023
+:104ED000089540910E0150910F0120E030E0FA0159
+:104EE000E20FF31F9281981301C012822F5F3F4F90
+:104EF0002E303105A1F7089581E090E0E0910E0198
+:104F0000F0910F01E80FF91F108201968031910591
+:104F1000A9F7089580910802089590910802982BAE
+:104F20009093080208958095909108029823909399
+:104F30000802089510920802089590910702982B94
+:104F4000909307020895809590910702982390937B
+:104F50000702089510920702089590910602982B77
+:104F6000909306020895809590910602982390935D
+:104F7000060208951092060208958093F50108959F
+:104F80001092F501089540910E0150910F0120E01B
+:104F900030E080E0FA01E20FF31F918191118F5F01
+:104FA0002F5F3F4F2F303105A9F70895E0910E0193
+:104FB000F0910F01809108028083E0910E01F09141
+:104FC0000F01808190910702892B8083E0910E016F
+:104FD000F0910F01808190910602892B808390913E
+:104FE000F501992361F0E0910E01F0910F018081AC
+:104FF000892B80830E94C32781111092F501809133
+:105000000E0190910F010C941A1C90933D01809316
+:105010003C01089540E0009739F09C01215031098E
+:10502000822393234F5FF7CF842F08958295982F83
+:105030009C7C96959695837344E0849F90011124FF
+:10504000922B892F8A7A86959575990F892B0895C9
+:105050001F93CF93DF931F92CDB7DEB799830E9442
+:105060001628182F9981892F0E941628212F30E0A9
+:10507000322F2227A901482BCA010F90DF91CF912F
+:105080001F91089580915802843021F110920A02F4
+:1050900020E488E190E00FB6F894A8958093600032
+:1050A0000FBE2093600080E00E94670C83B7817F71
+:1050B000846083BF83B7816083BF7894889583B70A
+:1050C0008E7F83BF88E10FB6F894809360001092C2
+:1050D00060000FBE0895089508950E946B280E94F5
+:1050E000C00C0E946C280E94A20D91E0811101C0A9
+:1050F00090E0892F08950E943C210E940E1C0C9480
+:10510000670C1F920F920FB60F9211248F939F93EB
+:10511000AF93BF9380910A02811113C080910B025B
+:1051200090910C02A0910D02B0910E024196A11D2A
+:10513000B11D80930B0290930C02A0930D02B093CB
+:105140000E02BF91AF919F918F910F900FBE0F9064
+:105150001F90189582E084BD93E095BD9AEF97BDAE
+:1051600080936E0008952FB7F89480910B02909170
+:105170000C02A0910D02B0910E022FBF0895CF92A4
+:10518000DF92EF92FF920F931F932FB7F894409105
+:105190000B0250910C0260910D0270910E022FBF14
+:1051A0006A017B01EE24FF248C0120E030E0C01670
+:1051B000D106E206F30610F441505109481B590B81
+:1051C000CA011F910F91FF90EF90DF90CF9008954B
+:1051D0001F920F920FB60F9211248F939F93AF934C
+:1051E000BF9380910B0290910C02A0910D02B0919F
+:1051F0000E020196A11DB11D80930B0290930C022B
+:10520000A0930D02B0930E02BF91AF919F918F9129
+:105210000F900FBE0F901F9018950E941519F894CB
+:105220002FEF87EA91E6215080409040E1F700C0DF
+:10523000000087E090EBDC018093620290936302B0
+:10524000A0936402B09365022CE088E190E00FB671
+:10525000F894A895809360000FBE20936000FFCF64
+:10526000CF92DF92EF92FF920F931F93CF93DF9332
+:10527000082F15E0812F0E94370D6B017C01C0E1E2
+:10528000D0E0B701A6010C2E04C07695679557951E
+:1052900047950A94D2F740FF09C06C2F712F80E028
+:1052A0000E947709081302C081E005C0219748F7E2
+:1052B000115000F780E0DF91CF911F910F91FF9087
+:1052C000EF90DF90CF900895CF93C82F8CE20E948B
+:1052D0003029882321F08C2FCF910C94302980E045
+:1052E000CF910895CF930E94BF2A811102C00E94DE
+:1052F000A52A8EE499E00E94AC07C5E6C15049F0AA
+:105300000E94C00C8FE39CE90197F1F700C00000F8
+:10531000F5CF87E499E00E94AC0789E20E946429F6
+:10532000811111C18AE20E94642981110E94A52A7B
+:1053300085E00E94642981110E940D290E94CA2AD9
+:105340008093090287E00E946429882399F18BE108
+:105350000E946429882351F09091090291FB8827CB
+:1053600080F921E0822780FB91F922C08EE00E9423
+:105370006429882351F09091090292FB882780F9D3
+:1053800021E0822780FB92F913C080E10E9464290A
+:1053900090910902882341F093FB882780F921E04E
+:1053A000822780FB93F904C0892F809580FB90F9B8
+:1053B00090930902809109020E94CE2A0E94DC2A61
+:1053C0008093610280EE0E946429882341F08091DD
+:1053D0006102982F909590FB80F98093610289E398
+:1053E0000E946429882359F09091610291FB8827DB
+:1053F00080F921E0822780FB91F99093610282EE8F
+:105400000E946429882359F09091610292FB8827B9
+:1054100080F921E0822780FB92F99093610286EE69
+:105420000E946429882359F09091610293FB882798
+:1054300080F921E0822780FB93F99093610283EE4B
+:105440000E946429882359F09091610294FB882777
+:1054500080F921E0822780FB94F99093610285E333
+:105460000E946429882359F09091610295FB882756
+:1054700080F921E0822780FB95F99093610281E316
+:105480000E946429882359F09091610296FB882735
+:1054900080F921E0822780FB96F99093610281E1F7
+:1054A0000E946429882359F09091610297FB882714
+:1054B00080F921E0822780FB97F990936102809127
+:1054C00061020E94E02A8091610287FB882780F9AF
+:1054D00080930D0187E20E946429C82F8EE10E940B
+:1054E00064298111C2608FE10E9464298111C46026
+:1054F00080E20E9464298111C86081E20E946429CF
+:105500008111C06182E20E9464298111C06283E23C
+:105510000E9464298111C06484E20E946429882366
+:1055200011F0C06802C0CC2329F08C2F0E94D72A2A
+:105530006C2F03C00E94D32A682F70E080E090E0B7
+:10554000CF910C943A25CF9108956DEE7EEF80E0D7
+:1055500090E00E943B2E60E082E090E00E941D2ED1
+:1055600060E083E090E00E941D2E60E084E090E027
+:105570000E941D2E60E085E090E00C941D2E80E0DE
+:1055800090E00E94172E21E08D3E9E4F09F020E012
+:10559000822F089582E090E00C94092E682F82E01B
+:1055A00090E00C941D2E83E090E00C94092E682F5F
+:1055B00083E090E00C941D2E84E090E00C94092E82
+:1055C000682F84E090E00C941D2ECF93C82F1F927B
+:1055D0008F9329E639E03F932F930E94450861E0BD
+:1055E00070E080E090E004C0660F771F881F991F6D
+:1055F000CA95D2F70E943A250F900F900F900F9006
+:10560000CF910C943C21CF938B3109F4D1C108F098
+:1056100049C08E3009F4DFC100F5873009F4A9C113
+:10562000A8F4863009F063C280910902817F8E7FE1
+:105630008093090283EF9AE00E94AC0784EA9EE01F
+:105640000E94AC0781E080930F0291C1883009F479
+:105650005BC08B3009F487C14AC2813109F42FC283
+:1056600020F4803109F4CAC142C2863109F4E0C194
+:10567000893109F03CC284EE9AE00E94AC0787EBC6
+:105680009AE00E94AC0788E79AE00E94AC0781E5A7
+:105690009AE00E94AC0785E19AE00E94AC0787EE91
+:1056A00099E063C1853309F41EC268F4873209F4B6
+:1056B0001AC228F48E3108F41AC28D5115C28932EB
+:1056C00009F411C214C2833438F48A3308F009C2D1
+:1056D000883309F448C10BC2833409F404C2883406
+:1056E00009F005C20E943C2188E89EE00E94AC07B8
+:1056F0009FEF23ED80E3915020408040E1F700C010
+:1057000000000E940D2933C188EA9EE00E94AC0788
+:1057100085EF9DE00E94AC070E94D32A1F928F93D1
+:1057200082EF9DE09F938F930E94450880EF9DE05C
+:105730000E94AC070E94CA2AC82F8DED9DE00E94EE
+:10574000AC071F92CF9328ED3DE03F932F930E942B
+:10575000450886ED9DE00E94AC078CEC9DE00E9420
+:10576000AC078C2F81701F928F9329EC3DE03F9303
+:105770002F930E94450887EC9DE00E94AC078DEBBB
+:105780009DE00E94AC07C1FB882780F91F928F9390
+:105790002AEB3DE03F932F930E94450888EB9DE064
+:1057A0000E94AC078CEA9DE00E94AC07C2FB8827F0
+:1057B00080F91F928F9329EA3DE03F932F930E9437
+:1057C000450887EA9DE00E94AC078EE99DE00E94B3
+:1057D000AC07C3FBCC27C0F91F92CF938BE99DE0A8
+:1057E0009F938F930E94450889E99DE00E94AC0732
+:1057F0000E94DC2AC82F85E89DE00E94AC071F921A
+:10580000CF9320E83DE03F932F930E9445088EE719
+:105810009DE00E94AC0785E69DE00E94AC078C2FBE
+:1058200081701F928F9322E63DE03F932F930E9459
+:1058300045088DB79EB780960FB6F8949EBF0FBEF1
+:105840008DBF80E69DE00E94AC0789E49DE00E9448
+:10585000AC07C1FB882780F91F928F9326E43DE0B7
+:105860003F932F930E94450884E49DE00E94AC077B
+:1058700082E39DE00E94AC07C2FB882780F91F925B
+:105880008F932FE23DE03F932F930E9445088DE2D6
+:105890009DE00E94AC078BE19DE00E94AC07C3FB3A
+:1058A000882780F91F928F9328E13DE03F932F9343
+:1058B0000E94450886E19DE00E94AC078CE09DE0D7
+:1058C0000E94AC07C4FB882780F91F928F9329E0C0
+:1058D0003DE03F932F930E94450887E09DE00E94A2
+:1058E000AC0785EF9CE00E94AC07C5FB882780F9D8
+:1058F0001F928F9322EF3CE03F932F930E94450825
+:1059000080EF9CE00E94AC0784ED9CE00E94AC0715
+:10591000C6FB882780F91F928F9321ED3CE03F93CF
+:105920002F930E9445088FEC9CE00E94AC0787EC07
+:105930009CE00E94AC07C7FBCC27C0F91F92CF9315
+:1059400084EC9CE09F938F930E94450882EC9CE03E
+:105950000E94AC078DB79EB74C960FB6F8949EBFC9
+:105960000FBE8DBF04C08EE09BE00E94AC07C1E07B
+:10597000C3C080910902C82FC095C170C0FB80F9D7
+:1059800080930902CC2349F08CE79EE00E94AC078B
+:10599000809109028660886045C08FE69EE00E9483
+:1059A000AC0780910902897F877F80930902DFCF4E
+:1059B0008091090281FBCC27C0F991E0C927C0FB87
+:1059C00081F980930902CC2319F082E69EE025C07C
+:1059D00084E59EE0CACF8091090282FBCC27C0F902
+:1059E00091E0C927C0FB82F980930902CC2319F00A
+:1059F00085E49EE012C085E39EE0B7CF8091090266
+:105A000083FBCC27C0F991E0C927C0FB83F98093C1
+:105A10000902CC2351F089E29EE00E94AC078091FC
+:105A2000090281608093090267C08CE19EE09DCFEE
+:105A300089ED99E00E94AC070E940E1C1F928F9383
+:105A40008FEB99E09F938F930E94450880910C0102
+:105A50001F928F9388EA99E09F938F930E94450845
+:105A6000809194011F928F9385E999E09F938F9382
+:105A70000E94450880910D011F928F9382E899E062
+:105A80009F938F930E94450880910B0290910C0286
+:105A9000A0910D02B0910E02BF93AF939F938F938D
+:105AA0008EE699E09F938F930E9445088DB79EB72D
+:105AB00046960FB6F8949EBF0FBE8DBF58CF0E947A
+:105AC0003C21C0910D0181E0C827C0930D01CC237A
+:105AD00029F082E19EE00E94AC070EC087E09EE0C4
+:105AE00044CF895301C080E00E94E52A40CF85E081
+:105AF0009EE00E94AC07C0E08C2FCF91089580E01B
+:105B0000089580E00895CF93C82F80910F028823D5
+:105B100019F0813049F03BC0E0910E01F0910F0186
+:105B200080818232B1F507C0E0910E01F0910F0142
+:105B30008081823249F48C2F0E947F2D811124C0F4
+:105B40008C2F0E94032B21C08C2F0E94812D81114C
+:105B50001BC0C43189F018F4CB3029F010C0C93211
+:105B600059F0C83361F483EF9AE00E94AC0785E6F0
+:105B700099E00E94AC0708C010920F020CC083E6A7
+:105B800099E00E94AC0707C081E0817006C01092C6
+:105B90000F0280E002C080E0F8CFCF910895991BFA
+:105BA00079E004C0991F961708F0961B881F7A9514
+:105BB000C9F780950895AA1BBB1B51E107C0AA1F16
+:105BC000BB1FA617B70710F0A61BB70B881F991F9E
+:105BD0005A95A9F780959095BC01CD01089597FB42
+:105BE000072E16F4009407D077FD09D00E94DB2D14
+:105BF00007FC05D03EF4909581959F4F08957095D0
+:105C000061957F4F0895EE0FFF1F0590F491E02DF1
+:105C10000994F999FECF92BD81BDF89A992780B574
+:105C20000895A6E1B0E044E050E00C94432EA8E1D2
+:105C3000B0E042E050E00C94432E262FF999FECFBD
+:105C400092BD81BDF89A019700B4021639F01FBACF
+:105C500020BD0FB6F894FA9AF99A0FBE08950396EC
+:105C6000272F0E941E2E0E941D2E252F0E941E2EC1
+:105C7000242F0C941E2E0196272F0E941E2E0C946A
+:105C80001D2EDC01CB01FC01F999FECF06C0F2BD4F
+:105C9000E1BDF89A319600B40D9241505040B8F7EA
+:065CA0000895F894FFCF07
+:105CA600FFFF8314521586141F15EB140101F6012C
+:105CB60059766649096C0F1F4F5F6F7F79691929FD
+:105CC6003953433323130340362039980862084278
+:0C5CD6000809089507AE07C707E707009C
+:00000001FF
diff --git a/keyboard/phantom/keymaps/default/keymap.c b/keyboard/phantom/keymaps/default/keymap.c
new file mode 100644
index 000000000..1368226aa
--- /dev/null
+++ b/keyboard/phantom/keymaps/default/keymap.c
@@ -0,0 +1,169 @@
+#include "phantom.h"
+
+#ifdef RGBLIGHT_ENABLE
+#include "rgblight.h"
+#endif
+
+// Used for SHIFT_ESC
+#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BL 0
+#define _FL 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: (Base Layer) Default Layer
+ * ,-----------------------------------------------------------------------------.
+ * |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus|
+ * |-----------------------------------------------------------| |--------------|
+ * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp|
+ * |-----------------------------------------------------------| |--------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del| End|PgDn|
+ * |-----------------------------------------------------------| `--------------'
+ * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
+ * |-----------------------------------------------------------| ,----.
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
+ * |-----------------------------------------------------------| ,-------------.
+ * |Ctrl|Gui |Alt | Space |ALT |GUI |_FL |CTRL | |Lft| Dn |Rig |
+ * `-----------------------------------------------------------' `-------------'
+ */
+[_BL] = KEYMAP(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_END, KC_PGDN, \
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap _FL: Function Layer
+ * ,-----------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | | | | | |
+ * |-----------------------------------------------------------| |--------------|
+ * | | | | | | | | | | | | | | Reset | | | | |
+ * |-----------------------------------------------------------| |--------------|
+ * | | | | | | | | | | | | | | | | | | |
+ * |-----------------------------------------------------------| `--------------'
+ * | | | | | | | | | | | | | |
+ * |-----------------------------------------------------------| ,----.
+ * | | F1| F2| F3| F4| F5|F6 |F7 |F8 | | | | | |
+ * |-----------------------------------------------------------| ,-------------.
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------' `-------------'
+ */
+[_FL] = KEYMAP(
+ #ifdef RGBLIGHT_ENABLE
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, \
+ KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ #else
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ #endif
+};
+
+enum function_id {
+ SHIFT_ESC,
+ #ifdef RGBLIGHT_ENABLE
+ RGBLED_TOGGLE,
+ RGBLED_STEP_MODE,
+ RGBLED_INCREASE_HUE,
+ RGBLED_DECREASE_HUE,
+ RGBLED_INCREASE_SAT,
+ RGBLED_DECREASE_SAT,
+ RGBLED_INCREASE_VAL,
+ RGBLED_DECREASE_VAL
+ #endif
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_FUNCTION(SHIFT_ESC),
+ #ifdef RGBLIGHT_ENABLE
+ [1] = ACTION_FUNCTION(RGBLED_TOGGLE),
+ [2] = ACTION_FUNCTION(RGBLED_STEP_MODE),
+ [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
+ [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
+ [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
+ [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
+ [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
+ [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
+ #endif
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+ static uint8_t shift_esc_shift_mask;
+ switch (id) {
+ case SHIFT_ESC:
+ shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
+ if (record->event.pressed) {
+ if (shift_esc_shift_mask) {
+ add_key(KC_GRV);
+ send_keyboard_report();
+ } else {
+ add_key(KC_ESC);
+ send_keyboard_report();
+ }
+ } else {
+ if (shift_esc_shift_mask) {
+ del_key(KC_GRV);
+ send_keyboard_report();
+ } else {
+ del_key(KC_ESC);
+ send_keyboard_report();
+ }
+ }
+ break;
+ //led operations
+ #ifdef RGBLIGHT_ENABLE
+ case RGBLED_TOGGLE:
+ if (record->event.pressed) {
+ rgblight_toggle();
+ }
+ break;
+ case RGBLED_INCREASE_HUE:
+ if (record->event.pressed) {
+ rgblight_increase_hue();
+ }
+ break;
+ case RGBLED_DECREASE_HUE:
+ if (record->event.pressed) {
+ rgblight_decrease_hue();
+ }
+ break;
+ case RGBLED_INCREASE_SAT:
+ if (record->event.pressed) {
+ rgblight_increase_sat();
+ }
+ break;
+ case RGBLED_DECREASE_SAT:
+ if (record->event.pressed) {
+ rgblight_decrease_sat();
+ }
+ break;
+ case RGBLED_INCREASE_VAL:
+ if (record->event.pressed) {
+ rgblight_increase_val();
+ }
+ break;
+ case RGBLED_DECREASE_VAL:
+ if (record->event.pressed) {
+ rgblight_decrease_val();
+ }
+ break;
+ case RGBLED_STEP_MODE:
+ if (record->event.pressed) {
+ rgblight_step();
+ }
+ break;
+ #endif
+ }
+}
diff --git a/keyboard/phantom/led.c b/keyboard/phantom/led.c
new file mode 100644
index 000000000..e45cc0964
--- /dev/null
+++ b/keyboard/phantom/led.c
@@ -0,0 +1,44 @@
+/*
+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/>.
+*/
+
+#include <avr/io.h>
+#include "stdint.h"
+#include "led.h"
+
+
+void led_init_ports() {
+ // * Set our LED pins as output
+ DDRB |= (1<<6);
+ DDRB |= (1<<7);
+}
+
+void led_set_kb(uint8_t usb_led) {
+ if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+ // Turn capslock on
+ PORTB |= (1<<6);
+ } else {
+ // Turn capslock off
+ PORTB &= ~(1<<6);
+ }
+ if (usb_led & (1<<USB_LED_SCROLL_LOCK)) {
+ // Turn scrolllock on
+ PORTB |= (1<<7);
+ } else {
+ // Turn scrolllock off
+ PORTB &= ~(1<<7);
+ }
+}
diff --git a/keyboard/phantom/phantom.c b/keyboard/phantom/phantom.c
new file mode 100644
index 000000000..4328539d0
--- /dev/null
+++ b/keyboard/phantom/phantom.c
@@ -0,0 +1,28 @@
+#include "phantom.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)();
+ }
+ led_init_ports();
+};
+
+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/keyboard/phantom/phantom.h b/keyboard/phantom/phantom.h
new file mode 100644
index 000000000..c1c7459ff
--- /dev/null
+++ b/keyboard/phantom/phantom.h
@@ -0,0 +1,46 @@
+#ifndef PHANTOM_H
+#define PHANTOM_H
+
+#include "matrix.h"
+#include "keymap_common.h"
+#include <stddef.h>
+
+
+/* Phantom matrix layout
+ * ,-----------------------------------------------------------------------------.
+ * |00 |02| 03| 04| 05| | 06| 07| 08| 09| | 0a|0b |0c |0d | |0e |0f |0g |
+ * |-----------------------------------------------------------| |--------------|
+ * | 01| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1d | |1e |1f |1g |
+ * |-----------------------------------------------------------| |--------------|
+ * |20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c| 2d| | 2e | 2f | 2g |
+ * |-----------------------------------------------------------| `--------------'
+ * |30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d |
+ * |-----------------------------------------------------------| ,----.
+ * | 40 | 42| 43| 44| 45| 46| 47| 48| 49| 4a| 4b| 4d | | 4f |
+ * |-----------------------------------------------------------| ,-------------.
+ * | 50 | 51 | 52 | 57 |5a | 5b | 5c | 5d | | 5e| 5f | 5g |
+ * `-----------------------------------------------------------' `-------------'
+ */
+// The first section contains all of the arguments
+// The second converts the arguments into a two-dimensional array
+#define KEYMAP( \
+ k00, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \
+ k01, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1d, k1e, k1f, k1g, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
+ k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4f, \
+ k50, k51, k52, k57, k5a, k5b, k5c, k5d, k5e, k5f, k5g \
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g}, \
+ {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1d, k1d, k1e, k1f, k1g}, \
+ {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g}, \
+ {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3d, k3d, k3d, k3d}, \
+ {k40, k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4d, k4f, k4f, k4f}, \
+ {k50, k51, k52, k57, k57, k57, k57, k57, k57, k57, k5a, k5b, k5c, k5d, k5e, k5f, k5g} \
+}
+
+void matrix_init_user(void);
+void matrix_scan_user(void);
+
+#endif
diff --git a/keyboard/phantom/pinout.jpg b/keyboard/phantom/pinout.jpg
new file mode 100644
index 000000000..30b0b8bf4
--- /dev/null
+++ b/keyboard/phantom/pinout.jpg
Binary files differ
diff --git a/keyboard/phantom/pinout.txt b/keyboard/phantom/pinout.txt
new file mode 100644
index 000000000..36f044d15
--- /dev/null
+++ b/keyboard/phantom/pinout.txt
@@ -0,0 +1 @@
+For WS2812B LED strip support, connect DIN from strip to PE2 on Teensy (see reference image pinout.jpg) \ No newline at end of file