diff options
Diffstat (limited to 'keyboards/clueboard1')
-rw-r--r-- | keyboards/clueboard1/Makefile | 72 | ||||
-rw-r--r-- | keyboards/clueboard1/clueboard1.c | 19 | ||||
-rw-r--r-- | keyboards/clueboard1/clueboard1.h | 52 | ||||
-rw-r--r-- | keyboards/clueboard1/config.h | 95 | ||||
-rw-r--r-- | keyboards/clueboard1/keymaps/default/compiled.hex | 1192 | ||||
-rw-r--r-- | keyboards/clueboard1/keymaps/default/keymap.c | 184 | ||||
-rw-r--r-- | keyboards/clueboard1/led.c | 32 |
7 files changed, 1646 insertions, 0 deletions
diff --git a/keyboards/clueboard1/Makefile b/keyboards/clueboard1/Makefile new file mode 100644 index 000000000..98ad148c7 --- /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 000000000..136ddf15b --- /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 000000000..5b53e9258 --- /dev/null +++ b/keyboards/clueboard1/clueboard1.h @@ -0,0 +1,52 @@ +#ifndef CLUEBOARD1_H +#define CLUEBOARD1_H + +#include "matrix.h" +#include "keymap.h" +#include <stddef.h> + + +/* 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 000000000..16338ddb0 --- /dev/null +++ b/keyboards/clueboard1/config.h @@ -0,0 +1,95 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xC1ED +#define PRODUCT_ID 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 000000000..31008c426 --- /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 000000000..3f4f3c414 --- /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 000000000..f0dd5662d --- /dev/null +++ b/keyboards/clueboard1/led.c @@ -0,0 +1,32 @@ + /* +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_set_kb(uint8_t usb_led) { + DDRF |= (1<<0); + if (usb_led & (1<<USB_LED_CAPS_LOCK)) { + // Turn capslock on + PORTF |= (1<<0); + } else { + // Turn capslock off + PORTF &= ~(1<<0); + } +} |