diff options
Diffstat (limited to 'keyboards/phantom')
-rw-r--r-- | keyboards/phantom/Makefile | 74 | ||||
-rw-r--r-- | keyboards/phantom/config.h | 91 | ||||
-rw-r--r-- | keyboards/phantom/keymaps/default/compiled.hex | 1496 | ||||
-rw-r--r-- | keyboards/phantom/keymaps/default/keymap.c | 169 | ||||
-rw-r--r-- | keyboards/phantom/led.c | 43 | ||||
-rw-r--r-- | keyboards/phantom/phantom.c | 25 | ||||
-rw-r--r-- | keyboards/phantom/phantom.h | 46 | ||||
-rw-r--r-- | keyboards/phantom/pinout.jpg | bin | 0 -> 86118 bytes | |||
-rw-r--r-- | keyboards/phantom/pinout.txt | 1 |
9 files changed, 1945 insertions, 0 deletions
diff --git a/keyboards/phantom/Makefile b/keyboards/phantom/Makefile new file mode 100644 index 000000000..3a71fd0ee --- /dev/null +++ b/keyboards/phantom/Makefile @@ -0,0 +1,74 @@ + + +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/keyboards/phantom/config.h b/keyboards/phantom/config.h new file mode 100644 index 000000000..d5878766f --- /dev/null +++ b/keyboards/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/keyboards/phantom/keymaps/default/compiled.hex b/keyboards/phantom/keymaps/default/compiled.hex new file mode 100644 index 000000000..5ee1e08d9 --- /dev/null +++ b/keyboards/phantom/keymaps/default/compiled.hex @@ -0,0 +1,1496 @@ +:100000000C945B070C949F070C949F070C949F071C
+:100010000C949F070C949F070C949F070C949F07C8
+:100020000C949F070C949F070C94DB190C94AD1A49
+:100030000C94AA280C949F070C949F070C949F077C
+:100040000C949F070C949F070C949F070C949F0798
+:100050000C949F070C9412290C949F070C949F07F3
+:100060000C949F070C949F070C949F070C949F0778
+:100070000C949F070C949F070C949F070C949F0768
+:100080000C9479140C949F070C949F070C949F0771
+:100090000C949F070C949F070C949F070C949F0748
+:1000A0000C949F070C949F070C949F0770088C0872
+:1000B000C40894089C08A408AC08B408BC081A1B1F
+:1000C0003C1B2A1C3C1B2A1C811BA41B2A1CF91B41
+:1000D0000C1C781F781FA71FA71FE61F2B212B21A1
+:1000E0002B2106202B21B620B6201C212B212B21D1
+:1000F0002521C320C320C320C320C320C320C32085
+:10010000C320C320C320C320C320C320C320C320D7
+:10011000C320D320E120E820EF20F92000F001F0F7
+:1001200002F003F004F005F006F007F008F02900F3
+:1001300035003A003B003C003D003E003F004000DF
+:10014000410042004300440045004600470048008B
+:100150001E001F0020002100220023002400250093
+:10016000260027002D002E002A002A0049004A0000
+:100170004B002B0014001A000800150017001C008B
+:1001800018000C00120013002F00300031004C004A
+:100190004D004E00390004001600070009000A0057
+:1001A0000B000D000E000F00330034002800280063
+:1001B000280028002800E100E1001D001B000600C7
+:1001C0001900050011001000360037003800E50066
+:1001D000E500520052005200E000E300E2002C0073
+:1001E0002C002C002C002C002C002C00E600E7003A
+:1001F0000151E400500051004F00010001000100D6
+:1002000001000100010001000100010001000100E6
+:1002100001000100010001000100010001000100D6
+:1002200001000100010001000100010001000100C6
+:1002300001000100007000700100010001000100D8
+: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
+:1009E000747573202D0A004743433A20342E392E64
+:1009F00032204156522D4C4942433A20312E382E56
+:100A000031204156525F415243483A206176723557
+:100A10000A004F5054494F4E533A204C55464120FE
+:100A2000424F4F544D414749432045585452414B42
+:100A3000455920434F4E534F4C4520434F4D4D4158
+:100A40004E44204E4B524F20343039360A00425526
+:100A5000494C443A20383963643532662D646972F2
+:100A60007479202831353A35353A3233204A756E5B
+:100A70002032312032303136290A005649443A209A
+:100A8000307846454544285048414E544F4D292022
+:100A90005049443A20307836303630285048414E5C
+:100AA000544F4D20524742204D4F44292056455225
+:100AB0003A203078303030330A00444553433A20EE
+:100AC000514D4B206B6579626F617264206669726B
+:100AD0006D7761726520666F72205048414E544FA9
+:100AE0004D20544B4C0A000A092D2056657273693B
+:100AF0006F6E202D0A000A092D20436F6E736F6CF4
+:100B000065202D0A4553432F713A09717569740A9E
+:100B1000000A092D204D61676963202D0A443A09B6
+:100B20004465627567204D65737361676520546F16
+:100B300067676C650A583A094D6174726978204498
+:100B400065627567204D6F646520546F67676C65DB
+:100B5000202D2053686F77206B65797072657373F1
+:100B6000657320696E206D6174726978206772699F
+:100B7000640A4B3A094B6579626F6172642044657F
+:100B800062756720546F67676C65202D2053686F0E
+:100B900077206B65797072657373207265706F7200
+:100BA000740A4D3A094465627567204D6F75736527
+:100BB00020546F67676C650A563A09566572736907
+:100BC0006F6E0A533A095374617475730A433A0994
+:100BD000416374697661746520436F6E736F6C65F1
+:100BE000204D6F64650A46312D4631303A095377FE
+:100BF0006974636820746F204C6179657220302DB0
+:100C0000392028463130203D204C30290A302D39FA
+:100C10003A0953776974636820746F204C61796571
+:100C20007220302D390A4553433A0953776974636A
+:100C30006820746F204C6179657220302028616CC7
+:100C40007465726E617465206B65792031290A477D
+:100C5000524156453A0953776974636820746F208E
+:100C60004C6179657220302028616C7465726E6108
+:100C70007465206B65792032290A50415553453AF5
+:100C8000094A756D7020746F20426F6F746C6F61CC
+:100C900064657220285265736574290A453A0950C3
+:100CA00072696E7420454550524F4D2053657474DF
+:100CB000696E67730A4E3A094E4B524F20546F6764
+:100CC000676C650A000A002575002E6E6B726F3A1C
+:100CD00020000A002575002E737761705F626163E2
+:100CE0006B736C6173685F6261636B737061636582
+:100CF0003A20000A002575002E737761705F6772D5
+:100D00006176655F6573633A20000A002575002EE1
+:100D10006E6F5F6775693A20000A002575002E73B3
+:100D20007761705F72616C745F726775693A2000F9
+:100D30000A002575002E737761705F6C616C745FBB
+:100D40006C6775693A20000A002575002E63617092
+:100D5000736C6F636B5F746F5F636F6E74726F6CD5
+:100D60003A20000A002575002E737761705F636F6B
+:100D70006E74726F6C5F636170736C6F636B3A203B
+:100D8000000A0025303258006B65796D61705F6331
+:100D90006F6E6669672E7261773A20000A002575CA
+:100DA000002E6D6F7573653A20000A002575002EC0
+:100DB0006B6579626F6172643A20000A00257500E4
+:100DC0002E6D61747269783A20000A002575002E34
+:100DD000656E61626C653A20000A00253032580069
+:100DE00064656275675F636F6E6669672E726177AF
+:100DF0003A20000A0025750064656661756C745FB1
+:100E00006C617965723A20003F004E4B524F3A2098
+:100E10006F66660A004E4B524F3A206F6E0A000A08
+:100E20006D6F7573653A206F66660A000A6D6F759F
+:100E300073653A206F6E0A000A6B6579626F6172A2
+:100E4000643A206F66660A000A6B6579626F6172A8
+:100E5000643A206F6E0A000A6D61747269783A20F4
+:100E60006F66660A000A6D61747269783A206F6E67
+:100E70000A000A64656275673A206F66660A000AAE
+:100E800064656275673A206F6E0A000A0A4A756DDA
+:100E900070696E6720746F20626F6F746C6F61642D
+:100EA00065722E2E2E2000433E20006565636F6E16
+:100EB0006669673A0A0011241FBECFEFDAE0DEBF91
+:100EC000CDBF04B603FE24C08091630290916402FA
+:100ED000A0916502B09166028730904BA740B04B5D
+:100EE000B9F410926302109264021092650210929B
+:100EF000660214BE84B7877F84BF88E10FB6F8947A
+:100F000080936000109260000FBEE0E0F8E3099566
+:100F100011E0A0E0B1E0EAE2FDE502C005900D922B
+:100F2000AC33B107D9F712E0ACE3B1E001C01D92D8
+:100F3000A336B107E1F70E9419170C94932E0C9475
+:100F40000000FF93EF93E0913C01F0913D01309759
+:100F500009F00995EF91FF910895FC01859180308A
+:100F600011F0EFDFFBCF0895FF27E0E230E247FF0B
+:100F70000CC0419597FF09C0EDE260957095809592
+:100F80009095611D711D811D911D27FF02C0219546
+:100F900030E350E2AA27660F771F881F991FAA1F08
+:100FA000A41710F0A41B63955A95A9F7AA3008F06E
+:100FB000A95FA05DAF93F39561157105810591055A
+:100FC00041F7ED3211F4EF93F395F21718F43F93D4
+:100FD000F395FBCF8F91B5DFFA95E1F70895E9918D
+:100FE000F9918591803021F0853219F0AADFF9CF8F
+:100FF000089520E0E89455915532C1F3503311F42F
+:10100000689455915A3348F4505390F3220F022EAE
+:10101000220F220F200D250FF4CF0EF42195899178
+:101020009991533619F3533729F1533559F1BC01CE
+:1010300088279927E8945C3621F4899199916894DE
+:101040005591543639F446EF7EF077FF0DC08FEF9F
+:101050009FEF0AC055374AE039F0583540E121F09A
+:10106000523642E009F00895FF93EF937DDFEF9150
+:10107000FF91B7CFFF93EF93FC0181918030B9F3DB
+:1010800060DFFBCFFF93EF9368DFF1CFDF93CF9368
+:10109000CDB7DEB72596A3DFCF91DF91089581FF0D
+:1010A00002C02E9A01C02E9882FF02C02F9A089586
+:1010B0002F980895089508950E945A080C947C0C66
+:1010C0000C945B08CF93DF93DC01462F50E049304E
+:1010D000510508F061C0FA01EA5AFF4F0C94452E01
+:1010E000EC010E94B227827280933E019A8199237B
+:1010F00059F0882311F085E301C089E20E940A2794
+:10110000DF91CF910C94FC27882311F085E301C077
+:1011100089E20E945D27F4CF12968C918823E1F139
+:10112000DF91CF910C941C1212968C918823A1F11F
+:10113000DF91CF910C94881012968C91882361F1E5
+:10114000DF91CF910C94A01012968C91882321F1FD
+:10115000DF91CF910C94BF1012968C918823E1F00F
+:10116000DF91CF910C94DA1012968C918823A1F024
+:10117000DF91CF910C94F41012968C91882361F03A
+:10118000DF91CF910C940F1112968C91882321F04E
+:10119000DF91CF910C941212DF91CF91089581E0ED
+:1011A000089581E008950C94D10808950F931F933A
+:1011B000CF93DF938C01FC01C081D181CE010E94CD
+:1011C0008B26BE010E94ED0BEC01B8010E94D308F2
+:1011D000882309F474C1F8018281882309F45BC073
+:1011E00080914A0181111FC0C431F0E7DF0709F087
+:1011F0000AC10E94D50881E080934A010E94DC2840
+:10120000909349018093480110924101109243014B
+:101210001092420110924501109244011092470130
+:10122000109246014CC180914801909149010E9461
+:10123000E828883C910570F480914101E82FF0E0A6
+:10124000EE0FFF1FEE5BFE4FD183C0838F5F809355
+:10125000410135C1C43120E7D20708F028C1C230AE
+:1012600080E7D80710F5C11590E7D90709F0DAC073
+:10127000F8018281882309F4BFC00E949221FFEF08
+:1012800024E38CE0F15020408040E1F700C00000F2
+:101290000E94372914C1C431F0E7DF0708F0D3C03A
+:1012A000C23020E7D20708F49BC0F801828188236E
+:1012B00009F4A2C00E94F92A811102C00E94D82A12
+:1012C0000E94162B90E09093110280931002C2307E
+:1012D000F0E7DF0721F48091100281607AC0C3300B
+:1012E00020E7D20721F480911002826072C0C430DE
+:1012F00080E7D80721F48091100284606AC0C5306D
+:1013000090E7D90719F48091100227C0C630E0E7B2
+:10131000DE0721F48091100280615BC0C730F0E7E6
+:10132000DF0721F480911002806253C0C83020E7AB
+:10133000D20721F48091100280644BC0C93080E74D
+:10134000D80721F480911002806843C0CA3090E72A
+:10135000D90729F480911002846088603AC0CB30AC
+:10136000E0E7DE0721F4809110028E7F32C0CC309E
+:10137000F0E7DF0721F4809110028D7F2AC0CD3085
+:1013800020E7D20721F4809110028B7F22C0CE305B
+:1013900080E7D80719F4809110021AC080911002DA
+:1013A000CF3090E7D90711F48F7E13C0C031E0E74A
+:1013B000DE0711F48F7D0DC0C131F0E7DF0711F4B6
+:1013C0008F7B07C0C231D04711F48F7702C08B7F6B
+:1013D000877F80931002809110020E941A2B6FC0A9
+:1013E000C11580E7D80741F0C130D047F1F081E066
+:1013F00080933F0180934001C801DF91CF911F91FD
+:101400000F910C94CF08C43120E7D20708F04FC0E9
+:10141000C23080E7D80708F048CFC11590E7D90758
+:1014200009F42BCFC130D04711F7F801828188230E
+:1014300019F386EC92E00E94AD0780910902816069
+:10144000809309023CC0C333E0E7DE07A1F4F80152
+:101450008281882321F010923F0182E017C08091A1
+:101460003F01811106C086E20E941C1E86E20E9496
+:10147000E41E82E019C0C433D04709F0B8CFF801A8
+:101480008281882331F01092400180E20E94331F54
+:1014900016C080914001811106C087E20E941C1E87
+:1014A00087E20E94E41E80E20E943A1F08C0C33314
+:1014B000F0E7DF0761F2C433D04709F398CF80E04B
+:1014C000DF91CF911F910F9108950C945C080C94BB
+:1014D000600821E1729FF001112446E6849FE00D2F
+:1014E000F11D1124E60FF11DEE0FFF1FE25DFE4F0F
+:1014F000859194910E94FF0B811560E49607B0F5E9
+:10150000811570E3970708F0DEC0803E9105D8F49E
+:10151000803C910508F06CC0883A910578F4853AD2
+:10152000910508F06BC08130910509F452C108F4AF
+:101530000FC18430910508F04CC10AC18B3B910565
+:1015400008F467C005C18F3F910509F048F4803F5A
+:10155000910508F0ADC0883E910508F43AC1F8C085
+:10156000811520E2920708F0A5C00895811543E592
+:10157000940790F4811562E5960708F0C8C08115BC
+:1015800071E5970708F0BEC0811520E5920708F0C5
+:101590009DC09F70906A0895811545E59407D8F421
+:1015A000811564E5960708F0C8C0482F4695469512
+:1015B00070E2479FA00111248370992721E030E059
+:1015C000B90102C0660F771F8A95E2F7CB01842B21
+:1015D000952B9A680895811576E5970708F4B2C0AF
+:1015E0009C0130562115304108F0B2C09F70AEC04A
+:1015F000FC01EE0FFF1FE456F04062C0853A9105F2
+:1016000009F4A9C0863A910509F0A8C082E890E4DF
+:101610000895883A910509F4A4C0893A910509F41E
+:10162000A3C08A3A910509F4A2C08B3A910509F446
+:10163000A1C08C3A910509F4A0C08D3A910509F436
+:101640009FC0803B910509F49EC08E3A910509F434
+:101650009DC08F3A910509F49CC0813B910509F426
+:101660009BC0823B910509F49AC0833B910509F424
+:1016700099C0843B910509F498C0853B910509F414
+:1016800097C0863B910509F496C0873B910509F404
+:1016900095C0883B910509F494C0893B910509F4F4
+:1016A00093C08A3B910509F492C080E094E40895C8
+:1016B00090650895FC01FF70EE0FFF1FE45EFE4F82
+:1016C0008591949108959927906C0895482F4370BF
+:1016D00021E030E002C0220F331F4A95E2F73C6858
+:1016E000AC0164E0569547956A95E1F74370342B59
+:1016F0008F708695869560E2869FC0011124822BAB
+:10170000932B0895982F8827816F906A0895482F0A
+:101710004695469570E2479FA00111248370992752
+:1017200021E030E0B90102C0660F771F8A95E2F729
+:10173000CB01842B952B9C680895982F8827846F64
+:10174000906A08958F719927982F8827906208953D
+:1017500080E090E0089581E890E4089583E890E4C3
+:10176000089582EE94E4089589EE94E408958AEE53
+:1017700094E4089585EB94E4089586EB94E4089549
+:1017800087EB94E408958CEC94E408958DEC94E454
+:10179000089583E895E408958AE895E4089582E938
+:1017A00095E4089584E995E4089581E296E4089526
+:1017B00083E296E4089584E296E4089585E296E44F
+:1017C000089586E296E4089587E296E408958AE211
+:1017D00096E4089580E090E0089591E1799FF0010A
+:1017E000112496E6899FE00DF11D1124E60FF11DED
+:1017F000EE0FFF1FE25DFE4F8591949108958238B0
+:10180000910549F1B0F48133910509F458C048F4C9
+:101810008932910509F44EC08A32910509F454C009
+:1018200008958533910509F440C08933910599F0F5
+:101830000895833E910529F138F4803E910591F099
+:10184000823E9105A1F00895863E9105F9F0873E0C
+:10185000910531F108952091100220FD3AC021FD3B
+:1018600038C008958091100280FD35C032C080914B
+:10187000100282FF32C08091100284FD30C083EEDE
+:1018800039C08091100282FD28C0F5CF80911002EE
+:1018900083FF27C08091100284FD21C087EE2AC0FB
+:1018A0008091100283FD1DC0F5CF8091100285FD4F
+:1018B0001AC01BC08091100285FD17C014C0809112
+:1018C000100286FD14C015C08091100286FD11C063
+:1018D0000EC080EE0FC089E30DC082EE0BC080E029
+:1018E00009C086EE07C089E205C085E303C08AE22D
+:1018F00001C081E390E0089508950C944F08E82F0B
+:10190000F0E0E05FFE4F8081E82FEF70F0E082951D
+:101910008F7021E030E0A90102C0440F551F8A9565
+:10192000E2F740A308950F931F93CF93DF93C0E195
+:10193000D0E001E010E0FE01E05FFE4F8081E82F83
+:10194000EF70F0E021A182958F70A80102C0440FD2
+:10195000551F8A95E2F7CA01822B81A38C2F0E9422
+:101960007F0C219740F785E090E061E070E0FC019A
+:10197000EF5DFE4F2081E22FEF70F0E042A1229553
+:101980002F70DB0102C0AA0FBB1F2A95E2F79D0151
+:10199000242B22A3019758F7DF91CF911F910F912C
+:1019A00008950F931F93CF93DF9385B7806885BF0A
+:1019B00085B7806885BFC0E1D0E001E010E0FE019E
+:1019C000E05FFE4F8081E82FEF70F0E021A182956B
+:1019D0008F70A80102C0440F551F8A95E2F7CA0113
+:1019E000822B81A38C2F0E947F0C219740F785E0EA
+:1019F00090E061E070E0FC01EF5DFE4F2081E22F9E
+:101A0000EF70F0E042A122952F70DB0102C0AA0F17
+:101A1000BB1F2A95E2F79D01242B22A3019758F7BB
+:101A2000DF91CF911F910F910C94650AEF92FF9275
+:101A30000F931F93CF93DF930CE511E0C0E1EE24E9
+:101A4000E394F12CD5E08C2F0E947F0C85E090E090
+:101A500040E0FC01EF5DFE4F5081E52FEF70F0E0BC
+:101A600020A130E052955F7002C0359527955A95B8
+:101A7000E2F720FD07C09701082E01C0220F0A944B
+:101A8000EAF7422B019728F7F80182918F0184171A
+:101A900019F04083D09300018C2F0E947F0CC1501D
+:101AA00090F68091000187FD32C09091090290FF6D
+:101AB00010C0282F332727FD30953F938F938FE059
+:101AC00093E09F938F930E9446080F900F900F9082
+:101AD0000F908091000181508093000187FD07C025
+:101AE0008FE99FE00197F1F700C0000010C080E08F
+:101AF00090E0FC01E45AFE4FDC01A55BBE4F50961E
+:101B00002C91208B01978F3EEFEF9E0791F70E945B
+:101B1000670A81E0DF91CF911F910F91FF90EF90C5
+:101B200008958F929F92AF92BF92CF92DF92EF92E1
+:101B3000FF9291E001C0990F8A95EAF7292F40E1C1
+:101B400050E060E070E0CB01C12CD12C7601C39451
+:101B5000DA01A45ABE4F3C91322371F0460157017D
+:101B6000042E04C0880C991CAA1CBB1C0A94D2F732
+:101B7000682979298A299B294150510948F7FF9002
+:101B8000EF90DF90CF90BF90AF909F908F9008958F
+:101B90000F931F93CF93DF938091090280FF04C0BE
+:101BA00080EF92E00E94AD07C0E0D0E008ED12E0C7
+:101BB0008091090280FF14C08C2F0E94910DCB01EF
+:101BC0000E9452289F938F93DF93CF931F930F937D
+:101BD0000E9446080F900F900F900F900F900F905B
+:101BE0002196C630D10521F7DF91CF911F910F913A
+:101BF0000895CF93DF93C5E0D0E08C2F0E94910D24
+:101C0000CB010E943028D80FC150B8F78D2FDF913B
+:101C1000CF9108952EB1342F309523233EB1432B1D
+:101C20003FB7F894FC01680F791FE617F70789F0B2
+:101C3000819198E04EB9000000C087FF2EB9880F4F
+:101C4000000000C000C000C02EB900C09A9591F7F6
+:101C5000ECCF3FBF08952DB1242B2DB99B01220F4E
+:101C6000331F620F731F0E940A0E87EC90E00197EA
+:101C7000F1F700C00000089544E00C942B0ECF92C1
+:101C8000DF92EF92FF920F931F93CF93DF936C013C
+:101C9000790150E0FA01EE5DF94F4491242F8FEF66
+:101CA00090E0FC01E61BF109EE5DF94FE491E0954F
+:101CB00009F490C0C42FD0E08E1B91098C9FB00115
+:101CC0008D9F700D9C9F700D1124372FE72F0CE313
+:101CD00010E0C601B8010E941D2EDC0162307105C2
+:101CE00009F443C0C8F46115710589F161307105CB
+:101CF00009F073C0C31BD109B801681B790BC69FDB
+:101D0000C001C79F900DD69F900D1124B8010E946D
+:101D10001D2E832FE42F5BC06430710509F44AC087
+:101D2000A8F16530710509F058C0C31BD109B8018D
+:101D3000681B790BC69FC001C79F900DD69F900D61
+:101D40001124B8010E941D2E832F860F49C0C31B8A
+:101D5000D109CC9DC001CD9D900DDC9D900D11242D
+:101D6000B8010E941D2E832F22C0C31BD109CA9F18
+:101D7000C001CB9F900DDA9F900D1124B8010E94F5
+:101D80001D2E832F860F432FE22F2AC0C31BD1099C
+:101D9000B801681B790BC69FC001C79F900DD69FE5
+:101DA000900D1124B8010E941D2E842F432FE32F84
+:101DB000E60F16C0C31BD109CA9FC001CB9F900D6F
+:101DC000DA9F900D1124B8010E941D2E842F432FFD
+:101DD000460F06C0842FE42F03C080E0E0E040E01F
+:101DE000D70111964C931197EC9312968C93DF9137
+:101DF000CF911F910F91FF90EF90DF90CF900895BA
+:101E000088E090E00C94532EAB01BC0188E090E098
+:101E10000C94712E8091090280FF08C083EF94E03A
+:101E20009F938F930E9446080F900F9083E08093BA
+:101E3000120280911302807884668F778093130258
+:101E40008CEC8093140280931502609112027091C1
+:101E5000130280911402909115020C94040F80914A
+:101E6000090280FF08C08CED94E09F938F930E943D
+:101E700046080F900F908091090280FF0FC080915B
+:101E8000120281701F928F938FEB94E09F938F9338
+:101E90000E9446080F900F900F900F9080910902BA
+:101EA00080FF10C08091120286958F731F928F93CE
+:101EB00084EA94E09F938F930E9446080F900F90BE
+:101EC0000F900F908091090280FF19C0809112023B
+:101ED000881F8827881F90911302292F220F822B99
+:101EE00097FB992790F99F938F938AE894E09F93AB
+:101EF0008F930E9446080F900F900F900F90809143
+:101F0000090280FF0EC0809114021F928F9380E718
+:101F100094E09F938F930E9446080F900F900F902C
+:101F20000F908091090280FF0EC0809115021F92D0
+:101F30008F9386E594E09F938F930E9446080F90BD
+:101F40000F900F900F9008958091120280FF06C0AD
+:101F500064E170E08AE192E00C943C0E80E090E055
+:101F6000FC01E65EFD4F11821082128203968C33D3
+:101F70009105B1F7EDCF20E030E0F901E65EFD4FCD
+:101F80008183608342832D5F3F4F2C333105A9F756
+:101F90000C94A40FEF92FF920F931F93CF93DF93B4
+:101FA00000D01F92CDB7DEB700911202109113023C
+:101FB000209114023091150200931602109317021B
+:101FC00020931802309319022091120220FF21C0A1
+:101FD000042FF62EE92E182F9E012F5F3F4F0E94EF
+:101FE0003F0E8091160210FB87F98093160216951A
+:101FF000809117028078182BE0FA17F910931702D6
+:10200000F0921802009319024B8169818A810E9423
+:10201000BB0F0F900F900F90DF91CF911F910F91F9
+:10202000FF90EF9008950F931F93CF93DF93EC01F0
+:10203000062F142F9091120290FF65C0892F8E7782
+:10204000823021F4CE010E94CA0F1BC0892F8695D1
+:102050008F732EE3280F2F73243018F4109115027C
+:1020600010C0865C8F73893060F4C92FCC1FCC27D9
+:10207000CC1FD09113028D2F880FC82BD7FBDD27E3
+:10208000D0F980911202C0FB87F980931202C695A5
+:10209000809113028078C82BD0FBC7F9C09313023C
+:1020A00000931402109315026091120270911302B2
+:1020B00080911402909115020E94040F80911502E4
+:1020C0001F928F93809114021F928F93809112021E
+:1020D000881F8827881F90911302292F220F822B97
+:1020E00097FB992790F99F938F9382E593E09F93B5
+:1020F0008F930E9446088DB79EB708960FB6F89446
+:102100009EBF0FBE8DBFDF91CF911F910F9108959C
+:10211000E2E1F2E02081221F2227221F30911302E8
+:10212000432F440F842F822B37FB992790F90A966F
+:1021300068E671E00E94312E438162810C94131095
+:1021400020911202221F2227221F30911302432FB7
+:10215000440F842F822B37FB992790F98A30910501
+:102160001CF4825A9E4F01C00A9768E671E00E94F3
+:10217000312E40911502609114020C94131060915D
+:102180001402862F90E08F3E910514F46F5E01C01B
+:102190006FEF80911202881F8827881F9091130289
+:1021A000292F220F97FB992790F940911502822B36
+:1021B0000C94131060911402862F90E0419714F054
+:1021C000615101C060E080911202881F8827881F3A
+:1021D00090911302292F220F97FB992790F9409194
+:1021E0001502822B0C94131040911502842F90E05D
+:1021F0008F3E910514F44F5E01C04FEF80911202A3
+:10220000881F8827881F90911302292F220F97FB80
+:10221000992790F960911402822B0C94131040912D
+:102220001502842F90E0419714F0415101C040E025
+:1022300080911202881F8827881F90911302292FEE
+:10224000220F97FB992790F960911402822B0C942E
+:10225000131080917E0181110FC081E080937E0177
+:1022600089E0809391008FB7F89493E09093990060
+:1022700090ED909398008FBF0895809171008260D7
+:10228000809371008091090280FF08C081E493E08F
+:102290009F938F930E9446080F900F90089580910E
+:1022A00071008D7F809371008091090280FF08C0CA
+:1022B0008FE293E09F938F930E9446080F900F90B8
+:1022C00008959091120290FF4BC09178811102C045
+:1022D000926007C0883110F09E6203C08F73880F30
+:1022E000982B9093120260911202709113028091C8
+:1022F0001402909115020E94040F8091120286959B
+:102300008F731F928F9385EA93E09F938F930E9420
+:10231000460880911202982F9E770F900F900F9091
+:102320000F90923019F40E944F1107C08695825C7D
+:102330008F73863110F40E943D1180911202881F24
+:102340008827881F90911302292F220F97FB992726
+:1023500090F94091150260911402822B0C94131095
+:102360000895809109028160809309028FE394E0CF
+:102370009F938F930E94460881E080937F01809114
+:1023800009020F900F9080FF08C089E294E09F93AC
+:102390008F930E9446080F900F900E94F92A811196
+:1023A00010C08091090280FF08C081E094E09F93F3
+:1023B0008F930E9446080F900F900E94D82A0E9487
+:1023C0000A0F0E94000F6093120270931302809311
+:1023D0001402909315026E77C1F48091090280FF78
+:1023E00008C088EB93E09F938F930E9446080F905C
+:1023F0000F900E940A0F0E94000F609312027093C8
+:10240000130280931402909315020E942F0F0E94D2
+:1024100029118091120280FF04C086958F730C945D
+:10242000611108958091120286958F738F5F8831B4
+:1024300008F081E00C94611180911202982F909520
+:1024400090FB80F980931202609112027091130246
+:1024500080911402909115020E94040F8091120243
+:1024600081701F928F9387E793E09F938F930E94D1
+:102470004608809112020F900F900F900F9080FFEE
+:1024800004C086958F730C9461110E944F112FEF39
+:1024900080E792E0215080409040E1F700C00000CA
+:1024A0000C94A40FCF93C82F80917C0190917D0153
+:1024B0000E94E828EC2FF0E0E25EFA4FE491F0E0B1
+:1024C0008E179F0718F10E94DC2890937D0180935E
+:1024D0007C01E0917B01F0E0EE5DFA4F4491809148
+:1024E0001202881F8827881F90911302292F220F1C
+:1024F00097FB992790F960911402822B0E94CA0FD2
+:1025000080917B0190E0019680937B01CF910895AB
+:10251000CF93C82F8091790190917A010E94E82889
+:10252000EC2FF0E0E55EFA4FE491F0E08E179F07A4
+:10253000E8F00E94DC2890937A0180937901409121
+:1025400015026091140280917701909178010E94A8
+:10255000CA0F8091770190917801019668E671E049
+:102560000E941D2E9093780180937701CF9108955A
+:10257000CF92DF92FF920F931F93CF93DF93F82EAA
+:1025800080917501909176010E94E828EF2DE695E3
+:10259000F0E0E55EFA4FE491F0E08E179F07E8F176
+:1025A0000E94DC2890937601809375010AE112E085
+:1025B000C0E0D0E088E6C82EDD24D394809173017A
+:1025C000909174018C0F9D1FB6010E941D2E9801E1
+:1025D00040911502609114020E943F0E62960D5FB9
+:1025E0001F4FC83681E0D80749F70E94A40F2091F9
+:1025F000730130917401F0FE0AC0C9010196BE0159
+:102600000E941D2E909374018093730106C0215087
+:1026100031093093740120937301DF91CF911F91A1
+:102620000F91FF90DF90CF9008958F929F92AF927D
+:10263000BF92CF92DF92EF92FF920F931F93CF93AF
+:10264000DF93C82F80FF03C0DD24DA9402C0DD24AD
+:10265000D39480917101909172010E94E828C695EF
+:10266000EC2FF0E0E85EFA4FE491F0E08E179F0760
+:1026700008F467C00E94DC28909372018093710176
+:102680009AE1E92E92E0F92E0CE112E0C0E0D0E0F0
+:1026900027E0822E912CF80131971082F7011082E9
+:1026A000F801108287E0A82EB12CC12C8091700116
+:1026B0008C0D87FD8C5E992787FD9095C817D907EB
+:1026C000E9F4209115022A9DC0012B9D900D112443
+:1026D000B4010E94312E462F80911202881F882754
+:1026E000881F90911302592F550F97FB992790F946
+:1026F000970160911402852B0E943F0ECD0CF1E0F2
+:10270000AF1AB10899F6219683E0E80EF11C0D5F2F
+:102710001F4FC431D10509F0BECF0E94A40F809194
+:10272000700191E0D91206C0811102C083E107C097
+:10273000815005C090E00196BE010E94312E809329
+:102740007001DF91CF911F910F91FF90EF90DF907B
+:10275000CF90BF90AF909F908F9008959F92AF922F
+:10276000BF92CF92DF92EF92FF920F931F93CF937E
+:10277000DF93CDB7DEB7EC970FB6F894DEBF0FBE90
+:10278000CDBF182F80916E0190916F010E94E828B3
+:10279000E12FF0E0EB5EFA4FE491F0E08E179F0737
+:1027A00008F495C00E94DC2890936F0180936E011D
+:1027B000CE0101967C015E0193E0A90EB11CC12CF3
+:1027C000D12C8701F50131971082F7011082F501B4
+:1027D0001082912C9091010180916D01999E800D44
+:1027E000112487FD04C084311CF083E101C080E026
+:1027F000992787FD9095C816D906A1F480911202F9
+:10280000881F8827881F90911302592F550F97FB17
+:10281000992790F997014091150260911402852B38
+:102820000E943F0E9394F7E09F12D4CF8FEFC81A07
+:10283000D80A93E0E90EF11CE3E0AE0EB11CF4E11E
+:10284000CF16D10409F0BECF2CE132E059E0E52EDD
+:10285000F12C64E1C62ED12CC701B6010E94312EA5
+:10286000D9011197FC01EE0FFF1FE80FF91FE00FD0
+:10287000F11F81818C93119780818C938281F90162
+:102880008083FFEFEF1AFF0A2D5F3F4F8DE1E816BF
+:10289000F10411F70E94A40F9091010180916D0144
+:1028A000913049F48A3F2CF489EF80936D018FEFCA
+:1028B00008C081500AC08B313CF08AE180936D01E1
+:1028C00081E08093010103C08F5F80936D01EC96DE
+:1028D0000FB6F894DEBF0FBECDBFDF91CF911F9131
+:1028E0000F91FF90EF90DF90CF90BF90AF909F90AF
+:1028F00008951F920F920FB60F9211242F933F93BA
+:102900004F935F936F937F938F939F93AF93BF93F7
+:10291000EF93FF938091120286958F739EE3980F39
+:102920009F73943020F482500E94521223C09AE385
+:10293000980F9F73933020F486500E9488121AC01B
+:1029400097E3980F9F73963020F489500E94B81235
+:1029500011C091E3980F9F73963020F48F500E941E
+:10296000151308C09BE2980F9F73933018F485519C
+:102970000E94AE13FF91EF91BF91AF919F918F9104
+:102980007F916F915F914F913F912F910F900FBE6B
+:102990000F901F90189580919301089508959FB707
+:1029A000F894109282019FBF90915A02943009F0DE
+:1029B00057C09091E9009F703091EC00232F217057
+:1029C00030FD20E8922B23E02093E9002091EB00DA
+:1029D00020FF43C02091EE0027FF3FC020918001DF
+:1029E000222321F02091E80025FF37C010928001BA
+:1029F00026E03091E80035FD15C030915A023430A0
+:102A000061F53091EB0035FD28C0215021F481E0C3
+:102A10008093800122C0EFE9FFE03197F1F700C019
+:102A20000000E7CF8093F1008091E80085FD0AC0A7
+:102A30008091E80080FFFCCF8091E8008E77809342
+:102A4000E80006C08FB7F89421E0209382018FBF81
+:102A50009F709093E90080E008959F709093E90043
+:102A60008FEF0895CF93DF9300D01F92CDB7DEB7DD
+:102A700020915A02243021F523E029839B838A8305
+:102A800082E08093E9008FEF9091E800815095FDFE
+:102A900006C095ED9A95F1F700008111F5CF809170
+:102AA000E80085FF0DC040E050E063E070E0CE013B
+:102AB00001960E94CB178091E8008E778093E80002
+:102AC0000F900F900F90DF91CF910895CF93DF93E8
+:102AD00000D01F92CDB7DEB79C0180915A0284309E
+:102AE00019F592E099833B832A839093E9008FEF55
+:102AF0009091E800815095FD06C095ED9A95F1F70B
+:102B000000008111F5CF8091E80085FF0DC040E005
+:102B100050E063E070E0CE0101960E94CB178091F7
+:102B2000E8008E778093E8000F900F900F90DF9170
+:102B3000CF910895CF93DF93EC0190915A02943096
+:102B400009F046C080910C018823D9F080910D01D5
+:102B50008823B9F09093E9008FEF9091E8008150BD
+:102B600095FD06C095E19A95F1F700008111F5CF2A
+:102B70008091E80085FF2CC040E050E060E170E00B
+:102B800017C081E08093E9008FEF9091E8008150B9
+:102B900095FD06C095ED9A95F1F700008111F5CFEE
+:102BA0008091E80085FF14C040E050E068E070E0EC
+:102BB000CE010E94CB178091E8008E778093E800C9
+:102BC00080E1FE01A3E8B1E001900D928A95E1F762
+:102BD000DF91CF91089587E497E00E94AD0780913F
+:102BE0005902811109C00E9460190E94BD1980918B
+:102BF000E20084608093E200089583E497E00E94FD
+:102C0000AD071092590208958FE397E00C94AD0739
+:102C10008BE397E00C94AD0787E397E00E94AD0744
+:102C20000C94A428209181012F5F822F62E30E94DF
+:102C3000112E992319F0209381010895109281019A
+:102C400080918201882371F180915A02843041F58C
+:102C50008091E9008F702091EC00922F917020FDFF
+:102C600090E8892B93E09093E9009091EB0090FF1E
+:102C700014C09091EE0097FF10C09091E80095FF6E
+:102C800003C01092F100F9CF9091E80090FF05C0C9
+:102C90009091E8009E779093E8008F708093E90010
+:102CA00010928201089542E061EC81E00E94DA18FE
+:102CB00042E061EC82E00E94DA1842E261EC83E0DB
+:102CC0000E94DA1842E161EC84E00C94DA188091F9
+:102CD0005C02833009F455C030F4813071F08230E9
+:102CE00009F48EC008958A3009F47AC08B3009F453
+:102CF00060C0893009F09CC020C080915B02813A9D
+:102D000009F096C08091E800877F8093E800809169
+:102D10005F0290916002892B21F460E183E891E0E9
+:102D200003C060E080E090E070E00E94161880919F
+:102D3000E8008B778093E800089580915B028132F0
+:102D400009F076C080915F0290916002009719F0BF
+:102D5000039709F06DC08091E800877F8093E800B9
+:102D60008091E80082FD05C080915A028111F8CF60
+:102D70005FC08091F100809393018091E8008B7790
+:102D800053C080915B02813A09F052C080915F028A
+:102D900090916002892B09F04BC08091E800877FF9
+:102DA0008093E8008091E80080FFFCCF80910C01C7
+:102DB00036C080915B028132D9F580915F0290919B
+:102DC0006002892BA9F58091E800877F8093E80055
+:102DD0000E940F1980915D0280930C010C94922146
+:102DE00080915B02813221F58091E800877F80939A
+:102DF000E8000E940F1980915E028093940108956B
+:102E000080915B02813AA1F48091E800877F8093F2
+:102E1000E8008091E80080FFFCCF809194018093CE
+:102E2000F1008091E8008E778093E8000C940F19F0
+:102E3000089584B7877F84BF88E10FB6F8948093A4
+:102E40006000109260000FBE80E8809361001092D5
+:102E500061000E94E41C0E9460190E94BD198091CB
+:102E6000E20084608093E2008FEC94E10E942B28C2
+:102E700078940E94421C0E94E61C82E091E00E942D
+:102E80005D1C86E297E00E94AD0780915A02853072
+:102E900089F482E297E00E94AD070E946C2880913D
+:102EA0005802882391F30E949628882371F30E9488
+:102EB000B517EBCF0E940C1DE8CF292F3327233005
+:102EC0003105C9F064F42130310581F0223031053B
+:102ED00009F043C084E790E023E837E042C02132A4
+:102EE0003105F1F02232310541F137C082E190E045
+:102EF00027EF37E036C099278130910541F08230C5
+:102F0000910541F0892B49F5EFE7F7E005C0EDE6C3
+:102F1000F7E002C0EBE4F7E0849190E09F0121C06C
+:102F20006430D8F4E62FF0E0EE0FFF1FED5CFE4FAB
+:102F30002081318189E090E014C0643070F470E049
+:102F4000FB01EE0FFF1FE55DFE4F20813181FB018C
+:102F5000E95DFE4F808190E004C080E090E020E0D9
+:102F600030E0FA0131832083089580E189BD82E158
+:102F700089BD09B400FEFDCF8091D8008F7D80937C
+:102F8000D8008091E00082608093E0008091E000B2
+:102F900081FDFCCF0895CF92DF92EF92FF920F93C5
+:102FA0001F93CF93DF93EC018B016A010E942E19CE
+:102FB000811133C0C114D10439F0F60180819181AF
+:102FC000081B190BC80FD91FE12CF12C0115110595
+:102FD00019F18091E80085FD16C08091E8008E7798
+:102FE0008093E800C114D10449F0F60180819181F9
+:102FF000E80EF91EF182E08285E00FC00E942E19D2
+:10300000882321F30AC089918093F10001501109AE
+:10301000FFEFEF1AFF0ADACF80E0DF91CF911F9127
+:103020000F91FF90EF90DF90CF9008952091610273
+:10303000309162022617370748F06115710539F49F
+:103040002091E8002E772093E80001C0B90140E00C
+:1030500061157105A9F120915A02222309F443C098
+:10306000253009F442C02091E80023FD40C02091A2
+:10307000E80022FD32C02091E80020FFE9CF409116
+:10308000F3002091F20030E0342BFC01CF016115F8
+:10309000710559F02830310540F481918093F10099
+:1030A000615071092F5F3F4FF1CF41E0283031056A
+:1030B00009F040E02091E8002E772093E800C8CF87
+:1030C0004111C9CF0AC080915A02882361F085302E
+:1030D00061F08091E80083FD0AC08091E80082FFE2
+:1030E000F2CF80E0089582E0089583E0089581E0C2
+:1030F000089520916102309162022617370748F047
+:103100006115710539F42091E8002E772093E800CD
+:1031100001C0B901FC0120E06115710591F18091B8
+:103120005A02882309F440C0853009F43FC08091D9
+:10313000E80083FD3DC08091E80082FD2FC08091B2
+:10314000E80080FFE9CF2091F3008091F20090E049
+:10315000922B6115710559F08830910540F4249146
+:103160002093F1003196615071090196F2CF21E070
+:10317000089709F020E08091E8008E778093E800BE
+:10318000CBCF2111CCCF0AC080915A02882361F0A5
+:10319000853061F08091E80083FD0AC08091E800ED
+:1031A00082FFF2CF80E0089582E0089583E00895E1
+:1031B00081E00895982F973058F59093E90098177B
+:1031C00039F07091EC002091ED005091F00003C0B7
+:1031D000242F762F50E021FF19C03091EB003E7F65
+:1031E0003093EB003091ED003D7F3093ED00309156
+:1031F000EB0031603093EB007093EC002093ED0016
+:103200005093F0002091EE0027FF07C09F5FD3CFBF
+:103210008F708093E90081E0089580E008958091A7
+:103220005B0287FF11C08091E80082FD05C080919C
+:103230005A028111F8CF11C08091E8008B770BC042
+:1032400080915A02882349F08091E80080FFF8CFEE
+:103250008091E8008E778093E80008952091E40043
+:103260003091E50095E64091EC00842F817040FF9D
+:1032700022C08091E80080FD1CC080915A02882302
+:1032800091F0853091F08091EB0085FD10C0409168
+:10329000E4005091E5004217530729F39A01915039
+:1032A00011F784E0089582E0089583E0089581E0B5
+:1032B000089580E008954091E80042FFDECF089530
+:1032C0000E94CE190E94D619E0EEF0E08081816064
+:1032D0008083E8EDF0E080818F77808319BCA7EDD3
+:1032E000B0E08C918E7F8C9380818F7E8083109252
+:1032F000590208950F931F93CF93DF930E94CE1925
+:103300000E94D619C8EDD0E088818F7788838881A4
+:103310008068888388818F7D888319BC10925A02C7
+:1033200010925602109258021092570200EE10E0CE
+:10333000F80180818B7F808388818160888342E06F
+:1033400060E080E00E94DA18E1EEF0E080818E7F9C
+:103350008083E2EEF0E080818160808380818860FC
+:103360008083F80180818E7F80838881806188835B
+:10337000DF91CF911F910F910895E8EDF0E08081EA
+:103380008F7E8083E7EDF0E080818160808384E040
+:1033900082BF81E0809359020C947A19E8EDF0E045
+:1033A00080818E7F80831092E20008951092DA006F
+:1033B0001092E10008951F920F920FB60F92112400
+:1033C0002F933F934F935F936F937F938F939F932D
+:1033D000AF93BF93EF93FF938091E10082FF0BC007
+:1033E0008091E20082FF07C08091E1008B7F809393
+:1033F000E1000E9412168091DA0080FF1FC08091C8
+:10340000D80080FF1BC08091DA008E7F8093DA00A5
+:103410008091D90080FF0DC080E189BD82E189BD26
+:1034200009B400FEFDCF81E080935A020E94EB15A3
+:1034300005C019BC10925A020E94FD158091E1004E
+:1034400080FF19C08091E20080FF15C08091E200EA
+:103450008E7F8093E2008091E20080618093E200A1
+:103460008091D80080628093D80019BC85E0809359
+:103470005A020E9408168091E10084FF30C08091BA
+:10348000E20084FF2CC080E189BD82E189BD09B4DE
+:1034900000FEFDCF8091D8008F7D8093D800809171
+:1034A000E1008F7E8093E1008091E2008F7E809327
+:1034B000E2008091E20081608093E20080915602F8
+:1034C000882311F084E007C08091E30087FD02C0EB
+:1034D00081E001C083E080935A020E940C16809123
+:1034E000E10083FF29C08091E20083FF25C0809125
+:1034F000E100877F8093E10082E080935A0210927E
+:1035000056028091E1008E7F8093E1008091E2007D
+:103510008E7F8093E2008091E20080618093E200E0
+:1035200042E060E080E00E94DA188091F00088605C
+:103530008093F0000E940416FF91EF91BF91AF912C
+:103540009F918F917F916F915F914F913F912F91BB
+:103550000F900FBE0F901F9018951F920F920FB6ED
+:103560000F9211242F933F934F935F936F937F9309
+:103570008F939F93AF93BF93CF93DF93EF93FF937B
+:10358000C091E900CF708091EC00D82FD17080FD00
+:10359000D0E81092E9008091F000877F8093F000DE
+:1035A00078940E94F11A1092E9008091F0008860EE
+:1035B0008093F000CD2BCF70C093E900FF91EF9185
+:1035C000DF91CF91BF91AF919F918F917F916F913B
+:1035D0005F914F913F912F910F900FBE0F901F90D1
+:1035E00018951F93CF93DF93CDB7DEB7AA970FB689
+:1035F000F894DEBF0FBECDBFEBE5F2E088E08E0FA2
+:103600009091F10091938E13FBCF0E9467168091E9
+:10361000E80083FF1FC180915B0290915C02492FFB
+:1036200050E04A30510508F015C1FA01E15AFF4F48
+:103630000C94452E803881F0823809F00BC18091BE
+:103640005F028F708093E9008091EB0085FB8827F3
+:1036500080F91092E90006C08091570290915802BB
+:10366000911182609091E800977F9093E800809399
+:10367000F1001092F100C8C0282F2D7F09F0EAC098
+:10368000882319F0823061F0E5C080915D028130BD
+:1036900009F0E0C0933009F080E0809358022BC01D
+:1036A00080915D02811127C080915F028F7009F4C3
+:1036B000D1C08093E9002091EB0020FF1CC0933023
+:1036C00021F48091EB00806214C09091EB00906136
+:1036D0009093EB0021E030E0A90102C0440F551F98
+:1036E0008A95E2F74093EA001092EA008091EB009D
+:1036F00088608093EB001092E9008091E800877F5A
+:1037000086C08111A7C010915D021F778091E300F0
+:103710008078812B8093E3008091E800877F8093FD
+:10372000E8000E940F198091E80080FFFCCF809193
+:10373000E30080688093E300111102C082E001C0C1
+:1037400083E080935A0286C08058823008F082C09D
+:1037500080915D0290915E028C3D53E0950779F572
+:1037600083E08A838AE289834FB7F894DE01139657
+:1037700020E03EE051E2E32FF0E050935700E49167
+:1037800020FF03C0E295EF703F5FEF708E2F90E057
+:10379000EA3010F0C79601C0C0968D939D932F5FBD
+:1037A000243149F74FBF8091E800877F8093E8007C
+:1037B0006AE270E0CE0101960E94161814C0AE01B4
+:1037C0004F5F5F4F60915F020E945D17BC010097E1
+:1037D00009F440C09091E800977F9093E8008981B8
+:1037E0009A810E9479188091E8008B778093E80095
+:1037F00031C0803879F58091E800877F8093E800B8
+:10380000809156028093F1008091E8008E7780933A
+:10381000E8000E940F191EC081111CC090915D022A
+:103820009230C0F48091E800877F8093E800909305
+:1038300056020E940F1980915602811106C0809194
+:10384000E30087FD02C081E001C084E080935A025A
+:103850000E9453168091E80083FF0AC08091E8001F
+:10386000877F8093E8008091EB0080628093EB007B
+:10387000AA960FB6F894DEBF0FBECDBFDF91CF91F1
+:103880001F910895CF9380915A028823A1F0C0918F
+:10389000E900CF709091EC00892F817090FD80E855
+:1038A000C82B1092E9008091E80083FD0E94F11A74
+:1038B000CF70C093E900CF91089590939A018093BF
+:1038C00099010895E0919901F0919A01309721F0C2
+:1038D0000190F081E02D099480E00895EF92FF922D
+:1038E0000F931F93CF93DF93E0919901F0919A0189
+:1038F0003097B1F18C010280F381E02D0995809120
+:10390000090282FF2DC080FF04C080EE98E00E9473
+:10391000AD07E80110E18AEDE82E88E0F82E8091ED
+:10392000090280FF0BC088811F928F93FF92EF9254
+:103930000E9446080F900F900F900F901150219603
+:103940001111EDCF8091090280FF0AC088ED98E047
+:10395000DF91CF911F910F91FF90EF900C94AD07E5
+:10396000DF91CF911F910F91FF90EF9008952091DB
+:103970009701309198018217930771F09093980105
+:1039800080939701E0919901F0919A01309721F08D
+:103990000680F781E02D09940895209195013091DA
+:1039A00096018217930771F0909396018093950189
+:1039B000E0919901F0919A01309721F00084F1850E
+:1039C000E02D0994089508950C94E31C0E94D328D7
+:1039D0000E94D10C0E94A0290C94B111CF93DF93C7
+:1039E0001F92CDB7DEB79091090292FF10C090FFF1
+:1039F0000EC01F928F9322EF38E03F932F9389835D
+:103A00000E9446080F900F900F900F9089810F90A1
+:103A1000DF91CF910C947D0C3F924F925F926F9209
+:103A20007F928F929F92AF92BF92CF92DF92EF924E
+:103A3000FF920F931F93CF93DF93CDB7DEB72B97F2
+:103A40000FB6F894DEBF0FBECDBF0E94160D84EBFB
+:103A500091E09F838E8305E010E0412C512C3201D0
+:103A60004394302E802F0E94910DEE81FF81F290C1
+:103A7000E290D290C290FF83EE834B015C018C24D4
+:103A80009D24AE24BF2481149104A104B104A1F4A7
+:103A90000150110930F78FEF89838A831B820E94BE
+:103AA000DC288160782F9D838C8349815A816B81CA
+:103AB0008D810E94EE1D57C0E0910902E1FF0AC00E
+:103AC000688779878A879B870E94C80D9B858A852E
+:103AD00079856885E0E1F0E0730162010E2E04C093
+:103AE000CC0CDD1CEE1CFF1C0A94D2F7A70196013A
+:103AF000282139214A215B21232B242B252B79F1E5
+:103B0000E9833A82AB01BC014C215D216E217F210A
+:103B100081E0452B462B472B09F480E08B830E94E4
+:103B2000DC288160782F9D838C8349815A816B8149
+:103B30008D810E94EE1D000F111F000F111FF80153
+:103B4000E456FE4F80819181A281B381C826D92697
+:103B5000EA26FB26C082D182E282F38204C031973A
+:103B600008F0BACF95CF10919B010E94621C1817E4
+:103B7000E9F00E94621C80939B012B960FB6F8948B
+:103B8000DEBF0FBECDBFDF91CF911F910F91FF9090
+:103B9000EF90DF90CF90BF90AF909F908F907F90ED
+:103BA0006F905F904F903F900C94EE1C2B960FB649
+:103BB000F894DEBF0FBECDBFDF91CF911F910F9163
+:103BC000FF90EF90DF90CF90BF90AF909F908F903D
+:103BD0007F906F905F904F903F900895CF93DF93C9
+:103BE000CDB7DEB72B970FB6F894DEBF0FBECDBFB3
+:103BF0004F83588769877A878B87DE01119686E025
+:103C0000FD0111928A95E9F785E0FE013796019052
+:103C10000D928A95E1F749815A816B817C818D8172
+:103C20009E810E9430242B960FB6F894DEBF0FBE03
+:103C3000CDBFDF91CF910895CF93882309F4C2C0FF
+:103C4000C82F823859F40E94621C81FDBBC089E3F1
+:103C50000E940A270E94FC2789E30CC0833879F46C
+:103C60000E94621C80FDAEC083E50E940A270E946C
+:103C7000FC2783E50E945D27CF910C94FC278438B4
+:103C800059F40E94621C82FD9DC087E40E940A27AD
+:103C90000E94FC2787E4EECF8CEF8C0F813A48F42A
+:103CA0008C2F0E94C22D81118DC08C2F0E940A275B
+:103CB000E3CF80E28C0F883048F4C77081E001C008
+:103CC000880FCA95EAF70E94B527D6CF8BE58C0FEF
+:103CD000833078F4C53A29F0C63A31F083E890E0B1
+:103CE00005C081E890E002C082E890E0CF910C949A
+:103CF000B71C88E58C0F833108F064C0C83A39F1ED
+:103D0000C93A41F1CA3A49F1CB3A51F1CC3A59F1A9
+:103D1000CD3A61F1C03B69F1CE3A71F1CF3A79F118
+:103D2000C13B81F1C23B89F1C33B91F1C43B99F1A5
+:103D3000C53BA1F1C63BA9F1C73BB1F1C83BB9F105
+:103D4000C93BC1F1CA3BC9F180E090E038C082EEC6
+:103D500090E035C089EE90E032C08AEE90E02FC04E
+:103D600085EB90E02CC086EB90E029C087EB90E0DB
+:103D700026C08CEC90E023C08DEC90E020C083E85E
+:103D800091E01DC08AE891E01AC082E991E017C075
+:103D900084E991E014C081E292E011C083E292E0F4
+:103DA0000EC084E292E00BC085E292E008C086E299
+:103DB00092E005C087E292E002C08AE292E0CF91F1
+:103DC0000C94CD1CCF910895882309F44BC0823800
+:103DD00059F40E94621C81FF45C089E30E940A27B2
+:103DE0000E94FC2789E30CC0833871F40E94621C96
+:103DF00080FF38C083E50E940A270E94FC2783E5E4
+:103E00000E945D270C94FC27843859F40E94621CA0
+:103E100082FF28C087E40E940A270E94FC2787E4CB
+:103E2000EFCF9CEF980F913A58F390E2980F9830AB
+:103E300050F4877091E001C0990F8A95EAF7892FB5
+:103E40000E94BB27DFCF9BE5980F933020F480E0E2
+:103E500090E00C94B71C885A833120F480E090E005
+:103E60000C94CD1C0895882321F00E94B5270C9452
+:103E7000FC270895882321F00E94BB270C94FC277F
+:103E800008957F928F929F92AF92BF92CF92DF92CE
+:103E9000EF92FF920F931F93CF93DF931F92CDB7B3
+:103EA000DEB77C01C62E772EFC01058102950F70CE
+:103EB000128111110E94D2270E940327882379F0D2
+:103EC000112369F080E28C0D883048F082E00E9476
+:103ED000EC260E94032791E0D82ED92601C0D12CD0
+:103EE000E72DE295EF70F0E0E759FF4F0C94452E77
+:103EF000872D807F072D0F70882311F00295007F9A
+:103F0000112389F0002309F48DC180E28C0D8830E3
+:103F100020F4802F0E94B52703C0802F0E94C52760
+:103F20000E94FC277FC18C2D0E94E41E002309F40F
+:103F300092C180E28C0D883020F4802F0E94BB2734
+:103F400003C0802F0E94CB270E94FC2784C1872DAD
+:103F5000807F972D9F70803211F4892F03C0892FA5
+:103F60008295807FCC2021F0F1E0CF16A1F01DC01A
+:103F7000112339F0002319F1013009F50E94E527DA
+:103F80006AC1002319F0013009F465C189830E94D8
+:103F9000E827898105C1112321F0063008F05BC1B3
+:103FA0000EC0053008F057C1FBC0112359F00023A3
+:103FB00031F0F701958190FF35C19F7095830E9484
+:103FC000331F49C1002309F4EBC032C1872D869508
+:103FD0008695837090E0009719F0019761F03BC1DE
+:103FE000112321F08C2D972D937002C080E090E07A
+:103FF0000E94B71C30C1112321F08C2D972D937096
+:1040000002C080E090E00E94CD1C25C1872D837006
+:1040100009F052C011111FC18C2D829586958770B1
+:10402000880F880F9C2D9F70892E912CA12CB12C6C
+:10403000082E04C0880C991CAA1CBB1C0A94D2F739
+:10404000C4FE14C00FE010E020E030E0B901A80188
+:1040500004C0440F551F661F771F8A95D2F7CB0106
+:10406000BA01609570958095909503C060E070E00E
+:10407000CB01272D26952695237030E0223031057F
+:1040800069F02330310589F0682979298A299B292B
+:104090002130310571F00E947825DDC06829792929
+:1040A0008A299B290E949425D6C00E947825C501A3
+:1040B000B4010E945C25CFC0112319F0872D8170B7
+:1040C00001C08695882309F4C6C08C2D82958695FB
+:1040D0008770880F880F9C2D9F70892E912CA12CA2
+:1040E000B12C082E04C0880C991CAA1CBB1C0A9475
+:1040F000D2F7C4FE14C00FE010E020E030E0B901B8
+:10410000A80104C0440F551F661F771F8A95D2F778
+:10411000CB01BA01609570958095909503C060E0E1
+:1041200070E0CB01272D269526952370422F50E075
+:104130004230510569F04330510589F068297929E9
+:104140008A299B294130510571F00E94522683C073
+:10415000682979298A299B290E946E267CC00E94A1
+:104160005226C501B4010E94362675C08C2D90E000
+:10417000FC01E05EF109E531F10508F04FC0E758B8
+:10418000FF4F0C94452E0C2D0F70872D8F7111232E
+:1041900021F00E94CF25802F12CF0E94F025802F82
+:1041A0000E943A1F58C0112341F0053008F053C057
+:1041B000872D8F710E9415264EC0063008F04BC027
+:1041C000F7CF112339F0872D8F710E94CF2543C07F
+:1041D0001123C9F3872D8F710E94F0253CC0112354
+:1041E00029F0872D8F710E94BA2535C00E94B02515
+:1041F00032C0112351F0172D1F71812F0E94CF253E
+:1042000063E0812F0E94E32626C081E00E94EC2615
+:10421000023008F182E00E94EC261DC0112331F02B
+:10422000002389F28C2D0E941C1E15C0002391F2E0
+:104230008C2D0E94E41E0FC0472D4F706C2DC701BE
+:104240000E94EA0B0E94D42406C0472D4F706C2DAB
+:10425000C7010E946208DD20F9F00E94DF2680FD80
+:104260001BC0F70112820E94D9260E94CF25C701E8
+:104270000E945B210E94D9260F90DF91CF911F9160
+:104280000F91FF90EF90DF90CF90BF90AF909F90F5
+:104290008F907F900C94F0250F90DF91CF911F911C
+:1042A0000F91FF90EF90DF90CF90BF90AF909F90D5
+:1042B0008F907F9008950F931F93CF93DF93EC011E
+:1042C000888199812B813C81232BB9F09F3F11F488
+:1042D0008F3F99F0CE010E94D608882371F0688143
+:1042E00079818A810E94D5268C010E948A260E94AB
+:1042F0005125B801CE010E94411FDF91CF911F913E
+:104300000F9108950E94D2270E94E2270E94A427BD
+:104310000E94FC2780E090E00E94B71C80E090E0C3
+:104320000C94CD1C0E94C2270C9482210E94CA26A4
+:10433000292F22952F7030E02C3031054CF42A3093
+:1043400031056CF42250310922303105A8F407C040
+:104350002C30310569F02F30310551F00DC0803F10
+:1043600069F018F4803E40F409C0843F29F406C087
+:1043700093FB882780F9089580E0089581E00895EF
+:10438000CF93DF9300D000D01F92CDB7DEB70F9050
+:104390000F900F900F900F90DF91CF910895CF93D2
+:1043A000DF9300D000D000D0CDB7DEB726960FB691
+:1043B000F894DEBF0FBECDBFDF91CF9108951F935C
+:1043C000CF93DF93C091B40116E08091B501C81777
+:1043D00099F0D0E01C9FF0011D9FF00D1124EA54CC
+:1043E000FE4F4081518162817381848195810E9459
+:1043F000CF212196C770E9CFDF91CF911F9108950A
+:104400004091E6015091E7016091E8017091E90166
+:104410008091EA019091EB010C94CF218091EB0106
+:1044200082958F7009F054C08091E801882309F4C7
+:104430004FC08091B401A091B5016091E6017091E7
+:10444000E7014091E9015091EA01B6E08A1709F4C9
+:104450003FC090E041155105C1F17F3F11F46F3F1E
+:10446000A1F1B89FF001B99FF00D1124EA54FE4F5D
+:10447000218172132AC02081621327C02281211159
+:1044800024C0238134812417350710F421503109C9
+:10449000241B350B283C3105C0F42091EB012F7013
+:1044A00020612093EB0126E0289FF001299FF00D69
+:1044B0001124E554FE4F80818F708061808386EEE9
+:1044C00091E00E945B210C94DF2101968770BECFA2
+:1044D0000895CF92DF92EF92FF920F931F93CF93A5
+:1044E000DF93CDB7DEB762970FB6F894DEBF0FBE8D
+:1044F000CDBF8C0185E0F801DE011D9601900D9283
+:104500008A95E1F7D8014C9111965C91119712961A
+:104510006C9112971396CD90DC9014973091E60130
+:104520007091E7018091E9019091EA01009709F407
+:104530006BC17F3F19F43F3F09F466C1E090E80189
+:10454000EE2009F4C0C02091EB01C816D90628F06E
+:10455000F601E81BF90BCF0104C0809590958C0DF6
+:104560009D1DFF24F394883C910578F0F12C207F69
+:1045700009F0C6C07C2DD98AC88A89890E94C021C9
+:1045800086EE91E00E945B21B1C0822F807F09F00E
+:1045900046C0751314C0341312C0611110C02F70BF
+:1045A00020612093EB010E94002286EE91E00E94A0
+:1045B0005B218091EB01D80115968C932EC0CD28FC
+:1045C00019F15F3F11F44F3FF9F0F62E61111CC055
+:1045D0008091B4012091B50136E0821709F45AC0E8
+:1045E00090E0389FF001399FF00D1124EA54FE4FFE
+:1045F0007181571306C07081471303C07281711116
+:1046000003C001968770E9CFF62E662309F418C11E
+:104610008091EB0181608093EB01F12C11C1751346
+:1046200008C0341306C0611104C08091EB01D801A9
+:10463000C3C04D875E878D859E856A8B0E949621BB
+:104640006A898823E1F16623D1F12091EB01822F61
+:1046500082958F7090E0029774F08091E6019091BE
+:10466000E70198878F831986DB86CA862C87CE015F
+:1046700007960E945B2186E0F801A6EEB1E001906A
+:104680000D928A95E1F70E940E220E940022FF24DB
+:10469000F394D6C04D875E878D859E850E94CA267D
+:1046A000292F22952F7030E0223031050CF0BCC04C
+:1046B0009F7009F0B6C0805E883008F4C1C0C801A0
+:1046C0000E945B21E4CFC816D90608F453C0F60156
+:1046D000E81BF90BCF01883C910508F450C0F12C80
+:1046E0007C2DD98AC88A89890E94C021E6EEF1E032
+:1046F00086E0DF011D928A95E9F70E940022A0C0A2
+:10470000751314C0341312C0611110C08091EB01F5
+:10471000F8018583C8010E945B2186E0E6EEF1E0A6
+:10472000DF011D928A95E9F7FE2C8AC04D875E87CE
+:104730008D859E856A8B0E9496216A89882309F45B
+:10474000BECF662309F4BBCF2091EB01822F829567
+:104750008F7090E002970CF48ECF8091E6019091DB
+:10476000E7019A8389831B82DD82CC822E83CE016E
+:1047700001967FCF809590958C0D9D1DACCFF62E28
+:10478000662309F49CCF75132EC034132CC02091DE
+:10479000EB0120FD1FC0822F82958F70D9F0D801C8
+:1047A00015962C9315978F3049F08F5F982F92951F
+:1047B000907F822F8F70892B15968C93C8010E9451
+:1047C0005B2186E0F801A6EEB1E001900D928A959A
+:1047D000E1F793CF86E0F801A6EEB1E001900D92EB
+:1047E0008A95E1F72DC04D875E878D859E850E9455
+:1047F0009621811140CF8091EB0181608093EB0184
+:10480000C8010E945B211CC0662309F458CF4D8764
+:104810005E878D859E850E949621882309F44FCF5F
+:104820002ACF811148CF0CC0243031050CF047CF7E
+:104830009F7009F440CFF8019581907F09F03BCF3C
+:104840008F2D62960FB6F894DEBF0FBECDBFDF91FD
+:10485000CF911F910F91FF90EF90DF90CF9008952F
+:104860001F93CF93DF93CDB7DEB72C970FB6F89495
+:10487000DEBF0FBECDBF4F83588769877A878B878E
+:104880009C87CE0107960E946922882369F08F8158
+:1048900098852A853B85232BF1F19F3F09F063C062
+:1048A0008F3F09F060C037C086E0FE013796DE0119
+:1048B000119601900D928A95E1F76F817885EA85CE
+:1048C000FB85309741F17F3F11F46F3F21F120913B
+:1048D000B50130E0C9010196877099274091B40174
+:1048E00050E08417950709F447C069837A83FD83F4
+:1048F000EC8396E0929FD001939FB00D1124AA54AF
+:10490000BE4FFE01319601900D929A95E1F780938A
+:10491000B5010E94DF2116E08091B4019091B501AC
+:104920008917C1F1189FC00111248A549E4F0E941B
+:104930006922882379F1E091B4011E9FF0011124CE
+:10494000EA54FE4F40815181628173818481958157
+:104950000E94CF218091B40190E001968770992741
+:104960008093B401D9CF4F81588569857A858B852D
+:104970009C850E94CF21CFCF0E9492211092B50139
+:104980001092B401E6EEF1E086E0DF011D928A9517
+:10499000E9F7C1CF2C960FB6F894DEBF0FBECDBF9E
+:1049A000DF91CF911F910895EF92FF920F931F9384
+:1049B000CF93DF938C01009709F46CC0F12CEE24A7
+:1049C000E394E8012196F8018491843740F484301F
+:1049D00008F051C0813081F0823019F15BC0853719
+:1049E00009F444C0A8F19CE7980F903708F052C032
+:1049F0008F770E94E41E41C00E5F1F4FFE01C491DD
+:104A000080E28C0F883048F4C7708E2D01C0880F6B
+:104A1000CA95EAF70E94D52714C08C2F0E941C1E4D
+:104A20002DC00E5F1F4FFE01C49180E28C0F8830B5
+:104A300058F4C7708E2D01C0880FCA95EAF70E94FE
+:104A4000DB270E94FC271AC08C2F0E94E41E16C090
+:104A50000E5F1F4FFE01C491CC2381F08FE99FE0D0
+:104A60000197F1F700C00000C150F6CF0E5F1F4F55
+:104A7000FE01F49003C00E941C1E8E018F2D88231E
+:104A800009F49FCFEFE9FFE03197F1F700C0000094
+:104A90008150F5CFDF91CF911F910F91FF90EF9053
+:104AA000089508956093F0017093F1018093F201ED
+:104AB0009093F3010C9482210F931F930091F001C6
+:104AC0001091F1012091F2013091F301DC01CB0151
+:104AD000802B912BA22BB32B8093F0019093F101AB
+:104AE000A093F201B093F3011F910F910C948221D6
+:104AF0000F931F930091F0011091F1012091F201A9
+:104B00003091F301DC01CB0180239123A223B32355
+:104B10008093F0019093F101A093F201B093F3011F
+:104B20001F910F910C9482210F931F930091F0011C
+:104B30001091F1012091F2013091F301DC01CB01E0
+:104B400080279127A227B3278093F0019093F1014A
+:104B5000A093F201B093F3011F910F910C94822165
+:104B60001092EC011092ED011092EE011092EF0103
+:104B70000C94822141E050E060E070E004C0440FFA
+:104B8000551F661F771F8A95D2F74093EC0150930B
+:104B9000ED016093EE017093EF010C94822141E0EE
+:104BA00050E060E070E004C0440F551F661F771F9F
+:104BB0008A95D2F78091EC019091ED01A091EE01E0
+:104BC000B091EF01482B592B6A2B7B2B4093EC01C2
+:104BD0005093ED016093EE017093EF010C948221EC
+:104BE00041E050E060E070E004C0440F551F661FD4
+:104BF000771F8A95D2F74095509560957095809172
+:104C0000EC019091ED01A091EE01B091EF014823EC
+:104C100059236A237B234093EC015093ED01609369
+:104C2000EE017093EF010C94822141E050E060E0CE
+:104C300070E004C0440F551F661F771F8A95D2F796
+:104C40008091EC019091ED01A091EE01B091EF0106
+:104C5000482759276A277B274093EC015093ED01A1
+:104C60006093EE017093EF010C9482210F931F93D8
+:104C70000091EC011091ED012091EE013091EF01D6
+:104C8000DC01CB01802B912BA22BB32B8093EC0169
+:104C90009093ED01A093EE01B093EF011F910F915E
+:104CA0000C9482210F931F930091EC011091ED0160
+:104CB0002091EE013091EF01DC01CB0180239123A3
+:104CC000A223B3238093EC019093ED01A093EE0116
+:104CD000B093EF011F910F910C9482210F931F93BA
+:104CE0000091EC011091ED012091EE013091EF0166
+:104CF000DC01CB0180279127A227B3278093EC0109
+:104D00009093ED01A093EE01B093EF011F910F91ED
+:104D10000C9482210895CF92DF92EF92FF920F932D
+:104D20001F93CF93DF938C01C090F001D090F101DD
+:104D3000E090F201F090F3018091EC019091ED018F
+:104D4000A091EE01B091EF01C82AD92AEA2AFB2AE4
+:104D5000CFE1D0E0D701C6010C2E04C0B695A795CF
+:104D6000979587950A94D2F780FF06C0B8018C2FDB
+:104D70000E94690A019721F4219760F780E001C041
+:104D80008C2FDF91CF911F910F91FF90EF90DF90CB
+:104D9000CF900895CF93DF93EC010E948B26BE0144
+:104DA0000E94690ADF91CF910895CB010E94CA2623
+:104DB00008958091F4018595859585950895809154
+:104DC000F4018770089598E0899F90011124262BA3
+:104DD0002093F4010C94CF252091F4018095822337
+:104DE0008093F401982F977069F430E0482F55278D
+:104DF00047FD50952417350729F0859585958595AC
+:104E00000C94F02508959091F401977081E009F4D5
+:104E100080E0089590910C01992321F090910D016B
+:104E2000911109C020910E0130910F01F9013296C4
+:104E30009FEF40E030C0982F9695969596959F30BD
+:104E4000A0F4E0910E01F0910F01E90FF11D8770C0
+:104E500021E030E0A90102C0440F551F8A95E2F716
+:104E6000CA019181892B818308959091090290FF55
+:104E700023C01F928F9389E299E09F938F930E94A2
+:104E800046080F900F900F900F9008959F3F39F0B4
+:104E90004F5F4E3041F051915813F8CF0DC0511172
+:104EA000F7CF942FF5CF9F3F39F0F901E90FF11DAE
+:104EB00097FDFA9582830895089590910C019923A6
+:104EC00021F090910D01911109C020910E013091B6
+:104ED0000F01F9013296205F3F4F30C0982F969511
+:104EE000969596959F30A8F4E0910E01F0910F01F0
+:104EF000E90FF11D877021E030E0A90102C0440FE5
+:104F0000551F8A95E2F7CA01809591818923818393
+:104F100008959091090290FF16C01F928F938BE025
+:104F200099E09F938F930E9446080F900F900F90E7
+:104F30000F9008953196E217F30729F090819813A6
+:104F4000F9CF1082F7CF089581E090E0E0910E0153
+:104F5000F0910F01E80FF91F108201968031910541
+:104F6000A9F7089580910802089590910802892B6D
+:104F70008093080208958095909108028923809378
+:104F80000802089510920802089590910702892B53
+:104F9000809307020895809590910702892380935A
+:104FA0000702089510920702089590910602892B36
+:104FB000809306020895809590910602892380933C
+:104FC000060208951092060208958093F50108954F
+:104FD0001092F501089580910E0190910F01FC014E
+:104FE00031969C01205F3F4F80E0919191118F5F3E
+:104FF000E217F307D1F70895E0910E01F0910F0148
+:10500000809108028083E0910E01F0910F01908160
+:1050100080910702892B8083E0910E01F0910F01AE
+:10502000908180910602892B80838091F5018823ED
+:1050300061F0E0910E01F0910F019081892B808346
+:105040000E94EB2781111092F50180910E01909141
+:105050000F010C946E1C90933D0180933C010895C8
+:1050600020E0009739F0AC01415051098423952389
+:105070002F5FF7CF822F08958295982F9C7C392F30
+:1050800036953695282F237344E0249FC0011124C0
+:10509000932F982B292F2A7A2695892F8575880F8B
+:1050A000822B08951F93CF93DF931F92CDB7DEB766
+:1050B00099830E943C28182F9981892F0E943C28AF
+:1050C000212F30E0322F2227A901482BCA010F904F
+:1050D000DF91CF911F91089580915A02843021F180
+:1050E00010920A0220E488E190E00FB6F894A895A7
+:1050F000809360000FBE2093600080E00E947D0CD2
+:1051000083B7817F846083BF83B7816083BF7894D6
+:10511000889583B78E7F83BF88E10FB6F89480931C
+:105120006000109260000FBE089508950E94930CD5
+:105130000E94160D0E9495280E94F90D91E08111A0
+:1051400001C090E0892F08950E9492210E94621C64
+:105150000C947D0C1F920F920FB60F9211248F9317
+:105160009F93AF93BF9380910A02811113C08091E6
+:105170000B0290910C02A0910D02B0910E0241968B
+:10518000A11DB11D80930B0290930C02A0930D0200
+:10519000B0930E02BF91AF919F918F910F900FBE70
+:1051A0000F901F90189582E084BD93E095BD9AEF13
+:1051B00097BD80936E0008952FB7F89480910B02ED
+:1051C00090910C02A0910D02B0910E022FBF089594
+:1051D000CF92DF92EF92FF920F931F932FB7F89425
+:1051E00040910B0250910C0260910D0270910E02E1
+:1051F0002FBF6A017B01EE24FF248C0120E030E008
+:10520000C016D106E206F30610F4415051099A0186
+:10521000281B390BC9011F910F91FF90EF90DF9070
+:10522000CF9008951F920F920FB60F9211248F9373
+:105230009F93AF93BF9380910B0290910C02A0912A
+:105240000D02B0910E020196A11DB11D80930B02BB
+:1052500090930C02A0930D02B0930E02BF91AF91F8
+:105260009F918F910F900FBE0F901F9018950E94E5
+:105270006019F8942FEF87EA91E621508040904022
+:10528000E1F700C0000087E090EBDC01809363024F
+:1052900090936402A0936502B09366029CE088E15B
+:1052A0000FB6F894A895809360000FBE90936000AD
+:1052B000FFCF8F929F92AF92BF92EF92FF920F9388
+:1052C0001F93CF93C5E0E82EF12C8C2F0E94910DF7
+:1052D0004B015C0100E110E0D501C401002E04C0C7
+:1052E000B695A795979587950A94D2F780FF0AC03F
+:1052F000602F7C2F80E00E94ED0BE816F90611F478
+:1053000081E006C00150110938F7C150F0F680E085
+:10531000CF911F910F91FF90EF90BF90AF909F9012
+:105320008F900895CF93C82F8CE20E94592988232B
+:1053300021F08C2FCF910C94592980E0CF910895C2
+:10534000CF930E94F92A811102C00E94D82A8EE4CC
+:1053500099E00E94AD07C5E6C15049F00E94160DC4
+:105360008FE39CE90197F1F700C00000F5CF87E4D7
+:1053700099E00E94AD0789E20E949229811116C12D
+:105380008AE20E94922981110E94D82A85E00E9417
+:10539000922981110E9437290E94042B80930902CF
+:1053A00087E00E9492298823A9F18BE10E9492292B
+:1053B000882351F08091090281FB222720F991E096
+:1053C000922790FB81F90EC08EE00E9492298823DB
+:1053D00061F08091090282FB222720F991E0922757
+:1053E00090FB82F98093090215C080E10E94922906
+:1053F00090910902882341F093FB222720F981E054
+:10540000822780FB93F904C0892F809580FB90F957
+:1054100090930902809109020E94082B0E94162B8A
+:1054200090E0909311028093100280EE0E949229E6
+:10543000882341F080911002982F909590FB80F97D
+:105440008093100289E30E949229882359F0809169
+:10545000100281FB222720F991E0922790FB81F92D
+:105460008093100282EE0E949229882359F0809145
+:10547000100282FB222720F991E0922790FB82F90B
+:105480008093100286EE0E949229882359F0809121
+:10549000100283FB222720F991E0922790FB83F9E9
+:1054A0008093100283EE0E949229882359F0809104
+:1054B000100284FB222720F991E0922790FB84F9C7
+:1054C0008093100285E30E949229882359F08091ED
+:1054D000100285FB222720F991E0922790FB85F9A5
+:1054E0008093100281E30E949229882359F08091D1
+:1054F000100286FB222720F991E0922790FB86F983
+:105500008093100281E10E949229882359F08091B2
+:10551000100287FB222720F991E0922790FB87F960
+:1055200080931002809110020E941A2B8091100229
+:1055300087FB882780F980930D0187E20E949229DA
+:10554000C82F8EE10E9492298111C2608FE10E94D2
+:1055500092298111C46080E20E9492298111C86061
+:1055600081E20E9492298111C06182E20E94922907
+:105570008111C06283E20E9492298111C06484E299
+:105580000E949229882311F0C06802C0CC2329F020
+:105590008C2F0E94112B6C2F03C00E940D2B682FA3
+:1055A00070E080E090E0CF910C945225CF91089567
+:1055B0006DEE7EEF80E090E00E947D2E60E082E064
+:1055C00090E00E945F2E60E083E090E00E945F2EFA
+:1055D00060E084E090E00E945F2E60E085E090E073
+:1055E0000E945F2E40E050E0BA0188E090E00C9409
+:1055F000712E80E090E00E94592E21E08D3E9E4F5A
+:1056000009F020E0822F089582E090E00C944B2E68
+:10561000682F82E090E00C945F2E83E090E00C9481
+:105620004B2E682F83E090E00C945F2E84E090E096
+:105630000C944B2E682F84E090E00C945F2ECF9357
+:10564000C82F1F928F9389E699E09F938F930E94B2
+:10565000460881E090E0A0E0B0E0BC01CD0104C0CC
+:10566000660F771F881F991FCA95D2F70E9452258F
+:105670000F900F900F900F90CF910C949221CF9399
+:105680008B3109F4D1C108F049C08E3009F4E0C172
+:1056900000F5873009F4A9C1A8F4863009F066C284
+:1056A00080910902817F8E7F8093090286EF9AE0C4
+:1056B0000E94AD0787EA9EE00E94AD0781E08093DB
+:1056C0000F0291C1883009F45BC08B3009F487C1A7
+:1056D0004DC2813109F432C220F4803109F4CCC1C9
+:1056E00045C2863109F4E3C1893109F03FC287EE32
+:1056F0009AE00E94AD078AEB9AE00E94AD078BE723
+:105700009AE00E94AD078EE49AE00E94AD0782E124
+:105710009AE00E94AD0787EE99E063C1853309F4F2
+:1057200021C268F4873209F41DC228F48E3108F4CE
+:105730001DC28D5118C2893209F414C217C28334B4
+:1057400038F48A3308F00CC2883309F448C10EC219
+:10575000833409F407C2883409F008C20E949221F8
+:105760008BE89EE00E94AD079FEF23ED80E3915010
+:1057700020408040E1F700C000000E94372933C17B
+:105780008BEA9EE00E94AD0788EF9DE00E94AD0786
+:105790000E940D2B1F928F9385EF9DE09F938F9317
+:1057A0000E94460883EF9DE00E94AD070E94042BF3
+:1057B000C82F80EE9DE00E94AD071F92CF938BED26
+:1057C0009DE09F938F930E94460889ED9DE00E9483
+:1057D000AD078FEC9DE00E94AD078C2F81701F926A
+:1057E0008F938CEC9DE09F938F930E9446088AECE8
+:1057F0009DE00E94AD0780EC9DE00E94AD07C1FBDB
+:10580000882780F91F928F938DEB9DE09F938F9354
+:105810000E9446088BEB9DE00E94AD078FEA9DE059
+:105820000E94AD07C2FB882780F91F928F938CEAF4
+:105830009DE09F938F930E9446088AEA9DE00E9414
+:10584000AD0781EA9DE00E94AD07C3FBCC27C0F9FC
+:105850001F92CF938EE99DE09F938F930E944608FD
+:105860008CE99DE00E94AD070E94162BC82F88E8A6
+:105870009DE00E94AD071F92CF9383E89DE09F9328
+:105880008F930E94460881E89DE00E94AD0788E65C
+:105890009DE00E94AD078C2F81701F928F9385E64B
+:1058A0009DE09F938F930E9446088DB79EB7809688
+:1058B0000FB6F8949EBF0FBE8DBF83E69DE00E9499
+:1058C000AD078CE49DE00E94AD07C1FB882780F9FD
+:1058D0001F928F9389E49DE09F938F930E944608C7
+:1058E00087E49DE00E94AD0785E39DE00E94AD073F
+:1058F000C2FB882780F91F928F9382E39DE09F93DC
+:105900008F930E94460880E39DE00E94AD078EE1E0
+:105910009DE00E94AD07C3FB882780F91F928F93FB
+:105920008BE19DE09F938F930E94460889E19DE063
+:105930000E94AD078FE09DE00E94AD07C4FB882761
+:1059400080F91F928F938CE09DE09F938F930E942C
+:1059500046088AE09DE00E94AD0788EF9CE00E9427
+:10596000AD07C5FB882780F91F928F9385EF9CE0D8
+:105970009F938F930E94460883EF9CE00E94AD079F
+:1059800087ED9CE00E94AD07C6FB882780F91F9237
+:105990008F9384ED9CE09F938F930E94460882ED45
+:1059A0009CE00E94AD078AEC9CE00E94AD07C7FB1B
+:1059B000CC27C0F91F92CF9387EC9CE09F938F93E5
+:1059C0000E94460885EC9CE00E94AD078DB79EB70B
+:1059D0004C960FB6F8949EBF0FBE8DBF04C081E1F8
+:1059E0009BE00E94AD07C1E0C6C080910902C82FAC
+:1059F000C095C170C0FB80F980930902CC2349F0A7
+:105A00008FE79EE00E94AD07809109028660886062
+:105A100048C082E79EE00E94AD0780910902897F1D
+:105A2000877F80930902DFCF9091090291FBCC27F9
+:105A3000C0F981E0C827892FC0FB81F98093090252
+:105A4000CC2319F085E69EE027C087E59EE0C9CF0C
+:105A50009091090292FBCC27C0F981E0C827892FD9
+:105A6000C0FB82F980930902CC2319F088E49EE000
+:105A700013C088E39EE0B5CF9091090293FBCC2739
+:105A8000C0F981E0C827892FC0FB83F98093090200
+:105A9000CC2351F08CE29EE00E94AD078091090278
+:105AA00081608093090267C08FE19EE09ACF89ED03
+:105AB00099E00E94AD070E94621C1F928F938FEBAA
+:105AC00099E09F938F930E94460880910C011F924A
+:105AD0008F9388EA99E09F938F930E944608809164
+:105AE00094011F928F9385E999E09F938F930E9471
+:105AF000460880910D011F928F9382E899E09F9351
+:105B00008F930E94460880910B0290910C02A09105
+:105B10000D02B0910E02BF93AF939F938F938EE6C9
+:105B200099E09F938F930E9446088DB79EB7469643
+:105B30000FB6F8949EBF0FBE8DBF55CF0E94922125
+:105B4000C0910D0181E0C827C0930D01CC2329F03D
+:105B500085E19EE00E94AD070EC08AE09EE041CF45
+:105B6000895301C080E00E941F2B3DCF88E09EE05A
+:105B70000E94AD07C0E08C2FCF91089580E008957A
+:105B800080E00895CF93C82F80910F02882319F0E9
+:105B9000813049F03EC0E0910E01F0910F0180810B
+:105BA0008232C9F507C0E0910E01F0910F018081AA
+:105BB000823261F48C2F0E94BE2D811104C08C2F83
+:105BC0000E943F2B24C081E090E021C08C2F0E94D6
+:105BD000C02D81111BC0C43189F018F4CB3029F0DD
+:105BE00010C0C93259F0C83361F486EF9AE00E94C0
+:105BF000AD0785E699E00E94AD0708C010920F023C
+:105C00000CC083E699E00E94AD0707C081E0817077
+:105C100006C010920F0280E002C080E0F8CFCF9162
+:105C20000895991B79E004C0991F961708F0961BF8
+:105C3000881F7A95C9F780950895AA1BBB1B51E16F
+:105C400007C0AA1FBB1FA617B70710F0A61BB70BEC
+:105C5000881F991F5A95A9F780959095BC01CD0191
+:105C6000089597FB072E16F4009407D077FD09D00E
+:105C70000E941D2E07FC05D03EF4909581959F4F04
+:105C80000895709561957F4F0895EE0FFF1F059061
+:105C9000F491E02D0994F999FECF92BD81BDF89A57
+:105CA000992780B50895A6E1B0E044E050E00C9457
+:105CB000852EA8E1B0E042E050E00C94852E262F1E
+:105CC000F999FECF92BD81BDF89A019700B40216F2
+:105CD00039F01FBA20BD0FB6F894FA9AF99A0FBEA0
+:105CE00008950396272F0E94602E0E945F2E252F75
+:105CF0000E94602E242F0C94602E0196272F0E9464
+:105D0000602E0C945F2EDC01CB01FC01F999FECFD3
+:105D100006C0F2BDE1BDF89A319600B40D92415033
+:0A5D20005040B8F70895F894FFCF43
+:105D2A00FFFFCB149A15CE14661532150101F60140
+:105D3A0059766649096C0F1F4F5F6F7F7969192978
+:105D4A0039534333231303403620399808620842F3
+:0C5D5A000809089507AE07C707E7070017
+:00000001FF
diff --git a/keyboards/phantom/keymaps/default/keymap.c b/keyboards/phantom/keymaps/default/keymap.c new file mode 100644 index 000000000..1368226aa --- /dev/null +++ b/keyboards/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/keyboards/phantom/led.c b/keyboards/phantom/led.c new file mode 100644 index 000000000..b2459c774 --- /dev/null +++ b/keyboards/phantom/led.c @@ -0,0 +1,43 @@ +/* +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(void) { + // * 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/keyboards/phantom/phantom.c b/keyboards/phantom/phantom.c new file mode 100644 index 000000000..30fef63c6 --- /dev/null +++ b/keyboards/phantom/phantom.c @@ -0,0 +1,25 @@ +#include "phantom.h" +#include "led.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 + matrix_init_user(); + led_init_ports(); +}; + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + matrix_scan_user(); +}; diff --git a/keyboards/phantom/phantom.h b/keyboards/phantom/phantom.h new file mode 100644 index 000000000..d7eb8c5a3 --- /dev/null +++ b/keyboards/phantom/phantom.h @@ -0,0 +1,46 @@ +#ifndef PHANTOM_H +#define PHANTOM_H + +#include "matrix.h" +#include "keymap.h" +#include <stddef.h> +#include "action_util.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/keyboards/phantom/pinout.jpg b/keyboards/phantom/pinout.jpg Binary files differnew file mode 100644 index 000000000..30b0b8bf4 --- /dev/null +++ b/keyboards/phantom/pinout.jpg diff --git a/keyboards/phantom/pinout.txt b/keyboards/phantom/pinout.txt new file mode 100644 index 000000000..36f044d15 --- /dev/null +++ b/keyboards/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 |