From 649b33d7783cf3021928534b7ae127e0a89e8807 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 21 Jun 2016 22:39:54 -0400 Subject: Renames keyboard folder to keyboards, adds couple of tmk's fixes (#432) * fixes from tmk's repo * rename keyboard to keyboards --- keyboards/clueboard1/Makefile | 72 ++ keyboards/clueboard1/clueboard1.c | 19 + keyboards/clueboard1/clueboard1.h | 52 + keyboards/clueboard1/config.h | 95 ++ keyboards/clueboard1/keymaps/default/compiled.hex | 1192 +++++++++++++++++++++ keyboards/clueboard1/keymaps/default/keymap.c | 184 ++++ keyboards/clueboard1/led.c | 32 + 7 files changed, 1646 insertions(+) create mode 100644 keyboards/clueboard1/Makefile create mode 100644 keyboards/clueboard1/clueboard1.c create mode 100644 keyboards/clueboard1/clueboard1.h create mode 100644 keyboards/clueboard1/config.h create mode 100644 keyboards/clueboard1/keymaps/default/compiled.hex create mode 100644 keyboards/clueboard1/keymaps/default/keymap.c create mode 100644 keyboards/clueboard1/led.c (limited to 'keyboards/clueboard1') diff --git a/keyboards/clueboard1/Makefile b/keyboards/clueboard1/Makefile new file mode 100644 index 0000000000..98ad148c71 --- /dev/null +++ b/keyboards/clueboard1/Makefile @@ -0,0 +1,72 @@ + + +# # project specific files +SRC = led.c + +# MCU name +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 +AUDIO_ENABLE ?= no +RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality +MIDI_ENABLE ?= no # MIDI controls +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/clueboard1/clueboard1.c b/keyboards/clueboard1/clueboard1.c new file mode 100644 index 0000000000..136ddf15b5 --- /dev/null +++ b/keyboards/clueboard1/clueboard1.c @@ -0,0 +1,19 @@ +#include "clueboard1.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) { + matrix_init_user(); +} + +void matrix_scan_kb(void) { + matrix_scan_user(); +} diff --git a/keyboards/clueboard1/clueboard1.h b/keyboards/clueboard1/clueboard1.h new file mode 100644 index 0000000000..5b53e92588 --- /dev/null +++ b/keyboards/clueboard1/clueboard1.h @@ -0,0 +1,52 @@ +#ifndef CLUEBOARD1_H +#define CLUEBOARD1_H + +#include "matrix.h" +#include "keymap.h" +#include + + +/* Clueboard matrix layout + * ,-----------------------------------------------------------. ,---. + * | 00| 01| 02| 03| 04| 05| 06| 07| 08| 09| 0A| 0B| 0C| 0D| 0E| | 0F| + * |-----------------------------------------------------------| |---| + * | 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 1A| 1B| 1C| 1D| | 1F| + * |-----------------------------------------------------------| `---' + * | 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 2A| 2B| 2C| 2D| + * |------------------------------------------------------------. + * | 30| 31| 32| 33| 34| 35| 36| 37| 38| 39| 3A| 3B| 3C| 3D|3E| + * |------------------------------------------------------------------. + * | 40| 41| 42| 43| 45| 46| 49| 4A| 4B| 4C| 4D| 4E| 4F| + * `------------------------------------------------------------------' + * ,-----------------------------------------------------------. ,---. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Yen| BS| |Ins| + * |-----------------------------------------------------------| |---| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del| + * |-----------------------------------------------------------| `---' + * |Caps | A| S| D| F| G| H| J| k| L| ;| '| # | Ent| + * |--------------------------------------------------------------. + * |Shift| \| Z| X| C| V| B| N| M| ,| .| /| \|Shift| Up| + * |------------------------------------------------------------------. + * |Ctrl|Alt|Gui |MHen| Space| Space|Henk|Gui |Ctrl| Fn|Left|Down|Rgt| + * `------------------------------------------------------------------' + */ +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \ + k40, k41, k42, k43, k45, k46, k49, k4A, k4B, k4C, k4D, k4E, k4F \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO, k1F }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \ + { k40, k41, k42, k43, KC_NO, k45, k46, KC_NO, KC_NO, k49, k4A, k4B, k4C, k4D, k4E, k4F } \ +} + +void matrix_init_user(void); +void matrix_scan_user(void); + +#endif diff --git a/keyboards/clueboard1/config.h b/keyboards/clueboard1/config.h new file mode 100644 index 0000000000..16338ddb03 --- /dev/null +++ b/keyboards/clueboard1/config.h @@ -0,0 +1,95 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xC1ED +#define PRODUCT_ID 0x2301 +#define DEVICE_VER 0x0003 +#define MANUFACTURER Clueboard +#define PRODUCT Clueboard +#define DESCRIPTION QMK keyboard firmware for Clueboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +// ROWS: Top to bottom, COLS: Left to right +/* Column pin configuration +* col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 +* pin: B3 F1 F4 F5 F6 C7 C6 B6 B5 B4 D7 D6 D4 F7 B0 B1 +*/ +#define MATRIX_COL_PINS { B3, F1, F4, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, F7, B0, B1 } +/* Row pin configuration +* row: 0 1 2 3 4 +* pin: D1 D0 D2 D5 D3 +*/ +#define MATRIX_ROW_PINS { D1, D0, D2, D5, D3 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* 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 PORTB + #define ws2812_DDRREG DDRB + #define ws2812_pin 2 + #define RGBLED_NUM 14 // 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/clueboard1/keymaps/default/compiled.hex b/keyboards/clueboard1/keymaps/default/compiled.hex new file mode 100644 index 0000000000..31008c426e --- /dev/null +++ b/keyboards/clueboard1/keymaps/default/compiled.hex @@ -0,0 +1,1192 @@ +:100000000C946E050C94B2050C94B2050C94B205D8 +:100010000C94B2050C94B2050C94B2050C94B20584 +:100020000C94B2050C94B2050C94CF100C94A11151 +:100030000C94681F0C94B2050C94B2050C94B20594 +:100040000C94B2050C94B2050C94B2050C94B20554 +:100050000C94B2050C94D01F0C94B2050C94B2050C +:100060000C94B2050C94B2050C94B2050C94B20534 +:100070000C94B2050C94B2050C94B2050C94B20524 +:100080000C94B2050C94B2050C94B2050C94B20514 +:100090000C94B2050C94B2050C94B2050C94B20504 +:1000A0000C94B2050C94B2050C94B2050E123012E9 +:1000B0001E1330121E13751298121E13ED12001328 +:1000C0003616361665166516A416E917E917E917E8 +:1000D000C416E91774177417DA17E917E917E31745 +:1000E0008117811781178117811781178117811750 +:1000F0008117811781178117811781178117811740 +:1001000091179F17A617AD17B71700F000201E0014 +:100110001F002000210022002300240025002600CB +:1001200027002D002E0035002A004B002B00140064 +:100130001A000800150017001C0018000C0012001F +:1001400013002F003000310000004E003900040081 +:100150001600070009000A000B000D000E000F003A +:10016000330034003200280000000000E100640089 +:100170001D001B00060019000500110010003600CC +:10018000370038008700E50052000000E000E3007F +:10019000E2008B0000002C002C00000000008A0010 +:1001A000E600E4000151500051004F0035003A00D4 +:1001B0003B003C003D003E003F004000410042004B +:1001C00043004400450001004C0032700100010072 +:1001D000010001000100010001000100460047008C +:1001E00048000100010001000000010001000100C1 +:1001F00002510100010001000100010001000100A5 +:1002000001000100010001000000000001000100E8 +:1002100001000100010001000100010001000100D6 +:1002200001000100010001004B000000010001007D +:1002300001000100000001000100000000000100B9 +:100240000100010001514A004E004D000100010073 +:100250000100010001000100010001000100010096 +:100260000100010001000100010001000100010086 +:100270000100010000700100010001000100010007 +:100280000100010001000100000001000100010067 +:100290000251010001000100010001000100010004 +:1002A0000100010001000100000000000100010048 +:1002B0000100010001000100010001000100010036 +:1002C0000100010001000100010000000100010027 +:1002D0000100010000000100010000000000010019 +:1002E0000100010001510100010001000A444542E2 +:1002F00055473A20656E61626C65642E0A0053743E +:10030000617465206F6620726F772025583A20252A +:10031000303136620A0048756D616E2D7265616418 +:1003200061626C65206D61747269782073746174A8 +:10033000653A0D0A004465626F756E63696E6720E9 +:1003400064656C61792072656D61696E696E673A8A +:100350002025580A005B735D004B6579626F6172FE +:10036000642073746172742E0A005B575D005B53E6 +:100370005D005B525D005B445D005B435D00140308 +:1003800043006C007500650062006F006100720040 +:1003900064000000140343006C00750065006200F7 +:1003A0006F00610072006400000004030904090288 +:1003B0007400040100A0FA09040000010301010017 +:1003C0000921110100012240000705810308000AEC +:1003D00009040100010300000009211101000122AC +:1003E00036000705820308000A0904020002030020 +:1003F00000000921110100012220000705830320CC +:1004000000010705030320000109040300010300A4 +:1004100000000921110100012239000705840310A1 +:1004200000011201100100000008EDC101230300CA +:100430000102000105010906A101050719E029E7EC +:100440001500250195087501810205081901290586 +:100450009505750191029501750391010507190034 +:10046000297715002501957875018102C00631FFB5 +:100470000974A1010975150025FF952075088102F1 +:100480000976150025FF952075089102C005010920 +:1004900080A101850216010026B7001A01002AB7C3 +:1004A00000751095018100C0050C0901A1018503AB +:1004B000160100269C021A01002A9C027510950163 +:1004C0008100C005010906A101050719E029E7150A +:1004D00000250195087501810295017508810105C6 +:1004E000081901290595057501910295017503917A +:1004F000010507190029FF150026FF00950675085C +:100500008100C00A002530325820006B6579626F87 +:100510006172645F7265706F72743A20004B657926 +:10052000626F617264204C4544732073746174651A +:100530003A2025780A0064656C5F6B65795F6269B3 +:10054000743A2063616E27742064656C3A2025300C +:1005500032580A006164645F6B65795F6269743A5E +:100560002063616E2774206164643A20253032581C +:100570000A00646F6E652E0A00626F6F676D6167B7 +:100580006963207363616E3A202E2E2E20003F0097 +:10059000433E20004C25640A0074696D65725F63F8 +:1005A0006F756E743A202530346C580A006B65798B +:1005B000626F6172645F6E6B726F3A2025580A0039 +:1005C0006B6579626F6172645F69646C653A20255E +:1005D000580A006B6579626F6172645F70726F7444 +:1005E0006F636F6C3A2025580A00686F73745F6BF5 +:1005F0006579626F6172645F6C65647328293A2063 +:1006000025580A000A092D20537461747573202D32 +:100610000A004743433A20342E392E3220415652A5 +:100620002D4C4942433A20312E382E31204156522A +:100630005F415243483A20617672350A004F505468 +:10064000494F4E533A204C55464120424F4F544D4E +:10065000414749432045585452414B455920434F47 +:100660004E534F4C4520434F4D4D414E44204E4B31 +:10067000524F20343039360A004255494C443A2012 +:10068000383063383730352D6469727479202831F9 +:10069000333A31393A3032204A756E2032312032C5 +:1006A000303136290A005649443A203078433145E2 +:1006B0004428436C7565626F617264292050494417 +:1006C0003A2030783233303128436C7565626F617F +:1006D000726429205645523A203078303030330A3F +:1006E00000444553433A20514D4B206B6579626F6E +:1006F000617264206669726D7761726520666F72DF +:1007000020436C7565626F6172640A000A092D20CE +:1007100056657273696F6E202D0A000A092D2043F9 +:100720006F6E736F6C65202D0A4553432F713A0924 +:10073000717569740A000A092D204D61676963208B +:100740002D0A443A094465627567204D65737361EB +:10075000676520546F67676C650A583A094D617484 +:10076000726978204465627567204D6F6465205416 +:100770006F67676C65202D2053686F77206B6579F4 +:100780007072657373657320696E206D6174726930 +:100790007820677269640A4B3A094B6579626F6128 +:1007A000726420446562756720546F67676C6520CA +:1007B0002D2053686F77206B657970726573732095 +:1007C0007265706F72740A4D3A09446562756720EC +:1007D0004D6F75736520546F67676C650A563A09EB +:1007E00056657273696F6E0A533A09537461747572 +:1007F000730A433A09416374697661746520436FF3 +:100800006E736F6C65204D6F64650A46312D4631FD +:10081000303A0953776974636820746F204C6179AA +:10082000657220302D392028463130203D204C3053 +:10083000290A302D393A0953776974636820746F37 +:10084000204C6179657220302D390A4553433A09AD +:1008500053776974636820746F204C6179657220E6 +:10086000302028616C7465726E617465206B6579E7 +:100870002031290A47524156453A09537769746332 +:100880006820746F204C6179657220302028616C7B +:100890007465726E617465206B65792032290A5027 +:1008A000415553453A094A756D7020746F20426F67 +:1008B0006F746C6F6164657220285265736574296A +:1008C0000A453A095072696E7420454550524F4DA1 +:1008D0002053657474696E67730A4E3A094E4B5221 +:1008E0004F20546F67676C650A000A002575002E5B +:1008F0006E6B726F3A20000A002575002E737761C7 +:10090000705F6261636B736C6173685F6261636B7C +:1009100073706163653A20000A002575002E7377B5 +:1009200061705F67726176655F6573633A20000A84 +:10093000002575002E6E6F5F6775693A20000A000A +:100940002575002E737761705F72616C745F7267DA +:1009500075693A20000A002575002E737761705F73 +:100960006C616C745F6C6775693A20000A002575CC +:10097000002E636170736C6F636B5F746F5F636F86 +:100980006E74726F6C3A20000A002575002E737722 +:1009900061705F636F6E74726F6C5F636170736CB4 +:1009A0006F636B3A20000A0025303258006B65797E +:1009B0006D61705F636F6E6669672E7261773A2052 +:1009C000000A002575002E6D6F7573653A20000AC8 +:1009D000002575002E6B6579626F6172643A2000A4 +:1009E0000A002575002E6D61747269783A20000A3C +:1009F000002575002E656E61626C653A20000A0064 +:100A0000253032580064656275675F636F6E666992 +:100A1000672E7261773A20000A00257500646566CA +:100A200061756C745F6C617965723A20003F004EAD +:100A30004B524F3A206F66660A004E4B524F3A2097 +:100A40006F6E0A000A6D6F7573653A206F66660AED +:100A5000000A6D6F7573653A206F6E0A000A6B6548 +:100A600079626F6172643A206F66660A000A6B658C +:100A700079626F6172643A206F6E0A000A6D617468 +:100A80007269783A206F66660A000A6D617472694D +:100A9000783A206F6E0A000A64656275673A206FC3 +:100AA00066660A000A64656275673A206F6E0A001E +:100AB0000A0A4A756D70696E6720746F20626F6FE5 +:100AC000746C6F616465722E2E2E2000433E2000F0 +:100AD0006565636F6E6669673A0A000011241FBE80 +:100AE000CFEFDAE0DEBFCDBF04B603FE24C08091B5 +:100AF000EC019091ED01A091EE01B091EF018730F2 +:100B0000904BA740B04BB9F41092EC011092ED015C +:100B10001092EE011092EF0114BE84B7877F84BF5C +:100B200088E10FB6F89480936000109260000FBEC9 +:100B3000E0E0F8E3099511E0A0E0B1E0E6E2FAE4D4 +:100B400002C005900D92A833B107D9F711E0A8E3D0 +:100B5000B1E001C01D92AC3EB107E1F70E940D0E5D +:100B60000C9411250C940000FF93EF93E091380151 +:100B7000F0913901309709F00995EF91FF910895AF +:100B8000FC018591803011F0EFDFFBCF0895FF2746 +:100B9000E0E230E247FF0CC0419597FF09C0EDE26B +:100BA0006095709580959095611D711D811D911DB9 +:100BB00027FF02C0219530E350E2AA27660F771F76 +:100BC000881F991FAA1FA41710F0A41B63955A959C +:100BD000A9F7AA3008F0A95FA05DAF93F39561155E +:100BE00071058105910541F7ED3211F4EF93F3950D +:100BF000F21718F43F93F395FBCF8F91B5DFFA9579 +:100C0000E1F70895E991F9918591803021F08532DD +:100C100019F0AADFF9CF089520E0E89455915532F4 +:100C2000C1F3503311F4689455915A3348F450533A +:100C300090F3220F022E220F220F200D250FF4CF4A +:100C40000EF4219589919991533619F3533729F16F +:100C5000533559F1BC0188279927E8945C3621F473 +:100C60008991999168945591543639F446EF7EF004 +:100C700077FF0DC08FEF9FEF0AC055374AE039F07C +:100C8000583540E121F0523642E009F00895FF93D3 +:100C9000EF937DDFEF91FF91B7CFFF93EF93FC01CF +:100CA00081918030B9F360DFFBCFFF93EF9368DF72 +:100CB000F1CFDF93CF93CDB7DEB72596A3DFCF91EA +:100CC000DF910895809A81FF02C0889A08958898DC +:100CD0000895089508950C9469060C946A06CF93BC +:100CE000DF93611120C0EC010E94701E827280931C +:100CF0003A019A81992351F0882319F085E390E015 +:100D000002C089E290E00E94C81D09C0882319F042 +:100D100085E390E002C089E290E00E941B1EDF9113 +:100D2000CF910C94BA1EDF91CF91089581E0089580 +:100D300081E008950C94980608950F931F93CF9324 +:100D4000DF938C01FC01C081D181CE010E94491D3D +:100D5000BE010E94B709EC01B8010E949A068823DF +:100D600009F474C1F8018281882309F45BC0809181 +:100D7000460181111FC0C431F0E7DF0709F00AC145 +:100D80000E949C0681E0809346010E949A1F9093E6 +:100D900045018093440110923D0110923F01109251 +:100DA0003E011092410110924001109243011092B5 +:100DB00042014CC180914401909145010E94A61FBF +:100DC000883C910570F480913D01E82FF0E0EE0F32 +:100DD000FF1FE25CFE4FD183C0838F5F80933D0194 +:100DE00035C1C43120E7D20708F028C1C23080E7FE +:100DF000D80710F5C11590E7D90709F0DAC0F80156 +:100E00008281882309F4BFC00E945018FFEF24E3B9 +:100E10008CE0F15020408040E1F700C000000E94CB +:100E2000F51F14C1C431F0E7DF0708F0D3C0C230AA +:100E300020E7D20708F49BC0F8018281882309F4D7 +:100E4000A2C00E94B121811102C00E9497210E947C +:100E5000CE2190E09093DE018093DD01C230F0E777 +:100E6000DF0721F48091DD0181607AC0C33020E783 +:100E7000D20721F48091DD01826072C0C43080E726 +:100E8000D80721F48091DD0184606AC0C53090E705 +:100E9000D90719F48091DD0127C0C630E0E7DE07ED +:100EA00021F48091DD0180615BC0C730F0E7DF078E +:100EB00021F48091DD01806253C0C83020E7D20761 +:100EC00021F48091DD0180644BC0C93080E7D807F0 +:100ED00021F48091DD01806843C0CA3090E7D907D2 +:100EE00029F48091DD01846088603AC0CB30E0E76E +:100EF000DE0721F48091DD018E7F32C0CC30F0E737 +:100F0000DF0721F48091DD018D7F2AC0CD3020E7FD +:100F1000D20721F48091DD018B7F22C0CE3080E7A3 +:100F2000D80719F48091DD011AC08091DD01CF301E +:100F300090E7D90711F48F7E13C0C031E0E7DE07D8 +:100F400011F48F7D0DC0C131F0E7DF0711F48F7B05 +:100F500007C0C231D04711F48F7702C08B7F877FE3 +:100F60008093DD018091DD010E94D2216FC0C11507 +:100F700080E7D80741F0C130D047F1F081E080939D +:100F80003B0180933C01C801DF91CF911F910F91EC +:100F90000C949606C43120E7D20708F04FC0C23047 +:100FA00080E7D80708F048CFC11590E7D90709F4C2 +:100FB0002BCFC130D04711F7F8018281882319F374 +:100FC0008CEE92E00E94C0058091D60181608093F2 +:100FD000D6013CC0C333E0E7DE07A1F4F80182810B +:100FE000882321F010923B0182E017C080913B01E1 +:100FF000811106C086E20E94DA1486E20E94A215E0 +:1010000082E019C0C433D04709F0B8CFF80182811B +:10101000882331F010923C0180E20E94F11516C045 +:1010200080913C01811106C087E20E94DA1487E2B8 +:101030000E94A21580E20E94F81508C0C333F0E7B1 +:10104000DF0761F2C433D04709F398CF80E0DF9126 +:10105000CF911F910F9108950C946B060C946D061F +:10106000E72FF0E025E0829FE00DF11D1124B4E0B0 +:10107000EE0FFF1FBA95E1F7E60FF11DEE0FFF1F10 +:10108000E45FFE4F859194910E94CC09811540E464 +:101090009407B0F5811560E3960708F0DEC0803E46 +:1010A0009105D8F4803C910508F06CC0883A910510 +:1010B00078F4853A910508F06BC08130910509F408 +:1010C00052C108F40FC18430910508F04CC10AC127 +:1010D0008B3B910508F467C005C18F3F910509F06E +:1010E00048F4803F910508F0ADC0883E910508F4B2 +:1010F0003AC1F8C0811570E2970708F0A5C00895BD +:10110000811523E5920790F4811542E5940708F0D4 +:10111000C8C0811561E5960708F0BEC0811570E56D +:10112000970708F09DC09F70906A0895811525E586 +:101130009207D8F4811544E5940708F0C8C0482FF9 +:101140004695469570E2479FA00111248370992728 +:1011500021E030E0B90102C0660F771F8A95E2F7FF +:10116000CB01842B952B9A680895811566E5960727 +:1011700008F4B2C09C0130562115304108F0B2C0CD +:101180009F70AEC0FC01EE0FFF1FE657F04062C03B +:10119000853A910509F4A9C0863A910509F0A8C0DD +:1011A00082E890E40895883A910509F4A4C0893A48 +:1011B000910509F4A3C08A3A910509F4A2C08B3ABB +:1011C000910509F4A1C08C3A910509F4A0C08D3AAB +:1011D000910509F49FC0803B910509F49EC08E3AA9 +:1011E000910509F49DC08F3A910509F49CC0813B9B +:1011F000910509F49BC0823B910509F49AC0833B99 +:10120000910509F499C0843B910509F498C0853B88 +:10121000910509F497C0863B910509F496C0873B78 +:10122000910509F495C0883B910509F494C0893B68 +:10123000910509F493C08A3B910509F492C080E0BE +:1012400094E4089590650895FC01FF70EE0FFF1F70 +:10125000E65FFE4F8591949108959927906C0895CB +:10126000482F437021E030E002C0220F331F4A951F +:10127000E2F73C68AC0164E0569547956A95E1F762 +:101280004370342B8F708695869540E2849FC00111 +:101290001124822B932B0895982F8827816F906AB1 +:1012A0000895482F4695469560E2469FA001112477 +:1012B0008370992721E030E0B90102C0660F771FE3 +:1012C0008A95E2F7CB01842B952B9C680895982F83 +:1012D0008827846F906A08958F719927982F88279F +:1012E0009062089580E090E0089581E890E4089588 +:1012F00083E890E4089582EE94E4089589EE94E4FE +:1013000008958AEE94E4089585EB94E4089586EBBD +:1013100094E4089587EB94E408958CEC94E40895A4 +:101320008DEC94E4089583E895E408958AE895E4C3 +:10133000089582E995E4089584E995E4089581E2A9 +:1013400096E4089583E296E4089584E296E408958D +:1013500085E296E4089586E296E4089587E296E4AD +:1013600008958AE296E4089580E090E00895E72FDA +:10137000F0E095E0899FE00DF11D112484E0EE0F6F +:10138000FF1F8A95E1F7E60FF11DEE0FFF1FE45FE7 +:10139000FE4F8591949108958238910549F1B0F4FA +:1013A0008133910509F458C048F48932910509F454 +:1013B0004EC08A32910509F454C0089585339105D1 +:1013C00009F440C08933910599F00895833E910551 +:1013D00029F138F4803E910591F0823E9105A1F00B +:1013E0000895863E9105F9F0873E910531F1089503 +:1013F0002091DD0120FD3AC021FD38C00895809183 +:10140000DD0180FD35C032C08091DD0182FF32C038 +:101410008091DD0184FD30C083EE39C08091DD0113 +:1014200082FD28C0F5CF8091DD0183FF27C0809128 +:10143000DD0184FD21C087EE2AC08091DD0183FD9E +:101440001DC0F5CF8091DD0185FD1AC01BC08091C4 +:10145000DD0185FD17C014C08091DD0186FD14C03B +:1014600015C08091DD0186FD11C00EC080EE0FC059 +:1014700089E30DC082EE0BC080E009C086EE07C094 +:1014800089E205C085E303C08AE201C081E390E000 +:1014900008950C946206E82FF0E0E15EFE4F808133 +:1014A000E82FEF70F0E082958F7021E030E0A90125 +:1014B00002C0440F551F8A95E2F740A308950F9389 +:1014C0001F93CF93DF93C4E0D0E001E010E0FE0172 +:1014D000E15EFE4F8081E82FEF70F0E021A1829560 +:1014E0008F70A80102C0440F551F8A95E2F7CA0108 +:1014F000822B81A38C2F0E944B0A219740F78FE00B +:1015000090E061E070E0FC01E15FFE4F2081E22F9E +:10151000EF70F0E042A122952F70DB0102C0AA0F0C +:10152000BB1F2A95E2F79D01242B22A3019758F7B0 +:10153000DF91CF911F910F9108950F931F93CF9338 +:10154000DF9385B7806885BF85B7806885BFC4E0B5 +:10155000D0E001E010E0FE01E15EFE4F8081E82F67 +:10156000EF70F0E021A182958F70A80102C0440FB6 +:10157000551F8A95E2F7CA01822B81A38C2F0E9406 +:101580004B0A219740F78FE090E061E070E0FC01AA +:10159000E15FFE4F2081E22FEF70F0E042A1229543 +:1015A0002F70DB0102C0AA0FBB1F2A95E2F79D0135 +:1015B000242B22A3019758F7DF91CF911F910F9110 +:1015C0000C942C08EF92FF920F931F93CF93DF930D +:1015D00001E511E0C4E0EE24E394F12CD5E08C2F7A +:1015E0000E944B0A8FE090E040E050E0FC01E15F98 +:1015F000FE4F6081E62FEF70F0E020A130E06295B1 +:101600006F7002C0359527956A95E2F720FD09C0F5 +:101610009701082E02C0220F331F0A94E2F7422BD3 +:10162000532B019718F7F801929182918F0184173B +:10163000950721F051834083D09300018C2F0E94A5 +:101640004B0AC15060F68091000187FD35C0909132 +:10165000D60190FF10C0282F332727FD30953F93E8 +:101660008F9385E393E09F938F930E9459060F9089 +:101670000F900F900F908091000181508093000196 +:1016800087FD07C08FE99FE00197F1F700C00000D8 +:1016900013C080E090E0FC01EF5AFE4FDC01A95B33 +:1016A000BE4F18962D913C9119973187208702974C +:1016B000863FEFEF9E0779F70E942E0881E0DF91C9 +:1016C000CF911F910F91FF90EF900895E82FF0E0D8 +:1016D000EE0FFF1FEF5AFE4F808191810895EF9228 +:1016E000FF920F931F93CF93DF938091D60180FFDA +:1016F00004C086E193E00E94C00501E511E0C0E06E +:10170000D0E08EEFE82E82E0F82E8091D60180FFA7 +:1017100013C0F801808191810E94101F9F938F93C5 +:10172000DF93CF93FF92EF920E9459060F900F9094 +:101730000F900F900F900F9021960E5F1F4FC530A6 +:10174000D10519F7DF91CF911F910F91FF90EF9085 +:1017500008950F931F93CF930BE511E0C0E0F801BC +:10176000929182918F010E94EE1EC80FF1E0013527 +:101770001F07A9F78C2FCF911F910F91089580918A +:101780006E01089508959FB7F89410925D019FBF70 +:101790009091E301943009F057C09091E9009F7057 +:1017A0003091EC00232F217030FD20E8922B23E0B4 +:1017B0002093E9002091EB0020FF43C02091EE0030 +:1017C00027FF3FC020915B01222321F02091E800F8 +:1017D00025FF37C010925B0126E03091E80035FD0F +:1017E00015C03091E301343061F53091EB0035FDE7 +:1017F00028C0215021F481E080935B0122C0EFE9F1 +:10180000FFE03197F1F700C00000E7CF8093F100CF +:101810008091E80085FD0AC08091E80080FFFCCF40 +:101820008091E8008E778093E80006C08FB7F89427 +:1018300021E020935D018FBF9F709093E90080E0CD +:1018400008959F709093E9008FEF0895CF93DF93F1 +:1018500000D01F92CDB7DEB72091E301243021F5EF +:1018600023E029839B838A8382E08093E9008FEFC2 +:101870009091E800815095FD06C095ED9A95F1F79D +:1018800000008111F5CF8091E80085FF0DC040E098 +:1018900050E063E070E0CE0101960E94BF0E80919F +:1018A000E8008E778093E8000F900F900F90DF9103 +:1018B000CF910895CF93DF9300D01F92CDB7DEB7BD +:1018C0009C018091E301843019F592E099833B8378 +:1018D0002A839093E9008FEF9091E800815095FD65 +:1018E00006C095ED9A95F1F700008111F5CF809132 +:1018F000E80085FF0DC040E050E063E070E0CE01FD +:1019000001960E94BF0E8091E8008E778093E800D8 +:101910000F900F900F90DF91CF910895CF93DF93A9 +:10192000EC019091E301943009F046C080910B01E5 +:101930008823D9F080910C018823B9F09093E900B5 +:101940008FEF9091E800815095FD06C095E19A9542 +:10195000F1F700008111F5CF8091E80085FF2CC0E0 +:1019600040E050E060E170E017C081E08093E90062 +:101970008FEF9091E800815095FD06C095ED9A9506 +:10198000F1F700008111F5CF8091E80085FF14C0C8 +:1019900040E050E068E070E0CE010E94BF0E809110 +:1019A000E8008E778093E80080E1FE01AEE5B1E0CB +:1019B00001900D928A95E1F7DF91CF9108958AE722 +:1019C00093E00E94C0058091E201811109C00E944C +:1019D00054100E94B1108091E20084608093E20074 +:1019E000089586E793E00E94C0051092E2010895F1 +:1019F00082E793E00C94C0058EE693E00C94C0055A +:101A00008AE693E00E94C0050C94621F20915C015D +:101A10002F5F822F62E30E94C924992319F020933B +:101A20005C01089510925C0180915D01882371F141 +:101A30008091E301843041F58091E9008F7020911D +:101A4000EC00922F917020FD90E8892B93E0909309 +:101A5000E9009091EB0090FF14C09091EE0097FF89 +:101A600010C09091E80095FF03C01092F100F9CFEB +:101A70009091E80090FF05C09091E8009E779093C8 +:101A8000E8008F708093E90010925D01089542E0B4 +:101A900061EC81E00E94CE0F42E061EC82E00E94A6 +:101AA000CE0F42E261EC83E00E94CE0F42E161EC96 +:101AB00084E00C94CE0F8091E501833009F455C089 +:101AC00030F4813071F0823009F48EC008958A308C +:101AD00009F47AC08B3009F460C0893009F09CC0E9 +:101AE00020C08091E401813A09F096C08091E8001D +:101AF000877F8093E8008091E8019091E901892B2C +:101B000021F460E18EE591E003C060E080E090E0C8 +:101B100070E00E940A0F8091E8008B778093E800C4 +:101B200008958091E401813209F076C08091E80146 +:101B30009091E901009719F0039709F06DC0809129 +:101B4000E800877F8093E8008091E80082FD05C06F +:101B50008091E3018111F8CF5FC08091F100809303 +:101B60006E018091E8008B7753C08091E401813A47 +:101B700009F052C08091E8019091E901892B09F0A8 +:101B80004BC08091E800877F8093E8008091E80057 +:101B900080FFFCCF80910B0136C08091E40181323F +:101BA000D9F58091E8019091E901892BA9F58091FF +:101BB000E800877F8093E8000E9403108091E6018F +:101BC00080930B010C9450188091E401813221F52F +:101BD0008091E800877F8093E8000E940310809145 +:101BE000E70180936F0108958091E401813AA1F4A7 +:101BF0008091E800877F8093E8008091E80080FF73 +:101C0000FCCF80916F018093F1008091E8008E7786 +:101C10008093E8000C940310089584B7877F84BFF5 +:101C200088E10FB6F89480936000109260000FBEB8 +:101C300080E880936100109261000E94D8130E9496 +:101C400054100E94B1108091E20084608093E20001 +:101C500083EC9BE00E94E91E78940E9436130E9458 +:101C6000DA1381E091E00E94511389E593E00E942C +:101C7000C0058091E301853089F485E593E00E94F9 +:101C8000C0050E942A1F8091E101882391F30E94E0 +:101C9000541F882371F30E94A90EEBCF0E94FE13FC +:101CA000E8CF292F332723303105C9F064F42130E0 +:101CB000310581F02230310509F043C084E790E01E +:101CC0002EEA33E042C021323105F1F022323105F3 +:101CD00041F137C082E190E022E234E036C099273A +:101CE0008130910541F08230910541F0892B49F511 +:101CF000EAEAF3E005C0E4E9F3E002C0EEE7F3E06E +:101D0000849190E09F0121C06430D8F4E62FF0E088 +:101D1000EE0FFF1FE05DFE4F2081318189E090E0F2 +:101D200014C0643070F470E0FB01EE0FFF1FE85D3B +:101D3000FE4F20813181FB01EC5DFE4F808190E000 +:101D400004C080E090E020E030E0FA01318320839D +:101D5000089580E189BD82E189BD09B400FEFDCF0F +:101D60008091D8008F7D8093D8008091E0008260C0 +:101D70008093E0008091E00081FDFCCF0895CF9238 +:101D8000DF92EF92FF920F931F93CF93DF93EC01BB +:101D90008B016A010E942210811133C0C114D10449 +:101DA00039F0F60180819181081B190BC80FD91FEA +:101DB000E12CF12C0115110519F18091E80085FD48 +:101DC00016C08091E8008E778093E800C114D1049A +:101DD00049F0F60180819181E80EF91EF182E082DE +:101DE00085E00FC00E942210882321F30AC0899148 +:101DF0008093F10001501109FFEFEF1AFF0ADACFCB +:101E000080E0DF91CF911F910F91FF90EF90DF90D5 +:101E1000CF9008952091EA013091EB012617370702 +:101E200048F06115710539F42091E8002E77209370 +:101E3000E80001C0B90140E061157105A9F12091E8 +:101E4000E301222309F443C0253009F442C0209164 +:101E5000E80023FD40C02091E80022FD32C020911F +:101E6000E80020FFE9CF4091F3002091F20030E03C +:101E7000342BFC01CF016115710559F02830310573 +:101E800040F481918093F100615071092F5F3F4FC1 +:101E9000F1CF41E02830310509F040E02091E80021 +:101EA0002E772093E800C8CF4111C9CF0AC0809196 +:101EB000E301882361F0853061F08091E80083FDC3 +:101EC0000AC08091E80082FFF2CF80E0089582E0AE +:101ED000089583E0089581E008952091EA0130910A +:101EE000EB012617370748F06115710539F4209189 +:101EF000E8002E772093E80001C0B901FC0120E042 +:101F00006115710591F18091E301882309F440C0C6 +:101F1000853009F43FC08091E80083FD3DC0809189 +:101F2000E80082FD2FC08091E80080FFE9CF20917A +:101F3000F3008091F20090E0922B6115710559F049 +:101F40008830910540F424912093F100319661503E +:101F500071090196F2CF21E0089709F020E0809105 +:101F6000E8008E778093E800CBCF2111CCCF0AC058 +:101F70008091E301882361F0853061F08091E80071 +:101F800083FD0AC08091E80082FFF2CF80E00895CF +:101F900082E0089583E0089581E00895982F9730B6 +:101FA00058F59093E900981739F07091EC00209162 +:101FB000ED005091F00003C0242F762F50E021FF58 +:101FC00019C03091EB003E7F3093EB003091ED0073 +:101FD0003D7F3093ED003091EB0031603093EB00AA +:101FE0007093EC002093ED005093F0002091EE00F0 +:101FF00027FF07C09F5FD3CF8F708093E90081E0F8 +:10200000089580E008958091E40187FF11C08091D8 +:10201000E80082FD05C08091E3018111F8CF11C075 +:102020008091E8008B770BC08091E301882349F011 +:102030008091E80080FFF8CF8091E8008E77809350 +:10204000E80008952091E4003091E50095E6409184 +:10205000EC00842F817040FF22C08091E80080FD59 +:102060001CC08091E301882391F0853091F080912C +:10207000EB0085FD10C04091E4005091E50042174F +:10208000530729F39A01915011F784E0089582E0F3 +:10209000089583E0089581E0089580E008954091D7 +:1020A000E80042FFDECF08950E94C2100E94CA10CD +:1020B000E0EEF0E0808181608083E8EDF0E08081F7 +:1020C0008F77808319BCA7EDB0E08C918E7F8C93C5 +:1020D00080818F7E80831092E20108950F931F9379 +:1020E000CF93DF930E94C2100E94CA10C8EDD0E0C7 +:1020F00088818F77888388818068888388818F7DB5 +:10210000888319BC1092E3011092DF011092E10163 +:102110001092E00100EE10E0F80180818B7F808357 +:1021200088818160888342E060E080E00E94CE0F79 +:10213000E1EEF0E080818E7F8083E2EEF0E080814E +:1021400081608083808188608083F80180818E7FB8 +:102150008083888180618883DF91CF911F910F9167 +:102160000895E8EDF0E080818F7E8083E7EDF0E078 +:1021700080818160808384E082BF81E08093E2017E +:102180000C946E10E8EDF0E080818E7F80831092D9 +:10219000E20008951092DA001092E10008951F9273 +:1021A0000F920FB60F9211242F933F934F935F938B +:1021B0006F937F938F939F93AF93BF93EF93FF930F +:1021C0008091E10082FF0BC08091E20082FF07C096 +:1021D0008091E1008B7F8093E1000E94060D809149 +:1021E000DA0080FF1FC08091D80080FF1BC0809163 +:1021F000DA008E7F8093DA008091D90080FF0DC0D5 +:1022000080E189BD82E189BD09B400FEFDCF81E096 +:102210008093E3010E94DF0C05C019BC1092E3011A +:102220000E94F10C8091E10080FF19C08091E200D2 +:1022300080FF15C08091E2008E7F8093E200809144 +:10224000E20080618093E2008091D80080628093F8 +:10225000D80019BC85E08093E3010E94FC0C8091BA +:10226000E10084FF30C08091E20084FF2CC080E157 +:1022700089BD82E189BD09B400FEFDCF8091D800FF +:102280008F7D8093D8008091E1008F7E8093E10064 +:102290008091E2008F7E8093E2008091E200816075 +:1022A0008093E2008091DF01882311F084E007C071 +:1022B0008091E30087FD02C081E001C083E080934C +:1022C000E3010E94000D8091E10083FF29C080910D +:1022D000E20083FF25C08091E100877F8093E100C9 +:1022E00082E08093E3011092DF018091E1008E7F14 +:1022F0008093E1008091E2008E7F8093E2008091E4 +:10230000E20080618093E20042E060E080E00E94B1 +:10231000CE0F8091F00088608093F0000E94F80C4E +:10232000FF91EF91BF91AF919F918F917F916F91AD +:102330005F914F913F912F910F900FBE0F901F9083 +:1023400018951F920F920FB60F9211242F933F935F +:102350004F935F936F937F938F939F93AF93BF93AD +:10236000CF93DF93EF93FF93C091E900CF708091FB +:10237000EC00D82FD17080FDD0E81092E900809158 +:10238000F000877F8093F00078940E94E51110920E +:10239000E9008091F00088608093F000CD2BCF7031 +:1023A000C093E900FF91EF91DF91CF91BF91AF9181 +:1023B0009F918F917F916F915F914F913F912F915D +:1023C0000F900FBE0F901F9018951F93CF93DF9320 +:1023D000CDB7DEB7AA970FB6F894DEBF0FBECDBF5C +:1023E000E4EEF1E088E08E0F9091F10091938E136E +:1023F000FBCF0E945B0D8091E80083FF1FC180919D +:10240000E4019091E501492F50E04A30510508F070 +:1024100015C1FA01EA5AFF4F0C94D524803881F097 +:10242000823809F00BC18091E8018F708093E90038 +:102430008091EB0085FB882780F91092E90006C0A7 +:102440008091E0019091E101911182609091E8000A +:10245000977F9093E8008093F1001092F100C8C03C +:10246000282F2D7F09F0EAC0882319F0823061F00F +:10247000E5C08091E601813009F0E0C0933009F0B9 +:1024800080E08093E1012BC08091E601811127C09B +:102490008091E8018F7009F4D1C08093E900209108 +:1024A000EB0020FF1CC0933021F48091EB00806290 +:1024B00014C09091EB0090619093EB0021E030E02C +:1024C000A90102C0440F551F8A95E2F74093EA0024 +:1024D0001092EA008091EB0088608093EB001092EC +:1024E000E9008091E800877F86C08111A7C0109124 +:1024F000E6011F778091E3008078812B8093E300D1 +:102500008091E800877F8093E8000E94031080910B +:10251000E80080FFFCCF8091E30080688093E300B7 +:10252000111102C082E001C083E08093E30186C004 +:102530008058823008F082C08091E6019091E701D6 +:102540008C3D53E0950779F583E08A838AE289839D +:102550004FB7F894DE01139620E03EE051E2E32FFE +:10256000F0E050935700E49120FF03C0E295EF7034 +:102570003F5FEF708E2F90E0EA3010F0C79601C0F9 +:10258000C0968D939D932F5F243149F74FBF809163 +:10259000E800877F8093E8006AE270E0CE01019650 +:1025A0000E940A0F14C0AE014F5F5F4F6091E801B7 +:1025B0000E94510EBC01009709F440C09091E800C0 +:1025C000977F9093E80089819A810E946D0F809196 +:1025D000E8008B778093E80031C0803879F58091EE +:1025E000E800877F8093E8008091DF018093F1000D +:1025F0008091E8008E778093E8000E9403101EC04F +:1026000081111CC09091E6019230C0F48091E800E5 +:10261000877F8093E8009093DF010E9403108091F0 +:10262000DF01811106C08091E30087FD02C081E0D7 +:1026300001C084E08093E3010E94470D8091E8008F +:1026400083FF0AC08091E800877F8093E800809133 +:10265000EB0080628093EB00AA960FB6F894DEBF81 +:102660000FBECDBFDF91CF911F910895CF93809181 +:10267000E3018823A1F0C091E900CF709091EC00B4 +:10268000892F817090FD80E8C82B1092E90080911D +:10269000E80083FD0E94E511CF70C093E900CF915F +:1026A000089590937501809374010895E0917401E9 +:1026B000F0917501309721F00190F081E02D09949F +:1026C00080E00895EF92FF920F931F93CF93DF93D3 +:1026D000E0917401F09175013097B1F18C010280A5 +:1026E000F381E02D09958091D60182FF2DC080FFF6 +:1026F00004C08BE095E00E94C005E80110E185E090 +:10270000E82E85E0F82E8091D60180FF0BC08881ED +:102710001F928F93FF92EF920E9459060F900F9095 +:102720000F900F90115021961111EDCF8091D6018D +:1027300080FF0AC083E095E0DF91CF911F910F9158 +:10274000FF90EF900C94C005DF91CF911F910F91F6 +:10275000FF90EF90089520917201309173018217DC +:10276000930771F09093730180937201E09174016B +:10277000F0917501309721F00680F781E02D0994E2 +:10278000089520917001309171018217930771F0C3 +:102790009093710180937001E0917401F091750143 +:1027A000309721F00084F185E02D09940895089573 +:1027B0000C94D7130E94911F0E949D0A0C945F20D5 +:1027C000CF93DF931F92CDB7DEB79091D60192FFE2 +:1027D00010C090FF0EC01F928F932DE135E03F9304 +:1027E0002F9389830E9459060F900F900F900F909E +:1027F00089810F90DF91CF910C94490A5F926F927B +:102800007F928F929F92AF92BF92CF92DF92EF9280 +:10281000FF920F931F93CF93DF9300D000D01F92AE +:10282000CDB7DEB70E94E20A91E8C92E91E0D92E19 +:1028300004E010E0AA24A394B12C502E802F0E9413 +:10284000660B4C01F601729062906F016826792642 +:1028500061147104A1F40150110978F78FEF898395 +:102860008A831B820E949A1F8160782F9D838C83AC +:1028700049815A816B818D810E94AC1438C080914E +:10288000D60181FD0E946F0B2FE030E07501022E12 +:1028900002C0EE0CFF1C0A94E2F7C70186219721C3 +:1028A000892B09F129835A828E209F2091E0892863 +:1028B00009F490E09B830E949A1F8160782F9D838A +:1028C0008C8349815A816B818D810E94AC14000FE9 +:1028D000111FF801E958FE4F80819181E826F92601 +:1028E000F182E08204C02150310980F6B4CF10910A +:1028F00076010E9456131817D1F00E945613809348 +:1029000076010F900F900F900F900F90DF91CF9165 +:102910001F910F91FF90EF90DF90CF90BF90AF90FD +:102920009F908F907F906F905F900C94E0130F902A +:102930000F900F900F900F90DF91CF911F910F91FB +:10294000FF90EF90DF90CF90BF90AF909F908F90CF +:102950007F906F905F900895CF93DF93CDB7DEB7F0 +:102960002B970FB6F894DEBF0FBECDBF4F835887AD +:1029700069877A878B87DE01119686E0FD011192C7 +:102980008A95E9F785E0FE01379601900D928A95C8 +:10299000E1F749815A816B817C818D819E810E9402 +:1029A000EE1A2B960FB6F894DEBF0FBECDBFDF91A7 +:1029B000CF910895CF93882309F4C2C0C82F8238DD +:1029C00059F40E94561381FDBBC089E30E94C81DC3 +:1029D0000E94BA1E89E30CC0833879F40E94561312 +:1029E00080FDAEC083E50E94C81D0E94BA1E83E52B +:1029F0000E941B1ECF910C94BA1E843859F40E9479 +:102A0000561382FD9DC087E40E94C81D0E94BA1E15 +:102A100087E4EECF8CEF8C0F813A48F48C2F0E9424 +:102A20007A2481118DC08C2F0E94C81DE3CF80E2D3 +:102A30008C0F883048F4C77081E001C0880FCA95B8 +:102A4000EAF70E94731ED6CF8BE58C0F833078F4A3 +:102A5000C53A29F0C63A31F083E890E005C081E834 +:102A600090E002C082E890E0CF910C94AB1388E52F +:102A70008C0F833108F064C0C83A39F1C93A41F18A +:102A8000CA3A49F1CB3A51F1CC3A59F1CD3A61F118 +:102A9000C03B69F1CE3A71F1CF3A79F1C13B81F196 +:102AA000C23B89F1C33B91F1C43B99F1C53BA1F114 +:102AB000C63BA9F1C73BB1F1C83BB9F1C93BC1F174 +:102AC000CA3BC9F180E090E038C082EE90E035C0AA +:102AD00089EE90E032C08AEE90E02FC085EB90E066 +:102AE0002CC086EB90E029C087EB90E026C08CECF0 +:102AF00090E023C08DEC90E020C083E891E01DC001 +:102B00008AE891E01AC082E991E017C084E991E077 +:102B100014C081E292E011C083E292E00EC084E230 +:102B200092E00BC085E292E008C086E292E005C028 +:102B300087E292E002C08AE292E0CF910C94C11346 +:102B4000CF910895882309F44BC0823859F40E942C +:102B5000561381FF45C089E30E94C81D0E94BA1E1A +:102B600089E30CC0833871F40E94561380FF38C08B +:102B700083E50E94C81D0E94BA1E83E50E941B1EA9 +:102B80000C94BA1E843859F40E94561382FF28C050 +:102B900087E40E94C81D0E94BA1E87E4EFCF9CEF15 +:102BA000980F913A58F390E2980F983050F487704C +:102BB00091E001C0990F8A95EAF7892F0E94791E4A +:102BC000DFCF9BE5980F933020F480E090E00C94E9 +:102BD000AB13885A833120F480E090E00C94C11349 +:102BE0000895882321F00E94731E0C94BA1E089544 +:102BF000882321F00E94791E0C94BA1E08957F92BA +:102C00008F929F92AF92BF92CF92DF92EF92FF92FC +:102C10000F931F93CF93DF931F92CDB7DEB77C0145 +:102C2000C62E772EFC01058102950F7012811111BD +:102C30000E94901E0E94C11D882379F0112369F023 +:102C400080E28C0D883048F082E00E94AA1D0E942C +:102C5000C11D91E0D82ED92601C0D12CE72DE295D7 +:102C6000EF70F0E0E05AFF4F0C94D524872D807F61 +:102C7000072D0F70882311F00295007F112389F032 +:102C8000002309F48DC180E28C0D883020F4802F60 +:102C90000E94731E03C0802F0E94831E0E94BA1ED2 +:102CA0007FC18C2D0E94A215002309F492C180E2FD +:102CB0008C0D883020F4802F0E94791E03C0802F55 +:102CC0000E94891E0E94BA1E84C1872D807F972D85 +:102CD0009F70803211F4892F03C0892F8295807FE5 +:102CE000CC2021F0F1E0CF16A1F01DC0112339F066 +:102CF000002319F1013009F50E94A31E6AC10023C7 +:102D000019F0013009F465C189830E94A61E8981EA +:102D100005C1112321F0063008F05BC10EC005305B +:102D200008F057C1FBC0112359F0002331F0F7011F +:102D3000958190FF35C19F7095830E94F11549C11F +:102D4000002309F4EBC032C1872D869586958370E8 +:102D500090E0009719F0019761F03BC1112321F039 +:102D60008C2D972D937002C080E090E00E94AB13F1 +:102D700030C1112321F08C2D972D937002C080E07B +:102D800090E00E94C11325C1872D837009F052C0C5 +:102D900011111FC18C2D829586958770880F880F21 +:102DA0009C2D9F70892E912CA12CB12C082E04C033 +:102DB000880C991CAA1CBB1C0A94D2F7C4FE14C030 +:102DC0000FE010E020E030E0B901A80104C0440F9A +:102DD000551F661F771F8A95D2F7CB01BA01609500 +:102DE00070958095909503C060E070E0CB01272D31 +:102DF00026952695237030E02230310569F0233086 +:102E0000310589F0682979298A299B2921303105E2 +:102E100071F00E94361CDDC0682979298A299B2916 +:102E20000E94521CD6C00E94361CC501B4010E94EB +:102E30001A1CCFC0112319F0872D817001C086950F +:102E4000882309F4C6C08C2D829586958770880FDB +:102E5000880F9C2D9F70892E912CA12CB12C082EAF +:102E600004C0880C991CAA1CBB1C0A94D2F7C4FE8F +:102E700014C00FE010E020E030E0B901A80104C068 +:102E8000440F551F661F771F8A95D2F7CB01BA01F1 +:102E9000609570958095909503C060E070E0CB01DF +:102EA000272D269526952370422F50E0423051055C +:102EB00069F04330510589F0682979298A299B29CD +:102EC0004130510571F00E94101D83C06829792995 +:102ED0008A299B290E942C1D7CC00E94101DC501BF +:102EE000B4010E94F41C75C08C2D90E0FC01E05EE2 +:102EF000F109E531F10508F04FC0E059FF4F0C949E +:102F0000D5240C2D0F70872D8F71112321F00E9475 +:102F10008D1C802F12CF0E94AE1C802F0E94F815AE +:102F200058C0112341F0053008F053C0872D8F7130 +:102F30000E94D31C4EC0063008F04BC0F7CF1123BF +:102F400039F0872D8F710E948D1C43C01123C9F366 +:102F5000872D8F710E94AE1C3CC0112329F0872D54 +:102F60008F710E94781C35C00E946E1C32C01123E4 +:102F700051F0172D1F71812F0E948D1C63E0812F4E +:102F80000E94A11D26C081E00E94AA1D023008F106 +:102F900082E00E94AA1D1DC0112331F0002389F296 +:102FA0008C2D0E94DA1415C0002391F28C2D0E9402 +:102FB000A2150FC0472D4F706C2DC7010E94B40998 +:102FC0000E94921B06C0472D4F706C2DC7010E94B6 +:102FD0006F06DD20F9F00E949D1D80FD1BC0F701EA +:102FE00012820E94971D0E948D1CC7010E94191811 +:102FF0000E94971D0F90DF91CF911F910F91FF902D +:10300000EF90DF90CF90BF90AF909F908F907F9088 +:103010000C94AE1C0F90DF91CF911F910F91FF90F8 +:10302000EF90DF90CF90BF90AF909F908F907F9068 +:1030300008950F931F93CF93DF93EC0188819981BB +:103040002B813C81232BB9F09F3F11F48F3F99F0E6 +:10305000CE010E949D06882371F0688179818A8162 +:103060000E94931D8C010E94481D0E940F1CB801F4 +:10307000CE010E94FF15DF91CF911F910F9108950E +:103080000E94901E0E94A01E0E94621E0E94BA1EF4 +:1030900080E090E00E94AB1380E090E00C94C113BC +:1030A0000E94801E0C9440180E94881D292F229592 +:1030B0002F7030E02C3031054CF42A3031056CF49F +:1030C0002250310922303105A8F407C02C303105D7 +:1030D00069F02F30310551F00DC0803F69F018F4D0 +:1030E000803E40F409C0843F29F406C093FB882742 +:1030F00080F9089580E0089581E00895CF93DF93EB +:1031000000D000D01F92CDB7DEB70F900F900F9078 +:103110000F900F90DF91CF910895CF93DF9300D060 +:1031200000D000D0CDB7DEB726960FB6F894DEBF3C +:103130000FBECDBFDF91CF9108951F93CF93DF9343 +:10314000C091810116E080918201C81799F0D0E00A +:103150001C9FF0011D9FF00D1124ED57FE4F408183 +:10316000518162817381848195810E948D1821969D +:10317000C770E9CFDF91CF911F9108954091B301BE +:103180005091B4016091B5017091B6018091B70181 +:103190009091B8010C948D188091B80182958F7030 +:1031A00009F054C08091B501882309F44FC0809183 +:1031B0008101A09182016091B3017091B4014091AD +:1031C000B6015091B701B6E08A1709F43FC090E00C +:1031D00041155105C1F17F3F11F46F3FA1F1B89F37 +:1031E000F001B99FF00D1124ED57FE4F21817213AC +:1031F0002AC02081621327C02281211124C023818B +:1032000034812417350710F421503109241B350B64 +:10321000283C3105C0F42091B8012F702061209323 +:10322000B80126E0289FF001299FF00D1124E857EE +:10323000FE4F80818F708061808383EB91E00E94DC +:1032400019180C949D1801968770BECF0895CF92DF +:10325000DF92EF92FF920F931F93CF93DF93CDB73F +:10326000DEB762970FB6F894DEBF0FBECDBF8C01FC +:1032700085E0F801DE011D9601900D928A95E1F737 +:10328000D8014C9111965C91119712966C911297FE +:103290001396CD90DC9014973091B3017091B401E6 +:1032A0008091B6019091B701009709F46BC17F3FFF +:1032B00019F43F3F09F466C1E090B501EE2009F42E +:1032C000C0C02091B801C816D90628F0F601E81B45 +:1032D000F90BCF0104C0809590958C0D9D1DFF24A6 +:1032E000F394883C910578F0F12C207F09F0C6C05A +:1032F0007C2DD98AC88A89890E947E1883EB91E047 +:103300000E941918B1C0822F807F09F046C0751342 +:1033100014C0341312C0611110C02F7020612093AB +:10332000B8010E94BE1883EB91E00E9419188091A9 +:10333000B801D80115968C932EC0CD2819F15F3FA6 +:1033400011F44F3FF9F0F62E61111CC080918101FC +:103350002091820136E0821709F45AC090E0389F2C +:10336000F001399FF00D1124ED57FE4F7181571375 +:1033700006C07081471303C07281711103C00196AA +:103380008770E9CFF62E662309F418C18091B80141 +:1033900081608093B801F12C11C1751308C03413FA +:1033A00006C0611104C08091B801D801C3C04D8727 +:1033B0005E878D859E856A8B0E9454186A89882352 +:1033C000E1F16623D1F12091B801822F82958F70AF +:1033D00090E0029774F08091B3019091B4019887C6 +:1033E0008F831986DB86CA862C87CE0107960E94BA +:1033F000191886E0F801A3EBB1E001900D928A95CF +:10340000E1F70E94CC180E94BE18FF24F394D6C0A6 +:103410004D875E878D859E850E94881D292F229568 +:103420002F7030E0223031050CF0BCC09F7009F0E5 +:10343000B6C0805E883008F4C1C0C8010E94191867 +:10344000E4CFC816D90608F453C0F601E81BF90BFF +:10345000CF01883C910508F450C0F12C7C2DD98A0D +:10346000C88A89890E947E18E3EBF1E086E0DF01DB +:103470001D928A95E9F70E94BE18A0C0751314C06A +:10348000341312C0611110C08091B801F801858316 +:10349000C8010E94191886E0E3EBF1E0DF011D92FC +:1034A0008A95E9F7FE2C8AC04D875E878D859E85BB +:1034B0006A8B0E9454186A89882309F4BECF662358 +:1034C00009F4BBCF2091B801822F82958F7090E0D4 +:1034D00002970CF48ECF8091B3019091B4019A833E +:1034E00089831B82DD82CC822E83CE0101967FCF21 +:1034F000809590958C0D9D1DACCFF62E662309F41A +:103500009CCF75132EC034132CC02091B80120FD20 +:103510001FC0822F82958F70D9F0D80115962C93F9 +:1035200015978F3049F08F5F982F9295907F822F5B +:103530008F70892B15968C93C8010E94191886E00C +:10354000F801A3EBB1E001900D928A95E1F793CFDA +:1035500086E0F801A3EBB1E001900D928A95E1F7C6 +:103560002DC04D875E878D859E850E9454188111E0 +:1035700040CF8091B80181608093B801C8010E945A +:1035800019181CC0662309F458CF4D875E878D85B6 +:103590009E850E945418882309F44FCF2ACF8111A9 +:1035A00048CF0CC0243031050CF047CF9F7009F490 +:1035B00040CFF8019581907F09F03BCF8F2D629627 +:1035C0000FB6F894DEBF0FBECDBFDF91CF911F9134 +:1035D0000F91FF90EF90DF90CF9008951F93CF93BE +:1035E000DF93CDB7DEB72C970FB6F894DEBF0FBED2 +:1035F000CDBF4F83588769877A878B879C87CE0199 +:1036000007960E942719882369F08F8198852A855B +:103610003B85232BF1F19F3F09F063C08F3F09F0F9 +:1036200060C037C086E0FE013796DE01119601903A +:103630000D928A95E1F76F817885EA85FB85309751 +:1036400041F17F3F11F46F3F21F12091820130E081 +:10365000C9010196877099274091810150E0841734 +:10366000950709F447C069837A83FD83EC8396E06C +:10367000929FD001939FB00D1124AD57BE4FFE0114 +:10368000319601900D929A95E1F7809382010E9404 +:103690009D1816E080918101909182018917C1F1F6 +:1036A000189FC00111248D579E4F0E94271988230F +:1036B00079F1E09181011E9FF0011124ED57FE4F39 +:1036C0004081518162817381848195810E948D182E +:1036D0008091810190E00196877099278093810104 +:1036E000D9CF4F81588569857A858B859C850E94C5 +:1036F0008D18CFCF0E945018109282011092810134 +:10370000E3EBF1E086E0DF011D928A95E9F7C1CF96 +:103710002C960FB6F894DEBF0FBECDBFDF91CF91D0 +:103720001F910895EF92FF920F931F93CF93DF9312 +:103730008C01009709F46CC0F12CEE24E394E801AD +:103740002196F8018491843740F4843008F051C008 +:10375000813081F0823019F15BC0853709F444C0B3 +:10376000A8F19CE7980F903708F052C08F770E941D +:10377000A21541C00E5F1F4FFE01C49180E28C0F65 +:10378000883048F4C7708E2D01C0880FCA95EAF7BB +:103790000E94931E14C08C2F0E94DA142DC00E5F5D +:1037A0001F4FFE01C49180E28C0F883058F4C7701F +:1037B0008E2D01C0880FCA95EAF70E94991E0E94BB +:1037C000BA1E1AC08C2F0E94A21516C00E5F1F4F82 +:1037D000FE01C491CC2381F08FE99FE00197F1F7BE +:1037E00000C00000C150F6CF0E5F1F4FFE01F490E5 +:1037F00003C00E94DA148E018F2D882309F49FCF15 +:10380000EFE9FFE03197F1F700C000008150F5CFFC +:10381000DF91CF911F910F91FF90EF900895089540 +:103820006093BD017093BE018093BF019093C0016E +:103830000C9440180F931F930091BD011091BE018D +:103840002091BF013091C001DC01CB01802B912B75 +:10385000A22BB32B8093BD019093BE01A093BF0117 +:10386000B093C0011F910F910C9440180F931F93B8 +:103870000091BD011091BE012091BF013091C001A6 +:10388000DC01CB0180239123A223B3238093BD01CC +:103890009093BE01A093BF01B093C0011F910F91FF +:1038A0000C9440180F931F930091BD011091BE011D +:1038B0002091BF013091C001DC01CB01802791270D +:1038C000A227B3278093BD019093BE01A093BF01AF +:1038D000B093C0011F910F910C9440181092B90140 +:1038E0001092BA011092BB011092BC010C944018C6 +:1038F00041E050E060E070E004C0440F551F661FD7 +:10390000771F8A95D2F74093B9015093BA0160931B +:10391000BB017093BC010C94401841E050E060E0A2 +:1039200070E004C0440F551F661F771F8A95D2F7B9 +:103930008091B9019091BA01A091BB01B091BC01F5 +:10394000482B592B6A2B7B2B4093B9015093BA011A +:103950006093BB017093BC010C94401841E050E0AF +:1039600060E070E004C0440F551F661F771F8A9502 +:10397000D2F740955095609570958091B9019091DE +:10398000BA01A091BB01B091BC01482359236A231D +:103990007B234093B9015093BA016093BB017093AC +:1039A000BC010C94401841E050E060E070E004C0BD +:1039B000440F551F661F771F8A95D2F78091B90172 +:1039C0009091BA01A091BB01B091BC014827592741 +:1039D0006A277B274093B9015093BA016093BB01DA +:1039E0007093BC010C9440180F931F930091B90180 +:1039F0001091BA012091BB013091BC01DC01CB01D7 +:103A0000802B912BA22BB32B8093B9019093BA01F9 +:103A1000A093BB01B093BC011F910F910C9440186F +:103A20000F931F930091B9011091BA012091BB012E +:103A30003091BC01DC01CB0180239123A223B3236D +:103A40008093B9019093BA01A093BB01B093BC01DC +:103A50001F910F910C9440180F931F930091B9017F +:103A60001091BA012091BB013091BC01DC01CB0166 +:103A700080279127A227B3278093B9019093BA0199 +:103A8000A093BB01B093BC011F910F910C944018FF +:103A90000895CF92DF92EF92FF920F931F93CF93EF +:103AA000DF938C01C090BD01D090BE01E090BF01BA +:103AB000F090C0018091B9019091BA01A091BB0131 +:103AC000B091BC01C82AD92AEA2AFB2ACFE1D0E06A +:103AD000D701C6010C2E04C0B695A795979587957A +:103AE0000A94D2F780FF06C0B8018C2F0E943008DC +:103AF000019721F4219760F780E001C08C2FDF91BE +:103B0000CF911F910F91FF90EF90DF90CF9008958C +:103B1000CF93DF93EC010E94491DBE010E94300843 +:103B2000DF91CF910895CB010E94881D0895809167 +:103B3000C10185958595859508958091C10187700E +:103B4000089598E0899F90011124262B2093C101AC +:103B50000C948D1C2091C101809582238093C1011A +:103B6000982F977069F430E0482F552747FD5095FE +:103B70002417350729F08595859585950C94AE1CFD +:103B800008959091C101977081E009F480E0089553 +:103B900090910B01992321F090910C01911109C092 +:103BA00020910D0130910E01F90132969FEF40E016 +:103BB00030C0982F9695969596959F30A0F4E091F9 +:103BC0000D01F0910E01E90FF11D877021E030E049 +:103BD000A90102C0440F551F8A95E2F7CA019181DD +:103BE000892B818308959091D60190FF23C01F9265 +:103BF0008F9384E595E09F938F930E9459060F90D1 +:103C00000F900F900F9008959F3F39F04F5F4E3007 +:103C100041F051915813F8CF0DC05111F7CF942FA7 +:103C2000F5CF9F3F39F0F901E90FF11D97FDFA95A6 +:103C300082830895089590910B01992321F090912A +:103C40000C01911109C020910D0130910E01F90173 +:103C50003296205F3F4F30C0982F96959695969557 +:103C60009F30A8F4E0910D01F0910E01E90FF11DD4 +:103C7000877021E030E0A90102C0440F551F8A95EA +:103C8000E2F7CA01809591818923818308959091FB +:103C9000D60190FF16C01F928F9386E395E09F9305 +:103CA0008F930E9459060F900F900F900F900895D8 +:103CB0003196E217F30729F090819813F9CF10821B +:103CC000F7CF089581E090E0E0910D01F0910E01B1 +:103CD000E80FF91F1082019680319105A9F7089528 +:103CE0008091D50108959091D501892B8093D501BC +:103CF000089580959091D50189238093D5010895E9 +:103D00001092D50108959091D401892B8093D4010C +:103D1000089580959091D40189238093D4010895CA +:103D20001092D40108959091D301892B8093D301EF +:103D3000089580959091D30189238093D3010895AC +:103D40001092D30108958093C20108951092C20188 +:103D5000089580910D0190910E01FC0131969C0116 +:103D6000205F3F4F80E0919191118F5FE217F30741 +:103D7000D1F70895E0910D01F0910E018091D501E8 +:103D80008083E0910D01F0910E0190818091D4012A +:103D9000892B8083E0910D01F0910E01908180913B +:103DA000D301892B80838091C201882361F0E09147 +:103DB0000D01F0910E019081892B80830E94A91E34 +:103DC00081111092C20180910D0190910E010C940D +:103DD00062139093390180933801089520E0009791 +:103DE00039F0AC0141505109842395232F5FF7CF5F +:103DF000822F08958295982F9C7C392F3695369581 +:103E0000282F237344E0249FC0011124932F982B63 +:103E1000292F2A7A2695892F8575880F822B089558 +:103E20001F93CF93DF931F92CDB7DEB799830E9484 +:103E3000FA1E182F9981892F0E94FA1E212F30E037 +:103E4000322F2227A901482BCA010F90DF91CF9171 +:103E50001F9108958091E301843021F11092D701E0 +:103E600020E488E190E00FB6F894A8958093600074 +:103E70000FBE2093600080E00E94490A83B7817FD3 +:103E8000846083BF83B7816083BF7894889583B74C +:103E90008E7F83BF88E10FB6F89480936000109204 +:103EA00060000FBE089508950E945F0A0E94E20A12 +:103EB0000E94531F0E94A90B91E0811101C090E064 +:103EC000892F08950E9450180E9456130C94490A95 +:103ED0001F920F920FB60F9211248F939F93AF935F +:103EE000BF938091D701811113C08091D801909127 +:103EF000D901A091DA01B091DB014196A11DB11D5C +:103F00008093D8019093D901A093DA01B093DB019B +:103F1000BF91AF919F918F910F900FBE0F901F9007 +:103F2000189582E084BD93E095BD9AEF97BD80938C +:103F30006E0008952FB7F8948091D8019091D9011F +:103F4000A091DA01B091DB012FBF0895CF92DF92EB +:103F5000EF92FF920F931F932FB7F8944091D801DF +:103F60005091D9016091DA017091DB012FBF6A0194 +:103F70007B01EE24FF248C0120E030E0C016D10646 +:103F8000E206F30610F4415051099A01281B390B3F +:103F9000C9011F910F91FF90EF90DF90CF9008958E +:103FA0001F920F920FB60F9211248F939F93AF938E +:103FB000BF938091D8019091D901A091DA01B0917D +:103FC000DB010196A11DB11D8093D8019093D90109 +:103FD000A093DA01B093DB01BF91AF919F918F91D4 +:103FE0000F900FBE0F901F9018950E945410F894D8 +:103FF0002FEF87EA91E6215080409040E1F700C022 +:10400000000087E090EBDC018093EC019093ED01E0 +:10401000A093EE01B093EF019CE088E10FB6F89415 +:10402000A895809360000FBE90936000FFCFAF9281 +:10403000BF92CF92DF92EF92FF920F931F93CF9395 +:10404000C4E0CC24C394D12CE82EF12C8C2F0E94F8 +:10405000660B5C010FE010E09601002E02C0220FFB +:10406000331F0A94E2F72A213B21232B51F0602FC2 +:104070007C2F80E00E94B709E816F90611F481E070 +:1040800006C00150110940F7C15000F780E0CF9100 +:104090001F910F91FF90EF90DF90CF90BF90AF9066 +:1040A0000895CF93C82F8CE20E941720882321F017 +:1040B0008C2FCF910C94172080E0CF910895CF934F +:1040C0000E94B121811102C00E94972189E795E0E9 +:1040D0000E94C005C5E6C15049F00E94E20A8FE384 +:1040E0009CE90197F1F700C00000F5CF82E795E069 +:1040F0000E94C00589E20E945120811116C18AE206 +:104100000E94512081110E94972185E00E94512038 +:1041100081110E94F51F0E94BC218093D60187E087 +:104120000E9451208823A9F18BE10E94512088230D +:1041300051F08091D60181FB222720F991E092274E +:1041400090FB81F90EC08EE00E945120882361F01F +:104150008091D60182FB222720F991E0922790FBE3 +:1041600082F98093D60115C080E10E945120909180 +:10417000D601882341F093FB222720F981E0822792 +:1041800080FB93F904C0892F809580FB90F9909370 +:10419000D6018091D6010E94C0210E94CE2190E0DC +:1041A0009093DE018093DD0180EE0E9451208823F0 +:1041B00041F08091DD01982F909590FB80F98093DC +:1041C000DD0189E30E945120882359F08091DD01AF +:1041D00081FB222720F991E0922790FB81F98093BF +:1041E000DD0182EE0E945120882359F08091DD018B +:1041F00082FB222720F991E0922790FB82F980939D +:10420000DD0186EE0E945120882359F08091DD0166 +:1042100083FB222720F991E0922790FB83F980937A +:10422000DD0183EE0E945120882359F08091DD0149 +:1042300084FB222720F991E0922790FB84F9809358 +:10424000DD0185E30E945120882359F08091DD0132 +:1042500085FB222720F991E0922790FB85F9809336 +:10426000DD0181E30E945120882359F08091DD0116 +:1042700086FB222720F991E0922790FB86F9809314 +:10428000DD0181E10E945120882359F08091DD01F8 +:1042900087FB222720F991E0922790FB87F98093F2 +:1042A000DD018091DD010E94D2218091DD0187FB3B +:1042B000882780F980930C0187E20E945120C82F43 +:1042C0008EE10E9451208111C2608FE10E94512035 +:1042D0008111C46080E20E9451208111C86081E296 +:1042E0000E9451208111C06182E20E9451208111FF +:1042F000C06283E20E9451208111C06484E20E9466 +:104300005120882311F0C06802C0CC2329F08C2FE3 +:104310000E94C9216C2F03C00E94C521682F70E044 +:1043200080E090E0CF910C94101CCF9108956DEE39 +:104330007EEF80E090E00E94FB2460E082E090E06D +:104340000E94E92460E083E090E00E94E92460E0BC +:1043500084E090E00E94E92460E085E090E00C9425 +:10436000E92480E090E00E94E32421E08D3E9E4F0E +:1043700009F020E0822F089582E090E00C94DB2485 +:10438000682F82E090E00C94E92483E090E00C94A4 +:10439000DB24682F83E090E00C94E92484E090E033 +:1043A0000C94DB24682F84E090E00C94E924CF93F4 +:1043B000C82F1F928F9384E995E09F938F930E945B +:1043C000590681E090E0A0E0B0E0BC01CD0104C05E +:1043D000660F771F881F991FCA95D2F70E94101C7D +:1043E0000F900F900F900F90CF910C945018CF9387 +:1043F0008B3109F4D1C108F049C08E3009F4E0C115 +:1044000000F5873009F4A9C1A8F4863009F066C226 +:104410008091D601817F8E7F8093D6018BE197E0DA +:104420000E94C0058CEC9AE00E94C00581E0809358 +:10443000DC0191C1883009F45BC08B3009F487C17D +:104440004DC2813109F432C220F4803109F4CCC16B +:1044500045C2863109F4E3C1893109F03FC28CE0DD +:1044600097E00E94C00581EE96E00E94C00586EAB2 +:1044700096E00E94C00589E796E00E94C0058DE3A2 +:1044800096E00E94C00582E196E063C1853309F49D +:1044900021C268F4873209F41DC228F48E3108F471 +:1044A0001DC28D5118C2893209F414C217C2833457 +:1044B00038F48A3308F00CC2883309F448C10EC2BC +:1044C000833409F407C2883409F008C20E945018E6 +:1044D00080EB9AE00E94C0059FEF23ED80E39150AE +:1044E00020408040E1F700C000000E94F51F33C16A +:1044F00080ED9AE00E94C0058DE19AE00E94C0051F +:104500000E94C5211F928F938AE19AE09F938F9317 +:104510000E94590688E19AE00E94C0050E94BC21D1 +:10452000C82F85E09AE00E94C0051F92CF9380E0DB +:104530009AE09F938F930E9459068EEF99E00E9414 +:10454000C00584EF99E00E94C0058C2F81701F92F6 +:104550008F9381EF99E09F938F930E9459068FEE7E +:1045600099E00E94C00585EE99E00E94C005C1FB5C +:10457000882780F91F928F9382EE99E09F938F9303 +:104580000E94590680EE99E00E94C00584ED99E0F2 +:104590000E94C005C2FB882780F91F928F9381ED8E +:1045A00099E09F938F930E9459068FEC99E00E94A7 +:1045B000C00586EC99E00E94C005C3FBCC27C0F97A +:1045C0001F92CF9383EC99E09F938F930E9459069B +:1045D00081EC99E00E94C0050E94CE21C82F8DEA8F +:1045E00099E00E94C0051F92CF9388EA99E09F93BB +:1045F0008F930E94590686EA99E00E94C0058DE8D3 +:1046000099E00E94C0058C2F81701F928F938AE8D9 +:1046100099E09F938F930E9459068DB79EB780961D +:104620000FB6F8949EBF0FBE8DBF88E899E00E9438 +:10463000C00581E799E00E94C005C1FB882780F989 +:104640001F928F938EE699E09F938F930E94590655 +:104650008CE699E00E94C0058AE599E00E94C005B9 +:10466000C2FB882780F91F928F9387E599E09F937B +:104670008F930E94590685E599E00E94C00583E466 +:1046800099E00E94C005C3FB882780F91F928F9391 +:1046900080E499E09F938F930E9459068EE399E0FE +:1046A0000E94C00584E399E00E94C005C4FB8827EE +:1046B00080F91F928F9381E399E09F938F930E94DB +:1046C00059068FE299E00E94C0058DE199E00E94B1 +:1046D000C005C5FB882780F91F928F938AE199E076 +:1046E0009F938F930E94590688E199E00E94C0052C +:1046F0008CEF98E00E94C005C6FB882780F91F92C6 +:104700008F9389EF98E09F938F930E94590687EFCC +:1047100098E00E94C0058FEE98E00E94C005C7FB9C +:10472000CC27C0F91F92CF938CEE98E09F938F9384 +:104730000E9459068AEE98E00E94C0058DB79EB788 +:104740004C960FB6F8949EBF0FBE8DBF04C086E393 +:1047500097E00E94C005C1E0C6C08091D601C82F75 +:10476000C095C170C0FB80F98093D601CC2349F07D +:1047700084EA9AE00E94C0058091D6018660886034 +:1047800048C087E99AE00E94C0058091D601897FE0 +:10479000877F8093D601DFCF9091D60191FBCC2704 +:1047A000C0F981E0C827892FC0FB81F98093D60129 +:1047B000CC2319F08AE89AE027C08CE79AE0C9CFA9 +:1047C0009091D60192FBCC27C0F981E0C827892FB0 +:1047D000C0FB82F98093D601CC2319F08DE69AE0D4 +:1047E00013C08DE59AE0B5CF9091D60193FBCC270D +:1047F000C0F981E0C827892FC0FB83F98093D601D7 +:10480000CC2351F081E59AE00E94C0058091D60149 +:1048100081608093D60167C084E49AE09ACF84E0F7 +:1048200096E00E94C0050E9456131F928F938AEE55 +:1048300095E09F938F930E94590680910B011F92E0 +:104840008F9383ED95E09F938F930E9459068091FB +:104850006F011F928F9380EC95E09F938F930E943E +:10486000590680910C011F928F938DEA95E09F93DA +:104870008F930E9459068091D8019091D901A091FF +:10488000DA01B091DB01BF93AF939F938F9389E9D6 +:1048900095E09F938F930E9459068DB79EB74696D9 +:1048A0000FB6F8949EBF0FBE8DBF55CF0E94501813 +:1048B000C0910C0181E0C827C0930C01CC2329F0E2 +:1048C0008AE39AE00E94C0050EC08FE29AE041CFD1 +:1048D000895301C080E00E94D7213DCF8DE29AE04C +:1048E0000E94C005C0E08C2FCF91089580E008950C +:1048F00080E00895CF93C82F8091DC01882319F0C0 +:10490000813049F03EC0E0910D01F0910E018081AF +:104910008232C9F507C0E0910D01F0910E0180814E +:10492000823261F48C2F0E947624811104C08C2F76 +:104930000E94F72124C081E090E021C08C2F0E94CA +:10494000782481111BC0C43189F018F4CB3029F0D0 +:1049500010C0C93259F0C83361F48BE197E00E946E +:10496000C00580E995E00E94C00508C01092DC01F6 +:104970000CC08EE895E00E94C00507C081E0817000 +:1049800006C01092DC0180E002C080E0F8CFCF9139 +:104990000895991B79E004C0991F961708F0961B9B +:1049A000881F7A95C9F780950895EE0FFF1F05902F +:1049B000F491E02D0994F999FECF92BD81BDF89A4A +:1049C000992780B50895A8E1B0E042E050E00C944A +:1049D0000325262FF999FECF92BD81BDF89A019744 +:1049E00000B4021639F01FBA20BD0FB6F894FA9A37 +:1049F000F99A0FBE08950196272F0E94EA240C947D +:104A0000E924DC01CB01FC01F999FECF06C0F2BD1F +:104A1000E1BDF89A319600B40D9241505040B8F77C +:064A20000895F894FFCF99 +:104A2600FFBF0B8E0CC20B5A0C260C0101C30133BF +:104A36001F4F5F6F76666353437969497F03131986 +:104A46000929593940362039C3048D046D043404CC +:084A5600C003D903F2031204AE +:00000001FF diff --git a/keyboards/clueboard1/keymaps/default/keymap.c b/keyboards/clueboard1/keymaps/default/keymap.c new file mode 100644 index 0000000000..3f4f3c4149 --- /dev/null +++ b/keyboards/clueboard1/keymaps/default/keymap.c @@ -0,0 +1,184 @@ +#include "clueboard1.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 +#define _RS 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,--------------------------------------------------------------------------. ,----. + * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS| |PGUP| + * |--------------------------------------------------------------------------| |----| + * | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PGDN| + * |--------------------------------------------------------------------------| `----' + * |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent| + * |-----------------------------------------------------------------------------. + * |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| UP| + * |------------------------------------------------------------------------|----|----. + * | Ctrl| Gui| Alt| MHen| Space| Space| Hen| Alt| Ctrl| _FL|LEFT|DOWN|RGHT| + * `----------------------------------------------------------------------------------' + */ +[_BL] = KEYMAP( + F(0), 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_GRV, KC_BSPC, 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_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_NUHS, KC_ENT, \ + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), + + /* Keymap _FL: Function Layer + * ,--------------------------------------------------------------------------. ,----. + * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN| + * |--------------------------------------------------------------------------| |----| + * | | | | | | | | |PScr|SLck|Paus| | | | |BLDE| + * |--------------------------------------------------------------------------| `----' + * | | | _RS| | | | | | | | | | | | + * |-----------------------------------------------------------------------------. + * | | | | | | | | | | | | | | |PGUP| + * |------------------------------------------------------------------------|----|----. + * | | | | | | | | | | _FL|HOME|PGDN| END| + * `----------------------------------------------------------------------------------' + */ +[_FL] = KEYMAP( + KC_GRV, 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_TRNS, KC_DEL, BL_STEP, \ + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, MO(_RS),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_PGUP, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_HOME, KC_PGDN, KC_END), + + /* Keymap _RS: Reset layer + * ,--------------------------------------------------------------------------. ,----. + * | | | | | | | | | | | | | | | | | | + * |--------------------------------------------------------------------------| |----| + * | | | | |RESET| | | | | | | | | | | | + * |--------------------------------------------------------------------------| `----' + * | | | _RS| | | | | | | | | | | | + * |-----------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |------------------------------------------------------------------------|----|----. + * | | | | | | | | | | _FL| | | | + * `----------------------------------------------------------------------------------' + */ +[_RS] = 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, F(1), F(7), \ + 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, F(8), \ + KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), F(5), \ + KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, F(2), F(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(4), F(6), F(3)), + #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,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, MO(_RS),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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), 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/clueboard1/led.c b/keyboards/clueboard1/led.c new file mode 100644 index 0000000000..f0dd5662d5 --- /dev/null +++ b/keyboards/clueboard1/led.c @@ -0,0 +1,32 @@ + /* +Copyright 2012 Jun Wako + +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 . +*/ + +#include +#include "stdint.h" +#include "led.h" + + +void led_set_kb(uint8_t usb_led) { + DDRF |= (1<<0); + if (usb_led & (1<