diff options
54 files changed, 8282 insertions, 3690 deletions
@@ -33,6 +33,10 @@ If your keymap directory has a file called `makefile.mk` (note the lowercase fil So let's say your keyboard's makefile has `CONSOLE_ENABLE = yes` (or maybe doesn't even list the `CONSOLE_ENABLE` option, which would cause it to revert to the global Quantum default). You want your particular keymap to not have the debug console, so you make a file called `makefile.mk` and specify `CONSOLE_ENABLE = no`. +### Customizing config.h on a per-keymap basis + +If you use the ErgoDox EZ, you can make a `config_user.h` file in your keymap directory and use it to override any `config.h` settings you don't like. Anything you set there will take precedence over the global `config.h` for the ErgoDox EZ. To see an example of this, check out `keymaps/erez_experimental`. + ## Quick aliases to common actions Your keymap can include shortcuts to common operations (called "function actions" in tmk). @@ -41,10 +45,13 @@ Your keymap can include shortcuts to common operations (called "function actions `MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack. +`OSL(layer)` - momentary switch to *layer*, as a one-shot operation. So if you have a key that's defined as `OSL(1)`, and you tap that key, then only the very next keystroke would come from layer 1. You would drop back to layer zero immediately after that one keystroke. That's handy if you have a layer full of custom shortcuts -- for example, a dedicated key for closing a window. So you tap your one-shot layer mod, then tap that magic 'close window' key, and keep typing like a boss. Layer 1 would remain active as long as you hold that key down, too (so you can use it like a momentary toggle-layer key with extra powers). + `LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer). `TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack. + ### Fun with modifier keys * `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias @@ -85,14 +92,19 @@ The following shortcuts automatically add `LSFT()` to keycodes to get commonly u KC_PIPE | KC_COLN : +`OSM(mod)` - this is a "one shot" modifier. So let's say you have your left Shift key defined as `OSM(MOD_LSFT)`. Tap it, let go, and Shift is "on" -- but only for the next character you'll type. So to write "The", you don't need to hold down Shift -- you tap it, tap t, and move on with life. And if you hold down the left Shift key, it just works as a left Shift key, as you would expect (so you could type THE). There's also a magical, secret way to "lock" a modifier by tapping it multiple times. If you want to learn more about that, open an issue. :) + `MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. -These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available): +These are the values you can use for the `mod` in `MT()` and `OSM()` (right-hand modifiers are not available for `MT()`): * MOD_LCTL * MOD_LSFT * MOD_LALT * MOD_LGUI + * MOD_HYPR + * MOD_MEH + These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. diff --git a/keyboard/atomic/keymaps/pvc/config.h b/keyboard/atomic/keymaps/pvc/config.h index cc92634646..034bc5dc5c 100644 --- a/keyboard/atomic/keymaps/pvc/config.h +++ b/keyboard/atomic/keymaps/pvc/config.h @@ -158,4 +158,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION + +//#define VIBRATO_ENABLE +//#define VIBRATO_STRENGTH_ENABLE + + #endif diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index e17c41e23d..3d604a868e 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -11,8 +11,8 @@ #define LAYER_QWERTY 0 #define LAYER_COLEMAK 1 #define LAYER_DVORAK 2 -#define LAYER_LOWER 3 -#define LAYER_RAISE 4 +#define LAYER_RAISE 3 +#define LAYER_LOWER 4 #define LAYER_FUNCTION 5 #define LAYER_MOUSE 6 #define LAYER_MUSIC 7 @@ -21,8 +21,8 @@ #define MACRO_QWERTY 0 #define MACRO_COLEMAK 1 #define MACRO_DVORAK 2 -#define MACRO_LOWER 3 -#define MACRO_RAISE 4 +#define MACRO_RAISE 3 +#define MACRO_LOWER 4 #define MACRO_FUNCTION 5 #define MACRO_MOUSE 6 #define MACRO_TIMBRE_1 7 @@ -42,8 +42,8 @@ #define M_QWRTY M(MACRO_QWERTY) #define M_COLMK M(MACRO_COLEMAK) #define M_DVORK M(MACRO_DVORAK) -#define M_LOWER M(MACRO_LOWER) #define M_RAISE M(MACRO_RAISE) +#define M_LOWER M(MACRO_LOWER) #define M_FUNCT M(MACRO_FUNCTION) #define M_MOUSE M(MACRO_MOUSE) #define TIMBR_1 M(MACRO_TIMBRE_1) @@ -148,23 +148,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, }, + [LAYER_RAISE] = { /* RAISED */ + { KC_TILD, KC_PSCR, KC_PAUS, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, + { _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, + { _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, + { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, [LAYER_LOWER] = { /* LOWERED */ { 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, ________________ }, - { _______, _______, _______, _______, SC_CCLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, - { _______, SC_REDO, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, + { _______, KC_F13, KC_F14, KC_F15, KC_F16, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, + { _______, KC_F17, KC_F18, KC_F19, KC_F20, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, + { _______, KC_F21, KC_F22, KC_F23, KC_F24, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, _______, _______, _______, _______, _______, _______, _______ }, }, - [LAYER_RAISE] = { /* RAISED */ - { KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, - { _______, _______, _______, _______, SC_ACLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, - { _______, SC_SELA, SC_SAVE, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, - { _______, SC_UNDO, SC_CUT, SC_COPY, SC_PSTE, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, - { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, - }, - [LAYER_FUNCTION] = { /* FUNCTION */ { KC_NLCK, 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_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, KC_PAUS }, @@ -281,28 +280,28 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; - case MACRO_LOWER: + case MACRO_RAISE: if (record->event.pressed) { - layer_on(LAYER_LOWER); + layer_on(LAYER_RAISE); update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); } else { - layer_off(LAYER_LOWER); + layer_off(LAYER_RAISE); update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); } break; - case MACRO_RAISE: + case MACRO_LOWER: if (record->event.pressed) { - layer_on(LAYER_RAISE); + layer_on(LAYER_LOWER); update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); } else { - layer_off(LAYER_RAISE); + layer_off(LAYER_LOWER); update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); } break; @@ -468,36 +467,40 @@ void led_set_user(uint8_t usb_led) _delay_ms(10); // gets rid of tick - if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) - { - // If CAPS LK LED is turning on... - PLAY_NOTE_ARRAY(tone_caps_on, false, LEGATO); - } - else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) - { - // If CAPS LK LED is turning off... - PLAY_NOTE_ARRAY(tone_caps_off, false, LEGATO); - } - else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK))) - { - // If NUM LK LED is turning on... - PLAY_NOTE_ARRAY(tone_numlk_on, false, LEGATO); - } - else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK))) - { - // If NUM LED is turning off... - PLAY_NOTE_ARRAY(tone_numlk_off, false, LEGATO); - } - else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK))) - { - // If SCROLL LK LED is turning on... - PLAY_NOTE_ARRAY(tone_scroll_on, false, LEGATO); - } - else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK))) - { - // If SCROLL LED is turning off... - PLAY_NOTE_ARRAY(tone_scroll_off, false, LEGATO); - } + if (!is_playing_notes()) + { + if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) + { + // If CAPS LK LED is turning on... + PLAY_NOTE_ARRAY(tone_caps_on, false, LEGATO); + } + else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) + { + // If CAPS LK LED is turning off... + PLAY_NOTE_ARRAY(tone_caps_off, false, LEGATO); + } + else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK))) + { + // If NUM LK LED is turning on... + PLAY_NOTE_ARRAY(tone_numlk_on, false, LEGATO); + } + else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK))) + { + // If NUM LED is turning off... + PLAY_NOTE_ARRAY(tone_numlk_off, false, LEGATO); + } + else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK))) + { + // If SCROLL LK LED is turning on... + PLAY_NOTE_ARRAY(tone_scroll_on, false, LEGATO); + } + else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK))) + { + // If SCROLL LED is turning off... + PLAY_NOTE_ARRAY(tone_scroll_off, false, LEGATO); + } + } + old_usb_led = usb_led; } diff --git a/keyboard/atreus/config.h b/keyboard/atreus/config.h index ca0cd7e47a..55d3b62b92 100644 --- a/keyboard/atreus/config.h +++ b/keyboard/atreus/config.h @@ -36,7 +36,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. // Change this to how you wired your keyboard // COLS: Left to right, ROWS: Top to bottom #if defined(ATREUS_ASTAR) - #define COLS (int []){ B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 } + #define COLS (int []){ D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } #define ROWS (int []){ D0, D1, D3, D2 } #elif defined(ATREUS_TEENSY2) #define COLS (int []){ F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0} diff --git a/keyboard/ergodox_ez/Makefile b/keyboard/ergodox_ez/Makefile index 5dfcca2c80..3a07ec254f 100644 --- a/keyboard/ergodox_ez/Makefile +++ b/keyboard/ergodox_ez/Makefile @@ -101,6 +101,22 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: ht # MIDI_ENABLE = yes # MIDI controls # UNICODE_ENABLE = yes # Unicode +# If you want to have your own config_user.h, you can just put it in +# your keymap directory. Anything you set there will take precedence +# over the global config.h. +ifneq ("$(wildcard keymaps/$(KEYMAP)/config_user.h)","") +CONFIG_USER_H = keymaps/$(KEYMAP)/config_user.h +endif + +ifdef KEYMAP + +ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif +endif +endif + # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h b/keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h new file mode 100644 index 0000000000..d19c2783c3 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "config.h" +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 3000 + +#endif diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex index ab32e94dd2..edbead2769 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex @@ -1,235 +1,235 @@ -:100000000C9465020C94A9020C94A9020C94A90208
-:100010000C94A9020C94A9020C94A9020C94A902B4
-:100020000C94A9020C94A9020C94A00C0C94720DCF
-:100030000C94A9020C94A9020C94A9020C94A90294
-:100040000C94A9020C9446220C94A9020C94A902C7
-:100050000C94A9020C94EA1B0C94A9020C94A9021A
-:100060000C94A9020C94A9020C94A9020C94A90264
-:100070000C94A9020C94A9020C94A9020C94A90254
-:100080000C94A9020C94A9020C94A9020C94A90244
-:100090000C94A9020C94A9020C94A9020C94A90234
-:1000A0000C94A9020C94A9020C94A902D70DF90D85
-:1000B000E40EF90DE40E3B0E5E0EE40EB30EC60E1A
-:1000C000C011C0110112011243127F127F147F145C
-:1000D00097127F148E138E1359147F147F146D148E
-:1000E0000000F0A12E004C002A00003035810000F5
-:1000F0001E00140004001D7134004D001F001A0082
-:1001000016001B00E104C1002000080007000600E3
-:1001100050002C0021001500090019004F004A0072
-:10012000220017000A000500000065745000015409
-:1001300000002F7F0000E3004F00015400003077E3
-:100140000000E20023001C000B00110000002971D8
-:10015000240018000D74100052004B0025000C0004
-:100160000E00360051002800260012000F00370054
-:100170002F002B81270013003382387130004E008E
-:100180002D003100347801302D0000000100010005
-:1001900001000100010000003A001E0022002602BA
-:1001A000010001003B001F002300270201000100A5
-:1001B0003C00200024002F004B0101003D002100E5
-:1001C000250030004E0101003E00010026002700FE
-:1001D000000001000100010000000100000001001A
-:1001E0000100010000000100000001003F000100CB
-:1001F0002402310200000100400022022D022602EA
-:100200000100010041002E002D0027020100010025
-:1002100042001F0213002000010001004300010002
-:100220002E02010001000100440045000100010010
-:1002300001000000010001000100010001000000B8
-:1002400001000100010001000100010001000100A6
-:10025000F2000100010001000100F000F1000100C6
-:10026000F400010001000100F3000100F5000100AD
-:100270000100010001000100000001000100010077
-:100280000000010000000100010001000000010069
-:100290000000010001000100010001000000010058
-:1002A0000100010001000100A9000100010001009E
-:1002B0000100AC00AA00B600010001000100AB0083
-:1002C000A80001000100010001000100010001007F
-:1002D00001000100AE00010001000000160345000E
-:1002E000720067006F0044006F0078002000450036
-:1002F0005A00000016034500720067006F004400BA
-:100300006F007800200045005A0000000403090433
-:1003100009026D00040100A0FA09040000010301B4
-:100320000100092111010001223F00070581030896
-:10033000000A090401000103010200092111010062
-:1003400001224D000705820308000A09040200018A
-:100350000300000009211101000122360007058376
-:100360000308000A09040300010300000009211129
-:100370000100012239000705840310000112011059
-:100380000100000008EDFE07130100010200010555
-:10039000010906A101050719E029E71500250195C6
-:1003A0000875018102050819012905950575019156
-:1003B000029501750391010507190029771500259C
-:1003C00001957875018102C005010980A1018502AE
-:1003D00016010026B7001A01002AB7007510950112
-:1003E0008100C0050C0901A1018503160100269CAE
-:1003F000021A01002A9C02751095018100C00501B6
-:100400000902A1010901A100050919012905150029
-:10041000250195057501810295017503810105018D
-:10042000093009311581257F950275088106093843
-:100430001581257F950175088106050C0A3802157E
-:1004400081257F950175088106C0C005010906A1B7
-:1004500001050719E029E7150025019508750181B7
-:100460000295017508810105081901290595057591
-:100470000191029501750391010507190029FF15E6
-:100480000025FF950675088100C0000000000000EF
-:100490000000000000010204060A0F17202C3A4A4F
-:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2
-:1004B000B39D87715D4A3A2C20170F0A060402018A
-:1004C0000000000000000000000011241FBECFEF5C
-:1004D000DAE0DEBFCDBF04B603FE24C08091F00198
-:1004E0009091F101A091F201B091F3018730904B0E
-:1004F000A740B04BB9F41092F0011092F1011092A4
-:10050000F2011092F30114BE84B7877F84BF88E1A3
-:100510000FB6F89480936000109260000FBEE0E088
-:10052000FFE3099511E0A0E0B1E0EAE1F8E402C0E0
-:1005300005900D92A433B107D9F711E0A4E3B1E01F
-:1005400001C01D92A03FB107E1F70E94E6090C949B
-:100550000B240C940000662319F06130F1F03DC0CB
-:10056000FC018281882341F00E94B51B90933501E4
-:100570008093340181EE1CC080913401909135014B
-:100580000E94C11B8634910534F486E20E94481013
-:1005900086E20E94101181EE1EC0FC018281882338
-:1005A00051F00E94B51B909335018093340185EE84
-:1005B0000E94481012C080913401909135010E9430
-:1005C000C11B8634910534F487E20E94481087E20B
-:1005D0000E94101185EE0E94101180E090E00895B5
-:1005E00008956091B3017091B4018091B50190912B
-:1005F000B6010E94131B56985E9825982D98269850
-:100600002E9827982F98813019F0823021F0089584
-:10061000259A2D9A0895269A2E9A08950C94F102FF
-:1006200056985E9825982D9826982E9827982F985A
-:100630008FEF90E0909389008093880090938B00D7
-:1006400080938A0090938D0080938C00259A2D9A38
-:100650002FEF80E792E0215080409040E1F700C00A
-:100660000000269A2E9A2FEF80E792E021508040DA
-:100670009040E1F700C00000279A2F9A2FEF80E703
-:1006800092E0215080409040E1F700C000002598A2
-:100690002D982FEF80E792E0215080409040E1F7C5
-:1006A00000C0000026982E982FEF80E792E021509E
-:1006B00080409040E1F700C0000027982F9856989E
-:1006C0005E9825982D9826982E9827982F9808950B
-:1006D00089EA8093800089E08093810024982C9897
-:1006E0003F988AB18F748AB96E98479A8BB1806BA4
-:1006F0008BB9769A0E9410030C94F00280E28093EA
-:1007000000018091360181110EC00E94CD0381E06D
-:10071000809336012FEF83ED90E32150804090408D
-:10072000E1F700C0000080E40E94D3038093000141
-:1007300081112EC00E94FD0380930001811128C009
-:100740000E94FD0380930001811122C08FE30E946B
-:10075000FD038093000181111BC00E94F50380E41A
-:100760000E94D30380930001811112C08CE00E948B
-:10077000FD038093000181110BC00E94FD03809353
-:100780000001811105C08FE30E94FD0380930001E9
-:100790000E94F5038091000108951092B9008AE04B
-:1007A0008093B800089594EA9093BC009091BC00A7
-:1007B00097FFFCCF9091B900987F983021F090314D
-:1007C00011F081E008958093BB0084E88093BC0021
-:1007D0008091BC0087FFFCCF8091B900887F883171
-:1007E00011F0803471F780E0089584E98093BC00B3
-:1007F0008091BC0084FDFCCF08958093BB0084E809
-:100800008093BC008091BC0087FFFCCF9091B90021
-:10081000987F81E0983209F480E0089584E880931D
-:10082000BC008091BC0087FFFCCF8091BB00089585
-:1008300080910001811115C080E40E94D303809350
-:10084000000181110CC082E10E94FD038093000130
-:10085000811105C08FEF0E94FD03809300010E946B
-:10086000F50384B1807F84B985B1807F85B98AB171
-:10087000837F8AB98BB1837F8BB93E984698089560
-:100880000E947E03809300010E94180480B38C7044
-:1008900080BB81B3836F81BBE6E4F1E0A8E3B1E004
-:1008A00011921D9281E0E435F807D1F70C946803AA
-:1008B000BF92CF92DF92EF92FF920F931F93CF934D
-:1008C000DF9380910001882379F0809137018F5F59
-:1008D00080933701811108C00E947E03809300013C
-:1008E000811102C00E94100308E311E0C0E0D0E0D3
-:1008F000DD24D39482E0C82EEE24E394F12CC7309B
-:1009000000F580910001811162C080E40E94D30350
-:1009100080930001811112C082E10E94FD03809347
-:10092000000181110BC0C7010C2E01C0880F0A9471
-:10093000EAF780950E94FD03809300010E94F50371
-:1009400046C0CA30A1F028F4C83059F0C93061F06F
-:1009500005C0CC3089F070F0CD3089F0209A28980D
-:1009600010C0219A29980DC0229A2A980AC0239A69
-:100970002B9807C0529A01C0539A5B9802C03E9AC6
-:100980004698E0EAEA95F1F78FB179995AC092E07A
-:1009900081708D25892B7C9B02C090E001C094E082
-:1009A000892B7D9B02C090E001C098E0892B7E9B43
-:1009B00002C090E001C090E1892B9FB19095991FF2
-:1009C0009927991F9295990F907E892B0FC080913E
-:1009D000000181114BC080E40E94D3038093000189
-:1009E000882389F1B12C0E94F5038B2DF8019081A9
-:1009F000981719F08083C09201010E941804219673
-:100A00000F5F1F4FCE30D10509F079CF80910101E2
-:100A1000882371F1815080930101882339F08FE997
-:100A20009FE00197F1F700C0000022C0A6E4B1E00A
-:100A3000E8E3F1E081918D9391E0E634F907D1F795
-:100A400017C090E0A5CF83E10E94FD0380930001D1
-:100A50008111C8CF81E40E94D303809300018111EA
-:100A6000C1CF0E940E04B82EB094BDCF80E0BECF9F
-:100A70000E940E0381E0DF91CF911F910F91FF90B3
-:100A8000EF90DF90CF90BF900895E82FF0E0EA5B01
-:100A9000FE |