From f4ba9662f41342dd40052c70c4384ff7d03d7c15 Mon Sep 17 00:00:00 2001 From: Jonathan Arnett Date: Thu, 21 Jan 2016 21:25:33 -0500 Subject: [PATCH 01/55] A to toggle L2, hjkl to move mouse --- keyboard/ergodox_ez/keymaps/j3rn/keymap.c | 27 ++++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c index b5463cb7..e5be6fed 100644 --- a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c +++ b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c @@ -14,7 +14,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | Tab | Q | W | E | R | T | - | | = | Y | U | I | O | P | \ | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * |Ctrl/Esc| A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' | + * |Ctrl/Esc|A / L2| S | D | F | G |------| |------| H | J | K | L | ; | ' | * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, - CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, + CTL_T(KC_ESC), LT(MDIA, KC_A),KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), KC_FN1, KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, @@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_EQL, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_QUOT, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, @@ -99,13 +99,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | | | | | | | | | | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | + * | | | | | | | | | | | | Lclk | Rclk | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * | | | | | | |------| |------|MsLeft|MsDown| MsUp |MsRght| | Play | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | | | | | | | | | | Prev | Next | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * | | | | | | |VolUp |VolDn | Mute | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -116,19 +116,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------' `--------------------' */ // MEDIA AND MOUSE -KEYMAP( +[MDIA] = KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // right hand KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, + KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -138,7 +138,8 @@ KEYMAP( }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Layer 1 (Symbols) + [2] = ACTION_LAYER_TAP_TOGGLE(MDIA) // FN2 - Momentary Layer 2 (Media) }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) From 6f53e17bf50fbe7bb833a0993e367be81fd2d559 Mon Sep 17 00:00:00 2001 From: Jonathan Arnett Date: Wed, 27 Jan 2016 19:13:54 -0500 Subject: [PATCH 02/55] Building a row of level switch buttons --- keyboard/ergodox_ez/keymaps/j3rn/keymap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c index e5be6fed..5da69708 100644 --- a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c +++ b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c @@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | ~L1 | '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * | ~L1 | ~L2 |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | App | Home | | PgUp |Ctrl/Esc| @@ -34,9 +34,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, - CTL_T(KC_ESC), LT(MDIA, KC_A),KC_S, KC_D, KC_F, KC_G, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), - KC_FN1, KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + KC_FN1, KC_FN2, LALT(KC_LSFT), KC_LEFT,KC_RGHT, ALT_T(KC_APP), KC_HOME, KC_END, From 9cfc74c35b940884618b0fe1e6fd25c570e1c974 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 7 Apr 2016 15:21:06 +0300 Subject: [PATCH 03/55] [Erez & Jack] Makes tri-layer available across Quantum --- keyboard/planck/keymaps/default/keymap.c | 9 --------- quantum/keymap_common.c | 8 ++++++++ quantum/keymap_common.h | 4 ++++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index dee2840f..56092d04 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -174,16 +174,7 @@ float tone_dv[][2] = { }; #endif -#define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) -#define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer))) -void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { - layer_on(layer3); - } else { - layer_off(layer3); - } -} const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index e3030a88..3a00d36f 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -291,3 +291,11 @@ action_t keymap_func_to_action(uint16_t keycode) // For FUNC without 8bit limit return (action_t){ .code = pgm_read_word(&fn_actions[(int)keycode]) }; } + +void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { + layer_on(layer3); + } else { + layer_off(layer3); + } +} diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 4a877d2a..7452a1ff 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -208,5 +208,9 @@ extern const uint16_t fn_actions[]; #define UNICODE(n) (n | 0x8000) #define UC(n) UNICODE(n) +// For tri-layer +void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3); +#define IS_LAYER_ON(layer) ((layer_state) & (1UL<<(layer))) +#define IS_LAYER_OFF(layer) ((!layer_state) & (1UL<<(layer))) #endif From 2557b91644d9565c43f0e5c27d45788d4a47f3eb Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 7 Apr 2016 15:45:11 +0300 Subject: [PATCH 04/55] [Erez & Jack] Documents tri-layer and keymap-specific makefile options --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ab737302..613bdcf4 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,21 @@ The documentation below explains QMK customizations and elaborates on some of th * If you're looking to customize a keyboard that currently runs QMK or TMK, find your keyboard's directory under `keyboard/` and run the make commands from there. * If you're looking to apply this firmware to an entirely new hardware project (a new kind of keyboard), you can create your own Quantum-based project by using `./new_project.sh `, which will create `/keyboard/` with all the necessary components for a Quantum project. +### Makefile Options + You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality MIDI_ENABLE = yes # MIDI controls - # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not // + UNICODE_ENABLE = no # <-- This is how you disable an option, just set it to "no" BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +### Customizing Makefile options on a per-keymap basis + +If your keymap directory has a file called `makefile.mk` (note the lowercase filename, and the `.mk` extension), any Makefile options you set in that file will take precedence over other Makefile options (those set for Quantum as a whole or for your particular keyboard). + +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`. + ## Quick aliases to common actions Your keymap can include shortcuts to common operations (called "function actions" in tmk). @@ -199,6 +207,10 @@ This will clear all mods currently pressed. This will clear all keys besides the mods currently pressed. +* `update_tri_layer(layer_1, layer_2, layer_3);` + +If the user attempts to activate layer 1 AND layer 2 at the same time (for example, by hitting their respective layer keys), layer 3 will be activated. Layers 1 and 2 will _also_ be activated, for the purposes of fallbacks (so a given key will fall back from 3 to 2, to 1 -- and only then to 0). + #### Timer functionality It's possible to start timers and read values for time-specific events - here's an example: From aaa7af752c89bdf22054c6dd0369c83ca1bee30d Mon Sep 17 00:00:00 2001 From: Jonathan Arnett Date: Mon, 11 Apr 2016 19:01:39 -0400 Subject: [PATCH 05/55] Make a also toggle Media layer --- keyboard/ergodox_ez/keymaps/j3rn/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c index 5da69708..5eb15740 100644 --- a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c +++ b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, - CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, + CTL_T(KC_ESC), LT(MDIA, KC_A), KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), KC_FN1, KC_FN2, LALT(KC_LSFT), KC_LEFT,KC_RGHT, From 4b03a0f3d5f59c80cce8bb666b3aea166de5e5f1 Mon Sep 17 00:00:00 2001 From: Jonathan Arnett Date: Mon, 11 Apr 2016 19:08:24 -0400 Subject: [PATCH 06/55] Stylistic changes --- keyboard/ergodox_ez/keymaps/j3rn/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c index 5eb15740..6e271321 100644 --- a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c +++ b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, - CTL_T(KC_ESC), LT(MDIA, KC_A), KC_S, KC_D, KC_F, KC_G, + CTL_T(KC_ESC), LT(MDIA, KC_A),KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), KC_FN1, KC_FN2, LALT(KC_LSFT), KC_LEFT,KC_RGHT, From 9e2c767c454ff07330b522579f6433276ae9d7cb Mon Sep 17 00:00:00 2001 From: Jonathan Arnett Date: Mon, 11 Apr 2016 19:19:20 -0400 Subject: [PATCH 07/55] Added README note about Vim-style navigation --- keyboard/ergodox_ez/keymaps/j3rn/readme.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/j3rn/readme.md b/keyboard/ergodox_ez/keymaps/j3rn/readme.md index b0c4d267..fc4b6404 100644 --- a/keyboard/ergodox_ez/keymaps/j3rn/readme.md +++ b/keyboard/ergodox_ez/keymaps/j3rn/readme.md @@ -1,10 +1,10 @@ -# J3RN's Mac-centric Ergodox EZ keymap +# J3RN's Mac-centric ErgoDox EZ keymap ## Motivation -Essentially, I wanted to switch to a layout that was less jarring than the default Ergodox EZ layout, and did not require finger gymnastics to perform common OS X shortcuts (most of which involve the CMD (LGui) key). +Essentially, I wanted to switch to a layout that was less jarring than the default ErgoDox EZ layout, and did not require finger gymnastics to perform common OS X shortcuts (most of which involve the CMD (LGui) key). -## How is it different from the default Ergodox EZ layout? +## How is it different from the default ErgoDox EZ layout? This layout more closely resembles that of the Mac keyboard, and has some other goodness baked in. Here is a rundown of what that means: @@ -18,6 +18,7 @@ This layout more closely resembles that of the Mac keyboard, and has some other ### Other changes - **The button to the left of "A" is Ctrl/Esc instead of Backspace.** This is actually how I have the keyboard on my Macbook set up to be, since it's loads more convenient than a CAPS LOCK key. This is the Ctrl key I find myself using most. +- **Mouse uses Vim-style navigation**. To activate "Media mode," hold the 'a' key. This allows you to move the mouse around with hjkl just like in Vim. Additionally, right and left click are the conveniently placed 'i' and 'o' keys. - **The key to the right of "5" and the key to left of "6" are "[" and "]", respectively, instead of Left and Right.** There is a more convenient set of Left and Right already present. Truth be told, I don't really use these keys, as they are a stretch to reach. - **The Toggle L1 keys have been replaced by the otherwise displaced "-" and "=".** They are laid out, left-to-right, in the same order as on the Mac keyboard. Honestly, they are not terribly conveniently placed, and their placement might change in a later version. I found that I did not toggle L1 frequently at all, and found using the momentary keys to access L1 to fit my workflow better. - **The "~"/L1 key in the bottom-left is now just momentary L1.** The "~" key was moved to the top-left as mentioned before, and I like to keep my multi-use keys to a minimum due to the latency for them to switch from "press" to "hold." From efffbe35c88fbc2360ba643b3163a75c3393d601 Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Mon, 11 Apr 2016 22:51:12 -0500 Subject: [PATCH 08/55] The Ordinary Layout is the layout you are looking for. Come and see. --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 499 +++- .../keymaps/ordinary/ordinary-base.png | Bin 94771 -> 99031 bytes .../keymaps/ordinary/ordinary-base.txt | 14 +- .../keymaps/ordinary/ordinary-media.png | Bin 108774 -> 119139 bytes .../keymaps/ordinary/ordinary-media.txt | 44 +- .../keymaps/ordinary/ordinary-symbol.png | Bin 93001 -> 98257 bytes .../keymaps/ordinary/ordinary-symbol.txt | 40 +- .../ergodox_ez/keymaps/ordinary/ordinary.hex | 2294 +++++++++-------- .../ergodox_ez/keymaps/ordinary/readme.md | 66 +- 9 files changed, 1633 insertions(+), 1324 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 4dd6d883..07a1e5e8 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -1,149 +1,375 @@ #include "ergodox_ez.h" +#include "led.h" #include "debug.h" #include "action_layer.h" #define BASE 0 // default layer -#define SYMB 1 // symbols -#define MDIA 2 // media keys +#define LOCK 1 // layer lock keys +#define SYMB_MO 2 // symbols momentary layer +#define SYMB_TG 3 // symbols lock layer +#define SYMB_XX 4 // symbols lock layer +#define MDIA_MO 5 // media momentary layer +#define MDIA_TG 6 // media lock layer +#define MDIA_XX 7 // topmost escape /* - * Ordinary Ergodox EZ keyboard layout, v2 + * Ordinary Ergodox EZ keyboard layout, v3 * modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com * Details: http://nicholas.rinard.us/2016/03/ergodox-ez-layout.html */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Basic layer * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | Grv | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | = | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | MDIA \ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | SYMB | A | S | D | F | G |------| |------| H | J | K | L | ; | SYMB ' | - * |--------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+--------| - * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh |RCtrl | - * `----------------------------------' `----------------------------------' - * ,---------------. ,---------------. - * | Home | End | | Left | Right | - * ,------|--------|------| |------+--------+------. - * | | | PgUp | | Up | | | - * |Backsp| Del |------| |------| Enter | Space| - * | | | PgDn | | Down | | |; - * `----------------------' `----------------------' + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | LOCK Grv | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | = LOCK | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ Media | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | ' Symbol | + * |-----------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+-----------| + * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | RShift | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * |LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh |RCtrl | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Home | End | | Left | Right| + * ,------|------|------| |------+------+------. + * | | | PgUp | | Up | | | + * |Backsp| Del |------| |------| Enter| Space| + * | | | PgDn | | Down | | | + * `--------------------' `--------------------' */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[BASE] = KEYMAP( // layer 0 : default - // left hand - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, - MO(SYMB), KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, LSFT(KC_TAB), - KC_LCTL, MEH_T(KC_NO),ALL_T(KC_NO),KC_LALT,KC_LGUI, - KC_HOME, KC_END, - KC_PGUP, - KC_BSPC, KC_DEL, KC_PGDN, +[BASE] = KEYMAP( +// left hand + LT(LOCK, KC_GRV),KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC +,LT(MDIA_MO, KC_TAB),KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC +,MO(SYMB_MO) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G +,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) +,KC_LCTL ,MEH_T(KC_NO),ALL_T(KC_NO),KC_LALT,KC_LGUI + + ,KC_HOME,KC_END + ,KC_PGUP + ,KC_BSPC,KC_DEL ,KC_PGDN // right hand - KC_MINS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, - KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, LT(MDIA, KC_BSLS), - KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(SYMB, KC_QUOT), - KC_TAB, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH),KC_RSFT, - KC_RGUI, KC_RALT, ALL_T(KC_NO),MEH_T(KC_NO), KC_RCTL, - KC_LEFT, KC_RGHT, - KC_UP, - KC_DOWN, KC_ENT, KC_SPC + ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,LT(LOCK, KC_EQL) + ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,LT(MDIA_MO, KC_BSLS) + ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,LT(SYMB_MO, KC_QUOT) + ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,KC_RSFT + ,KC_RGUI,KC_RALT,ALL_T(KC_NO),MEH_T(KC_NO),KC_RCTL + + ,KC_LEFT ,KC_RGHT + ,KC_UP + ,KC_DOWN ,KC_ENT ,KC_SPC ), -/* Keymap 1: Symbol Layer + +/* Keymap 1: Layer Lock Keys * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | Esc | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | MDIA | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | F12 | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | | - * |--------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | CAPS | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | 0 | . | = | + | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Left | Right| | Home | End | - * ,------|------|------| |------+------+------. - * | | | Up | | PgUp | | | - * |Space |Enter |------| |------|BackSp| Del | - * | | | Down | | PgDn | | | - * `--------------------' `--------------------' + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | Esc | | | | | | | | | | | | | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Media LOCK| | | | | | | | | | | | | | Media LOCK| + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * |Symbol LOCK| | | | | |------| |------| | | | | |Symbol LOCK| + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | Caps LOCK| | | | | | | | | | | | | | Caps LOCK| + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' */ -// SYMBOLS -[SYMB] = KEYMAP( - // left hand - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - MO(MDIA), KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_AMPR,LSFT(KC_COMM), - KC_TRNS, KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, - KC_TRNS, KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TAB, - KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_LEFT,KC_RGHT, - KC_UP, - KC_SPC,KC_ENT,KC_DOWN, - // right hand - KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - LSFT(KC_DOT), KC_PIPE, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_F12, - KC_SLSH, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, - LSFT(KC_TAB), KC_BSLS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_CAPS, - KC_P0, KC_DOT, KC_PEQL, KC_PPLS, KC_PENT, - KC_HOME, KC_END, - KC_PGUP, - KC_PGDN, KC_BSPC, KC_DEL +[LOCK] = KEYMAP( +// left hand + KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_FN3 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_FN2 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_CAPS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS,KC_TRNS ,KC_TRNS + + // right hand + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN3 + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN2 + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS + ), + +/* Keymap 10: Symbol Momentary Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Media | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | Media | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | Symbol | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | Symbol | + * |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------| + * | Shift | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | Shift | + * `-----------+------+------+------+------+-------------' `------------+------+------+------+------+------------' + * | | | | | | | 0 | . | = | + | Entr | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Left | Right| | Home | End | + * ,------|------|------| |------+------+------. + * | | | Up | | PgUp | | | + * |Space |Enter |------| |------|BackSp| Del | + * | | | Down | | PgDn | | | + * `--------------------' `--------------------' + */ +[SYMB_MO] = KEYMAP( +// left hand + KC_TRNS ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS +,MO(MDIA_MO) ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM) +,MO(SYMB_MO) ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV +,KC_LSFT ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_LEFT ,KC_RGHT + ,KC_UP + ,KC_SPC ,KC_ENT ,KC_DOWN + // right hand + ,KC_TRNS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_TRNS + ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,MO(MDIA_MO) + ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,MO(SYMB_MO) + ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_RSFT + ,KC_0 ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT + ,KC_HOME ,KC_END + ,KC_PGUP + ,KC_PGDN ,KC_BSPC ,KC_DEL ), -/* Keymap 2: Media and mouse keys + +/* Keymap 11: Symbol Lock Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | Lock | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | Lock | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Media | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | Media | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | | + * |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------| + * | Shift | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | Shift | + * `-----------+------+------+------+------+-------------' `------------+------+------+------+------+------------' + * | | | | | | | 0 | . | = | + | Entr | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Left | Right| | Home | End | + * ,------|------|------| |------+------+------. + * | | | Up | | PgUp | | | + * |Space |Enter |------| |------|BackSp| Del | + * | | | Down | | PgDn | | | + * `--------------------' `--------------------' + */ +[SYMB_TG] = KEYMAP( // layer 3 : return key for symbol lock layer +// left hand + MO(SYMB_XX) ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS +,MO(MDIA_MO) ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM) +,KC_NO ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV +,KC_LSFT ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_LEFT ,KC_RGHT + ,KC_UP + ,KC_SPC ,KC_ENT ,KC_DOWN + // right hand + ,KC_TRNS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,MO(SYMB_XX) + ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,MO(MDIA_MO) + ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,KC_NO + ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_RSFT + ,KC_0 ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT + ,KC_HOME ,KC_END + ,KC_PGUP + ,KC_PGDN ,KC_BSPC ,KC_DEL + ), + +/* Keymap 12: Symbol Unlock Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | Esc | | | | | | | | | | | | | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Unlock | | | | | | | | | | | | | | Unlock | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | |------| |------| | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | Caps LOCK | | | | | | | | | | | | | | Caps LOCK | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[SYMB_XX] = KEYMAP( +// left hand + KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,TG(MDIA_TG) ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_FN1 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_CAPS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS,KC_TRNS ,KC_TRNS + // right hand + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,TG(MDIA_TG) + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN1 + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS + ), + +/* Keymap 20: Media and mouse keys * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | Esc |ShutDn| Sleep| Mute |Vol Dn|Vol Up| | | | |PrtSc | PgUp |MyComp| Mail | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp |ScrlUp| |ScrlUp| |ScrlUp| |ScrlUp| Up | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| Home | Left | Down | Right| End | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | |MsDown|ScrlDn| |ScrlDn| |ScrlDn| |ScrlDn| Down | | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | | | PgDn | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Stop |Refrsh| | Prev | Next | - * ,------|------|------| |------+------+------. - * |Brwser|Brwser|Search| |VolUp | | | - * |Back | Fwd |------| |------| Stop | Play-| - * | | | Home | |VolDn | | Pause| - * `--------------------' `--------------------' + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | F11 | F12 | F13 | F14 | F15 | | | | F16 | F17 | F18 | F19 | F20 | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | |ShutDn| | MsUp | | |ScrlUp| |ScrlUp|PrtScr| Home | Up | PgUp | Mail | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | Sleep|MsLeft|MsDown|MsRght| |------| |------|NumLok| Left | Down | Right|MyComp| | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | |MsDown| | |ScrlDn| |ScrlDn| | End | Down | PgDn | | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | Mute |Vol Dn|Vol Up| Lclk | Rclk | |Insert|Delete| | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Stop |Refrsh| | Prev | Next | + * ,------|------|------| |------+------+------. + * |Brwser|Brwser|Search| |VolUp | | | + * |Back | Fwd |------| |------| Stop | Play-| + * | | | Home | |VolDn | | Pause| + * `--------------------' `--------------------' */ -// MEDIA AND MOUSE -[MDIA] = KEYMAP( - KC_ESC, KC_PWR, KC_SLEP, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, - MO(MDIA), KC_TRNS, KC_TRNS, KC_MS_U, KC_WH_U, KC_TRNS, KC_WH_U, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_D, KC_TRNS, KC_TRNS, KC_WH_D, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_WH_D, - KC_WSTP, KC_WREF, - KC_WSCH, - KC_WBAK, KC_TRNS, KC_WHOM, +[MDIA_MO] = KEYMAP( +// left hand + KC_TRNS ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_TRNS +,MO(MDIA_MO) ,KC_POWER,KC_TRNS ,KC_MS_U ,KC_TRNS ,KC_TRNS ,KC_WH_U +,KC_NO ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_TRNS +,KC_LSFT ,KC_TRNS ,KC_TRNS ,KC_MS_D ,KC_TRNS ,KC_TRNS ,KC_WH_D +,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_BTN1 ,KC_BTN2 + ,KC_WSTP ,KC_WREF + ,KC_WSCH + ,KC_WBAK ,KC_TRNS ,KC_WHOM // right hand - KC_TRNS, KC_TRNS, KC_PSCR, KC_PGUP, KC_MYCM, KC_MAIL, KC_TRNS, - KC_WH_U, KC_TRNS, KC_WH_U, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, - KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT,KC_END, KC_TRNS, - KC_WH_D, KC_TRNS, KC_WH_D, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_PGDN, KC_TRNS,KC_TRNS, KC_TRNS, - KC_MPRV, KC_MNXT, - KC_VOLU, - KC_VOLD, KC_MSTP, KC_MPLY + ,KC_TRNS ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS + ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,MO(MDIA_MO) + ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_NO + ,KC_WH_D ,KC_TRNS ,KC_END ,KC_DOWN ,KC_PGDN ,KC_TRNS ,KC_RSFT + ,KC_INS ,KC_DEL ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_MPRV ,KC_MNXT + ,KC_VOLU + ,KC_VOLD ,KC_MSTP ,KC_MPLY ), + +/* Keymap 21: Media Lock Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | F11 | F12 | F13 | F14 | F15 | | | | F16 | F17 | F18 | F19 | F20 | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | |ShutDn| | MsUp | | |ScrlUp| |ScrlUp|PrtScr| Home | Up | PgUp | Mail | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | Sleep|MsLeft|MsDown|MsRght| |------| |------|NumLok| Left | Down | Right|MyComp| | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | |MsDown| | |ScrlDn| |ScrlDn| | End | Down | PgDn | | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | Mute |Vol Dn|Vol Up| Lclk | Rclk | |Insert|Delete| | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Stop |Refrsh| | Prev | Next | + * ,------|------|------| |------+------+------. + * |Brwser|Brwser|Search| |VolUp | | | + * |Back | Fwd |------| |------| Stop | Play-| + * | | | Home | |VolDn | | Pause| + * `--------------------' `--------------------' + */ +[MDIA_TG] = KEYMAP( +// left hand + MO(MDIA_XX) ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_TRNS +,KC_NO ,KC_POWER,KC_TRNS ,KC_MS_U ,KC_TRNS ,KC_TRNS ,KC_WH_U +,KC_NO ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_TRNS +,KC_LSFT ,KC_TRNS ,KC_TRNS ,KC_MS_D ,KC_TRNS ,KC_TRNS ,KC_WH_D +,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_BTN1 ,KC_BTN2 + ,KC_WSTP ,KC_WREF + ,KC_WSCH + ,KC_WBAK ,KC_TRNS ,KC_WHOM + // right hand + ,KC_TRNS ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,MO(MDIA_XX) + ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,KC_NO + ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_NO + ,KC_WH_D ,KC_TRNS ,KC_END ,KC_DOWN ,KC_PGDN ,KC_TRNS ,KC_RSFT + ,KC_INS ,KC_DEL ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_MPRV ,KC_MNXT + ,KC_VOLU + ,KC_VOLD ,KC_MSTP ,KC_MPLY + ), + +/* Keymap 22: Media Unlock Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | Esc | | | | | | | | | | | | | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Unlock | | | | | | | | | | | | | | Unlock | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | |------| |------| | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | Caps LOCK | | | | | | | | | | | | | | Caps LOCK | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[MDIA_XX] = KEYMAP( +// left hand + KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_FN1 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_CAPS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS,KC_TRNS ,KC_TRNS + + // right hand + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN1 + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS + ) }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) + [1] = ACTION_LAYER_CLEAR(ON_PRESS) // FN1 - clear to base layer + ,[2] = ACTION_LAYER_INVERT(SYMB_TG, ON_PRESS) // FN2 - toggle to Symbols on press + ,[3] = ACTION_LAYER_INVERT(MDIA_TG, ON_PRESS) // FN3 - toggle to Media on press }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -168,25 +394,36 @@ void matrix_init_user(void) { // Runs constantly in the background, in a loop. void matrix_scan_user(void) { - - uint8_t layer = biton32(layer_state); + uint8_t layer = biton32(layer_state); ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); - switch (layer) { - // TODO: Make this relevant to the ErgoDox EZ. - case 1: - ergodox_right_led_1_on(); - break; - case 2: - ergodox_right_led_2_on(); - break; - default: - // none - break; + + // lock layer turns on all lights + if(layer == LOCK || layer == SYMB_XX) { + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); + } else if(layer == MDIA_XX) { + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); } + // caps lock turns on red light + if(host_keyboard_leds() & (1<Bcb-_5hClOM~_QTo`SC!z46U` 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 z%0D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%0A=?NTd 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

-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 literal 94771 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

iNaoIKqLz&5n+J^hY z_HC?CN@49yI>JYLQn6j>f7{N#1~7|rT}G#=c8T94b~G{SsUS&`_SQyjGKy1YR;|dT z^4kB%DJnI^zt+$_tQxzwc)0cj11vDs-9_Tr!x(+USKaMY_GeAZzR3|P)zFpsY8Q8a z7D)+&90M;EnfzffIh4)+ch9|qgBS^>Le)Tdo^8crN0o3pG}2fA8<#)e6(Afs+}VkB?8`)vLpO`Aq@g$Q@=&nJb=qDqp{Nj#x_h`B4X#{(jYc zuYzq>ra3gbF@jN=ovijit90_&HXWKuO>;wYlW)USvVN1*i z(^-kYA5AR<>luwSqMd)TeO*>3DMlIm5>qXus^5#K3!l(oaX-0oD<|;kkVrKt-7!9g zweO2Bk&LKkJ|&tQ-t->`p1(V5XGS2Un>xO%cYLw5iiw$&ahHYJ?Bt9mUQTaIS zs|zxoBP+fhCqmN*(umlsD3yZyznXoVO&uv|$We?-uF%RJ*tD@zYBFK;_n)~~c0V2Q z)v4gyXAGacGVp^SY_CHumeBALLmoumvd(z-1tSYS4htN~qrX}Q>bIBZB34hxY^rDK z-6NE&rKp~C z30>*;iVpa2s3J+-T!ePLKPU_q)|B8ONo0Sojm(vbuH`5*k=ZEAPg9DC)xVb(tvyt^ ze)ySl#)|?2;pg|ftz1^=;Cp>ZoKAnEOy8!i3$hp+QL63N&w;I_LqKpusr}B;{4sa5 zYApWTU{~U6CEey_gQa)B>2h-1shla_Q1{$t>?~4wj%H5KLO*yw(GCoY$55NB1uf$g zQgLNf5KpAnVSMqR`SOedy`TB%I|3kK?~-N5+JgH?cT4{vtWw!HOT?jC)!wgCJ>l z_SXN9cajC&zGx3F@~+)tmsFbEk5ku*9c2tp;L~QrwlXmJK22^qcT2e-slqC4+RmDF$#KKOz>R3$ivEAuy?`zy;MnKL1St$hhyNlbHt=K!d^W8s96G}3n7=uSl(0cyWeP`uDt1HAmaUeoA7AOe7{iFb~f+DaL1uXL#uHM{h-Nn$o7iH}bP{B8kfv^yM@qO)|TY}T> z(m!`mO%9l-46SkGHmk==m+U)lS?_#(zNyhTaBz0)ZnzhyD$Q-Ec|7bm$X?8+A41i3 z8en5YaJR8yjPpAF72JKZ;Nnm*<<;LiN+iv>f5L*O?u|cD{)+HSnb=}T#@LTA{ru(u z&S)^z=Vm|r%GK%@xn6#cu$c33nDbXZmLC1`vucQ0l8v3@V{oywBOSf)X6P%|{eXhb zkkhwwN}{GEgsw)p>i*uS3*9j{nfrz_I2ChKj&NH#V&3$|_l&>O(RGihbjDXZ{AYkgAQeCvS^-Wp z)oy2Dk<9dG^odRZP8vgGgSwE#sXHtr77Ndex-UaHP2sfS25sqm2`UUE-5&(F>h08c=eStK2TFZF)> zB6v*YCABxvMEWN}D*C9zL~R0wY}o2rNzn62vToI1GmV{)PGtT|8?AH2gOELO9SFUd0pn9j+|1 z>-Dy`S#p9XY_9th*?oL+^b(09*;E^KKJJBz6Uw1_wK5@ld|f~Bm8QO&S)OccI+HK8 zw#quYMP_fLq>z1H70gztha92$4z5%S?sMLYf!#*}Rs%7?sg3WICZ}#MoEOE^T{t@% zVs|!~Ut8k(P8M|gq(JXgD(>Wopt>+^k519r^C6>>qy_2olrgoe_~rpznW0-{eH3Hn zYj;gdzX#pr?)hm*VwHWzoCy(D_7|69)g;pINsN+T=+D2ocwalm;|IFlEb3YIWg{fX z!{O*{)d3$8≀>I2$Q6ow2E5icJU+^g-y(F*>8j$=WJMxc&?4 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 g5Xg%%yo$g5\n\n\nTab"], +[{y:-0.875,c:"#2277ff",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#cccccc"},"A",{x:14.5},":\n;",{c:"#2277ff",w:1.5},"\"\n'\nSymbols\n\n\n\n\nShift"], +[{y:-0.625,x:6.5,c:"#54d6de",fa:[0,0,0,1],h:1.5},"< Tab\n\n\nShift Tab",{x:4.5,h:1.5},"Tab >\n\n\nTab"], [{y:-0.75,x:3.5,c:"#cccccc"},"C",{x:10.5},"<\n,"], [{y:-0.875,x:2.5},"X",{x:1},"V",{x:8.5},"M",{x:1},">\n."], [{y:-0.875,x:5.5},"B",{x:6.5},"N"], -[{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\nShift"], +[{y:-0.875,c:"#2277ff",fa:[0,1,0,1,0,0,0],w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5,f:3},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], [{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5},"Option\n\n\nRAlt"], [{y:-0.875,x:2.5},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5},"Cmd\n\n\nSuper",{x:1},"Hyper"], [{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Ctrl\n\n\nRCtrl"], -[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bfbf67"},"Home","End"], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#54d6de"},"Home","End"], [{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"], [{x:2},"Page\n\n\n\n\n\nDown"], [{r:-30,rx:13,y:-1,x:-3},"Left","Right"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png index 89d15e45069a0237c023e77315068b932b33fe5f..9c0e8bba39b372c7e68299cb06c8dfa5e00906ce 100644 GIT binary patch literal 119139 zcmZ^KWmKF&lqCdrXsm-v;}G24-2=g;(I5!{f?M#$B|z{1!9BRUh2ZW45AF`xkJ*{o zIcInObe{tUs_MO4Pwu+~(@>MgLMK6ogM-6TRFKhvgG1zmgM%+ZMFxIiYUq~(2S){` zC?omS!{pEy#r3T$@w3|${-iXOgcO6q3Hc9L2UR!~^Q*vDfv8Xv$+r>&vUop~wIhlo zWV}93qJgM_S3y+pliqxW&)oR@pA#Flk9LlZeRn-@-By2Ro~+*NjNTkCvqr5EX@4rGOb-S;?Lw^?zI8KTQ*0iKn2XL<5rk zxk%mh|2{Ch6cr^r4d)>E|M%-oW?U*z5A(E)6zKnBa=3V~CBpyDCT4`FxG-}#Yd z)hkq$Y%y|kb8`>B666_@Mw;(wH9F=*{-$3ZG#BQ@ltVc!`puRbKk3qmqbdIng9M17 z#*G!=C{2grR{0@@_g49lPh$QKhqJgSR7nlQsc-688SaXrP3<`N{g!a&dZag3HjriN;shk#mR6gZFODEjw5`Oy+k~Hf`eNDHKk+~gj;lok@M*hk@lq)OZASEptK*<{{wlQh`|5lh8Jm0!mZ+Z*&J6$ zd}Fd~=hzsIxLj~@c=w=^wq*G$A-?w*O+mkZN})v+=)QM)+;~4o4#z*1J3)JBJ2d@< zKmOY{My6Cn@c#s~ie!KfpZ0j3HyZqbRDc5J!6dPwy*c81VB?`%5Gb#ppJk#+)=)s; zYm{46Rk%=?cJZ`;+cS^I6S?xESb;7@a25AaHd$7iE>92#j&&Tzxb!vu9K0yRfN8Z2GkI;{{l0WB%(tf z3RSjhV84#Sj}5W<+I+gdKVkq3Y0bqE4y7a{1fH}%U@IrHN;)}lNJ&YRDR@x{36XGe za(?4^5Be8te9s!LluxoE!Y^gQ%18^D#<2hA8*@{0bJKF`=OZBY)P&WH#n@@}FZ-s- zSq_qrWtnHfZR+#0k+)>#ngEHP8q`B{MThP*jrLz#GTTI*&&4tOkbTryVEf3$0*WBx z4Yc!EPn0d!%(q6;WDW7*(=_{`c8CgGltYDuoveNP$~I&i930m)qW5)4B6>)%7Tlzg zZ&EA(a3jZq(?5vBD$R%}bv`~kmNq&aqJcJka^60T`+#Wg<(OBGz2L-;{)UpMdzvrQ zMmBz;MiW2YqmL*FCXz9nPGRiSWcV-S1w_-DMT!MbLqc=JmNrpdgIAq#bhGwDn0c84 z?%WvM2cXYy&KE9y-$p#l->=Fap~4#j=#+G$Mt`;D_rMlIE*v^HNB{RQmM;CRa#;jQ zWCkM}({7r1``$_me}P(N2{(h>pH0Z3LewNt?*VawMgt6I^}rYWBtJLGzzIFET3@Yu zTYEs*%NZ#`9?Kq<*;{bnD?6d64?&LPsh0I^d%9lAHIvW$?_gXX0e9y>YF;$v_M9z$ zd)DS(y<=n&d~`HCgNs_7a>|=MUOKFtqX;>g zq8Sp)f}-yegGyu#9EBqHmm>; z-|D23mc;E3rQG7r4+n?C;Z5-|?@Je9P^GOJ*elx4Q2CeeCI5?W_pLIc$(CnO|w7X$q1LR|xEGkbRg?bT&S)wQ1bE$v0FWsC*V|7FK{4j}$H26Kv$4qIH$ z3{E*!uA{oEGqBFjkxR}fQ_%ADy8>YYnYVc$3%H3rS#|6i%fmup^L45Zpm=N=Y)7qk zB+Vjz~Zw9hF&De8J^r~7|ZK{b3eV!nPP2*ueuSx zb$6|zy=YR=;HADpUe({n{LJ@^AG5ywlps!Q)HCA(yM0W#zLQ%UIZ%J3n31>9a+hAi zx<0OX9YI{j0K`@*Qd}f>Um_W8rFe>^XE@~o6A39JqJ6%rzJW*s>K_#;j6c(xoxsY_ zj78GOlU1?d9=y`ok^tj_W3#{081v3IAl<4e*N`-q2TmVWai; z-8;7eW$;mVbea16ISsHp1Ri*e~J0z$u3 z{hoW%QaHty{;+ZCJ@?V|ivO0nC`340_*GxD&Nj;F4zm?#%pS!C3mZ zSZwxJdtxm1b);)gGf2^kNT;W5$_&}-g`z96sZn|u^6xK57W{CIW%4CbOaIJh%)h!= zC~?~p<3Q{fX$$N~UXk%qdQ&oe+1awjFFzIYMVGU3Qfa_0BoU>-x1mUxH5ZEQ+{{N0xQEfS6k~)jN`1@0*WRTgFxN_JuhrJS(t+@hte={4-r7ma zN5+AJP;hogH+Qnh*uE4QATbi!y-ED~Mi)FVp^xo3vHa7h_hRkyAOD|NuhQod()pFc zD<*B@@^q!4gi&4X%1wjYPK>&DVXEs#LZ5F%+Mn<3nTi7~U+M;0JdfQ>cfdZ=MVfSL zZFal_=t$F`(wa9Z!+#DBF|TdT?E4}JWmntk>kC+oo2M;7(t{{wa9rY0%a%6aez+B_ z3=Sw9FngsJw@3fyA*{;A>b;-H$(9Lv#0h>L9M2H6PHj@TiFjy!)d#_-(W9ne*e} z$*f1x`qtX&8w+IQ<p{=_-XF~M$*mb^*HCi zN3i?YGdfQk2`S`vTa|%=Bgs~PbR7?tLY+AAqBcW?nXBltl;alO^ldz#{n2aeXkmnX z)$1sDL*@nl7CTxcGsR7kN6r-gpF3`kxMMhx`n&Ebq83&;D95+YNxiD-Z*x_HW}QB> z=!X=Lz14;e9KGt(KdE3aVMc|$pd`hCvuu)B8VNTV{dcG#vq}HG!=b>?scsAB z$9M0tTw=DZA6&XVM?z8=C?!N5st2-w@>RY(-F!4O4jh_XHyP3LQju*R42x`)8yw}D z{!mR#0Im*`Mf!z__HMp0F4he3!+AHzOYN?SEjx=q0aI5 zNGMww(|rOs^d8QDsxm{lvn;-_`b}Sy5 zt`$&v7$h*VB{at*KGqzG>8ix`;w)tosl4*BmavZxd2R?PI9f;Cr=OR>OMC zHm|D<4T64-(plZxcPy{%*sOkoj(59{+&XA3xENsZX#b=LM5Fyx4)4_{nK^yD!pYL8 zxvhI>qS!Oi&nV#!RZFJf#FUL%#D6s#79g4k?yq1{8U8f!_txuD-v~{8J%6^a%r??X z)mN4iE{C^o8Pfmbi~O1EKeI~;UG1-Tw!)nM#~OOsY+`RPHoeI@)xBHJaMZL-1!IVe z5jZdNkaK^l0U+%Y)jVsXI7%7j%b&a+mO{40g>~6k-5f0uXCeIiqHKnr)BgA7AMT*1 z58nCH*h|~i`U|e-bOq}f)lVtSM&?S#=yww9qmb^ zmx&|&`6IuCBEbrFljILJ$4J#>lhq-+%sQZ+@t>a@awsS4`0Lk*87$mCdE-u|v_tx% zC7(3P18*&}tFM(Iq1A&EzQF-kR1%PWIdF3U$5G6QCocH|qWSo(#^KWw1>fB)y|?{^ntnkaUig`QaJ2z}+62zj6ZxW@kc-qleb`+K1JysEd@&l1$fPvhe)O z#qK^y`H^?D)@qPYyzdii!2wCs5)iq+5V`mEzj|8!X7tXxwy|%W=Oz{RYIKaJ0i6e! zF>)?UbidU7WRCU&>(A49^XCIZ$~Qp@Q2=$*`A~=9#OxL#L3eC;T64+-BN%@Hdb;HX;3m zHe;J1adt)fe`2tguGc-*Z14{M#7Lq%OFneM`7GDwFkS%s&r5wHB{2yE6-^w&L>fomouEt>c(s*au4deB|DhUhexeZ;r{lTHx60n2-n$w?#q`}6bjpF^T}Q*cKq z$_>)K*TaD22ze}n6fo-*X42krO-d!*Av)T5_HZearjkpUY^XU26`(H=ypV(?w)&I-RCwh}j$da&~SbrK;3Wt_5@ z$Z2o1S^aTk$ElKr|IXr%UJiu93g~wUH=Mbt4!Q~ z^qTY!B|V*XjD1L|Y9$Txms#Ajw>>-8TE;L98!XTM?zO~!+jc|CNAqKQ{k%pOL5?q} zmxFGKx8-Jcj2+q&`>vX;K-}k*5msF5VSyA5D;rs^B%6}_5B8O_*=+cNT zP*w?B2@=W}%l%mjRe=QX9j3UN^N|mYnD>zDuzCaZ`(0)kWKe4cuciN{OtAr6+sqj4bhq{7ar3N{3LNhr|VGg=s!W^wgMx0 zH#>)7NT^mkTC@@x13!Dl^OX)_s8~?iksQsPAL5&nw9uHm2E~JD?Fb$ykQObQpIyhr ziuK4oGBb5YeEX?~z2?p4;THi`;rl4Y z2;#|XZ~RV3}>`fhD`h!-8X@Cox&Eg1!gz;nf-^LzT4jmuqMT*NiO3W!Rj@= z=(9r6XMlNBr^9Fqx6PTuSHR%q)-jce2U{gk8wxX^`?IydG8_o^8&3P=F$`&ongzC1 zLU!`mVL7FYi@PJFnDbAk_J3dyivH#)`mHpyJZCLei zCLz%BEz4g60GtX`&yJm45ES(K*N_fETqa4_VkX0PXl8}%Af{W!*6Aa*?e!$h+mE~i z?&_6NmkV`!T+bR}u&$WI3@)^@R|AtEwj;n`kWjiRerrq`&M3*~V`{`Q40vyP&L1UA-o`9LHi^lyX?9^!lv(Iw zeESX}Vx&HSyUd3Fo(LhLqy644hCBS8Irl`Y^J~UmOPr-Hep-Wiw7fkP6Tl_Q4$Go- zARO8Ts}3IwF8!K9fbmRdj*<{SnmC1kVQRP_@ zkkC);A99HC*uwk&*j2O~>X^zvzYXUWnF5pm2O)6lRb(|DAC5kkL$XzU47u{Pi$u&9D?h;5vc7((2?0n@nd}gJZ!JjZpVSIiFUN5bxKfZZ0OM)-HMRU`ov;Ya0yOWP9ieQnL-oqULj@3sK_@Aolkz9r6|=6t+g zpH(m1nwdyK-BO79{R8|%v^h}eDw3XFsJ)fF zgl8Y6gM>W1w{hirZ;y7PN%wrfW3mV2BD;6~iOF8wl-U?Ob88GxvR>f>HX1N(x~ z0{fZ|Pg~6f_Eo=+Fn`b*d@X}>@?-N!ER6HBtRc@|4bFdEf~|DO{%kFr8{|^jlkIp`m>5so=GtrOvg>^4MpGf=XTD)~pVW7H&I#Cd; z0u_l`4kZn1mrpqhqfQ)BsTPb}wm2ff6PfE~r|_VP+qU`A_V8ZZwd5js zz@NA%fIoY?G=G~M{)azRSh(8Q0e^<~dfY5X@BPztbfpAq$;?O98nrH(p|l$~>?-QyRX+c9cqbF_l-x zwU?##R!y6jBmik{*1RwCn-Wyv^Zx(N43lJk0q8O5L39}61Bn!nr8-+*0=kJ$^xsS$ zxTSOW!2!Muu;6Pf6L zBY`U)n*0F*P)Xb`fJuet%k|FT4e^1amEhfE`@z1nC=7V-u?qNzitjT77BhT_9Bj|1 zNrK(Yg{NtXzl#xb0V;az+7W7Z`|z_j16C zaIYwd!QJIrbFl?A*S!<2)ddA@*G0{XP_&6fb1959lQ4)k25{RWr!2mZ)zYkfC^FFT zZt8ZO*QD{ur~JS;vFq0}Bg*|fEy4TP z${l%Vkxr99^`j?Z=(SYa2g-BrGG-9%&SQ4tCns#7SaC#o8=MSdeoP8K-tnrjck}!$ zcqEruuo6|1-YaSG^`ViTJpnI6F<89E3FHIWJ$z>WQCOlf(x)s|?kgY}9I=xXpDBr~ zl#nxQ{_rS%Yey#RPm=WTz5!nYY zXu~4@P}{?OP5ob50Ki|opdcg~vfCV_{m&0z>he&k?LTy6#>?bwVr}R;YC_l}Cjk}s zu{|RU;6ne`h#e$HnoPCt#9(;Up0D(N!HC$|hxp}6X*j$2ThUIKRW)z^!hBxER#J9u zlWR|S?Fo@R7t`MV4&O|d>Ypw8Dwt7b77u1KHHIlK(dSIfw>jMu8~CZ`X3^rq%pV|f zx@qWkb;#tT4MEG21~Q=r`CVtqh3o5#VWnXi3Yc*JIkXhbUO#_NUptNu(-iZ{(FDLK z0R}=cwIZ5qzKL04p{3Ybd_ob#A9 zQ!|4)w%>K_E^9G|c@l+xtsgQ6MS3f~3R0Aa2PaPi<>aBV0oN5A!3a!0P~nw<#yB)T zZq}a+I7^lSCNMQ@AgwlB1kgwVi+8%=>Gmg$u_-hf;g3%&MW!k;H)Z6)kAJ>pR!7pj zg$i;$>raz&H6bwb`%si4S2CZs=){9}{V0(D?`RYbxA=fWKo+|;w%mvOWEo2&V`Dy; zsYcjIT3>$m3ZG(PZpVX<w6I%Ks63TQV&>`uFtJDC1r6)CJ zk7AuSEF4DV?%cOfC%vxI1fS(~?Q)nsMRwKf7Z5kw<8+Z7;^F#PJw5}BJ$fv_(?Dp@ zc8&4M&ON?B_8$Y`OAu37ka#cowZILS+|qFVDCSRiQF$;jgc3MP0A)2uI>La32_NW4 zrW406tn4A7a(RE?Q9if$0i{~d-TMgq;fM9qAj4WhMTeOnHrjRC6ri9>0@;AdXp??V{kofCZs z#h)}$|2ZQ5)TZp_t`ak7Z4P93Vl~QyT%Wrc-9ON}KCH857>VY;pLwNZF10k(ZI01| z>iSptXMbUsSuNE*yp|vjo&hebmk}j@JPsH_ej*-+|b=7y#7SkWhj;T`l_ag&)NXz!nS?F_m-KniMdV)l5n(@L-zXQ)?0F zg!t?+4y!&n$QW=OoW2a{qj?2o;Ya;j!m$)*-C6TQ|hP|1KS;DIDs{5f%4#-W$Q@< zU)$B%&&ws`E2zt6{;^WXG;&R$IhwDgO~Y&nvu0{~M0 zxiaIHQV4RBAW0Q*+SfNtL6~Y4TmnKvt`U7SM6(sfkxbeJ>p_mkx|GrJsU_XZ?WuaT zws`kf2Zb&*V*ypxz6<9sYkys(fM5XC41wHBE?)@ZgoM^Tz-`qi4q#uMRXZ-&0G632 z0@8Z_;07DOoC<7NzmAIs!(gy)V!lGp_Xq5ksU?zig+{m@%URmQimlfVD@n43j;EvPOg_K=5+?vYgt>>YFQv7^GUP*@L5{) zs=xsP?h#P)m`Aa$1}b1iN`FX(uY({T_zc95>ovPF#Q=JfP}fEq;T^L}p_ z4X9^1oOHD#u1685-@i?g1Hd(V4P@Rb%+b&&8UVP=FiEj=YF#ZqM*!O5hxuGwfZAk2 zhFUPZH}1Pu6mGEqtlD9Li%i()o@L<%APkK^9|6O^RQ<;GrO>PAg_4L4g`=B6eNeL`d7`jn} zo_k_IxZe6oUKg0#8k3wMzUV%fOpS&UQX&9)k)(OJntFJ6pg}e^Hz#Ur)D>xK{r~wP zA|if`tJW#ieOz@f>MKEz{!SVj=R;OBuRF zUONOE;`hnFMn<(Z4(pseJW{@@w~QaqaBdKyd(2kC6QjHzWdTM_*TASrNHEC*WchG& zk-_bX2gK?tS`8qNWMo8LA1(Ft^~okA{{Ho=d!fdr%jet1J76eNSIGnbYmzJy)oM)4 z@Ykl1tNoJXq!Q@Yypzxw&+5RdEWt_2t?Cdy$dUDiw^Q<@q zqD#_m;`4NS#wPG$&J*aOfPN5Vf0}_>L+oYh#F(VS;k>Z0@OmVTmxc0=(raECnpfx{ zf%xE59&Gu!?`A(CrDvdg~(VZFd*zEF@35FKUgkt{TbCV&AkN*5p>3gu63qH6q7 z8b7GGS^urb!Qpux$wB&eM#YaY4H|S>UQ&$`_!Ii0^-f(XG-KvEWF}(uE=_C?LTw~r z1FZ}1&g3f{gYYr~q#|ct4dtlM3By)SuJMw(5wDYEp&T{Z?|C$Ac^=i7jIp_18*Mv( zy>$vPEZf_Lx)9{-6v9fT`a=ZZ zAm>3e&hCA_4u+x?vhm>VQ0f2n6EX(Izl$+(&+|cQ=}@ZD*|pP3U9RBejb9v2oxk(i zs{Nk4s)9Af#2#41cS}=sekRKQm5`Wnb8?C!`jV6MHh+@pY=i0TB_mUd1G5LXqkMmu zXzY%QZC^+Y`rT8xL@*wlpoM}ajruKE0)USqdCKO96huxi!g_Li(Z>{MapT6U6Fk3N zSsRP-#e=Owj3zVjVbqdW^DMBgw_P!&RjA0i3DYE%V!rogfIjW95vfIqmJ>P^@ICp6 zPPA{{g#m9%UkGMidJn|&N$XU0GQfE`3<(Li<1a1hrKBQ>Bl^2@8ofoL z)Ktbm1dFTq5TRT^$LTPGGENB7eC$b-%j;5ap|IG_@mTiFm5^m;xcqn&{W_?mv!~7n zWR*B32MN7umF;`A%jALdRmBe& z!|JPH0!p?hN^y#;EFmd48R-Qd^8EaK^FQ4oal_k>3NW#Fa8xg<&%vu#ZJD^74@`|h zyL6ntbxI~2CJC3--%^=}TmrIyc3n)Tpx7`T?g5PVLV~m?dEGxF_JBxEJ^kZM7-$#9 z5fmj+!@mHX1N6IXs#wH>L;ViIo-|Zt;S|o?Ch_cI54W~_^NV4uGsoWs6cL-*n4!;C zT8I~s%EN`Z?@&ZcqmWtIiCTgcFuj4)PXVK@Wq{uQ$N*c3BfZe`C3AFibdqidvuuDQ zwsM_&fQZRhNz;lUM~7ElpvhpjU&m+?$J*3 zgm6td<9&J{TW)nt39yXE05VR`(2s zN??8U8umw=`PGxb{da$RN=%3J8`h&3g|2%G*u1Ndpg73l;xFX)Jqr;tug1_48pbNB zoGszI-wPyR-e>5nKHThH`KN3C%V(%8*!@BIj+QrNB!=X?2*yrVl0@{+UX(Z>LMOMc z<_kr*wH4ab{z6u4;Re3s4~^}kcPu(~in_+1Tp9JZ1699IWt1A30z$gJQ#v)>Y$M&$ zueT5AtmFwj|C;NR2zhF>oU0n+S4MtGrR>=nH9AQuRU#&Y068a0=KK4pf^VYUd{WZV z(T9=-4Wd4`xF@X_*u=kx<_PMkt;N#I@8Irl9nOlIimpCDuzhqJ!pFX5<#&hT!@y^? z;yXt^MkVU~Vg|mG4WON4k0{a$l8s%2Ga=vF!95j~+ifw>r1PH*$Uq7^QjR(XrOfh3 z?>ymzt;R^w!${Gz(FDRF(J>uYsNm4?O8w z|fNeZbc9=7CQ|=Uv^$3n<8z`LnXiZ2tBJE_m%%=XcKrPhke#WEnF_%X@=UJJe=A zbmmv$56p32<9pCBnRJcKDOn$x8^4av{TbA2eUQg&kWL=^amOG(JX|J2e)H&VeCso> z$#A_3=!ImDI$DLiThz$KD37Yk&l7_B>44Jp6RsJl-?d6C39nKH_Ha`QA&V}7=gs0` zTK9SKLN3nt*s=O2BQ7zc8@M??2fdP{q$~5{{UzcvFJk}SUis*tsU*N*6DtVg8&fQ| zw|7e5$py-kT)Y3UcU(Z?oG%&czsv_DzSp9f?;*%X zDHp$uvtQg6^~j)+w-LB-(1%8*{}-YL#BU;QQMbtq(# zRxj+`_VM~v@)1;T?!G&_D%Cl24QdT9`bi`sR>?-ITm)efMZu2F3QQ^F8Qv-=u#zV9 zL~19Dpzt>zQ1S^Y>j6sl(~U^>T$44uOOGDY2>QYX6%<{D^*=eydM$2j9bqH(GS>9; z2Kp7L8~9n24LtfNLMkME(W5U8IwNI{0-EEzXn%l#wN=Q663Ak=16q5q=s@ z+wyn)%eN^cc8EVn`(D`h6BZgv+Rnqr>;0N)&y>%I^JzCS%`}|09T{N(Vh>isiQxMR zT(?CvN>C3;4pU@rcx>#hT6FO)@<<4Vg)9z*2&(_T1X2@6PhMZes3=~x)9VOtTjM2! zb_(oy!uW{nwG!+G^Ibt;;1IGLKHNX{ab_@Et+NO<8*2}Q<4*A=Qb_=3WSXfa>SKjk z4KmiGAiGPn{L_nO#tM(|Ii^G-XWb*uijMOGk6W2RwtFR@1`=6IiNSe2d;F4b4n?v9 z&q^(v9t!2;62bEAMPWio7h>0Y=M$jGui*CEHx8spAaYpi0PMdow{q9^*oh7fmZSw{*sy#H07*mAqA=TGeR*YCE7Z-n5d>K zZ;AbAS{h;XpnNkl|0yBQbXxl8p91DlkmkI6`i&RIqMt4oXftmYK{GEG<9?(m#IR3+ z!25C`ym$Pe&h8x+(3^j6e)-UX3s;0zZD!CnooIQh9D2nY$Czi6w;lY9E}R_7>V0?K(VFjrxgrPFHT)ot7}LVsag-fS&J* zuyJ&JPMRcIC%bUewVcl;?ol$9&6>F9>G}h~pEvR7{W~!5G;wlfZ8d7rC=1kmkXM%G z@MKdlX2}M&Nn@*Aci`UI2_x**w?^7YidkK=$v~?rzm!Q~NB%Si3O&93l##B1fv{bx ziC-T}FF<{9MgJi{bw_l#BDadXm<;RHVAeTxxEK6z_^)xW`ST=%>B&^@zo9 zpJe7SvwCj?*H4U#)-dFY%SUQa`5*~)`K-D$^4E9oWl-rqdUOt9>we4o8Ou%7@j9xo zr0L6cpBZ&LCmMQ{QPv_P+km5&ij(9fEAp&I$n28E@%AjLN;DqK&4xL5xa^SshuG zJ+Xc1@KzpvnReRJayq2;no$bQhe47_H&^kIm>&epo#e$;j!a*Vs-0{3{*04JVb`)3BY-Y-K2oPYk_oEa9MUK;qWX6)0$I0O-i2x8sl$(|)|30#e{rP+&b z)u(XINzAVAjq#OjFgueBV>z!cICzS*(Qr1js&-Q}=UX2@)@)*^Ne0nM@L77Np5no? z=)v<4WM#&82BAK3MT`XKiplq%-P~psud6Wc4xyxoCYf9QO>|L;`Lk3E@A_!1ez*=< zaWx7E?v*)TTpzb;O`7^Y)qRzr*MA{l6cB4?6djJp^L=mp#G1Aqk{rzl(ciawXJ(Rn zKy1(K`wv_FE#xhfhGFKYu&!C19fT?zGOpL-KQ(!Or!S^3px8_#O)*?|&mw3xk|%~! ziX8=!hgF{MDKp5UJhoka_GoNb-!C8db~~ec%q}1-2wixGFy5@VDo`Q^JsrbquV(5l7!sp5t4eVG8B#`u`9`eZ9$zAv7h zMv5P??rh`@_f7~!t8|x`tFMcUdwoLz$>|x6{PY;xfJe3!B#A$p<9mU7d2B#wjLhDb z@S1&NdsP+hi36?tp1t!-d?4pTG#u;G5rN;58-+Z7E1M7ukBlq|U`A+pYHerFmY0ow z6c+Xj4Hf?$j5{Bva(R{Nla-a_w^NQt4*nXDPkH`7|g>9nDdIGVwNr{&oW=Nv1 zL2)q=Q%v_xPti!8Nbc<(l@c6|A{_oVIr&Qjpd1EJ_{3>4;Fl@qXXsbonYr>&0w>`PfgJgxkBWorEA*{-g-!Zr|uTK<>^K4akx>-2ArtYvzBRaE%&;OWKx4 zd=n{PK^9p8m-1!xjnclWes69PtZAM63fo!mgWN#g6pL~k?lTetrr!ctj3Y{3mFL7k zEBV1x<#tNAupm~)^Jlf`3~-shvD-I*A***>>K-Y#)WK)6Wn*E%uo=ym@NA_K?<$K? zIX^32IJI2>f2i<`$I@!~`O_u->LcV)Br>_z%Gs`TNI}&)Aq+_HnDXCi$uMT0W1tEm zt-=L}R4|x+kxs{(kI@yM^f%me;E2iiZ4ypl+UZ+$N5IA8gQMtprW@>};bmV}j| zKRuB@_x%%<3fTng#&f+FOC_@frI0Ur7t)_KLpxDqVnrtO8RKMZF*MxqR^}IWFFw@Z?(U;+aVY{HTXPbQXgP`=DENP z!^=*KTz98A+uEfsIyKc&EwE1xPSk-cT)j809#N`%29g;%PA}gN!)saS<7G#+{dW2- z!{ZwqZp%NRA(g}Y8{;?SrcMvzmd|4V?E9lz&Tc(*C0hb!r#^X2d8h@3r_Luv+tgSZ zFm0cf2`09R(bZmZx!K78w{1HjKnzARtkcPbOuR?{@TC-@qY^c<`6+u}yNzf^<#M&m zhVq6(6Tl4o?Lof?G0vIF771c5G;suB6F22E9{KLtm`7`Y>UV2{58%sVuVoJ6>G;#N^8y0bBXj9JomRyfEUsYM0b@K|MUEW%g|I#Bu5${kfa* z2YZeJrXlb+2AHwP`;pF;2MZ>8i{xIU=Z95Yoa$t4vNF*n%1;~{@Pd5h%Dcyj z(=43UcE~PH-jQ{Uc%y*@i|V@WnJRc*9!lQGU?LcPOQBn{Xa=Oxo1`kxDr|l5Vkj2r zIsPab7IduR=6HqlMG=1%GPB6ZD#lL3=@8o+?)mNah2iDCQRN`*?~G(WQIgY|QgiP& ze@?7uZ%-T~RmL=^cxg$W`X7H~g5ApR4#>puOQYw<<)9)$yjUH<`t+b4dgmHoN-(C3 zHj;@O$MZ73R~H3zbXGbHuX(NT(}H#TTY4~PIK>`5v4hWYaA2H!P5ri48?SmZ(+cxlz?s;{c7ooUNj#mPs-QtqiLtH7e?%xyDEQ7d#c3KvOEqnffq?fDOgQvq>;RU+7>Vc-wcm5cBng`$eg8mCvli<=<-p9EPXeL-N-9)sORSc92Kk<%x}uyGK@5 zVe9VEZoZEiA-lbdD$wOv)t$)oGx7c$x6l4rD4Qown)4mjwR?h`;BVJtF!N}-Pb1fG z8Urt*5KcrO0F)h(_rVcF^sbwBirNIyO<5ANJL-4P0FR4ayB_GCEA%$G;BYw1)62-J zvTBQ?;H*ludBGRymQyKp;f5Fl0`(S`HM?+>^ucOiX(WEAPt_NOt7ji6^)`j5o3+EJ z>mZ^(ZFuBoO4-&P37z_Py8opGh#PgWVSU^Pd9=U@b%@Y68Fg6nN|5=P7p`-*Z!A! zKV;451(NQsfx6yc!S~@>*3Pa(qvO(>6H%|b3wY{sc1ja!K2O;;zFwTGcwdH9Tf~Cq zu~|OlV*)VuH7g^VWeI68RfIr;`d#ro{Io$O&yjhuNQ^bH5N5y8R!n=Zdh{}*l%_X; z#GZbxE0Ow(k#x1LTyto&!mjx5jo9le=&MHe@z;tf83?F3 z^;$Y^O#6R_pnM~EgYsAninMPmoPTD zV+{lP!pjAKOO?aLBI_VhWYT{G5AAMxuP4De%x?pdZ*47!Tc6J;f%BqOs&$`d^fFkP z4Mo8t9}M7vHV5Nr0qy+c@s(|d!>!Pd750O~if$^9#ol<1YjCfV@77wEl-2x9y$(pO zW8sI4dfD4|y2%Obh+55h3#|P71CN!MAy$U%`!s4{56&%B3+(GO@nHGNALg46b%H)& zZwmhe@p20Mb3~{qHoye+ICQ6uSH~e()VMK9K=mvXjQ~BM2kxG(l!O#2(9r8`3jYEF z%K7Bka^lTM_U1eTUiK*R7D6l%#Eq_?w-h-!(Y<yS65e!rFLR@>5heLKaUJ&^pL zJ<+&rDCCluvu=0NP4?E-oJ_lbrw39yIx+;*loC;Zb)fUM%HuFHR<@QT`r6q~VrgTO zB1Fs1&i=gAo;j8xAeE4sFQcpb#%`_>BRNW5DMcy2zr2)x{rDJ>e=e7fiZ*ZKY_jyB z(RluFM>C*TL1kEW=2LvQ;UajI0_nC)h#|0iAJ*#iEZ#>&E4BTxcYd-Gx z8h4R>ty^j!B-EliM35kOGo= zh!l)8rLt%2KVAwH{4c7$GAimX>RP%52GOBw2ti^HkWT3a1w?Y_l5UWWp&OJ2326kB z24O%Dq)Sj5Nu|5q%l~dw%7f;(eK>wS4VEJT6P)}gDL*)m|+%5&}s3ZfP+sghu2b< zHgFpPcO^FjsTtLu`9H(gJE?V99;}?X9_AP9Tl31d!tlFPbksa?m%jKkDMkuRMn-j^ zCj%E}5e11*6gxRv`4bPtT;PJKiqfzyXiI{s7{}C@AVt#S?@J|AlX=L0FgZG~-Z`(o z&nf^#?!VM~GBj8gzeR4yV|gytDBRBz@I3P8gabQ(I~j3{Lko-j?}jzMb~78R>F8d4 zx#iW*R6XMreyC64Fm?a952*P``6_7K#xG~*9s34d16;fhgXnkm-btl7>I;$d_+k8>WWGSU;rn0JP?+3{2{VVg@zI^+m=zt+J5y(IyrHNOmXjxOuFiMzi}5F#*4h=scUl4)VV>1D4E}hD zQ2ivQzJy{?>5qH-Z?6O@47~5#*o-f3Wa!c;Odqere{=q;FPg^XkCw{rAL6>+OJR5{ zKi9#Z48@_mC@hO++RBZ_z|Ss#uI`5O=fB;cIme99BKIk8LbfmogkBUboy&VwN8w2S zJ~-Kt21X7G|0|ig1Ze!6&evoEepV`%8)dCcTq4Hzx^n!FaL#glO!$zRqndGN2IPDY z@n%MBPM0VCCZYl$0vd5_n6%9G<8kaK%bvP>s~dVMT>M zbYnj>5~f9>GFlGUxQwD#@bdI5ovm1LuHXTKMgf$mB<@G zq?rqV20hpRP8+*A1b9u0GKA`Ie2&ZPQa*(WyrRS?yo`Z#5kABFk2{k_Bo4ELCfsxo zY%0@1n0WT6FtK$cpQA*a+})Q$>dapMc+ZKtzWjJqs`CmaXIUJqJ9>EF!VJN<2fW0F z)bJ}gh*~ju0y&k;^~mfvo}+;}?|YO}GFluj#n?pGOLmwd0#;uhRf+d%CMhGVCbac= z`tU`giGr*rVcA9w9ddMT8f#ppb#aOQ+i!bjqmGD zw;HEn{~8XQaN@A=j@#*t>1y$d(*S%7oIlJ|zuPW_r>Z*wRWrHP(l!*l&{zU zkRo!;t*-z1gDDYO^ao`E>m9B0ta1LTannZwl4Ux-Hlp<}?N*=VHLRuTUx`eFpm?Y@ zSlkTKfcBjSO%HVVNgzQ7-ZcnB$oN4%zpQmKbB_@GT_lQagb+w6Ywac#6h^JceA;K6 zA&$G%dzZV_CO_UE&NMpn=vZm5ofQ#-z8OL14Xv7|2GkNX`#!SI_>P_A%!o@wfm8wK(Ri{b17{X}A3;+y ze~Af^M-j7Cae}`Z8Q;r`_A-Uxmv3DZ#Fi-IL00U?qcSe(X{eU#cmz9%lFPjdY)~tH zrZ8p1S&m=eHYdj+p5;gWNP8o^*dYmNm&>v&6qI%&Nc?RT)QdlUbuR&<)}gF(cLJlL zY&)WE6aPu%kHwB3xckp#StB5cQ1VsDi-3=CBRr?>8c9!4x>SvS+ei@mJv_K1)*CDa z$a7X7^YPtFX7vQ8iO5?mrpi!vxj*@_U)3Y--ld{+fxSYOB3T4LT+Od=|1gpSq1cEE z`Hlq@5iTrc9$8_H+PPon>hjosl*L++etrg-OYivl2&Fu|ymwg9`oVmiad)L?f7@w& z&%93c)t$zx+kS*<5}pW^`zrU06kR6_NEODkK?c{G3|-4t^*#Ox(x{}Q;sT>KZ^3}K z)W3dZjg*d}KbKPrtlq7-Qi!Rqr}pys!(4ECeHwj*u^UHI4Pe+{-YZyd{RSVcYAqiZ zhHsK$=1a2`gIsxC38zT{Nle6RSIvaHxMdC~2aD5+a4_M;<@ z-YflfW(7iBio6l)yl_G(H5UWBR}@Aiv`V?CQl|rkhtnrtf7VmO9`kSfU61y^oBNYQ2f9^HFr=RVSU1$4qwRY3ndwWh?No0jiV{Aa2YwQE|Z2btUCF91X z&J~?rKj*EE@j>&_4=SA>jz>$=bBQ_cLM)7lRzZ)T_PgZn*8g^&>TGo``^6M^HVpI0T?43x5e80@Koblq$~w8K#t0gxb&l;ClRP9dgC{)EBd8;Qg#V6@s(RleP7cqN@t-1R_a|VVMFQJu{vK$4Svi*S-LTUxg)nq6)PUDJfz?Z8P zmau)p*VB(m#vbTBNPmRfS9Rw;6Z{SufmCt`n%UN{`aJJtdRg=}A?l6jdN^kS6b|oi zbXikGnydL=R;^ie3A^DwPDO#R4Sh4Of?Dpm7W5b|{<}`hD~m{Jp9kCMqBw)};iKvv z#Cb&!ZrMhUU1WUDCkkJk_*E1(6TDsD?VeQ^%YOvwx&2cEa6tyl5(M8*t0e-BJ0RV9 zbNQEdl)otMj0jRwM^@;Np6eF}Fs;fWYJTb$4qM_Pomcy4Xr2G9tb~&?y)U#H7Cwjd zes<7>+f9*D3+}PBwi(vGF~l5x2dqr}o?!wICPtZ{(ub)$>u-h8vscd;SvYf1jX9O8 zHgv&5y{Q|4MgAL`E8n#xYqo{x9{CxMm*67z&)Z&ry^HskTeP>qo;*04#;M4Hd7A-l zPD#Y|xfC-kuihKQM5|U1i`w&axhKNWtq_^{lYMBJ5YO!!j;B_qQW@___!?@@*=b`zz1y9 zQAi_d);}mFhxr-1-CT)?UPx0R!KVwJ{B1$j)G#Qh4Rs|jP$lM6btW1Oeb#m(RwU5JyA@;h}z4JwEA{R>oU#OB#kaRRhB7cl<>D~`;CY2{2Oe1wwG zk>9+s%Db9<-dZm&8HA$r_IR?teDvqK-(*Wvtb5ue|59wpcgytcnwFwGf@jcD_cS=# zApG=p;B6T*To00Xd){bb>CWBQzowvBw!i=T0gvSGwa)Lt?bhp?gTt%Tiv3a+R`Rr; zAqxU*)o$gKGX@L9?P}iN6lR2SB(^S>rsdydDY6d(D|<-)+r33jzvD?$gEq=xIvt(V z)s=XWeB+K1FSVF41<>OV3;X_6tVCl_5UuqHeS$pViT(sJSQk~8oVUJVf32#R@yB6% zDAM`7m+48ikYw(kf_jF#S=S^)0=qXZ+9*kl6-1`AfO^ilmRRMfCH1leLyOzTpdw}C z&Qy+gxW|spzY;O8geWmzIg@X3c4y1c7$)rov6St4b(Zw(Iu)JAe7+~7Hx{q*HCCF| zx0WO5a#k`Ml~UWkK3h0i{ua0UOK}-*fmL-&8YxEb>PtRSOxBl&aHG%2UqD8I5F0G0 zZ$fe*s@2` zlKRve{RVumx+EN}7nBu#DM9-$+3AmdF}3RUVC2716WufMcA#_HcV6n3=x9uj8V(ja z*UbHQi$$#vha$l+u-la(1eOITu2>BqTb1ojn(1dNXtdlRHex2g%p{4s%49MO!^X(3 zh;pge@sGGa;B8;oKT5n{W+8xQ@ytkNX{i~7p z&kvC}GFHUidT#XrEUeCou4k#6$$ME^Cow3IVddKwnaQ#R#L5&UKD0y^cGr&!4SjsY*8e?q35b)zy6ZT^ z#Bijf78v2q>~gUe1V1uymfB8*4;DQBHpex&#vc}T$Dn3v&7kl3%ew-~4ZH=^vMEDW zS&4yJWj82KAx4z`!$uu2EEqZdJ)lbmw92#;9^PHNmch5QL4w~iSZP?{Ic`bs+aY9! zNz(sQ*^3QqONNFu=(ZM657_j^Vb_UTg>ifEH99W1gFHm$W*9(rLgN5`Of)pCQL@L6 zf3|*riFiP0Z|;$^ucpSEr?Ro@9Ch|5n+YPFk2csQs{RfKjNgcH!qXIhA^7`s598|H zNBv`Ge})FKDABb)kw5ucM+dt}UHY6@<@<-bY7Y5{eo@yp1W9aV`MyA}?^?IkYe?L+ z^)fpyB=jTAj*>$AcP1uY{wq+x+yt@W_QMKHPNLVcNwW`_ z8M>d;Wd8cdd~%QkgL4TGqq-tC^=Q-4h(tJ`i{Tax{+hc6)WKOaO3d(I=7EJOy>{bo zO4pjquhpna_|W0MzDM36&w!xHH6NGX!-191Obaa3c-wf$QHR1w9CAVLnKHJ{nZO zo=k$W3+z(0v6~G|O8qZJQ5ZP$lE0hLaEUvH$-HmQ%;??@hB8|%w0L61_nOG7Q`4+L z#appJJ*qz2%j+k$q_u6gC-uTrdJnvP=JQJ)}*h@Uq z?ho}jDvdo{rvpcuQ?Kbj_QqOcjcYcR?0awu&V+qj8RJX$>Vx@ zAaY?V_~W1s3-{hHn#V(XOn(=5x;wz(+&TS`$pp6n9)f+Cn8HW?`m@2;ETLN`OJM$c_wVL+B3X{^P-#i8tBNv@i+%W~atGXijnCjK$dQEG=dE?K=9yN$_mE&+$A)eahQ z(I|x&Y213-$*5aZUF+pSH~JcH5hHemC_o!aE%#`b>hZ#b%(V|;pC<=bLFgM`1g9rW zT!B)$lll(rnci1X{j0svom_bVj6Lscg_h^lVRD+HMH+~gbVRTJYjM#niyc$38gz40 zWxcW)Z1=7y!(W0ZfZ6ge3mQSC`+V`8UYx0!r@VdHZp26c9T{@8ne^N9OfnhYtmk(2 z{r#^*wU0w^a<6jRw(mtRZ_RSkJdX;5ym;`WbS9EnXQEW`#+t7b-uqB>2b&-MdB(0F zmszehFA3_4fay%kAY!qY@ENT&FpCtq$Cd*A^%VW%tsD5q`_y;c`@k=EC;Roh>wwU1 zmhXMbAHpG@9TvJ`C=54;A9016ehqdNbhCzvik>jhcalA|y2v+dX+B~HQblMCbYDa+ z);2nvsB-^bi+E&oruu^a9zAxhp9@JmT|l=2VGc~r_F;lCuHNT=gc$y&q!i~^VG2a8 zcuf9_s)RMXE*8KB@%Qzmg<#!kO$K!K5x!j_Lnp~%7$Bg$zJ8dLjzO^nWp3K*XZu)C zn!&;a6$u??4uWBDrRaed#CtXTA-ZOEerG(i6z5?U2t>;Lqkd61J1ZO=yVkGe>8n?#UL0pbiu460a0X)n-}fH0fMH5S zew1c~A{kVgYK-8RQ1oB8JdhA7CWrLJv7c`JWFedOvpN3Ef8h|BELgaJz4zBd=y5F3 zNY~)KbuE|g3V*!_UQ??NqGBhgtf#m{u_dHcibHz>4m)sv zA0%sUSJ=8ub0v~2zQA#zccyV4`^~S6(9uHT?(RY?0Y|Q8Uag#Zz?^u`{QUVcLD6Db zv20hc)Mp?DRVp0*zBDKi`d%`1vY*5R*BS#&4q=U9u{LW03wQCtYp9=a7kEe}UwaL|N>5tB%_IBdU4n-A0ZEcwtYHw&&RYR?pv*XU( zqd*#we|i3w&3tA2NKfZ8ClVr-26IJ6IYdgPL{@Jhx;kNyx=h&b+mf}IM@@IW2XMHxh-b37xx(q!Kl zzdB(h7cRd5i+i?e*|zfN0}>e(LI>c_V}eJH%s24$O3M@QRhvFnBuq**{~PU=rNADA z%zuJ3b^H*|QTf-Tq6BBXrPlTrC7*UG==hWLI!hEA+h=2@Hl=2Bpm1cw=G-_vX}@ zmNdR;nekfYKq*7gUJjCw5Tb7ZFW_f+(!ipNBE2#?-c<`$(m`p>e5M$b1{xn{YnKHX zG8;959tw7dfQHT|BCs;|(o#||Jv}|4l$7kq0*|Qm)z!t`SgM-OpQ}dlp0LP`Nq5ew zh+L1#air2jR%`KUme)}c5=FNLhMught}+}CVa&XGue0$!CxZBziV6O}7hyl|N;A+l zv~q*2)|{TlcfDPYIEt~ie{%#Z;MY0+YjA#f%;tRB`+FivkNb?(o(fmB#s+$7xZr35JcvDDsRh zQ)Gqn|Fi(Fn$G)J(Ht<3pc~s?2WLonVG$Ks^3#ejsMYDxX$Nw|8?Mk)S>*P}aKvus zX*GS;uX8M1Bq`VtH09wMn7i0*ovb;Rdpo<{l*xQda6W9#@(c!gDCSuL6!ELjEfz)6 za=+6};Hy2}VtE~iXo9@s9_mnJz5~j;{+j|JEj=<17f7MW$nMOZSLf@wGpn>gpYI21 zbCSBX8$61~!Wgd>=tLpO;O<*5*t7(Do_$K9-4;elwfoF?=tU`CvMl{gJB|uEKepDpyIPn?vt~@`3=N5P9 zhBppE1#*Ye26d$1z&t_GyoL*J9HzP}BvTS8Hd6eMU`|D+TM z=gS;|BwFRZ&JRhO_3=Pt%tk&%QJ@D)1#%-9K8r;qLWAESvS=QwBY3i7$v)X~b}Gc! zh8dIGeFO=DZ4OTkfvdsB?)LG>9b#;3Y`;Z{_l(qt6;B=9utA%;)Bq&HJhGpMHRZ+X zPDmk~j*}Ch#JMQMWz<&#*~t?TCinz4b9p2Ky&mRS64U^LWR@2Ajku6_>!)MWir_p@ zH?eKuF~LK*nN&}K>G{2!Uf6|uBC4jo9@XxDsqy8FAvp=zJco^q&Dq&XybX!UW9$=Z ze%lBCsxKu3Cr5uh@^Vn(7h<9!DxsDK(v)8h%KQ8K?=;0ktL&%<^Svh5_4|Fo?6-Yd z*AEXG)w=iv@+ojvZ+Ly7;CSvc<=MgH5D1p{jm@2?=NX$TPoKJy-oOZ_bjXKWo7Luz zDiRCsHoNl$Qk{qV@jCzdh zMM*>Fs;QP1zlOLd#ZQ<18^UH-v$atuUGxHFxnIAI3utAV4#o)=V#3z%Fu1=f! z3687mBG%Lcu=7|*#%K&dqGsH#f){gpy>+9^<%I)YYM!pP#SS1D#`Djv3mRAzDdZsd!ULDtCf3bW?f}MbG4f>dJeM* zDsBYfeSUd4P#N;!?8lEEvTxtEk2zQ$U}0cjC{=B2_UFoP!QgyC_hsGdwqcV&!gk3F zd4`x1vIy%h)3TK>Kg%aBtWmsL-90}K>m#=oc3Ea9SX4k`fPbjC8;`IK>8-%PwtWn0 zF+O`ji5Hw4$fPVJq%rLF=5m+MYZZuSOdTDGad2?Zlu8b`604UlPj_+faF4&@&^@r& z*L%62J>%9{~X-{!ohDx;%slpRCc^-)cAw14|cIuS>o zGBBbye{I|3VS=OBg{B;2*jvOpv)y#FfHQfcfcY&>uOjGDxs_u z0Lls*0BA#*iKnQ-16fGG9n7LJsge!GStc9^_>oQf_wSUyPqC|i1GnTSHl-3#u%c|r zhRkr#;CsV82?(^lj*gNNQSy=GxjpbilJF!ZCT4&DcOB1-OiVY%jjlz5{``&I!ovS# zJaB!ObgwBTu>SWOo{3M>*pEOTU~e!Cy@5F3NlwDqCX$gP1He{>tkkwxjRO3YCXg6B z3ZNIMTC%d}`j~d9+C^h-440Osvc}KaFe8)F8rv&Q-~FYP8BDH0<(U-U_dBGV|AEZh zY;b6(s$LgiP-AWoX35$S)|c_uHDS6!`M zowB!&q6ckWkf)m8zT={mzwVsS%bm*2)V=qmDSnR;j)T_{DvwZjX#}9tlr6{>YF5Ac zbd!u=0xUIxS@!;;_O!b|@YYob_mVFwg$N6uWC_b3+~^;@zc9EpH8di%58of4=WO&u zAztm5-OKyC*?}zYl?DIMD!D-Q#k(t2)d8&X6_Hmkowxy`Kgn%ek00atfTvQz8f+(* zLnElQqG*$vYs#YE)nPEQbuvHT#q=gfd)`#FyF*AoU|JlgqC9|&^m2I2x`ri0f?V%v zu$y+OTySsFVwB!W{I1P}XSK?hO(M9^b+1%s!ijbBt)-%O#T zpuvrW9_zB2c{%=de@_ln{tdI~WbSAm_r0CUn3{6}dA@SHsD^K5d!phvM#c}lt5a@H z<4X{=+Xzv7&7+~=WU8*FI6P@1OGIxq_Z}}Cr#IYZk9Of6O=b$Jp>#(wrL6U{<3ikI zxo)(0V}(7btgP%(d3AdMt@M^ctv=0bHgHE_xKFXjNVecAq@w7Jip1x4^HR&RJ=L=h_WJkA`AAx-w(g9q)_h{Pj~)te7CtSq`m?ea`#k2aO?2#AXMA_wgHhX|d%pI9 zF0nxGn}t}LFtn|m~q^vkANh-wX zRO*|$me3#BzR)qp!jja|Aq_IsSk0r)h#hjQj) z7`!ik+GmJK^rn{i$sl3PsS>);`U4XLok)E)SMS_DtUY+n$blU0Wm_q;q2WaXtm-tTlpDhp0RnbtKv(JR3UiVSW0W zY4E0xmg%C{r$^{DR@x6zqkXG;nI{^&c<5C>kPO3 zG!wiWb7C%)AEv$+bU6R6hUGv*Q3?mnAp_5dogLi?GAOnSCwELRE8S%)olhSlYj%iP}zSAiPsV-ob!Q;WS$O6aYHou;z$^l;GGcEQ{JcLjyQROit8Lxkvc;D?PR zMtGdxIBvF~E#p%W%CCe@Ur#2Jmg&rG>lTiE)S z^9hlOwIwvgJ3eu7u|G5ie%&j<(5f{<$YjK}%PSJPaIPw8XB38 zGYyJ21xrUii$RhRe#{T8 z@~INq)LWrZO0D56{%g69T@(mwx9|D633T{A-n(Lks6T7adWULkMPaGVvqw45tII1Z z40LByF5#Zneu(|L-CgSWPbBsS+{8gI?8IHuYK0O0ykTVCO~;Z9tiJTtQ@U#n2RJ;G z&nf>@b{aJ4DPdf5rT;Dp2USxcK_WYKROjrkg!%HFx!F${D0*G_xJ%ZRc$XY#?Yu+n zVHd~Mqs-XKm8egdPcHs4C-ELco0%tcSgb!Z33KENW_-GI9L6L($oeGUb=bJ!B!=eT z0ejnK;u#d7e#}8ul|qD>zdKzKKnR+yJwtDyE4l* z(`0d$Cp48w(@hiHgV?9@W#!D^V%O;3W=AsgzWCsGA2kNUZo;3iRO5+laCU6qXbWdL zL`5nN<)bi=NU8fBKdhFW1|=xgA2ly_Heg=42$8Nopoi1lJiGW(iOceDfMP!pL?lG?r5H&M8#f>dN=jIXD4&bM zQ5jq5e&=y8aE| z@rmFy1yhmc%HYLNvRnuXwk1ku$6y+Bt0I2+Bys7=A6|ck3l9;0{X#eSb??pRiPwd< zw_PNyL*$x@O_TsOv2lN#eZJ#YN(nCJQp&fKzOTy&($sfwYm4rdJdFjeaNcxjOfOPR zLiJ5>ObEsVCnP#@+EIh(ob}SPR^K~zh^<{4z&?6wE~g_NZjUSD$qHx%$1Y zxR!`#cTri%BcZd@@fDTXc6yw(=0Z$w4?S06BAyU^t*8Yss*>r_fJUCHvj4bST3XBi zOoR%%mG(~62(XI-IuZ0gQu`hF3NS?UL$fB}CAb%|l4Y>)9hG;&{di{b9QQFlvcH-2 zb3C1onDM30UsYL>LPTr$O?&+016`7Weaw2b%U)UoX}D+ISM>NVCiWkyHCX3( zt4t{%A*fpI4~1eriAb9krhRt)_+CY(Aj!-6M`l~_O&q@=%aV05T*c>KA@15zj- zPm7C>pTwx6PeIn7B}uUuHncI@RHZXJ;l?EObw5LhHD!nZ$joN65)Z^k_+#tXkIO;7 zx6D@a#MLzm*2ipYl4@%A`)=_!N2jMFYHQ(rw`lX3|L@&BWEmdkP>)2LUCU7XZcoa~%U2k+QT}+J8Y`TWnHha_oy81y)T$b|@K~{YU^&!e>{jfwVUJLeEgKNdgs$;>{xeXVea`zj z{^tPbM$YT&jfy1A;^vS=B+LSmOTNQ0ir<8mm64Kdq$41}r^6qlfAt;|;oEOZi8uz5 zb|942`erYSKUkVgc~(b#lO>1dfL>}^iAlKgTEuUerzUD|Zf?l`_`A69g1%aqPwQNo z-1t9Br<4mmeM z`4Ev|xVgi>wFaGR%zU^Q^DSEuMgn+5FW}wJ1ix#d^~KTHo!hZt%Jb$5aL%dMv+|T6 zQ_(lIOugg6DJ3PR6=G%@2^-yCWEE&*kZ>4UbY|1fOv82Gp%V1jwLWg!BT|5q_=7cB zqAY8e^W(P77fV>)C%n4uO3Ba<(#zo$N`25o}5xF%)HOOsI~$^Ye2hC&ygB&h9eUu>iR z>hTQo4P?q%&+#sg_P$GNybcS%A%CHrsPxi`tgzKwIB>$A@#h=*6K5M&U2Su2-6@9rZneuqoq&xg=&$95_ zE7FsHM4e0B-Q}{OFPY&AB}Exg^`b}y@@&;R&%cq(+|G?kS0Ad zlWI2uy6S`O{UIf40%3pedopy`*rNM*E`lB|8F#^I_7|yVpudXls_h>$54m45+iQK1 z_V|scTEuB+xS$IMUgi*LsckAvPjCj!$ZGj6#WC}pEg0`2IUBMMJ)P5EiqAyu318v| za6hJM{d8rn^?&oAH-`@>rvJ;LN8BNW9)Iaf931c^I)+CJWNGkg!Miw*iy2=67l)x0 zldGEjL9^faCzu1{yUK4n7HevmV<)`1PUK37P~ba}1}C0@8^MNm@-8*C$iR_VZ+2oL zrC9mNEw!N2J@Br_(Qvjf%(N@rfjx!cV>9p5L;4zf!;x`}!9hZs?^OrGL%DQ|X#t!* z4Urr*B^o`I_sxuHL07j#oQVD)uciiaa9<-o6Akhd=8A`gym}ZWGoHOvD^7@J zX8?Cqhs_F2=jm!*{o(J4R8@z6|NW5YZ_NI`sBe*TqiOAzi|2NJ2P@j5^Lpq0zslm2 zD-J;YpaurWS=0WI<8X#NJWRK2R88F_?e>&^WTAYB^TFymxk5~XUG?($p}ChgQC>&t z&6l=oV!h85#LQwj;;LO2$8^gRA2me%pg2rS{?sA@_<#P8A1iSQm35Pal*ewJwUsr; zGXBR%BwAV=FzVuh<4g*B*Jg0;xBMv`y!-M^h#{2`4xWmVWakVB3w=Jtih0+{z|=%z zbYyKO>^c7G`ufVBADMg@=%i|!tbBYAw2M{p1BBO4HN!Yy)lUy43lyKdnSX$deGx1T zljyi-%Al@M7*0B`4k z>iMY+cK92=@EX<15x+k&zYInRuXS!CI{rKhyByOv3s^w^VJVJko8%-R%?$~%>$ZM% zAR06HQ{r_*M?pYsZEv<+7%8wkM7+rCRUzB=NsKwgX7u6*L>1W1J z@zH~oV`&TFOwb?<>_K$Gx^!}NV(}9fFE7FME3GILeMAcA_xwWop!xfu!{Wbz1T8Sk;~fsea?`c=ifCzn6HU znnYC|&_uePbVypico_HNP4NEw@Mv++q8Lr9Pm4)m3)9QR;I0ZMu?_LpSKMQPn}dU zH-GXqm18M`cMS?ktoT+#qL0C=bh3ynF_DLr`af63ib~G@P)T57dTGHEoAv8UV>icJ z*f|A2A3z|D%U0cd+`Em%MFa9FaF=o9(i(u%*tu)V07oUXCrm48Yco{6Kps4-;QFww zWxnJ3wH;)We|7?p+&(`MKS!Dc{hpF`w|wNz!JWn~e}YU*NQ?fRPF8aPY(JdV_|Hlx z_u5iJC%>6lgZd)ZeSU>#(<&gmtH_IfF96!u zu=SN4VbGRjAgKF+>Vx>@&NH_SjYnKu9<7SNlgN^9Dr2Vyt&>Xp5)WuMWD{rS1TEr@fdmH|hhosts1nYG4w5Bh&^qu<6C zd{mx1cB1IH6opHy9^7)N_QY^D)5k1f2Sz1e&>e8gjM$zEdhsUuVYa-M7E5fRR8_J95@jO% z`X@)n>_JYdJg6<*rJLqI1LWfDqYYcIQ-7Y~0wbpDBO9A&6YJ97PS^$liF)pu4zy1I zRmd_cI=9R#*ZA;>O|kp7>fX^#3?7;ANJedEc31RkKnbTb`IoYD>PkmP!>^IL`GTqp=?F# zi2P4_$IAYtgyMtSu^i|+hBmy172Q(KCu62WK;W!rX{?}FVVJ#hkw|^N$(M7dO-_Nj zbDKck?Tu}m$AXxaevZKkWE=Efa0J)|BRcfuT}8hX3sm$|5}=qPJ<-D}@e;HJ76Za5 zcLqE0x94ldSt6%cu>n(c>s+meYW|wZP!%iffw9L`p~_#D#$YRT*4@H$~uj7Ea z7#SLx@z;roNJLs@Ch@ap+^t@TQK6yd0CVrUO(;2lnZh6Z&fjGb*bw|`Ba4xRW>3#Dw>*Q2!ZNBSHb*1Jpra9ObjPEX&aR1j z-OnUs;{Wh3od>w{9DU;<+_H`({q3;X5M#{6iu;{Rrs-#X+t_zd#0=m zb(CTZr?G%!A%)ZoJReQm+D_JWpjw0?I)SK4!P_vfDq2SJdqQWigmKij`Eq1q{fsQL zw@a)t5DlJ9JkfKr#vmi>$>EvJbS8iOeek>NR2%(7nT^(xycjXvp7W!Mp_{tT6aY-V z#RX9u)h?en>bhx<>PzZDCFG~((JC{|6gCj)dkmK+YaJ4@OXX2(i*%=_j1RGC?ymO%5=U56V!{Nw8G(!C^8V&{48InSq(Q$p&(1>~gggreJ;{L0VyrZdC0Dkj$ap z2vAX2%9rV`u^JXr!cVgLC1^|t9m$#%3q{R*T6=iS(_%HudUR?tu9hc-VK4E6cmu9yBG~j(xN@_-E2L$*pGTA771|*H?isi6Jmdc`FXeGY6;nqBiZSep?4clpfZ^f$D zqvh$uThm|ItKu4;-W+L5@Yx`uO}pR9DD+MDbo`vH>iUtHY;EKsOFSK1iI0SPue;W} z@paeVmTTvG%OOey!Y2LclZ>87Kw^D|dH2>U3OdU`#lEj{;r;F2uX46@e-}AgY8IS_ zz6c=odL3?X84l2Ii=}BASOcE5E}tF}4Xhvlh+b}yb%~hABVcm(#J+9MrL{r&+yst? zH4G>HD{LKah@@s73l(G{AlL3JMFE2$rZClsnZaR^HkV&VJ4{Ho&NKzs+nU$_E zsIXXdTgx(w+vr1{OoYP(S>csTRpHU!OM>O)_ChI{y1GLXhc-xJVx6g#Zi=eRe0PIM zxili{;@LaP-7~wl+V7jk*Ab$Cfs<_CO9#!?eyJAMK2+Et9P@Mse4^mQD30oc=A?5! z0VMT8n7FDgxb~F8s&#IxAOm$~Q^7>(gS~uOO_eWCKu~cM+q-23?}5X?t|{wF{=cIQ zViY2^M))pvy3^+kz`_SJkNcAyzxxSlk?Z}n_!>rar+Fx+bCegrf7q@32!P5#uU-GFbOQ^_+!_nWl4}{45!(mV7V_U&%J-at=UhEWAZRuC+hymr4j^PV3 zy~kzAiO|{SnO3h2dU2l%*{gV;$+7I<6-}#$$ZJ|=@#y}JH!kC zzmlTRM(qyVF%5=`*`dlpgL7oR16IJ zZna4jFxb|=&LGb3C=|WLbVXBen=gh2sJODI+SmABek*-F4N=cQjdQTUm^l~(%%#ME z$T5<%V?0nW6tn;P_rg%Q=_(?AC4}|;{jy1e$&fGWs#5wPcz21~mPKK^7zz8&etc1&u@*6QOxw3O5ckNaI zdsqIL9rz+VfgkOt|4`G9ll$ZfB<+8lIrTi8_GGn0*6RI7JYPKs-n`YN>TdaoxShnj z+IWO>OE-}V5Bcx7u+KfCrlE26v-E8gnzOY!ux?DSy>geE^EHlleT0!6&oQ^A^M2x z3%j$+T`NIngc}^WKP*8C1dPH%xwi#^|K9O_G8cZ0r{C<9{rp{%)OUPYEA20;tDD~F zm9OW_#y)taggyUw0Af8zO0?)-)BtgOmv4RK z>Uy|2ZQ;V1;e|LmBSb%6R;j|DF4u+R8B%OIQM}rkLQC0v{qnoZ<~@6Zs}b_3p<*@2 z%4ngW-_`!xUrkT3baZ529RYjqe@pnjOWCOHe^Uf-I{}fh8hPx)@yQUQ|M~Pft6?7C zpo(#DjH19$8k@0oL$@hC$W;?X(dCEFw0Ls!`^x+Nl#=p5@t@|<(9lapxPs)# z|EiSPR|9VSkpOQkjpUm``L~Ee!_&->$v@Dg5fi1Rq3`))oi9%wyjRmojTq=d^tQ8? z+Ww;fR|yczJTda4#UU2&RF^oG?|A!zkG1p}zw3WrO^H+W0^@(b8X}DR>Ix-~y4!N} zWlPLc>FImKqEHu$yr0-x)Og=stK9#I+;G;;df}qmCGXm0ZYA(_FSdqyRBuvBaBq~f4u!=RMy?sHVV@q-JEnc z(t>oiARq`xpGZpyNVjyiNJt}%bT^1J(%s!H>0Vs_>%O1+9q%*tm;LPh#mj392Cm;) zYtA+2F^^-;H}cOp9Cowy_QRe0yN_q8cPan;S&(sc#RYGAaIhR2o8eNj!FW+ru(emH zCeb8AlAb$9%|^Uy6NdvY>$`t3aoDWTSO;_aci6 zM0WiI&@#*C(UAA$Q4~4F&P1VTXD9BiGi%)F%0%JFi#Z>e#Q&Vp9725gQt|iK;Fx@? z|KS2-ykgBO-Vl75>pmKOxw0}h_)AOW_3PKSGXAd6kfC^LFc9HA`qb3a$=MmM{@+9c z-vh)T-zaKuCW@fO^gfRD0iblaUbnoxMViTgSxqGmS6-%1YV>f6wL87Ovhp&5+yg;P z&C+6N0ki27hJXBk{YJ0 z?Cr}>AMo{~`S@6W*c)@C37k`Ah`sKuwoG5$oz5HVKCDk<5@!gx$4It)eG#XB$I5|Bn$Xz*{j~}ZpBp3Z-#NQij7o8=g`{pbL zo5p&|)A!34-mfA%k6y0>{hS-7lAo}IVf=q{F95{f{tp>Mz(+$vR~5WSf&mUDX{!}w z$S(YgP0xD31@6r(SMMn@W28PC9v+f|y&3#Z1&%=$>Ekr=FBQp*yB;v#1HPxU$t znM_cugD&OtO+v~zdWxX=yVvy*Z2JEIh`Y1-^^ZkB{BezBv^^|T|IyUHQx@M8w$aUz z8`RUU4z#PSOrw>OGuBe=?y<2~6!yOYYz_c#$|h6T;PSv*%}@C~P8E!dd=b1PM<@QR zXxjv=G8VGn2)JMi5X%-oR?U44jlsz`gP(O1H}IP((9Xjk*@LJ1;--xFBMMZw+1!4) zznN`a-Ps9Q=b7&snyr1c?Rbs~TCtbLuzeqn?MEj{{mQ_}JIXPh*cOn@WhRFWS~?e1 zg_qbo)$^25s%_@q#(Cg3AOYa|g);67%`Q{?0a|l_k20KSeh*SI(Aysv;lR(xU_8Cp ztwYt-NptPjNRAKNlqxC;9T5s}6>ACu9N|7*1cI^U? z4u8r~zUZoVAO~5T|H4gkr#!kSlVt-sEtgY3_vl%*x~?O5uSpZEN<*xdnS=$)Bt1?G zbvW&oNzC$#@>bsL!)$0Ir6h(A`UDu!ZnM{csuJKmzgR?kD<Qm?&zC`wNyNMbHwUg+#KKjD?o3j=p)+^0&$`>luQd}CX)gdl4-?>PIQSlk29K3cA77R*G_C#lI)K!Ei!pp+wsh4wT% z7vNx%$-sLFPS(2H1)_z2xy}{G)nqQwDso=I*>^c%6kDNLggZL) z=&%yB?aAHP^As}T=7Ome`4s2fOtErKBrBt>;S~rPW&C<)xc#>@TwF&>>0!5*rLL>L zfZRfpX!C{Z3j$EH`Rc1-{z9)eM3u0l(q!vh#hHAB7O{9KU%Igc)u2YMKm(#YMk5%w zq8`ie9HC?=K}M;5lNA^y6~_+>GQB$_O57ahHjERpMFPB_7OC;Sw;33nxiYP;p0<1+ zN>~kcnZ%UPP*F3>4f#+QK|P}>NoNECC;2ZoToI6Pn0KD|to>y$Cu2VXp?JWP-JJ)4 z{OM;}l?=OyG!t5qBh@A-38nt@qzag9!Aq!q&7I(|J0tnd5ZuSd1z-YK zT-zUFK_5wK8cX@AGv9kjm7VH$zAuAgG;({9&Qj^=dY4)}z)S8a48db|w~N?#l{r)% z^%N2zVUjT=cT>rS=omD zF@8d5Jf*=;Z_9UG=l+uz*5 z6-qGL**CNa+&$sj>l&fIz40fm2iltI!)5E-3%6bIaa3#-1t(jW`#4gWjW{bx&=8v^ zD93q(?eTCxRG2G0Qp{{p2S6>8p{<;AfP~Gtp_)$wpoJ$MHm`s_iw~8%hsXL{jrH1& zXM+Lm8FV;J0PvG5E&!y-j!VnUlG0n}y1bY-$b|gr9ufYozH_DzyVV@tVbFu^L4k`iT2UVTV|w@WG*PO%bf@y?X@$;s zUtbHOTLQVKp-TFUI6D{XbNu!45kE%^Iv%QQW*V$eZrkSJZg1V|-M5KF?`~m+?}agI zr(TR6t$(w(T&8m$dVf(O_Dz8Gc`xrC%}{-)4{*~JOGKM z2{pE~486m9BSXv~xr7gh)1>2=>Qw%D1)+Au$CG3EfmW3TDyAeturMzXj!|VjHX&&mZ3`k+MNaypsx;`M%>ug%6Zg%J5xCUKODse&T`|xI30?jA@=Xy11a$nMaRL} zFSL2WY?1>LP;_YS6(A+0EE#Uj>CL-3T~2(kC`EDX37Ea?rs>Lnp@YL39@^2;3gZ4J zP;ZAObPVuZnvumk7nS$zt#dmfr~T&Nb^*c@HGhwlF?CE5e2mk3M7V**?7s~AVR>X8 z>ABkaL`xWN-@c7YnC=Kb-lQONb919Yc;b64EG+PHn`@NvQc=MO2nc9AsYt%;YZ2p0 zO^RBawd@Q$+E)~+WjzCB43d}0B2O9ipQo#i;*gtos0MI!Nd(3MK%|<1aZXP|d{OfK z#Jq3#R{=s$R+e{QE6!8RzY`~=Y#*pFu!r>~{#y)I5Kh;-IgkvrF(_$d7jXs+*ymDZ z1`+k6aNSfOBL6L^Az%LWE8+$L%v&45F5fh9ICpv5qXcAr2`3_@@k(-9Ev2++SoNf2 z;j7e402ld!ChmYEfF}RW*Ut}@UhCpwV}uqIn-%r`0}GHL0C5@>_Qp054R}#D1_^#k zIpO~Q=tY#}tA0QY`}b$SN^6^WXN5q7j;l|wKLsQso@x&d*UOeCKrteh{bqqr&EWaX zkOk`1@iG=}_jv%8sOpyv>`%I-FV<%4|J)(fZK2Edn9NCVm!8H)a}O@(c$0 z02ko+qD}pTvXS77%HZaZtd^;de|{=RCQ@nK4FLKact;P%6?h4r^eWlEHE{z%{Po(X z{x`~yJeo)qc(OScoD1xn<41U8v>rfE+5`n0YB5H!fO}H$!f6goFoUx;mX{|vp;R*?YDga4R4qXTfZ8akNsWq61h5sKzju_NK{^s(-SJwCiu?Xn zTcDS02RuFK(L%$8SSy{Zfj2c%C8 z2YdM6<$e&VDQ6a?2!eo4!x=`DPS)6%nlC*nU?k7=b6dZJjS{V^Q+4NAmb0;~RVML@ zfYl_RNdw=+y@)Udlm$Qq7pD>vdAimUUQtt1I?9uxTMr>(Bi343G@2;W=Mw*RAWp}{ zH8?c1y1V-f4NZU@1};9a`6xFpuVY{U?e_NeLh%{pYjl8>q_|Q#mqcJ!G$Ou=42QGa z+#+bVIihWrAC%~1UyX%uyB(5zK(cl;HalGT%KeLY7IK`bBMXEhE0W4hZQ${2a;=(z zz)kuAZ644&OwO^DS1BkXgNSfY><@0MOWY3=Nq8qKXjH|_he44OTtvjcmoLhhIgCOL zN|=%e%26#!$|S!kLzpDj$%oLO<#+&k_?7cJeZe|E`pvG0^Q-aFf84UTd&FoO^M9 zG5-4F7)=Mhf{_fh$mj1=5(JwfJZ6KLV@*VC+AwAC{|7ZB@;jVo|F6GTO zAzOBrdr+_QA8dqLsB--lBo@D}q1G^%ue1BPH(5MZqQgV2{37uVmw+I!y!AHB9pzNv zN6|+q5>F6>ksu^%4q;=Xz^T)7g=iK2htbK1om)H=*+*pg=lvf|l92SB59;Hve|G-g zl9>RVJ~%iU4mS{+*w6s7Mpd%X6$iVAjx`;U@tY7`k{d%AS>wrCeTQacbZ2hwwLq%q z^wL4R0HfrDG>o{$HzBj^^505IHq2FlW~umXDW}aGZ?)ZWYeWT#g9HQ1jbYXh1`UVg z`9-$RUs;_Zi5o!XUb-#ZxlXCu2^tG{l+&#^tH3f`{g9d$==k!O zCDMCc8{nh;M1WEpAZ}48d<#?v8#OmoNIR27A6SUbG^v=CkxH6$I|LG+;+R!M3{;&8`_0+%ew;!;{Jx z8q)|Obs1#HeWQmzo!N4?E?(niiPdVLn3z%~?J2wYj(E&KCo393NjJVYM|sC47_b^T z526paelHUG;gpYg^x%E|U@!CPBZWH~T2HM5#)&0S>YC_I_OR>*eKe3EE9ZuE8(n=I zbJ{lHu#W7GDHVr)M}6*dQ8ZbqNl{1u#tuf2;?r8}_FEos{=8kX&S z9t~uP%50!Yp{Gu>*Z~20c z58nrth5r>DYHy7HQIDMv^lA9T4nachh496@N64j(Qp8Qff#*GM?~gx%;Vg8rPHWc9 zlQ}J!n*=V0hBLaUnqP3;DMWc~$c(Rk5ukH#zpJx-er=VUzZEaIN3V5ve}B*Pqt4@DL5vrby9!%9<*pMwL-f!zZcuR>gE?=+u+1@xE4Hxly9a zu(itL4s~z~Mf=*UdGSLoBPuB-DVR&Q3+K#4fiz$`SnYVhg#^shovT1S+|M2cBEs)( z%ocf#{U2yboy6fHu{~0vy}u`Yf#9|)u}X~s-aT*(?>e+5W$P<{om>J=Lht4ZZ;1#F zytSj0dwHdu^#BxX6S=_Aw+OL*H)yweUC%ID`HA5NzS=0(e%s2Ox@7tOK8~nZiN~aL zU0;IMF_f^u&(lO|&7NKV#RZ7k;rv!{Z$p5oI|)CQWsa!!!wzZb6(MyM}VIWqAno|%?9!^P&Rq( zkdL3YFSOCZ4&Ahvz0bvLibqHY-1 z?XUo{$7gN9KYv2x$M)IJgi^{wTd4rK2f@iuGZAXrnAW;@P_Jj0&^+D8+BeeH zB5hXu)l>4o!Q3DLHII=aM~0rnYY*zWkid4RF)^`ycJv};OFgA`Hq z`&%?zeOf$m)WNQ^*ssyK@^9%)K);K82c0jBLGSWOivQU)DmZlpE~m>^zXk?^W#)TK z%Y^&#M^nE2>}bj1IVRS;E!lpE^Y?$^Sl1|F$r)d7B79B%tk)44GLnTLi-G4wmbN6H zr6TKJ4(jZ-A_~ARZ@lLr!@lS0MaFpqPFHdgDFK)td-EhF1IZXW4}B3Op6IjKK^F&-6F+!! z)rx;5#wweT8ZC7sCmc|P3M^If^-gh+k7c(KM}|x2(a_?36ol)#V#lzAW(}B!4KjIu^yb_CiC88;!wVw#4XXb~ z%9}W_oj5n-0;D0915vbp24Bt0Y7Bnuqvv!VK==hC@rB*o@ z7#KZRV)x>P292Y{`a;v1r8Ism1o&jpDUOmj`1o{lX?@_Z5g6jujx-Xx`-X;s^X8$# zExbgS&WdnVkJrK(?(ZRxo%Qxp5A7po*ao+oov|_E`DCo#oQjvP3=Yty8LnK3s{Ts6$UGIaO+LwwI6r>AVKkLWUkT9j5pc~57mLvAQ{^6e7 zz}7$81_*m?rigWfn6BxGN-gZgw}2L^r{!Bb*P6dnUNoF9Z$OT0(-~)ZyqdH0{A7UA zrDACtRi3R5$+>j({DINF#9Ddth4CYfUK1%Mk-3nQ-SOv;@9z)pAMrka?lJD|U)T7? z!^i#ky1!#*CVz*P{96IHTWrKf_3BU*_A_q2vks-{fxd%HR;@C7$t;am=y6-ex0m~% zM>DN?Pl>n=g4y5~iT_p=6}+s8|58CJ$Q=?DUVnUdcc--@`0RlB@(V;VQA-m`n!Bvy z%{A4QCP}{65G$$2v%)3J#@`>qs*V%eQv8JcVkXQ+|GZ zS0f{>fh*|xq4#pRAiFT0yq2;)6rS;DwZDVeijfPH;D5MZT7hyV-=3?jE&K2BapU*z zH44q;o%`ZqSaW^oUQ}ge8KL{7%0Vfynev39uu1qkU?9UGcb=q9IE!qs_36H zI23yfHDI=!uB0Hj)(L2T!!uT4@EmZx(4^qKT%TXI*FOARIoTDzukj$8ym5~_lU*)T zE~J>g%8C3Unorv6bBlQo4+pG3yLwBj@Kx-N3nllBAXT}7@IK4Ey3kxH>I%T=aqgsnBpq_?3!^Y=KI;k=a|W;!y0|q?D9UkZg4I_ZLaJyq_Kg zZW^1e=e8Xb-~0Z{7&cAV`Zf%XpDQ7JOF@)`HVb`3UbE%M7ZX7V?R{#2^XL9U#N!pV zU~OUau1VwgGU0XkIu+k_5;QkQf59Ap zrc^42x41d2A|b=J7%Kveqz^V*MR*gATk{Sgqle?AAq@=`f8eoi_^D;wKUsBK^K68f zFvz5SuYMAo7>pyF9hjE!Co(+saS#{g4)Nf5_L8wS(@oF!``xwmbeSJ#fh#DQ1gB$ zQ&_0P@a=!_OPYt;i?+Myzr^3XHiE_|4tMNGJWZ_6Z(^m@6=s7ZM%re*5XyXFc)L&g748U19UoVPnMK3`V1c(Wspl zzf%pK#ffxRZ50HKL0U-+p5f8o&r5H2QGU6~@8yL^48iO56+l`Du@jtPCX+`1sj?p4tIBO4`XkD={8be=<_*OudsUx8u3uA6Ecp1E8z`o+C2r z9|atNR?Nuv?@Zmjy-CDi=M+K0bztB?N0LmLH-=wCce!^)JH{)*V%$E@U*s40ZTjc5 zhe3Obo3iKF0OpTh0`_08uo<^`^KnX!MF!eGljEGEOkm@E68-7>X{w&^tL(U=4dgK7 zdM*KBKA|qVND(UReT91T&8BNuQ)=|@A|bE-^rXW5mS8b*nc^PDP%Xv7m<9DfDALYb=Z9B2hkeh;O-8x~~T^qvxrDTz79lN8z?r+JXR~S0i6fOE8D! z3EwwLQ8h?+X(f4jG+YiTBOEEclz1ZwsEXl#ON3j>nMuk1%7`Se{r7&KIuhu-zAChB z#V3?Vq8u=vcY~fs>SMF@^60qNYYUf*CyTcNiNE?%keSsSZrb0I9GoxI{5(0o!5wq3 z+!1j{Rvu8?m^9rX^c1Nj4Z3vcD*o&=_|6N}KuMInHL0_v*kKn2Jfr>d?t=zpo=HrV z$qidc|1H=dQIa`-4M0DrhbK1Hv{8w|A(uE zL8^CiYl~sAoS>LRkwFl{-eNiMF>^=U^O1$LY*|z~E}HcJykyUl1F$e+ZvXetd^p^A zTnVk?^er_ikx#k`m9kJM8~&96ck&q;a{Tt60>OTm{d{oyBDVhvVJv7K`yKX$eb z3pBj+n_k*?edH!K39iv9xPLMy1)%p>eT~rld8=$=E@n6oiw`k-Mo(iTmiexoA3Y8YxCIMYRmz(n;KX#dA z8|JgK(zyV=AL1Z1_uGY1*eCL}w`bT-Qe92Kr%qug4%{D^IpflUSwQ9&9xj!f=<4PL z``|B`5Kn9p?q8~3e~N&{m)4UNNxQ;jiUp_QsSNKP%d~~8f-qXnP1`Eqt43J|`mIf& z2Gj#MJ%lyzGL$+~1ffV0isBai+Z0#Iqe`wJ3Hbjq{NgZqbp7eskOGEhy($@?XWD29 zx7gsVs=#U=vwli*9|7Fc8-ZlTp~dH1f4B*z+&K)3Vw{stVJWR8wLC1sezmK*|Zt6ax4VYGSZv>ps?1a6&QTo zxIJ&mY5rkkW#`(gb@P*3^kexe1Hc=Mdy4A^4c-b1{h1k9U0qEZS7HWWrF!Jn+l%Tx zp9j=q-b#Nz;~tL7G?5r>zx!sg1@Et@0VJOYWUri*W0f+RIeMhAL7*AGe@KN85|Z2( zNy=}bIC&P$hM4=l&9`_bl*{}t+GknQRY0$X96ylRkbHsO2GeIi(0rmh#aO?ZtVL}D z+BF>M!vx>EU6h!7FIWbpKnW~x9|Tkp0@fW1A)xar<=;-R;I__gM7hyAUAzzXn7Ag9%7$?EsS7MLC0t=1Jk~eoony!;RdxG z$jr-vIza`U^4huQtH6T=dR>vI-dS9ca`(Yzzd2@d%b=W?1{!GFMG;vxL|!B~LVx}k z8DjyNDhZJT6&L&nHd!dXDWih?Ko4lrq3y*+2>OHsroO@Wv!vL$x6buMXp9w=br%V+ z_TpiqSo8JL!mC)96rK~BZjUx0vt*0ts*4+K%0o=@RIi(pM^D0h-J~1WXac39GaWtP zC~o0cT{wDX?^vo-^{eFSku>>A`Ey|?4#vUeTsK8{!DU`-zsvonaHP9?hYlDLv~`et zTpTSxl=9mEf$LBOd5T0zT;u6k3^4{Z^q`Y`>SVQ&183a)D$BRMPak?n75#+g&NjRS zvSAw_GMBkuPE>>0s&`=?eGl zvKaMt&2xTmG38M=p~zk=nAfy=GnottRr627?;~zS&i-LMR*!LUIa(Mh@YeGk5jhFb zkV_@Q+Xv!+F8=tPzsGy(c>8kG!3~A5H0xEXXUd$PUR#D3>)WhQCc$3kMLTRYG3@MG zsU3px;K2oZDwzu&pnGaWWLQ~FEZJ%LoFKG^|2Rj=`e&S5{Ur_NH*epkMzBpm+JE(Z zzD#q%DirRYExkK;6oiFb=T zEM=IF^pd=UI*4~)-N0~C0=n@&e`PF%J_J=bC~Z2Fv(CZaaazG*!KS?`+X<*`qihn2uL_& z8VNu4t1wfB1d{oQyb#OLu=ZnZ`D#^DS@(paQd74FcVnyjC|w5*FeR1P(su9!dh@Q; z!?De{xn5Jg)YdpiU-AdNp>_eoXuRxw!v`9hcnBimO?_hx7J9_s3ZE;_tI|Dc<~6<} z@(h0@axuB{)^iOwCXVeFsORTK@6AF}+dTdAkB5Uw-!NLnL1uSPUshG(EEMSZDtATo z1Pl(T{0#TO%3c*R$tp1Sy_0K`(AzPj>JYKw-+fm1x>jPj9sB3@eCCY@8V=D%r1JQT zoY*_wdohn`Si;FM8LSrm9|%o9`0=F?)hZZ2Dc8{dsMA)D_#tg_Ap0=+{YOt66T=S| zWnM*`U4Il75?0i(-yS-D+JsW|`;RIE7cURbw(ib|7v0Xyjs~0gubVwaET>Euq+=m1 zt>_(z7-dX-3V~8x!#kpva1_A@T@S^is_J?OO2I+)8;jxB)S_avg1>j1FJs zCnO5gJd8JIr1PF7y5LZTs##_2VTV%Ni8L23zd(eZe02SqqUOdS?S>2)x+vN!J)@GH zwCSsB*Y({eT#-OO8d7!kEI6U+#SO_emtl<)tFkn+>z_BAL*l}P4pZ&zpkEl;*Xd13 zxkJ%Es(CUy^V>l=_~dADc*e|}hnSka zAy>Zv>-nq^e*V~RH8XZKqU!kCLc!3+X!!`1RcsyDnOFup<`?s=-kY9NAz?u+-WxN|e$N+2H^6-TD^#_j zv6+Yl3(906-%4T!y9D>H4hHJfiZSrMi;SlO)&=YgM23?sv)U&JPT8RkVg6%9$ zeu6T}<0OF$AHMo5w~_MEig63!$d{k%2dqbr=PhzYKqJA_g;mibl(acaS?Ga4cUpS1 z_wo{M03<=>Y{Xp)Nm7+ANZ2srw*nLHhC?5PQ>tf@AB1b0u)T1RbK=AA$W$sMScGVQ zmoAT_wpX;cjN)n%e6I#ebkh51d5m^PQJ&v<4~Rz`jXwr?wO}6b|NVBiVlzU_RxZ~a zsz%tIDH!OMf}WO%>$8p}j3L(k`z^SK!(IGqYiA4=LiPfCf^En=tXYG3`KVaX6RM#6 zsU+@0E7b0l&69)_#Gd_r59%|jptaf!>odZY=b8Fw;AcJ^mi8?ctqTPrbJ0nlKMv;i z*{ZchH9zFpV6XRni#ImYN47yOjS={g?XL$RN$ngRMQPZ5_Qyk030*h!mw1G=(5=bI zS@OZVZ2OllmXY9-gk?OtCAb)6b+Dx}I9^jBnQDBdyu~M9o)3FBoH+xd=) z@@X}e5DD3cre+e3qcmhA-_A4*?U%epmJFuj3hL{2E02?x@{ND74)&WWJ*oHK4J8=X zpz3u5K!iiG+PTME36%XH&14y7`6^3jvB+G!CN8a-OK{DIMYgaM-QOEACKo0DF|Q!H zkdAM&6D?Jr4}bk*T(;>cBb9^;vd75+MyPPE*!37aGKdkw)FP`4L4UstiARhYipl;B zbm^JS(Af#eFhp9HInXJj3i32GkUzLN*y0jyZN;-3$yu53ekq8)%%tM7N){6PE!{tS zfHY@5cbu(GRs$i>EkyK1a$ab6#$QZ-e=?_gBhvMbkUx&7C04vR0g#M0?Cn{8tW6Vk z)~|W@xl;4OY49Ah7dy(33Md2m~Uo`XzcC?U3u_&NXR~N}Z9JG}Pg|J2~<8j9^mXtSTPo zlRcYN-A*uJODptYoh(Emz0u2oIpgzD@V;D=YE>cs$KM%iQ-uwj+%?kEuYKhD>~d6d zjJ0@=ZxFc+79>uVR=-c5(k2~A#6mC@Mg7hzF8kacV6=b{FZ&DiDfzG?afLL0&Sq&g zyInJ;QfSrl|M__xIBuz#4lbtt5&vs8F$X%?9QO6o^5wrPe79PJ{gTWaBRSDsCTq_U z3Co(pU9kg@xi(61Z0^h0u>+F3#(O{flDl-nmJ&K|Uk^{=PZH6o-<_e2d3~1VZxT(dmB0 ze5Q5s9W84*GM6j16fK(4FWF*LD3hB|spj_PiK24)mpFJvJO0vHgGAEPJ-Q<8$hM$5 zUt1ktWUhLC!?QFtaA~K~PR;oq&d94VpfQ)Ijy(2vYq)d^f`K3ujLDX-$}r51o!2&7 z03SnrV+`}E)H-LVNo?gPk08Q++^w78GX(^rpjPT+?MeWjXftbk$B-DdKtBC*h{*AM z3+~_BM=Tp8Hj@eT#G5k&Xbha<#wv54D^6E}!Xc@X|A3rOPuiC>K*H=dk)RupbmMJ& z2R@{YLV8luF|GJ6`sup@iml_1iR}FLtbh|)SsFa2l1*_jWmuW`72pxCkuL{)k6~+9 zDh!u~{z?SidYxLPIIImJMfYfa4M8&z7IbGiAOx8UU+>SmqTYWzRbF22a?sP2LVUVX zs3eNvlmA@5>iUKEOGS+tvtS92d+QSDH+;X{G5)dZQVv08{tY!R5#3-$M#VwyZz`RE z>Alx}Prv19Q6#{w!GAl8HY6f`>oD~zO4q$r(fgA0(Q5^?tbe5l3_Bu#<~cPg6LXMh zBm>)Z{-^LI`PUILqZwJQ*GKHLb+sg4lRy`7 zq|j0v{zyal^-u2=)Y*%A&*br=qGCU(uH1d38`=q>>NiBNYOh)iEhXU);E?y;DQQ|3 zfNyaEiPPM@Raf%%d%E7dn!~Z`pMY}t4IKjEq{oKR9k!iNoN?ot`a@(81(r;h^?~B_hX{LN7t_1f%vJ; z7au%#NY_b-PfsHf(OY`p--h9|0Mo7%&*slr8a!7RAb*K06CQhBV-tSLqvp{me+Yb*{4SJOwbY8YLuC09L?lvP$+4~!myB;H9V}*u z7YhtlIx|YDvB2S*57SbHb`*+e=^KW4(jgTjQ7;oeJv#l`PuIMT?4Pr(uV5+OPf<<= z(uK_dN6hX_47}=Vkqy&k@o|bO)nc8Ik48v&@qcWOdf&hP{%23}zqkMjXPXXv2ErIZ zFy$#)1HbAKj_k}FMErAFjzO^HOVsb)4E}v zE)+|QN9|ab3#!n({LM-Cx7nqITkw!90up`@$A|*9lSOM}=Q8U0#Lsq+hkj;u)Tt@ezU7}77OWrry+E?dC1`vkp_PKVafAH z_GUz08(?9h)q#n2ZGx?D-pf3Nm7CMijb*^({#^lPcb`I}+}425_wgd1hD*wN50t%H z(lC<9rc1u+w(@o^4#WkZ z0nz9g2sAtb25GXPW}Z&`}Ng#U}rz~-4N?Q+Fk3Sr`_L+7|lM;L>I8qRm8|f65Du90= zm3eYb)ft>_EW}D*($l0Fap?+3MVqkAomZgX>%h5-IIuzH^M z9~XF7_Hy$GIMDuCCEc3hb-#Gv2x=Pt+?^1PmOS~Msw>UB%e_A;;N&#lhMATB=YsGy zv3xE)rwZZ&1V0g1?3@Xs!ootp3_y;Ej7+S~{!~PSkG}$H))jSi$@N*F^W9zD#4(Hq z+Tn#9sY@Yxw`*bs8uE1%Cm-K$S*?UtISC0I?#^tr@hQEvcLA#&Gi|%i`O(T%vM=0M zIaZ!RETN|m>u^RVrRh5ybf=5hSFDP;N|9H$PVn2TQwp9`RdIH;Gq_Mmd5QH{z(bL+ za&TZZG&I<|xCF=I)RCF^iTkds7-{S1bWCWd_Xmih11agC4Oz&lO@cNIS(*D8Uxkn} z)$lhlEK4%9h8vl_e%8-5sXP%8=mIZr{W2jsICVzW#&A4%ziPSzAZcIO9n4woP;<)U zBMM%BTl-1r^B!iZ#p4<@xbZ+Idx<@suN;t`PR@_fbsbjco5U8Akr72M^r>R|5%ggm z&6YtMy|Y`)&O1^y#O~2c9vC09H~Y9n>L!y9gWzD!lEL@%)x}O( zpHRuV#lNYBf6&q!eEwWrN=oWWN=ip}xAY!Kmei6TJaUEos-(0JVfpzO#InKnyd0y# zW}Xk7Tu=i<|3Q5m_*CVpFcJ=-Q`ah{{Jh+}zJY~YuN0)-DuOdrQBIx`NB`L08$}*I zmLq4Py8Nc%2bbhRi(XpeXrh1(DB^blh`rvDtW^sb?+3qSpTFrXT__Wzd{hX}b+xH@ z-uOBu2Xh&%U+j*fUld!dN<#bXWS@9J*Cr0DI%WP```5lfVRTf|d% zv;tHp+SL{~A8c&6tgUF^Iard$x7APEzE$E75NK|O&_8+TTU7$^r#${XPCD!#o>XY< zn&fk@|14Vb=`{Z5qG_-LNW@%@$nLBNAdv5|9+r)2s6Xzn=Iwe^$bfy$t@YQH_xtg1 z(IcxYNgffF5i0vbE&@~fCmdiCF~6nN7+#Tbc~dwCjXF+ldA1dmBT5%)!otFS;Z>m` zSYWkIr{ovnfeD~VDpCg~#xgZNSX0#ehIbtAu$l#q3oP!_f&OF@xD}euzu!%RY#w<# z2AS*SOJ*>xgeK&N=rl$Dd+j!fkY4=d>qHa@vx<4JJ`>m z5+Z&<;vA^o5+z^n3}>^X&r*BW_NY5LXiZ4t{Vn9{P;+ej8ARD*FsLvuSMhV1G9h^4 z<{}i1?Pi_g)_+E?GnTtLO>{WL{VWvMpy8ZvgUwe-?=OhAcXIpp+fEznn;ycsXvyi# zc=_uf4Q@T0*lR=;mE8V?p(h;ALJ?l5h@FW|;!~~fgO9>9BV$_>G&BVj>ThCkIAlu^rzYQ@LR!rM%OgR} zCFZaDkz2a#sVberA53(!P2x!`^yX#H`L))`DHu&@_S8_#C?nQKK3G*3H>SqbwOt6L zOY66aZi|D_osRO6SW^2gt>$ihDGJwAOoK9mvxxQ|4*aUOV|Rq7kd2XLbB26PQG{L+ zDz~(C=j_jqeLpt`*-ud8bjs9xaTFEO<|2i#E4K6g)MR7J3x_T+`3aqrFCx}xkM;*6 z4)v1W-?HJB1=Attcb`N_l*J-}Pb31cV9d0(VV z6T4M7I0mH<^V3HF#d0hWF+8%hLR0dCRsKPmsyor)z_=XUp{A;8#6cR=)vb{$ko@-U zas>qfftz|8#L128Pu!jSYq5PFmkYFE1A~~|*w>oi6Hu2orZV!o(Isu-_l`X5D zuXremF^T#SanQ_E55_NFN&FMw?%_fA3(LMogCFP*oB=Jz8k>=^h`@*Ngo&_rcF`Z? z?H}X2Pw%V~i+h^su48zx+O{4OES@`+IbhyrT@BQD?pBqFj-QJQ2fvbC8JgH?Wl9Ls5D4>AT3CGS zoRGn{G~t?Gp`^^`;Md2@I|2IjaO%SgMT8#u8fUzSX5*Ec^JGwz!;+uhx z;|P2-)jbqHBJ+`qo@vLDo@Sy8gY3TWdw*P~{kdm^gqzpm5`Hj#5;zrg1($yfzx?(& z#QR?7smw)tqmkDK$K~`uOpgX$C>PZ9*^5*3_Tdi(gpj2gwFc9{;SUXgeb1RBxgG+g zdPc>+H=9{A7bduHZ#rM|>a>LFU>>Rzs*x%m%2@^r-bC2^}w|3*|D1N-DzW!y2_78u7 z?hUp)Z{%lglM%w1-ys!_pOAmaI~2z7TDd!M%7;!&HG7UQ)#Uzi7w0uJ-~J@~lOb;P zj~+>MbE~w7V(*T=!`e+85>%Cx?o?M>8^uo?Vlb2l8q;;RCx)p6e)mcAgJ=YAHG$s@ z7o`9pB_`=y$OWS&E$lQU&{0zvZNHY1{-(?4WDL#)Gou#;mC_9an~(y70)8tql`NgL zjowzq#djx4(A9gcK5qxF{Vijh<+}nJ1>-$)%skbHx-yZ*`cR3+FcXw|3Zzc_=g;Zg z-kW*bjL>jt==@DQW!pXD2|Fl=KF0SFh0nc>NDS%h>tlw2wfdwlREZ+OP7oHSh!qMo zYAem-BzUFq^q~n|lShO3`=U5Q-$V=IzYk1r1E}okp5gIw9>sCK5gUKAqevES;=>+2 zQFpz|r4Q4fg2cQ8YyHIswL*?buJq6EOED=$2m5G$Mi2*p&fM+4eksu3wfqX-VNHmR z#tOmSOLtkqQH(81I2apX%QQoFaj>{eJ*cYoc=OUh(TUUQSx)!>L4b@A_j}Xr;$j6h zlIhy5InIr%?UC(Bx-F$Czc;ofWTjMC-76M#o1c^ju%+k<-7S1<9G2R4WUIHve~)975>pLO{Wc|;3fu(^mR^{E1m44@y2 zZ=hp*_kLSNjJg~`M0;%$a-OOtW>I|C1}QeChY)ROV>c0xyI!1PT=8Ti+q+-8>l)5D z%gL=7u(^2#t*-`TfK(?9o>OsIp-28%nDlcY1?Kl-O<;_e&J+A50>D}g6})m|8nToC*Pf`h=w?D>`kTgq@d9Q=Y7 zwx0Aih~0ng&qq@HJNt0V>5)=mseP?~Mpe`j25oF@K0Ap%Rsti_I-BI4hhE?oNqG|c zb*v7;R{!9`XH8MHc&MC&0oCOYw z|4h+{haL5rzed7Kt|v4X6N%0wW5hAycsGPnv?QFigBh|}*gApfMitaL44@kOlPsn@ zrG9^iH1y^BKJ3D{qQJnOzJ3;2j$`&UAq=urkt6l%8T7(H2ka_1_n?J&dHbC`HCIHdTel0+}mFFf=6+L`g#dRT-La1-O-L^R(+ z>s>wtCMH_twrV{{8r#^Q;KiS1UDEuT_g$^VBYd1!`+-W?@tD}KIpS+L4jeVJYZ zoSd8jqwa+yoeDZDD{IN0C8STkwdn=;w0<|nXT(Myd-r|L%A!_c9-|B4`gksNVQm*4 z+G0(!=YUB_snVX}HZ);I54P2!)!WkRmH)YvP5P+4lx0JEuF!FEDmci|im}Ow=1M9g zg`%tdOVw9U?OM`8OPPqi(ZN@)OkNo=0cMB8tCQoaY~1UU#loKVyUw11jn8_$eoOD6 z^a(UmkPW9vsdI7h;0e0?UrfDoT;6ZoH=LH2xop?6Z7kbZUbb!9wr#G?+^S_Q8_U-7 z-S4`u=f3~y)vNwG&jX+1&AoY>&C|e}!)aFgB+{100Ue$B0s#+i zyK`y+o%RA{dGVJX$3+OK&%`t~+8>@}*+613SFhufH5utzfI1;nKa|LcG;cN7XqwTY zKvup?cjjvYAaZ%~P*_mA-xD6RShsshfM{7!z14_X_6j!=VeP)OFx?c8OC~XY4n@Cl zi#>JrrS7tL0+LzGoFj6wvEetvie>_;)Kgp`-b8ML3o0o75dF9N9q<<17T1#&_jqS1 z>6xGdo~2*if%N={prD}c&dGu#4w}Gj)%FF>(1;FOTiOmtjY1J4eM-_??7^8y`JGAt zDNvTTcW~G~3yL7*14JvqEiL4B5Ircz_6poxlHSEtdME{GV?Dr4vscKr0Cln(W@0RK z_6G#U6oX#$gD0X}Dw>@NeH%SJFp$(xNK)qqjtDRM?({$ z!BCa=TaZ4K))e0*ZDgt27e31enWoPwv!tfUsHoN#sR zQd#!th(P87Uzs+OogKJ)VQ+RL9!Pn+(#N1wPQn`+JV%S)AVhFA&21T<4Bx&df_v4e zM3#`2h=w6~K1CNcoC2r=zOlC5Qm-Y&8zM3F!2zxiG>!R#i<|5;P)mtJ3Q51|iR)Vs zXaCeTc9yqz)()RHmq1O8Vd(EB`$O|L|kpbzbrZR+nox8c4RQ? zhP?&PN9#J<8W3UM%Lg}mw%||XmC^lM7_GmuIAwE~Na?Ar9T_npXv5oewKG`FW8Hg; z18_S3qW@0!@awo*LWqNof3DSC{MDvKwp;zL7&Reyz-&MifeT7?KA z##1iGd84tOv##8{UM&eDyNif7u!M()GH$kBLXz#X4z&I2GQlqS)OmdTbY?m#j){zh z)zHS7gtK(F1@&5g%}gEKLrXkN6fmag^i1KM*6bhCfhu9+0ad5InEqsIRhI%2L439x_Q%4AdGgUpmE8r#4#OHtBZ+4#okG97H6wf0 znmI?}d96FvU5qs7OmH{EoC8xhnrd3*_ragfQZbs5yM7~vzvK-bpXEYgQg9`F9ANc< zaDoG>Tw|1=Vr|~fA8;B-a>6gE^2^OkU`uvC_Z9n2gi5JfQG4vD}9&U(=%VsbugsArr@f~12`{;Fh zBOfQUA(=tEm16xo>Us!}_K4quxPVPdn)N#;w)ju1rQ%T6S8pXE?@4 zN9i<)EQ*|r40)PJFtkU{gAqZ7&hot5pdDzUOrri0akVlXw>`TIVStEHimeweH}Ww> z1teY{*kOR;*=y%@`^!Ddm$fTX&1;S=e~r=vZu#Qi)1tVmXh#gfZvhAm4zn@T^X>7V zNP|lUimig_MIoTFU8 z>UEOwU*{|MZl%Ggp{Zm2*F!F`3L4swmLGGX&@={zDYVeANI;-SY+B#PtBlQZR;;oq zFEa(X$hF4ET17Z7hpdZ(j1@UBo!7pe(a)@?87+(%Cgep@9EFU53|pR%?vl?QwO7{z zn$hNDC+dnn*qpPk>v3}fO!wKP5eM{0w?#Phv@vv*Cur)@*m$!&Z}UlcAZ=$dWz87H zWO`dM<4*2M4^o5ol`%X-6>+1Du&_UN59e88`fjg$9pceRVvAPxaBvs#dD}s3v@^TunAn zuEKUVX8_w6Qz+W#^j-XM5MMJ30XaNy2W`HQU1H{19e`tDvppsja^`MQFmR)Jl;;h_ zE9rvI<}`#w-jBf;89vGUnvkmbrDR2P#WW+EhXEmG@Jtt5C4NQFvY{~-v(ItDCnvJAjR&x*r9To)r5s#t z>#~8%irRihvhIpfT<}pchL%d>X~K!gFvwjbU%$q4dv+paTY7%JJWtd17a9*iz;28` zIYuW19*$2>L!)C1p%D$>eEd?3nym}HZ;bGH3N}+GY~@Vi3Oe9HP3yLOUo#S`=FAQQ zqy#V{xMr8klLY{z-yt0Z{6I%Pr`-p--4)X1tVA}Uku@ul82U=nJ#Hf)IlRQ(ZrBbs z&I8F>cJ5=!cBou!@Qbjd0Co_LUvAuR<++C9T!HfiP^d_9eTxqzE&y=+c=wMJ)rYEG z7~YDXK*R$45X;5l(scE2?E2!Ue_?(0nX52BGwu5>FVK5T08Tb?P~RDdL%=J0IJPx@ zD;6@8FK;sjna?8>ZP}HVZv%-i>8bG;QuD(j>6kpypH(*_FY+y3Qj@k);i-2|_r&<> z_BMH}BfoApkwXDWVntgI%ddb@hl;-k*0y$k0r#k%%~KcU>`boSs0Bd<*qRuL-U2ar z1L1;eF1`LiUVJmXH3Vnp-x89OM^0!8uZ7m}gbPrs@u1AYA6cXlUHTOGUE|3y(Sb1+ z+bzfSS?(oGwcDa57Vk!vK0~G(8%kgC>S$J)WNd!n)VSd-4F=~;iL6>{LwFxNo=4#k zC?ao4ihfiScT_XTQ+j5r1!fw6ElycV>Yj=CVN zJWm-!X;8#A(LF2`8pOgf~ZSy3%D{nSTu3K+$DSj-Jj zQAEWwt+Wqxt<5dzDXB`Xe(*h@Ily@=Giz~Vx&82F46XI@hY^$x)N)2PEiuLX#5~`t z_z2x%1@4Fg3%Xpfrg)cOIPqtbR{L!ycG6+Ht9QnG39HA;+n9`YLD+J2L&-_6{Ut^+ zuF2lQj}rp}_N%WI^($nO;@odUAJ4^~l|NRS{BIjDmF6!ZUUftHkTauxTDYOh6GY7|j`GpIb zq_HBc)FGtu0~;C{DH0BX zUKnPkWSK?|rIJlk{l*Yj2IEtcdVY!OVg4ASs;T{j`Rndg(vS9s?qJ1_cZ>NMcqeQz zmiK6MKlg#fMU1F4@u2>QyDB}5RX>mp3dWZycZ6`JAX3)yc=FSZi9wtt@UaHk0jm6& z&rdQu*5ErXs5N22J_-@S+>zZVHAHcYk+P+=x_A?$VZG@qXfM8A;RIgq;xh}r#$Uf- zilUZd<6wZpz}!jIR?foI>Z%arw&_AJhd&TM|3wI)kY4y?oc=x{DI7_r$II4#&Ga%@ z(-Y4dF}|9k;jp#$8708HNrJt>WCeD<#zaFtC%Byj%kCAg!y}}=iFu^+2@-cpw6R9N z$h9!P9yaa`>#O`{%e()f!mrnNl?B-#06^A*q~i@slkIG*q~S!&;MzdqC&?@NqJ|~n zAP+MvO-^)F)F6;Sf{Km~X$i^&MUco)k)Zt=j#(ljHHOY)tN5wybxr=cws!6E==W0e z>&s(A+W4khqC#QR} zG&O~q+kp0t|6eV@2f0=RlgZlOgR>PWTFPfW1IHNEZ*=hxQ0E59SdZSyS zI=A%f_zyibKvi=?ZKwO3E>9}!5>n+vUS~j>7k+Z}-pFSy{h_zV1o(p|Y>3&}F#%+l zkD7#q+asixQZd#e(A>Yf^7R6fe#^OrmlteiNwsmi^jp^LfJE_~+-@efQ>iXW5H!&I z!pvrU5H21SEVP`-?i(KE731@=F)~+XY47xc8xWu})9vvM;Nl`h!)ymO{aBEV%j>n- zz>Ud^F}9k{71HI-b{=v-#KWy{pRew-an3T=Q7)Y82WQFP==l%+eykGnm*MmZpIprJJP8)NGHjM-U{zuC^5$qfe0VE8{mBXKsUV3~R0;VIEN-AYp!N+6My&s-uk z{UOkwF;R|z2D-C@ZrDrspolsmMh8fyUy{V(XeUHNbGkY{8g?(sQzT?1{t8z#0<%4d z%G51CCAqm_SMlBD*?kL-SjW-jZ=h-^TYh+DybOW6DE3$;(+N^Z_}fL3w;22_a_seEv=_fgcM1@by0>E&hEK8O=- z5|84$)1{~paX@#SfWtOSr$Gp`u{ecCWc&(UFBru7vCf6kEv4FsX;nOZhsR zl%^5>gj6`Fq$TwE<%&;--m}8Cno1uD^fjQCC#{D1hX^+!;%6JEE-BJ^J1i+!lB7?6{{29Mv)&^I!D@+RB-_r`5NIAa+SEAuI!>3I=*UkFabOl2%_LgPC_EJ} zFqOvVrCPQL=U+4$1%#jPoN_Pj^vD9fHKuC>nVFg@KJ}z#^qoEk&@=69N zlY&2FpWv{YpjeTOHSgp{XN$X@vh(m5>vX-R77QYhvVm!n0Rp^`q?BY z#w~@o%%Zm%8{zpM{=P4)V3G!rmB0-3XBXETDy3~bjqLI05HRc!i_*_ zWNS9yTPLS|oA&Wt67DfyITcnVH)fyv1<-L%2d=*Luox>S=g&yyh0{;IOpMpCTD~`S zV*!enqXMS!i{dm~1zq)yh=}Z1{YO)S=V!yg$X#U&Q2zQzDg)=wkwejY3YWc6K~(IA zPl%sCH`wZd{oPa;uGJeHlBm&gq7V@&-F|)Y%7$hh<$gXELA%%Wi5aPbSDaXc8suFw zS_yM8GPMn6z)licM-lTs=Awb;Tx!L-kyF(b<|H~aoKKZ(?Vy?p7V&|bu}8jYHj4lj3}ouUe7m@|KYQwrBw$_&6Ujo_bf{Em+-JtWZgJv(Db zZo5G}ObXF+cy{S$ifpc`750t+mvc3hY)`&9qQloC#{y?u867^a>RPA_b0sCXSyrf{ z^KXqw*Mk@PD@N}-S%}@2MErZDK?x&z)bdojgQ# z##gDREa6e=_>!3Q}) zHMW0eJ(vpZN(yU}K3Oed2x!p!vD`BkKHAnosHphVev%hFap(#BQ4zj7XU*fs<~lCj z;xI8o4~ihYRh-)k9dzSZ7DB>aWljxhbj-vB>z5ILn-?hvPy3b^7>sMaka+bf7 z(u`3ZSqWeKUICTmyUvg6eq5huAYD+D$cHpj*#{@B`yqtKFYSP7!rH(RrRYbHv*@=p z;B~MwoIzIP|I6Gv1^QZB{ z15PFwWAYO0!qS)qIW&&iKpZy7iC7BKYb6f(Nz6bbK$$`Q9j5jTTj8CI;@bpc;9RrL zj?_QBf_GNbEDh3m9m7-slb4GFGtNg~0SSl(0n}G-G+|lG(9y^mx67Mv$MI(BWT^z2OTnZkF3I5o9)<*XA zoV0D5Zm)^K%Uujw;XDSngAmEj`+x75hNCff+*OaB@-iv?-5#dU{DoGO(DPF>w8Cw& zf@f1%dtt*Q(=s2wJDbG69(N6T{~jxW=BRNp?c=ob!+Nm$Z1$m`%gB(qGH@k$ZK~7- z(Dojzn0o6nFE=~ljMX(UMm7wu%8XTe2UsL*x}AHpHGj+_^z66#!E>^?c-oYo=@Q79 zva`s2hi6$+a%(^eBGZeJA-N4jBNWHqcw#z*5fgf(j!n*%{POe6ox0T~Bubm9OOk>m zMoc!f2|*|;wZN;H&DZB9Ld>c1beD80kwi4Ke|1%RciKyBzOE9=*uqn6B$fcOL>EPQ zqj5!#t-MaB0{d#31@*y>4qE+ey#xL21p#^ZnTyd>C>jPik=bGf+_hZL$&5ae1Cy{Z zmtQt4Yt0o3THfqK;(KnH{GXru6X;yOBCdFfQ0%5-e+q80OCFk);PKOG_;1#g8D_VU zx$62du%qqHw0x)MeGeQv^=N4|8>eu~JB%P>hL4J5ejI^0y7&=P2Sb;3Sp8QDF|#N- zo3uH@3lB!XE>Pdb1{g*T96rxj95CR&@7TDvwEm3TjnH&D2}ws6#R@NoY_9H=G>)&P z_Swhh-l+zWr6waf-bAhlXW^5tigGNLpydH8=SK@z%olcJ!%#*a22AP7TmfS`X4{>t z(J2}UCZ?exl4Ku23i5;gmbJ~t$2aKZZvFCP4BV7JfuLGaN^k#1y7tC%Xy~w?U?Mb& zji$Gc#%HT72sUf9$g$LGFulEI3@CVbQ8X&0Ky3E4liX|t1$97K_HEhiErhf42SOQ= zTbPp<479df#ta5GxA=17t^nCN{>Sm!k3N;m2&c5D@GkE1S>Zojc>#oP?>}QsFY@*E zWF=DntnNen6+==CS2(Ejqpqg^jQiVsh~;(=F(*lv!aT4)ib^5Za14TsSpkk;lC>#v zXj%n=P})-JOUE%06*Q}P)Sj73PdPfM9S0?B{#KVhlSFPh>-mpEv#mB>QJ8Bo4TCl+ zh?-8CmT6W#w`m$s=~%mr%Tm#tqAygaz_^^k&!sq*kdu@93$$w-oF31$x3e*21KRuK z%$dAhzkA87#S#Ow_V0Y+FODzrEW-+LKLIRX(>*~THtPBTa~oKY)d1jd=2xeip*a-| ztd`;H{od%&YF{6nA8Q=JG#U0$(|sqbu9^HU69ve}Xk`-BTcrT`$2`yfkz8Z0 z&e>Hen-W8ps3j_h9qTb@H@mCosZRJ@{OKB*{WbpV`OLvs>w~jPA1(~@RBKz2&L=E| zq1ie!kupH=v1_3+v7;hMmR$O+V5+nWm!kh=6^sy zx`=}ljtv^V`Re3u732TB2ygcNg1B9E-Ju`KE3vU`D7zO&a@lcmBfsl18(kf*BbsM~ z@FT8<{8zbfb3^Ag*@7A%(7Z9dwA4^UwO%5n(2wchLk?DBVlh0g3d* z(rJMz%k+FRsRX=*nfgZVEj}V5yh(9DaiozMrE{wID?&4;Mve9m>1w<7C|t4cc%mvr ze_b_M`CkV`?XmELC40JCy?cEU^SF6A37>h`rqU|k`bxR;04X#Y)uil#P2ZQ#l5vEl zgN5-jnRJZPX`SbFbmza*IGz=fWn>#WfUI-VSN7y_b{AcbeGW@2o~{ReLr^w5zMNL& zNa81(-?uh+Sa4e_hb#wEmLUTCr~N~_Op`B_n57D~vCYj8fHn&(%hx%eDoQa|H$h~n z<-!qM63LVF-jzqcdvdVQ4m0lcst*g=#H4>#`5Lztff)bS!axW@h~ajy6!V3+uP?Jo z1T!nUe;JI!S#letco$U2x_?j4UVFse&Fn&(ivXsa5{hVoOX)ceU$~N$gB}dCgmH}M}f)ZjhKS=1~st+qiK zG`Z57^lihE@ZcGsBF4p=rXulnu}*o`UlD%>1Qio;NPlMWJ!Hs80)@tF($uICdA@RG zk8x^i;YRk64*!`LO3jha=a-?StlT50^g)|o)5L{=4KTvRg>ZM#&{tN=5D@grjcNDF zIGU5~NM`VOxI}<8-F}=Ene*zsi553{1r#Rx$@J6|765`gHI>%Qe7bu9r5z7UuQd$A zF&>Qa;wUszlj+Qm&3+05sd65sUTyg}8~ni)iq7(vM=rRV-oJt3(L3R05t?s6ImPXjdDX zt1TlA6}IEKs#uY|_IZsD>+Sj$cC?#|@Po8mIu&yYr$n;CGw)xSnbfIPr53GcXU3F4 zXUBilX%yfbR!~UlntNWx$RV+|OT(dvH69=V^@yF>UI6Q})S2|Os$(==Y5d;70SnmR zpFac=5+`pc>I)gzuu!l_NTDGipI|4cb#``kK)+L-xoSt^h%^?wt$K2sh(qaPL-zJ` zn=O_gN=r}3+*HcM5#S^31@8&1=Ii4v)Nf4 zO`Oa(Wmw6h6ReFg$_Y{88^^E-!dcp7VfOl9{k{i}<8b^B0ef!!9vsDD60fd71dLvd zKX;x&jbWtOTq6;sq!~n}33Dj$;Vkb9>cYvdq`Pr3GK4*DRjHx8ch&n>Rx$!`b>R?- znMzb?eTPc@$fVV<4`Ur8V5>Sy*&O(@!nRS zx;xjvJ>;eV%os9VpBsR@yo85i>qILMb@tmEXQ*`bgP?B3LjyNP_BBn(Gn#1QUj8p5?kZy+_-<%le z&x_j&RiElxInXbHAYlsak7mBCGBVlJPPjUzYgGhk7ny0SG1Dyu`l@i($G z3*R*FV^A|r(Uo2L5h3oy;X#vYaDldrbQU^;1Dp?c@y;=cH#4m=>?5&SP(2=}re{P*2MKSuN@T=z z-Wbi^*3(mg!=_GNstfuH|3Oh%*MvZ-*dA3iIpcOO@-&WcL*UZ?Bby0!-0Hm zoNHlHtA)xC1&Mtr7f+3%Kc;lvH)dC1)fHJ?}PHB zVBInchKFlLic*5R6&Gg^f#5-bU{H zLt<1C6*f7511_B`l!HTrH(#J>tT8Td{t8j+tmc>k!3LWUnJ%7w1?@#7r^Z~$)d`TKIP|Vey8u&&d z=TGYCFPdzx41oSl<`eS?Z|1h96m60*#r4$2`H#z+;LvDlr~jY`;q)%P=|kL|Bm^9s zLOCUv@B-`E23@ayS{8%7$FIg!d6N|6YT{@yJw38xe3+Ihs$sp9&>_LBj>5+4*Z}mb zyY+L>Haa>UY1=N+PdJmlr2GN|E)wi@lB}vW?5b9gm7*4or=&!W*k?=<0%>4ifP;r8 z`;7o?feJ=0xoSG)sWS4L^S-vsF{xrgFGTDcwQe`n#8g;w1B#@Wk`k)t{TYp#7B#>@ z=IH8zl*AQs%~+A56+e9UlkKD^!j$1o=M$n2s@*sJ`^iCnra|%GE?RHfL@--#MxWE! zs>-3DdqkF|VsTgnU>S6ljaPQ=WfTC=tV+O-oQ$h`1#dSzp4|ZCm5`(}Ddoc7sm!DO zX$Rp`wUCqV5RJ6G&i{Oit6G*Ro8q~dh}h56 z0#v1?|8O}N3M8cQuqtau;z%i1G%%&Ed#m|co0#(QX(L<4S7kj-YN3%>ovSk~=)@#! zb$DYjaSFq$9X|j{q_V=3R}+r*c_F<#txLGP%TcXW`2Pv1ZpC*6?cXjayM7;Cp+`q) zqf?AR-rhW9(r-6_;$n}SrmMUbE(x&7hVw5hAiK1w0FxSai3uPe``=3MC)i0#)pWxNz z?Jzc+d4zC99UuAWmx0y>!j2NLc{-PQxZUu2;A}JbPnuO(gJ}h$rH`vM9W;M(@JP#J zh}(O{82V@5AqGCL+$jFFlq4iTiMKT;{Sy#xQ%9mb8hC}E^!akRF@p=*c2D@DqW*Mm zay56jGiHK?>hD8l`Q6rL)y)LD5Fxe@Pa()eNYpJ!MkD1}P*31Am`9Fd%qf-u(auRm zS|G$l2j?IPDQi$@02ZF>Ryr1)OE47V`aJ8ea+tQdLRYNuy$r*fhO zA2vS*vyX;j2rk#`E{fC{tV<-wr)g5L8{!iZ!u}6Em4sb#y(j(U^t4FQU~q8}e6+l~w2ea#KA@G|C>k%H(K4Lg}UxwL1sDGJu9vEMO$YZfv}6uvt?qIS|Sizdon} z@QhAsf+}lbXabPn$E(xhSxX|UFcs-^_75YTPne``jSfS5L(~4Q7Bl z(^M|MPOPC?dLo5kr68!t&`9_gj-nk4W9mMJjW|ddakQd@?-(AD})m&>Uc=7$ZP!YT2~cQdSk;bADewsq63kx+KV(J>m4Lqb23OaD&Io@&Sq+>;5R zDfWqMhao07ytZMI%e-EA$lS(*0M%`XTFLxSNPf<7N%n9q(!#<*Hi4M&$+S)$rv<@e zex`_{rXK~)bpT%te4rdP5d9}OfYP^oF!IC(@Dc-yqK8hVWfAzv-j&iNql7XzW&7#< zao6PaUWYsuA5{icKHD8%G_)CTm4(rLVuqdP^5w&Nx&LFBfTNICTA)&v=deEx)ok~H z#bE;vx;wq%@^&v)CQCfTm~gs3HrpK`5^XYz)od=O>U#LUOqBVXv(rmPz}H_{OQ2YS zf@l?hglg3H$9aE`8*=ivI}rtnQ$55arc|wvk}K%#dMoL|3!-KlI-!k$SVxoBWwwgo zfMj`L#OGpLlK-GRg}T*r7GWu9S^0%1><)WpHae>FZettz4Lofk8*SM@)V=IaA)!rt z4#pd0qlg7TXdsS3`d(z#f5=QJ3f;HJDE;CM=o=(kpMK(>N4h3p=+y^(C76?mEU#Vsy;Q8@$I0o`} zmz&Djrb7M%z$YpyO2F_4q@<qjrRXt8BoTmlohn_1`pTtOcj|4 zO8y&=b;i@vdNV(@T;UCi)XN+!@?iM*t;W_lF*f93oSvJ`G$dp^{>NoTy=q;uDhk?{ zu2e_tSXv%l5*kbiSx0`MPD=3T?BGkuz0-=Ej)^HJzw3v z8G9J2Ai{VP`;86C69OxwCkz?qB6S5|<;&4f;``@KR|IK~2`rBaWsIDw-CJp?c}17>nBK=JLll*$6wltWn-6O}Y@QOI~-yyWtH zBTIt0xYB{<)R#%P)_ToKjPM4dLH26x{jf}SSyPg^xf>j=LPV+{zA{Zzl%n=_90ncR zz_{tKv#Qb21V2*7zX&*Az8L@M1Y7URqj$X>3ud>j6_Xle%NF#DYXT6WUM`+m&_WgZ z_KtF;+sEC~VM2j^@y&D2fk!lk!R?i=_7Mu6s5nVXeY6=S5iFRu_?Nfd{KK{zp%kd!KT1iqlfm@^ha&{Yl{X zBEf?_87-!lo3ps1qd;n1M97@Z!O{Adl1Pr&#`?@%o*eve$F6=l2QOk(s;i+DrKArZ zZo}W~4%A0ac{;WqhMzo&TTb@E6%W0~ngY5v=>R}E<4;9XB0I#^=xJJIA0R8LOr2YI z`ENMP)X|GKT~Afe zq@vT9uGZo<_Q?@R%m#e-vGp;u`rf@21LF(&=c0XTH(kECqQJYU!wN9HT2 zjBIVAe`Uc`@enxH0VCrACdklQairM9!??!Oz=ZXX(#h zv{SE(I%J1eXTB-I8?!!s@8l4-u&077uWx6Y3u*_x`Aq$L!C6_j1GCE1V=^K5mwH}K zU(F_QB;K_!dl7fQaCu#;=bhm#S&~z1^x=K-_#dEo+$w)wzhO_?>Fjs=bs!_)V(yJ8 zCKgwwq+lLQF(*n96k5;yX9PUd!nu-kdYrrWqQ?}%LM`GrkX7@tKj(pn3vZqq8G%uu z1Qx|72t+5x$b>Y5$z=QLYK*ik^4ReH{C{|Xz7wEv5xn3StkS5XP0__1gGo{zGfxs# z>`KM`rw^|?klax}>T*A=Q4UG`cyq=so2KZ0sN0zA1|`fDZ3^OWw!%pT1cSwn7dFvm zB~|${HCSIjA|73Uz>)_?c5qP~4_=+)0kZ@!N@C6U}QTk*0I=8Vdpn--fx zAGUJ4fP$bC4NFUXWH`x&{NMyS4f;;X4nS+DrVan4BOSO}evL~4v1Ji7^VC34+4s_M zIvNCH#l66$8+F(4m}nrca>M{9;%Y}6i^q96l1kxVV09Id)hv6s#aaOeP}<<0E*S*X zU5JrWm=-u45+f%B^tFi_t zm=Q9jI@sU8nJyP~IJi8W$;p@&RDl_L0T(pG4xBY$%tx{%X=!PQlD$y48K5X)1LeEd zAt*%eHnu|PWm(E#r*QG@u zVXJO}$pu{7vhnUs%-xem73zco;wBL!r|JQl1d7w z%y#$JA!RwS-#8#0RE*4MU||&c@{ipWjB?3m$4b67;U8?p<$W2Dk~s86kEk0D%79 z{rPmU2SH(40{*tWITE<&lu&}S&;EEJTR)DcMC?D?pUm6P8~mMk*6ZtKXtlu`NS14- zZ>S7MWnb~rdPw_k;V6EeYSt@b`ET`%CfKdf$^$fYnmi~fp9@Ao{H5*89tq~YeQsd+LYRHuVV)c^Qs;AJhO*{SX9s>yIG9a@g!pfO|9+5 zgG-ltUks|B3xeh+Xk1PtR57Zni>qLKSjPOpbH?q(%AI~BFT**q`! zF!%1%EHx>MBt!W#;dsgv8WG48_qMVr;Mufp@)6L$0|(B;vV!(s6C!llB9j;DRHQjvf39W5nq9j zmbCttKBnu+>flH7m7^0MIKP~ehzAM1!Rf5^nHHzd|HxisW0)ojFnEHG$2p)7Wbu=U z1V`;H$J3LDw7TOhAY;WBq{U$DbD&$+FxxR8jz#bgPc5!I;z@9lzD~kaBN}i022Wf( zYkw9`MaH(?`y#;8+$PESpgp-l#N15C)9i+F6EJ$Jq2^b2X8l^-frKIfC-d<|;WriI zR0%$DGU?XpIa4ajOhxpKj1$LA6)Z>saemcXZGqA5#52;F^m1n`iAuAvUux1z*k2cD zqJTW0t$bH4sf!fbMoC*py{kZLtB{Kbo0ouqFxVddWb_^j}yw+2LNuxOz9qG)F7R{Raa$6&e}@TXp<& zmc**e^g1VO^sg@JII_%HJPo+8^#$gH6>a53kI!L02L`~*%o2%_t_qF<_kgde+=QaM z4M+f^ZlMBxakHVB`vTk~CJeYP0K)NELe&ZV-|nCJ=jc^g=sPL*h#Y4h3Bt*2uC=n6 zaNMJj<7UuPR#sc-!hgPDZasg+rm1+M59?8=Ytz){r6HKnkcu?KVI_g(ZEH6I%|OF* z=B20w$6w;fB`yqfCo={0^1b_V5zUn;0Kz=eD^o>`;isF!5}C@>b0~0bv3jY83Thjg zO38KHtk&TMl*f#@%-y31cL}cL&J>2!+UTF*BzM0jx;P+3zRYVdfb^9H!`)HO&SOCG zg-6;Do{KiLi8K|oJ7B0+q%$sis+8mhfup<{-kXF$F!LtA^ty6`m39MB{1liMDu8jm zaQ9G|e@7`_HTZn3&17EEY)6V}Rj0#4WNg0Hwzj@iJ^Mi<;c9GGG=Zu^I{{hTSwUvS zV)F??{cUTqkX)4kROfi6%IEsJH+(<1PsfClH+5o4fP$J4sOR-DL{;>~88=2L<*D!%&-zqZ*(5TY+x`fS(ZJ^?c{x>#HT=%x z(@~O;yK_ZEj9_QJc-W0Q4zDIdH#g~+niub`<8>FCuPGS5+Mz1J67bUCsV?8(_!mW# z3moAaEhTc+z|ZKG@ALb@i0n8@zrI;Of)t(7Fs5e-#REzip*QyhboSaxk-Uu)<=EqCZ7rbeL`wZc5DISFW8Y*mnv21MZh;Ru=-l8S`r#*Qv9N5 z1^1^+XGxw##ah32a;Q!q&d37Ro4bl4if^T-1p$%?w)}Ws4JLxg@oING_Dj?_aR@ww zi`Y7e=?Gx#fja4)J4~5(DAR~neS2{v9sc%NSZ*1N(&cHtEn##5{j12LU@RY?RI@XA zU*~{lf)hWmUZ_-yrW090aA=wNLRRMS{EvSPfyH3`N4`p$!-c8n?bgaUri43uJeOgq zlybXhCay)abHjc|rI|}UM?XKj&;Sv07=ukts>(8xp&72CkH`y{< zu3*pZ(ghLqxr(lFxU&2broq5S5O*c#HbXtOGrcGCpWASN*qy1+lwwIKG*!*0OJ8R5 z{z{3GAUu%#1>&p4MG|e4B(|hn7Qxi8L_cx>fr?ou344vd^e7?kydG^^H0|lu>fKj~ z{vVbkxG}=s)IWaAl~v6)tJeY;b4|KdMHUcD2W;RLLpIfne`oLV38FCuCY+&3lP>-g zkaH4f`{#@CyEhXh*-L38poTS=`+oa-vj!9GZ?@>r850o#V8kQs#*BPpm8;r%spF8O)|AN!J>-dVULR&VQ5g)v+xHlz zB2SmeR%87_~bE{ zaKCWEzvOZ8BRUD#1+?Mm6am>Pm(MPQz8h~$)U(F(VV}2W85*LKpwxtJMZcg2>`=wk?;( z>6B8^V`0Ffn(Io^?cPO2y#TTs@XN`*QG2-)-L1&Ng#rb)54#&ZUdkg(c8g;x(_;)~ z57$SuIpGP}{18Fm_)hcYOII&-e>9s!1ujRX^42fUce3bnD7kLg*LAJKe}3_JNWJ6z za}k+06HswPtnxilO8GAALT)Gfc9N3i(J)}R57HN=i;%VN!2{Nw-hE!{3~x_aP8<7 zDSHGESXBV1O5{W|P<_$W&P!`g!zBay5tMy0fXFKKt^#(U#EKB{0ct|iLTunj=pRzq zC_nvPq0C7q%TS0BbfJM!KVQfynFC57EyP2e5fd`Avx~%fQdrY0(U;P{iybh$>gnt~pDg6aneb4T^T3IqK$K;ByJ2b#nyu~p>UD7;UVzYY zyX$`EpjQiLNHvQx*1D2%A}}CA>30G!#xslw$H;#)|Y_J&Sfzmj89!0irH~VjGl_7_l+hHM?1U+)_5-vN0$qm{!&z^ zU(~Eb#@Ipd{U}T{%y?PaVj^{+-rGY%F2@tXW_5Y{W?E-wp^ALIvIS!#_A?M$<${WN zhhHT55yPP4*(B(7YXPb@%M(-pUG%x7tY(kv2%v&SW1?Y=Ew(9^E>WMMjdlBc3HUv4 zD1?`Je8Ie8)A3 zZ_L;sQ}W0u%#ChVb-g4DdXJMixXxGwY1bA;RM~bremks7RUprn<@6YYcwW-8X>g@dRr~lp= z`-7(Y)`i4W>5(o{$Q49l=GgPOl#R!avrsM_Uw<&o&~P_cU>s+aqvZ{BhR!MFJGh=F z$NqeyV-XU{c_Xp=aoz=pTcU^QTQfP(y2+Dp9be*YRE>pVgbFiMYOe&SC?WowZgl>C zM15mirBT23gvqvMvTfV8t;yD8+t}H*n{3;jYHG6GR8zh8JkL4r`P8r4wLjczueJUc zjmXU#ktqUV`npV^yFm)F+wV$VMN^*%XwLv=)w8Q}c`*Y615)tod)5^axZ_Vfn5D@N z1%tMGJj2=cps)w}xq=$RAMekfmMb%jjx;!@vRy)%tKZj_GQsK?3@lLG3m|CJm`uQX z@4rX}9F#8CD3wIPy1Wr5smyFy|G*{`@FYz`0J|IVXt+EVPN(O zK0O21wT7s`2POO}^*(sC-IW;L;6k^~zB&l#~mA5b!DL6%zKw3V$S9rC0(Sw2dU(2=n zVHga`v`@fup#2}rNh{?udtti+sAH{emJ-&Gy>9F<`#3#G_2Xa~AXQcRI*RpiiYaKEzXG6ssCoS|w!x3uveW0t5 z*JEb{r=nL=vX#Z`Vw>v^{?papXAEOAkv)V#qNHml9^1+8h5c7Qk7D}zgi6ixWxa5V zy>BKNd;10lAw&hD6H?7929^?Y1TTul7a5Bb>+mekNE>Q$m}%kM*~uy2GCAT3OtlTx z?9;SlT&GLfLB%B)dWHm|qh<27TeYRX6T0hW1ERT#Km9B`J79KO`Z9RgyKVe?g>59o z>Sr4>?Za-;cW{?2ovkCQA*B<==)?VmWZDiMXFV$WZ3Q#%;cV5}$uz6-)xS6pm*wmp z+>yQSuBLKL?puEyue>}skezQc1Y2<-T4BbD7pfZ!C4McTI;>fbH78<2J3GQ5#X?5D zPH-%U!bX;tC8t&q;z!)j2q1#^b6o#$>LQs07b#VA!8#CvUd-TMJ0oDmd)qy;($A}2 z5lgzyFv(xZ-MU>bI5`6MN-lSLKl&$RoMp;r<^Qcy2_GLkTRZ>$CJR<((-G-rOXFZ_ zRkG$2m!nJ5nQYdz&Q?KzXEW?ty^Ij6MTNfc3L08*ZYL8iD8!9$Vo{yGnHjX69^LDg zmXJNaiw)WPi%w{dOP>+8`ESmDj#bY$UU6RCy`<2;qk+!Xwz0NeAoGJj#HPjx zvJyuIVAXMY8u#%@!FOQB^^N+rShgD69ralwjyU9D1yy9>;w0CKvhgZ^JQdrj4zv#skXs_@qmHMPI1|1iq?LkjYNEEX~X9QskuEe~r&8 zW+K+@4Oo>EG`@*{#9^uDaKH2%3$d>tC?kr+VM)}i?HdTnTe{@``Q`onol5sdwcg}% zHC(=Oh*oeA z#cOswWm#lD;>`r;==yOxXl;!fq5OEKmpcq0@vmiUj8B-~+vDE*+ll3pCAWykNTJQD zAYfyGX|`&DMMXuQtKW4N6PF)Kro1^`ccJV|-H64nyM1fzO2BY62t~23;Zs@f3c-P2 zax#HRNc?PeU}=t{<1K{?5%B(n4f}l>4s~cwryL|8l~@8)P+@iP>sFBQlsA*IGir4K zk=QdmX3{hsSal84Uxm zAq}ohp+1=?#l7{e;w+hLRzdij_Vp}TPI;2IY~X4+aXgpk`}g(6lfJgvM+0kcc}QJD zLvqqo$wP>DIvf*cd5iq@jeDD}3qKzTYx~fCm_k?G9u8?&zIf3xEGDi#S%`wq_t;^^ z;A+RWrz&y7oS4m7Jp}Cbw|!l~g^j#oemIk&aNd|HgM+XE{3@U@)!bLeR)eih4-4sX zK6w3-FP4sApg5H8PUmaPa(N~U<}4Mb2Bez@FVjz2+(F{)jS-4tW(t_a$f7e?gHX#N zv-Zo(#@3MF3ayJq&Cd=u@G!yc+>zynim7dA!GIIV^tew=*j+|P2)5q!a^*v(o~E^}zVu;h&kY~~XQ9zL zi9a|Ug)*t%v8}jDOauX45?e3x8l}x(atN}6Khu$o=GuUBIk~m*`U+TX1Mv-wUx90( zb_m-aJ#CfhsbSHt5zH=!(m#9Nuq5LU`T?DUv4i2~WXdBJ=EE8O=wH7Ya99r=njH+W zC)1#bsVwQjkhbC#1*~G!tH{Vn8}mb9OvH+0%>A~+mv!*hPJ!eswlzE+r)Xern`S|Q z2v$h^?1tKGR-u!Sk&q-v-e=ZpZK8swa9PIG*8An#tnI|t*GqjUJnr1SVb+UV?fQii z{z%}qjs4y);2;cz&NOuM>{SLl7x+rbu>dFT7$U3y93}VkjDhn6d3#gq@aQ>_U zD@NpjEaM2%cjMYRvVW2&cb(EqF~Ha>3Ywt!BV{h_x1+cXOIdcK zZ5=It_yqzCyQ#M~%H_RIr~~i4Y@@KU29|F#XK>88h54G5x6Lb0c+{N(p^J;~I;x!m zGTXW==?n^ZXD6}-jTxRK-8#UW%36a!JSi88rO+>bf9d$hkbf19tnIPWbf$rM1d?AB?kHM?Ayh}v2UKZ4!Ok{2;My6|_fGrMsHLF{%e`bF?pA~ERHofNY z<>c4CeqGn93lHw$;UNlE*JqeDyWf{|%Oh(|SE%3o{c}Knf3{@=>|pa=XX{wn4U(8J z`^u2Ym*%&4V}NzK_%)mExQX9fmh%+EqYf#tb9A`pzyQIxQBotMK{&&`48W}q#wH)A zp4sZeu-*9@IvmaTYbpcP(XsrW6TAL{LLR~NHwzBmcR|44AL4npVRAG>yVk}`K(DJY z+-Sa)z74o^=PfsXAoYCo)WDdGRkt@jpaGlUcWJn5DPNSw;>GVkj?`F_8mL48n}|TC z{h@D{Qmc8Nq6f!7()xzmPln6Hl=Ws6Dc;AIs!-wSg)Wl(_Og}{v{8}tJ}^KIy1CvJ zU0X}=J=XPkssWpw7F~v2sIXOWM&iv;-oTmFA3)^{edJ!?cG)eN)pQ z5YDaUo4s)pkbw2ST7cDgD}GSi-$o+QN^fCP8M%pXro`|HFRI!_jdAaTLG_;Uw6@Q8 z#HMvV{4J=PN4sgJ4UT>;R^wpIwiI&RG3i;bTpk0O6JjbW;f1pm=Mf<^cO6fTtE!QK z85y_)nSu#6?WceJ!8U_pgdYu%^a}oDWF7D8RZrGNCR`s~wMV6CxI1zEs-ams55hUa#qo^XZR|`O?rFQ2 zpOFXQgkC3M{7QWJWFnW%m1rdlb3&4U*4tE6BvbbLGfeVEt4fgQ(#y;j+l)_#H_41B zu03B=ACK@rUqbZb_PLYhj*3H_ZmZdOjRiUkwc3)C=CcW26oT1^i7TJuqZ>2c!NG8W zfaBrnle!cNv0Dl$FWmhybgD>a%RW!(2-;eUQlZp30o=Hy3Lg)1c|i zD^n$Z-uqL79N(R!l1je*5$0r-b@nJab$HSG2KB7PKfVp5i_?yG{DVoZXjR1$k)DHC zl=a@;Hf-e~pV&*fyK-1>`AppSyW1GoY)r|4I_{hRyv6KFJi)6{` zQPxbz;^@)Aa|6ef-&e4s+12En$r?5BYOWz%ur|b1Vj3^Xv{r@=?henSO|J)y{Lh<| z5M|&d5IsmeMO^;Z7T9vQ)rS2FfMxZH27@F7$sFacFNRWtvLXbWR0zP3No;kHNO;x- zoL{t?k~YZyWF#_S$MD1z1oIoxod|J7cMg9wJ&=AsUn3qZS+}KDL-4hIPvpI_daC-(@&TSY3Gb9qQ`LK0xx(8 zS<=EwXdQMJ4cM8Szkey&9KQlzmpoi`&lh{Fa*!b=BNID$J2jZ=aI>L%JrM0F&b5kE z@(k_cb-BHVpL*Y=altG&v)@t}C~3M#r>aprx?AgAgvjApWAVV2Y*oc!=|kF)a~KE{ z$HOJNec2RwHYvZK!m6cgIF|H=`ld`u4{|8w42y1ZCX$-(*{%K#@3J$;i;sa82sCVK zd?g!#Q#Ow+FSeW|Haz4S0tLk4TG4zaF3($9B3MC&wM0u-{vk)5o^`i_ZQ?|yoj5Hs z^UiHV`^3vqcX59lX*`u^@#HT3T+P5a&N~Pl#l?>iRZv!D(V!>{JYip0wXXrd#z9a? z(yau1&-ODYCz42lxVnEd^Bg{q^=iAMAkkMeg?jLVSrw*0^EELeL%YrUHxiB7uT34N zOdKZ{FxmG}>!%W0PO1eUSQcDsy;TAi^LS&JIdAHTTPg-Aw1wbIOTXS<#jHYxazZSe zGPAv>C4UZvqKh&m-F9soYPDA1lpLulZRD<0!U!A;+u&=Gn1F+``8VrNrl!(-$Kmgn z!2)YQ#smbb)L)k=DRhL>IzD5JD2wg=iRoeK+7)p#H9Cbn@9`n9_^^$w^JuM--avwO{lcfJNFPO!9c)FMNsQ|mZp!FEioAls0BVGo8v9LQIE zEBPhr<%Oi8@@%vl+UE#m>9|4TNyux}LB5&x`1pv!yGP<6H9o%XSnrW?x|z^I1ACn` zM(I0x?EIT8c>kmz`=+W0J+!j&ptok8O zgz2P_J?t`MZ;WB^I+aOAI{<>C<=k)-Ps3-;M;;@FO8H5Y12@&;N@`ZGr5~%#pgX9c zf!X_U{|1ngo0pr8K0ln({&_gUS}>DN`~k+@07wl7)^DT}t?|b;1=EU5a0df$@X$wB zBt4@WuWkL~Kp9G~VyuZ?0Xhu=tOG+9JSWRi-Fey@1f*II@!e6d5t zBCZA#xijeYYS9ozFkwo>k4$h87ZJhI%dQv_y4~A}kTyDCEdcuhsA)W{xcvTb<5^j0 zPgy@coVl)b<__J68pH&O#D?fgl8saJk463VI%+mu7&*)ggMF3j3PxZAcF1~)={=$ zTS;0<$lkF;RY0Pwrj5^M9|N?F1#F$KH#yn;QSG)c9V!ER^j|V!Zy&-+(4-Lk(Qu+2 z5J!(4K_Ify@R1g^Yge)d#ViFMG{hG=L>-ALH1R56_b0N8p&R{nr0`hnVG>tkYCU_gtg+Y!fNHX{vzd&SzQjJTz=+96E9(=fWK2S8S1xqG zgOD&oCqo*$n@pzd^m-EmrftX%WIZk^0G}3mc=zt14k|=AG;28Cs^wvHr=K!sJyqS8{T~oob+9c;}ZusF;?)-Eg}b zoT|eEK)~1ZH#c;jM=N#I` zT&Qckx#lzz53GfRgc5bICPzd7KxfswYgXdr)z<9jc+G($ScQq14np)c5!({dM9RO3 z{&B^dL&8S}>bw^*;r$yru%{plx#xe(_YQU}9dB{4u!yWT4y-i%A0{(5&=Elth80wP zAZZC_V(Ez^{>TN+d<<#*{`Z;7=MR&{56>X1A42q1B=|uqJUnO+ay?q;rXw-^A+YFu zetmzdTSm`@f}`+ zv1=qc?PRTf0v8c~KWYN)&+hys-H#d%P--?+^i7qf)$tN-!1@XWg*mgvM4R#hllh3b z?dA(H z6$LWTEYUuOp9jpfhZB*&vt9xCv1Sx8dci$YAQU17aPy7=jZ&yU)6PLT*7WZP6KQE^ zN-AIj*@)#0#0DB|g389)6(AT?P-QP34cZj%dQp&6St0t9^=DLCR699?6d-PH)*W5k zl5$Bl*?FS2Hh^N+>lCZ+ZLax^nbN(Rr_-#<04-aH-K9{%SXU#Zbe7g#6Y@3^tC zQ;&ps5UoZy4Od9v=7hX7XgrSTat^f;8RM8y0i7m%W*1UvN(6oWej;>&0#ZW3FE9}& zjUm8}iniD&3R2f*vwCJ6V01SdC|OFaZ42E=-5CHS#I-rG>ddJJPxy?;c|`-FTdWCc zmIfVwISY)fssRvOKVlM%6_m8tE(XRkjxF=Ywlhs0)3skZL0+&!1WKcscdh1}iAkBU zgokXCt>;(U(n87pNX^EV4DnyfjAnZzV-l5H<8H|!Cz8f6hn7-$^U8;aXldaE1O$TO zB#L48_J4hHx%*3*xsQc`;e{&^X11=Q^ZP2zKW^0YWWo&S9Do55(8XHqx0w9QQZQ1; z&Qwhdl?1=q4}~coASUaHnj#>^hm?@}Z<8H*pX!m1d_!y0BR^ELmO=9Ay03$bZ_)!D zS+dzX^DKghh3dI?eQt9qlrv$%eQjjpR9mUF7gZNSMA_= zEf3qn#W?C4>DjU6PsAERHhHYyAIe*sL(ZO~)lyoSFq*T-p`;ww%sGV7p!aQwD>VFH zYptc^d9OH7zA8PZl0_8*W$GuX5Cduv20{c(L`Y)y)Zils^uj>N?;G|H3$vv|7 z_Ql2f`6d8j5`x2R*|poW?odv1F2Q_Z_hjM*c$Ij z1U1FMIK!xm1Lw&rvH(WFI&dne3(33`pYh`gMHsuzaT5*D$X zL`gtH^UKiYNFt~8sPw!4PQc;77zh&;%5!^hSZVVU!bPwOZU|Sre=+CMc z@Mw$?1td^{6&z=>kK^!`L5tS##QQq_W+Em~di=-*OhaeQ0$PY)rNF&3N6Ai0dcx;i zrJI-ROT-(hu_HbG1jr1yb{9-#)hka*Lo~-!K-L}9yClK`c}M(*^ss?oW}~Mkxv~%+ zCO$ZL>{Q`(z1CBZ6oM!Ik?msl$2yom61Y-ZbbE(CI3AS~D>H{tihFIG|ItiNKEM2x zO*}&e&g%z{AEE(bXzScKyLM%1aWRZ_fKsD`0-fh)suq4IJHGg45(+=ez)?jN<)$!d zfKdt=^xo_nJEpGMO>6m7%7y$)0^&}>5FZfl`&BHRT<;Q1t!N=G#pJeDj)HKki>}YB zsgCy*&4!%lT*sBK$r$nG>e@e_1Od2q?E>6Tdha#VKgdreZ*Py4*~b;;{cRJUy%PRA zFYN{M6S!C2473yhui0l+>XBkpz}*q|?1ISt4T~BNsfp?R?92P}s?tkOLJfTxR4XE_H6%LVsK|Lq_^wxtaEY zrMj-jcEj}Ve4@s!$M1&i{x)30kH2xljg!T>_UEHQxuBa8- zI5A(dzw=x}(x!63ZoH1W809A)uxFkA2B?zyhKBylRtILcJ!oO03L@Uz#ZOKizSOHK z>~)xy!Y?#Y-qJ_A_wCqIk-z&G6vf2gbSsmfU;;J7pMANU_QbT(bLbP?>{J%KZMXdh zlPTGZUL*VPcV>=mrte3}m8UT@Yln++9L!^~2>RD>)M#!WmPT-vdMU6N+arC$bNfo8 zV6kRe(>9uEbg`W|h*A1RMnbeZ7<7H10VdLD&cYqRj2K?abEQSi1O)&=BYohk#Hh}6 z=a0w+I(_7+wRClX)VMT9N5{UQd5@AQaC=vCOT`v15>05q9Q225qoEMl@@7~U;r>h=Gr2}JyTz=mynHAS1w#?*IipJ` z?@ktplFMf^tq>C`6TYzMl8~AUVOXa}|5^TpI?h{ah>eW|u7gZODqlMOD}TLT33Hto zRqGJZsx!O8&xo6Pms!)lf6ovRP94G>$~Ywe70)4kTU==@eZ5!4zL+3Cf7VI!KN3+W z3cx^(t^z63xk|rEAXOD2@VVf}I5FrUg=#?a6RJ6@su#LLlH z;B0RCM;|6QgF5d<#PoEXF_Af&r`4a9Dz)nJov1r@8NaGAq-M3euy3pI&b-XLXiqN~~{rg#>klJ@z|2v3Y(k zku}(FVQ9h#`r5eTTma$;e?|-puP}wFgat4|M7mW#^_=nHR0cq{FyXCqSEQAYTR>Er z0#Mdky)gt(tW|sfbGq{Twl?kT%*{(%=T>w5X84Bz5FYvswuVnu9s2ceWS4zS&)<2f zMm6#;a0}x3o>v>z6ss!g9Em$`tEAQIj>rv8xLR-Cvdwob{eqOa#ykC#YYoGQ7Bk&L zzY_bWNSZum@o2(ja(N+QT~4CRfNBLuPWzum&7$uCC^NEcQ=XYFkF1US2B)yDO7{;gZemV#Xe=C@7S@AqV%g^xCiz9CA( z!jNBWf0-TZ(e|W{aJuj!ctJoI>OQ_C`sH*#*6JGVgbjq74&gaVP6{!YIv zbeBHMjb>_~u#w3(s$K0#B!f4;@~zza3m8}PELVZSrC)7!7!uOIkv5L?>hAY_8y_PT zTM%e%oOYJEz-I5r_HfXU=>BsjQ63n!qoklVx5M*9bLw*8GvBf^qAq?zS71M_g zXkQ$=7VV~Q2vaz$3y{GtRsN@K#@_gPo$j&Z*|&7+O)dc(o@_!G7j(`;>3pPUH98tb zk+&W@9O}HrE4D|sR}&Kx!hPh%s|Y4P{&<2W)Py)Zl_R5)Ky$j!i0e12gKK z#kZQlA(BUH3~gzo8_dEEjE8=&9TQR^=EpDrQt{2s$TuTt%ZRa}_&$YiHx+*KkLm?m z^6QRz2uu250Nh=xH>K-c5`lx49W~>BKDIHD1qYWyqmig{>oE7{>*zH(SFj7+71;wN zCFpW;f66v^cndy|PDuW|z81-4umnZ&k&CNoGR9xZFZr7O{+Z6zED$OE`;;~6 zV_Wd&?twNgHpGrm-!+lzl}WV66^n9D7qO{D3Ns#0k7SFYabjpP+AY>Ec zzmjG=F{jg0!9^w%fPCu|5i!~EwaIUEB$@A)RP-7Agg}glf+qz)3mf0}<5bsqp1wMw z8phcK{18yD2Ndn9ky=_NE&i9e)H50%D9=2lN75$KPwF}T56(x-NqTo$r2$P_cE}x7r2!FxQ z&MNk70@`vGvTgPce%XFx!JWQ6!V6}<33DITZq!cT5GO2FRllS4ZCK@~PD zaHcRn)F7yb$-o{$_ealVUmNB@Hm#0-Hfhk2(rX9OB`mILuXI^GI?f40=8 zj9T4lnk?+mp}B#D=y(*;{6$nHfP@J0JHdU?Zmp5~?$B4CMx|Mso$nIVG2lIGSX`KK z*IQ5L5Yg@5(bO2Vv_$vl(e14p<+HZzu1Tkdc>Gg-OUltC9;_%uE~uKb-QHzDCOGUu`o0! z7KU6KOO5VgGiG&_h&9>%yGKPMr1Xxo&vpiR^?LZ4=a28Q9pFBD2tJlKnkGU}Xx!~WF9IV-_ zWrXl}f#ILetEiYiVZ*{Ev>9Bj3DCa6nvz1KXUfoNSIkEqjnq`ARPtB!AfNxHEKd`@ zf7JKSVC94^SRl5q6`P$UyRJlpm7j?JG~KDMDM;}1qJIK+#jYb7Ynpz((p-Eh(*s2Q zQ?EUc#)9i(kmD1S2!e+F&QKC*~YO!!+XokBuI@b?Ol+dr&43%4-e+TFN z(KfKy-Pkxf{+3ObU6EK)XZxEj8`cp>JeKU5U4HAC|DIsIjf3+S3Lw(@S4MDFi_q&m z?PyCsl3SgKs?0rmeCbDviMKvAM56w|Ap!bCiAIWxib#36=7%M)8Z_$+%v0AI<^N|T z04qia;e{9#I}hw-w7oen$S``i{;bJGpq?4^v(E9p`2Sxq2$PKN&!}QXz?KQjGa>a1 zB05Ou_IGN^*urT8AkYJttB6*=%%AWU64_Xagmhm-Ljj48f+IkIF^cR- z%+8Jvu$Tj->@(@?S9p~hnM{&s1*+dq^Kc~ljnN$CsRCztB}`2DyzXIyg@vD8=`H}b)q*@&XYT7|2NniSe)mUS$tK1NUM1HZP5I{*>30VD}%PWzk z6>O%O-~vdfCT7$=l9V%m(Y*IH=tw;~`4Z7@r}nZd*DRuMEoOLF{T?z>0y8xC=rd9x(D*0OwPc78OjQw8 ziOXdR$DAMDgUPtOb4LJ)AC8Mi^5d}+9EW}PC>!xV1Z(ey)Lu+q)rAG2k8_z(FsO%sE1GkImDKH+z_b1{{RLE`_5 zs~W|o54V6}bzQyl7Y|jL9gr7LmxmX^mw4afr^qzQ$xZwkC|Ql6KJ-|?-gM_PlWQ9P zjn5QqxGom{cm~kmDXmn~==UWH`NE_I*zE__!Yj&MnlS;Ts0q*}jI&MXZ&el)mI3+!phNI+ubLQ7PliAyBPkzM@U@Py3izQ=E7#`L4wCe-w!r>`up+@7~e<{XpTGyy6iJRBOr z(X~dIM6nv801d)KY|JGB7S?+*+ejw)O9T`>FE8|WE;4Tr8#1WT4O5y|Hs(5&Niw)0TuR6)tsUSokX9`i(b_Ac!N|k*5!I92ff=avd{9bmJE|_MR1j^119jj6%YDHU@Kp+6WfayZZ!U;?w z05c~F6PVElDy9wp^H>4sdRGCEGm;?uSOejJ(Mtp*L7`!*nN^&g4cCpY?xDaPD2tsu z_Tr?@P6wYwEQ*(_RiIJC%mmbN5)MT~ul7K}C_gv=c8SNT)YPyk`Jf>*#jiJsBYkCy zo+Cy$Z=UZ-Nyqp%GK!n++-a) z3t#Zl5FHekAvKnB3}5a2$_=JdBEO?`dQK7|HvmHTZ;Lc)JR+}jTy!GV<`dc|p*_*93<1*RjhY3VOx*z+NeG?h8#r2ndot>F zmnW$ta>;i(P1tlIl)bb(o%)4uCbdeW5;J$$Co#+t=kPS5cr;ox1mU5Y>1rF&UKH@o+FP$yZfCXs$BZU3^QXqUB6C(Ijz16A0#8b%8C_6rb^{vYDydpfBlU0WAHhVYIIvu1yX-nQpjh9 zmhb!1g>)rUSKsVcy8!`sxHXXO(BeW57OmHsZ5p&&t*?3knrtDE$sP|8U zmd$K0me$@8$xAM&OiToeiG8jPF~}n~emGsezF)F0tQ_Y$*b?QTa5RE3K+lA;J>SE^OGOT2OSte4chsDe*mejT+i1rc~RXop7(a?ebF|+CW`Rnsn z=_^upkJY~$ghOU{e?4IU^@-5xj5;d83l?ekav;cD8;~OO$u!l5CT)ij6KpA%{5^h2 z=lUVwy@D(#$@+vrV?#n8|4(9OAIfTqXW67|^%>L+1I9l=r->dN@!8|a0F9(>sL^RDm`Fqn1wwV(mDk5R?1_X{IdEIZvK`M|?P>q}JSKEj$A0oAEl{2x;aBX6X(3#X z&|p5l#MRvksK$|-28;j2K6Yv%!|!AJd}3$Pj}eV=q3urCpS?C-dbq?`*95PmW%xn`uLVf&@) z;$PNORXU|z8sL4o!&>~d{SAUH@~*>iH|P?|kRSsG43SjGZG3xs+nHY7^mn7yLOw0r z^QoL_qKE(>187 zP2ir^k4=2W5QEk-mKHt+;6|HIJxkE_zg3`IN80f zv2FQ(|3e4z*gN8$$uIXQos%7HzUXkbwB60rX*gPTpMH||hnjjZ7>SyIaNHQd5PzM0E(W2%(Y)X)^S=FKRD=C>1SHpv2JNFXtJS9SqB(TZB^ ze8r=pH#&Fz-rE4oH}~_vkYM9CEcQ{jYVDiCy3~rR$d?LlC-9S1kt@gl+2i|0k;dw8bF}-^wNgP!C zk#M%jpeQxf7o+X47P(!iUbS{Dd)jpmRM^}^p(a zqNt{dqlM0c6)v`679Pe`mP^RzAKV5zb3z!)W@5~cJ}*~g=6^$ERjaZNI>1y}#`sqnhMh0$$VG_+uXHNP#Q~qInygW7*al6Mix&mDgCMvhGv8OmK zFds+*1;^ipYe#~>^ryT1R{AutIZQB2t zB7h6!o2~3p`ONCy{2lZ+DDl3D3AoG4OPsk^9EbGA)KRvXxA5G6i42`iHL>3kXtL^! zay2?nFkeSpC5NLV);d3!Gua!&?!KMEuhB$Ua@kavLoaeWgAO2g z3DIOuP$Og^F#=Or?;-Gzrn8L+^4&nMKv-qGn0{}k%h|?ayV0p z5|)lPV2E~fPpT^uMkbpM0*s*RCsx+hH2-5r&2^8cbSZ&MPUkN{=%dp<08u6$jv~Vs z-3(uM$hjuU$U?=!^zU}(O3BWeh~%60mQPj<_Buv}po6KZ`Z-ILi0XH^8dH9}tN_xf zaQ}}t&9)&Tc6@E^fV3D1G2tVrd;dncw*&}x=h}+P&w-LvoEpOb!D?h}J@J@JQ&K8S zJj?94aqw}roNkR!pEM$K1(xRcW9Z)-$$Df6Ae@FACG?wDzgNv$nf&cp5sod&PS`x3s3Ejq)v)O` zTd?eJgn2LmlQPjkOP(ilD}f5ZIGzyVMgamG<}_F2ZU!%H8hh!(FpjACPf0>C`nuEK zDQ{C8Day=54e8Zqp+khfns-X>U^B6@(yC0jD_`)4r(CqdTQg6Cflq`sLs`a{g}&^H zQbRF0l0!hg*#69b_*P0pi9Dd={ zDnohjctp|sPu$R+ZHW=q{o10CL7$<*NlEV@Obsjn15*j=St~a)*fLP+NkTyZb$7&F z;J*`QyRn3P!JhIG&}beq%I~W|g8oDncBHt&k0upiRp%E_=55a{57_ZFUW7_yy`Kd8 z3(1+++BQDh@xj?|R?T=(cWP)?Y(5E^v;0UYbjI^6v6mxo{V=WGbj@p^8)Hbz)|9&b z(YUqq{mIaQqw5*o!Dzj56EMktarxr(2=s9Z)WBLu($eXB;%{=a0U7}5K)s-lz5Mbe zyX!FwC=;qz`3kz8y(1GyS8i}}c1oIxJDSVxVoo9nCuo^-!xm+AP@#h)FzD=1NiP6PX!@ zIw>kD9k2PwE=`nEzL6U9b zk!splb;b<2N3U0qjF-67rGA>G}b(x5cbAt0$VNC}d{+4t}NJnO8p z)_HmRinZO}*)!LC=9)qDKL^~9ZBy0qV!!R)Mx&7mk-VOB)%cwh!xM#pPN^J1Nfv@f z?d39D6%BqC2EfwcZ?sq?u8Zeq;x%(e9N(&5d(ySA5eZ$Q%B6>4de1vX#m+=1uPJ0adYFe*?k{5 z?_ZJeV5KWkl%Ftf&qdAVN;>u`Ej9mn+56bo%(*Y&H_R`WE99Gg6!EW92HI=aVd$9r z$5PLh#-h?{b9f0x@f35>w`cF|3oVqfmDY01hA_Fq?&HNQ+(V8FOvq^I$6@`Pj%|KS ztSz&9C&kl-9{${~N?SaU8CDiVe1A!46uRSp+WD(S26e8pq>j6S?pEj8z(TwIEmlmL z1MGH^NKbwA3AT*!km3*m|?8WmxUtWHGqM7k*fP53yjKOJ)NN4)ZT<-h|P9A5T9f*oa@B5Xa_kP<{F2 zO_;Xuxs(6$Ov968*hQ$bPuwuxw9KhFe%&2d(<`^z>vX2qw4Q+hAy)!uCtaW1FNZTH zKPN9ySGJN@m~BGbkE~-aOHNw)Yv#5Q(9Zsf%Skb!5Msvwa`tOZ$C0y>fjc!%%z)*C zV-_1@0wVH4SF8dEFW`Jh-C)Jhf0-HjyPTQA4k7HuzCuJ)6QwGRB}*)?eM7D;u0~@J z2FUTt{V75~Y%FP^qQAtN+~Z-b`?y5={U0*C@GEHErmHHzdE?{^xv#Xa!kCZy{9fad z&wK~9u|_%vc@Vr0-SZT!H}u19*ssopJ2`SpROz^E0`G8UyuSO)gp`;h`@^q>Y|h8j~6tBMr#kmE+#_cAIzVcDh>JpF8>mOlmOT z;_Hc$AImnWY(37mqj+S34<^_|qELv7m%;;x>x0 zM4vml3~8ULK@RUsCu_K8>y^vn@63~PtuyaNzgK1NcC4XHAQevd|A5&xmS!^lz^BUL zBIEfz-POVID0TJ46qZ5za#-+))AOODX_iM$!=i!Ls}&zU8qHLJEAIx%6T($cmGUC)nAa$~j!FBix^2PdPR$t*|1ezZZ&&mn{ic zfEVmVE~?n<`51d-o|%=l=fCdc%-P)By#4DJrFExnijF$q5$L|Vrpel<{-*~sIIkx)#^J1 zag!}uR02~Pg!Y%mON@Aga$y9tiAt)rdkjtqoE^KVM3#S!HnZ1xt}+nd^ij+LY1Orq z%EVycQRtFAZc43MJkJfm7brhd9xvC|h$%-;x69trLH#{>zKlzZ6#)#4*AoeRfD8hq zF=$-;BO>Iq1A7QdQX)!sj|lxU|#~lr^vM9wiKHn0rr&WFkWq zZ|KR(hcaPQD&4JCZQl_*{W+M~+1(98EIG5T&G_K^DHDJ3O?2RV0jzGgK|)wsnRpbZ z6D4ZW!hs!!?@Y>?&-Gz&f&(d1bIh2|*pklAJ5dp3(3pSxl!+_KM6F>e9<;JHg^G@k z9}Q~1pFj`Hd@(R{Khw_Hn0{5UD{pQQDDscy#>9Nc2v_5w6W1;Bh*w)1?~>&J=(0q5 zU|#3eTjnFqPbMu-r-pC7iD7u|Ml*fD{{zeUXJZG03G1@mTed?mEc}*PE7rqfXnGht zHFRe{%ae3z2wLff#KK_`DBuF%_ns=hB36V<#832j?bwvGmH?)3&DPe^@=498x~?3P z05j?l;@G98c3ArI^|e>m!FLt0dYMzj#i1CRGBxe*USp17mxA7?*YzQW zkNdcJdhH&pI7%8^%7ctt#-YXR3#%SHfB`a+mHUCK#4zZi?HnCdoi_PA@_{G-fMVAC z)&fvxUcNtpG2=v63)jQ-pk-=JfO%LoUL4!6bq~|oEAO@H!fiYLZc#?ISWzB7QcuAk z`hQt~06>#~!3GPLq_K*c1M5tN?+hQ5tEO+z#CmM^kx%8vRxmh?n?tJgcla$TM+S<>f zg$gos_v0Z|)k*dFUb2w{6CIdE2Yn;kEZy0`(z4#suL8HQ%vu>Ni33M&S*~0Z*PWbk zW~t+hsFd*t60a2P^)=u79u92tSg+4QV>4XnFvA&8I&3wJX~ZyT0mUx{3s@;P z?|f$O|5KG&lX*oTK@f=%I=AdNLIc~|G>DH6(@wJaXrWcHuW_Vq!i_$eHl|0=0Jd4( z!}?jok-4*_g!0=r&XT?w_P#G&k}Ayi^}XlLSG8^Wa!c3OM9R&hM>L>LF81?|b`zIg z(F0qkqrmv?yTSru>%g9XJTyYWKJJLw^+RSKs@jCx^Oa#HJEmkd3al|gk zw;((5X!H#0?0lxaim@Imjco*JU-}q;OGir9Ki!$Q%5q;XsowaB;JH!mh(J4<@X2X# zaB%RYKE8=coSC+&;&*iAJRVvZZr!v43?t7Wpn z6}>G0_k;<~=5~n5%*6Xva1i$FPuT36Wnt?|GtbeSbrv3txFsQOL(5<|pi{3|Nrn+M z^&>Qd+WM0ej5!!Y;dMKsMmwEe zO1g9VE@r>tN*a9d<5#~G{h=@?p3CLX3SF#=(c;$&a?B4>67eaU+l>h2W*_A7O)Zsw zx#Lt0ReAr}XF?=hnL#&`($M@X-C2O;yFDtg`c3u5%ocV&+2X24r;O`kaFLh8$`gU_ zUn_R>Logc`*ClLv!B}NsD|_r)T5ieKG}{$_j4ORBx^&a&{|^V|+b+OBN=7#~4Ow{Y zl)K)p8&DHqJS?ULx8&|sCy~VTg|Y|>)*mlO;*2stPDPUfgeG0Yk~?(B zow{a*7V`ZoZg=2Io$xX5e;wGkc(NbTxWU%nfr5!4zbgk!|3k2izJ0R(UP9Yvg18TA zZ-g$qr0tRnT0Xzsn8Fmop`>K;+Fa`$Ki|b#lL#X){|Nf!Kug1gP{o6rn2Z_i;<~yx z5O+NYUM^rnm}dCe8x3Fmxye$^UlOb1{~cGzzo=!%Lm_ksg80Y-n5J6au(+NNz%>E? zZnT~{Whl-n6)9=6_UvTA1tnlL>I(}Eh3PABpkL}8`}R#z^~x8ls&0~>>ULT@lKNz4 zW3<`hgPfl3_jhLDC1tkggiSNM)kcAOkiGNs-Kie|23SP!`AkKfMv4GKM@Q%4@)BcF ztmtYW9qnPfUQLq*7gOa8FiB;ux4?MBhJ^Askz^?dl_QtwjL-jy? zHEb3SIQoecf(G9V?KRx1czoR;{VI`3Lk4DOZcgRGJ^K|3?d#W>Imj7M_FI?e{S95= zrKL=%^lC_tA3y(Ejpda8$B&f8h+ic2z54EWQc}D97>Au*csr7BY7w9RGnQquDYI3+ z-S|WkoiuG|P~88)4;fAb{ZN2)9CY27tHz-rbP_=QzJzHiC@A3LU3^_%Q{9NIJq0tM zy;9S!o8=wIDt$5V?(j%RK2Ahv7S4S7#Bp&wD5jl$5Uck5`SaU)gYJfMMwLp>wA3R9@^;H5Zk_mDqgA^ha)qrv(<4JbQvLv9t?c{A#qer(H@?xVuQZ&&P?+y z6Eo`NRO^U#|2+vdycs;c;YSjPZCW3Us&I@Xeyt4V!#5NT~gr<7nl2OBH=!=WWqQEB)wlHsGe?d0GUD;JjSKgWWZs|(PwIpuCPG3eVz>nqrZ3w~3xyb){`i^S`C zDojPyH@bXN&maWg&HvHo1K$>3jf`~q;CH`yFupz8K>0>?Im1S&@UBvLizc1_!NCG~ zKc5`w8H#E~ZGj=aZ%dHT2aL@ESq_R4cIR9hx;{8U_x6 zK&JYIvCX6ba^5Eum3SH4!P!~#=>(-+-RgAplVJ|4X)+EDEQrbDZ$%wB4Ucx#Xg)MN zk}yeBrrA~(Z<^D4nZ#q16-dLtcKMwJ3W}^BVLNXEFnv|-H{?so4`z5kgk>^7N-)-} z-?!{^WK1n({vXCI9*%^q?fSe_`sU)Y+4w5}cpV)F#O22oLWv09|CKx!N=sW=T{Zbq zDKPK3^&(1Z0{lgUi0=Z5(5NwKDKhSepm*<~JWUvGl8g%n#vWfj9 zQPEZa6ZfNM!Kb}Wd)KW)y|*!(6w6Kl@llo8r@grIV)WzGp`nsJILuneCl*)*jF334 zC;`HdyDi_);D2&nCPpT&3k72Zq-oNSGgNBN+cs-7*D-q`t*v{t3acIiawIN+WKbie z9PT?%-;1XQ%rZ8s$Hz}bbX0Imq>f|%QMY=*7;t{tb<^)9dE+!AYyI0a-g5e-xK7Dp zvC?t^Rz#q!W3YM2^I}`l^RM-7yOqmT6c2+AA>uLp*x!QWLi`n_(mR_Mun#_eIC{vTsE`e_V3rK1Rst3fGg^FYTV_RagIf8XtlW;}S{*g%-q^(d1@a(A zamWdp5f7>ScYBm!Z&AuE$)+(NE{`nq zULrmKpXIj8MKBsq2CGG=6dec5%j$Thgd57L*9J2>$&Y239^N32f_znkMc}`7Xrx4UOa*BJBM(NQ9q5d6wHi^F=@+DTk})_qiic6Qv*XFNxd-LlQTZi~w=TH84Je{$G5^$FP*sZ$!sIB033UZ2yLCN-e%mmS$n zb$La7=%`mEbC|TE!*AH^b}C()UdxEn@bNQep$bT!n{4%etad=t#f(y z{Xne~V)3I+OXb=DCRp}WMPw$9%PxU$F9`Y`^xK>wAll1vis;fW@hDrhB>%Sj!4hyd zKZoO3zr5nRjW~VZ`{m|h+UuTyxNa?XMELdEK(7Ziyy?)e#lXu?JI$1zhsxweS~@y> zf)Ud7XEH~Azi3YMFM$(v8Z@uwa_VL0Ib5_vpMORI4Ko3~`2n!Yiw=D53=e(%nk{&o z-y@xZ%=oSCa;y2Cs6qELq7^WP=bj?|`?tpB`VbvVv?=sLRl9J-?>y|`saG0*W7Gf@ z_0-f9TVVZ;)Sm2+PW^-j^}N|%VyM!=qA#ZcuGIX$w4_?~HGUCevi^6AULe`jLx<(h zC`iJt%mGamA+7F8ZV(1|5M>!S#NH!4N`79Q*z}GhUdvsF()aG%8bB(R>;jKOA_gs$(EPY4fLoX#y)++RQ8)BlqN#*pktL;A`%7 zVB#I%Z)*%tpgVhMvg2j8(PC1)#tV4({y{6T(Afr0R7jsGD6TA)c-4y4u=Gns3#lj! z|GU?zJsNQTTY)zwNA9L^pxHP0S0TRaXC5aVbdjp+R*4Mq za6N^25x>p6a8yh-EW<%#qjnIjQeQ+{8-9+S*Igi)LY&o1-{Aff2H2MhKV9%rtbCx5 zUZZp-9Fzto3=6PNm~;>oR+}y0fa3E{VD`n7x0dOCE4bsl)Z|-f2a0uyRj00MKTKo- z!!YdoZjVomUjX3?$=riea6s6nvteYImV*5B!`Qa|1zJO3BFl=RLAnY|$L8h|0e-~n zG%B{o;6r*f+TVvNsFbX%(19cbZJnzR2>jvefuEsEW+4?(%Mw+Sqz1DF@&iNNh8M2q zIW+{lz~knJ1&XMNi3tKGoWtfZ70$F%!n6NxZJx6}E67+Tk*>DM_0T(b)!D!Uht#;d zH)OA~pX5=xA~;`FqUEn64wdslXRrY3nz|y<`{L*0Uk8Hh4*M^eEZ5IOLO#gE0?VOQ zHY}Oq54flVOk(=$`X3D{6n|tz9em3&oIhBqy(eVR#|uARVs5mW@jxN5e**(E)vBd# zFmpJD2lO}M?mV?hjG~$JnwS-9bw>$`j<=5*azDL_7HOpzOr7%hAE7;Lvr4=<gtC0{%;W2F|;y6NS-8vC_bGB)Mh)+H}YTrSJ4L!IB)INV-IiR3E36_=RG@{U0E zn_2V24R$-*bH#_%fAoG<+QL0J?VWKd@a^{f-L}cY#ijMseXRe+(V~i#NeH72c7DiGp{&fd2b$!JmX(_h+rzw&klMW7|9ivzrK|U){=STlmIxhO!=*wRz zH5aFrKP1uFLr)hf+fT4j>I7&@dfF{T-F!F)A@N(xQ2~G*yH1|8x89<7oi`TE2Guo-B2pon|_8@=kK4fu3z=m&Yhq?GJRu5MRRY*%Pq0 zw)HINHsY0x6;%^mBFMN#;ajikLX0V%ESqq5mn4blGpL6Mo=r^SaL+1C#>%`fr!V0;~K#QycG6ux$AA&&sjOy8M>4As*{UISr}xOeY%#B?@Z){R^xl*BGCv=DEuzwbjYXg=2|tKf779&sPBta zKMwYpPEqFa8W@2~s_`^fPv4yq(8$Oof)ijxNokz^1A@g4<+@S^+ERhQ#N1mVid zt&sh{I%HF`7Lf-kRDw+7Kka&%FB{mocemKudW1VOLY|i(wISned<~r#DPlwl$`*L1 zN_T5ueuBqsukEeSG;%A(&!^XJKiD2$M?I6BogHs4!9ujw&T#i57$zC`0xQYq>?b6? zzxr}G7g%Wbod%DK!Duv0*VYzCI;S|`UrdWSvyBNIg4?}*nC|4#?yh+n0mdaFmDdT) z_!)!Edi8}TL)|;>lsBgg%v!!4fvU{V-O4|m?1eaGG5nBBgY*^+q zfW;h=mt9_0<$7|3?z`hBg6jYL>jX|~wmBRw;?0zBaNTM7`q*UN*rx$Xo$BnYtSS$R zi{qcrVqatGW*QJ!jyXm4zd6N)g~6t2ri|0`nVRh%J)gqq)BiF(>ycY&y9EV}rOC0l zuRO^Xw8I9P@lhi2T#b}iFstz-bFH=;@ypqH1XjiLmo?pLC{fLnlYka+V`F0pvW7W- zAFvGiL0#|qIN4}l?ep+R`Pa>Hl86YUtkEIhhvmtb&D|FKNlhq;_ypIeM|BTRBEksE zt+_Etcj#eC7IV)-Q&aQK_KbOaz2=jo_~kfbo2z=-ivP0)j;flPhHm|QAXc^LE84>$ zvnP)WlIQLW7X1YN&K2XmF6%ho4*b4{XZCDvHmUwi*20?Gh3%*00prEyBuksQK&*&F zMT_2ChFkhQL^dcIWldKSX|bk`UYUar&t?Enl-bSc)hW+anT1wLRNlO*$N71CiceryhOG6( z57oBT8RaJ*%;OR!6g4$}zk3DV>HOHQXTR@%ChfY;_x*wT_EL*#`#s< z*QK>JZBy);Dp2il9i3>!&v(wxs^T6}O={Sx>ylR_i<^#i`S26GcouQ~ncrP|IV(f_ zo!c>*Ke&&2R;*rnP8huMP$TgE-%pB>z6F$N;uu{v#z$%g6k>w`^^v;hp#;w-9X;@! zn?ZxyxA+zuSS3B<_{<=Ps!&j}*jqi`EvJ(CEXDG1yQ%s~j50C~-#5F9X}m`w(eAwd zdb`}8;wOlbeqE7%(`HAQwkXm0FK=JrV+i-MDw|R>7Vw8|nmt|VDGJEq5}9zA-&;)X zQomF&vk7$qfJ4WgTqGv8vztpqw9LI8*m(QPHiV{7Vko^0gVx*NoOYSNBi#z2@-GA=0epV*zkCwR_ZSnRVyeSGrrr4N__o`w-E ze~=qn7ejR9zl|yRU{0SCZlrba+8w#$ zSl_k$DIpa^&v=Bb4$>HrYulGD%pW#L1Vh7&LxH&0*9^izEiVH?xk99GVEl<&TRR2@ zpyDt7TuHCT$PCB5(IbCPPFSbAA1M6RNeU)Z;zDz&hd$`n$;l+ORod0juMe58uqsg? zr;IWo2oIuanrtC(M9{uS>)VyG-I1BCBIFbD>iQ%Za!gw56we#{0fum=j>iadIrIE6 z+~l__Pt#FrE2qfIX8YkrOC_(dgpmCJ=NIn(Lw+N zomB7%c0X{R>RI5=-;0r`zO0x*7{bB1LDi4ENNYsG*hoSK1NtLv(%x9nFDZM+_kZq# zy&S>aeiwYK2p+H{e>m@FNR~h@LjM!kRnQ0MebS=9cdaR$$26lfa6dYwV6>DH^*#yg zj{an2dU@yqAJMal5dZsIqxTPoJ66}h@rA@D8@sqlgL>&a6pP-DwzM9WkQW9q!GI?` z*S)v0a!bdp$yzKVc?l$_ND-Y`Bq%5`@HwdjWDtYq(x$A#eM+ISxCV2%B}^lJRF=Ej zF&Lt!Td0TIDIBeZ7F;J}oDS?k6(nL(1Q*+2g% z>HS*FqFs3&C1!dqqLhAPwzqb2=Uv1x9X2#LT2pTikMGZ#FGw5{_e~#Tkvo~5lK$Bz zj;JKmsqa2QZieCM($3kl_N%T|gfZXqVb$;PQn6>Z;1Zd4EmVHBnUC#Rt*gS?KCiko zqHB9n)2dF*rljlXXhA8moMYbE<(QT@1bBou`GPX6jrtlqn0%jF9lGCc1#ZEFzU~;L zEqIEDd0h-dfYgv55h$x60CV47Q0h*1m?zjIcDZCgx%M!zEMIeN6N^N{dr?d(9X-zN zmB^;4m>#ooqUWNp-r%X{N`rN7ZvK;$o*i4iiT$Uy$?7E#EI`AV*6w$R8ElpyW;2_H z>$&}irQelHH$gnw|D6aP{_5vsDux#WuRQFQf`SLv$CNCg88nBr)}4WhhyvoiIB=({ zAxW8rufNwvaHmsK2KxM|x;l_sgk$KI@~*$KQFGyXcZy_86KiyN0tMiwymT!c`TbcW z0APbf0UArd_$1nF+IW_?+zzl;6EW^xN#gPt>eC#>tWw8SwVI-^0-V{0?q) zmCxDr0Urt~bZ0N^9AJenzY-bm{@qSAeFeF}+6tarZTQy)!NJ0!7limI=6>#^r8)8s z`V4hmI0P6L1{NOt{HbXo{QULPo)g0%-JEXJ9W_C9Y=Bf70D1anf~>eBwckxI1OC^i zo9IGDQ=YU8n{5o;>s}lWB?`^&oWM@+bkg3Wxb&;OeEE`Bo;h- zD-Yh9vLGiXw%y^!L_Wo*GTX@Z-zJVMLc!^Jkzb`qf8Gk87X}vKHrnW+;4p(t+&L3i z4$OiTwY5ZP>DBHreizPIzz9|<=X>?<*N89AvKy?V!0SB!$d06bh4 z`G}^=1<$zmu?F4s5{V>JY`!10zzil1G7jucLEvU^oddIc?q|aGcAPZZDW89`RCJjt zHJSUbi^wLIKqK<-__%s8sus-=SyYUDd4aO^=+;|W#_ zr6h3I=P?UYQovHcuP>waGS!Xc{>hr~7HqRJpSyE<4B;KLmmNO`|H1va^O#Po%h@uZ zB-cQ`HP4|(H?eS}16dCv7?ZzZ%m1c%y2R3wMuC|Iq}Vj-7WkRj+2?}WJM~#BYo@Ex;xJSwTUE*aiH)bsfSPK4XB~QQ?13JjriW385d4sEF#&5G7YiR=ik zD-+)SepiaS>-;NVUC^#xmuaD*TmRg9YY{z03zrUNdbW3S0a8`q|0Yr6@Owj9DJK=x zE{o62T9DoM^1+c2*t4@5W9!ODc+_umO(o1vPl6`KWJ`QinH3Z~<@)0KpJUeA6sW|g zfZYA*fD}-GTKEVG(zV+0Q87M_$66b=v}sz(vyVD{fqj29$v!$vcBpAC(INOV0Pd$> z%=K?oc4NtT{P+UuY=sgj3-ufhg;@V zc$NCV2Mie<{45>s!}%&odHF>r!H=gs@q0BTY)o(gZ!;zw69hvRD43jpDs;Z9k=p zmO*m=_`5Rs{rJ_A%GlUgum!W&serT6=V`y^DlCFUp5?=5cER#p&FVB^-?QA>G6p_I z<=Kg?t$xAC-999YOhNDFmBoN}Y#+XaGim+K=D|uJT~y4E`|$Ei=yLh*tHWhB$B{Qa`h-g=83MX{Rfv;gYO48?$PXV*2_jlS>_2 zo8;GO0rz`T6rZlH^~19`dguBB886TM{X2>!V%IWx8hnQp49l%1$fA3Q5Ru(rl2MDR z>Hn*dDG2eX98fwErm5jw!PYfSB6%zYa*gzwv^simeCvvknHbuVZ?QiU3Vld9+&?j?HHZ#FWw?Fd|0~uRkzkt9I8XzKNsDvr%=q7B#%q~zbNi#UIhE8%;EhjIl`hBZ! zLDGH~W;v^>RjRf=y*e@xZqjiV1kvf~>BAKkQ41W&OA$$#6OZF>X0_T_%(4N`LRaV| zQe1F+2wuL+;h##<8kggh#zYJ9+Zl*qCawY)&QbaCp+O?LsNS`j%hAsUT(WtIdjv%? zW?%bjg+)f1wY|iqFjkd@aYr!!*nLfVwy7Zg_*bsUbI{ZPz>Y`49Sj+%$6ShT7|9k8tvqJ=0qo)IqRfNkgAF*)1{<_rd#|_sUnJ-|FG!icw8*chl1cJ2>L~HA^=W;YO?|fKzS*vN) z_pskWdU&|cS<4e(HT#w+JlE$hCg_t2Ej8++-RJkp-d>(D4;fBdRjtK^kwJImLrylH zHKen5E%bElmfN^pdM?Wsdz_j|ba;GJC|414kD^Y+R5p^(mUjK9YXe?9Uf++LwTp$$ z0prEcc3H*%bY ztz6;fdaQ{5;)0CUFMpKl;qftTg(U0B#z33kP8X$zU+*TmV~nY47#Weu;mV%;rB@3J zlNiTo>f-VsAp1_Sz~(rCH7l7v|4%qGwO9pRY+PjFruYPxrH^5`;)6fdHIeh%*B|c@ zd?$GP6Mto-IRaA^e#?hFWWjVTN;!?SAppNB9aXtokHq2I$7>rlavet2X5%tx2ld~& zC+p|s7l}wl6i4mZ+S@bK8~TT20EVMPa?R$#`W1i*4gF64y_c15a61F0{M6MN?wcW zKYzq}eQwNo2&wCIY?foMVaw&;e6234kNTV)#oFH)=Tefhqbbi|c>V&-4ZA)Rd47xljr5&ACar9E`_o#XD6>{HsZRO+-hQ{DO^xq| z;El2x`{bk~vJl)_-=ce~hz3YFeE_#o^2SIk02(9%6CyzYjcV^ojQRsIFB~(M(`!pJ zz`IpS1JK86_VC9@35?HfJg5zQ^RI*qZGxaeLmMdv#G+(X1p?T`OYJ8eb^)sr&{*9J zTU&Ls=|2DYj7N^#RwlmL#?Q~M@#9C2XP{%6+%{OCgZIw(mEvnub(_w$ zuFz1;6GIXu(Q`C7R(5u`u(R-{rjJl*7mP~pR&LS3{whu9nDgJiRx)zr`IzqYZjdm7-zQU_e4eAh;}+j+Zz&BvlCss+WdVQ7&e=Xt z2yb$b81$^Ki|IFg{!q_xEjhf-qcVW?mq8b|sR9ahOmF`W*$`&+nB*kw-tgNo*`#%C zB%X)C_dk0%nGCw#E-x>OHYPwEazQWqoxAeKvO3)O$LY@;WCkNm=iCz3+JXe!??#Tc zwNXfIX_=S^e`KXyXTQCF9A6+;rVG+#S7c)R?i+2lO3d3sx3Lt`rm&<@L z37l7Tn_JTBp7QHtQKlDA)2*N2do|~&(9d%|xV}zgG|iTpT0_sV;U{RYWVt@B5Uro2 z2p2iH5~W|(y3kt~z~c}T8 zg~_%J#>2shxW0CW=mEL>^OCWg$UlGnG&VD%geFL9GHe|wnCcIUHUmS*eZJE2-$YGS zxi^Vd-?|+bh|+2iW@a6ktsm|a^hWHGVR#9u!@jF*t#noc%TwSHgjhSQ#Dbu6OEE5I zo&!J=fSxdvQ;ng7o>}e2-NV>Kg?}UV%O6VAxFZghLI7jK6_oV(KO(6pO(@#^XlDi+ z6=xUEp4_ZA^=H9Kcot);pk+jSdMu376ZnH%8-~eL9w^YV+mUoiUT%BF5uOUt)(8 z=V0%njVPXao^}C0@Kbtqw9(B&qnKMc#rW+ul`{{~52t3M$NJMZ1q=6PVSc{R zG`eY5ps~v;Km{?QDyyFAPb?lPUM>}MWN(*na+`~yG+2kOWtEv(*{)ChepD$uMx;G= zGPV315sstZK%10}jg7)$;2& zA8XZ>6sm>{_`9W5`{@<#t&@EI1AqOlgY!!z^Ugpa*2i^Bs~8@0Lmu4yGoDF zW_G0SO`CpOb87loGW^V&ST~U}-($d)`*e;6WE2PzGsq&zd>7hRC&!o%o8zA*S|v1Nk-hCW>!JpX&#;aMX3_h@TXAUzlX_H2`27K#2~@8z{sgl_M&#L2Nh!#RB=sBtcIL|+_#7# z(tnfRJfr|d#!#~~0YOaZ1AeNIt@%7(ydD&^#HbF~3#W6Ff z9c_?LsuM4bNZCgIX#YjmljJ>}OvAXrD+{8NNDW5rx9<93#eg9G$@1(rF zK3b4E+;Qg9@%GF9{02O)wggaUri-oEdj}@qC`A!w5ryG6qytTkhs^74*sXslve2Yj zo*tjZ{mGaXOI8T+nJ4W{m91@6-{>jotNm?cs*2Vlq)(lVgbiJkD*&=)%&Sy^x>DB| zp#Qfzxrw#Y6!5BwL}dr}DF!Q$ucAHoG?SCO_d_r!fibf#77 z9d?1>3)H2GTpKq}3u=+{8X?2+v?)Wde^vzRasM6LxFfsBoGFTul_}==QOrYYDB@ic-}QFWIj5YZEhl>NR&g6-$6 z7*(fGC*PB{e?hHjxorMqKMr#dLc9f)}eyS)F0ZE|q`KC}&l}h?eaXf*= z{46ikapm{r=8GxPg)G~52vqz$+5GFh4;ko)B9cKzi03_C6(El z)J)16;*cn!LY1{OFib9imBXz^hm~z$x|!5Gt9oo4E4?ZrqM8eLk@>BK^0!BB6>D9{ z2nyI|eCJvZ<8xz8;fNKyn99Va_zP!hNK%M~fgn9ya`rnb!B`=CDvAFK_Ufz9*CQq( zMt0+~K*n3Oc#BZwsPKu2cLM(LKGJKvM1?H$I?DA=47{q`WKhV` z0LCjUWhJ0PKSh8?djPhTOhgyI^rw;|zJK@mye_NQ(rhc@t&v3(urHp}t!9uA+dFP< z^U9U&51*jlg*~U^{XppLYKni9L(^{)qc!j~ubCp>F3Udr=&|$8s|t;Zqf7Gmf};emc%Umu^-Q3}hpj{#|#u--v~veSpTuC^neM zq~Qk8maKX5`B&uspsIrpG`SF!UwsO(L+(#QI;8n(SBEG44uFo0>}W2Ap*JEW;av6lZXLaXPH(r&iMGX{L)JL@w7mP~iKV zB-m+pkZT?;R4zmv?*A^IYGwSFUlN=sE^?XXhzg74;Uf;Jb3UQsX2smTlfT41sHMH) z(0xyxtc)uEHK-4wLF$uVv9xamNh$RaXA^ypEOU8Xpv^X?=fEjCs+PuzR1^pqdDpgy z26Vo+=lcl$$VTJ?-HaL7%75C1Zv z%dlT1Z)7F6%ecbvf7fRk!L7g=Ns)^;D!#RGpOLvf>CmLU@b1=Lm+3Gj`R zW~_^RjX({TXiZFfQ?9T~-xxkMrcB1AKt5u#KP%eqzB>_)fQNq^?fup%G%`}GNEsj) z^?3Zw4ZG(u<9yDJTI!U=&=+<~dky~_*CqNkMu zU-YzK>pwcQ%-Z^O=1AX~PQeR#d3i-`!@;q3f=?ZgK|%ZAZ7`MVpI}Mp!koXH- z=7%y=r#Ia-ZH5ueZWAO3h;~%X@6>gwEzNBWBkKis>X0U-XbXS{B$ifItqNnlG|vy( z(bwvk+|e$Ve22#pdqmY5FD=ckE(~|IUiwIuczC-R4$4#a4?(zL^@ukT%e59dtVrca zCn#K=JWD?KvS-1gVucNFfbDH4k2*i6`=N63>eo73tU{DpX1(^xR{bf>-7iHBjBRf| zbm0PB=O+ON2Mivb^?@n)9h*LaT%-Q*OfD4uW~<{v#`JwK2N)MRy9+S1W%X9lqtS5`adaR09bro3l0g zN5@M{wd31;HhaS@I2;^!GJg^?%Dj*Ps~tYzn_v;q$-kAnbU;7#XU=mrLV*=2;cbuc z<>vhCFS{&=ZlMH}`OqzR$RUgHVH8fGmgU@@e1C(riMmidB(9?f076gzs2?GSi24k3 zVegWJa?@-)k^r%c+S32@)sKjBz-6y_xILL8xZk*oI~RH7aP&8=#8oxB%PWpU4YPE) zf5h(C>`4pRp4CRdH>VZA*KmX??QC*(K_Vh1cDcW@NHQ*IKaqe@GZ2h!OJNL-?5?S0 z3_`vHuY(g&&pg>t$)TLFsp-=78)@gQNs}4Gch|*`I{o3%okW9BTe}gmzYw zvf!*UprjIrf`J#;^W(X&{7WHz1d1(vxu}kejm@fQu4Nr3E>Uj)wW>MFQuWQEjMTk- zKue0a3?kf1AE+X~&W@SY&~Oi`_3Y<$X^_$Yk8j7!nd9ei0IymaY8D4#*eA(AEE)G}`}8 z8ndwV7dE42)XO~@_s|{NjqH-Z5yh-zu&hkqGn1q%>k->5{BVohvt(asyX$Wc6&T@D zW&uCJN9gyLZb2oX7BU?gV_R}-bbj2zYW8pcK07ip?#n1Lu|6s%kqNi_tizyH?rtYf zXVshvVHXC~8qT3MT_|n%$(#%;rJ$gG&5ddZLv6;~_%PViEx}VEl>qnko4nRfN6|lc zmxcs-)tY03S}u9j0HBy#11{jLXWQE5&{XB#zt%j8d`)ak3)|ohzDN{l|C#jQ<>N!# zK%Q6gvby^UJ-N8p>bHSRP@z+UQ-(=Uh7v4i)i40q7tP%k(DEpJRl`52p#W2h-NCOe znjQfsYzTG;lhaX}?akDCedR$Q{N81D6=`L1n}VOs!!deyn~f_U3SCRJ!g!F*>6@QN zN3ViytZ~c4D3f93i$f!yN%lONUWMIxwax>Mcm^5dV}h)VQ#0e>I+tM>Im4F>@Fv6E=vIXrH^ zLwc5mC}A+cZ4;zC(JmMHqnZ9kbTkq$>;F1LCCn@G(@#t?Z=h^@vr=p3^U!GFz)bW) z5ydNW%W~RUgQ_{is+VIN-oR%;0#0kd2IpJ%7`le4>I#8Bh!==3tLzoix#0=*J(;vN zL9>$XzeeJz-@_Oww;?1+*M|Q43cd5~OABSPl53sy*(@}YMEz{4H3!T(k9IERO7{*aM-9IH5c0Io^lbP%;BXdA`1vouriqq+)o@4KVHVXI zfxs2Di?FL5dv0bA;lA+>fzA4uw~UXU2a;1r`$$`W(2Q>C@(j zfvJD`uUyG6kM1Xq1BWs8Ab#@Xw6q91zinSy)`sWcbNI2(Q(!VO_s(uqUEbU9k|)jy z<{K*3@64YXKjKx1UMqe`ap(o30|yWq=GX)H*n@+OTQm`rnvUQ@ya^J7DLZ6?wyVD( z9y~oO;aA+Q-2C~#WJSD45s8dR+lU!j)YR1U9a%;8nS8fDfDU^CxZc8DaaVHVSF01=bg4UD0Hoj?j;jj@CA$lf7o58KLzL%t?zYEsQCU zmHp&7`I;iyH6rXNIK`(GAcI*M))) z7iBuK(S}x5O-sseBY7@NeK{cXGsRX`(5VYGZ?LniFROHq5bUqCr>JBw{Oif`4pR>S zwUR4Z=qa<7A%plTEhG&d+IrgC!4A-tEJ(3cgoTBl2)ur!K&a`hsEf^`<&Nd+E)21T z&inZ44qyj^4m?FQq>ml!VJN9L5Gs0^Q`edJw$*0@T)*2PXmB|QN?fa7Tz|W+zbAY8 z9=?_Gu306aF_Eu^O54mpc{xP9l8sVANn9?WiY*&e;~kK=OHAOHm+CLnErSw$=cG<` z8z5A5a)3f{ThAHG&G&K&fRSd-Y>G=MEjfrLPL(Gn^VJyS`1BS!n!*-bIm|HEX|F#C zXHx3(U#Z&n=NrTB|5ByNwA=rS-4Ue0Q8{Cv`?O|*9jw=wy8hl)ZKnB^rd+7Fh|x3k z*R?*Op-#Vx?M?t{3Sk!X%F$A+eT97$a8%CSH}R?3J0eWH{cH;)aB(cUjSj+;DMTeg z8$ZvH%R`dC4dnV1Oh+$Acpf^NYUjBdb;G(nNy2}?`jB5 zNrZ>kYEN4a*)e~AV`gTCX!?yjY~+~UUX4iMetVwOVB>6$TXSd^&UMCr=YbkYV!R|S zgsIGE+cr4wJW?I{1_Cz1STqM#=^d}YdnFA1$%|R92%{MaKx*T+w>QP@>OIr0cR9|S zqGi%bBzw-x#03AQ!DsT`+($MvEN1sfvDQXV5Ng=*NZw{f5i;XV?NfkOx99XBzAi5+ z5*bsr(hkW=Dqs!^KatTj<*3{~FD1)R7Kf!d9g76YH8zX4vfr=XFLYrg{k998QtDiO40#RxogJXqGM#htH4@zzEJKhru__uT2w&(z|6m1|?LDc~Ay)OKa@z{bo{DVYxG z_S0(KJ6H;Pj%H{H<>bXz{No)1Utj3~Ftk{0(<@WM2w5wc2#_$%LJLoS0xU>^$F`C^ zm2cIrTs-{q=l3zxQb()jPO$6rr)tvTgMMkH5jFyH#xFHzDn9GT7;0ePmA3cxin2e8 zt4ATYid64Y!dyA~Ycrw#RA~O@eD5BOj&7QjW31cy>&J2nxeqrD=loIO>-%bGkjiw+ zSTZM9!hR4mady=EMKN4JrZ}Wl(vP`yls9t*EoD9*+90vYk$v_X23*PY%JRw<2M-AD zBq{J7fS|+Z*g9R1rIT+0&3}7}C6B4BH-5yOL-1)dT|wTy6U|n}dFH5Z^Zhp-QW|M1 zVs*8TM@Lwyb?vAi?7g@tlGqxndJ$h5(r#@&FY(ez3{L^dzmsX5QOOj-zbX2|nZT&T zQ*DU`dV$91&irsazrbrP-U?7=`iztV;altxBC;y*?T#9 zFI!Uq%9vkD5fQz)%zvX)-H^1`X6T7UvRpe?y1aF%4;^k_QszMTB6XPV3kQpvm*Yua zDS7sYeFoalY|~*69;6Fs*xBLQ*`4SvHhMU)a3*Det;uz9JA{#5OG`@)P(Z3RQCm}d z{wK$Y#i*`}|DF#!f)cBXGXYgHA4%1$-LG^S{Rn>}ewEep%0bF{8B!jD5YV9!z{U@q zZkGTKVb&*>2(*@j&LFGWa2n3_WmN4UAD)-0(S~!B{&ah?Q7h>24mVel|MM9G&+;`X z1*@@*`+OLBK4(Ld@OdL4INnob(hQ;`xds- zNv-4;DhA61i2roUytCM;)Hte84t@5MKeN`Y6-(c`8061b6uq487q0CDdxEK}sOLZb zCxP#$$V&zZJof9fkkN`$kG}C-rmx7(F})Uw>~@!$FpP{SRDKzp=h47l6BEa*s2D&LtU&uJw){^Oq)<+{`n8hU$nAeA_OxupnAaBgqjvDZ2?BIIm zACk`AcRtb%`+IwonYPJ)#rS_KDA<2ViVJ2=Qi|ykhYbq({lmbk-WPd|$A>9AhfyV7mD*gCa{OHKan)7eCZV zLpwZuR*+Lzh&Y^L$^rU%$8^^Tw7!bW(1$1Vc#{`iAIPPrjOyK85^`5w$=*4jQSc5c zJ6nWECItzDsOM+r);%#YEkcEd7JQWW!P1fsXs+A-K>V2~4hSTAmY)(bI?^z~2n{+c z;I6}vO2(Qs{d&7yOFVgWd1G%fQHVoMPA>GO-MA_Y$&c*$b0obaGmC5*MupG2+6Km( zOTnZO9YaG;gM$7vzFrqpOxHIi6ICj^%c}9dQBhzz#QrtqY?+Zo#0neQkFW*V0XZb{^sq8c*o!1BW(t`Yo z`TRq(Ti41$p9-chVz2+#vQ-f71L8NW$BCgvwS``W{9f5nI^}oqnv>3ve#trk7JmzD zZ|!Mx(6cI_!nVc#z1XfW0bz?Ze`g>vp6W$eXIzOF-mr0bhcOi-(f{ zRN=Wm4_-&2x^%r!xk1bo)VMQ6rnO@e0Gan|*JB zqRCJ#_f}TymsYnkM^pm^6~r6-PrT;B-Ad9)yteXV@>M1g76+_@Ypvjy77DmP0^ROy zhz+QYJ}QkbhfPY@IZkBk#jFF^Ibz9kvaKtOn$v6;>zxltfQbWjllJLcOdg>w&;(gD z=VKi2xMHZ$Sx;BO&O&pG_lg6sXrV3?0U6o9q@=`#{OTV}N}>!yqEMOsfT)UyP#LRe zHl9Mgbt~?^Jc*HOZE-R*N&Z6JH&KLFmLW}yB_@IZYnUs|&mi8h#;CI0fQe~;R2lj8 zw;FnKznm*-_y^w)S2Tv&_yqY!l1v#2NZiaC`YhtzEteaFQFQ+a{tDqh>Zus+xTN+F z3sS;t894v^gwx&_$%rda)SABc#Sdxw{@c8OA;!)ryL6gY7{C-+^&6i8R^jn(u10(N zM2`PU3ri`RwJ8d@kE7p{c2Hx$yso6pwnO3`xVfsr@8Q6!Q)JpVXLDW<1|;C+=DM#R zcMt21H`DHIc0`>SH9U#){J-fAJ+rPryuP~bYtO8>?mHW~pyD|7sL>03zn-u|i;js) z-7696_8dEX%6aRh#aul`IN_@<&=r7H_Xm`N#Yw`}$#RxOv1T5Prb&HRwow1X9W*_| z8`~8azO)6RTGal|6C&=v&Od*cn(Tmqz=RPSeZij^89L+AZbrDb_?;|6Y{QDQmyck7&XxFa~04dQ5}m`BLrf;_!*#ppecwEVAMVQYLH{;zWi>j`1Qh2haa_0d z3e{Qs4=4u0(2UdYrtuCV`2E#LYud9-^%CE9V01_Dix>kAw^S0RctD zsPOe^_;Cq2mEsF8X=Tg=!+-+)&7gz?!@Y$jNE?`cBx4n^dt~RlH!R0Zi zb%%T6Z7igJQ@%y7&ZGYE&e-y$I=x#Lpku*yx6?E`*frUHMFvcTAds#(&s1{7(Q%)Nw$@l^d4EQPtoq^ z1w6VTj|(djAy*34rcrc|0 zz$bsXY`Y&$z)B2I4V=C>o`1L!rw|~dpl5qgG(@+0AjXB1EFHk829CjuEaYV(0o;7M z@M3Z2!)uukZ>McV!h}-F_I^cDKJBxB-<|a%12*)paXsDN&c7z+At865fFQHR###Rm zVuN2GAMpdzMzf%_V*M+r`^UXZa zzP@!w9caz4ov_Hz7(^a;q~3dh?}IZdJX~3&(};q#n#hkfzhMBW_XrLW4;2-bv(+4M ztQ&7IIksZ}LS<|?I5>dmiRpLEX59$!ZF9Ilpkkw|!Hh!^OM-1}i>cF0gmzGtdKxh! zyXO87hQ)mV6_mK{^)J=c;g9ZR+;LGpNn6CUIUB_-K4H`Nt7ts@8(6%|w0 zO(h0{fEi)M2PSMh?#jn|^LL5kqoe4ywn-+dPEbv?uAqojyVaZ5-HN|Fi?6?E8FUMO zuw3SUKGM~LNfE?_o5Q(7kjhGmh!SL2l6ggX`u(2BlwKU6{_P@6e)ZPCKf+;aE4)lv_VT0-eA`dM=NtXo zpW6H-@Lp4#WAq-FEPUruuPfDA`4||iC1>8CUT38xNs-17_hg6-iT-t6YC?4^RmSw+rl-y&_>@KVv&R_0J@%3LRrCcRevG&6`{kF3y-7 z-W;Et#PhZ=RarwU2%`i|z#{gE#`#=Tr@VpCm8VoY6^@>vK63>n@q_)t$aNq=4(mzqph zTD8^m^dy-~9r1K_5Bd7~k}S9%qTv(l=w1HFBTow_y!XMP=~@ZIW3*irAp&w&It+YR zp#|@6oQytVG2CrE1$@6tQGZq%8lw~OR&aiRU`~w= zTTmQT(eo-u&ZWIC@;if>oZ6!F#Z=eIp3>0J9A8p4V?IdN065nS$Bae4?t`K0uunjU{T$azBiO$I@D>*RV$A3w_uE{t1 z|JARw+!uhVfAbAiRyDGMe`y{WMX0NYCO*Au;rO_P9QkOa6vOc)(5~yNR<3a>mw6H2 zUh|`-yfppu^ck@m-azt1*ZwTx*0?Eb%f*V}_v=!Q-(~#33O~H-cgg6TlHOd)EhagI zzMiRRm<-<~VMRq%U@F5v+nD`JkqC=OM67XRaa!y*^>%lK5QO1Kt7csBkCxDru?v_1 zP)sRzyHU(X--_!y9X)l-ILx%h`~5*uGRy{XWhpav?SlKEhB5(}qlI*Sn$G>dRimO1}}bv=en zVi@@)+`=D@`oiS*8z8ACuVmg@ytf`vVpMZNeIfXExVYeZDq|c>%40|PHx)G6o;3~iLE@4|gS?=cuE1vU1p{&i%$H=e*jwot47*OB?kAz;Ww@7@?uAu<>$eRIde z&D~f&$h1R2iufn%dod%nPBFttZ#)ZFKrk>c2qS~Q@X~Ay^%4C7Kye7bzY2#x9w|O- zxa)#GJ0o;o1l>?pMZW4zeernGH_A051j*gW=jKxkg_(OSLH|XNZiyY=S6wExlgJ+k z#Y?O9bwC8wRL-~4_O^-aw~TjlE1_3sQUV3L*!{A3!GZ*2M!AiZ?ot60*B8T<*1D&(4K>407VwLi%o!E$E2 z`{H}cXWQZ8ylB1EZ9QZ(^YRgJU{Qa zV1IKLi!ZW9c|+~MyD{+6@3XzvbW$Z9lZq#=mf?I<{`jtmzBuTt846${74)`{8C@_X(H^S+}2-Sza1&7Aj_2#7*>mu04K z@4pnC-75%1hv!^V5Vr`NgBa-+VS}a5kG@h5@cti$j%y)HR9w!FZc@@8%N?(TOc7yk zTJBqn3v{DRjQ!y*)r1uCKx`fa4G!s#eeo~w-`K%Z%N(FsA9lH{hC?ljvwM3v+cLqD z&>rQBNk|R6>pwG5)p#z!tfF3;o09_}G$!E%ejRS_8GH)M9xJtNBeZS-0rviIN^J;D z%0fBbIX9S$=SR^J>j6$<&#~h}=(r;Y(dg=@y2L-crV_+GfTf0b0}UK5VCa~YBxE?? zrlX2<|0TBhd-LW?SYSf~&^PzeLD)FVuz-z|%?zv7kRJQzQ@P>h*G$8 zIvOc526^t)m2g?sIB4s5unPQ-zuVI9z8g=!j+?>H^M`A%RF~g?2C|psj#<4KPPDxlM_A*bh4-o4xu7K~SEG}q-_(?Y zUJn7znNaMPfB;GCm5dxqg9bAzE6})5T(VavvgQ8MUU1vfRRgWi=xF^wuC@jsKo>%mgf@0g~eM3~4MjbPC_&}_qWN0KH)HG+=sOMYluWh3r-{7*h z5dxi>f{wV>W)}<+R{9VrEC;Tah6FS<9i0NgESGb2!cBN5ucakZdRf_B6(*1vQ%OjN z>i+Cwc@y8T9Y(ZjZj20VAQ3-c(t!_(D_DH?p))hwn_+*7-t_c4SQp%=DRX zPQK$NMc68&EdegPrn`>dO_6=w=`_e2h@C84aRATk6EBkCIj?K9wr+#^%%;Z$>vPYm z8~RFS5D^JoiXJZfJvuo-Z$qw>yIoIUwV3CIIonBE-7SmsgQm%0l9PK`_E>X3=HMt; z-&tB-mZimpIEe*4o70&2z;Jx^_8PO?Mhxldbep1*MfE&W$iU;t!*I<&Mz2Qaofp)@ z0kn<=5<;n@eh{h4E?8rxE&sZLF-r zQ8kL5_Y~$R#N60`UBeKWQ6EVlsymh|HC1VdTx)5;yO;2r1*{uW5%m{9P`F{Y;*61i(Qg3zpW4h-n(oq_2| z@w(YX91T9_DXHFaH_mNsMl~y6^%}F#CE>4Jmc6$P_3t511hBbeP`Z_S zIT>jD^WhR3y1F1!Hwbh_3qpHFcLL|n^`}}*&afmgC7Qy4v(e#qzkHk~lB875N>Utj z-V_% z4WC1?c$SOG8dm}0NWpvag3AJ5(WWn3tVymY9;4;Dlm-)Xl+AX41pGc@ zh-&YO>tb90?Bhotk`nfC8Q)Q#{Za%ZBuqmMB2Gpu>6Ro&lqJgqsfemG6Urn%T!M}s z1D*h!N%s+1OncrQJ<*(Hzewx(;|qFL8`$FTmgRXE4;k}7EXZMi<~>O$|T-5(R$v(h;d12z6hxJ zuix<3Xg1qYJR8g1$9hJk<2_HjKRb(LF)~uIHGi#wk+?NmN2RHiusYY!V=_0Te&czz zgB}n#-|=U?ObN*-XT7kdhVAt1vzLhI1Bn7ukz;B!Ck*_==aH|{GJpIGK*Xwd5W=$Y zKz*2|aDW*pf~u+LMfngI0ZO^Ums9rkjt(|UyR>4myhbk_cLp^J`bGygGV_Au*x09& z5yZM5Gu4cK_SQ@aCgFE1RCaV%u`FTn!@uTMH9IjeY@vCnwpWe~Fw0le)D{oC!#?gMHTy4wMngl3 z@@$JQ_{Z}G;({0us+esw{!w^1l&h%)Xntb%r;i^(U43x;_jOH}xG`rw%amnXlCX3RP-I5Pa7hPkakg7LzHbki&j4IUvM=nrJ z26Sesg$}$23^7q)01|8@w|3nGJf5NmvNK$;9KZrO81XQufRRm3y->dJBEcR-=~Do8 z&f1R}e-24Wab~6C>op?n19egSidA#U_Pzj(y8uASCD`o~`q1@$x#dxctL$bk0xVz=DGE z=YD>F_L7+r1A{c(O6$ZJDXN;+O0(&ixjDsFj9b|!5wL~1HrQ`IyYcRihxwpV>KZUG zTNSVYyQ|GRMz!AdK&S)yN)SiyjUIJA#L-H@P&us%#Qc`LpyC{b-}H>@tP6=4;p(16 zt1*CtWwFzzWv7bL&i>>}N;L9S-Unkme1cwUCrqrWqt&6wBVb!nDnzOG6BDmL)fo{2 zqvKhG1OGSC>|8qF*<}whyW)0%s2uu%kxn7*Avt|VHvKM?Q_vZ)y=ybVoa;%i6XmJ-V>CM2kMp&ja8O~4K3Uv9m~hk>4R zi1WMIMVX;@^`YcY$OnPMZ(puFf4oF_f~35+*s9YX-1`B@$2yGy?%p_ltn8JKUP1ek zni>oeU*JOUV{Be{y^Ds2hkwa-3D8e4qe9e3>$>{iY=VNCzgM#*o0T{MSMdQ#a249a|jj*{p{`2)#f6BG( z-6ovF=1o6Pdil8AzOXf2C9D=Sd8Lh1C=~R8oaPl;4X7lRzAfbDbG;(*x_Tq+;k0$V zwl$I^Dj|WDa1K-e9^Y&p0v#}+(<8umU)+Ll4pKs7$8yH>)^iexc#BLV*ZZyqc1>&-auKNuxA^pyuh{zm7|rn@_N? z{KbPsa+u{*$fKg7o^mKWO-wf1;L1+f+Fo+MSbwDp!i_jSXA!smKq@9Qr6YUqu z%9YZ!vI6}C`ciZOrWetbr=7nyJs6vgYiWL6=C4heZ;)fuLW&ZKohrN$l zHUKIVyB2uwd66b2b$O7o!uYAgz#_jkifq|rHf^S}47-i?) z7_(ljOer$B9`hvTzdx+bM@gmUiRj8s@QPO|o_SusVAibv@iFb@IqfUx-k~A>>uXcc z8_4RZ`4om>fb8GE(uimMOeo_>&V{?tr>uP6@VdT{qBfiuKHd@816SVY-(KB-o?h+3 zEmvDr)sf8>Rc>jLuhgnG?J6oYfRRH%c_((SIC<4#iz2nx&uXWtFQg^Y2G}=SQ*8u* z?9<*m3e^$Bi917>T$>*AB7G{jpnwy3^)|A2d3m`l?^kmB+Ab%xz_cW|RNcSNTuTEW z&5ONh0MdkCGejbr_UHFS$*!%nwa-BX1Cc)BB~8vEkUBFOdwKC6n>8Ju{>vBzrrre6C;@;Wgi7q6)VJKTb+Wf&|x! z^>4@zV17l%`8}tRPWh2oXFuFp7N@NLg#&Th(1793@N`WUEuP$ja!FGJ+*$bYzMRbX zo=lP#?yATuESjl^62{}nw(ItZY*!BCI8V@0GAattn{wg{{~-_UV`B-z51;k)} zeRKe4{cGYW4LehSJv@K@3A%40`fBv=A!scX(ufJGPw_VKt9hQgpuTn1Xw>Cq!0NA8 ziyj^8Dl^Ooiw`-DE;J^{d6p9V9-o6g><4JNxcHr{1`EciowuG*4|kG zsL{On9WI`fE{b9#<3p@vN?P5PYU=!0-GeA1h`qzK%eVxL>$pdyJ~l$PWk4*`(j4F| zLVp%~F#;Yude%tJ#gva?ou5-9mO1=0m=Mo2*TDK{SzLJsp;-K}{(b@dzVVe9O5_P) ziB-XAqFC29L4L2ghcoJbdKH2RO!lJObc`CK|LD)3_M^5J>br&pMjINH1Y5g5nq$nG z!+>)JhAk7~)m5X(?{Ol%%~f5aLNwAcw|WmM46WwfjM{Jvbk5)=B}5r`_VR+8!Dh_bjbk&%E=Gywr>b<24P4C&>L$QgK4JVe66YZz2O(fns0 zz|Y7qzCZXsN=9Bk?yBJaPn18V?2%kSU zO<6yR%G^z)MO%ah&p7dG(W1luF0W{NV|Y~!c2r4d)jL%S-t)2eJW5OKO&fXviSA=s zEap%+q9UBH4F9bn%E>g1YxHt-G<)E#wEc%`b{Q%vD&$wCT6m3kxzup#YPqA7xGZ(h zu=J1a0L;X6C%rcCkJA^N48|Xit{>JN#30T`I@vTvL>gs`dNbpz3{y!LO*2ZR0hRf0 z2&Lqgs5T1)9UZa`OT8cPDDO`>@cFSC85LdlW9^u!v)%#Ilam%(Io=JECe}P^8~@ch zqQ*P3ns**CwJ_qK7lG)nfcH(x>S_pMDeN3L@6O-p$bf2M>>5<|&YOR9VI%-WW2~)8 zQdz2`96p|2zN6?MRWLOJ3Fog0#|5v z?{nrUC^!-{-t2l$L%b&>-E z6n%;i4s$!Oe)?`rLjK}~APgkQW?w`h`TV$cUWc?DJ`kD!l~@5fHb}ZH%hBGt*qLUvT^GaMV`8YV>&kypl#Psct`zeiFR>sv-H6$eDBZws08y6Wd@bNDs zFOQanSe{gB-ae88me@M3q9HteM*gKet6H5-juVx8dg8|V^rAmP6%vvKmW7@ z3F=x8sreylX2~Trh}x_wdr1GG5}oKnCa`@%dD8%jJYj^EetPfC%!Pvhg*f^p1qa@N z)nMjt9W5T9Uj&ws_ym8jUrEQb+v_NWC&($ z$A;02MsBH^Ga~TJ4Js=uLqDjlt}Y%n-W+^fvp$IV_DzkP;$@;Mq;q?@Mz#=Ce zqL0fOC8aq*iYOWM%nmv4_*a}K0(AQxA*(5-%`J7 z{Zz@35Mhui5f|u#a^?1@z7l1}=eFs-e_G0P=lgfqU)P)-=_5`kx~we1PvNJ5)X0|U z(Gt=)$YRfwFk}1^wP#HHx(uAvE}JXi&BymGs0a71pY2(04ji7l+D|XGoV!=<^`N}6 zej8oZav4ma^cK-RMhE(mLghM!RNSKPYLg^O=WLxi-&NRA^O9Y!Q5b{hb-qY>r?oEKXpN#-nZ-S z?k;?vYGrNBQm7LImp{OJ?scc?=H_OiyVV!Qwk3|R7O8pbXp{FH$8+rD3;5#R$itAo zDI;lkr{2esJ>lSnp`gnIeaO4a1vaA|t{5oN2cFezFaP=#;;`T6c90NtQ}B~hdRzg& z9vz|5Cv7Gx+!&42WrF)rqSVH-A{PjxOkAKhl19_Ob@}xohDa?+_JAB>?x@k zlhNx4itCxf+cK}`=f?4rwp*doBJF70+U4oUCKXb3ai=<-I$YL;jIY64wJkMPK6TM! z(zY=$Yjg0x00SjJrVHLFG}ns&f5Z;vwd#(zfT3v+0H}&YYHo>v;cXc|pFCcG@4BZHfyk6Sdj~^iOz(tyD zk>$O+k;m0BVP&g%2Xfr0=)@{b)rP1NGfX>q`k{-yepbrcW~Ex|*^Bn_p_C@N1kkdb zJc^YxLK3wP1&apqLo|1A#Jg_bI^YqUEi zPft(A5|*A<>D4i#Oo~8HZg;!G9BQd{FIm}&BGps3cyFqVzrBN8D;D>+Nx%twvyUZs zdW)~Ne}uu^GGYyrx~umOdp$=zygjr2d+=ey04sh{<1c%xYUAa;LZfi@$NfX!leM-llBS%N& z{r&xkLXKy`yd*69**(u7Bk;ovyfI}N{+@@a_wbO9ALu0D2g^weY56WrYi?sgyE zv-fxQ7~ekQ-apM4opi5f)v8rBYu2oeP*#-2KqW?ngM-76dH+rY4(1wCX%L=d>56*^!z0xVV zuwTCxgbfZ33eeKhu8aJ6qDOiUui}qK@&Ervv>Y`xEsc_&|0d;)>F-iiHJi@Ikv!?R z40(BZDg}9YLu+d^S1QtcI7U&_c!dA*2P_M}Wq9)V;FVucQ2CT0m&|gLED_xsNB(_w zW~RNfvs2kN&r|0ASlu75uTWH69AU4&n+|mEdV9)<)9G@awEGgjs`sZkI_&~4}M1JD^|G7@MnA3kfj^{W3_u~@G zpH|x8uWxQB85sIT75dd5Fi3b{J7akrk13e{`Q01EaI-d!q#ySP8INUv#kok{!^0yL zDx`<{`@?z9*U(2cri7L_QRa=a2%gerwY=u0(!*w7gt2rxZi`AD$r^jeweN z+m}eopxN?vLGCliDa~Zq>9?ypb4 zOUAEkY!7Jv{9NGL@Xx=Ps#`s?cdanT=GF10?>%zy!FH@HZB_?>d zWNlP0k>W`QSMFp8{(uvU7UVyeu&hL_v0Egbl&uxL_>J*KFEKeeG#JK5Lr3fX;KxWx zM@LstQxRDE#kS5&uf>IUnw+eo)#omM!o&*ge;12KAZBd0sdJ^4&b6Gco3*LC8XJ2b z9wlLARV?LVaR*gZRn?lEX&)Yg=#2Hc9rgSSLF+gBQ@5j*#ezo>P8nsCuec){aDQ{Q ze#O{Sh62v$8_9TWp2Dgw|Bn4X7c{YripC8VL^%?^B<3 z#{SO-QBm`swFyW_m~G~O=H|vHW<&?xoOVpeLwR&$QT1EAP&l2OX3XJnsM_zBw{hLyW-p-0GDmet?2Xnor| ziDk&9APKhh0tx;f7XMyRG#Rz88@cZlG&n4@Gw+j;Oq||(3kKaUH6Msz@dNHMo}xt# ziJJZtp&Ma+?!?!B7X=2hMaY>oO8vvaP$Kb}%>-jmj?Z^hgM)(&2U8*UBCg>9;5>6z z$)ww|(Y=A;v|BHRPb820Ere(Ec7q?nguXH33r>YowK#!b$Jgv-QSXrw{~fO0 zsENk%_=Cd}GBTnYF)=GDYButI*DWQND#J^djr5oscpFtD5d8DGpa=#0f#>U61(vdO zUi+Ty8)fq|oC7it98xONAKJMuVj>&CjHxHIGUovJn2=bV50gY20;iONCKiJ zGW8?KSGDk4fBiCan%vKD(Z21(@LNa}epk(8$%mOP#8)RLse79tenElCxw`xl7Biq6 zrEKWeHW9L=h9D1#P++%Ce>WlBBUtKt6WBtyYGUYBv+oAp({E8Cy@YP$bWE9QlJMF^ zmkU23ZOVC=6^EK08!lm3z7P5l@q;b>o9pZk%O4y8ufot-SS@?j|8`mPIl7YCE&QT< z37K(eyNQ)Ds$aYQu?VL>nC<0#!g5Y2b)FfgxjF**Brb3->_QTW#}@D)%}afJu7A&C zTGBxw^@T~@gkPUtF+>jJH6}cshpU6TANF zKX;d#X%ciSI-w$(rR}SS^OdJZZP<^ew4PkHk)A{8#^aIrJ1e^pY(Xe_66N~8Ja%!U zocDqsuKsp(c8X6-s31Z5%y4NbGe7qNF(#oGSyyv$h|%@MnF@nm6_<@Isk3^m)Ml$6 zdCZD*$7>T4L9ja!PZ{YGz3Hq>74l`X=RQkvd3xxVGprNq+gRI>RuQFl7r!q~t|Bt| zu8tt`WOW%&$*HOSvHIMVrrrFl7~LQU#BndBGLEnyc5=t{ThzZ2@~J<9W8LgT2v|l& zhL0HJA3`lDrL+vDSt8(sssw69v=IX8LE5Mmd=;F<<->kKgqt zSeswmUuvn9ZDfp3_nUI9q-mrFM;+DXd5TGNxn`f4!o_&f8D8z?3l=^{be@&Qy`RN! zsgos>{ad@=N?eO{?6kFse=hz)mqyvPNvUEXgHj@&@$K^GBK4qaz2H<;9n^n|SK=qo zX<#;gRR%jtiGxg7yLysldQSJO5eYb)>^aDYp(C3|do;g<7I~qJ-u&wTJrv;i=WU>r zp;Q(0a!uNej;7IC6>wP>djYc{k4{@F6CFVdt}&6(??3-LA2ZqTJ z8lEaYQHqlZir!@joml@V{KTxy<-^q7-2**X>$Vun2`bwCLh{efEO%+rm_$Jmg@`3b zb`kw+IY&GZWlHJ?lJzpb}sCi@e93%Vq}j@y`R(E# zaB}PEtt@bZkRuvo16sYQ!Q04o1Ux$RQEZEb7u#h>U!7v`KLV?6;+i``)Je^u<9Ys%61$`=48)4i7#CAgVR}=oWdYdn9q!{izbZo-* zep!oSq&g)Q`ZpK@IVyq@c^GWHr$x|fveF)KZ!J4ntRC}bl6^lYDG4{3RVR7Lx8YK5 z=P`d7*kwB(Ui?0%Z0rM$F_4;Q@@(U*IC!5xe*$KC$o>|b>|;@{d~EQolks?3#TYaY zRv8U7p0|&}V+ufE3vuGE46)%+phS-Ha=7fnc1L+Zv3IBweK;Nx6j@8JXm|)js%4GW zg5lFSIXknZL`nm1XQv7E_NJw$b0kiNutX@jVJ|$9jY~FhxLBjdUcWWHmW~mmvzhCClkikntzsw%aG%%Au z1UTF%`iC*OkY}(|3~|nfvN{XxCxJypPtp|M`vWrF7B_ShEV2#mO5d33Y6-tMETT`* z7g}UEfu@Cp%?3B8o19a2%1zJC5`=KH)UrNO#HQEyP4&B?RN2ra5TM+SmgGnD8!k#r z`V#|BTC3P1XP3XTz3x1%{j=J(0y^d2QX)66E8t;e#fMaWNPEFk^$8!8|Jk|5ei)yX~dCdLxFOytW$H>ksfef9+c>bs0QvZ_)+KZ`jd@M2(Yfo8iVjLA!$})X; zmYTFLKNttAOdgF$cQgypk9rSgv)5qnE#-??fw=Q63jq-sePyIbzs1wEDPG767ZZ7Tp<&X2(CacNff6icFdRo&qJO?bW^>MED!SGSctpBSFgGN63(z{>>EQ}EP z&^1H_6-OK;{_Iq6+(}T%%0>g?OpP^>ZpPy1dRW4B^RT9s(kse&sXknZL)2>B_N_`P z_wUPtX@-^Tp~Go;mX)I@FhkpAyb8SU>}1ID^2&84_+-IZNcB%SN9GHhw+owj?l(*? z^!0kzJHLpwZq6#m9G=9jA@ExuYDmYg;=2Yd@fDmj>Q-WQy=F}5K`kJFi6P8^>g zPA8(JH-`*af`0xvNdksz@uo#O)kMPvuV7zU&sKS#*uVJTc~Wkvhj+Z=tedDLBO}{c zvJ(_s5MfEgM;SnS5*9`#*!pc0pkWuNOVAmOYPK^w%jb^-9&oQvYZJg^UDYwZY;4NA z?X}pAbV^iF#ZJq}pl0baO{#HBL-@JD%NusnYjGGE7$+^2d$&LR%k!dGV=q@6sEOMv zP~8Fd`@7JFfLtV zccv`C$kFy)<&e+xp>$_Qu*ZkvObDVi0%Ah)*GMu0Z}{?8xW}gRbzkuY$|q4^d=8gz zuCI@QxRGvXYZ`SkAl+Uj`r-cc;nO|Wic`(QGW&I_i~VcV1>`3MrwWrEHatdMg!S$F zz$c#*A>zpgI%yK!%0q?{&pxcrZBnbK4Mw|+eEf|YGfIKr?ED1ly_wV*HwJ^BIHfFQwQrVd_1=p^ z1^+I#4Q+p#l1QMXFY`FFX$zsJ>-_2MFk=E~uU%|iNG43li2miJl(4+km9-Zg)<2f_ z?V+MUJ^3d!QhotkH9Qd2K9_y4Uv8CLY;-X)Hl{8^_OnsY)qTyT`|F#twa(!jc{AVU z9D5EH*T?!K4*R)pQDLiX4wxEj*J$O-&9HDw5yQLR0}EsWsF0rvZ9r+^;uy zLNBt6CqUG+v`9{2=pDNfVTM*_q3o@9m|fdLe`Jw`ZN;L!F>g3)!)6I5nWi=&5Z^PB zAeC;W+(q8D;|8D2EuzxJOA-R5<$lVZgG#?|!O|YOO)dnjBxXk43lI0rv?U_$3lk?c ziFp{qd&;gLSo}tw52O2SHwO zcAuuXT`Sn>4muXf?@XeLHG_4z!_Hm0{h-k#vG(+%;u+?Hz+dAlnWgA}O z0If?YMEcmwI0qdXOh@zW)0aVgdhK*kZ6=2EEkwM!s^1#KV(6@|#g=($ggLb)66L$upHL# zRUuoHj7-#gx7Fj5!LiZe*7LDtwF_aPPx(m;#H8HJy(mu+bBh~t@GEwY> zUq0|9^=$rEHHY_tW&@2)_!66^wN5o1B$E%>Dzh)4U?|UK%v&cUNGi!3fJoZM6~=P3 z;gjhq0T-KPXsfhNtu=sB^pqSEzVyJ3)}ACb#fcG8+n>J0*_8Dvlt3pqNNQneyKD3+ zbiz*)uKUTCt>9iqYPxV>w}2ajgrOiWD;lQHUEyFE|65e`E88WJzoFNwwEEst{yQVf z8>5b%R_$~0Y2tEf@k--O(=VW)7Q-pqC(=LCH`a&A<2446p~`z&Wf&2^1A}{_C_;UE z0<0(juI2(@pmJKx8e7F*4u^+;KUV88%necWOf26XBXJmj%=;7*v9&9fUqWBT)zwji z79Y^GmA?*4>}L9Q_#`|tHHd4xSSNX$)hdApGn|*vlE*XUaaR<=LxgP9(WzJ%9X#M< z)y@e}f4`_ICY}fd3%LD-^(9buAnZ&EdEn5}>`@g7eRMJyU;o9IVZV@yNG>8G;(ak0 z1}8)zctH_`PsXU#OuslOtm zmwjW%^|dz}lZlmW;vk7w>)cXnAzohIUrkL>X~-U@8HDWm6f7((^PV5yqt{X(4}1Y4 zrgcWK7WQP-i&WfV2KFakp|`}#t?mIncb6wDi1J+>ZNp*GtK(9va_=oTrjQ2L9*Xr_ z8V%zaramT#5` z^-`VhIf7bEjbZV&c^Ki9mb)s~irKN5(?4^*H3<;J5CvU9AgMd+d3H{c+2vT_9SDtFU<6wm>U7t=~;_lr$sG^q3896l?VV7oFcQZ=66k*Z2OomPRj5(m7YwOJ1*l8I1r zws3bsoF&qsLe%;|=wWqcR~>l;E9iidx**7Q=$Y=U>g(zaL;xk-25+lsntv#bdNduh z%T>GqkZz7|%*Ic4pF`g=W4PZt({dX$haKl3jNq<2|jyaxJCk3<@czEb47mtADjo`HfSf zzL;jI#W4{UYU51@wS1c+BFntYx;WD6d<9!+m5FTsAs83dSLWzU%4jGEppEz?ElX5L z{&XG|D^3-B4HAScTQEX$UIZ5W3j_|o=?XLM{lfeDH|2SP$XW*NecUFJiEcI47~N!ik2vx z_vI1F8SIzeI&$Gp-G09|mzy`CZU^CAab&wT-_EFDpPZdPZ+;C|z^QvV(ijqKDglMd z0}7UfB*AhrmVuE5r)~EsCS=YxWI(|v+2;Fje0^dp<}ncnKAEZGVG> z6)tXhSbD!3*gRSoAcs^lO)y>D~@m7s~nm zT<5u3sG#-R!?T&zk?d^=`>|h$RvNbPm=LWyg4@{6-#1~uf}fUNcK(j3_K1#-o|k#% zc+J@!Gh10{>$~JY>q(A|?@5^npju`pFPNd$K~HaMJ9bmbM-O2{EO*VAtqcdq`*D^Z zrx$$ugD6KT^E`0bX72J$F!TCxsq5Xy^rTTYg#NMR;43IY7}y4Wa0N@`grDD#L z2%^Cq_0jStXX~JKs3Ao&BEt2Nc^p}H?pR*s!?K?X&!`7Bw9i8!pM{%K$GI9V`L`g* znWvIQo8#;~zta|aMn*rUvzt#`UfN3C83~u%c6`y z8;{ulkGU?1LkT?@weDypS#T+AB*SN+L~1nx`{a`QHs*nVBspuNLpJ4STC|QEyF<9c z-%|)#uyaTLko(g0|Un9G2(PzD0YK;>(%3WD5 z%2EvdEC_L?V#b$6eJ=~t>50UcOJG~kX!?=A#zRv`FMUtRVQXdu^7>YH2+E-wr z&BBQT7@~`)!Z1MK`|aJCVWwCZrcrSU;XNk#mSK=s^cPNZ=s*bCKh){%dBB%i?jAP% z(rRC8R0wRwhJ~QNdNk~ry&t|!s5Q(vd2^03x`0YK!EOrb0;_OtYs4++e%~W91%*>i zzPxF`=B=N$K!g@~I+!R})7E9O6qzN6(<-;qx{ZAavD0c04iCQlf(@;x)N1h{!%4y& zE1#zk=0Xkcs4BU(|JtRh-N4tBQ)f>7TCfh^_v{G)@iq1Lr@lW`KMfpl2+PT~88v~* z-Ozd;t~|Tv_y=hPn+IJoW!m49Q(jGXZ{rUwN~#SDBwpTp96F*`wzePKYa`k zIaXU5r-Q}5Msrm3yIt8Yqi&}r-b=Yi<;h~v``g0-nZ1T#);Z!@HO45qiwj(qjlZpH zksxZbHZ1F;)rSW*q~r6QYsZz9larKO`cRvLI-%kY7>!r6Sn^Q0RmfXnULop*8-Oa% z;<1if(UvJPcmW9xldJ+sSYe-r6ih4;&H00i^UnoKeeYNMyGl9M^!$^C>P=0bb7GcFm|A_QF(7 zLu@&lzSFHsUX9TJ#enxPysv(BhbJFW7^fXVtS;OeBwfGKVkHQaXi?pd>mTa3QWmH; z6->al_k!@;B|K{UdvnC>#&V=3jIiSd7s7;yh*aek)aiPqQ4cle-(g2`1QJ7wev}pJ zPM=4%!?WYE#V`oXBO`Lc%(2wPQ2QhSKOZNN0rK>8Cu&NATkIZw7jwJ1JgY zs}9T45tFI-Y17#0P%bh8;_AG_+Va}>y95WOOa7?G`8W%d891%L$FFLs(37(l*T zZ@#vbKsV*l>FK_`@)7R3Dr>1YTOsB+?s)TgXKi%CY@nZD(oBc5lQa-Kr>5cZQ3?fu zj!$XeCxKvr3JKPKeSie%Y7%L+nZbN|aVSMR&asm6!~3M(XIVD55-+n&aZ^v@Uav?L z+h(pd+6(Ud+K5KD{OrqIqQxzRN|U&dp6G)L7BslU7qk3>!I=$7I&88B@`BzT~6 z`?RBuyzI)zv21hnbb!I6a-5z#XEvNd?c*5LOR463&d`o%=9#Kp=k39~7LdY+DMIG0 zzhTRv9~o40-yn<}bPqzTIoxKIxvWQ%+xWomX13e{4DOEmNe6WW{r#{<31J+AeGKL5 z7R^A%^7CzCB`W~0-@ch(QxWw7FyCla@*I;42`I?cQpnkxWLW=gpg_m;%7zew z6B8MJ=d|HD14Qvovxy;Km8kggk<~F|nDWJ%A@9LXnqI}w5wxz`Krsva0^*nj|5e!V zg1>&^huk0E&GWTqNP{T}o zkQ3RqLWG*wSOP@aRqOdjfiHgXzdWv}vRd53bM&h@UBX)izOx*}xJ1RB`DuRP@!j2% z`E|7;b*q6~C&`^H;p?un+(FsX*{`$mS0f`O?^@u%G%an-pN9b zF1$m~Fm=0>4GW-{0TSm$nr6-9WCQ4)kZh}N{TKgYrRmMb$3H!pav*%th{rbhRlh5; z3z2A|itw(AD+fqLZRPgUaI=3b(qT{ZSP4*wIU*D>==@LmxZoH5pX4#6!Nbq?2=whl z#sM=Tn`<5j z8|li*ls;>_i?xiv_Swpj?`IO^5IVaw3Xsn;Ud|DH>@@5U>&KPQ%qwry%?k!cvh8w; zw+e?ztA@xB|AJ_Cg zW21^+ge=@T)0jaR$Pl1e@@@ZH=t5FNL8JO>X{E!pS_#cH7 z5OASt<462J9b=vocU=eCvOM`1!|uL!o$kg4y&R`Z<=(>Ld&}q0l-Lbp+S5lxOO6xW zUHjrL9~}(}Lb@7ew7tJ!4w$L(;=h_QIWn%h2sU-J9{VNa0rk#cYX|}VwyA4Ihv>Jw z>P}u1PUSU11W-yt%x{F>IIz(pCq`r2e`;N%>`J1(PL0HTFNovg8vuQM*P4i`Z+2gA?`qX$y{qQOK{2(=edc~2Va@Xqzar5|(UZO3unC*LK z)%~e<^g+LMdHWQfJSJtj{X>>y1i_08Z7!r{g6kI{Q|!M86tQSsaddSa9sN+STTuD> zGKpBKpf{3MM!bh`7l`mF%l;#k68eKsN;CrWJ?sBEj`C*ch~4{SS#Dur0>xN128|jP zD0IolFwXK`5@t7Hml>Knq$yIu8Zk-*aEWt?d*=wm?3$2-a zu9yhQR=S5QMlOAEYm^YpiU^s@FSKX3WjgC59vCk!M+*g(-4~ibPQEG z?NGHs@trQu*u_hDN7i9k9in=q;%D&`p+7%=cLaK%qN>29wD~g>wIe1#S4;~6v$%er1H$QQFv9h z!8Sa#%oBf*#2)~9Ul6nrL0OuxGy;eQK@vwviZUVMSXvFOe8IQ)_-6!q$lkGK%)=)u zijhH^&E^5J=F$2{TM;J=8)TuEU%UNUpN^5uSjfUJqLg-QEJB`H;Nkr5fzR8Nc-|(% zH%vDA=Wj;&BYQ{{Vnafiu5gHY;T)jc2GGA)FT~J|V$OX-3qcZsKp_ydzL zEZf^$?_Dd;qqto091@M6SX6r{9fcX=k=&VKfTCM5HE!y?5#Kk0y)x|qYMBB zeRT;XF$y3F_hJwXH1+<-+yV{C;3y>B>@%b)Qgz?+Tu%{EpgU|#q9o{&S9mlSplbbQ@i9mL73Aybj1;+i(DU+$vjIC7K;lq~S^ND}WOdZ~L3%;=2E85hzof z>4fm*0p%$1voJ#f-sKa&7&>rTsTx*SQi+hAo)DaUkg(0zQf{J*M`6i+af3x{vq`VS2}$jZyNZ!HS*Ik<}C z8ZYIzkG&C8sa+#81g&2_l)RUhZO{AemayE9j~jN~KHINuK7yNb_y2m*4Rg6bVfG#M zUq}3tLTYAz`WsHfgqM#k@Mv_lbm0kN0m8;Q$8Dd54D)iS zS3lMg06p__;Wn6BU!D9yvkN}vrQ)oj=483s2YcnNGfs#)_~5lqGicW5Y-833{V%_& z{R6;kiJ`Y(AgR9t&d2Kcd=xs)KfM);R-$Tqg(i^@h*V(xAELx`qFRx;G)KLIf!gQt zliU$_;U2#uY77Je3Wc48HZq=@jDV*?eujU;+T}0l<`w^6a4i9n-Xg@)Ow;D9slD9i zdIQspjSQ~NM{<&~rY~_n=>5kwt%Kl+8ZNb;%1DKUW}ex`#Z2-F3LRwvyoP30nAXfB zfnd0a5Y88n8r}kRAuMVtsv1q~FVFizRt4O@BY&h4`rHJKh=>%ol0`-3d)xVMnWwa5 z$3iCp(B1+7q)|1|+Fx94Tx=MK3_lRuNxb`jt|u0~()(nz5j{M!`oxZcudr9!nG!R1 z`nc%lj9X2B)v0|XdQLos06<{q+I?0kryZ-5{2jKO`Qg^nFamBXs$am5wu{y6s&$9H z7J0vIn$%H@^b`u@KMcaFLWzk3=R$%nHuNe8CHY>pUV$rZh?qfQvr{@ zE(Ma%qHf8~VGggfI@1;OI(exoeY<+~WnH;S3#sP8z->unE27eFo(jOA@JH&n%6X^T zGcFda&EIXebrkldtpZy7%C~i-s>A_UPZ$prT=Rk-YG#79HAX6mL1&*A>kqaIfNFPlsQf@5{?sTdKH_jx~L? za$Ryg0d(LBm`c4A3jgepy5pl_St%X}*2Ytfl6>`y1+?+fBdLI7Q1d3N&X3V)v#^yNU* z^}okl090aV0i*`7=ZmUoC6I)tabh|FHmonksjYUP_G3dRURX!uz`jcq_1>+8By+4IH#pFTH(e|8BOJMDKMYTn}AM`FtK7>dwi z@V`Pj2zE{5;XJ6L_G9A}C#O?OTu>@%QX;Oy-LL|X;|E+Dp_NZ}pYYSTcb2}sCpFDa$znhr+avdr zheQm0^#;f#&(0@`){S z1Ovw5N&;xM52a$?{i!2=b47IL;C*FxzkZ~|ll}rFQ4qpKju#02YF%`J^Ac*3%*D_D zYH*#Bn_GQf+gjz@j~|RIETx87K`AfKv}P)d5PRat<5q=|!7aQ!cfY_a+MHlvVPT6u zg)!sZ!himx_5uN)&MnyPX8~SG;JC~5S-<*xr%1_yA5o@1t3Dn9go zrX=3eyX-b9BeP4zkpVt3EpDwWEQXE&%aeN+7=8oj367$BS>};_P>>DJ?ofX;U^&Xe zlQHRi;ENu(D3C0jRU^7Z=v!c z9onml5IlFcb?~b z)-?fj#>wTO&P2HZxrWBL_hnCa_v#v;uj7%Q%5y!OyU+gI5JKYB)@PRVD3k)JFxRi1 zU6O1O!x$N%5qd99o@F5raeVwwVmLD2kPIKIGL@T2C+JPVnBUj4*Hd$6VSqEkvqx1GIah zKN3xyA*POcTV2vv?owbK5|mWN0PJE4DMu?Ns>DP-7zeW|*R<_ucL*a^79}M&{>{*k zk)4$+NP>_`H7(!&9Ud@YKtoR-)L|+oC#P1fuSZq(FdAK=SxyCkBp{+YIXTr*gjQZf z0VgdlnamhxQ#ZH{z~r}Qswu3L;W=_HP9I(MgTX-Swp~f&A=p4bJ~*tYh9F`O)3`4R zWyZtg)l6V2k>2ybhKft~J4s4fej=o^&7dE!*1+$D`74u6ZXBGvVLk-$9d*eyj303v z$;vaTepcYMF*3@$S4h$-Ho#R)P1os!!QSnvsUtyVkQgm3-^pS96x3*(Y89;RT7EU$BNaN&kyHQ?CTAs0U}k93y&-WO|CJD zGAHMg`gqSAIc2Esb0p0FZtA%XB(Yw;56m*~5a8~D@)Eg*0WD&~9NcdTr)x=4R(Do16dWX(R0wc^i8f3` z6wKftiAxqV91^C2p@`Vno+{IUb_CW+R$73A2E!~=Dkx3~S;9#*%R7J1eN7p>lUJLg{8U?RxbNgG<@JFAV_OlF(pTx)0nwBD4wXnV!5IS zyABjwUjjCon{m{|tvty;pea5=aDBQz8xi^B;Lz_1m9mGZ7rc{_>ZIZ0;~Sdgzgy$l z4*|N!HU_RHDma4!cp*Ur1v7UVb=#8kbd=oJM5l}q&Sj`jSZkcru8OIVwJ{ihg^S{7 z9eT3kz+qEbT^}cgzSRK2!wc??B4lQb?6xq(vSuVb=+0pwd11XCPbtx!>!y^-A!Z41 zPCp~ipDF|DB${28_Bh+sjPxp8gD!RwhiVm zgtPzr`mUP*HfWZVjzQ657KM)0`y~6NbI-W<&8+;9G4#`?0Rr!<0rr`l!^}K|sb7X- z_isJ9rr5QE5wDJndw+kCwXM11wTBLW6LY`Y!eA*Y9kt(60v5&QzEvVZ&l1nN?EIhyH8mX~9xv;LQtm$Q+R%rL{K z65jrP?}Tou@$JbVQxwAoHy&P1S#xzU^g_LZJBEsTghIO6KiI@7s>wqEwf$2)`j%~A zSdmHrDl!Ifuy(DLsTC6<&lZc*X*Ix;ntF2r;x5Q)DA@IAsU0c~2(gOOU zv7o%Ci60i4wM>``O(+5=Cl%n>rCN{;dm->Sj&Kdp=TuN1dls4V^#-6T4 z99^<^mP+5s^6{LX0o|}DkPm>|xtTVV?A>_rsBXNbo=hsDTkl9eepNw6&3ETu`t8_l zZcC2HZs2`_WM36;O?3tX=nQ!i8tpI4VTYPO+vj?a4~x}0ex~!DG*okjf$wclAs`Chww zrlJjHBrE2v!q=DL=&pg;iKWby2?>4nX2?1bvD0@&4Da&u+u5SF!Sfn#24{)l$b`h3 zTo09p^MqS%M)f0A6`j*#Gcntv`beH}cw6YjehM%s1?z(jnH(OkeOIc?GZb55mxR+B z%N>n)W_4wdQjLbQJ{b7k(7tv1%hJyiX^V%Z=nJHk|KAuzRSi6#UN|rw#q{%gglGIN z@e+F9>O?QNKPlm@o1sF&y0I$ZTxO6xZxJb}9mn1(dWB7`oNprIY&{ci&pB+NQxXW~ zXN^q5us-0aD`stX)WJ2?-IrnAteM%);~6%FlbCEArvOQikR~}1K>;<%r2#(dB^K7U zR7~L=vP(hKXch~E{T&kQ7nmf9=;1cUG4t&wXIH6F13#m^-(QMMjk_p&LYMteg0K#j z@uVd*HEsC)vW|uZEd~1ho*tuW(FoV>D~*e^s_A;z^&*S<-rvvFFfK$AD6liL@emjj zvMVkRQ=N;e0ZoFC&|LQ%@kFxn@8$X(W2|1cOTy&UKP%WF2PG8gPUu+6D=GgTnr8j}mOn+bezT0S(ExOWW zf*+bB^BSyMv&>8#(uXgzku1KhD`RVOM(5ue>g=)x&GDo08{c^+q5 zIIm-r6jbm@H3!ik)UaRfYcHnQwBS(a>08UIe9yLafvzR#tA!@QwxgL2W=(f!#!Iwy z1EefrcYm3Il(Xez#jh~25GpC;yLx~TxduEH1&E{fRi@XKuC|IdPH%(t!}*CgXlb(E zUOHGXoHAPGAwU_<4NoA^LX+iHm0zseXddE$*-v2m7DyYn(TS>UfK=MJ&V@V=^lvS| z^X6^P`ZQ@}4QH2Hijs`vSgZR9VqZrXoozWB&1BfTsml!ZaB%<3mbshNXOS0ka@nKg zvTt?;1M}lZ%6@MD#$$V|`RP;PJ}?qxjDg2!VvGv|Jy;BJ(&ND5SCnyqmv3+&&-Tbg z#ZEy;>b}mM)#R^qym^gI-9o%9unjp4A{GlBve%8Rb|YSZ*QMd)SRP-62dC@P3Cexk z>(##zZCsX}mOlI0ep?-RW@S3P)ma?8@3(3z-KW`{e;APKg<*E{iro8$PnX{eq=;b= z2n3Nn58{B9XU=Y=jjDiu8V2_lxvfjlR(;OGmU4cp3o@?BM#}cmc zg~>rF+CeV4-RnThmlToeX9%j%+UX{PdL`BJ*G^q32?=rcTMfy0rI6o1k2J4Xqk9?= zB{waFa5>9?k^-*e_PpZ=m?0JR^X-5iN)?u$?SCe>=%n(bVnz$(2%YyPWGZ}AgpKYl z4`-U(*xl^SQ1&(R9M(r`{QMYsbt-IoQ`mbaO$XfD80bR3={h4Y8sec=q=Fs2r5LkX z9KF78;Nb?@G7jxT7}@anYlU|RJ62%H2s}L8Xy}{iKxRh0I$vZRveKv9tfBP%gU#upEFi)ZV?- zK)leYn$(Yp?HQ@8Z1yqmc|`l2a{AduXVOyZx$t_3!?Igywyfb#;J$zr|#R08YIxn^1t#dvNZ4Pw3XJ>amYP;Uv*k!quLFESy zRhCHabyt{!@3!K>W2!b!b~=gg$40!rn*$Q_KvVMb0He4tB2z>}M4~*YH87*a)rTDw zKZ02&y7Ey|qqL7FM5}RWBltzu2Ps*U0UBdF(*mx6p)bAEm7(mAHEss zzK)wA#lh+1zQ37gtQxg=X#LS_Fz90ti>1Zi1`0t3PhCkK&aWR1q+ENBQm9$Yap4ZS zKWw}z^nT355_4$Oyc;IHMFU_)I6NX^b=O>7@*NLMpaN;ugn(qqCzP^)

Qy=)ZiXYuc-zlUY(wveV> z9dsYZ6`Q}xXgl2sI~q!R(d3Y=Z3;g=X?9~-5W2VrUdr{!U@%x>>+;&#n$v0*YQX~A zx2qUdxd;j(DqOyoFLmYXj3S(!JxR#=#H6R`Y@ce&;bQYf0uoJ@$*&XT0fTVmGLZw^hqU-Q0LcIStaS+t~9n z=JA7@rlE1zn~}Z9qmT8+1!=_U{`jb>;zO*>{<7fmTY=mS z3-JV&+=En4*q*{v^J6m;O4qc6@&Nkbb&?I|fdxE3aBF8O#ZqGe!-)0w;X-^HNj~-`z^O*b*a_RBXxO}$lrScfTsai=i313ClZK762V zzxe_gF3Qc!q*z>9ijnXAPtS%1AXJM&A$z18U2S_a1Y{IZX*4u~Hy2$Ze`AZb_oouFx}o{EUBQUcplA*_(wIC>XJ_TCOA&<+zc7WH06 z4-Op>=hY+CJ%Hw0)ecM%fld?J%f*iuHQrqE=6mM3gg_k5uH&&cT~0tk!l23dCr1j2 z)X52ajK#Ka>;4C-O)fv9^$LBi4o~c#l^IQy>WtMwp@=VxHJXO)-wRE*>TQ{~4@bXO z)wq?gzfP+FO>1bjGb3;BIx8}s|7svWgX(H0I?BX|AHeKAYhO(#aG3T!1yEc{Ca*-? z&mjU*%B)9lCpxDwDwN^$zzu}t2A3YOkgu=jtNBso#55e`={MlbWbh?)-iV|qU~cOm z-RB57YF>Y`;mNQ7(x;)s_Aq|&Xd))%eix;D-MtC#SAVYJ;ce`U1|fR*dA2hZbs>^} zPGmcRng*-##6vLU^D1fricd~X$R|IxD1fGf&Tpa?LNLc4(V$Q2*o&qQot@9P?p(ap z_mrO0etDFk^?$k@D0u8ev9o!VgM+O9o-&<0Lo<2a>*fhsG`|pRtE-EOV*;;}-s|YW zJ$wmq4fZycAXtDR7~lM?-D~?cP)=`t#?{vsxSTL*}+UD^#?K+->;E@ zkRw{!@iJKgN>DoD{yHs)d;Rr2?+a4=2Os|Y?ku|dL&3*=Vd^xbpT=eC*%$lbb~|CT z_x;meChIeKe3+?1gaW>VWupjS-M6)nK;p&Q4<;7{dM*$nsr8xV-;E4|>5~mOgV0yQ z%7v}RCGk_n2gXGu;?I692)bgb(lnLBQc_3&rHsOs{QD7mp{KZb(4YgW4}NtZ;BNxe z9no2=dRrw&v-rC;md%8SS)Ts94j_35g=|=FuLbc21{Ue&NjD2(Nk^~fOMkxp1qAa@ zZu}oeNViwDGI8*U?TOjDqYeQILvX_2!6EtrfjmV*kE)iG`7YFQhhNPy{HaKv6ts5R)aeeXAZ^5#-Mqfi3lByCczXqWm zX6+u01-qj?5qMW@Xn6e6H~n5*r9GMz!9m9PwawF6aqm02_VhHQ#k0C7&BH+%s5&J> z!c0Ggp=-DM3u1#c}z5xM31C!Eg+3)r;8mj{wgyrM`Au+g9uA6}w+Pz67^ z&uAxNpE$X@4qXTmH3Lab>t-%UpurM{8>)++W%=J*k#(~@1$5T>^T?;61pfW_NYLmB zK-rpHZyEHGLY^aDXwRWal?|({o+>=;=8RP4gy|Xyi|GCEjrm$6IT55&%iEWF%30*g zfGx3fp!#F8`~B-})%yDn1QN~GlD*g&xnfEfeZJpz5dSx)dTAQs`e(sIOX{lJR9Zby#ru2!D2NoqD59Cy9$*m>2`b5o#r;n3Oill^{HiP;b}!AT zQO06v#}8@Wk8)-(XHkFnS*35$b|!v#=}Bf^w3x3Vwn}bEDd6vbpzdyJ_S-6;8Kz!~ zgVOy*3)lg0_gWH*VNc;pB;LoqKR<4f>mPAk{=~F&NtD6_s%WO(?suAq&-w7}yf>}I zzlIf^a=pa_BUC!G;+b)wgZh~!a@Lk#^xp^B2W%5jMkqk#Zg173_9qrba0v#AF+7RF z98eExyx^1djR9|1m|nckprzr!k)Uqx8NjBZN_+=7+9m6Zd-LNM*Y7P~&>Ih}$4vWC z;eFGXoRn~GzEp)A)QSB~+eP0G(KI0k$4z-8{$D7NxcKyMw{3ze9Yb8dI)Ac3QjP@8 z`f{?ULAGS#^=u}diSa=s1=;agsi9(cBG{occ=z*kN{IO4dP*PaulU4=jT@gL6tB&(01bmL*-f-nAY}SeaJON8Aq&|XJ)d)lvi9d<%Z&BMck~=gI{{8V;I3QcN;)@~Y z#YgnBr)oY8y^7Lh=S;yf=jzyKp=&0o3M|ZKD4Bod8vr>XbSe*}NNo-8+|@Z!8yZDk zVB3&s8sbu$pQr3AB^8Y+t;A1F58^e?KFJ8yf`vOz)IJ~;it9{0e&Oa(-#PmU_qg?j z^)>#0IQCZUm~*8z&5zD6lRS%MtD&r5TQ~R<;6j_p>Lf~Ur?;K99&S`UM->-wmAP{r ztNv`~ZxAhq_%^P4w{Q-}Wi~cR9U`PP%+|B^{%$z*k6!08D9S zMuB1Rd*D135ia_dR%!*b-Pt|QkHs;lMI(EN%VCz zgvqY%vloEneZw?9cYm1K0;R&Xp2@`!nVuk~mnnHU&PPV6ve+I3k zWl`aZ-sB@~EWSp)YsU*HltmjsJ1TkHd7i?!P;o*Hr)E7dVu8Q3LhmG0wREE25{9_I zHm~Og$g_n7Sb4@QBYFz5YQ?Z^iJn3^aEiIbOt3T-%e63Kw+v;e;jvvDFLgF+0$#nBXj zCdj+#i?O=#Q+W&7CoLujjCOOx&{&*AG-yYH-h%0(0AcHFdm=p#96KmbK-#SNe-gO2 zcd-Q1CF|&cF$ZGQJs4s040A-Hsp3gA5}dg9+4?F~uV6%%h!&=kWpD>u3)sAHJ#NRS zt;bzFv+vW5`|}!^P3>cAV5G<1_ya8itvu6dLmzP9bwiFZNFfKt);7q`)4zWIfgFv; zj62{Buabs&)FFy!aXmA$BI_&R&ik+70*LD$Q=|t5cHbH^%_#SA%(I<21qg(>L_Fcc zEQc6OuHO~$^J3c=7(HLC3}vo{%gafmA;SbWfm~%tsO5Awn7L9M8iPL*Hk3zg4f-hU|E2s_;g#%e*i!Jbc&9LP8j_pNT~esC;s2Or_X0@(F1u*klW()hW>7t&CjT3V}@15AHTsg_~ITDez`i-=V&j_VJto=QZq;>$>a?zkvSugv>Osl$!RcWx7svjx~ zC_YiZ2j{fIA%ryrL?aiV-HKjhEo|9)cOSPy)#iZ%sT*Ihi(1XNAbofOmKtxXBocH~ zk_rC$6_f9waY#es@`|>B3uwR(6dKcHdvHVsoh7A0*KyTgXWt1A>~vHcoTm(9Yx%S} zrQ?~B92E2OH1B=3Ib(SBxfHfY;rY)rS$U=Iy0uuyD+JQ$mSMgnXG$Ft+ILR}XBpj$ z_r|k*+l8S0E-3tVYyk6lJ8!fJcM?CI^O$3Bppn!cX(QBK76!UxBXN&m0HB7F*ci6Uxj_&?C$ zdAdOAy(lWzORfVL*#U$Z98yMYJ(G-ep1|7R-EKnu{ZVW+dw$b$KNYz%t1Bty?;z~# z-O=!0s(bTc0hy8a9n{IyuwWHyOX7N-^?~QaV#0G?Ns;q;VVO^U6y%$@>$0OYFXY|+ zVyl<=a!I`mvIntv3NUFLZ_#-j3xd!ieOk&)5ra$;4~1z+N?1Wgqu%|EEirhn75yUm*GC7S~g zApC(53FNh%Vzl>iWX$jC;k!d8L&D!*SAbMDR!0&M)<5kA3|Rx5@9Sspb*4Jc>| z%E-%OcG1$V76B1Nc zEUel21tP=)(K$I6{){@O$G~|dTviG=uiTqwo}-07?Ja~R{P*ENTyUKs`(I(4#2uje zxM8fA5sx0p$|+C(rqs~N&1m8;v$IP^#`bvP1%~_O8$}Wsjxv~-ktSK7^PAKHk8O_J zxw~z>RyHYNT|j0>&s3@ay8C-P<@kB*e>GjwKLQ}$A9VFfKz^V4ZqfznHL(J=(@#0c zo&;nxb?}tHcRFhJhQ5VG_l=b_&K&BqcK=t&yT$jfUK#9Eu;Mp*Szvyq*KxDUHhKteACP8IC_!4C-W1w*6BluSLNlYx8HC z=ruD+?pFcL#rfZscze2;d-e3O0ayV4tGtiF1c?VtDwPU}_XHLysJu~;z2MuXm`_C+(Sp ztGy@B0wyv4|Am9Wmnu@9#3p7StIMd<5}dxw*NERUF1fNJQkkIs6!KAm*jz_cE?! zWIDRlj~j1i{l`a6Q{AZxK1quY* zegd0@EupuEhqHnf*lVWn@$Nnu%Wj}_vHYgqnIB+AJWh&;pMTC;3A}t}AGp-dCC|ZJ zs;Yn5)c!no`b=E1MvZSV_ z%F{>(qv4D@Y{>H1FK7onSNg;FWVwyv@AdEXmCj(*OAw9owW+Q6!QfX$Vf6d{sAc7Gnga z6%kx^=P`pNKo4O7S^oehF75Y?5FO+Hkqq_|(baAYF9iNcd;h-Vs#;Ym7w9z0%F2vQ zOmfe8fJWJ*8!ehzglezSh|k+Gdb`naqFj&n`uh5#QYK8E291c8p9V?p3kvL;&d{jhy>3tpUgt>iza?cOV zvr75PTZR5WQR9C4lolUl=c$sIsOkCIyz`?Z#f#}r&N0O@@LB%%R^tEEki~qz1G(Xl6*TDBQ(FKlRlJ3TDy2+ZtS73 z1E(%&M*7^3$*s1PoIX^BvnKf3h^K*^KdD539CoSb;jwg$A=6x)bSuRKBi9bIVx?h~vx4-d$idT%yS$C!{VB z5{5_p33wOLVtgij=!1reYBHShocUANHPy{I6BI^DG?*&o>nnI}e_mZ(U1ZeJjhjAMQ_)UKhZh`G*g zPJJSZEeUedlN5#EK5HGO4<(s0qOO%3>DV}ooG55JUai*^9F%Qeji#5*gxLec+uUt$ zdL**wWkqql?F`UiBl9`_n9PJ<0PVA^?=?P)oZR4W^V%wsiV!+nzPj1#((e9%F)r2i zbZ_hX%;B{snBU#cxC)*3-M?OnYhz`LrN$u?&adk)*$fuNrxBkg&cH1HRtenk?i*Q?6 zq9#gWYqJ4p;5TX!X(%=IhO>M9-={I>vIHwfJw2UMBRHt8_>bM{^I!iu9Us{H^W>$f zv`Lt^MrSJtRcy>sv-#jq{18LIwUUB@M01yVUvqOarb|!H&kkOCHniz;1UHGk?c~-T z{j_Mpf-y>ROhCOXw#@LiS#qiMiM5bM_JuX&y)Ys{}|@<|ws zKYZRUy?)PYD~gn>*XY1uVAh=@JTmnwxL-DzT^+^kffhVB*xSsF$2W>}gtt}Tv2}mV zAREim2mY+BdWqNFcuhY^NIy#^qzf@JLWe_Rsm)LzNH1wtqUl4kKh}HmHG3MpuSd%I zYVkcero7L>R0X@VMv+|or2m)!ndyD9xJZxNyP~wZ-Y97?t-Y{J zrKhk`wT8L7;21gVT1{DZJZBF=)X3pia?v10J7=3se3D|;_>7(N_Rb4czVA5R>UoFz z9%*m%W4gNm2I#hfT|gSykNqD{l2SQ_raS9sB&w``xlq2nR&{KBsE6V$4JR8xA!M8#eGqy?IQ}7jsDydnd?*ypT(z&1$oUU zzsQc`h7J+hzkkTWs0CFiBXVDPK_haDX27IKMFgXFW6Yu;F+%N-OO?poJu+iNvqc;z zFCFIJJyJ;h=q>ud0o-@MZ`!-Elf-nb_n8Sg*AohVH9$hyvrFrf6iFPh3VI&C2|@Em zC3`oHa-5~(OX>8=ncNK<_S^~OUt8@Am7$8sJqp<@ibH%He#C1#{Vpvnjn?F2a-QXA zmRM&H>O~@Cqsi&|*koA5SNG_e1%r`eTAsDeS@l@K&)hRl`s4Nz*z7YDM09MWD)iEH zA|gDFGs@h*$_3mBm8kA^nDznG)&ZjDPDHikx-@$R42RhFd!?tdFCk_0X$tG=!mC=R ztzMjHyhj9M7Js~cE;h}6v3o4r7)i_(JFx5<{O#w^`g~7RI=}A=TE}JSAHKi1O-|sN z<@$WC0=+QF@WExud?xv7Mp_cgs(+CF<#O2l+gVUVT4i!3S13f%#tCM zgICci=@AOSMU2|i0=4|=1)1U3Q@`IebBdq@nXPwtGJmxjGIh53xNhJ*FuBjbvqv$In|YU#J^1oLW${{q`5sYE2R(i=<@T-B7O;(N^7p$g1Vk+uK_D zh+M5qrP*0;VZq`*ie`2fKhI8|yXB7#c`!itTV9v6@cD7EKT0zAz1<;?MJgvoYpp0* zwM|zNK2@n#&l-w`p65|(G51aa(bJs{5i@3XHk35;B;(AoH7vxX6z#7vdGY2ji=8m9 zJr2*p@2^lpxj_W~-V7GDFvvHQ9zKLN+v7f*@={Yd>CpydEcV$e1ypLyA2_hJ0MAl<~HhUbD3-_&o} zE69z6-{AV`)qTB;A|r6W;`D}D2aN%adGDx|Zm&B@+a6|Ox<><@^k@9G$?CZL3WO7* zR`V+h=GSDrqG5gvp93bFT6Qw?IemiK*{M#T&|^3Ek(6Bxm@ceBwpg9Ips;&khEHF` ztvuhW_vn0tt&j;V0U`rxiw3wilYH{4w(1FGABD{Z}q0IZBJC?dTKLK+<48N z?-VW671KwEk<>9)zP_0E~6YdY+kISzEKP- z%KNpd_d}!3>LH}YzGmL;9BS45tzhk8VlJ%|e0b>#0q^dVgo}EjA;rOTy)8zGkh1iBN0U#FgxYIM#cFG}t0hkdk5VVUV^32a|&go&(u2O58!rz5KP5u5JD z`ysrQQhmba(TI;Rd2SJek!?1Tc1H(3SBR|fkz1tCTgLsWU=7mj%IgM z78lPe2StM#lzJgSl!$7ZLj(L@q8;B;q@^N_mrmB#96smn(Z9VrLDwG6iCO=Bx%yMD zo|_Z6wBWWampzV5k{3(~^^BvFmoM0bc^q_| z(?}eDueY^Gg0SIIAMo~X_{9xcBdWP=bw(o5f3*3IS1 zV)Is1Ha|}w@2kj%4prls!r?3bq*L&RGT(jra6_TrT*W z|I}@e_}1@Eus7u0%94OP%8+AGdJ9d-E5lc0LXmN~mzo^{b2h&MjDJNAa&RL@2jmer zh4RYV`a~wD73aARYB%7#M)E2*;D2Yg5Ze5zLNrMU<}=Cc`@;3}aV)P{(u6zV=^FFd zTGU)<`jj-qb4RLXRFsWN1cVoJ49J~x59Up-rb_2>-biPH=u*&b9!pJ@1c^-x{6X-7 zEh4v9GygL%7WoP7>al=Q6f)B+APeh?mt22Ef%IH5p)D9G%vrQfx4ZgoQ zQV-|o7Kwa#?OA7UzETNE9v4|J`!Utz#8c3F*$*$bK3>|Jkr@vs@XS*nlU(lLf*H{Y zF?*nqDDX-04k~O#K+XE`35-Gop_A#mY3;Wppg^Iaq1lhf9e2+P>jB^RFU?1D!r*CB zjzbm~;1F6sn_^n4mR-rDj7TM6duM5v{aJ~?`RsF5?jjcP*E07#?0GXYQ*#FBD3wUX zjC5wBHPMf9eH{a8>+kiY$J3C-29AciUxndu7HotPDW~78r1^hPv)@-1L&vpq-$xbU zMI0o>SvXJ-9ZOWKo5K^RUpnTD(>#e--P{Z{YINvXW6_9Dea~7E6m9fH)r?%u_Z)-T zV;3bd_CTi$VpyauqdBT=MC!Q}GL3n+>S9#Jk#1&P_vO)ORc`sFVxdiL9 zSi`_J9%7S3wqykE27xxeIf@<4ez~y!q(P>8Z>F*jBv*(j!q^BCJVXPL$}jI zLl^kQog)({LciTU;dhbTNZo{!BZCX5i023$mYNy3v(ipde$;6v>-bzBufh#CY*^}P zb_Gc%lOrcH?$= zmI9OcI_oc9XCT(a;^Tshf*ZN!e)u$($@UAX1Ir>;IfO*Pt!VwouRhKd5hk!%v#=bq z8oap5aanor`C^~tl9&a&L$Pf3oP|bSE68K>2A(Gzmi29!e<$N#@@mp=bV$U@l!U9= z`rVup7(JgN=T;#kpwP5hXej@(Ohrk_t~X=y!e)}$*-6dR>-w0+Vk{?{pX-@1sCAce zb+L+NYd`O)m)w@EM&u4oR(l%|nVOms;Nw5Q!^4w`WMg4@1lkA#;^I^)PIhQt*D{6D zO7#W9K@ouC1BVC@_eo22&V1L%*U*9I&gxam$sJD+#Tz+n@^Tc=x})9C{wKDFdV)kJ zUURKl&@Hc5B_v7zr0Vf9Xia7oy%`?@9k7)kmoElS;Pgh@EUDO93*T0OyL>3$N!5#wta;nO%A!$Y5xIuT(P*=Ysu zxib(S(FSnrft4`r3w*M5j5_P@XrNbZ_##B>0J52tR!kq7s-Cbb8=b9F@lkT;+edc# zWP7un^Bs)2_9u52doRHi7K{+#w(CYLAp0S`I%_8%Dl%yJ9l-Swa5`~Il zvz@`TA*>^OZl`7mR8u`Ys9H8NXg>))@WWATcpai~k2>N&cSIeh4ldT4eSCtlzXE>b zM87Y(H+~L5bB#oJu&@!-VR%vJ2GnC2!D!`rkEbXUaMH_O>1Z~E^wOge)wsrk{?5DOG{dhtelVsh@Y)pPh#uI2jZWiL{GaLX_h7`t5G{83nXjp@ z_O`?Ij{t2P^~~a{v7D!SFLefYmgxzDUChzZ&}fB)4V4!Rn6QwEDQ$rEyQ?jnn;y9c z-V<5UyM6j|Xze}r$k6h#k%uC7bB?H#Lb2?_*4FqW#K*eV2c?=wJrCv@&9StH--kF} z9)*P!G70ZYNU%?uvuTQ6PvoUnc|tGk7Q=b5NI&|QYD1293Uw(6gD`CJbhzBGFdqDT z;&?o7du`s0R)+Pcvk@J4HU^=Z(wdG?oooh6?0?GBCi@2*@en;lDVuPFYRiZ;SHt{< z`|(PrrRAq(e~F&mDf=4OT&#Q$>LvSG#+R;|>~YwER=PB5zjtXMVXmmR zt+txsj6R&kaYRGS)tsx@UTWpXU20*+?|7xw;bzu)RR_nAJ_ylDQ=S`I8|lb6RM zRvB{G&qdc|AV?|q<*+khcRZhkn4=>PhaqJ!lTufp{lf84y)EQoO6NtLD^rExmj{il zUe(5X+Qi4_i25ipsOz^>`%_Bf1Q0u9(z zF6L$Y9@xPPb)AVu{+&KC6zgGC+$h>5?=A{e=+-usu z?f*%uv#bbbmZubiNPlGn2Y^Wy;(Di#`oh~3H&cLwBgaSCcV%11n+L{W#3}4u_R?A0 z)8^7~iTu8xvUTi;QRcPz_`AwvZR^a$q$_mR`B#nXlZwh0}PeTIPL4NtS48dit+<#+?Rp5u8Asr~3VKiQwLx^v#Wa zifaV`B$_wk!BVtJdZu~0HO6&#^U{Y#ry@C-IFI|?4!>E#Q)a#jVMlZZV|hbbnK&vE z7A;rO*O;=5P{8&Y#ZblUrE$`D?rAG-FOZRx=*Wy$nIH?FA~5dGHOhYdd84?$Onsr( zfY|jqtGd}%bDqlY(RVblcdGjGEHSChn2-)x>Kr9z7b`yI!T4$9 z|2SsZ^Pvzq3=!D!CV?pr@87~I)7ff}MVAqJCqZ8t7C}P@R$nGNj5yBr#bP5L^}_g6x{h1_s!V4G#YCE)`r4DH-ftxCrSAA$f#ES%twJ5&Vsvcz z!DRLFKs|2YuB9I4{lrvpCa?q*#kfD2rAV(Z7J}}z4L~C$%GsU2e<*nHuMBr`Y!T)9 zp0#i(#n;uyj&3`&i;_Mthv@MS{)9%lls_YK-BvwpZb$RJuIv37?&fEW%WGTIZ;7uhFA&#$M~166yN9cRjlZw@0FL!;OAaoM zEbX=*?s3!>c2KJQh|tnN7Q<$;G;FlqCWBo?&a2pMJ>I(mpaX+@qcQg-C=R|cVfTv& zlVJ)C+=!DOVbq^|{@h@YL&bgf!`t5)Ax0t8gvcsfTy2CYi)RPSj~8KH_|LznI(GVm{}EL1S&m{TS?C%yxb$}qCC7RS|KqxEFj;K}lv?p}puR zo7&CwS#m?&-p%6PX|I1g55m5hC@z%R8tn@Et zkH{MwI9!H^e$^eUNzo&EXo|!hsy@NAljm%Bsa;Np62^a;oRvnD0C}XQ#=QD7q}BVA zS!N;cv>z)k%cHBrq}83h%+ggPPR^P|)bf|K4lxAAD0YDXG=vfdw!|jphv@IiShQoj zOa~dD4hBs@I})K7M@oErjl)krgl@1j>F7Cmnq`jMI3{px6kukKAPdp67zntc5#3x! z)P5Dcb-w04Ty6@E+Zq-N)-J!l?N#m}+RE@zM^ve{m~{2LTW9>hUcw>Y@01BsML#!a(xxsW?9Evq0?J=P8%ky+M3Mo zY*0^gJLh~pI^{O*rb*mgr{GTpJ_w~u;Oz|0(vecQ3B4aCEDmKffxFhh{<2rsP;v(k@r(UcK>p1VyU>LP7N}$jUEle z)LUG0W$Be67vUFY%s5!IR1ubX*Bjk+HNr)2FZ~%K)LQ6#s?s0 z1~Wc>dEiXLu80zqFU}GTNGFoO8gOQ+NR)#TyCP|PX|U0D@@peH-Y4GzdAOlgAOcK04ntGi{ z`noW5L;thllORo%1Ne+~wXZJQw|(ZV?O_?9Qc+~+$??HmxVzOr#N@?Ug&i&tRayK| zm7cr1(`j_Dun>(bmdQ|=CF;Jpu~m+WqzAHc#1g9K(AYy7F48UvvQJLWXmCXSR$`D! z)311+nzH*=djO zp#0w9{f&_NM6&MpEaKz?T7R4JvwH^Ny5n!|@A2HG9}fXX_lmr1DzJl2qNr zuS~uuu^riH2Z=DaY9?&fbv^Xj&)1IqeHwelP6Sx%b=V^(hf%MF$jP zK6Zjeo)2T% z&em<@1qi7`I&Z^e7!x2qrKD2T>u&k|H zP)WoduARG)A=OMURM#W=bcP3hc%V)Zh;Vk=QfAMF;VAh3lJYdQ(`yH}r!^kUJ?AuTD=$}#H@c9vgwo7 zzP%-If6vpoR;(cv`RcVIwgfmF{yBVm5LF>RW=oX-%NfFR1qe5)d%`WQx>!i|Fol$o zYR=-h7Wuaedm1hf>`Aw2a&4j!5DMaVyBE6=*WQ|&u}`AHs;d>@vZZ;iZJ1*bMJtDq z%Ozw|9c2ANu||o=6eUih!dX} zI7TxuM@69<+iqY&L96QTVIeo>{n+Y)w(;9rKY9_bNL~`G^)UpG;x9g$??iciCV0f7 zndlmh!e__2>YX~18E>}cNQiBT8KKch5dQD<9J9?N0Ha2nW;~a=jAT;DS^1S_NEoG9 ztzJ-*08x8$^vN=bkv4dMYo=0P!hp0dwrcRH-FP?$Op=@tm2IKjg<%@_hD@Dpt=|+V zh--`dxuz2r{;h~&;b*xb$_^2s61h7Go8?~O&|Lnn763Z|ve~cUa!NyV- z3|Zfm@W5P%6lHq?I!uqlE0bh*$nzJMvZsEk6TU##s&bRyai1mj%Z}v4uo7}~q-=eI z2fBfk><6v<2JXvgtycRfND`z$JaxewWj_wQ=4GEjiOfLTH@WY93agt%9Siz~k=1i% zi4gt)9_PE?x2`;XXG+1;gM@%mc_-}Wv^fj(9U5rv?_oWF%2(8Do`gdcK!(~-)bllc zJb+dXn|~e8zY~3ns=!3f>{HfmNlAAO-lJnYFxx_TP@1=h4MN}!$*11SA>I-xZ+UvjNixcyb#<>6K&Eh`i9#tin#MjJicbJ z*3f$mLVLN!J)da?9c)SkAoPjNMkDeUIT+p9I5HA)LjB|wq}J#%d*kRkpY zq%EczWr2Zf^Tve1a@Y*a1slji6k&vjWPUW$s9z#~Z-a542z-QB8hW~4J4wYXOm^;P zicr6S*?le1Dn;amVF8^=5p^I?Bq&v=0hc37LJ5=Iow|k?Ktz_0M#*6hq)52ahi*jk zs0PYm1F6o(UgegFQjkXL4Uc8NM8BDrgUWzMg@%!^v5JkD#pTMY69P#js-vSLyTKRy zF_FKm`<6|#;AfbrkvJ;Ui1&im{a6&PvZfm*c1?^*&(w=KY{nX24<4qFD<~>r8&nv! z-AsbpSxY#rpnRH(OCM0@HjugR&ws)n4-1#JwVIv#Uk^)2NL0ISDKiwM510Y~nF9@% z((2Up_QCz@pd)dVs{sr{<>>$YBYcJxOSV>u_nTMmpU?QP{#ldUzmJsV*gQ{h?T@GV z7{0aZFK0SLG}vEjodrs)!9{j*>{i%f=Enq7#<6zF`&H z%9Ajs3U-kYZ-^YW&nJ#r0CU!GVG^_V z)1w9aE2sJFVw(;g5&chJqFoAOzi~L)Y+uHl(MqXrKu-+Dkls``2znSXn^=u84g~{uE2` zNigr;_f7^52GpDotYEiiwoPs;4`Ao}z!TBQ)?>gP3JSPj{35lyP)0B=Gyus2Cl87? zZc;|hS-56lk0g-!z+WgEUhV@x@INz@6^w{4#*Hims+ToMS~N2|XkiD}^p!gcD`t<7 zP{LTZL_(6hl6+TNKE0UP20H-6@t-^??{_}?25f7xN+X?`}&X6!+7$%GGm0G zl%I6ux0Av7AWPE+Nk;pT|ln;e52R2 zpXg#`{iWf=eb?rM8k{Rlc}Mcgs{3lu2qGligK$U=Nw7|i5IP4uDj)6B@(l}XGB z7sE7`$-EE0OW*%6m?UCxiTVtL>PJ9YT&pkxLM|`8l55cgEL1XDA#u7eqU6RqW>9nLk7`2KFJ$ zMNFJh%I36dbSgQ5XztN+*il9z4gmz?^vEu9*!AUVKuc)ViDsOs#IF!dNugg$e}97d z*x-S$BB^g-qzJ!7*K|=QOe7=(*yBf9jRav?*?_`EzSEy$m1zj8*(w@=Xz~yX$2JCy zo52bX;~~;p;41;nwt}m@#QC2L*vcU8q#82iDl)XSwL$;R^Ils-h&f*!b%e;E6(9?@ zdT_v$a-z@ccv=_pAKknQUAqLXP`|zgdREAj0HcH$XOX|r>lA$Op*m~Ym@1W%wQUm0 zXkbtS7MFR)vY>$US2c`&AO-m%%})`L3tVvRVKU_pntn6<78~rHKL1^yu0NSWj-U?} znn;}kO!r*iC!YM`fq^yA{Cx2+0ePwSd`7};-M~W`m_wN?esR|Ix-8pmgHrYOuC?t> zRXeSU*V)b}b47@W7QHeAS=|l1ht; z{pU5TZ{p3Ldc1pY|Da(mxt6)Vx|;WoKUmAf(IC4NH~WhTj%I3C{c~A*w1R*v9&5t; ze*RTJdWgr6Giz03aWvOjXQBg^`WB=D9dF-aQwc)MoOWGTYj>X7EqZS9KED4V-f#?L zR{qDo)3{`2Q#rnPuc62T(EHM~Z!IPEN%h}MNBnkMGU3H4FEj zU%|D_q^u^`h+c5OC?~jU7t6`LXfnrYfAS2)^vzLk&$54ab`;sf+nsNANgeL1$QGz* z@XmVMwW|fok**~+opHy3#9{A0;QGPI^*(3s8BP$J3k3verN6G;Ykwyjqyf9 z=Gsi6AUqNTL~(4~Cn!k}+z_L;Ti{PsW(#bVtm&7d~N0Vv#E26zYf zT?T;}3b)M06j(%)KN%r7WIKR=V7a4l(|SLBDydV8N6lBe^Y2v zV+7B)I~d|W)`@;677`rH$5IU%Y_`oSK`kw{IsyaMXOlyF)KwzJoszb8di#^}E}3mg zb&BJzrlDe&>1%X!nj9)jNv9q6QNudLQTFtps;-wLC~*(*Sg0p-)SOB500td*$CkI% za+qiL*Y>hzZ69M{c=9(hm2-Sn7*xeYpPaWRw%VNYZKJ`|NEv%$#k@U%Pt91#bb~w@ z9XGV#)9*hUg@Uyi1fOLL##Vy z;B$)Svica9O_d6E?@ShJB!a@fc2d&OdOzVJP7iE`MTp+YG=Hi_7_-pem#CkBzrQ~i zERWrpZANb3UV%j?1gfj3K|w);`1OwGATan`RD@A5F+4m>N6^(k&tHAMi;sUaUOSH4 zhX(k<@>?Q!D2fh0w32!%D57il2k_vG!Vp1-R`>-?g{E&r%!=aW% z5vu;C7C@^sj&+Bc;Fu*`QiXz?-ae4cY|T_swEwI@N+t4ClDZMXy zVe87(AMvO;+pS4YkMYT*nsYK9w_z1`(!C&)Z z1HzoO&V_H%WY0`GOS~9&3cHMbY@8C7JuS;PP9mf&n)Lf$m`x4m=91EPzi!d-fv40? zMV~FZLKya9l<m6FoY&+e z)vd{@UC;TYh4c5v6mZBz`JRI)>%Wz>|4m%4<||Q1hRhQ3Io7_`G&@_}ImL*JijoEd zr{jrPc@0n*5Ha)HFmeMQsH2T^bLjtP`ugzK3uDAr&$jR!BR-~r7ixIHmb?gd%vXI^ z2=bC1aAbliaa$22cq zTq7hIL^i(Xq^W>FevrG)4zrG{=(FfIJ!nZuVs?Sg-Suwu(dp?RKf9|}u?%-N?C9(a z2Ap<(Z){lUn(R-{b%o>N6A&O`)XC~AuX{uBBFF0txQRIQuqZma5|@9OVx_Ngw(cLs z_XRz4ub|=*DL}W@r)}qXh?rmWnc*4N=fdU;o*XO+egnk77uKFM0T3J)qMe+A9RVMl zP=9$QVl@?@wlgRRF3dUqCwTTWO4PL61rsp~L6@PUL$kp`Emi;hMVsFdo0;fk1~Ywo z2KlJ(MUUo=2@8MDhYye@lQ!S;(&`*ORblEPwE@lisnE3cA?*;|uH|7yZe}-WumFku zu8OXSDaKgB++`Xs4u?*LsN(U9=;7%%;X|;fG-odCAVSUblTT9FPE|m0( z|8l#7fDR~mc~%;SU$psJoVWU*IDTd7j#{|`?Q&g5p6s={B2%P28@Deo6%L{@$D)jy zL&cRP$&?~|`swvzLlb}q`jJpqyIFPL-!-iN$z@c+vZ<|EvxI7n4P)nE+|gWbt;jHl z`veD*0mmqg#vbho*1HOuQAZgtbx)7JO)FygshjKvY+L@>daGO&aAsbJ9L<0j+#|b0 zd>z4h0xN;z-Z+#|3-$Ikgt+*mpG(fn8AqZa&dQD%Zf3>m*#uN%e@3#C<)BlS$3H3# zJ9-;Z*|=@)eBb@}6L6jP`X!CL*FLLa%ndL*Q^^)F@K{G1&?|XMEiF@Hzi;I4wUr=6 zV0i?K1m0`po@VXONKQf7kCufSKl|oVp_rV1EMShyeP@yMPgf_`S2vqI5DWkd($t@L zN@mr_s0G@!*3Ijw5JLKPd1mh2C{VaRdS)V&-pWBK^j54Z3|;KAHxm#y>E7_r_H;PR z^Kj>a1;`Vbj~;o#06}o1%hM%*dsB^Gq{v0{(KcCyphW)F{K>-({PP?dLY{lRoasxP zbJyd_7CFIKPLU)3cv`JHV@O5)FyPF z(}!XxW`E0Uf4%ed=~gCbOWqw*FX578f{879}yD=#E`lJ!q+70jK*< zZ>2X`FbrOxq5|{>zZXY@f8O%8asi#(mxC)8 z7s1Ifk0gnQDySeB@eb1R;HbJ%k%zrX!n^m#i#sT zbSsq<&AL{nrEjQj#4hnro0=l#o}DpN1P8J=lFK@I{61{Ydd??!dXA14&7V030IpK1DI)fZn+_v;O!KBjn9^OFJmTDT6+puk(B zrdFG5Ys4UnQCNWDe*(>?lKxkqx%~eYG*ACJKSj|L3I$fu|fl6&4t4R z?7=NQQ_5biYxCI`Eqr`tov)v_IDx=y_MM1cHOJ4-TSn;3s@tO6TT~4AxB&1K=-~hH zW3I!4Ep7i-bhiC0bg*$5x}77|DORIDSrlA}yEiWLIR4|sFE6@X^k%7~*`C|s%<;Cs zfXA_rcY-bMQfGHJ&{M_<8B#PQJDC(2=%8C!}NhKufr%IfwH#^QGxH zF#Vtga??%t@H9Ftq7f5!mXC%OFuxCn<%yVUWJR#E>7k9ziKu1L0kq6QrkRxat>Nwr z5E}LM41oC-3pA;Y6#$jtR^!I1Ch-Z7$X}`CZgMnsxI5Lrrv|Aan#pKm4FNI=4qbsa zA3-2Q3t}o)EXNr{AgT+QsR*l7f{s06RwLy;vHUYkxHg^$adL9H^4QgTmcxS#V&PTR zzN=77xuQgvLi~|Mv3lOtTp&0JL&4ehwC5=%$;+j=npI&s*{BrecN!h{Z5A&n(1M_OZRYKA&rF%ydTD`~Xo-#E1_8G{YG!I3&8}FNx}bMq3H%x=)Ha zNr1zYwdy3vQSOz@!||G2gP@GSd@&}eHP}(iLTD-W7eJoqdMrPpIf(kNn5Znxm~VA^ zR0pTYO9CWS=#e@UFsum>HBjvPd-{jWix)p{tMkQ~)iGDCQn-ZY_5`EC_uF#h+AEhNh;z1|p#YKwKYSWN6VYBES9{);IS#b*gA1A6*EtVeuJ)}$4*7S7>So|0o3C1Z@s=!F5Cyy%~y z$haip2j?Tm4c0A+*B3g#MZR>q%FbMNfBI5vs9}}MgM~-V{^JGVnTYDcL5fdVGRIkQl=yy^97ed5QLMust>}3VmYd$8W0Sv}NTfev(?K~E z@sba{K3`cb!e+wHud&77={Uvt zaw@BppCSCpmXJU*F-jgCu@@m2(??8BUC6~0|FI%e`%XPm02_#oL7Eo7a|KR$OOn8Y zyQ~2Cmy>6esTM780ct@x*^z-aYBM4QXUbg^{1fYdE^gW#NdGTeRBqm}mh>UOxqZ-R&<=(ithhagq<$6r&9mG^7CX7R@lc^7LCHQI9pK+fz zL6OxRm*e7jviQg^Or-V-H#g#p95}PXY7be;>JZLg24lgO6+i<$pqb{wWYlK# zxLe=S2N>tiOG$lvzB{i&B0QSvdM%Ivi-?X!@_Ciu$BUe$1B`Qp^9*Wnd@AuK6(8K? zFyV+hZ!&~vj`#bZ%1^*kyvx6(;FDagvDB(}GPN&DR&rEoX8P#MtPb+{{p`j^`w6s= zZ+?Ot_ZJigCan?oD(Th~vz3^nT);{WlV>8`F_$0HtJ*}W<5{WI4KYh_X>a`6S(T|L zEjROY^+N5sVm}*5rL<}+Jt6b`P%Vk@!eLA@L7h`X6E_3KwOzk40MHoxe`U3JWT8S` zIY~PBx|T?aK>t!dU#ASUJyw-Hj3e2!8XZ<#2D*ZvWF;)S1e46!O5>-9BQD%=l0dM| z<^21*iMhdaoW%&7%MbnEu=^mX)#8Eab$^XHZSKduc-4W0CA;sr53~5YUZe)8_b9*e zlUBt_A|yy4qK=;js;EHu>o5QJoE!}&w!QUJ7wZrmFUb#n8&Q2n(z9>lG-oomCyznP zs*)`lF|clFt0lY!(B_B{bbyQuq|{rBOTaZy30g92J;@rGAL>@92X1mdWw9)59k76M zghJ5iv1v%25E|%{qEM<`xF@Wjd+zZs<{zWe2FL)s+1I#AJh9G)K|bgK!2d~M>KVab zLQv%}bff(6M0~y~#w#0&mrYe+573Ld!O*7cenKdhf~d6;6Kzeao{${O(b5?_cwF-_ zUF?SU52jm6cLds!Kq4e?s7bb)#dCO3v5o3^uEh~^V5FFtZ*NO0%4_dhHEij6vfO!1SejgK7e$oMXc+lm|VTU+en5mBL@Mvcv6%wQN1+4%-Zp>wfL(o zP$bS$VnEp#z`?>I(pO^Dt6-iMco0K+2c$_LCA!%7hV($r=m*zs>+RiLwg6Mu2)|bE z&Mr~zglB!VHZqWhet9!U0;GSK%X`bXxEdP%69uTsKvegYn3d*sOH0+D6#^Jk*hgec z%?@2QtSdlEW1~wwt{(@%IP&ASCvk%RMST5UL_&1{NYvV&pgZEsVs+wK`3P8E1;d-b zTkf4Y`={4M74*A3F$k1-53`?;eSyl0uG(x^9*RcqysI~6aqVKqijmF{y95H)hKlTL zSO&Jb3;>K?QtB3Br1iogb|s%%4->$20yQ+GM2Xq;aTr-&eBUTg7=LpNrJc+rd4{(x z8?GVIJxWU((c*%n=6l|0gMe^lJISLF z&8%NJy}Z0MTVPpM`wR6ToBrvlo}4@7BdIC-#3~{i7KB$2b~R_f$7x8=vD6+rUm%~a z9ZQZzE^e~*y(Zx1%gbBuq3e6U|BvE_O;8s%=dlcj+6V|?Cqm+(mfR(;l>7s31oYy` zL%;Id{f@;F6YY3I9SDe)uJ#A2+GSr%-mb2ioq~AHDm``=VynF>Q#2s4hz$SM z^wH|PnY4EeM}6Ovx~pja82~2JDgsb~NUbUpVa)>J>IBVK0d!ozIs{c;U%y|y-iTIA zjIuY5l8_8fQOFQ;qm7c!HsLCDfh&az%_^z}GX8NbO}EB_w$bPXZgXPU{F*6BWpVsAWP8;bMv%ukGL-GT*CF>Y#|J zCZdk@f`L@-jXCZihe?z*fNGgAexxD^i)YpCBrVp6e$i}Ljjr`*wnBnpf)tcsu9=RT zAPBp(|5{VPd}Vh#qTVQ}4gpAMQ=DpF|6`ysv!0Nnn)nn@jfvuWE*#CF`>8!taU1gSIVbxQs$oDs+nw2(bhxAc0Na!F za(jtpn@DgNHldwV4&+B}U=)AHLtNzDO@Y~9nt|9GDm`j3)~b(n-n;A-*f=Em@~%lF zs!-YQ#jpBJ4rd>ck{&;2cRJ(aY@SzgmpXNSR7oaAj-SpE`KUtW`a&*aXZlz^j0!^| z27FX0%R#*p_jg+LRw{ddb4>;c3w^bn)^n0Tod5A)TZhxtZ7xI-n*aK;FsFVL#Vc)7M%Z;RRxhG{66ofzKHXlPq$0Q%<M?81UGO*R%pRBwlgSWCBvJl z3@EvgS(a?v)|a5lPeYj?5_2TIPV)n@rKfGiBM56HtI^z2)~$d02rGjJS$B5|zfC;g znh2hgTz`Dm5fp*~S119Sj>rh(#v|+Qs1Gera20**V*1R;|v z^9tsLXPO+5Ql)Q7fg4P>3If8Gs1=6U(5Ge0lb`aPp=EDu-oK zgNWVY{$u(Jm#W=QgIAwQC+b*0bzBSSAQWGd5wQr&h*7}@*irC~!=u;*2Y*k^nF(gA z+EQJ!3)%l56_udwCj*VXs`0Q#+&o%ezY*16HC@xHj0gCx_f#+tG^g<$!Z-t;} z99!!k{Vt1}M2IqHDD*qbPJ1^jrB!ur#AzD*DaF)JeEQ#9fPHX=oS{5#aM#eXTySFI zo+=Jk9bwk6z97d3zejrEec)#SoIne;N0T_Zj2qny@(tBoSvaEt$}ELobDKl)a!LhP zwPy-&p)_}$CuZ6Ki=FD?Fhf{SL7dGe-FTVa$2nK6M zGi&ngio17%srct5P8OeePxsBn5pM3G-niUXkEh@kH3P{hg?>?Xj_@h96C+aDrX5xB zu@7&P2P8pTf6|22) z5asA9bb4k*tGuG!8vDbSFDB)|BwyEUwE)t|?2NQV%Z+GF1AZG>-ux9li}8zSKMat5 z&|~HOm_8u`kmX0Z^zop;BPn%)IS3BksU$J(y25ZHJ|XbvPURoqHU4W6X*ZORTmo9P zqEarc@hN$LHGHNeOGtKG57J^_S2ZnM($!vhc zia^GYC;9pa79L>Lud;KeUEaDE$@6b|#YoqoI6GaQ-qe2P?aD3#k3Q?oi?#1L7e6xm zEFM3J1Y;E^YaX<$Es$ybe=^Z5dgiq#Sm38lvbd3h#LJVZD>8XW(|`28K1%bSfO8U9 z`zbvCjAax-x+!WGLzwAG+ALYemxZU?RI>7`&Cu@OtE+SxEPEzw;ABr6A3tI@;?p1X z;OVI_L<&>FdTyV2d;ounkT+M%TQ#`whUtsZR0)_YLkdaU$b96?Slk+i8AQ({nj&w2=wD)@1&f#PfJUEYdfquyn8yaJsuL`R8BsppCo?-gUamh zJ%)>Mv4A$9W)#|MwvqpC2LG5iKW|*pTh$5^!vBw2WjK^YY~80nsJLDa+{TcVQ_Kza z{hB!gdB{(X6Ilfdz9i7AtS}3#_pW*ER5dF^|Ceoz#6NgD*t*t_Y~e z|JAOT1My4@OH@orjZ5u@SdvJWf1YMk zKR+eH>1T)c??tIi5pD$EhyWF#I^3wi4}^QxJT9(Kv$9R{n#?*Z4{V% z8K2Iiuk&C%R!QDFxK!z@UPOQ0zueMNO@H zyg)&#L^I!na<)`Q;npcg6|42^_E$T7z1f?ds$|jDAnMV-*TKOdtTm$QYI3svq8KDB zN%r1IJlefw9&iCzovpL$OAW?$D^Vu-@9uCZ93`)@1ZXz+37J9?n8}DQ%3}&N00g#v zWN>Czd*(bBIk?m<+UHD$%c|G9gZj;`>)58&X{S6u=0@|66zrIUsy> z>NCS<28KM@AHh+;&|Z)h;Q*}WObLl($fG&JwG8r~tv-aH>tSJ&visi?s~6>Z*p3Tz zKS1m5m9@2kz4Ro7UbHy~oY{RJ78d34@Uz*i#Gr;Q;xjdn<-+a6%Fjj^!gOEO+0ldV zp9Dz07agugaO@gulvc90RX>Lbz0)&&&p>YZFIGv#Zq2!fG>wM-4eIqJz%DY-7K)8> zM12w@f&$lvGxgtuzgn*ZwHPo7T?4f?x`(mHTmmGAy47)@wD1YIUivCwA+EY8V@xC^ zA2W#k5)V$8SE16^Uq3&3n@QCf`SGO&fT0$eKUM;OJ^vXqGaATj$+Qhr7vvR_-nR#$ zhpQjrg*O0OK6ow7Gl$=+7mXR|9Y8!H#bOlOnE01rDjTe{E8{XxzFj5L2mtF4CPfJq z%w$L!o$cM9LIlx zt6=03%>oo~$9=l%!>B9L5TkdO-9>B{EQ6`0eYystw%* ztgj0GxgNH?pXymr<*Y#LruS16Aqb(GYj!KXvh!H)!=E2zE2V2Th$G`=I>oc;`~70# zgBm3mmm)gr-0KG5-Gj-Ss?L5*o{dF06F7Gt8!>9BM(TS*)7Qp@c!ED>T6w+SxID)A zrP0il)82mB;a(XJvR?B_3BXtcXAY+oU}x4PkST{d7B={33_0q8Z5iC~Ohku#09oRu zS$oV2&LOu=E6Wnc1%Gt{OOW5mt2VZKc7`mnn{ErPLr>*OFQbwCtkcOTXW(8dhnsJR z^%c*ETRP=udrG!Uwq~nL*{X7!Td_9UkVNTD@yEK`XzrZ!4zb-GCizd>`mU+g_uef< z=X5QujpfUbboYW&!+(B$N6GDi$T+r}YJW$R+nph72JW=EmoIm6^N+kUp(jZR>vhbY znM`?<<4EfsPCN1Qq5lV9Om7O`UV!l&@Q8_&j#0bX``!9uHI9uYP(@{RX=UZ4CVAe1@0ST4UWe4QHhJt$9r*)y4yYg!>}^F%BU(wluxoX z+E6Ue)=p8?m*M^atnt3wWhANts^*@?*ME$%zWGYSdbt|G`NZMc;5U*b*6mqP6EOH6 zv(ByykypyN+J^u$nXu)Fq>W7k0K0BY>~QqKFTlx@7b=VK=1iGUiTg)f>@P;sd@#b= zQ+kKjn!%<;gDL39 zPUPAj8xet5N^xFjP*`mgiAzn#$fA^Cs4pt|yY!EwDvKWI#KnFfNeWtbRmVZ{kzFj7 zTYa2Cruf{9O=>TV6(*n5yZVa|(p)T&e zEq(4fdCnG1I~nPW3@H81b2n?exQ-%YTWv9ZkZ6(molTJv#$tw*scoIrOIho!Rz7C4 zo}_8FJf7fiuyse7E^Qp1y#W};h=HfjFol8%mdKb~Uz;E9r7UWrt zc^xoE{d8qbms#h*W1q0J@%Q3uy1rsz_yyqtjMpoScN@UY_P#&Srz~{(fXR35nQZ>Brj+?uAqMQlV8xm6s z6&KH&%2j4fAwM@W$r2JG8IpQ6Hl5@NS~otezVzCYBnze7QR_a@^A-~D+)ZQQl;KEs z=M-gUSMyJNp-nsbh)&-sV9P2?1VK4=eM4y9?(|2V|8`yM>|<8Sa}>qVJ^wxq%7;fOL6FKm54 zfeOpr#xyoG_||IJ=w$>fA}Ru`g=D@)z@^HLLV#Y#8eFo&Sk1)T6l36Sm9I2y4Zpcn z35%;nC`>=-5`TV7e9aoLeuV(y3)1r)z8MNsN!Z}k+Gn9h6K*Z4OzTDx51FOR#tjuT zyd@f7+UfD~#8UgBL3!b&_n`)FwPqseqeN0!*!Ve%>2D)p%g=vC%!P2PgPSdn_QdMV z_ST4uzo&q3lf_oJ!D(j5-l0}lkHpZ=CUakc4}_d?W(%$iAc`h1NHS0WiH)*3zAJl%^Ic(-tAO2OKV!l@4Eu4&|_a(b3hmJ-8)qKHGNy0GtU1kJ&TwKwhd!dRinul9g%NK5@2j6M38A=S^ZtN_HsJ+t)X$THege3?n(FbwyK;;QB;4liZZ0h7ovl ze>?mH9E!H)ig7u@!s)MSN544Vc={lvYN^=C45iF|wQ7b2_Su@@>jDu1-RC#Ud+-6n z|C&htz7#V|0XLQP3Y9_spOYlFXg&Ecwo)25sFW8!(gY-RGs^5z?X)2i z&Dv!K8zSg(ch!cqMRvGV+B6v_ULuckh22n)F~!|pj~K-yLX>+o?aW^NoXr09_tXt_ zksfP{ile!MwG>Y)U#0Pbn+YI0QRNPc(2lM_F5L1Q5E;)hxsd?FC}m{FO5S#iB7VQa zR`Eg1`1bVV_{T1gHRlFiAplcQfFyEAdmT1lsP+iJRDCGLD;ha5jLH;!w)p;$N%F>*b1O!|NrW)l0V8G{(X>tOrYG9*D@ zvK2EVwKvzlj7*y(k?U90E0Oh6CBf6ZTU)*KUy84f-#~taj%&_(@IdSa*x^C=ED%4o z|78*gx?yj>*SAI~x{Z0c%t48gmJ_C&YkmMa0Kga#}#D06i+vEQc9v zXr&9^=SHA!&=LThokhvUuK;aXS91*d9OtZf=@0DzH>?583Hf-;#2!^+h5X+;{oEs5UcAAhY`> zQ0)H8x#xKNMs2-&zSd^Ec+i>8e`CHy^~M^i9ejl*nM3-QM>Mt~6hGjdc;JZ_(Mf+> z(T;YNHVLNiY)OQ}^eTCwv0r^dF#sqV=7Cw$;ZzlSRZ6Q#Imwduv77_2%`F^A>t26{ zB-hY*OiO!ZF-~{e8Yq@_dxH7tU`g%}IR8{zsrWb8;)?)lv4gI#e4XWXA!?Ga#O&vm zy&Hpc9LZVG7}!`{Y$ecc++_5DfC;34#5NE#Xgtd=-uDs)V7w}#EFCH7aL<)%>ae=puhDl-G+D`u{ya=^%QZ zIV@i~yDc-Zmq=f;(TTi5djnwNi&`cumDzQV*%Tv!qspQv=4c6j~=*a9Ja=&1@~cMYzhYqNgJ~0ZV&X;39r>y z?&qsg7GW{UNNmRze0w00g?)@&hOV3#GV5>3`ICNCn$hP`URFLv>Z@G-)h21(ilwa7 zyxS-8MA&uxVb2uR{lzrNFFKkw=91s~cqurg31fbT{F2gd^7YZ*FQK=+C-Fs}9`hsA zlm;3X1SvVm6jnTGh4GGyAA;)EOH-;z{jUy;svi1Vy>8kLa{@-^jj`I+ak3c8(Nl-m zR1$c&xHLO|8%=FpQy+Hk>U;k^X@1YG8Utg3Mlb+w+@-gfU7OQm)=LV5D)#3olbb5BzOH$A!xo>a2WT~#y@LMWB z4T`R4(w(<3b9@H*)~gv=XYt35$c&c1EC|)HY=SapkywafC3=+~eJE38H8Nf#N1{eZ z3CadO3Glm|u{YHYOa6c~!Z7aq;n@t)-_#_8wSdRsp{sn^v* zA1UniZJ@d0@{yky6KK1FcCbYKFUTjTGI*`J``#t5H$J~~!tDQ38lVrO?66Bt`oQ~| z1tUP~g(CKYx3flsX#FWSpABtzK8T5(exmNfFp;J5D|Un3JC-k)v3R!y8tEz7%D_*2jM z>`F?%Pia0!m)BCP96ULIgN zZuT9^&8b=~b>sFIx9?jsxyPLCcNfN2Q->v5^ZCZyj5_GhrsfuvzNFGK=1qhuvj_C& z7vUC%`IH}cU07O0?~_Rd&f6Cbdl>X@VjS4aEYzJxKIYVqdS%hbTSMq9pB{EcBB65G zpIXCuU@s%8s~-`w#Zh%fZBK4AB7gH*yWd~jdQlkF_w@v8-MEGC78p}GQd5HzwfQ5Q z6I*5rmLlumeqLjq7so)ToKurc6INQ9xEkmc4Dl3NSI6tZLG8}Mo>8?lPsgtC$V#G&xaGM4$D#gv;(!{$iI55|@g!!A2=2e%opqehVv>lkZcw?AdFcK14KiOt zj{%t1z+|SC?$bY=OWFNsz?mAai~RL`3L0Q)TY%@U_}$qgktHN~sMh)~Q(00OcTGHO zdI|Dd@?_+cv>-t|00n^;Oac=2!i&z4G0Q9SgHbN0Yt5BW10FXq9-D#S(jS(g;V)s| zm8>fzmOd-UDPX)o=z4)>&6Oz0w|Zi>B9ix{T-YDcnt02fdH&*&k7>%^-=-yLC@J*b z`9suR`na_Sd&1EnFu#&ob54i37L0O1_U?=6Wyr=l&$Q3u^AXu>`G#ln=T!CbuG24k zE^hsl=iY$PvcL;@B>PaL#&5xJPp<$?h>tfBuczii10J8N3mb!dI(d&UTAFA!<0anD zo%U!*SO6=GrhwBTJT*3k+|3b>WE+8}5f)DROxtd8cDsz$#Y|`sTKUq*x&mu32Lo63 zU64%rz_-1>Vi1cj(%iV)8H(AjM>x-*?9e&aI9tQ}SE>#X_R_fY)7Lj^@-CHA7ce20 zBbpwM!#MZt$pXXKD(ROkdzo+6Q3}kHnQX@zD&Gq8-6MvCFkaL(fBV)w@s$M~_VSs4 zF6Km$S~TznMgL*d;4r_QwrsL3XZ>xvR{P|i88+7+JzSx73|taI^HOz^f) zrKo-6b+{~F80IwBcJSOk=MScj*vU_TozGGG3BF&ONIhL$I9yq^;;}!ml9kUUIpHQx zdwqYtPGjEF@(c4vTOun{oTwSobCytXNo2Gtb5_i{vbE|J4-12dQ_@k{zdc=T3`=U~ zRsB>VE}O>df0zGs25`T=P$cRzhp6q=6F9d@WeyxUE+AA6(UkG);W6q@epYA8*KT=z zw%6YISNgTOg4z>K-$57*hGuZP1i`=S#7ypryrw$-yVhxXe^Ijkq!@yG9YU3N#* zDwgUV@5*?-KCvn3uYBHNaq*tmOJd5!Z=A>oeO)63;8gJzx*@PK)!tJ)$l1KZ%58fxff$myMT)gKzXla(mxe4}aP1r3T-B;%gb1cDXj3 zvK69%6_HoNs-XFu#&;|Q?q{k>WhW>@UBi=Q$O?GxBPYrUt#P_~82#3l1p~i@UAGh0 z_}=T?dhVixX^_9=4k@PVy%7fL61EtK5I*tX2L;Wcgp|J8#7{3f@d!iL!g>sp)tu&C8l}!th!|w9gYUkg599+-JoX>l7!3O=e*xH z2?v`ajIh9__uWSyrNfwjaIcq&%QYpsh3(T~4yvvm^J&|w`M;TIwZnQ;8c&-%1rJO( z9>ot zl{1(owe&$vE9KsDV8u8$(?e%_G6lm~upgE%B*_ihgw;i&KeAM$u=#g$*gPWO1Y*@X zIKTc~$YloY_Ii;Yoy@Q%kk*LbDSpJ!w?N*F^YH~mHTUE63iO_hTuzIHt-sb@?3W>Z zwKkG6d^%yOA1S=zW_#{vT~FQ5wzR?#a)u5dsDTN~9w$wjhKj~KsZ=5wxe~;h(Z4gv zT}}(BJ9>MC-B#}Qgg=Kv4yG)fpL;i_cdyMUgJ*roL-E5+ZMKEFwSbI29HD}_S_r74XiWJD$`&!9g^z))f474&3iGmj>WenIw0 zkb-SG|LNR<7kqMkz~tK6^dS<8{A%+f1+~Vsrq%TiB?uZ_(wAu|;U45v-@Fdh_ptzX;|6s5U6V%W>) zq%oAyaP#krG?@I}lnJV3cw=8d?5@Xro-=2oHizNe(>IdPIRL-VT@m%5qK&ifaP zE?Qnpy;}%jfyATc7-~EBy<|V?udkG_T9tk2>v3rEe%T?~jpm5`cyIAW#slf;S%^ZU zwyjYIKXcH|YyoW)sSDvDO_A$))Y`Y~<-v!i=_>7_<}`i{xU25#K!nHwt9R;tI5ldy z?4^7)l%RCao7RWwc5q{>+pjzFD||EvC?d;~H@+YL95~WXVz_C<7~88^1rqsYoF&~m z0k`;l{)*VH_miL3c{35Awj8#=Hx=$-?!7Ae_;3zkcA_x(l~eHxypZgDTY*HLcS(NV z`V6%@0s~$Ryt>V_h(@-Iz1D4>)dU_fPIVL{L!{rR>aUR)Y(A=09lxf!%O!;bf! z)}Y3AoNlV*_@W4gznGdN5fOiXC38iSMkPXo+Wj`Q>3gGrO-G+_w!NGR|= zsg`&k%0c(FOE@<=hW(bR({J--HZ4F|zI-Bxh^_6uGi;wiNrdR zF|@Td1@bwf9~xZfMcH0F>aR*uH}aXp3_(6jGuWkFJiH`s0X<2QZRhBZUeInDd9 zS>9n$HN8$?X0Tj0|Ip?jdIAhLUdp?+uECcJ*yveMyw{G_mLz@QH0na>AN zqM$1^(@HPHUTkp3iy*k2K!cQgIpR##D0nE7aY{x&P zS#SFS2Rfx;l?`gub|ZO*SdymO5JPiKW|!*?)-aHd|F zA;`J8{}cVNO!v5Jz83PU5VMEFG)l{~B~SbAI^z1^`OgjyOmo1g@=Pzg&Owyn=kQMC zN`wG@@0`}6m4;vLuV9FKA=9-?dIush#+**Bp-DP*(5;pUp4Z+S?SWj}97oS#uFH39 zy%;>g9`VSWBAh1?Kw<*PqOeKbbaAw#n6C4 zvBHw!%cPG61=~kLLSouEs^k7z2WOF?{)NfJ-@~obao=0aR`y>FZ^S@unR| zm_Nep4GqXZ6~V zuJ_T##ga-UhdRj%zdQws-oA_^FWhGaUnHg9yLWY%wFRP+t1^lyzb1zS?l21+F1=N6 z7hA>a(Ps5n%uzG=W{Vn}uHF?)%sbwqgnD*xn>sXTirTQMHH3sPuP#ri5UcE==1Fe# zUg=EO%>)hdmFM-0Vnt3hE+sq z_)@fjq=K|-R;$ZOPRh`155Tr3f;pW12e0#E~($twNjaqp1F?XHsTb_?t@wZ*V{O6t#ld88T&vJPaayLzc&c-cx+-5hd zY%yNP-*j@y_%q0vG@#}2hntr7(#MN3!A8GQo=6JC>ArlK_cnAvl<_f#Vx2N4;s3?d zIfaK6b=|sg(j<*-qm6Cbwj0}SY}>Yz#* z3);BJYV^7Ve>xQg`kj!+dx>W9C7uiQW)cSThUNwK;(q{p2XL67A#}92mzry&{X&I8 z_6o?x>J4v9Y>I zi|8kxVV3VwqrG6SZ%waU+5YL#jTd&xBQ7T6hYgz47kfq~dz zh2Q$(GsyuJ=Pn&qs{*5>O#bM~cz~S`i>+o^0V5)hYU*)+3{t&SG{<_@82X0n^YMVa zNwzh#a+f)iD`V_r3k*Qvzx&0i)GL%pJKvvjt0&q+MqNgGBJ)ihnP(fE;a(tee0J7MuZ}pH&x?{@goc11F37YE6^(53H=wkMybA^)Vk7zC zJD(E%{P(MYMo)K&^8prppt#=D{&h(Y-Xn)oAo8DwZ#L$-65cGi;di_`ouwK*xqLjS zPW5&O1~}{5O8S-V1)xOFGd&?g#>c0PFK-KjO_rE6>Qz{K7$)$^)nvIVgh{Y?`-aaQ zip#P2yU&th(k+etk%~f-#8wyFb}KqQ>BBL|=i#;}_vJmnzt(t#kw-Q%A>^Ax$HBVw zTH*3=489*Xb{zu2R|%8jFqGSFZ*pn=q+ocO%j^M2hN<8XBZnN`z6^ogKRw&}sP?YS zEt|!(9U86akFuA{>(f z;V@)SljR64LR-l+C)>Igw%~D8D(wMMq`WeY1k~=krj)%N9M=uuJ=d!``mh=V>@I$z zpXPj~HG4^@-f7Cl4qni@nS4I@SzdongE;GSnGeB+TvHyDD+HBP=%}mpF6>G}N3Ia* zn^Jty;J#}&x$vsmYKB8LrtchCss+y1s~y#VU$;CB>+BdYKsm7k5=vwmwr{ny2kZ_7 zPgrT!Tu%-1C0|R3?`A=*#~d=Z&kgQ{S6jY49>LEM{dJ{i$5dTni=Vj$At@s>Gjrqk z@p(6f?>XIW)bC}7lf|m8pruG9vLk;NE<8b_9Fyh57rzS0A_@@>r=)!Jq#czMsqyuUSX{#RPMK z&ZrFM;wG!Q<8Xwc54W$YRi)gfWV0!`(!TGivHkk<=F8Qz#50V?1gI; z7LO#()ipOV)h#k-4sf*5;X(S6U>2?N@&mJ_xZL?JTefj*T?WgFZ0!=plySGDg^oq0 zTs%OdiPp`69Nog_`4uYi-PCBZxM(DkiYeO4bKKcT!eXl(tL^zgP@|@$gAttVFZ`K* zzt+@9CTWlTsZ~pCNW5*o`mV0Su3j{BW2+THd_~*d0-%mzfi3Ec#OiehTEeJB^vVaH zFi?46t-cQc+^E{9io*g7kVhn@ND4kY?ldbMxJ}T>Oem65U zp$v%oo@{H^{&Thf#I1ql94-ul2#kPzc@EwW^*-vhZ#d+d`#?EJ@bAh;5RQe3kbh+B z83dQtr)wRY@|5&kV)NU2tGiMUqEtK$f8;(no~12LCC8pff5?C;3fSR^L^(Bb6!Wi% z*02SdnC37AQxXBTQ>PO~vq<7Gh)dos*%4@WXgTT+2o?>=BKXK7S7-bBvchtXJ%b3- zV*!VqT?qUBB^hP*&!j{<_|l+nRMU=f3PbCLJiKR#)bwce4#3;TZ!?kMgNllIn zODr(&CZA${JY|}!a%y9;{|6oGhKu6_jOeK(=^aP)Xisjo;Ia*!u5~h8CCb3a4^t*` z4;u8RTfrLpJ^6FJ81rcFkw6$w+3SDpK$|ZxR{}e{bdkZP01T5y>eYcZdVAUJOkjPc z!NERVij0P%0m>H2KrFtUa5lduml2l$oRo_f5;C0KLB5B}!ZQN}|iGV^_XQY514K_N5^$G%nANyuM^W`X~Tf|tDrorFR{CuKj z|NSLF@ZpODXn0*61LdBMESRiJ4j+E=)kn0s(GR7Zd{cpLgRHm%z1`6Sg)M{O^aA$# z3*8^;yeM2t_;ca~$yHi#8OfJP^5JJ}HTfN`XccWSZ?yMtvnneFCW+d{;xJ*dDBsht z=@$Dp7Vymf9HUfeDT;YCc>C;l2KfGTNYa)WB@8Cp%SoM12MQz}bYw?%>EtA2peX*& zUp8TG{uWAccfdt?USZW(bUEmto^)r6{zbrv|3uw$O{>x)+3r9i=dD#CCc9Ids?A?C z|2~h0Qy4wb#mXU_2^sXCLtu%@EF&Pd&qN)P$xV_;!;$$Y_ehfE$l8iZPN|I!r~rhw zf2d016#4}+AwN}LZZ9b}D>*QY3DvIy14s{x6sj!`{HgFT+&?KK`1_fSY=9qrL_ZWH zO4Gsc!IDk1MkVonUUk(SFc4Sots>DJyH#1@otgCAkorl{YqGy@503~W0Jyf}ytNL# z%J=!9nJ%N9v#l>V`yX(A-ov}kWd-UT4H$zyj*?5CBjk)>?dmcMuj96Qg(* z*JRXfDxU~T7&h*nhY)7R_ZDp$>~OzBM*Gqv(hiiiG#;}}KyzQuApp1L;>PVL71os9 znFTmpqTCd9t7la9hFk)X;Hly_6Mq0T5j->wx5((iI)H^G5be9F@Lc+ZG7K11nWT~G z>-M^(xM$*HC1E+3G;{goyFJuOy?1V_`@xoJ2zZ{$0wiT@cdahkv#hdH;Xqi4CtcRi z@}VF1r|kqvs3s~ne*9^eQB2_qMFd+Hj=s5$S3B3b4+_vnk}iqmKocS} zyP}>hn1!Ff4oR6wHdU@L7!1+xbW$qJp0qvpr$8S$ z-~`=sT#vy?<-Mfq&g5q@`oyqJjKOd;p$g8A^ce)~3OIsXq^lj>KZG&<4AG&VBH&4ixO|z_ zQ0Re26cZY?$Wu~u`S+NgN-sK5 z4asM}&a$IYvAH30d>$dtr`1a|YVMoLHz#2CLZCsDZR%k|-#=5(1lCKs!p*)0HfKZ{3k!ibaCm)k3>?Pqr6FJ&AB+WGVoZ8CqQh zbsY5VW@A{+kklzun@k$F-`ElZu-C&N!!S{dIw~&^JUwH!ktDc)JqSB%E%lJ<`df2n zVWhupXl=?B(}Pz9x5J1aSCj?eqH{R?S+p>Afx#wGGBvaped?rpoJ|Oh&FQdHv@`vQ z1|oJ$7fF5?vY^WJfOj#MoipRteYyP+b3hVJXS?oCJ4OMu!@QefWF_Azi6&;Y!lF*8 zAo}vPlYcC^JP=IGwLmVV7c`dMCpd=zD*?fT9UhHq7tCYTqeHb)FL0gU9|8;YV2m5{ z?Ku_*2K-GPDaEJ?;JDkiCo*LUdkO;>#h*zzQ}!_Uzngh%>QKT*?EBwvYEt|KJ`2nY zTzcc90cUEOZRPNzpCP;SWn zE@lU|POgV;ce%0!v|wZ!|5!9J&$_SnA?2rH8LsvxYRMH87utnY<|~!;uAKeZ2E)TcjSyHp5{U#xzB4Cxd%VDuH~f7Q&j<=DR>&`xXye_|ST z0vc13#K7y;DbQ^k^DD#lb0Vbzs7!^^;u(x}4awB|UCLB`gQ>fF_3(DnNFoDlapc#< z4zZa+)rddHhWTzrGbkjtZ&b=P>KLtj9|Pr^@-a*yYuiG(D zPj&~V2xiLdt=E^7VMKHoJ}spd6A7g3yKh7lWNIje9sY;W$=*eBDPJo7in~k1X-~$7 zc~RQ(EG8CS=izd>{Lm1u=Df#RQ<%1rT_e&xTUw+m8GyC?ESY#1tavIwfSY#G#>pQO zhCXdKu1I1@80rm(7lW)|^l?z-5|KKG>e+!DOQO^2(OQjC0O3AFb!pPD_X-GzHxk>uGfKG5NeR z3@eD+VXhxpr^`PChow?~#n;sNB`ewP^P|?%y@S^?-g(|_X$Je~ zU60~OPRnAd9>ps(nCo~nT~IZhIr-`z% zy3ml?>~PxdZG*!4O?s=`B<8JlqW0Qp$E=xjhT9QrA{6u>@+3BrMI#KnkBxh@hT%^B z?dj#Vzx{!)KS)k{gLNukO@aej!z-#GV+lFB!bJt|nW+q2SYDk|{hP=}L9-T%enV6$ zb?rW5w>`}YNiZS`N%f)I4n4P( za*l?_;IU-21s}clhubGf7A5sK;BGrH|E0n9Acp(j>-xFHTmb(KbDjl^N(6M9^XXYY z&&M9Um7&j%tVR&iZoVjZEj8HbVC2<8tr0!j59BfxYdfVUtlRnt4PF6uV(Fql%o?HL zM`C?#TNs8r%S{+?tCph+P0tBs=ZU}X17&s~=_i8)86zR_xTI=8r>7y5Rf_N_-U>tt z;~^*o6$xtrTwZEA+P{y>8JtQ-5=KXK(kUZyHex8|M*ywHt<`yK>OGy(7YgQ%id^<_ zM`|Ebq0s@1B=y!`NQU@)ea}5ult(I9P|@c@(eDNhuo4Ktn?hWMx1p`Xy%sk4HyGZ$ znufdXZfbDEo7^^Q&G;Mbt|=L6LS9(+eaoGm&EbtZ9TX2>bGy~x{oeHE*^%ZzXxu-;{!853;} z7v`dmpufAZd>*k*o0A*eg;t-?g|LK*Kj*=EMMaYqQ2kfGzl%Bb=S`N}T+b3<@{oN= z+`D(W8EWdxm?@X=ygy|gIe#&ja+AqqS7;%Q_as(>J;IDSL}zLH81}rOqZF+H_0UuA z_cV~*!c5R6W4LrxfD%qKIcb>mSh0`P>+&j7D4zZ0dzOZeb>G7PfsI*CA>m5}-}bt# z3i6H_FFX}h;}I>qIelB8S+AH%(0~llO=(zL2JS~ZEgJ3$xzxq+F7C_Z+I8NSSCB!O zCTWXhIdpa_hcRm%OZRBQPDI24PT%sV6Yk#AUzAu{QELtU3)%%d@**g888a>xKCMeN zNoy#RVbS~0X`c#2815zy_$RIxEI{-6ii1@`G2~;kOZq6?_Hsh{*dVaQbq{&wdz^_f zP}^JBY>y7$mH-nm#ACzGC8EgU)@Q+^3+|60m(43$7Qg9{`E^k_mTf9L{L5C&?7G(a zbjc)6$cvI{A0QL7ls#dte_NoQA1W9|2vqam#0oDw8nUh!q*rSPDduwjIgizG_brw| z$RtXj!0yWo{bE#5Nu|YUH)F-EFQ!ES+3yrmj`xG1>ErVySf}P1l}5jTex~{T@wcGB zTzMj)hGMyeO$L*eKfdj550Rxxr6J!sQE!#6;)}>EgGc6VG*q>>)?S>Fx@RwPNUO5E zJa_B=9f$<|QGr-jZ#AgHG$qygp}M^A(=qWT-^*<19*gCT9JhvL?U00(RaMX*fFn&A z={!AscQg{ECjpD)4f}Cs1Wn59PlPF`oqLNXHoTnTs_=9O93(sbgt_a$2?{84DTpQ< z!>2YIe)y!U1J>r7teB11oXtg*r?^OdD->%~B-5{#3rgfB>g{hMp>l&L`p3Mr4WfZ>wFvwk?Vq0|`g-(|{r8|zxa6flcv8HC|J}|`- zi@D+|LM(ZF$dQ>c?b_Pa3nZlSFvedmsE@f#oyLj?P)Eua+xfGedhU7If7xtm)NyK$}7RY zFp~U3uVTrVRK6+>yGLeIg%_RzN(FN!+-k7-#9j#DQ%E0I&zm^6xV!{NJgp8#46k37 zh(*GQy%ijGV-+zzdD7S-;;sm_WP|yQ>WhEwSKBNKgq#A4$UD||fV;jYv5j$$m=ItW)Mk0-8&x=oxe7Zh+=5>?y(PL; z|1iPf@AC8^!3a!4dZQam7#dALkRMVKraA_68R4YjNLP;f4%{DQ+ZXN4GtT;!sNeVf z@$n$H)dvi?-EY-LxK{Wq@bQ^vND5>lQiM3mQ8i{_BsWUOlz?pkpG%IEbcDvFGc$1O z6|?{9!=Lews)5$P;hZg(bG1y%>$*I(?S1*^El7p>Z9A#Wjs)fz+0#)pN6KuXAG4GG zdw3dJ_@e`2pkP!rOno%E{no}~SC?~{~TF|UraSmm0 zaFA^3qJm7Trq7Z;e-?RAC$g=9>EmC@8DDr_0-Y_0!Ve+?q6N+5;Hlx_BF}>+Zr*{M zp%L5^>$Gp!mT+Vz0FbB46cxu|!6zL*t-5haVt9pcYZ^Vi#I>JDlYjI6eLlmGt>I|P%3qBjF~5h( zeH|Q`(*|Vzp7P3q!8(1;p?#ZgSL4{-Zv_GvX0X6a?Gq&xS;UCXMkSN2ZHJGX8C2c3* zQrG9k^$2jb5&rLIfb_V~@SLy36C=m#*}xw&yU7g8w&oHDWjN<>JT*QVW&c7^S3=Xa zQprtOcB+$Ke%Pe`N*4duy~RV_$;e7IPZU3&LE69jvvcc1m`!E&B&F5mh!L3+jN@5* zEj`i#Iq0mAY=LeiM@k42PfMRd5(J~iNtT`9oa(!V7D%z^@qTT1$=TeO_6-)c8 zb2d-TF_Z6a#TQm*&7}ThG^iW*Y&vPyAhrv@{W*BldM(a+Ip^*AHXK8MK?~-&J5G2d zA}^0PmP`}DX{=@5_j}@Ie)a-!svs@_D&J)xnDXqwg*IO55YTno0bLw^H3!7=A(Q{LcW2>c%ZH@I$v%na#uu>31xF8FB;ulI;*!Ehq;ZR(rT*< zdZUtL>)V9Ub=DPWp~^*Eko}#MVHng z!&d;>lHKR2tDu1-NnWsagkipCu?{-Scoh1k=2BMg#5qnm9HDo@ud=gogsn9;!~|o2 zL9|k|U;bGHK1>`o;QiQ$M!t7XXbJ#}PU+M^<>X;N)()moPr(=tG>1(3jS?T0BqX^x(bRY=`g0hbN2HPPvzhY)lwF*sg{J zz23&Z``Z-zI2*e&$&^EpDqtI_)oeqgR;_()J)<)n%hb%1Y=(EsEGD(pI7|ORy^3o8xZ6l5`pCFy!4Q+d~n;$2s9Qxr%>8^@VHV| zr98igFX+YBK{H za2M>0&y&C&BmR*=V@=D07?6t$vcafp%+j+R8H949Ghh%%!=Ol`jDn9b>Ki~QE;^oWig-m-og(YNAesy~*^>tOkqcJXEBx(Pe?RI%MiFewJ|GHjGr@yMik&djf23hmoPbNt)>qHiTR`yyM_ zAna~V2%<7CU!nSCVbAzbVD3*8FCQTBj-_n<0{(k0ydssq^|I1}0`n7GntZClSS zfw~!BrSbbrCC+-y^M^ECQ&N5NNuxxZa#5a%%q_uw$nB;|;JEL8)jk!W+|cw=HMGR{ zRwlDb2RI1_O@OBQ>x}3BRDVRTkxBFbW848Cv=pMHL@+uD5b8Hygv6kA&jGqs=l!oG zciMzX%`8p)7xaE4V5TT?d3hK*txolssnlw=@|UG@jWUKG%3mU@mtWs4aGuaWz2F!K zmy5Cz5d#qT-VmcKp36N?aRLrwIp=P6n~) z4#niH0ArHBhS?v7N%Y6kcTu*9aN&xDj1=UUua|uL^*hfE=Ccr8GF&6C;C!dADuN-Z z8#4{MmPGVq8fC0?bww9-hwh*P;EXMF$JEWs760Gquhhtfd6bpxs0CDI6IqIoP5msK zxU_mgdwix=B&=sba@h+jy>OtA^v)?i5J!O9BpwdIAR@AqB=>2v#Q6A)`KL%KW|h}? zrX?D|!xihtVEm67Lm@URU34>A|_}G#gB~DdJ8y;?zAU}4Lol)IOVMW zV6#y}*oxY&H zq&)I8^OMvxk8DdZs_Axl8hFA1m+udbt`GEFnK57S_Te z0C|b-7QLs}$kX0o%UEfF>4mG8CHU;;WIll*zrNX4bB2h6^J8j~hdzcMW3ZY!tV>!Y zF39td91pW=_xxMj$_s(b7>gnZFP`jMxqkgzrH?a zffknwY~GJ&BYBK2xex;n3;e@Jcw1xh%=h;voPse_=EV@X^O$s%Q=_>@dFILmT%%$L zXwxt7KZ7k|G5mr{S+{#Kc7Um_2;3?g#XfN8O#rV@;Mkw;*0lug7VCt(qh-j=XPeb7 zQErK*nh!`=wW+?iJt$!dMG0#UX7mT-^3>D}<}p;Ce^Js{jF!(>?79N5U~v?3_?5bN zuCl2a%^cG=P1$)QARj0!9T;$UdEp4H#N6vr>0}}ktuyZxO~3_(zi6uw1k7pmb$j!r z9d+O#9P@~xIPh=#Hox)dyn~!!TrIj0rzz*~cuRX(33;1ZSC`*)-uM|q1i zh5-(Cn$!SbNdRWW;Scf5VQHJ%=)VF^t-W4Tb^XQ@VC3XvqjRo|S@#&%J!{rLb9%mIhi%vWzWK66`L^I-_d!Tn=AC4Wa}Q#)MNiWo!B*)O<1Q*i|Yb+a!2*I-Y26 za3SGpt2tMSZlq1bDIE{KSc;vuK}wh+qPXww`hb!S8D9suEivTITK?JMT#vTNKHnuk zLK@bjvLoYdidcMhId|Gghgp(GtnF{_VW^a727Kcy-d^|fVDAq({YV{Q0J?(2$Mlye zu^enqNpYcpEWTIp&~yHSlHJ3p3J5(k>%#@RHW)Xu_)jcgykv}!!+h8;3gY<3m4Z+V zPJl5z=~z)DD(@1=OV#y zznG8y-Xja8!ZLh>>LgNbfG%6{pRk0TUHII|3w|M&^-O`#&`|n^w!v;sU?Zt;j=6oL zheOy5Y;l7cR_9w6M;8I`xsND^UP6BnXaZW6!iGt%g}y#>OYmjFT=}_@244&~3`1hE zp{T82z1JWp@QVpV;wc(6Y$4^TT{@YyWfS@;1Uv?Qk__}u#1^b z&ib&Bmg{i4k^aKrDM#^fAS7Y!ixA|kUaj3qY8wpH-2hS&KTUV>wNTh7=fV{L-U0Ev zwE<|*WCREy4{XO$=;)xZJ*5EzThz_1WgYa4TyDBKWZo8^N6;i`>!Ob5aDEgs^yc`( z+bfl)eIt4)r$%otW?B8`c%Gc#p1Fjs}b}4*y=k+46|X{RE>eq3GK#JGl_I_X1gR%w!P%jITQ+l!g9)y^|vulN`dYE z1etJ$DASc`I7pm}4iJG{Iy3UD%EB3Aa(Fz$HBiuTlrQ8tP5;H|q_R7*KU#+){+f4q9;o0GZl4!zgdg0_ z1&e?X&$3h1rGt^hD)tVy zI`NGxh1M#!mt6>5ZtrjeM&sX7C(BTBImAZEKg3@*Jw3ej5eOlpu7IS{GVI%Xxb4a6 zssog&Y&i4|aUsUtc^DN5734>F{3E)d!HzJ?d+j}QdS3Uxm_?EvXITBg`*>+b>DG7l zPnSAC1fT4!%~D~?f)`fuh<$VpQmDZ@g;^w-(K@8E;m)Q4X^vRF0}dv38{iKcJ`|Jn z{hR4BW@DJaX|5pGMuhXr1wTl6fgSxirj!c2I}q4Y|^%pEaqDbzNQw_ zOinz%2_WTS!EcirkUUAR0BDeAm1&~NN0C=-lh9w=BAX7}PP5U1OkZA+T!=9EZX!9c zAYacVlPTkCXx#enxB_r(Tc>>1Up{sohN&wGVb7^7+i(?Pwoo5pMnl=i2(DM1PuaaV zEdH3JwXkq-1Lb!|37u?138|P3Gzx--4kt9ZkcJ~}ogP6;bb7m2Y_{j-E#S&|PFC1x zJz;1v7Kj1bh@^MQBqjR>S%1PdizG8dB+bOFr?n;VO4cJ^h2QJYcIkM|#zSQiqjh@)aD|^A_RhlTt>L{?=~y^r9bA zYfcx1n7IJP&!*Bb*nI?K_M$->iH|CI7`dg)`AQ|mcYd7Fsbk@iAIRGWe*r5}Dr@O) z_$fpG=_UhcWn(Gr{u1_3RgV}74+@Umps?BzK`veBl2whF-<>^Khn@G81D>a@l z{jRbTo-d!7&)ui)&yy}&HG|gJ>Oktkv+V3-?>c+>A*ig3>Tom_<@t1(mmsI70Bx|V z>GQE$c3n}cYd&`hHYRDBvDZ0xbzRC^e?KI)>?ZN}!EW)17N)%h0MEI;0QrW&67Wnb^JOB4Lwg~(OeQd` zR(?ZxA5HY8(9(`%vDL_o13Sv1ZPtQUfNi2cy72LA0n|@#4*hjAMVneuGE#f3;UQb2 z%SM!qf)knT6J17z;I(37Ovf1Vky?*&Pz4-y4$q9y=f@Qyfl{4Dkgxl6m6~Ege`1tb zmYZxl*WZ||f*hA)6AL(^*wo7BQg0-_#b$Ci_SM975B1E^X5^v`XAnV4BtdIB;p~T0 zTYK)kTXEFt4@%#(5vmRBa{x06LB5bhtliifLePX*n{$QHIlTZE#}PYBM6^#VQ$>W` z!JL`)NuZa@NE-V35Xxq91h+q35t{95?@w#-&u!d$SC17b##h+b9Hc@J?JaYXWbel#(t`Wn&o7 zKl_l^5VF8U0=H|S1#}hc_#u`B*^MnUDj=Nh2$pd4IvarIEx02mk{B1KQm!!fX3dwH z^S&fnScYB!BZYA+KWPY!%n6on-J{u1K*%-{V=YJ4Suw#FCMNqgvmKwAGC&afH-~!H z|56gI0e;y!zEtK>iU_ z+Nj=QXQ18Xg{9;DS|D1~92k*Ip4^Y)lDxNbn0NHoTGD)bB#xvH&nOfuP#gOZk#hj? zs|N|a@Xu{ZA1mEoUsisbh#d^!FE>7F5z!iJHaIkmG+eGB`sMukP*70`FyIB*Yu^J> zyI~w6q-)SIFfhR3^?ZRwH37X}olnYi?a@lOGhHU`Y0ithWNWRqkQtJLm|c%rrTnM-Y^l0} zw=H>asYrGdYHp8ZG`<7Ou>mjQ9h|V3qBT zY-o> zz7?N}bgKA=M6GBmhZ;#^A;=%2W37M{Z6huNvC+5n*O=q*F=I>UorA7^t~#qJ(aG`s zRDE%YSx_6uDC^*Fjlc$AfxVZ}@AbdlJpzazSGN&C`r4|-3*5oUk>HBv=|=UW7-@F36W{^fja6?1^^4;xSAoG905;Y=_S0dyt*7z%5FYG*h2&}L0N^JA6j4DA{#KO|oR46<@#|5FoNZu4x>UQB z(IUm%oJ9{(ASER~|5o%_jnQ%J4Z)f7 z>t7-1vVu`eyMjD#;??gS6f0A4f)Rcn@zdlmE;nBOC%Ptn0kAtL&s1RGEm%>mB8Hr` zH1{|1=7%xG0*PBC<*W7D89Zci+ol1=Ft8$&?e(Pe)F?2fPn`fUbPc5of6MC*9vEd0 z*z);@_vvG@a~yXH=0*?(XH>K={Hc`06W^91>_-$Eh#WKmGSN88DR7?TZ}VacsHsTR z@D?bWnllU?pNN&FIZoXGs6dG%=lPRM#kp_&G?gh<*Q-wS=P$1wPO7KIa#d@ana^#;o2$5K!nrO){-h5<*DnmS{PexLM(*EE5`F0eo z#y@w*%7GiltDVe4k1EY#+EwPObi(mSwxvX6@5l2rpk{=hT&9TGLzE{M7uijtY9$Vq zIgi=0{TII8$~$Q3q@v|ejqw!w5fS;R}$4>;KV!G9L*gOdWgBE*xF?^7FvRqBa z1z&#*n)ZFiB?MGKoJ8e?WY8!%jj$V9cl_vJg1#lLCE}l<5Tq4Rx6Zy+cCmBKhI3 z<$6=O!jJEc9fg+W4K-^WpmbJ zJqZ-Nw}q0X9fUP%{GviW9RHF0&xA<(_~UfoxkNeIWGW|rv&dzzRoEPYm1Zy-0t2rX zv$o`?n~4Q6Y=lxis_5;Pe=uNMHeCNJmMDwgPOZV#jqA0>a0 z1_F^KBKI%#|CzP|w^NKmL}o72>*ghgoS1_}B2Goa!7-ZI3lgR4lsf#8<}cdlJySo& zpZWg5TnwN@{x7gbUfa@Xpmchj!eHH!sjMb`zNmYqaQ%;+dIdV;)n+TDRU$i7aGu+5 zo_wC)VEUhT@BE2hR=d~aKh@9+50>6@7^zrbcFF#~Jb!Mv_ME-G5s?fHptB|YSo+f{ z#ke?g0Slfu9ZMA8rq*b?ss)BxySZ=k{F>9fb8?uLD@jN?-syG%3cTO>OK_mZq~ix& zM&b?&x+4xWcwoRR9c~U0iU;(UaeKMSLJlzYX{)e>gB$8$h2aQOU|tcarp(|j>n>Uusdh#Bw|w+Vv^o0*aSq1gbR>u7L>sv0g2!UIF3H#2oUZ_%azn1|BZ;YJkS@}6d*Q@IVR#cR_u;L4b4vxzKC^2Otb zKQ}yL_D@#0&Q{d49;Ehz2+oWlODxp52KF_kmSDC^WF4PQ|D<%H%p+BiXyFqJdZaw24Rw^*~>bV|=V`cQ@{wAZOIj4ilX=8Ku~>rI!x5g=>DpXat2c#Lfv zbQ{f@jV0kTqXPK2nkm*K1+ypX!n8>e+@}K4 zSwEpzU>UE{ucOQjC;d7~eN-Av)D&7BK{a6M^(L&+DfeNr(TO94EPjf6G2(;8Qpyf< zrez~F^TNCm*S~$-Y}0Urpf5wfPG6dfDL0-g?)t%sSLAnNF5k;KTn$)FBBDcwI%f<(oZv)82dJ^6N}^;;HX~*bEUM5H0`EYN z!bZ?~J)o<%c>ZIR&EX*u&EJGgG{wtvNn=5$D8Y$8Un*iympc6%*>6q-OG{G@fz6|kUbA0U>K@Y z@sf}J@A;GIOqZ*YSN%cNF!)y4TsdwyhRYy;^g-~GxEaX&JxLi~ZZbu=TU>Dnqo~#W9l|@1D-C&F9he4!{4j&q~A?Y3_ZHyh7a&zP1PK zF$hwXJt3sV#3Q*p*mzByG+{3Vm=Yp`TB0u@XFuvX`LaxXg)_lfDaU4q#({IEuei(( z`+4zwbC$KjamtUX7nem@8nI>Y!+(#+IVw(1GZzD>k2vk zlNifrIl2*(m;c{TJnb6b0qk9MZw<7b7_$%jkKy&KLlmc;^R0h^T(+?N37}F8kIU?R zYjuIifBCU~DJ40j@uL6CZJbu^4hC0M?Av39NW>BUHxxo-NR~ygz163t~ z5k_#9$>wu(%$cxzAjhXO*md;J?b^=OW1eE#DJXQ+I-)-SKj=^Y-NTm9;}!DPz`hD+ z8v-zq(3HTE2n+!1uP@JPzI=oD$Z?py4*k)s!jh!^M&BnGGHI1#twrwYk z-PpEm-Z#H<&b>4D&u=D~NuKY0_p|m|Yp+d7RDGcVkH3M%$Bo!mKzne7^u_L>mSkM3 z;d=#VHs0Sn}^i?TY4=fUw z?3g5O7(nYj#9f2|BpK=-l;C7d<(wga+p)g1>M^dyo(+`q6xV3WvOgRniK%usF+x&} zMd$3Ltf<=i<$iab&dfW5&%gzV(}u6Cjp47Jj9g>p3|jBNjIa62R&VgtUns)Ez0;#3 z>R-}PSNes^d&RYC?3n};r+C>=092XA_2q~Rg8%7h+ey9MK_KiM%jIOMx(6;D`f$G5 z7FjCG7t7|PHU_5!(X^cj(5Nl16>15P*j(nd&U5NU9zCNS@TqeT3BO*RIgsrl0f#Z} zsT4V0P!P`AJO-*zf0-|8;;q+cmViKO1D^G?AQ=>N2VKNkm~w0Y@X%0NS*L&H?!CmB zk0csTC=^bZCNHU7@IL8^n>yQLW|dLrh7T}G0aiWmC90;wf`uPbhDfI zF*=ELw++f@jdrlOE`VfN#dzy)X441nM83j-qxsXtSAg_+GA{@#{1M=GRPo8iRyepQnhlj@`x zJFfi-eyvty$5MX&0jEH#_}XMLX2ZumqnPV+THj=vFNJKx8CfdZWn|M28@UhKe*qt(@-Y-Hshm~Rctq_O40^9;k7Oo>65t(K zfb>(!A@}PY*H94Prlz1T*z&;;12dw8rzMdhKfJGj8MKNYu650w2{i==5DVPGndY-B zbRk=q{vHv6mC^htK1n~`2J-~pdrF^J7(KcbM$}{-;~A;r%61b=^&1Lke0$CAvzDop zQt*lZQmH$MSlLBex`i&->5oA|T6mh~Ivn_}Pv<=;knIe9G+iJ*gE*&HUQIiIkizhD zIcAh~-za%Cm`ebNCS)); zK78t_$<08IVGD;P4BM6zwq-DLycd)@1Q8|@b8HIbbhX5qAMVh-H$5TeLG~v!8IZpI zg(2qQsd;GpWSRk8U5sxW`5XK5C)jJwOyoFEwlw&v4gP|ju6L|Zv_s#|vb1CDBmDS` z$h~JED36pZb=(N|e%6pznw!4Ay8O2?`v18L^Cb)zQZZqZ3<(@P--Yh+P^IhMPA6J?MK9^~H2mBijz#=;5yR-jBJz~c;NEt352HSuxY$%PR zO41e-M~xMeZOB@s?hZ0)8<<`#R^sy zlsn5WAn##rWjjAcg>4Q~suESCY=27ULNUl5gH}r>A-Vpfdw%HZJ@|9HqZJ5Sg2$ec zFH1)+R-hhWZQ<*UUVNNOy`oIuQVDTYUN_gRSlEX-c zw`Z4t;NZcnhRs)a0dI8T9G1ZPKbsJ9g`bL)U?yNk*nS#4P(tKW9oss{;TWFhOY0Lp zKEBJU_By9%_j&>a>`<6QRNC`RyqF+Hp1?!(-GNt!?o3-bQ(u_ECCO=IbX>htkngTH`KFAoOD#CyZ zVzK2HOXB!?K)GgZ&o2es*~)q3it#VsG=BK8#wwbLhj z`rYCAAobGT-X6oK&kqg`?mOVLV`($KJ;|hAdHwF+wph=nLS~4&U=y0N^K5W*ia-K} z({7BT6Ye>L&{0#J@>ov8OhnqrLRGTNGAYjs`^Rr=Mxm|wT}MYp<)>tXWTjr$Q+SM< zt)7n{FJ-wT$FHv6lhr0YFtG=}vcj)A0hOZG%$rd5qzN-Gb2r;(oagJv# zs-t~E0JcKOUXs4g-{C)$dkKI(v~>W)$dfa51@W*?{l+D;jxM{<+*7vmQy->`iP z^V3I<1(J)_{DH}1gZ@>fEo2x?Ht}}pduwPcM%$b&uRS=tOlQ#GeAB|MV$a@5FU1R@*eVr@C0L;YXf49)d`uR~5;L z6FC)@Ph;y8{+}1X!%Qp)*zq(^F-5Mv!xA;&2He;-NZ6pvac#23(0vl;XSE#Kj7vZ; zJ4155*FQXDQtA^kn3YY1)n1#SPYTaYMNC~{wKvD&zaV%855Q+K^60=BW( z6T<{N=*4`)uPy^f0){Ecw0#6eFk^FpH-eDvYImo|{7G;=0E15X?`z<)DsC7&C6~ZH zL`6KVT@aZJZpRm>=rf_U<48KoqLSdqHSj-R`G5cey1A&GODtan)_@G=!HKOD63YEc zN|4H`g9AqH4tHG?-Ff-WHtdsEn9`SxRY+*h+7s@do(m`wCC;8Z=fEikq6GG)1Dz(~ z6j&hoCiln{d#qX?@59kdd$%0Pwk!;=_@ zl*PQ);XO8y>q*`BKHukE0wxGUvcX0kn~pwQHp-A#cW;D)KDoXLSIoUr5ZwDOk&tn4 zIDb@RD{FtD6!q*B|D;+gyd>EjOF{FAd{u0Wf3G+J(q=JHAW~V#oaa7{mN7u+BseA6 zLRTJaiJkwlkDrWl&!ZzjZWQ8g8~=PN3a7AJ35*t8mMQ6NDy5VO+Ma@f$M%h8*%P0G zZ5S`{NjDpdttFF(JQ1q={R8d!$Ma&KA@&{iDkg~c01@EUgQ>|OmhqzIZ%=XaVe z&Zp^MI%WF`nh>CKe7sTaqov9U0(CB-UjWeqHp3%}l`HvcTp?l#(a(J{94klyjOQ!c}1p>LknJM0vE#d*zu$)JQt zc?={m>Gk!5ek^S_w4m&O=++cjjd3*6DbN1#IdMLi-E zCS(vvLu}|(%4T|c0u5?np>8D+&`PBLAE^(yE96K}>rwR#?-E((cY*Ue@o87-PzM1&vJ{DDaZ6Ou+sCg%M23ST{7UgqtBCdaC69T@AcIyC&f0Iy-%gl-}``(C`# zNMahP?^jyc5CKCE+#C@RUsJJs&QhQHwPF*-4DTQhCvNJDktTyK9^! ztyn7-U;&`u`;*-%o<!xoqns%x(FF&ZkEc>GI36ZKF~Y% zpNPYC2~9z>{g&UM;b2Tt&Cn^2g z1{cL*_D9Fc3mcSU1W`U~!Is{Y$*O`=a_q-sF+k>iNv$8%+Y6poE-+TQVG$y$Gt#2q{~hVxR2 z2oVAikx>V0HH?QGG5vst1v^?EaQ#2Nzg%pco|aR#TfEc)?sud4a!tdyBL`g|dOhR6FUtq1UKW23Ka1o+^ zMn(p*Qn_Xw#q#`_je;5^<+#l6Qpk@M&<_NDz|`f?mNI0n@Kc!ba{NFxUcC z*ix7;n6k%>(<}RN*h;^;dw6+RHA^$OoWwYN^X~?TGA{}~53>GnXDH`F>&Q1(g}vwH zYXB7ZbGS7w3(E~B7M}Nun(m-Czt_5&9NHMJXeRWm}$HZ-2)?foK@*agwG&(E@SVPXrdGb{q)V z%Q`9wwHk=Rr`?}wRby;;iZM2V5#OE;i%;epgoTAcU1BlStotgHZoOOs>ltl>mJiXz zRli7Qz7Kn2T_Xf!dqmgVZQ^aE3fD@8b}LSY7_p z3YMU{;VCz6N#o>^SxDd8AO|fB@Qt{WF=|p_w$=*2o2Co>YjXy8ovRm~0i!?+sW{@y z;*m&QL_|d2>(fnt=sGaV)2Bak(kkQVznf1Eii5mq!8kK-7Ii(F+@sTCh~e*_C=b)# zh;DjJ!t~NTUQ%h;$}gXPc6Qoe$&h;N~xd}I)%A*tslJ{p+ zm=CEAaXpt*yZe*QA;cv*pE#m4(7{ngW$=d#lO7n3+7g0qTw;M7eR@c+qhsR^1!{1^^5p$6(pP0cnd&`;YFpg-kBIcYaoHJ?8w4vq~NV4}ewQu1JVY4=F2 z3LAE}xJv49<3+8uboQ7K}kcKum|LxfQqbI;kcoUD*0p%v9cB7Z9I zeoZ{(uSa<5qVpB<7TcNwwrXGMl3Q!G5Y89a^v6lYWVSh@`jjF4T`^EJn~HHVUb#6DetV%Tx;HM?%_KXY?AwurliW7K(M9 zu%4Pi=1yH*4_$RFkLo=gGSFdB-^9|C_mSU~utjH~V1c_)38@cOaOlP1_7fk;(CG1W zs$Y?r-KBNhvQlprSTPUoyMnuRfad&hX9`S2tTRabf!HDG1QuQFUsy#O;k;*D_0H^k za>aI?RSHpcZf>qZu>!HP<-EKskBGibAB@MXw(%ngSbD~Y6`g$U{^0kjlpbQEoCWw- zCIe8&sPibc@K+HvC{bLVrn3^YVEO4V&0GCMpH+VW&zJS$f0Ult4=@inM2 zJC=;v;VCqFZ6SaiD)*dC0<5B|I`H0!^(f`%z1pyT4W&+ed1&S6a~&>}I_(0PR#@3X z>Y~g}tA^zoUC0LvZvho$h#}-QYiFd+KZ71{qxTW!B*}yqD#8uOOBm?Y5k%G3lM+!R zs+bl3JLbe`)=(5esyL9sMdyb+j%MP;88s}rN2DB%6lM}OuwW);K zHE#(x4GoQa%aKOr`2u;uWu-pYe?@+&e=R23#@DLXqmG!l~d=(D%NQcLGy)Q*DD4xAvbmDHK@B{%W; zF#JE_wZdZE9^d3Q6?@mvmzBsgp~uooj$CJpjaYn*PE-DU8Lg-=xf;J5i-IE>7wu+` zu%X0hHMzW!*~nz39pjm(Irpb$a_;(5%#(IhG=yLrQ527JB#>T`ilgjd%+a!aZIx&>*51J)_*) zRtDkw#pH)%_|P9?qNAN;pr|0BzU<)jTBTy`tR81BmS;f>SM4tk7vX~He+p0Nwa6l$rRGi zz~*i|4OENd#%8sN5`Tk3MR8_U9LZF08M}Shy!=9ZIouMvnf&cny?yHAb~rqh&Lyo* ztD|CkG8M#ip+QM0oJayhrBWye43wc#iJ^(^n)w^ggMTF{8ACH+5Nyyne?5lweL2c5 zgo~<%zD}Xw8|Pa11K~RHzApMV)1iQ0?@v_w#y@OJ*a_~K)gGhflezL8k-`|cWjG=U zkuH$`0RstmicrjjP`^R^xO(kp(P?*uTu~$J0iqC?UEZ;GCla7~U!ujQs=`m|BFOaf zWSt)mkKSSu%OrzT)`?JJp!1Eu$wFhJIMf+rNr+G+xIy8?nrzofnPcQb(eLvAeLHeH ztYyaI8W#qamio;*43}xy)~YgnTo`++SulaWtTY=edqR9FRUyqun}{gd{u6-*mnS(* zJ7gGj@Z^2r@@i*eTSc4v`_Qt>MTL|7#X8?4I|B&`iDqJXUwUpVo_LzU4|8{-2_5dx zd0B45iCRhQSt~Lr^cS@;)wBW{Hpq9c7bqasP1y`h$sXOb+soprVc@N<$%SdiQ58eQ zbSOsgv>~Szi)K_sT3Q;IS^)iACQix`&AA4LYBa@MvnRrCV)OUP@PQH5?R*_mL~Q&1 zWE73lVLMa;wI3lgyY(E9rO@!KZ_(n{nXrxd=9YNnrR9 zsHY2=YntFu0t(Wlx=I?>M`255PlcQ{-*=}3fz1^nBKUdY0ls9+yQIXxS0MrZF6zq` zfj*zcWL%lb;CJjiqXPB>7#G5Con>30;qCG8@iF8%HrgY7BVD*M7;r4Egit{vgx+)0 zNgQ^L_G9bXSS@|cd4?CzH@_L^*4nm8+!bA#0a5HzO>Ytn@JQY@N(qe2)$|uSLZqQ0 zSO0)y03(Aclw2!CZs#XnI;UL~T4{rOXzAeTaE)yC(YdaVcWL8k6<3!T9{=xXiUk*$ zC6%N#4byfE=j$D`0X&+uvyEGuz)3@{k}(!n{V*~qE3QJpJ7%=jW-%LyGjI>{V$k7` zFc)Dhp2xYfVpUBe2o*PjG9&h|vWx`R(|ANMZc?DMKP*H8`g1>T*~GF{x1{Sz!==|o zHfwzdz&zvYIjC`l6}F~?7O*R_aN!aDOFc)=qFk$5RD%mc ztrbWNhfkZtqIA>k-7$-1`gtx9Pp5`6BgPnl#(sCD9lB?AkSDnAcepr!pP}{eNM^6- z8F=!cv%V$|T8pOwoD$PdpeFpd)~3SxtPt2>AaPj0id<#*-Jh0&wV=ukDjm*uxswh< z>0DbD3=YbgrSnzGG;10A--z}?%Nu8OT3yYjzf3hbOZ+(`^kn*~rvsKo z2l8hGptZar%{> zB{?KX`0*W_!ewk?u~g(9*8A`G?>qrL89~Q-cs$-;%GeqG5)v?M*V{t@-UL{t(gsvs zB%ty>>&6e2S2xzqS*1@_6UEBrsTfu}d>9jRYv+j}h>p(Pri;4VuG#{Kp3FASFjrxC zPk;~oLFnvqFmFRtb29m_vSNoLeuMbd`i0w%lr>cS{o$gMSm~OsGVo;jI+k#nt(%ck zg2Wkxhy`@~7bSSsr5fO+zFZ&ImXn(yvB%nYv8|iQq^J~l|Z%n%7lC%m(C>^T(WZl=-j^S5E#u)bvF>7xU_csYHDRay9<`zEP-B>XqwfE{!gu7Hl*n~8*Y-_4yI z6ckheFthV|KcmZ9-Uj%~T0dcAv2aJ(^PYU$gD0STok!Txh#RL>lr-gujj}ahPj=IzCsCJv7{*5*&!tKG@ z8`GJmI9k!Uy;Dl_1`UIN*%L+wVGvU?EuBp(0Ze#buGn?uxb6)ArZ;~fkFVRiAG-CE zqnjV5KV=Z%T(sq)cmQgWPQMe+*4DPxy&m#P z=;Z8s7s>439RXfXQK@GdmYkl{XK?ZGviF{Q8^f}xlBituWZpb})<%Br#Kq$48F#Bt z$PK`Zd|tNv;y{(V;yQ2DsRLeGVBrHUH?tDco;?9u{>c553dzrs^N9jzXucnjz zY=K$dWu-|~93opem#I<*@do;Wdr3oSIqqMxR_c-=U)amnWLAYix{Ll18XXruX%WJm z3kzlo9De(r6k7hlEqV$5F&S7v0!^)y4^6=55pa>(j9Z?RbF##{)g>IGmYJE^%E0#2 zg@nx{2;Sh5zEU`(RqR=F*3FGhqXG>C$A6KWblhMKtCJ}>7ae=SHXccaF&SO#(=4QL z`*yKDxOt#&OQThJE>MH=kOgir8^W|V&7>-pQaH_IDPm4)Pc@0#mAjo`OLFr{=%W_YMnYVg>+XGIT}RX9h=hr)=|aD~WZgW1AAAR{N{g$U3Q&DzRf`mrd(YPYBs4+HGtK!3WyoP|TpEQJJz2(cvw3nSZc7%P$Khb=Knuq@|WC_EFc$e3bzmL63#`c3~5 z3p_qDumF9XJnK3#)F48A5C$;lo>}~_;!cw;d^axJ?=H_&C zO@iJ{l3OcIbo>_qQn{u=uga*`;){pLH47?{P*55e7&s9Bvhb0JSVE^NE{_{fTQHil z;^y7Q9vB3byYgUDZC}b^sZxU5HQH-s!vu^3lg_o-E*^p^A#np*Q>xS;gaa=(!o$Hn(p$w$ckx(3x6TJ2bkY$ zU=)PQ*V>ena8DI(I68;gh6W5F_ZyFm9O)Ge)c%-()8FJLg>cey|4L%>^GvP{9+H}eZ*)XMvbam=0FX=)!;$FJG{l~3%D83ZV022E1yV%w(#J}j*Wwg4j`dv1}4mIypNap6Gu zjtkFj*Z+iDlHfq96y!=A!x6(-swVo6EsmJA9wi(7;_&Wzt1tl?;Bbh~xRXq58wBGl z7D$VJhWxtVno(ct-`v?SDD?)&GniWHLtDUU-!{pL&1VkVNuvUud4jn)){h3Td&tYp z3;r%&d2$j^@X-(+glw3z5A2&&%S#q`a)ych_XxF-eulGN`9Z*K1CwX=b{rD2?rK>= zL9!>mV@btx9d-tubuud}x!f;_fVHyWfoSuTKXsksG@HDsulL8pfvl*>4zREs)&kDV6X+gmRhr7YE+~NQAgzeN08FCuag4T`!%=$POk0h3* zj_ekr2u;o7uvtzf{2?ii(N~E1GHb zOFQ%A_%SzN;*N_E3J6+%J=ZCCeV(EJ>_-W%^FApwd63>7U-QjdYX!Lxt{b^`IY{~m zyY$G^1{78BQkyB8C@N6;i-`SiTh-x0pphH5POs_$QZeqRdZdRcLHo83o1^OFQlTG3!+m1`{Ydy856`Zl4&b;}cxoHs(3H-|gXb zaNo=(a_h3{U4OIFem^Erh*9{1LCnHAZIsF-Kg;pIP0p}Vf>jY(c;$dKTx&RTkpFxM26zOf(*3|_ykC3c{9z_>lXGzU#620v#V(CD{fa89&_(9nmr4J z3N*{M2Gq&eF@vL_7o-aV)ny!0O(SVvR1Q<~TiiA9b9}MvIHwGB|BM@$78GA=Q%p;d zun|YLU+=Gnt3ATZ{s#>(Ns&|BsVC}ynye}Q=TUiDm>49X*_y7OeRv4}q&7;g)hB3Z zJ?@jrh=KM(gqA?vaauHK5&JwiL=f0_=IXD@-laG+g|A>q6VT3NiZn%=q5Sl!)Q?5z zLv_}E^SOnVB_2n|qRD9~w5akl(yHS)L{*!+hj?b*r59z}J58v+cwg~%g2$1YCWBmn zn2{il2#np{=L)^*n%cn{WhjvnU^)A`hs*e8#CM-D=6(@2a^GHQq05q7|+RlL!*mW{KrxQ6xQN38E7{(E7NF% zQP&*zDJ7yG@yteI8N!MWo2?&g)n3G%*@XVA|4SF`4*wAcKj7=ajTpfw4d;Jy>*}Qq z4540QJzTtO;plvzqovlWr&{JX#eF!}2gon0CVCX(f8kh+3hnL=td2L2@(bH?5&|FTtO4?Y`C=*YFXq2@ln5T*_o*w+Mdq^HOiKSI~U4s3v2?3KO#E}+9l>Z2X z9{=UoySV!Q$$+zLVqlzpfWvx(En>_Rj2v;PUUuVRAb>>^X1&mY>!iKk9_9U+Q|ma# zeh+Y>BBqd`NH^9WM<&%WK_Hyckena1>Xjk3mhz^E(WSC9ZDC8+j#@95}&kV9`W zDbuJS0ptLY6xBaCd|L)++Dd)i9GVe~3FG3b^$m5KB%KKB<^+=<0xgq8h0^^rI!8=)}^e>pkW2NHZ;0 zkzLw&w^D;R93tQ&%Rkec`=Jucov%Yw35d+d24$P4hV_GY1LH)uxJwuZ_rW3jKet!1 zb;$uJi75OWHLz-;TzzpU7f+)nc4%g;>mqnj!?h7JX^>pgN2a&g@1oai4`Mcv9-AMy zZvH*SV-DEwnI{&xsZs8-nn9?+ea#P9Ag$T2xj}J$pQJB*b<=@suEWz9KPa$^$8N13 zQi_2~LUoF|F4pz;vZ$f!4;N|$3t#hEmB!K@?mL9I z>*B7DOM;C%%aBytyG?6#6wm0>zQD2~d&2`Z-nSbV9JgZFEE68Z^}iU*7lwik{n85) zIVxAvRO<7@e--M(WYURqB_9IjTdr@}sCgiYYip%;-{rmjIOs8=_*&T3sdosKc+ zAaaI=3adl^9<~*>GkIg%@BR$4lef7?6diOs>-txEP5SI-?KrYzXAl`44yQO0APq8D z*5L}m5+tj6Q3+%1^m+^YXunawddYx5g(aI#q<;lu;}ThQlM*d}2I`+C4ohBMTKv1J z!{<-hVr6#Ue>DRoTG;=YwViKE>-<*9!RvDvkt-@?Ft({7v}E-=X_Gk@E_K!_6mY=6 zk{E3x)%9;=@_Gg|^5GhEU3}fGm(d_`2I!Yq;utRF{pJ#-Tc^ecb3A@8&X$=E>vOxs zYT{)MY<$Y~;lLZ`OhmFq_9!if?7-5Zf9U1O4f-*@^lN7|7E4^a^<$*xZQdN$jUv zTcqO53rw!$C!~0TM9f&$h4x~%UF8(b;#q3>pI%Sp^Nv&|W*kfao;@W95Y^>oc4<}h zBq@roLsrVAW<>J2Jrfg%6;^jjy{UUJ^ClG-ESyRvMsds`jjWED-wC+dr1K{kGg=kL z)oyzA3A3vTEWZ^}*{)UFU;qNw=d6vvQ1d!x%L|U9aTBg;K6@GI zbpw0fI035PDUkFg-#uJu30fQRjKvo`_qUSm_jYSdU2AWSj!C`MGG%4g#75hXcM*Zz zQDx*JhI8=>n(;Y5YoiOaI%ZbQ%1?H>O)LOLyV7!0%%}xJ)K=1-3Wc+9SEB#4f(1){ zGp#B-=d@`rdo(sIv8;A%Y|$>|RQ|Jg(E`UtT5%eX9t<2~3<>n4QbNi7Iel>19U;b> z+AEK8B~;T`4#Q#5D1cBG{E;$eWx=gd=~VUKaLbQKOD!Ux;`(}9>1jp8MAHg0M3S`K zUJN#3GhkSm)ogUaV51U5tM~Yu@uO_I0vK<|&;w>M%crDVH#)t)zX-CQK`Rgz0ojV! z3%@Fs1INri)vD@78mL6vu`9f=g;+*r*GVPxu?LscyR#S7zU!}^u^jS30dJ?#)Ns!~ z=CKLm=}aTrx&n=^QfoB0ZK4%N6P(XZ0Gk5ot7$Rvlgui^GofgAMV{ZPHsEi=X-Ud- z`CW{XQ;|+Ve*#*uS`F^qhJd-`XJiU5)@GVf<61|#%5yI+dO$N-2vlR5FD7_W;{vB0z-um6u?ITGs( z^)1mV{T9A0wulfr71OMU>t}H@8>cY;B@_~jZvi%e{|GZG^_j1eUJ6{pd2G$x1|yskXQyRCli~eJ2p|neUOK2P-9KdylPXJ7;wf<^%M5P=z?=L z=O(n*LFTkNxKLa9Q*YkV`qHh2KBNx4hfn)g;IQ`bVqu;Sm&x|fx!vOpwU^Sv;4IE2 zS7m=Y0WNHhm5v&Z$IKV`DSp?qv@6U}@biEJQDVr%V8Q6xKCuZuJ}COd=&d@Uv(1Zs zYLg}V>t9>#3AL%E?-m1S2d}XD+OL2FZml6G_&T(I{hw7GH(Y7P%|ti%)) zuq{q|Z^n~~l$5t(*=nP6LqiggI4I~`l{z(2sl--)K*=^xvK2DB)e6l!w{Kxp5T<&2d^6AZL*tMSY}B-3uy)Q# zF?X@ae6G1e?*Zq9M3u-cg|A49N$$6}R;iYThPexgy@M;Wq_nCH4pBIVOi!75RlSy^ zBV&X`iRIzCBhmqVR#;vUlJDOz&q1HVcU}EiiyglsBdkvaG52H*>TR>l2;o(Y5Y=L* zh0duAL6UYjL)^>${!~-A=w@kMy+Vsk#l;#73is~fO9ONH=rV~@A)Uh`@6UUIF)e=Z zz-ug_nkwm?w_vx!X;b^u-sr?K>)AnxRXM0Cv^|#=$Gska9h!Z&mBK*@rL3ABnNl%q zvcE%b2Rv?hdzQN^L##rZIxx+?$_LTEQ_!8c9P8U=8BI^cV6pEr7{NH(yk5yu7P zQ8;6Ksis}e>4LeK9?&BDs(p4up3lAhS!nQk{?D1}lDNVvECMFIZ+!gp;MbD zeg4N`up8eYYSJQA6xSzI(FrtBRwMDu$|G{D5FQI+&eM(wkp&o1IFfX#c@&YIAG%EU zw}gB@Lv#{bn2f#b+$WZhtu}b7G1SJ^LbygL@{G#Pd*0PcVt0*8@{|fO`=g>WSLj9f z|5v#@g81~uCS}B*e8R$QWP?&*lwKPH?5AFzOhl7nY;L`vI*-Tkmr5vIu@3@aX74Rd zho^@QaS|&`mSmH0AS$ABb}n%0eL}@y8RlAqzlI&^3|w692Ki&%snD*LO)!Gpg489S zUe#-{o&Xqyhb#Y2!=F-`Tb~D68k=WBNq+aB%1 z7qsotM;lL*IZ2~^N2d$eIAWSYC28k2BsZN8CxsHz3kF6h2R{!Mz&yY)!;U#3e^ygA z6nlI7?&RNfvp)F)Szz*O$q5SUEq-dAs?mhpc@Ard=2~41)dT5Fo}BygSD^lKre?Dx z>&OkO$3-L8|KpHmJ0Vf{tM|v85D;{LRo)n^^$EzYsE@WP>3FJW=Y-3jOQ`XE#oQU^N0n=iY}Xj+`00TI0VQlcE4@8-A=hDjvgGe+z!d7IxpCEz`XbeE z^!=_$|8m8@tr%Exf^D=L{~MddJ&dUD1@VHcwu)j5CyITXd+VL>;WLjRoOgabN0fqrs^D+)#e* z!CYTLU2!V#L3Bg%0~E+_zzBxluS*O-8IXzjDhi9$zuvpTY_w_^TX40LV`E=im7L4{ zwbbJx9mo0q)$dj0Vl&UsNg4FEUC@9d#t|2{&U-r|mWSIUN_ zP76VKa!-f68(1$t3#NddRBWAWwb)jsD>uG14aIG52sfe66|uC#PP{!%3!k!x zQy{%)c-!5-y`Ehyo!nr}q&C49p_53R^|xT$k&WsUG)n&(V*@^`U%;|n$D~n9%fWcM z1>}k$TMT>ym%E|QZZ;%)&+`5CiOq*a@58D$o$Kb82bJVk?S+PV34}IaWi3S4fI@W5 zb{9QV)WyK8;*Ag={06=iv&}6i_`ax;fSK~399~Q)QrpZ6V#PM`(4rkAkxqv#) zHv+6EL?1JqCIhOALiP6>dilUN|Cg1IU;<+D(~;FU=I1t2r<($THLeiBxN6K}=N z!LN1M`J2?uZ`sUhN2GIqp*?sB%lN(qLU zt8Pni!CxvkELxV!-T=Z$wetb}Nd;*Ba666GuMb2+E#>h1lVu5F<7$cc+Kf4br*rf|7&6TBXM@hNuiP zrY+Cs-mJ;v##T33#Uv2?S-fvxqMbA;2Juomhd+lzJxNKkx-8+@YTe_ip2mYhW1j5RJKtD79;fVDNn41C-OOff};p}-iyHuX1o?ut<@ zs|vJer1?PFB8S7i=wjtO6d&Gt{6FFoqUY&9;~Lz8)@AUKWD`qyMLW^GKmi(#qu%pp z79@BoyG@uUy~Dx?NOa4<+)Tgz$EZ`^G_V8#h(IL{#w3JjS1sb8nt%iu_J3PKp$ZP znzWQE@osT(llfu}EHL%*1(()yE8TfV%^q}g_R&+2WJF*y6**sRWMJkXkm6{?#DHbB z%}w6a?g%WoUF@@iz4`25$L(U%vp+GJ3b=-nQIRpd=0H`A7qDc_mRy?Nppgb1x=gDvg*%2MDV^O$Ssm z#lzoXjN!F^7A-0pC|mw#IcPy2rLNa3b#d|rMSW2}#ggMZ};|Nc!ATa=`JTgk1}!Cy8CO&y}FqtRe6w8ND~zg{EcZo#MF zo>!qoX!)c`OdqMt7ONxSn@+9RYtRzKBLcUOW_A-188@Had{c^-#j6YAmR_Su&H2~`Oy7SJH zZ=6+%2LR^U+OYt=<|dC*Me@VhvMdV>qTG10a8VuMQ)lhFh#zq=#U)3fns0lHan{O zW2bR0o7^PoG?DY?c}O)&!KPkkJA{(Rh6pah7!eEtoNB#FK^>?ht-SodT|wH5IlpdS z5HJx1Z4x*9hO$EyrBdS*&b9RFtT$#0Jwo??Tp{g0VJVt@9^>!Lr?PQN)vQA%wHKKF zoj{eRJ4rC(k`!lVuhna22Powe2#D10rK zh2}dtuv?^C@x(Dr@ZS|x=c3z)(HZ={s%cm-o~mIU|Le?{hWljL8F{D|J{k66;_g4H zrY4tA2I0%Pvm^Akf&UL#Zyi+i_eBj$N=t}z2$yc85$W#kmTm-*?(UTC?nb)1yBnmt z`~6(Mzvr1}=AH2$W^}xqd(Pf#@4eRAw6`DGG_+(cWTh!$A~U`Lduk)~Zpx4Y!j8zw zQ&>IVMWjw6Cw=n`RueGym&zL``6mmi@>8~~C9>VR^KZNw8#yIB4Kof|S06`sIOosb zyV;6W5@Vt_gmbHWKL0Bmo={wTq-@0BBok%UzEtRohhoV|BOx2{T&p|t#=YF!VJL*9 zUop({g(XM~0fl6v$&D}}p>c)5SD>MgQ&vz;l5hP>epp?c9Y|a%cN*+30Sr3wxRH{F z6NF~W5KHyZI%7{@epA9VuLy!IVlcEZsfZnr{_CK)^V6NhALwM|*XN_QYkoZWoIdC@)m(=kGEn{d;jKi_7bMW z`6I{2kSsiLUtym2{}LP~39A%@yCu}VEsDIPHEm7=oHFMHzJibwr1yMwKVG*bScilMD5V!@emDa*#k<8e`dI!6V2lNtf^>4T2$2$n&$ zjGtszse05G33;EOB4A$_k5+4`p0+0n4E3nu||Yz3lL zEsde}ORs8B2Xt_m!P>&cs=nrB@vCVhItYlTvVAu}aNl+5@f@p7OXt*zMZatgGvm)~C z!%`_Z%N9m(m+I{7q++f=Rw97VD6hBTP^;N3 z4)?93H)^&$!TwZ+3siwaTeC;J7o+p*TdsFSl}ZztVrHev<4@yG*1-yXv`M4aBm~xP zxM4KYLfqU&3(TTnSY}$s9sRO7e>6R zlv}X6P3&B!%@G=O3>4nL;0i)k(N*lf83_oCzCfL13}E_%6amDmT%HcBtj6jxvH<39 zTv)o`G3<}MIh48eicP$PuP8+A@!2D}!rk=?EkAe=YNgs;{tp)blakhtuPCF+?bhXZ zsU4;)<<-fcPwzABGpuQ7;vab|Z$O2^Y}B>WDLDg3bQKUno8p{UO|>&F$$`er|61za z-e0F*nj2nq7|;dl2;J{O=POn!g^p!`rF9d7IXG^uw;`obYu#LWn{n|Ae+*e+|9oJl zRsurrtLPl9vH452gDJ2+V+wb&Fv#L8Ol9=P-dJyk4B{+(ZtG#-hck4wauK1n9sqSk zpAB~nWHi`Pk6pKCVHXCjw|!>r8L3XDpxPD`Hn@L$^ns3uv8oz6p(JA=QGjAh*t=*h ziaTI&9@L8xE0xcIJ>+OmPC*$CvMe1w0F}j7qeNR_{nB>R9H}vqo$}}<3UrY?s%OAV z(wJ$D+BFtmgmEqdR}sbFDniLgW=sQ$rctE_^g|zj!3t9$Z~j|bxJM{> zs9K}w{QdFHL8YjsW8z4!jG6V*&*LjhUY#H6e>)SjkL3RVUejzY-haY(KLQQ#r^o}4 z%;A(_l-wa_~;Qf&}FmS&+ubC}W zsA%Ez_17<=8w=LnG53_o=Ha`hfSCuU1S+QZuLXHcu70&jv+%kh+L?es{^;_2CAA?b zbMZGv(r8={8l{E8|7g)38qY4Ju4S?dMR;lOBF?x4(HEr6MOen74@wRNyZK4t3lP+2tb`fVZ7X4$f54wYzHn zdRc;AybI#Sz}f<6tD{@Cg_wA6%4wgZu2BUPX{ye(Z=o0GgG7aYHSlJs=S3pp5B6Cm1BOV3w|_8UV`U#t=d&`60|N|#CCPA|~*M_dgZfkmhOK)BXfjhtimcO>bL;27hkJ*$VNnB|89HesvK#NEEIa)dE@SSzBt(1Z$*=mAIePD`$A zKP|zcof|9ANh2OWEOO2IV19}F{~rUypy?rV^gf#oE&;%{)_mskp!+%OtJv-bZP)>@ zCWkU;ooV>nRt>k@G_&kUnJ1@f=_k4k zPSd^jbwAIwR%>(P1hj#4&_@e^(4^A&%9y2Sm45a%bQ>jYLiGEpgXJnzr#=K_R0VNi z-ek4BYqYrhPD!@7%TH`2rf}`SV550i3nASpTqf}-+#3Upa)s;3Dz#&7-1gS+5TT-& zbr1AqB@YwpH*|Vt{%T_;DN%0=PG^1gh}6Zf*O#ZzGpuQ5k9Zdf78BjC!w5Ps1dX2x zYE~JI<7PR3c4Sc44vsbi%Nfit!QHCawCJlCaPNu$BE5^r)cJe^0`>;`H)z!VK6clP zpoU~0HB(yeYOHmcQu(=^`O}=G;)?WvUpW99{Spft;Y|RDb1)0ZL`?i{a&i(}yB9fl;{)B}4& zDF6|cYEUU@#rs8!Uvg9?j` z_(=pa^3gwzMt#m1sLy6B{u~avox1rVmn(+$%f&@v6;Y5c?hbrJ2Vi1mZplepD43=h z=Kb!5SPRSs$d2ua&xBUCo;ZU^Oa{K$~R##A-PCi(d`skdog1 zTJUQFcNaXkJU?2cIQDH9MEWrn)@KT99-y-F;j&oflb zbGz9)A$G>b#Pmec_`wDzC3;IscCzomafgOui5r0e zO*)*UcmAaUo+M=lMsgg<4D?0yakTg4=?(^b$B_8t*T8rs7tD)}CUjCR7YBkrBLXCn zj+*gQks`&+4>OZW9ayNe{Y2AfeSV7Ao}wNp#kS`PdVwvXW`G1t@8j*pNIXIQ$2X@jI zlfDMBQbzYpHK0}Q6|ML_Th6=Ud@n$=g>@I~YNIVBwQ1cWmp)?X@C>Tn6C0GGqjv8eQ(&LkN73tM%P z(X@nvX?NKAi=k>mXiTGgj)*w(^b8^6KgtwwFL(?WB1rol4EUsQAYOwC&iAqe11J8g z0DCfb8L>AbJzy)wBF5l7R?IO{a_Aw4DY5s>tCgf97E<{`nWm(dXq5qi`N;P~o<2zv zHYCq$8{T?}xFqnx6hM?GQS}ni{+#HmU?(f zJ#*KTsz-Cr|F&z;X|hK%HZ~67r;-dTgdmaC4!_RC$-*->kta3KdaFb5i)-2~Mhoa^ zzGL#~Am$VROsgC}(mxP&ryG{&85#Mfu-hP%==`2KndyLuO@-5~DRI97*tKnxD9@3MgN68IpR z5R0>I732Qzo&NLxXds9`0>4uQXo&Rl*pbXvfd&;QBQm?l31BNkv^eFkvpuQFXfV`L4| zOKDI-S$e39m5bh8r&Z-hG=^g_yAWN&BMA)!2aDLT^H#lGKlSq?BNDjnLq1c@KuXLv zJX>MEOl8c_5+1^LU^9%HN`>a>LMxbaG=L>=*QFJggELj=YWF+^ix$=otl;GHhAcc- z0s7j%(N`~;ukO}~ygb`b&$6aCYIS(rA8YTQa`{7N^E*4z&WhS_(E>_I^G-L}cMe(2 zrvQ=O)0WfsnQIS#;U^5c0*nCSn7)(_CkTs~R(3@0z?9V>n}Mv^0U3{jgqV()D2brl ze}ORrTvp#}{nRK|{O@6ZJ)lVH#Av!jemWdMonWDaivQs0jw*xo@k)uS&X9OqaUwSr z7S|}cXac_XBGJ36gV&DR#f3K_b(KtE5zJ)Y=()rqSr_RlPfhCxhk%B95Ae|7_n64s zPU^`3D920q&5e?UHKs6;Sc{YGDg53bD ziAhwqzqoYfHwQ+CRGm}Gd4d;Z^osg4JE$%snbo(mz!)e7*;UiTS9U|(GGM(40(QPu zid9L}8|NdI%{{zyD6o=o8vu8v3ON+`mc>EwmnrC1^b%o;O>yyXGoFn<5dSXP7s704 zO?Nr^3bFA4HJyCBh$1U6haY0*^yrr=JBWqpcTx%N_-y?gAzuLc7M-kwB&PC2phLxc zDyGAzD8dGy8E_Rn0p_ypVEjjHL*nz&z)`v=&1mdsoK&*6UE z+lj+!RR;dV-;#J#M)Nq6=MJcwF!=8Rv6*C&Y|1dy_&o2Ac)Dx?NJMWJ_E)`+Mg!tF&VS-KvxZ#_usAM<5Z*+~`lOIxr5f%3%5#^g=2b{aDwBRQ zrJ9HzvUilbW3&&s8grk^6J=<85am!NMEC{3gdBe$LpR!f9lSrPXqN++W;1ryB>~4N4QQ2B z^uPH?NnkeE3x@$NdX{x~-$2@z4}a-05CZLY(OhW6+=zgZ5vwPc&7|-Oq94Yt?&qtu zZ=Y&Ya1+)tN~vHxwKB9b|E0qJy^KTv}y5JO# zCGnsFJJ$!gCcYO9u^77_O(fw&(WN*iFYv&+U{z?Lmg5IQ)!*Y1|LAkgQmSHx|2yKU z+v)*foMBqRZE_&WC+GF&Hwr{?t=nAc8E2LJesU#)Mh&@1yO@F8y3gofr+AJ|fH~UC zyU(10X};i@Fd!4bO5&-`vw}|a-rd_Pn6$qE+isPG`_2iUFE%=JOKHWjTCn-jDHgff zu|A9H#}A!-xcNxER4bH(ew%G`r~~lOpTc5VCRDNo&=~=~$3UN$)>@z4+`aTHpcgQR zoXd%)QDOR%+PBc`arR1Z%v+D>>k`=o=;7sRBzUgzrwA>uo`SQQkS&qNIlqyFMx2ok z>x)?eP(;hfI8l1=GUV~AcoKU%KX3X9$QI=Mxz{z;C%r}G-w8g0<#jvL;KKwUq~AMV zy!;gQ|CM!xJ)pL{!^*W-7B0xBj*X(?^1kV}TX)Z+a=BUj56mQb zqfyS8TxS(JAXE(0NqZk+LlQh*@~YZ-r#N`|Yx9r_NK7}*#bOhLZTo>hYXc~mW8xn( z$t%El9t4>TAf*5|u78RSz^+Yisp|h}hGl?mWVE4S5opQ4ME#{!q!Do`z^-DlL>HKZ z3LglDik$RB{>+#C4Gf$sT*KX?%lY)d4iIvH(PBk*qKVLs1)x_CMPvpjo3xgaCgHl- zcEw*Wkl-#Or>o?mDK3sCi+%%&7G&RBNmg68R;2gb@9Sz^j58)0iQ6LHpY48yl|3Y< zQx1Qr%(L}eqE#(o=sbQ86wL6(oppbBwzEW;@SGMXHlYXOx0V zEVWoqzX?o$q`3uMHQ&n^^BDaJQ;bU)qF2*@$6vbe-|w^@LWMjDJ#}M zcqszxoJaUX8w4z+J8IRH@Vx{jLx$o9y5KkvXUV+(B1St>Q?e?6j0&3#tQz2&CuR`S zgp&iYbw4p|`+eCSk08l#`!tk571+-EO6I`8Y^>)cH9Ug^O9uj`>?rB#fi2EgVC4Zo z)!@TiMzL$c%5FK(j>8Vz$_~(|iFx<%@H@q4Ky2mq|0R=D>YSX7NJvN&rSS8aHU{r% z0|Nh!%~;-SOEXQSayjH}6BOa;N2~Mp{trFtEYd!o5?xc_7KqLWr(z7-#@E|^F3+}up;XABiB{%C) z!A(DdBbpeqDf;;K_x09LG^(w~?*>w7yc$sy>u%ae7{(t&VFD$5Mm8cJw$|g&ACZb? z9fJ4Lu6W61xZ+v()I#{RBPB3tLJwkyO{a=*HCU}9*Rd;Sz(@0#oKr^4r6ETt`N1?C`WN?*R1r8$!mM zCrAWe)Tohb%Fr1hDa`CC`#(F5tG%f!C-&)ZEI77WC8&wNvDD zt6nfd%~v&811lqoN>+>KDnV;#xUz_mq}Lzs6kgn$3YrJV3lFszMuSm!op0d`O^}4! zPX%o^7ObTRIk7%(dM9$Ya{MgkhJA~oDcsLJ&hC;z`dpbjD|JC7AB+O9^VKKql^rpJ zUD(gA(DUp-47sQNXu4dB@&B;bJr)*kGOx>I0e1cHA4iAAO9F6|Cb6OguNgay>41hZDI z#5qW#5Zop43CtQff`X5QxJQxoq<%ehtqUsNq`8gEGT z`qIW^Y#=~dVjWUnq(Okh5Y-@>z8PR{esobztiBFSD9Mxj{ps!6l!+E%<@u?qWVs4x zm}R+kG7~NS7omlSjQ}~Y$j}D0E0`hT=3X;9lWUg(K4;?x;NELJ7q0)X z#S^fG%>*oiD9<*M4Y>Q>c^BOPnviA>4d19JR5VIy!qRf9Xf@g>GG-9(k%03spR`8KGzry>zK|K z`s%zK{y_V}n^2lU-}BWdyyaU^-l)aBjN(p>Rd=Ud5?Wv4!60I@-SzP&ew|8C_qDuVZoHkdc33 z9sS*72#|xo{@MCQn(Z3H3t{z^@>{NxS%UBR^#+`l7P#r3{_`|}|Cd3*8c2YMLQUEc zy9_w_g%EW7Q7)H}i;%#x5g2}l@Yea(?4RBmRh47B))wAEo`qVpX@f#SW%akP)OW+c>uwP0; zQztlubMvQtbpoBf*?l2SU37GX{Ny6CsO*VozY32KRhj~ZkrBjvPt*O_ zQHi3!(@{IKaM$#-qFc8(WAp$C{3_tdss73MI6UD6Oguq{Kn7+Zg5PleDT1YvI>roZ*8g?(`8cAxKwM~g;X-xqH_;VE=T6L* zvIdY)deu|O9hGaPc--{K{xj?;DnR9J_B{(mMSR&KwG7L3%^JrC0txJEz2tZK=y!=M zrd1kFRA!AXN52`5Ict#c2w%a15}7sT^)*lkQorf^8Oh(JB}{<``*{o6u?I7YDri8^QO1WM}5nARy zvh3f6MiE&wimSh+^+*AobuPtSS#6GhO^mO$_IIoR;Te1V#@bJu^lxUqCXYPL+Y`}U z<*!Hc*7+_wUjblXCY7g}cX;*jCs1Ec#Kd=M{^#DqC%rDT%qQhq06UN`oszqevBn*9 z%b?WSEa*xbO!F{dGB?xu3;zcWjY=u%cfvID;zpLpA7Awc`v9j30Z{Eo!yK+;|258V zlm*8(;cqob>V@zD_NPs>s-&;8HIs2<#sjIpWR+$#S&rpkX#QGyg~zu}bT``3sF@m2 zvP!EAixXtfO91PCf1g<^c*o95{=0jmfHDk;6pFg}zlT4_??urh9QsKaBYe6+_EoLG zl`yOc?@0t1L<`(=py(&{h}{xamA zox_)d1s4;^atM0ZNR@GYK&@Tf%@6i9;qFr}Hcx)Hw^HejsgJkZ>aOd6w}AU|E&_Ya zv*nNfFEv#vKgmEFk^&?8=hyaix$C1XuKDh#L~9xR1A}bpn$Pf6FALPs5<2yk>MKo- zi0)j-!mYT{4!47d`?ekSB>6eR32ms@jCx*_6qM1;5ju#?JDy0c5oQ1L@1Yt((~@Wi zCFTF-_KSj6@c>m|KDws~Youez*%n!Y{j_MGBzqoo{YMNK%MV^P+g-gn%PV9FwJF#H z(DQ&u!&ejC>#Prcrmfn$z43VhAzQd*IN&f)&g}u1%rN^(P;6a7{%hbwU4rRPyG#kB z;FN|A(Tb+W$Y+Ig$lzeXI-&OhvlJCGqW99)0w zXg#neaA$89C6%;f@R>H##zjM60hP`3{>|PodDOn-u)O7%)Cc$x5j2P@BOPH?p*=3c z^K|~9@4KV!hM%|AmYupLn?!k_UmZRK%AWQD0%B}dQv|@0RwZXa_nF_!td&4yP zqvUsHz7xc{Hn3bi>~OEhxDnTr zb*7cW!%VQWSxgEE;UlG2GN91TwWYGd$!JVWYyhi;d|Kod-_d+#{;A@`v8;?KBqC8i zQOWmxEL9mUm>j5(^P1&gmd*E<>LZud#S@p77cD?a$Z2R0?az$i0 z7L?FJ^G;z1L<^VowDVJCwxaJ=o?h7c#ts88Yfy-t%3G*lfhxJXOE8MG*~JW79H$)$ zQP?aoW|taXc}YOET&;J5HYgYH?|yi%1=Vl#*FP(d7DVuZQt>g*@QcaV$0X+J|FTms z-xAmq!OW0ohxR|fh70)>SW0sHY0kY?O{)0Sr&!Q#>xmv0si)@qV6ig8w#$SO;L!Ey z#RUnY-oF{e(mN@M^SF#ap4d|#Sp5q7lTC*5Ra!ip8%#j^oz zWmgdfehOHHe$3q@`RC*DssjRELzxKQfbu=e+ zn(yuwG}Z;d@cm;x0Bi>s@c0XXc=+>w_{tttZ-Uok3?B{KeZEKA=Ec9qu#XF0$h+=3 z0!2n+x;Y8*o6#EONXC{wVEJ$0_4EOo-2x6+JP|DUx+h;Fq0O<_SV$LIkO}C|1n7rX z%nQnCJFx*j#b;OPgkm(b3c1DEled#JcqL`!r#_-MemQx`w>)7KeH1AKb6k`-MWkd6 zYLuO?d7Sadf}F-?W+8?eAQaQ&Wcab0O)ritl1!51NA*QLPUf7~`Q{gTh&%g6d_J7? zR+SRv)YkE}cK0!Di}pSD3<_CYOTk;~-U#>g9EIM3*%qR2Ztp4xN2?rXzs;0dN7mM| zw5+{gvc6f{T=!jez!Y8?xQF3gM2jzjEWSEZ3)qd^=c%@>oWf~F0u#d=?dG3Bp`nV~ zvlY5T*^VS^O_pT7UU2RqPa}&pCbK@fwhZIKB`Reb_dfIO2}Nc_5_erKwVa2uc8sP; z)Mr*Ah!a6y-dEjqe2Q0|eF@JhlzXK@dg;LX((exQl-yW@H8yH37DdcV4Y@nCbU3P5 zE%lccuN)Ho2d@^&6K>L~uTsElT8imXuDZ8cxkS|M%t0*mwp41ARGrjl(<@I_=RF$- z9}GT)R3hK-%*t2dmIP=qFK9wi2v{aUQp>dv@K2Wld?+Fc1|%vOtz0P6+?0u2_0`{{ z!$hfS6l{N3<)X+1B&)@rA|rQZu)oR~0lU2Q4Xu3ht?5u*4`^LlXNf3CBeNWb=ck*A zcszvSy}z3jQ46FJ5)ztj&ncfJpmW$c*h)1hu{!c_YO|YP@;&SBnlL$!M0-MYJmrABOD}wFv3o-3(FqY!&EV(2Bna4O<-a$0B=-|N z?%l+2Wiq*3g7l|jtH5ID%_^04Zhd-o`#~fiD5$TmA6>S4`0`|CI#p=aHVWv%V+&-9 zFG`2iOoo{X@Ip>|?|94Q`LW@37&j6zm|oMs2bWF@9Ai4I=i0xY?4|jpQpplGx3_)E zt={hrZGG7u6=D$VVcbPs8>p+AJPzC~`IH&&inpL#5hq(oNT#OOj<(Z1jx7u$Oo|KxDHSI?aw^{U6qwKI=&v+; z)E0A2kKxL?QCOw-A75+QW!k0hCmCmXk5r8~DZ`SNL}%k0Y$jn&c)0eZr4>e3aoHpq zm|2ZZHOiCNoLYti9xM+@L#M5{*^4qqB5ndJt$(}&Z7{hE2(7f-u-BhFqIie0=P39W zgsmM8T-e43>qqZeJO*Bg>b*SPlorfa%lGC+?h9S-PeQ$LjgHikID5t@qHpd@OzcZ+ z(~E9T_Zptxw6sdx*Bt4w-;b|^>=n<+y}Y(u;01);^(^(ix1&F00j8|Mm>DO`jo-I3 zG(GkEu+BD;hGuP0oURxz?KBZ{%>vS2IgsOMQ1U|}e9m6y`tp!bCq%j`kbL(S>2 zWW|zz1j*sU2k8WSHv;zk=6E(l!?t@QS6g!ulY!P0LtfFPP&XwErL}l_B9w)g@&-FW z)LaO=!;6QG%UD(7c}bEk6mRO!Ovw%?=q63~0 z-3y2jNlm>SFHc_*n@G#xhiSI#OU3c6N1`|3Srfw6*uLbJGf7qHe!;Iof%UC&-Q_4h zUrb2r&$QpasYhP3g|Sv?#XqR2YaD6Uo1S1BH9k%u(l2V11A7ywc#>9XkMVu%zXWLE z{iOW}f%mexzhAf}J4vHY3V}`xfljFbjom}3@zlE*16*V;en@*YbX7kvZ7t~R*Jwhi z1Ow@2I{K-_&K$>bx75n`o_w>4HY*nJ-2E>xZ=i34jxT*>1Bxud)Qj1yE<@4@Eck8e z;s)?}-Jx|E7QBo~+T^UsD(XxlE9U8h$LZbeP6a*|E7vI|Q7p0=;u6~+n}<&q$bP}d z$z-oajbz{#LAy%jzTj?Em!L`r8snPzp>ozAU^QH6>F z*AX&D0dsU*-38$n)d-XIK_Q%0Gxo~RZoFxKq|O?|ASoNp)|eOVm4{4agzy97Hn4}T znH@JTHLrIA8vnT56x+ia*iI_hw?u%WC;|}>MG@B1ZACzQkf6+@4#3=h=J&czt4o%4 ztab7Y^Ntr84!TN$3iTI36wqSbHd_D8IqSjZT~$Uh@HWnrVQZLBF5huRKZO z?2Ipa(n^7JgH2Iy?X6Jh9H_v2Ucjoo$VsyerF7yXbH#PY!^qlprDisuqUXpU-f3|P``h7;fpoF4c9(ZB~dX>3akKENm<=v+c=NSy5c ziJB`uhl|53Gc``3AhHsC5-q$xxDNQ@%^9$RB8=aQs6*baRHPIaaRS-~hOp+IE0tzz z|Int5rSkYwWrQiK<0z+lh?J?LX!Kn(3QZ{b@d{(JTHu{~VA1NdB}am5zf>aGEZ>X#0G2QkD0IyD*je7Sb_fJf{N3VOaltZz_Uq8OKxiU|a~UQk|k zRz2-v{=*NTVu0^aFd;l!n~nl|>8 zeKP35e6@gs03#y5yll3aJ#)`btMlXJSOK+)yt~kw03>;KHg?6ZuSe?=m0KQ5gD8N+;8Pl=L|MwPy`NYJ6 z(BB+>{tT$tLmhR&vG0gFhUV1c-~xacxds9APGxkRIA?D;R7$+0_gmPkixHhd$Y(=L zKR{q6hQqb%5TuApEQ&%kJU5j$`eju{Vg4!N)DOVTR~vEj;gljTj!W3nA{7!1qO)|e zJ^Ex(n_D~izwOR5Do@nvU0_%68oCR;iBhD5AU~Z+pGByyuJd7ydvLfJFwpBn1Xw*3 zC=CWlw*Cehb9C3oU-8>@+I`d!MfE02%Us3;@>k?&Rfj2^(noN_NhG*<^>T+iezoqV zz-k8rEmfeZ6?@}})(elzGpp0XTn$C$Ztnr8cX6f#z#NuJa)T9o1bmRfVefpgg)O@| zw85c%LV{01O6ZHAc~{DuyLOFEK%B;azTngpa%18?%B6C#691WuATn2eP+swOM{Mfe ziKe#xS=qyDvI%|4U!=Iim$Rx0^NV7{q!7+;pv2A1DcuiJ1`1zCMkKO4v_)IngA@0r z?AOqN1@dvqiIs(U3|lD~GpU*kR0`+fTslLO6}5B|V| znMn>gR&ir&K}KS3VDZP6l#=`zbCnh{_YKeM;}Jut#(8V!I=&r2^b|9Egv3Ko0(m>9 z=-8RWoBQ@tfj`L;fWD&mCO>x&i%c%kjKzVk!le`+GbxA$&?OUKuUH^0Ip6O%kCZ~~ zSQaIF)z;QZne9A$3x>p%Gbz%j>QZ#k9c9o7?)6jeM#aGyTzZ1s(v1s@cN*{Qg&}^y(|o!j*Tv4iO} zqU)`VN**YlTB+~x>^Je}O`UQ{rRtR59Pwf*Fa?~8Ti##j3B`>Cx$D~i>{CnB#Qw;ccFKzjjA{25r~mL6d5riP z0;{|LRrf-rKGd^Y{vjP73rSDY%wU%HWUu%`f4FD)_Cs;q`L*JBp#@p<*6C`>0e>*> z>mz12g=3Ei5p0n~zWX<9lCI?Og1=}0ZY;=vAY^>&EJ^sWCJ@ZlB8e*`+WcBW&Emd-;I9{7O>yH2YNFkBP4OG;nP`l8L? zJ(U*7z5)257h8t%cYoddZu0NTiUEIFG0T18vEUo|iWbFkw>$h>5E8e7?MBF?f-w1- z*&(6$;^G2M>yNYz(!-G3-l)EVf4)>;s zQ=L&#VPVpT7oyT9f|AO}Qj!K(X}gDs9*8$W--LBZsHpgZ-42&-cwa+zEsUuMlG|3- zx;dC{aXke zV>IA`_A~eYFAj&{3=iktc%eU(o6NNS;+s(HbhheU6N?B`qbV${bt!EDY8*c=4+GS% zD1aSacjr@~H&TZwfbSKkXIp9n2lxls5G2PvL($>TQlE+E`kmgG$LH*4UwgR@$Rt(E zwL21vw5x3Y8Uq7TW4ds~$v`HPL2S3HUQg6oBeZM-S-q)dM2N3SY{kAV(n4uiY0^mw zZCbIZF@C`IN$iong*F@3^7XGJLf_h7-6YFTvHk~&PfyFM8BCLsY1~>8|0NRwa57m< zu;&Ly(kOPw%RDt7oS4Vel5IvFZA8Hw8+iDx&LAE@Bd@on;*0Ue`N$@=hS7SpEx6&a zK~(bt1JV&UEVt)Mz|4%&^(hyzP3ZIl_o~8deYXAg!39vA`&8=YLYq7H2Nm3fgc*AD z>%)mGsDRs4U>#EWs2@KweeN@9&hBCL?3at>GgYP^&#Ep1ur2eSNT0^N3|ITq8XTEW z2p5C*N@j)bBD&?~*LJH&K3Rn&)NBQ#4^^V;?L&d{ic3rWaZx)!;ap`nr{vOh~7k zaZjpVN*)!vTTDBbwU$GRP$f&iyoQnUezb2GS$DK&v-O~Df6gvw?adRt5`;l|YEY_^ z6lP6dVAxf8(vKMxQ*%tKx~uUZ{l9`+`P`=oOV)thS@z$1YXQHv7T4}1FiPscpvasa zMjZ`fUvdo8o$pNg3knR6{2S>9=)s4&64@ja7LnN}|4hIzBf&sBv9DT(s#Ys3tv~Z{l0R&Y3pbnRz)s&2#UMS2ho?|OJh zy)3W1n8G6_p3|pYOG|lb$v%a?;Nacj76veo3#)o{>6~OuQPEpYw~7A?_^GGwCtUso zUp_fgc*Y=k(}n;HaK+}`CCE3mo)@8u0vM2Acid#yY&|T+$D{Z?J1HrBOm3{@ca205 zp?KNogzBMKQ6%vX*TU=W>YCcPA$iwiKT5K4zsI2U#{nh7V?S~{VWgu+{!6^?&=BjZ zn3$B8?!5P}@?vdoZR}YvBT3ncldAH5krhW`4vL9ibME(lKd2yct z{(Qi(0CxelY&M6`9f4NFq0{c~KX{ayjVuBJ0!n;J9;$_|7d`cH?Bw8IS3uT_KTM!q zIFx)Dl^_t=S$A&=8>o*19U<&&kai+H7%UHzRi)4Qow`hR z{yIPR9_kBfc0eJ8jp**zmGTbtrO{}(?(xGRt<;;7$j#5|8k(Zk5B2u5x zd|jmlNPj0dH@5z5Lk|k$#L8Qfh1W@ZV=x32Kp1*P^h_p}9j->N$4*Shfk2=_YaJb( z!#lrlaHs+PgrVu7`i{Tv5n2;$D4k8J8Y*fk*pr~gqAS1aD$~!gloa}T zyc{sEQLEY+;ce)K_UBhklm9w*8k1+AJ?)Ee8#UA5xbcWW9pIjM5A2`&wJ{{SLFPcq zIpB1>fCj+Tsp*&~JzWC@H}c`x@r1TWpsCZ7vIeDRr2e-`F;?OCkE%&Aap{2gJje1q zRHp|d15ZR@J-rRX3~n1SaJUD_eT4(A2jYk1rt2^h z0i{~LrX((|m;-B{EK$UGK3#8lM*X(Zj2(-uWv;?PMumBx%^XAjbCT{~7Zi1Fp;Ru2 z$!<#BF%=tHjpDyJ4DSa7_#~)v-Lh5k*jy~PFaU?8-X&NoNh0=vogJanX4D*JL6BFL z@NaUU>MT<(RapG*7{&Myfv8<8XGjE&55(S5&_cNr0E+WGhk{6Vjvpu!sa6s3a=Oy`tZ7`Z zHJvIpo?;_iyR-gfP7pYAf=;>SrNBoC!^bzZwHs;=tbN!#;uM0nH8(3NqM}ax3<1YJ ze|*F2VA#&nf~fPWoU7^nx+nfkr>F4`Hpje8p%A~-uqvNP#VKb9vTB zYTU}&Ti@uq9fu24xlU`b5O`oEhAKz&%I`>)_c@eY2627)t;PO~1VI{;a5 zx~bwwoif?w3l)>Ngp2@A3A3%$MuOGhqio>M9HZ$uHNrpdfQlv{VN@fhNn6@-0XJw& zrwwkgS=q=WaY{i!(e}AVJ}03##=lbp5{93zIw?%OoNLBO#hMdl6@+*2?2ip908x!1 zQV~o}p`)K|-sO@Ww7;kQJShsfnsKI!nG z>U+FiKyD4Y}d}o|&U-o>;OMIHeiH74vhM?=l@kU58 zLrdZbwm}g!NlpMX#`~6a7{G;CH;0TY+=<#(WEV9_cmEcS(!l@qXH zDyXV`)rQ0(S)uBTVOC*Fc3{|9+eCA%bR0+6=}VL2W%ouEPnG4V z`8ClhGU@vW(O*5ETMpMgm5)hZ&(Us+0)@L(BZ7eOft1iGS$DL%gx2%1=`tcMG+h3-hPrx+WfHK8y-JSf=dG(4Ti|yc#(fh6 zcOAih4?YSHK4_0oiEW&=HGxtgZdL;CmS=Z1mubNTqdj$USD zXNFh$9tB5$$}yzu9S)5UH_&TM?Br@5MB(t~)8wJ$focjO| z4Isl+vAtc#uBgW^>YK@n z{LtIkOL-#pmVnnnBH)V4BXwTGLHSpogY>`!y4$z^J~1H;#KRPAAd8*B{<;-tCFPfC zQ#&+)5Qki;I?(&~$;;bh7yzT`x1q);&-Q5>+KBY8e)oRAu5SpkPibBv@wt&SmqT2V z2(T)847y77YyD%l>5Jm8hGysz-MbD>pKEZG=Q4g-)rAUj4{WcH)Ma-4*S?*W|F0R=CYrn zFDFi&>Q5sZv&Jw(-eTo={@n3eBJ}t)ORRl%swpz?>1$ZzTXQI1qH??gX~` zs`37p!GR1JP2qO@FUo_Pnjm)_Ki>HY-N^K`_t~MUAEdj7^ra7<$<#j6lg}AhhDBg_ zTr-xISt)IhTIA#v=hNvGxPgclB}hfW7)=|gA%cOl7c@{%MLrKCKPXAWDwO)UQr8Q^ zg-^%dQ2hWPNVz$NfO)O$c4>Ej{}0FmUsyF6IMAT{7ia_o`L3A*J`hD%%$MtbZy!vi zQx|3+{kBQipjHF(TTcf1iY6kNf@dg9@6*?A6j_4TiOsBIo%J@qbu3Bf!4_-{e z%2YKWoJ4s;rKQ7hv!$+|6N=VPE(6oj2oh-31y)029_l^Dh@9m*N zUczYj-~dXSe$@2~;Qx--5$WQIqgKWZU%@Rv{4CMew@DhPr`hK7|7}y^*&7)vPo-}# z5Hv{JsU;;YbfTcJ$ou?;2?t`&?9{NS_~F2+e`d4I{blQXb%M*=YCC~vaISg)Y%lw$ z9)AtVM_jXjNrcsR#$!l|$xu^x)E1PcbZD0E>wW7Y^_{(Zj!X(Y<@W0O>i!ceJW{nY zV~<7U=P^b>$^SMu^xGY(svbgN+t{pW$Ctcb*VUu9x zzO5z~_wM-cTy9PDcE7#MB3rM*YbCBpAj>_cCqt9#Okl3*`0%_>*4kjlbqP?#WU?$J z9$2?I{>#nFW8^O8-dm`YtYq-GyAXKzfy<1!TwM+4ib_-NTW(mLw!U2Yq{XiP3cL+7 zFYPlhHoj~!^+Sj4ja})id-m*^QUKh>WRjSo4y{VmfE_tT=4T%u8RMt30&v+ltMR)# zJDcrd-7>D7HZYqFY9PFR?R~xV&rPGgN&PHGj-~@Eb2i=Z&sEYF_ui0}109zpx~HJ1 z=+x^8Z~VceIiGHX6a-vNppjLsGz)9%!`F*D()RYODZVYcOZMT!-y4AI zJDO&g9am|z5q<&e&%Rl0dRRN}?Pr^5JPNzS+ZUTZI5X2&tK#9?w{!I$7YTqJ4xEDW z01X4F#P<1uEeud#QQ2DuT!}nk{bk$gZ)YaQwfO`bu>lT$Gz0I23_h^Ip{%F*89O6n z5F{}<*6;I#Mb#gxF9~)$>&b`<`0r}$Ri*+?cNI*)E@B1Kg-UNo82wRHNNQKAk`NOE z-t_qwSarSWzOkf5_-HGrx-n)fd@K0yX4KSM8MBtXi2GCWC3?s1-K!t8_8fJChJBpI2FHf^L_2aXwJ9`Mpsix_DldbvldJMw*MDT$mLiLsc{#~ZJ070IJ*hy zg{MqXecg0mWkE?vir3ziX_h(}^ z%`N+|&(xxzM!JnpcGbUysab(H6VFWsJN1ABs6|)Fc=E}DLEL!R;0s@coEHPeNcU7x<8ec=q< z@Nhd-Ri*uLJ^`zDe>$$Yv|91JS*d>4&9-7oNc!&r##D^}q(JauX#_4qpE^}>E$~2$ z4<9}}5Pv1K@$=E@iIWONq@=oDUthnv)$3d9_U+{#<4nTcA*pZ?sMoz{`}}T5^8wVM zfTPAm&cH0OXmj`+O>l`1u9+ZV0wkwo0Mql77jK_Gf@BzoBcSAh7obV(7jHzTFOyGp<#jwMT%t`wRC9CAHnKNWcSMWr{ZVaZ$Ik%6@!NA9fuU)R}um=#j8qWB&- rmMq7#=\n\n\nBrowser","Search\n\n\nBrowser"], [{x:2},"Home\n\n\nBrowser"], [{r:-30,rx:13,y:-1,x:-3},"Prev\n\n\nAudio\n\n\nTrack","Next\n\n\nAudio\n\n\nTrack"], -[{x:-3,c:"#9988bb"},"Vol\n\n\n\n\n\nUp",{c:"#bbaacc",h:2},"Stop\n\n\nAudio",{h:2},"Play\n\n\nAudio\n\n\nPause"], -[{x:-3,c:"#9988bb"},"Vol\n\n\n\n\n\nDown"] +[{x:-3,c:"#e6e067"},"Vol\n\n\n\n\n\nUp",{c:"#cfc82b",h:2},"Stop\n\n\nAudio",{h:2},"Play\n\n\nAudio\n\n\nPause"], +[{x:-3,c:"#e6e067"},"Vol\n\n\n\n\n\nDown"] diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png index 7522af3330a21dba81e3bdad2f7f868b2b294680..2538fbeb30874542445ee8fe73c0be7108c5e240 100644 GIT binary patch literal 98257 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૛$xeR|vYaFBm2uzw%N zkzyta$ZB)Q79w+~Gh+m#@bNy@e{f#(Tl3};k8971NmS}oKQ^C9nx6yM55@Zih%1%L z#u$6o!_Yn6?YC~c8(EvH>kbni^Hycnq$8_pGy7KHqLiz<5D@JIPzE40n2%pboHHEX z12UKOKk?Cf{3j^QFoWw;F=DY#V-6Hpn`6Nv%Eg;~h}H`vuj-`ymdi8at;RP&rgFwt z>1hE%J2N{t&X;E$nfKS{#-HEh&?Ik2NBSvxhc@B4=3K{?rn7l8zMs3cgabYusYVd` zLtWbmjoUS2l@qn`J$j_8@z!=8z@hs$?au6z#JM{XEkw^*W!PvFu5JQ zyc~k=aJygEI>PyR+WbPB1Sv-nTPRsE(&x9pI`!>0OEl5;O2A}*21}i|KbilxV--sx zYDtO|qL;#n&^wY*Ka%aDZ`Ed2DyQ3%awn9M%eK|_9xuCvD`q%@LXTL+IlnjO%d$33 zm$MuxLzI5ebKhy`UVZnd{}I&nwR|B*Kc=zY-TwV8^WSLAK))T*$IRO|$DOR$_8bVF-4R1_%LQ|T={8Z13~;X%E-s8Z!_ zUj#JEMUy&g4H%S?W3DZY86cx+LO*_L19RDMI=Z^<6=I#8R4TR&%w>F>u(f=$;7?pDhqn9`JUn(nR~;r}07Zygq8)ct!4 zA|Qe^3@tD;0z(NBN|%Im$50Z2v^3H~cY`2EH-geNl$4;Pbc1xKyc?hAcg}gwb^hV< z@`9Ot?^tW?wLa^66VS6U;Gc2cL|t+Y_vF|=&*?`Vh3bq40W7H*^&Q|-&(UAJ%>xho z$z-o0=3;@Bo5nyY{;Q_rn;HXhre{rWCE<4@T{)E@R#YpLX^3R>)w+BR$JvId?xC5V4l-&tf+LN)B5E<=yZ9y zY`<(@Bwa0^ZypG=sy8T!LxGb&gJ{F@^sXOE&>wYQ3S znGgbR!KWF)ao(%Yt5<{!Ek;S~sw53U|4^^Tl5Jyh*cjqQOTWBe_lypiWinG<25ubN;@6zZVKESw#=#X=L+9%aX4HO>fPods?bNf0-Bzjt27)Ww~R%Emf*B#W&%>2#Z1_PVB1rf_uS=}O*< zm)B7aq3^vPg3TZ^a99p32yfH1gaiEMWgcTDn>hT}n_JPxGA>dREECzTM+@Zc`g6Ar zJO&k6HuPD4r$H`$OD*Nn=S-|Q63a~`D#I)3=-fEByDw&cX7~38hq&R9A74^pt7r}! z0h<(iJq)`e2&c%0X`d}qe|^jFpRg#Y#F6}J=g*HyQ)s)!Hz(nqR?kN!Pv;g>pfZNy zF_6+xJ{y#&FXn_Y#j0j@{|KY0lrX};?UP^B>gin$EpmJS5D^&!x5^;Ekf_qWy%6?- z`IRtsCDAkQWP+q)$@HJjEE?19uODf@ImdiKUrdc0HXIU%zsnSNQ(ne=xQj7#`$DNh zHsTmV>z!-Aw%O;Ir8LVG(hIY*o13dwGZ6-zt9xU*I9(?xpEtNK2+Aq7@2Kf-kr)L& zl)*Bfm9M~;d8>u@KG@yp*yzrXtGwV(0N>YfPYDPFzT;iYhDE`u9v(nOlE-=hOy1j0 z5B?oM43tS;>Vrd$M{1-ey&jID&&N{tK!GJ|Q6a3)P*uDAQ1E=4!IGfU@o85xAX*#_ zYOS0>vCjQVp97jtD5oFosGM=z4&@N>j#Q7_wlld$242iv$+;Ja7lZ`l6*Egx^5A(K zygJ!w3e*UE0HF;Exhrn}EbWStC0xAaUNFFlv^R^e%ir83E>;5o`fAJuK4UU0T^e{}%$M2BMUJ|PGIMT>8=V@PH*v|_}fKy=5s-uq z7C&X3Q@zLpt=s^n`z4JX;;ajJV7k-B7R<6EI?$EVwfx&bALU0~XYS{Hg~s)NU*4E0 z>xXiV3IQD1yC8p0qwWGU<=AjawUjSet#*4K*v}~Ilg6o<435~X*txq`J+%5~^dBpICv5{H00x^#Vmnx0XmFEP z41l+7?}UW(VhQ&I@8SvgLFHF-Gdft-C+QwJ+k+>IS+W12=bs2Stnsbn%|7^puUBW$ zLuZCAq~y3z!XNtHl%<%TqPNykPPi({=Bw)Y|GQ@-_}yQtpR!($KCywy0&d($wUt7l zI%|3*(G`d(L*gx!bJRDDbBm@mJhQHNw5my|nDBou%Ts@hiWhk7nU;zdg9TlY;PAQtB+~{o_+!77~C^#@A+j?{K^BnX-Y)f^kJ5d*$ncjy-*IXLt<4 z-p?*3ioCA!;S5x_k$`p&-bmZ$)iBY&qSXR>eOS5JTorU|kSVFocagqhJ-7iVhBasI z1tyBa9db{pzeAR2ujs%>&`Hfsb-^ABiIQwxsZV?bmrcC;BH317GK^NcXh!=o$%_V& zY}KNJjY}i_ud#KxJ^}Kp7JP`<1iVPLtJaqxRTyTTS!I>!Y9_-4ZDNk%KG^ZUn6c2d5B0Kz;vB z|J6H(VcT*-gnU`By)59V$%l84%wArBvo?JWaob-S1&&=XHeAS^ua5KIQ?vZ&y~AZ` zW7rVf*s+jLZPsVmUMNg=-3PDk-&L?=@3sIzr7L#-KU@~$8-b`iG&s;$50)4whh6lq ze@OG(kItUq&RPiyfrjA2FOQAd=BWVlimgpGI^rU^#-6yvwN+B7J^2mnDTLZPn0y$@8xox)~GD= zHTxRKe@`kP`b3XV8MZ)gUZ8KQm85tZJ{apF=C8qFt4D~~*t8GQisb&pn90kD1$`17 zQ%C!cj(G?;Urc>$SyVeu*%)Ay@n(XY z2e_u}Q(7*0Dd-lzA7Xb1Xd z|M*!b`p@5hpZ#TKR0N91CWGI_&w!G{-3hyx>Lwuwu*w39n+!#XUVHA_GZgkguk z1S;(_!0$X~TreNm?sHFH#Nn;jfCcN6n=A03v?W@v98CZrPU-mf;T>z+OSWqaMOUc) zFJo(R{0qNO=PNp^I>#RN5^3x~#f!(LQ`^K47#s}T=U>ZP4fkEBj` zTNM!zA=&7v9MzRT^e*gaNXjz!e#VBnXhmr7&g4jZpkK|MOx`v7YB3<%?kMJ!lc?7w z%2zw!a&`m35=8~1oy1lQN_ad36k7lb@)oKf*hc( z)5dYf)jtw_O}(b4mXJcUzPD@oLYU>Lh1#d)lw~zV?AM0A1(1Y0asdH;kawZSV$m>7 zHMp=zD^q;Xb+LIq>kudOb#Li=P>D9b%>(HuN;%-`_8+iNFa9$f9ay{=z;sOd1JhBL z&A7{R2N1_ET`xn~Ej)dm2q~$KY(~XH=at(tDdZ+w{~E`pC?ZaQv752?n~?#hGnm9t zih!Pr3$MgYO3=XHDDJ9~F2%lc*8zlqvMNuo+hQn?K{i>s>)ot)?~nVFGC zS{zTfnA>DU8EE2j(je8&G6Z3GmES8gbOe?flR+o4-(DC8XQ-)8|QgULQYlLYwvuHT=g z0Ol+3e*ekk*Y>FEwj zo3b}9u>$PcwKCy(~o=&*!zM+*#IFi#ogM;UP89X}U2JUq-!Cfm%@ELq%KeMr)q z((r~Un0}t|pB^2%SlbwYg^bh=P5qvAHwT9;51rREPfp8oRG}nE3t(u*zFY|JV@$ix~EkrhxvF4!ur~t)+5ifNxA|Z03<(4@uNif?dUbLUMJkkEEtgwv^y6 zib3QaowGoH2eA5?>0JPTRg-M`{|B(L@NxB5NG-6QI!YT2B&UK2tE28y!u*DgDsRA+ zdLlnPyIz{~^dGS5N8mf9PBUgTd{$#vD9@D8mmWxm1XQEY7N%!~0jNIz)>vK4U)A79!ekT*C~ zUt^80c`%Z=&G0B-k{K-)!jCEweb+@~cIQOMez__qD8rfg&=(ZK`0B}{-&lYzry%Lr# zubC|8GOIM`ezKjavx|QZhAbwwKB-QF_yA$B)2T*jJ}BA)9b~(M4j`cHvLxS+uPEv}heM$yL&R3I!XwvrA!)h)M9Q6KoI;$}1Ryj#-X zRmpih%ec!1800(xRR(y5Qj%dr>Pr#`|1gx$u3ke;=1ODVjmY zc3u3{E9^D>X$y!oxYIQZ1E_!=W)Y^;PlvBC8=tiwTF|p8)jWSo1nij*! zfji~VK!SC}YJak+#jgS-BYpmPgf{JX^p)a*E2bd*Mc;Y|$kSB2=g8vSwWr{te2#>$(keV`*zVPauf>kA%R<1i&c?BY-jdRIGIk^ll4r#U~@ zg;BB53x6GM{d%%W`u%@!)ootmJ6ttiL}{4>r*?qr*B_URS14kC0jdg>{$Hpn@oO~4 z@rQIGeD~1<43j*H)UDCbF(8{RYuc2W13Cfc=kMoMVyD=6dKQ$A~ z^8XO49|-5;BB{3V&2E}L3V5##e;oc3aymf2R^uh)kIYE#W(54D6`l$!;*PwODrYIR z(@AeBd!6g!lAH2Wh-dwF+1=gcU}1WyM1B9{3>G$3&Y<5j@-fN*MnQvcSe?;ezg$rO zHEooy6|>UXWn9>)*Bq?sF1BT;PEhplx4@dPmk-GgFL|kbPWnj0oeKG2Qe2WD_>WTk zNTG0O-X|O3&zUXO^Kh-0RA!-2p3wnxLR_T4PW6~-NMh`)Yp0Ub*XkObgkJrJQgz$R zEBL%TI@phi&B{t6q&Zq!TE`RW-sfYfAj7M>f-GCS|h<8u|Q{eI4?vOWBd&O`y z!@2MeIGu19GPAHqnlxR#kB51e2>mjr`-7fQa9*wrNFl{zfhG_-Xfv%Ju5R*h8h;-)YLNm zyCC}nz(Cu?d-r%w5k9n4JWa2)`!4eF`pE+wtJFgMT<)`5_cY-sq;`uN3#!6{=dTn! zPaIPggb9CtO4fI&k_7GO>|%Y_BLCw_o+H|~Ob42EnyFU$-3x}Z1)2&hGLIq{1n#Z1?n*2TF<0tErV#vXw%7}Tb1!~Lk!)>jaD$^dv z6Z1(WY)jjderL?bkGta-6o3ck8xjLyd7z&Jo(eZ2=NDfW=xgZcYlYdIQ+idops)sM zIfq8CDqAb44!E*|b_oZVgSN<-o>zl4tGKv=iNY^UWDle9_!&=zE+^x4Kpuwn-zhA8 zAz!Lh))4sdKy2Y@gsDyK6r3}Jykn>j2rCf21a0U4@s!X1WuQy-s!-j?TyOU=+`a@_1I-Xdpc#UP3a86fCy?l~ z3HuDB-io+(c82%QO<42GGM0{^=$^QB6;mHXUhI5ee1<#rC)jlI7cH}1RcT5E=H6r- z^eU*2jK4i1r{+hV1flbvdEyW^8Wj4Ekl4lEev)QNmWpO4LJ*1j16Y>oxpP}Cx=|-n zY3>a{!z3oql~UPSd7@;aW+0qF9K}Xj4qptch>3}5(|iAJY{KT<&3BxEn|b!*Km2$U zZWTR2PNaCi4Ty?H+2opm39x-;X9l&ND0^CB@CXn&X6?^p8@xkmQuR5UJW@-b!(nUI zyzcr1l!6AO5>W*OA$?2rr9uxIC;2T}P-`4Viz?Z@ge+HBpY=(BIY^@aUvtns-2c^4 zh$4DVBr3Y)Tm>J!HmA51&FwKD{lzG%m&>Hbd~Df~jbpO0-}O)h^(LKd4& z4&|_Rsx(&oiZTpsuSAXFTy_p!j(5+|gCnRSQoKVBj^=1~Qgs2zD0^CA*bwaIiQ9P> z1?;??d8W%{QU;O5Y)%=xY?{O^xJA^$EgbCm3bYbgHMn@T)IjfGO(@>~351p-*JRdv z6K90c&@kF&o8P$6k8hnFJq(XcN$I`v5md!+0_#Pq)gPlD==TnjIT5LHm<9)?Y5k*+ zw(u_7z!cY`_$x&Q0*P;0-EW|tauI}AN=siOTb+7jmrRH0zc?}nzw*!;&r<`^(#eD; zloJw?W}hiMde&P>`c9aQ{=PUZzyG{=$E1F@IvXp;CrenetE zyeLv)C`F@-xS@D>F>^#>Ptb}!1VR&32v{ESHQQD9-3|oe$kjDHwRf9u$#jd785~Nl zKbpOo8@QRv^sMbM+~o`j4170NN{kTmpb+&E$Wvv3Q`iPY24Jk;OPYI`l#G5WB(ZUE z3IYfm@$zG@>06P0CSC4UjUQ-x1LA4pF*+c{lqH&g`hf6X-rCd)SDeZNuYYMV;P7iD0GdF-~g8 ze-{f`#2EgOft6Duqk=|;Fwrg^Jlq=J>!KsjnY<1*tF_xmA`PX>0yB zdlEPdZe=66GPu*<*nRVPhKC~y1=z!pKVIXL&*gI>#8_9oXMMTnZc1?*PIvrYe7y+@rMI*aB~&xihf3>w z+z46`6fSw6rmA1oqvV~2WpBk$+d_SmTyLVW#_2Ts85~1v^RvyL7@*}^|E7AL?a9kH z2`b_DF~Owx*uGO$5S+BjG(IIayP2*5{F==se}8|0Xr`FBOrGxHj!n}=Sp`LzleDq@ zzQP>FijDT#A2wUtj}%kA2Ex_j$<8lBzB%50GS2VmX`-I<4cucI?)v_;-`LWUDYX6o z#wqqH5Tw}E@5du(jaAUtGm*W+!!pSh6^qw9nA$ozWJETKLhHI}5JV13T(?yLc-p)s z-z!ngVg2v|xnY&xUrD6Bt^}=rm6&8aEQCnSHYt4+RrLO3GVdEkeo~ySuH=oOEdQ!I zOUkqV!ehW_oLZy4wN$PFt4ub6RwB5P9y5Kg1rQ;&`Dkw>^^lcL~>Ra*##+iKW8!4)K&@gzedFzU_i}b-r3$U zwy`XE;)HC+?2S`^TCk8hdth%UB01{pX1`B;(1c2Z%DItcl#dm z)joQgaZ`!&ThTC4QWU>D$S~dA3av1fd{c;16}B8nVo$rhZ}ID>%o18uA2Q-*I76S3 zAH*;OS|9SO`1n~R{Os=*_1vl(^;fypBMH%Ujz_)EPKz&>@7C0WUGWWn6hj;Y$w^+z zMPx`E6(f6;m(ccxWJ4=0UW$hZXTDfgGw_?u1g%4i3U}^yVnR%y;=EnHuPSL!`?a}W zzmd|bS1aoInox9|JavQ9(^LP4Im;QfC=^7bqyd4%#f=GqT}7OuKRRAu5+IO%qnmSl zEF~1gq&T=0hY#iDqTw7Ua%+}F(C&eU^EnooX_%S&LA$}GenR#97D>gN_g@YwB(pQ2 zb8=NHK~Vjr+eYOg=BVbnipyHF?QR%Cqjc>nF%Tv62VKpM`axtTavY?{nI#X`~%E|ZF_ z|476sEaHuJa#c1>w@@7V`7X#?Qi?r`ml@U z(8)H;!gnH@N4B>J%Pu`;^2v3jM7rp$Vl~e;M^iWnOs7-GQegJv83q|JpGisf-(R#z z9o{#F*oc`8iQ20ijpF}IexKo8756cXUA0LVyOc2aoZToS+6t_h~xo$y0r$DuzD_X`Efd%cRTcd}=r)Xiq)XN0X~$v7Juq$1eKQwsCO? z5DsNh#HF&|J1%>scxn6n^M#r-LFy>{Ndk(7S_(){|G`O%e{Jc04)ab?e$%glaPrh2LU0-|;F z@W+S-Dy|+yL}PL=Y%Fu6cjR#a&mjy(OBINm9G|4XP;)%U`bwYI)wa=CggG43QTz>3 zv-Qoy?<+lnGF?sH`Ig~x?(i_$Xykj=L=(mP%3s`SLiqfg$Sxo*&v4u?9oSZF6DwpR zU=ls1UH1L&uGXk1XU~|r6{$=|Lz3?1Bv@`NmrLMh^0{0Dhh_0j`jnJ1vB%n&64yz)0KQ?tImFLsF$nCsaUkvVpOUZ zXsgJx(qkv9*%n=Tc-_Jt+lz#$T`AE!pJJl9SUe46b9%oB#i4cRQG!8!%AP8W7 z>qf|_UQ^S4xWb+xKg=m(5mB-mp~>NTzT!$gw#Rug>+r%Tn4ZP`8$|tqi0Q{=+kB!{ z{^OT^@n}@#BA-`nslSvzzAaH!85<(EykDZS1n;lW$1d6qWU1B1dw0Szcjk(`wXV+V9$nkzh%fMxSR$R6cHef$FvNUsCSVwVm17O z?=IA#x^B26NcH-){~kuMIEXp%y72=rGe|5W+$O3s%H(RSeXSaK?bM7QWRrO5@yW~e zl=Xe5FI|Q&?0KWu)0~N%D8q~u`h2B0JU0Jch!>dXVq~u2Ky3YrW>c&R+ zw^)*XowY@+3u1aEDfrqf+RFUq5A{+7(Ht`CeiId*?%;#L%$>?TDGo+x9&Jd^%?lc6 zcU*nz!YuA(wvPl&Z**eHWs$j3)p;hoN}4^?#W3H8X@f@;*d(#&*?v4c64WhOY!kWS zdR{mu&2WbI;M;b{)A|f}KBws$u_M^G|HIzYLiyipy$NXj*-tYp@Z%Q+hN|O%ud*Xo zX&C+U#;Iky7Hpj$Dea_;GGc_oOe=S>zAUPtG~CR&Fo>Kq?hUlNHUpKNlMn$bC>MI3 zfIu?qWg`2>vGge17x%t+vCDlQopBV@-BN(#jrt2y4yIj=RHVSPO!0qo(B$5dh9$k# z-DfPQqk<6x02@9XK|9SO#EVwky%!$~>F&vh?8W0ELXALj5mh&w_19{07ihcL;y5rR zs|_5RWBzj4i&rq}egYeqT_>SLjQnUvw?t)I4*zW>kdYSt37#F^C{p+Av_sEf7(ZSO z6PJQb|6#HJdXN<49sL8`&)gtFa~do$?kywo5N61$rf(@<4AUG@9+~e)QM0N4O|k+B8G&cTYpN1rUb&hdw-a=87|(mll{1QWR-8gw$S9dU^UjSAjMm zQRGB$Ka0gBcNPaP8RCB}6%>(!I82^!lX>NeGA`0Ll2@-&yGTzU5lXnGi${i_WiNwy zBSMgc295kJMnaEpZpbnFdz}*)!S(1BB`?{?$jI~4Hak;rbq)-Cd9*etbrI#Uzkp(i z(4gJSDP`C9ythX5NWn>83HCGDeY0O18q8RTIkwKPK#+^b#W{U;BK>E>vNwh-TR4=F zoX?m-8Xnr?4&^afi9n$t0rNhcf_QBdfR5we*eDeI>P7_v8R*tO?k=?9mH#T0PIxgz z5*sDhZyeL>Vm0}bmken9HTrV*oi=aR(3?NRLMj#pW&2*fyV6AO(wiTuKV~2zkmwct zIu#44v1x>>m@`GRCI{zQU0hDbJlV4Z;%Bfxo%K2$z4~a=+u2kaseo+&{`US7tLb8ha;gDkBupkRIHg zNM%(UtEgOkuycdmWYqVt^#$nIWIYB^b_5d7KN8qnVb_$nIRBIsNK8d$9{e?Uod{*I zY@o3PdB4h33u_dmAnLPc&r0>{34k=n$hqNo3~=;#qNs2$nWFC}w87Q015>2qJmy71 zE!sOOV349DcGyOSF~EWVEj2opM}KH611L$zRQm93yhTQs4`Ia$w(4<^C{4ezL}C!1 zR5iykJ@sxluzH*(G_@4cu)E>893*aE%vT71hbNQo>z2LLyVc7ekBMk~92wG~P1Q~b) z84r3_R~Ja2&(M*9hH2$oIbmVpN_ZDmO}x<`jF{Oryh<*#-lL~=ZbV>{SRx~k#?WBA z(zyP|8hslJDylkay~$Nx?jUTGWNA!)pOcn}lf-1XsP5q-$Q?k*bn(@l*vtJHvB|I_ z4A^tg@}*Y_Wl17R)iqV5r!Bo*r|b0_d#ipX8ksuKV8qib!LACTm_zmlZ}nw?x|+me(})8`i>ue`RTVrH9vP;o~maI(Q8NnVihtC4o0;b zbb+ZQVEf*9t+LR=bib0$S-+O1lZH2;(hKoWRDYuT@`ePBf`US9GZGK-+TnF&Rc%mw z4Lv>VUdq*lxw}i;`Z6QiMvXS3#On`4T~Zyz$7belAJ_;zEKLxmN%YZqxqh%5{Q_%i z%A|t}4T9Q0`=mmN4y=P9IlX3wQRz@_wfpMo$_O9#lU|x}{_zH~`VYITam2KYtV!R^ z_uc@bcn>bXXu1mxhW&e@|2veJs$OywgnehcG`l-uTtCQj>huhH$wp0FH6LT;srF)- z=i}+ErtsJCSGrY(OLaSvq>LoiPV*J)dPbtBYbeP^`TwPL1DpggIpI^d{wv7-KyiN+3k1)yrQz*K! zbcfor2JouNoFk{h*V@{c;^df{bSpub$j1a2t9=b%Z^V2#ktg90;&mhFgtRn)-Va>@ z3UK#ppWhsHycGIx)LR+=^IIF(bpJ4jnq@ZU3OH9HGUdHtLC|MJ?7aA1L@1A3X%Thl0+imWXo_xfPD?1xzl2&ILRhk$V$q9dxiS z!M~u-!2duiogTAV5Oiv{G=Z32X)wGA1r#e0v}S~scaPUuyQof5Y;el9zUDS3*3lQ2 zYuzO!Raxzm*kmiONzU@K7-$`0P8!Scv(cMNS2$=u90>?QcgK zzL5mvdm^%j6bQ62RMaokD$?*b4@hkW@VFGvoEc!$J>8$UIB{$J0}_XRn@ z6VvHz>b#lb#)FD|!>d5GLV@QlFKn-sKFOMyy5+DXp-fb_AYAg|jg_N9(4u=I0D$;e z&q+Y(6T;wdBsdo0mEG$^6M=mH;Ej)=sAG*2{v@wT%xBqLdt}>G7e0Y!SLqMr)ZSzj zy@&51NyG65vL-Plzj5CbKXlUVu}l=@>r0ounG-1$b0~VY?XvIfwL9hCEw&X)v$pX$ z>gHsQAmxejY^by>X4>gyz_-~(lc%u@vl=BE_U09NC0bR!znBFyiUXAhnL5sDCwRHx z;E~aQWyIsMLHoi0+szb4)F>o9`O`;uY*35Er&l|gg8Xr2&@CIWON44ZWGd!^lIO0< z`{QefqGsetkkyex>J+d5=+LoLJZ-wsVKCtI@>A#&7TFP zvx^!QG?B5Xu|fFFGN!BF6E}W;tx&c6IPg0IG?hohSt^qus<;IpR7^^eDzccL>fTD6 zH@QRHcE}lE-8iKOAs^6vS_%zI(%fHVMQ+#o7t3n<*Y` zJ-u8N)-K%L-IVJElngcv)rX_GY+9A}NX##PmmYl~6I3-90(aH^p%h+h6p1IV1ti1dvcRkdBw0v28 za?{b1U(-cOS;f62a~1i61{|S{XxcpyE`k6zS;f(u4CIpl8c{EZ&3I}1RE?z~U3g1C z99}<*T7I@#L7XWp0{MgV_20c`ya@cSmbgO|`VUjp!{}16qjPf)3|#qvpl$1|C}Vd| zvXXVw*JsiO-|p?9;}9|G>gz|G=gK&^9>9rKR&$0AR|`izJ)no3KYKV%FVSX;2iEY( zURr=@cU$++W2)A_*;jFf5?KQz@ysVyl2bJF^9LCMgp{puXN* z;0Lz*9*D7Nh?|PIA&{+2jfGsITD4u_$idA-yyfXR#fLK` zRv8szJZ?pk_}=OQ$q%n(oL9b=3D1cRWg}RksoVSdOPsr_{ZWzIlOJjnk~?yhsGKvn zP)?q^tw{z-!QY7^$+^%5s8JLFqYEV*%4ly@NT%bX{m>$V`r|@R~;^JICmLjgV5@ z^*+qbs5M~hMQLYmEd7)NLA*BMS#~fKmWAwEoX8S6IGJs%tgGon*tbd{JAzVT)56xj z+5zF`({tlLn!FTT_gVdCveJeZ%V+1MY`DxCQSI}0?d194-wN>wm6 zN{!S@3IYkyzV(BH1R@5F1YMs)g!J9;xuxNSO50X-=-R=^Co+D0S!Gvvjv0BuQ&dcH z?rC8wfzXT@kA|77NFcObtpv7G1@3?MlQtb$kdU^?~^63902Lqd%MfQe;XsFiK*64OmUB1;fvN|(yB1-HLV)$@HAAK1yH5FIAqqv*3A zA#(Zx699O8Wst7`4X&?XF&pN$HYuDEJTJBlhPLYqTU&ucZ;KG=%TkQEqyuLIt`Yw% zN8mTuRem0|k_5S06^3u{wgYfQDVSeIzTq4liu7HW+98^0^)<3WXe?c?nyvdMK%a83 zj{4lYKWAe87RM9AQ=n0RB|==jlzQ%(2~;1YiYj(~e+8K>tViZRsL@Z7PAu0W5<9fz z)S!o{TY@#QV{8_uu8zMc1~RQ+@=XYwV*y*8VQiF~C&tVmygK?BgycHo3)-HtE!N9X zqj5-xjs`qzGUc-dOEpb+;`UTty{fKv5&88)oXKZvhr@}4+$|Yt}Yx*Sc1BTJ_TZUH7)8I1}t&JIoa9wq)_QI zWu@>C&64K+LI!lOS605nJ>cxdd}%iWl_+!+1$r1}*jiJ5@7cZkOgJxrW@|7Ei~b}H z6j@CFL?!P|wLD7ytYXN=$rQcCRw;F_^lfP*G}WRLufE(MGRIL+Kro>ZLHRWG1zZd) zUBo5Gds?{Cb!!5PkgfSN7Wu@y%yoB0E?x#`*Fp?ib_+F2itp9t8s_~eSjHzIL65^L zwj9o4EqR|OtRVJ>r0ju=aj&IJXhi==ENEF#NvRZ`2w~Xl-^Q+rXakdFxdWRbLrwbN z2MR`O#X9Dmex$C$3s%9OWy@%$ShuG@sVCJc6%)&jV?#vGd4=!Ww?^iaL}3%FDUtNa zlf>A#4-2PdXg8r%8Ia2oa529$?e)Y>l856xkz=Mo7(Zc<8$8$o(uv{{5>^}3_3DXq z-hYoDJpW?HxxrGbKqM#2q%fMCP25FG310W1f~o6Ek|PXUYGWV{dQ77z7lCX?rLGQVRYKp#35{RecPN_IW@&q+Z<-ml6Bj5i$ zf56!Kf;iqcHBfqx0zR=d8yX$fGjKAW;ykSn4fYzgu)5?fQdP%R^7_O^TG25kQT2&Z z@Ne!exP&omyu0W>+@N>S&d<;9*a8LquB@!A3|Day77bDs16l5E-OH}eME=p-1oZSG zgpuClonsmY!Wnp6g98H{JIMFnzOj6lA(14g#{=Z~g^5!_n1UlO5%EJd`Y*M$iQkW6 z)zF9U_08Q3KAUGA)6yC3qm;w0+PX_;ocrvs*C=za`G(5UjUxgWe`3n@SPga;;N8{$LGpZ!PFRa$wc|*koP>a&kacL5Lprd6 zV4F9-bJi3l?~sCX`Re#VgB=EYnq<_Z;W1rw^iKmg$j8S!id|o;Lvy+78ycAziZKz3 zdwbEbJi)nAjoFUhX%nAt|Ey8b*N67H>*(lo4t8po7-|j6n9R;Zf*uZh1_Z69cdUD? z7o$YJ&zm_;MDnP8=GTBBOYnYnu*gBuQ&0%%lH|)$Xm_?)fMk7sOp`g4DA0Jgy~OgY zo7omVOeM5SqyNi*Jn}>X+FcxAF7~UtPp@ABQDLrYQ+9v;U zT3fH=sT>2Yn--agY6ZUjERjU{t8&bHsbs0&5+S(H&JGV_O&RPlPIKrSscvCCve+6& zpYX*jN-F{b(T?}#X$-DhJFY%9Gocaw)Co4AaHBu`$ZR`R{XkSy6vPZ;YJW3JjQvMMsVRRR%FO)98)IJ>a7`SA-a?9**?FpkqR z_;_$?q57a6Q|fsGg007&VN)TBfha!h|rB4#q8O%rHYKP!!(FAl@pD{F)+7Tix2)#`tQl@jOw1 ziPLnV_yyP7F{1aHYeNs;U}K-BB*RvIxndivecpkHTZ3ec&lh0keBP}zlPWO6RMk`u zTz`wc`B}y1bK&xEZ*prir-79k)OWpp(4&1_vRkZyb#nQnSq+CJjj?Hs5g(4(4y3?% zTd@&Ht{&A^v&Yob)Y?_>2f*g7=2)EFC6J`0UJd}8IY9)XNSz$)){04lL^`hN&Wn0iF0m zqU`46B4af7h`FKv>#)cEAcn#CkucNozaJuLKquImuVnE|QK-uHCmkRtdW2f0U3+CC zv_du5PlPPDqTji=@lX&1WEkzv)bof!E~wGHW|Z~R@YJtF^iCHy>P(N{JOs=T^B9*2 z1Qq)O7G`K767MMO(?dknyAJp-8+}~Q@x89JWi}}>c*e9ZxlOAcuAb0uN6n_KNypC& zJdr1rf0nkB87$*&6}n56Elk%gHw$%I8GVde;u+a*EC$t06~#6M8V36FQ2z)DfbtdE z{_0LsJj9^ESW}rSaA~jK)IBxu3 z7Wk#ke^1s3kb`JS4fRmmqRkuY`9uo~yj+r5}o=D9rKO`%fb ziW5H+6$@FSg;`IONA67wiA%Jiui6%8XX8Nw)!`Kx>|CEwR2{*KIek#7Yo8h!rY2n8 zxE~ULi1j1jW7G*K(m@tpCEQP24jWd%0*b_rpLqy6_c`x*%SBWZteLGYeEs;fV{U}H zGv5dPesL@!+s;re|5c9Y>yL8HimdcT0W{|qDuPDQ7yZ-pY-h<5;^G4K<6+1r%{Vlo zl&VF)YzfyK=-__nfVt0K|DDWfq~w`wDzH|d@~xpBVl3I|CMO?L4&LDFY-o1BQwnaY zLlfMx*LvR#*Nt_dwP3hiiB9YfcV7}VXZ;eUR}7@$!HMKeu&8!}1O9bDS}L3z%XCYK zb2O)(iiwt+t)}xoNM%T_=|#1zzY3Ax%#1#=tEYWX;-IOj=@K^_i5FIvLJ9o;OR4{^ zETAVVvrJoLBgz!&7J*dsk3x5eSGvzf@?^{~JGR!OqOg0tKaJCtEo`t4h>$0Lj`<&A za)7U0cp?Mmz*EXM)dssvF5>vuIVKdFVD1&cTB_ctFvrXDznPWq0rS8qhM*2hl6Kk!+0*I7%oj_?5f_64*9aAX@Xm zI{p*Q2|9UWKc+{wx>5C{O5mq_U6zSY8UQ3Ba)S_`D%8aAQs;}S8yjHiJbt7hpHRj9 zSOeFLpMg%>s?jei44d)D$+6td;x_JInD0U~GeA}&@C^D+uuDId$4nZ8wpoVt$9H*@ zP5($Fo-yW|kbB@Y)Sdm1vifn5`G80~N{h|`HO#|gGjp@fRz*2pt|Im$hjitt!wREU zy3$EtW&?~^G>w#<{*1MLX2l*mDFv_6_B^wDmBx$6x|s5AeQG6?s)3= z5zsv)k%3<4Rm!(mj2b%GhO{hg!Hwb zKD#0GeJ6&OI{KXd6&v|!6`kFBzB^AvowH)9P(dZrZ0;sAN4)jmL%hoB?^sZ5mFdKa z{VRM~CsJ4TUm)U|@Jgz!%~QOeYEQKX7VZ`l^{l+1QeC}Yd^%>C)e-jBcrSCB1)fK_ zmle`EcoGi|#cVm>TBuh}5eF|oUERk&7y1bN{T=Jc(k=X7ZTT#TaQgXq+#GxdYkl?! z;5kMVerEJ!0d=|j(g!3pytfNv094ldTL5)a`_}dGHoUTA)b1w@kXnDo(Qlar-jUu| z^@|vKJKZe=UpXf_$Ac-UH`Kyu*ju;=qouWP^-XOwqz~e;KW*s47!Od&6J8|F%=0(2 z1H`=gXs`qwC|9@D%@!>*NGFg2EC$O>o$xhR&J$Pjb0QN)KaFn)0T%9n?U^o48JMxM zo-WgX^F<1a^~N#3X4%&GXD0?oSa)k@C)YI=YHkhzNhDb|XfKt;*52NyRm9bA=lY5l z?`7goe?QQ*3+k{+wuJ5icnX?`*Vsf)XnPgrf;#A4pRA;7OxW`>+=k;YqEIr-zsM9S zma)c0BQM6g+6Gh+B_xq`wRMD0b_Hp~h_Ak0mGxCPaXDeeVj<1ni9qm(lx%~#QixJ> zm&af4serIlPyO(04_rJ`xKc;X(oe4D9cGy1L%)l^Fzp;1`7^*lu!=JpTiWhS7tSh; zmPYn!#iMhThUrc6Jvj=)qd#d30;Y(vIwvh70kQ5jW*p?MUq;Yk0}Dy%1qjpp(L;Y? zvPNuYq|8YCptGr71aYVP1G)oy_BMP@B=h2ZmztZyTeCTMYRJIphAS;k`|O1A#a0UN zbY%+&IGA61M?i5LiwBdUd;DOy{9~p_t*}7fD$r66BUgo9-E?(wCmtBn??dXHkFh4~ z(jmF!VdY4eww#9Dojhqn@bn&dh?ZePdLOo(n;3NgJ9(M0qnY7~X>y~_(a1h?0)8~?!ib!j`8iqe`y~w+SU7e{qagPSR*>^*XAHAmsEdDex1pOdXrd=F& z7U=3u-o(IKO5=3>cpPFWR10u!DvuG%KlTr?Hw;M;0T}*>DkQS+b$br;$(Jw;AQA8< zN_95aPS9fy99}zayoLg{#>RKG1V9yDu{QW0$Utk|^r#o$xnM)dM&$Y;1=_`whrJ{n zl-G{b(D;eOI~%6V($||jEf85VS901er*6I1l$$WpK3NtYpNtQexL6y4O?iQqYgKRo z#r^_u?V~Nxr^8yY>+t3fZZ24AM&Uk;V5hebbX?db^GfI9fZAZC5MCZkqINE7X^_$3 zi?s-FBT^e4C!tN9CpIDx=#+Qn@0NH6r%uJyRDf{!7rEn<9NF#W8)3qT#f zrh0+6P8|M9lx*~lCoupRlNBhpNHU16R5v&>ox%@}KG@$~E^nnhq_kN)TmCTH?7UYs zeT^n=CreWufmebvZIvAzrTGPIyMo1U z5OGh(auT9<@;YneEgcD5u|jb<)~^S|s2OPkVoix^AI+eFRnN5o!x=z8qc0?q`)Kfg zO3Xf*QKYqcIx18Dk-HZ+^bl}G)pE9qY*;-Gjangy2t35;D23p{wLOz{qS^!%CYoDN zJ1~R*^-(qQ=JV*kGhHj~d;*aCU>KP3@!kfB0SGa&-``+9c%z-i{ZllHubPz~kJ2sC zI?@bLeA$)R7z>m3ha|(sZSfdA@l(4c!}vmq1jKXuYE!r6`SPgx$f>UQOCGK|!@DmU z>u>0=woEz}W{F20nDY5u2A_r+e>s3@IroC5gJXaN3`#hu5Tjg`j|SYssun))`@DQ| z-BH*NpD-wx_dS@+Qk0bjwY zvN>E-`El2X(Q5AEtwSyNu-JqMm{C+*w7dZw9g3Mlku~PA_4QNl+1<0tllMgbn1{Ao z+LqEKF<5s=l!E1)HFLe9sm;Z~9yzV$U}JDpQSoDk2FwRw+6)EPcYJVB zDU{qKof@q_?ujI(9Qe-D@JytTCksfKVj-AYZnoRbOYJRz#9v}03}LRn_z8HQ3f1Te zWQngq&GEXwzmytJ?B=R{V9ud1I-TL%WX^hc&?KsV8!I8#b-Qm=<@~_^*z%S5{yVV` zk$2$lo;ny2BW-OYav)8}h8^kCe^qjKW(^w?fDMhXzRWbpM-d%3Y8Bbfq*2THpk5hu zHh|@rgdYmcZnf5(KZ8BeDarYK!cA+#7`M~8p#Ij<^8Ho;)%sjiU-W``)Wic(B?gc z=n1iZ!`BrRL~`zT!uEh^t*>LD7nPgl<#(Y7bxI3&Bm}QQu0=E|F#2#Q=(%Y2h{$Cc z8K5=M(QSxc5Tk4e-{=SWrKxhc%@*{@4iZyIdD_A@C@^+UEmEy1l~VFCZ7DbTUaRN) zCIZ-2pvp`7XvYCMc@D#2?U!Ms`GYX*r0DyNK+@zD@G;TWp`KCB(I z38VXwNq02)8}SCj-7~Jg(aIoypss4%X3k86YalVw9* zLx%1I3JOnDu7p^e7%*719+&eaBYZShL2zU5#|xuPkAFWiENC;H@UGGI2tH5Xhgk6X zLoKt$NGd>+#u4rBJ-4Gj-{3#i8lnPbJS0~v{Ls5MObBUScjXH?(y^a5loqx5> z@5`%qbn5A%4$bS$z@<{R;&E4f=;*}%-d6d4=PLTYw^imJ6AZNei>nFKiPqOtpDo*p zYy0z=jAHSkDoA>^k28UY0u^dBVX|c`b$6BWDz~x=SINf8*zzzv7 zF^eQ3*biVUA}$N-3(%S+D)gV^;w8IZNmoRG)4XTp2vyQn6^#nO8pty{dnVv=e;~j5 zZK6HT{kAQ=Hw$8eo2Ijf$=BW_qadXHa`B}*Q#+(hpg~E~P#AA+c-E z#^&+FqA3mUh2A{;tIdl~iJY75{W+lR{8(1FaAfzocwh1f@@cxxLWTW^L#Po9$Gu^9 zGi(n|`=T(`#nq@Ta-8752ez`JbcwM=jcG?KG|>k_Rd}YL75%D@y7pF|sQl=bFj6;F z_H*vir9`cAs7;|#{*08HY_mM3R}j;QF!qdRC#Cl76`$76?ulHElMD+V*x~+^T$X}x=Q%^&GilYM}MBzy*2Oc z;7mG2^ch!z`iHBc<#!DHnqN{dRic3&SWCsol={J6viusDGXGDqfIyehM7BcW%Dq|t(JjC6q?{b7ON z2cTyFRAEHg#Q16CbcChR2X#-BmhvQe?wffP$NkA!$^JtQ!0qYS6}jAl&P)aT|74%6 z?S96;)^MYEp@874@);Oql%l!|>y8up8z};AKfqE5tMsCO#{}JBvPngzP6S9>tyqu5 zU%{)6SMaI>>TsOzpCyY(@Z%c8KOpnXh>Z0gz$hhRX#A;7-a#>sQtVBSnCfE`yuHq%OqoyME->fLXW@iB8iHqda)>~_*sq*F9y5nX&)I@3rG5KP*JMXwFF zpTnzbk$^+YaOPDZ`KDzB^{ORE06!s{!WOP2(()(Zx_R^aPqrms@&csa8kRYR-qUSZ z*R-vZyEmuDpWyh9+n~zI%qYX+ zc(fk>p)XKaxp(e#igjnH`S^3Z5-wPE{^}%WWm5#{;>0uRXyP`2 zL=Sw#@?IQrf1NKzX${k?E5P9)C}0Dj11Ow9fSeUziu>;*M36E4_gEC^Cjl64O%gfB z$KgFZDbps42XBhz}3YxHhE7ThRNR0_PN zX1RNOk}Zv)Vund`znXAFt9YUYcjEtp#|8qpN@!h_d+>CYpO zOUfW4IUvNga(e?_dmvD+``*`%I@203aNRfqCc|Pa`egooZaT_Vl3kl; z39Kfmn-}JoWW?;ToK2ktcufnPVSr|IbU3K22!SC5_IGcuxS|^cjJT>cmX($D`qoiD z0Hy-(PkLze0l1(mBN71Wa9$l2IFl(+U9VrVkc){5tw*c}0pUEjF0yWilpxzArVN2a zsY;d6UBX@55DM66Fp#5+5dQOB2RD?dM}V4>|22*JK@rs{zM;)XB|a~jX@coqEr~q! z-c}3|IEiJ*Sr9npKXX$@OOw&XAxeM#Z?qN0R`RiU(9{C}b`ldhe;**w zW}2PQ%dL}Du z+PS%!0@X8L$=y{@eEdh!zNJr!+Om%e*tyny%DtNnxEn(mgmag2LA57r|7}R$t zRS>qN3eNRcK8M)}fHZ;En)#|X?=^4$F%jL`$MV(xk6u?mjR{0}F%?TJUhnz#t0P3k zo!|xS+cRIVI(b!feNb#78g^}p%Ku^k2wJZN2tt*vZxPH(ff1BT5q$`HE3jg$G%FeL z)UuY06xjcvLn%!DhYtO(4+i#0(f4bw_E|E~pFp`z+F@^)w89a&K7<76X6CyrhzGU+ zAY^{RmXM?aG|)8azXj`@ejghKyo|t4`ManS*Vt41FGTbB&x{)8`;_NwH0QUU<#hpIR^*9^UtQF<4rlRlW zhRPoNh<)W= zuxo@dP1}L~(caU*m%Yi{Sl^$$T+6{E;ey?54qWzIA(N5GO@}hW@8wlu@a%^kJ;zB~ zn%zD+5kks!d-AUi*OlvNDL?YaCHZ_jUd%Ob_mXUL!`3N~7mLgybt`3&jCi;?F#?9A zHG15!ZftI1priW$(kdA{JJ#R7VKDi285|t%L`&hUp$h4jEf5| zmP$c9oyW-qLm3yexwGEo;rCbetd}GBTIV zhm$IYessqq<~NDz72@Fv{6ftWxkCfbhl@6wQ@IlRtF&#o9={xapV_qMKk@(g(d!fW z-rz*}+)j9zS9;hojCHq)v>j^l6HN;2Jz_PMxs@y-At8~zW#O$s1lNP{*v?`P{Kx{w zW>2}?veZ%_*QY4??6GpZE3s1`){B1*J8l9kFvq!4LI4%q&L;c+hq;3MUolt89hAao zN#t|N%fX!y+sn)D5oq|+`LoU2_P@(#cLTAKKYoZiYT~VERr*W`NlHmgJfO&@RRd!I zNWowj&U-Y!?hzDo&hp%I5(CH08^CX1IG!cs7S+Y0kB~(1cCo>x&=QaADg%WOIjX=b z`m1r){>pLO9GC4H6y?)pt0NgpSXkIz^Tv9S5WpJ2qn-+x1S$^;9;*S@$HUDT-ICf)tO;P8V46fp{2B3pzi+9 z8pjMbRAxm#tElE_k}K=+PV9PFTGDBSsj9^xkg;sJ*RNj$C3~{N-9a@P9289QrQ!k1 zFS2I_!bN)`;7FP#1C-VxEFw{IFq~cW*RhO9ph0Lj9f4uCwi^y~f%eB!&26|Hj_B3L zJ_ln^i0fbOO_08qHzBJoh*xf(=*c(~kp%bpvKWnnO+)o-1H;{Q5&{%kP;9$U>oYVq^4@&U1+{iN#A};UFP+y3Bq18_rSPtK z5riHR64JrB>H!THmAK^7#0SE|G&WWQY~6or1MY}@qN+Tk&@(O$oNpg3I|rsP#aQt< zTJJtkQf>7~J!h~$KcBQmVXk@>ehgJQBbsp^00F$H(7?Uy+6wRx)TA!S`1a^J1p=^Qy{x#Qt&#C1 z4zQo{Y{B6x${R+HqLJ{+wri#HxzCas;r~(r8FHHp#wk+)GE1zv_rT(6(M-La&}mu#K#;xB?PE6qc>M zF%4Y2K-}Wtp;#egbn~`km^q6NlMk1++MwRi~U+^OcO8cpS4%io6bIg*LPy z8ooqS6A~AlO&aosAx>k!Nw7Xg5FN{F424AXCiv|PG0=fkK^{1S%oo2WKxNPi^tn_{iiQ6CjZxo3jJM9g z&bKZP>}qqJ8(gWyidI!smBj1J=yvn>=W<8cM-f4Ngy;H=M z+d&AvI;VlR&1oT+5L^4hS8g2ONHqn3%B#`YC);gj=npP1#*xq&uNaLn+k6aSH3j55 zWOV&vN7?45<$s9HqsoEnS(vpKKyQJDNnid?k+nsqx1eX8$X`DNd~FKP=L=Bsp+v4N zfe{wm&duxnS~bJC*~2)JpkXv#lmf(f$^Ltr_9r+E4Goc$$lnj6!^7R<*&_RClH{T+ z|1WyD^|#%u$-mbBavLhAv)KFC-FwCFX<&hmu*X_=UFumESkNSq_e9seCSHZX9(mO8;+f%k)amJI zmN6X30E$yGQgbj_7TsHLF~fj+OhN+OiPV%*lUy^XP56U|kot$P@URK~IT8*K;t2QI zNg(wc4{w)v&Mk4vcnzJ-d&iOYxnTg$>x}hVt)<9&@C3L z6q-Sl?cuZlVpA6Nt z%}DvmY3+_EAO)uTnBpTb$<~0+D&`Oc9Y!^P32)C;1vs*{f@r?fe=TQ-xQ&f&ECva7Etam z#o6ONlB3zO?l@W*4`}mpf9f*rF70YH8!!S0jrq$oF8(>u|NSRiNVmNEGmqI3WX>!L8wJVo3>|ST#8o78U};5i%!( zmG-V_VH#i?Q0@-2R28ABixBp!fieLl6uo$je!yfpzMItGqPwlMVl{_Z2jr`y4HgOJ z7>O4a;;7iI(3UXxhH6EWE-i96l#m8)VwD7Ge`kRS2!X2dh8U;J6}RLu$HWq5Ll&Ky z6TE0wsa|v=g5v8?BKwP6D80{Ebfz4uy#M!tZ=L)X0#0(lL;hvrTPz4-Yqfkf$+rmP z$5?}>Mml@Xo_5b0xbDK8}Gsh4X2S2nP5$8lSLk@ecz z02gAd#6+Wm8zSM7g`j#8yeSij>iKb}lp!DwM);*+u^;O2FV>2iy(^0W`n_ZZ>%7i? z^9CpY_8FN;&snupO-(;#9cTA`-z6Y0&=(wVFkeH(Am#=Pat(a1*Wx0S%N8K6-w#VE z3MVzavtO*KMbE{R6m%A@rf0}NRC>gP*dT_~5XcDJgpp?vEP$Gj@sKzc9nF1LT)a0; z(>U!*H$0}{HXRf&o7wD$(o;=7*YvA%Vf4p$k#iGc4^9*`;!ho6*mRDlKXDlkWLX`= ze9)bZdLx967wXopmlZ0`b+NFrNZByeIcCjPd7_E4m7Osb1s+bY=iJ>Ah<`#FsIFg5 zI{10wwbdjHljwG~i1L4QGyicNxbTc$hHj~Jhf`pq7qfWkS2q|d7^WGO9THWvbr3q4 z&!MRJ-P8IQOl4?v9*_?x4}cx{r~&EUk|G;)eIwkb2ZCb{qR0>WEjU`1x+w;EjQ^>X z6$U`lkK8LRnA9c%B3S2!PNc;QCDny7?2E07`v0(avTEYx?JxL1h zz@Nh=1WXQgnfJ&VhN!*v^Uh4Zc9a8dJ4sL%zvn$QL$Q`}AQ@&l4_u=3)?aRga<()>K9Gy1waSL_y3P>a@ts3TfykVuooAq6VHeWDv;GfZ zZ%E0K)E02|*q;xS)z7cG!!zFb0yMXSC*w1XRXTQ*@=~fEL{cU>mhv(U&sZ1m&UKVl zC%)A^hmG0lCLI6|Xizx(+!CU7iDs$*bARAgCja`MCk9th!S3%=zz`~A-?Y`be4_^H zVuh%c`Pg2Z8XS>ugN%#}*YdU`%{5x2#z04$=}w`hYZsx=D(> zZVu2^!EeF4umhefX5*w_Pl9)$sqcy86B1<*k%jAHN+_^n9V{p?xh=#%%M0$b<@@0I zpIsBsTJhRIJ;t$@T5sLM_oc(<>pO0+EM4|aZfpsd#eHM&cpiYB`){md^->mtv$Y^k zo$=us>j&AIN*}ISVCghnpS+e&cm#olnFB?Doo${qW-w74_d0DcJ|pIV35yML zENP^F!WwdFBEL08p|nJ$@!sdM)7rm~2i-tQDDq@&AJ(AqXS^KW>>o9i#+Ailem8k& zyc5#2+MbNA)&4RECMq!5V?0%VZkMNY4BeBs=rJzDgI9jKw?E@ z-avCdo;7gyuM9AKaEO(vZ_AKlZ1{82Rx!B-)B?nihS8U&blCzNbhgYjG`lB zAATyi9D2(`B3D8hjlNK>(_BJdobs{(*lcXxq$ZkZQ{XW5)*UZmxIKR|g@`zDO)||S z8X1^aicqkX>3)#)aNNKnW=sn2=n$0tnzUHO?a)BPGN_PYBdn|4{2it4gSUT5#ZA@} zc)$Xw8gMXBi!|$d=Sx{!{T5Nz4DlY*32bd>7=)DOg#~`-E0Sy@0Icg!h+09LEaMc|{oy4tSzyn5uYvQRz&3hU3 zIENX6e#>n3hw;|&xMci!HijZZzzs_c`Yk%UF#=d#J`G)}rrMV5KwL^nU7~N&1OJZ( zV^JLxSI@8XAO|^1|So=mA53vu8{q@f}E{?Hwp6 z&8mZ_#4Mvu4^3s`cy{nw&HNcw_%Y_)n{%co>|N~b&&drekrPTJxbXQG%A6czOp>e$ zFOdcW@v6(X1Yy$wFvt&wOo89VDzpL}h7z(L%0BmdJrlCDzx>D!M(Y|V1ye!Y(LQnU z5X_`-GDRLxFG~&>bCKY~gJx|Gw^RwdfO}S4th6I*OvjWZqPCdzaYY0%VI;9D0DIsR z`t8w~${=t^L35Lf{a|_BxZ5wK9PITE*RsB2{v5bH=P*Wz2x%;<-lFBc7K391AU70ki7BXdg3SBw6AOCZMYKktQP#{dks@ z&;78YZKzhZB@4JYxKCu#WE@&}z8@8_?gE2A@?{kQBEqgq&JU2BlEo)$*=td)RLgm~ z{KIkWE)Of#wOV=HMl;cvNJ!iy?sFwHXUp(kwX6Fw%{LNgXpekGaD=U`6Xu;TfC1Uy zWH*yye-K;s+a!$t&5@D?M;`d_j?V6q^9$835OiaV84~OF@s67cB}tVY_&c}L_!3{w zA0f250iP>VyY(cZp;x z=t!4`T@g_hxE52e_$?+1;0&i`pG{+Es38D8NWf>GA=?991{4qPIsDLUfuNQf{o)wB z;rZR=IQE0n|4FEXzpzLonRPB%zz|y++rxx(2}(xbG@~YXo8A z@&jvZEDeSsof2^m&=3ws(kP#*2P&-$CVy2Ym+G(FJkEb*2ax63bW;hAeRLFVE9=ra;`hRRSOGiwm6CQeXAdmLU(rb`3M>DcViMB*QtxFiq61H>B&vD zl0ifoTUark2|8de1o&)(FV#fFW6JA`W&FaXQ9h<73c3A77U=wv5x^AL_0+6S{&dzZTb}Wexa(-V%QrHjt zJe>G1F2-(e67`txCn=?k%aBonoc-Z!e=0#|I31GPZ;E?--+);vDP;^4?}uCfi_`)O z8&U6IfJ(o)>Qy8Xw6Ix+&0!nXrT zMgB&8oi)I{+mHKHD?73!_pgQNwQiUMofA#dV5WWfIZb%oED5C>X;w{($dv9gTNnc5i6v3tYrzqxhLX4rZarM0W%={ zKKdQ{)*WR$EFf+%j2tS1q~gTrR>vX5OmwS7{xnP!(B2;Bh(|iwg4LU=TrTKF<+_0l z6-+jJ5J+ja*LHyR{Eyi7+oT;2vV86yHw@1hv*g-Zc4?f&#YMn{J-M5>r2(4C2Zk&B zopViFa3+{im&;b6$`ju^)H5{dcAJwrl7$NfELj6YWW7eXJN!&)Y8tX%wcSuG|Ojj(ah~}#mje!f}i-YwM@;gAO|b&|@5zr(<+I+W3`;1dd= zpdtxnJK{5UGhac{V*N-L`*qQV{w`YUK7t<;=9O7t?m9DvIw(#<%s4gWqjm`!xZ*3ZJ47WI4$QzQY?b3QD3( z`MW$-B(UH5A_|*gYxx27N0HJ90B1&Ll=3;s&uquOqDfOEnnQj7fQYwt0K5a$&GY`cSVq_boDcWK&CEK#>Y!d|&Te1fe@|us) zdS~FLBK@w3nqZZt^Of1;kj~t^C53!3l|=K|K!K1Sni)_v#fQo+7jc!mB5M&8zIX^* zrD*RNKFgDNXlJHgus9tr#Q#Q?K%_^OE-6@|lKe~o#oi!PEf*~zqUEJ4k9wtDA5p`G zQ*R+QHkRDg9lFDDY9dN3Lu%@bW`A`)DOpX9XDz7jS#8 zxM&{+HdeGHx81L{Ly0Lak>5(vd6)MxeJL*AU%s@3ydjh@w-<~!!L=@ES^9MF@;&BY za*okviZ`=e?kZ)L?xRW(sd&u(F&`%Ms+F)T)?7P^s~i3f3~im9sjyrZ(^I`YN)_hTDxQeO#d`g@6)=MJzhT)r$70Ac)i3Q4`0f^8fvcY zNJoY^)62sTjeaq%lsRRZ)~$(kH^{x6i# zcgg1m8?A+MqDX#Mh>R?%*ERmrRUZla?H|3!Ws6H^;|NkZ3MRVPrNQ_=aY-F|x)(@n z1Zad@Ys?+7O8%cY~_n}rrB@82?gdE zF8^{gIME$N7Eb6cSZUoqo+=z@)#k3>dx1mEdw+H|e7tc~BJ0*p+Vn0TM1`AZn9=pT z{9*+!oKn&1{otDmbMo03qWk`n_GR0|a`ir@xWk8_TqrJJof-6AIs-C93UO%Gk=^ZK zMl>(TW<1Ki7W2)}hOBFn22u2io<>uY4W*zpskT^IdBh4KAERRSe(m{REC5SZ{vuHC z?MDebul+J~w;K16(9d?44vTVvAqF(D+CG!2`qt}Ts_0$UOGSQo^}CqdY@k6JVXwJ@ z;%uhxdS3kS>?Ubx?374rdW`~}w27q*TDAS()L`IH2_+K`K2FjVFVw54d@h``KZ>yY ztJf^PZTaV``>5*{1}ct{dXDPQ*a&b1EmeQ3A!TI6_)T%oMX~)6i@cIXs*xsCz8;N1 zdeK={b_#5^2bk`TF%Yf}=gr%!n7H-Zg1cN#gw&^FcPLL((;p;A0Umz%7ATdE&W3r&%1z07{)+ zuPrUZ^ZN7ORgBk|5Bo+W#-k#HEH-R*B~MBhrZO5{fr1%{Lh0WUfs7i0bbekOQ4<^D zy2y{%~dCl(LX=-SS`P9487Cl7I{YGHdz`w74XXH>_QcurXqk;~cekk9;m?MmyC~i;lplQI1z(=y5>sU)5*hRR z#lnk@`(v=!?ejjwZuIAf)w&O2xt)v>+1ojr3L1%N;?)swMSHki<XTy<;z_0#ikU73}z> zt8OS+8{fX>dIeZ|$r$hEMPBxusfn_Us_%b!28a7|Vo2h@^=7^^l=R1||3!szheR6m zUDmPhm_x1PTUzc!!mQg(d$THKbIEVbv6xvCm3q#=xv3OP3EGe2Bzcc~&$pYigj#1+ zz&(_GG$BCqaPyK}LL2wsM(r;`PlJ3YkE&1vD7ixQn>eX}eh1XPeOMadpp=w>vJ4p| zAMeNb9Qh2KGp4oL%hjt=^X?D~NV0x@H5Y~d29dIfnVcMvy?ccn#`{c z#zsrr-Weqy)zs~oHq7X`n|{UA1WQ!W2p_+}w?2(oI9hxwlgPLYB3nMMXc?9r92+Qz zu4nj&^l16wwQx7edui7E{c?IZc}wS~R#gx5nkEQckZiM8DV0p*wt)@z<+y$7Il_5X=xM z)3#7|P1XQUO0mL8%IUSu2zf9Xgecku_u1vpxf2vzpuYg`)t2 zEm)~3EO1*ke?}EOxBvWlG}O0Rx?5D_D{8^Qm2?!ndT6T$aC6Q5{slviA)myT#GgbF z^Hv|=__tCytZ8X>VGSpShh-_R(>6R^TwE#%bH4c-uO+jY-ewZn=}?C&2_g41sQlMM zkapWaTBaQMR0DxfQ+FgPnAW|&U=rS z&ekqA5{$JI(XR{EylW_kXr2W*o>s#*qNmd?G!I^7+I6}w*NLrjdi$>ArJxr~X>+nv zUaL9goeCkEKgU(EqGJW+De{+t@s4{JW9G6}WjmkSoUdq~uAd*K_vTHDO;+26{j0V| zIPq(J@@NU9B?ts=2o8j?qz+9Y}v_|fYU%=ea3O_u` zIo^auHCPsU1GS+m#4JpbWr(kbIFBzWdfnAM!DLoccXy3PZfQfq4i?MZCCwmkjrKZz zU|1-(Q*go;C$c;2YUVsHLB+xhPo`wy4jO%<6L)S7ZjUXPST}M$orYtSZzJBA3G|

3K;}&6ej^0?YwNMSHo@=$k64YKDxvB1OO$sMe=--J?xG zt`PktFsz45hnatcZbC$_PU;7OwYO^Z7jtbGX}k6o*(ZFlPp+<^j?_#*jx&KBypzE9>zr*n|@{UnOGVNPD|?{{FrbP z^o((SaZbbX7puv&ktHd6xm@R$c&UK)(92fH;Vu2vigi&Sv`6M*tdyX62?sUfXlGlxO<`sTFzw0j|JZqYF3zl)`_UgGSHdUA-*>^gj6P(BeEU5>rX{J5^xXcLh6d)m{c^E^`|0s)Hv@CoAA~vWP7=vCv`xvF zk?~0O0~CvNsG%}An|X_+B+V`LH!Z$VevKazr#doPkfv(uQ>!GZtQLBgGTE2i#UlGF zY)bnWj)c&qoIRk>N{E0d+ix4RnAtbyg~^F;6vwAyaA z@Rw9pi#8KIrHFQYzPvw-%ZL;G36GM)_N8HRc_^{?=KhMlu4vIVC1l}So>Fd}5NTq7 zwtkOVpmD%00u#eCEX`+W1C-Csu}QXL*iaGab!F44VN#8P->_*zzM=;DKRw*UhKGk6 z??>+h`Mn)Mto(U9G`gfe>!>sdtB8T0IUpi|#TTpf9DRUCh|$#4G+nGhC1sL*v}OFx zY(g_u&GBXsTWh)m8)d#Zkr)vn>%#qd{O>?)vAiG@-_wMIYWY{WnjM?aRNxrQ&}#@A zBwEn3AjG(Tgk1?=x^!eLMY5RER>w)j@_}Yn)*#3Kvz{!AcTXF8J1?!CO4Ftxgsf6# zl5VMnzPbLE<=p$`#~2(Ydz2 zGo&^jf%oK#_?`RCP*a~GzH%toj%0x%gvEAE@Rw>u%$7ORE$Q1YpUMqJ`x0(TTpirj zYsQMCc1K%841ufcihB)$(GFky6Vv5l`Y`XD6RULz+K_#{-#`uINyU~8CIa^rqJCJ8 z1>$fR3`3TU<^m&qORahJJx!a02dgX3N0=sx`3($zu4h5tFnKdcV2Dyu;^yzrKX(wn8=E3Zwt~ZQ< zf!J>#?Vh(}I*-Sk=Ow!7tS2k^ySpPsf?YW8Z*`#j4oZ&n%cHf$q!2^of6heQAzdJx z+sKcCL=OvwS$G*Db2i6Vm_okQm=366cQc#dYVK-bcT-o_v_%9Ktwt#~7cOY^k%^1b z6t}~m8?9Gd6kEvI%@=2{Go`o5rs8-hs3giJSR*yHNYjRpE#}=bP4|UnC&W_gYqK@G z;Q1RSNslnIICN?5afm#OuLvT0ghUa14AXkCNp*bZrbQ4Kc#B)JMMC1)?K@`K{w)2? zWXOJ;y+#<;?PfzPMmx70$u@_;mEQOB9k{mV|JxPcWF_PR5*f zUfP>l4CJ4AJ3_bb=7lFf4pWm! zdcwdu`n2ra?G`Wh$87y+sE|vP6SBXORHbjyC?-!S?7*-)-;xS%p26~_`IsyctR%n5 z@R{Iyjx(oLi%XT-8-2=Ipl*=XRGR0PCcvWOeZTFdVz0CLt5xKp!83blOL|;I>W>L> zccaG+E5nm5EUcr2i0O~a?7Wx1lWPP1ng=c$Ln;U@WRY6zc|frmIrJl4HMX66G>$m#WUL2u1YsH7VaewIuobIP_K!_x}$jGpvS_a`W> z3DW(a^at{5BHVza1rquE6Ain&GNsrAO?5I$^IA~7O>w}9PnNWI756#2*t2k=`|d=! zbUeY)*cmXyEi<%Nrs+$u8)t`X$ta{k^mK?iVu_NT2bG9EIZAkWM0&6L+#2XesG7?T; z;S3gDtTTMS{BWbEwNTF>*YrK|<$YG~m`$tLKqAxB+Hx~~3smFTMWw-IXNxO&J~WNU zrdxvX$Ozr{!4OC=tDcuMA|hg1e70j)Ba74weR`aG4TluXvN84c^WH^z(l8qZwd^lP zYVPEPdW(`o=)BrTHR*!dy-I2m;p@PP3MTA`%p960p9mHi+h1I`(zXXNS0B4E>@3ba z&LjRWvfeSgt~Oj3ow04(R%6??+SqE)*l8MDjqRkd-58D4*iK{TjC^aa>+I{Czxk1- zW6b%!_jBtJkWitwy?SNIcgs~6Rh2IyH#)aK8<|gdlK(N`%5zM~+u9;GN)?O()gg9A z*;)>Kh)?0opHh^GV*xX`+fZmE9Nv90)wF>K60I)tPHU9oF}AEaaRJYycJf zu}70&;3@+>p&a(JFu<7^y&ln&ueEXMBa{IDL__YRv5%;t(YL^S?drlc_2OEyg8B*u zH?Ir9@|oH^)v+r&3QFB9c=cTe?9ovxP}y~~0(8UB>~h5$T!Fbev=q3|Y{cp6Y_nCk}A zt_QHBVWP70Ntn>+L93iB7Rh7&Z?eKDBudJDmtc=~=ZfhgBMqf)wqDk^Hsxm*$_PHb zW&OJ&m;x4vS*x8tn_>uMchE6L<_j+8`gFv7g@T;^4`X_1P73O7Fazs+I<8Q7(?#z> zbP7PkWff`56cY=ZS<1BE^Dt#kiqp8gy2@`;7e-A+-dYD{dQ8kiX=W4|SW~U4dWBn|)FCGyW(ftb!lTGR|%Enhaq>^8&0qhcuT zM@__d7@jG*05h9e`IFl{R}&_nu{TQxGJoT zRWPopc%-1A>R3kSs}+@$luo~gkoXs-Id@hBSK3eA`6M>10y zP=W}=i#rB0fzwo zB0c`kFP?g*7s`N`o!8de>jS5R*WB?)&5-gpD%KKi!KKkgbyMF_HB_3I?O1BxI6S5x zsKZCd&DF(i&$}np+5bu7=^)47YC2z%n(c~U8zj2HOGk&fl>cij5VuxSVizvuGbd#k z{?m@T?6TtUVHjlN!X?XThCsT*!0+izWB++b1Md>W0%G}8wP2dU6Mv>HmV%!HgDfHo zQ-{+9N7K?IMOU+yIRA`xcQ1_?c1{QAS)abK>@vp6Ba+9+j~?X@Y#zqFK~rhF`Lb9l z=(j)@sZYb{@Qi#F%zp~d|HvAe&pz@kXx>+=C*!qoQJ)AALYuMQ~ zvTr7ow8R1Ee4FBBgx=$JprPH7q)li5S_b}Obgf9}?Fucn(rP|#ix@9vB4Thd$xYI3 zz9s(0-gvZILr2nkv9d?$;kZ_WV)Rp~b-A_Srunz)%M?a~b?<#rRZUSt7JuMKp>$xO|Ti-jNxjt=ktVJCPjpbrAY`<}L zEcw7HjV*O+F#&6RJ|-?U?0@+go>(xWI!i$IT|z3sBO2e;X_D}`%M5P*9}Dwpxnt$u zO2!CC<=a31C;F5iUmKHo=_ps_f2pv)d+@QHb111W28 z`Lh*e#rN_PFQ)^UT=|*_^I$i3V;=okC{^px@YD=h)8y}kS zCAFm`r*Fb-DdR7u1Ag?xaJ#^ycX%Kj>~WT_$D|)|mX$17k?og}{d%Kbj)QO0RE8`` zNQ0xS?2-Y|h?`7(r3(4CNwAZNv8?%3^p&z#)) z?VpKgkz8`pS!+mV8L1Q;l2zcUCU6Ir0$+$gBHO*qW!@l*- zo3U^-POBm0l}|R9jXt-U5$_xCD$0HDDFEG9`T6SG!KB9QVyaT5u`-VTbF`6ByVg0X zkDUM0++IjpAWflf)RhjumK?rlTt>7ep)lv|Cto#nU#E zLan$Yhl9`o>yS(zIf@3lG05f;?=C!sKt{DUf-LOc=ys15S$`ZKB2k~MHuR(dHh~t-TFokeXkEfJ*Wh;(1sBa!6iL+r+NJcSITny& z8OX?+N2VJ1vvnOmg(bYr5Z_;F8&5A2@mn3PcjnJu;0kBc3*6y`Mw1wmk6BS_|64OC zexNI-11bHWR_*%X>RMV6HbC;>CoPiB@cq3~0631CE&nqbE~ZbxLT=XON0^B@?5~nb-VoXd zcep|O4bF*;-&o*9*=WN-q)B7mzue|Z`##^Vc^u_XNL$S^)clF-^e&US-ZpCwS_3$S zAY5+$A(l#oS@%W1__8fi5MvN~G}9CKNu)qZkNYk!G^aZl{2RW1?v@_JNuG&^!%lp2BLd$(w;J0kl7+nFfj1-@r0jegNz>7mWQ#PJXq7_s6ij-F z(Doz}OQ(d8pqI*tXz2~f6}ZM83h3t zb_dcrAJjjvgdo@`H`^_;3Vi+6HcFK6F42kj&ZI_AC^I`|3wgjb&lOFD`XLk1=y>6u zP4d>izwK94R=@Pq9*P>iCj-xJ?4(A0xW!qcRTRSJW}L(Izbq5PE4E z*^rl(7LQjqMr!Eh>)p!F7L#V};-f8Lv9arWBtkAhy^Ow8(DUV*1>>7{GX^|-0V!2W zIysp&nU7m|R_Ql6G7ea}x}eOJ>bGhcBYb#4x_dk;uHVMe+LfDj4S)Xa9L;q3x|*!< z;k)m`zG7fW@&m!HX&U8GEz5*@>N8vTRwtzd{ZRM>10FOMk9zC>*pB&~lx`y^Hb7Oq zY9D`q1-?#yrKD<9L=g+9>z<&1Z%`1f)`lxO1i%gj#=3LLCI>y=)7E-Y=vto_FOis2 z#U0rRTcew=wM%#VUV?>oT_ZQ*@g-q5Scy(eW=Q(gbo3cABfx#Bj#{aL$70`Y=vSrT zC6%HM`Xln<`A}3{IQFO8VgetqbY<>7MMwXpnLj!b&{FxiPYoeB_{4qSp+(1oDei#9 z5CLvxRt%d^9&I@>>%;bGSlM1?~`=2;NYnQYrx~sX@55!!j!z=I}*t_av#&q+@&a zPq!l_mda1h!)P|b&g40V!TQj;N)I_292$Bd=)u=p7%dH@JLeD?3TSyGAjRQvI0S^a zEG82>L#oHDA10>TWu)A(_YuEl(8_-0j?Na!VtAbadv%0Q)GfrQ;eD`IlwRI?>%q8+ zyD7+rm)Eiam+7PNfknzCjW*N#2UCgOtuB>3b=(4(ZA?bvbpt1DZaa*{O6nyk1DMbk zlFM4-W!;oi+Q0lb1KOIFKGgFL098v0sdBK%Ir;-v9(WT#Btk`%I^h5a&rGE;Q(|kv zT+HJR+GJp8NWIx%?FN|L>Bu+-HpqJs*qPseQ&3*>?d6o?ZF9()Y80cvb`Zt)AJjY& zLO}+T9_lE*0E2e1*OxEQ2O;V!!#h97Q~Z27#L>j~lkwAOne>|&{hn-srkuqPj37Yx z_WGZ`JZiTVffXYJ!w`0u0Q@p;$C-?SoRT`t3U+^~``?jA)9z=SrdyQwiq9LD8{joyr{O&so7`ZR zGj?NAeRRBaR*3(84mZYARbza^WSw$ZGcJ^Z_>Ktl?4eHUVBlg(i zSV9(ug?$Po$qUruXV6H0YtWUM|M9)9qY-)t0P75T@saCt3H^kED?*W<&j{^4T4azI4kIzZ) z#$i%g^>SF#*Rh*SHcrBC9sstyY|X^*K=mOv-R}gx_bfEuRUBr%jACA$tfqFI&;1ak zHk&p3+b+F26h#&rft7v&nF-pIg9CWh6+}F8Ys*TqD;@G2KiixJip1jW@*>xV%P;%v zwNzb*mqz319N&Rm7j&M7u!_1Vyy<+KQUMcj$upJu++KbTTV=d={`JIyw41k!M<+Dd zo9x-xzE6M3fHju}XDc^(;efGDE?p72U`hm6Q6~dg9wqK|27x|xG5-H2`_M75# z9#-9oa@9h1q*8J&@Q=;*_OlyyzlOGl+kkJ4Vh_#dZ&v zjtqx&dVI{@RNjPgsx05}a!pr<1Eu5V*ZU;D1LPb%a>=*$^-j9I6)rE|4I$>QAYI~_ z7UP#E+vzyMN}?FD`-tt&NF?V%+RW^~h`{kO1$Mjw@P-Fl+|TfV>n~DZP#F!%#br?o zeG;P8^spWIFN{ILzs(S%XFi$o{oP%a5~ZxeZQFhcL$i%`X|S$nvt<9xeSmctDaZYO zFjb;1{3;P=qzL#~pG*f4@!eipif_y$zazgmBX9h!G#GiI=_ezdU`aCi}uUWH8 zFDEY+yqoGalAf4nd*fW3w!#AH7-tbKI$5ky2NHE~y0}Z+wG8ZuwXq^^-sKMBXyIT^ z>>p;MQ0(N{7a>#Vz=ms}yg?%HAXYpqPP#~LJoFbMZ8%@(_phIjvZF&LejYU%wnv@& zsxMj|K7E*(mJKsd_7rl?5n<)fh#7cc)StbUM54xT6u?V zj6i0mwwJU(Dgm5XW2sv;a4(!JE&rhfKmiy@DQVbFFs=^S@z47Ddbr#`CawVb^Yilr z5cEDk1}t2skjc)E7xH7`&#h3-h*DV~i)=ODZA!L{{-b3{q z)R%ccUqKeTl|9U8Bj#N!aE09b&`6H{ja*=vvnPvmLX(D}-ayCVi4V(s3C(HVC|-bo zzHIO#7Rm&RazMZyPA}f&0zDXXj>RV`d4{N%sC0U{mGkT}9i3JJ4+!(HWJ{jS8(qp_ zuEfan_?u4ReNbyi-H-i=pR+)YIpR4o92D`PaMjO%95^4}aHd%|*{8LvMwR3Xp#1!9 z=A!WMH(G6qtriDEACx8YaUekZ zq$X!e0tzMMpPm%_9t3S}ZI^3WBPFVFRVX&Q5q-(8s-jUd_mO}c*aPzc12m*325Nhn ze(9wGFP})A0s^9BIH3d9Lav;i_c~J{Q(-Srf4MHH#T+3^r#%Jw<%I(Vf)q@$Nop01 z;_!#{Yy{F+$^G=d(4$#&lGB6Yt}&1?+bviXG2|Q6+|W+pCo;0YV?U>E93BRbAh*qu^^fk(i1ciJj$0p3Llu-%p z^nL}ocRe#3^16l_J-mEv^L}J!umy#nW7;|7@Ry{{if)Pr5Q#3(%Sgk&={4EmeKnVn zwV-chna0T``qDAm`D6_ugKX=20W=n~qA=r^9h5e&Q(UgYxgW%Eh=s2?K4PiJ#D!$- z9@h=M?U#TA#Q8}m`;kS(%gy3M3*P5iu|8E($0SbV9GJA9K&(lCST0}Pw9=so=`O0r z!_Adkj}Bb0GI(xRu6a3vg66WtauZNRrrOoNuq9=H&I-+|$)r%A0+9+pz_AJf5 zL1yj;qij}*e=j`^UU7i*!y@*M>Zs6UaIepsJ1Us+*cK70=}(jrg}Y?=nf&+EL(-WEejykoAE-a_p zu`!NhhefRw6G8`RxO?##M#t=f2z9v__+4}3+1T*^nAk5??=F_0Xgd5&qoSRbG}slp87|H|P)PiVxMa~vvYBai}k(2ZO*^pjvU8J4Dv5@PiLWi63mXNP15k;_o)(=&0~ z(=ubZUL*Zli*sjw*Zi$Qxzn`wB2#HEuR+8vV)IN} zevjf}!#319Yr7&m`d|I^rnU(cz*}SBA9@e~URX=C+zvc|%#bQ@NYnucw+Zn9)5;I)Svt5rElKWhT1v0HNZLJMK-HL?igi+3eO`5xblaol z=fU@uDwGL|=?#rr+BzPqIyfSWAwo9)0yr``-oe*#kO)2%x{yq= zB4C9Ds?lPFNHXp8XFFkYI*)JH}mO2A?kQ-rHV=OcBsr zNbO8YPLdc5H;84_lNbUt3N-0hc5NBJ%XZ`F%4u1e``YM8V(+zwg^xipWx(<*{FWv~ z#4j~jU7hrDzk#S0c&Swu#+VLd0fr5OKw5DIP-(l(76n!{9MT~Q;5xk5=AY>STh!GR zRWj%9O`t7mRLMAONhAQT1Hfv_dZoWc`~%!>{cWQHaqtUg{Ku^^h^~AdXLQ?xJ&h{# z)~j`8VGZ{iX}DTPc)s~@krpR_&TZJq=Vsid(GN%A@s`qsJf-W}=Q(mu5ug;X3jE@x z8&0#^|B*j2Z~)Y;*doda2fRVwZs5{{^2z;=D-X0U(g6VjRImZ7*KT_g zqYxM{cO5H&F{Qrobybs~o*K2awv1VyJO)#jAeiiv;gYe0vTazU^NpPh4-jrC84Mb6 zp;~AHW&mkw3ge%`Via7~fawE?Tvk@A;&+#4;i2eOYAMeH%07l}&JZGqYHH(4HJ<=gNtNm9sf zax*jE0QMGV65Ykc*}O-hnJjW=^fcYTWx@F#tn)&~e))*Wu}gL_hQtyoIYzxi?IaLl zLN`qFoY(asO>{(aiItIYoc=2tXE<I9Cnp)hB zysgpKT^;gZRJB0ad8n^+%*-)?L3#|oi=YjZ;(v=#vSAPF&o!g*MI(=&krTsB4YKm12>5vR6&GmwT<4N0QmYPFk0Aw2y7?gdt4F!e5i|4zdf0k1= z51294I->8yf};`q_ti#JHRYP} zfstcBqfs(@!_jxZpCrvfq#nofp#>zcMz|48Us9>#P7Rx*3+YMbrlL0L2Z8^!+jXQ` z5y1Ao-5`;~m1u8mU`ktsi6BZ}rqUDH>bK9K@|YrQEUhf40k*PJqL1^{#=?Ty+{_GB zX~|AC0<+`?kD&YPm-r!g)KhV>MqtS%WBMU1(v_e8%RdtXl@(e4+19kvPqij7z}hwMc9xHB7)5iZLfsn8Z+*m{?|Ck&g}m!W;t@HcDt< zYTC|(EQVGhm>G+heA>Y_b+WHAo1AQJNVJ}^Pd=Z5k-pUc_ioOpa!!?JS9G%dRu&qXXF`#M z+d+U`c0Y^TURS^0%9k1b{yDd#!P`wF6CunW<2WFmSHLOATFUuT2$h0{;d>oNeOYTx ztfE{z^#D!6_Y#=amI#zV)YF}xRbRe8&2<=F&v4e5n9@j5&73V!zF8!~-<_=)vnBzg zag!nDkqjWVvr-tgm^D+hClGY-ipp>|s zEG+wel9H2yN5ba}w{?kUBE9ulZts@E7y#iw4hv9?(2=lSe20E!=$rn0b};;>>^Qm^ z`d@w3g$9;6W#9w>o(9siG*9^4wf}*iSX^NTFqu9+KdZm3CQclTeNLa%2!@PbY2qqo z2b0x&Ff4Z+#;3=4x&!+LY4iL%8@;6S)Fh39?|+^tTbC#X4JMOuPj?bgX4|E#VI@u66f z5+HIq>;L{L9jlNb<(BQ0(*7BItwDo+c!EPNmx0C`!T-B$wGK^2w!>Y@-^bNHH}FGS z8JF9hKnSg5#)Za6AykOPz5U&*_p56JyWY$UV9{yv7dkaxU2+gxh-1^DFpqrd+?#KjLS!);3$lW{&#rl-vj}XlrW_t3YPeD#rDxq z!c{;YJ0QWKewTxC@d7yKT77{*0L0eNz0B9S5^pnKBbi*GUDsHKpQUUvN4L_wCGyMh zlP_u5^rYPlc=AdAC!zvCDtnOp_*&)n846UALXWoqw#|=8iAcyt=SziN2|rM(c!&!7 z8+etv?GPP@fAWIYUEuW-HMq=g)ple0UV{qD)l-QRt;eGs(rl%*AVrc4sSa z1o^!`VT2!l+8+y#p)q3@fu33J4`vaK+vD;_7LEi8Itw@~CslSvE>t_SS<>q=^KE-m z<1HbkY#rLzCkRmMLeI=XR~j=fF~_@-da~Lq5kCD4Bp^=ogL62rW17k^^2O-4kR&o;c=tTgr*Z zTnfC>)8Uk}iMT@gItqc9myse9MQ%qdMM@Tq#Cdoz5~l#G3h97M$9I~XIOA?VMwDY} zv?VeK$bk?mX7f%Skc4=Z-}&fo*Y`Ky>M|I*nri}ziTyDVdw;-xdyjObY{|_{JuxuS zidhC6(I}lup%A>Sy-ntwg?1NVLH0?=w`Z%1`L{2d$;%DaiLO5ak$E6{%w<25HWG7& zi*5L|r;&lyza`;VCeYe4J$8=f_jhl9b`rT4UfB`N4&f8y zuAV)VqG>`RV3hi)=b|8ei(^*|JUy3#G$6tL<4fCwghy%m|Jdfn!7Tqfk^oY(BBOmE zI60*oQdZMY6N+(IRT(`V>x+t-<|YWvrfN%rN5Eg`gXWNulICE6WheTOhpFCfFcMim zdF|tk2=>sl4k=@0o1`*TkikjdzX7CnnNk*?>)t4q*Y*#Z!}GW;i)(X`t7y8cs1b9r zvpd=1)t;meY8olHC*)7BA~yAiRKcWgrux4iOwCa?LA>8CbAMZgR2IAROO4Ubwmv*x z+yK)22mkO9n|k;w#~$#Doyg1;Eb02iF3$?r>~0s9{r4pE3!_XRxXV5aY4yypIpkhd zo7>6Ee1&$|;3XTr67r=HD~+TQa^v+qnmOGFp7=BVIFU%0P)s-=Q2{fr33E)^NSFuh zgG!I8CVoOi3_fNmHA_m_R4Cmde|a}BrY0GF{&1U%gYg4i+W*dVaZ+d{r(A!BSRXVs z3vf6KV2R!^`mP&%`|rwgk=&A}F~->+4&dn}_xc4lkOp@QWushcP*4d8<)uebJy2qO zb=TNG?9^bPcU5Kdh2NL}%f>!S=}IBoEkN#kNbRjOM>XBFG#rTl^kgCVbFNYP4D%}XMROUv$G45>^u;kw?>Wwvb70epTLUHcl0VgfbTc& zugd}M!CA_8N0Skh3$QI9#2CQtqG!KOzpWcjuJF2%D+<_|S-6h=F6$Mu+Y*Y0l-08F zkOSOI*}qCp3rlRg4BWw%T0gF}=SP@{Yj9nCr0#Kubp!!RK*J&%COJuoAuTvw%@#Z= z;<6oX*W+4t59h%j0u?6h+B}6!8>r=z;3{l+2d^&WY=^KZ<;`J5!eweMID9h(LOXw% zAIS^tpwP!zqYlVHH~r6DV>eQkip623y;X7%Y408;tDvp%XRCi^8{)p2b^R-j}(Hr zF=O+HT=5B%X{%}K!#7Zx>OLEps^x;JDj$Uixoj|hYgIdN%rwe9_Q$z0$sr0*psC#USvcY$TvCg;^Ue5v!b8p9!8aS!j99n-%hGFSBGDeoqg1?KIAzp{fv0G{9Z z#O?(+GI6=$=UG@GO*SdPK!bmQ8(cP#S}W&g0z|f;cZ$&4gK6JbV}nd{l0mG7@#k#q zS506ZAe9xU+Q3%wtkx+#j0$=r zSL$da0Oik+l0jO{ROxeH88(V)kPlEndt9tI4$2R(Q9sO0d<$GF00;s+rAb3?xrDup zHdT?qjK{qa#8IHXHAOzJTmg0w1jU%1ks${42vzw4u7qofl&(ptMATuMDmzf7LK30W zA>y!io46--Wl*zgqtp~;I8>?Fo6Zo9&v-pSuj7MX(m*)-u_5}FxI^_P}PpZoI7SC&o3{GqG4-2bCffN!l zDFF7wO#t_41CToNI&VEVwSS_X(7sKT-A6YhBqp8&s}ho(2jxI#h;*4z=-xYsA5CrM zfmpy7)}H)V0Vz5x6dURa2q6{Boh(}ai6Qz8D{x`lKA4HI$@TyUXKiQ%^78groYUT=Epw6V%;E*2r90{h9bS2tY+)UbSE=8 zU(7pPK%4`EBCkwvLPZ&!zYbq9N z2DhUUAW7v9gLh}BDr`zLpM*_?q$N?#!oFm z=QL|20iRceP*vt-<({DFA79J)WJm02k9!Hh6}+`+(1w$oyuuKn=QvkQ#XIjWxB9ER z$kj63)n3iBZ=q!8mAsLUk#@_+U-tKlNlv5q%BXltNZxdZ1BM2AGaqX zoj#9!YPE97R`K1!f?U3Qk6o0;`#jtXk>sZ6!<{bX(`_Ij3wymO(lSgE_==*!!njW| zHg(Q&N6>kh(7LowAVLAlg~>OKZZJ7(@igAbf=78Mw(-BP*d2-!K=z>p@Z$e>Ihq1U z1Es{hM6bt!=})J(haB7qW%_xR{ZK-A7$q1%wV@JFX%BE%I7cEv6j}2+AMoQ~t@T^H zyJCjKQM2PL!u9?%MPOj&N*6%lTzT(d!2^1>BX6@e_gMx{Jm7Dcjt@mRnwt_A0A_IpNVt{f1WLwDUwfx_16}m)bigisr!Kue@?{Jg8D6f8`PUwpKz|? z)ULIAx@}VLt+g?rqlQ%^ZvMMS+|u}{ci9cVvUH7ZU?E}_28kE`XcK{0oV5o*`l%}~ z<3zZd)A6N=9|_G;gj3x>3i8tuqB<-O5TD`GXL$Ld?az6BuTL6&Pp9PTkuanp|HCJn zCX@1>9Y$b%)K9<@31>5(txD4@R26)YjzI+tXYCBl9wyR^%=e2cY5O20$=xJZ0Kb@< zd(o*?FLH>=Jl$M5H;I{(Qa9SA(dGNy>;lZDJ)NQ|kyc}XCKJH0YH>AJ_5y=SN;;yk zSq&+)(CGWa4obP2HQXL6?40W(dz>Z+PQJqt2(!!V31ymdia^51`1y79syovr zKteUu@}mYT|Bj`K^QJmdcfQZ+cH$MY=1zhzcRSCcc|Jgff@&bex!;bUFA}sg-GLYg zkNQE=3_r8mBz6~@n3zZ@9pe5Dl#N=1%>ItVNpIoc4&y?XT>$3QVYALK1g2$-jv>I=eVJiTg@&4* z<*-!SvCP?fMsK#u6I3t$bGW24xuo;A7%35kT)fao2lsz-T705|f~qu1&OM+q8JW8L zt%2*A1gH!R@7gY7U;8vlW9XUHi<;MrdBQ@u?;*d*DM(ouB00cM%R&IZ8OY0tzIqK3 z88s8W+3HJ%vf>JeokdC(vMz`3T!@r;!$cD)2^W(XeM!9kJ30Gj5VnkY&u1iXX~>qM zQ6w)z^qyXzrJC8Y)$W1rL-Q;!v-$H!j3eNloGChR-o48A#)9Rg(O>v1TOj?zH}#ao zrwXvRNq{YQ&h$uaGU2JkM)SDUhgVWKPFhMgt-YBWYxh9?3g9U`dqDVTSX3vim@ob4 zljHs5Z(8V-nP5C#eoZR7GlU!)+)cIIoSEXu^w#ULeH|eR_)cHT6dQZ`KZ5}rs+SG4 z;CcgF^6gcFEJtBU(d=VA&d98MW}pS^K<&NTvR-k8%`2330YTP zZ9a{ItQ8*h?88u!YVm&zCGoxZ1Vc032Zbf-yZ;8noD|6e7Kurgae>wG#lU_BlMd{q zoW-{#`GW(W@xm++OYSE(`%5RJ;l$MRUJ&$P;BmN+6H;MYvr*LtIkM4!aMdm}|If=Y z5p0KG3z_&KoB=|zD+B9cz4`tZHT=uPNnK;Kz5KISR-~zpNSp@J3|=EwO7QJF39ZF%c>Fp`lvg4=Spx6-;$Q#%A?gKi7id*z z&Dr;Yiy1z8WsWMRiy`HB$t~=I%Y3Dz&Nin+GFv)g!CgOA1NVL13ZNCA$ zq%=Ux=8h!NU<6sFa!ZeF|6!G`R$Bna>>5rhq<_GTQ`NyY%YI6UIH)lnOG)UUyd!Nb zSH@n7vvp?AX?I~u#T6;r1NyG=OG|0H_8tNM9|8_@EqdAkzd9FtpMqa{#^_alFBnr4 z^ker_nkea+&vg&jG|c1w*EW*~5FrN8DYc#)olUl>Bb%XjUP#WD0hx0gSE%NemhxA5 zOJ9$ON3F@pmDvMmsjLbAxo}s=SJS^lsJ5#!k&b~si6EY(!TLAbmu;=t&@OO5nk+rH z*)c8D>!bFkd}{dHIt<3PduJ}c_{FfP>6iV8(6IqwKRC2<(8WeU&wli&np$HV4q5!) z`1Q)!1}e?fGa=F^qQVHCGbDt6+5;nE7K34_M)_Vud@6@6&aM{E?koT9R(CZ!`MAy& zq9MwGl8KQ$0v@<7!2OWyzl)~pgBipQK1$P|-1}?t`m694HNmwjILJx0W85(8ad%PD zqiq9RnH8OdTrzVYO%@Us#vWj5ixenOhg>L!=rTJqjE!ZI=7bH>b1)(cpzf8;6=B(05hr1)ZGg1ktu>-DcIE0s%!!kUM(%S&A-^Ji+Yr#OZ+hsUx8!^sM zNIM<3g9;GJE1PYwrjGYK*5Ans-!V9+(wuPx(!kI&0OhdWDKBcDF=kZ3barqGMDKxd zM1^76ez*tB3g%MIz8s2h8GKL#(c7S%5VhY3s8INo4d`;tG{D4x6e`hxarA)_MkzyN_uef^P)#>ez+_GQUt7KR=!p@OWp${b8D z#fW4d!}BFcYE*;dJ~YqMVEGP#OPEOB*yo?*ud%{!p1}U0R>V<4>w~3e0_%$gYfftB zY8~0hGGo8I@S3iC?z^-4v{p_+H1vcDZT}7N=KZMxz$qnrowxLBmmbkZX431uo+wRY z5u3-Fao?wL=leQ1;4Ki=2W>_HF}j;nAvg5&=G9$u;D?D0sx(DtXjEUFGz7aDs=2pK%4_%9t*YRzy(JOf6Q=4dLAt13DLxqXY&1BqhH zEd2zWkVKrzWrgLx+U#V?$t&{CjxRWG@9-hgNP$xJgWQ4L=Putez1d=oPS3CV!y?d9 zUTWw}R?|UVHTpC^3B=P7WE4IK2eqYHnyCFm<-DYAU|{nZ^Vsl}et4(Sv^HZ#C6xjw zSYx8y4Fk1(H4AME<) z9M+821kEUM0u2rMr_`n==zchLK_Zt+K4X0k2p#5K9G=8xWc=ejrkrC zdkDA;UzpMF0{*@h7y(0%(SOfxn+^!4ji?g=D|gsT2UUQAC55&rEfyi~JI0A@!Jj1u z;U|0m-C31kl$B}&R?igBwi`plf1Io_q0rVZ8eG7(8;k=+^9#U@SWxn;7D{sPfJj`6 z4+FdJ;y#27O#5Rczi(HYOU@j-71KQ~X2xt6Gj@%|k51y;C2Ak0gx~*!ArZi$$Ci%3 zpacU_GX|Z|zX6OSKKBG&UA#0}b|@#C7!kDFmxb*yTE+ri3l+5w{i_mWa)Kl(kS#Bs zP?1MwAC-bl*Qf-!wV4d25^4u-)|NIqQ~f5Nti@6Q_yE|Z?F8~Y{` z``)NR&$)^sMp>42FgRRWL_DAKd%2Bace*cM?f-N=dvK#R4*FCN}I z!jD}LIvX}&pDZ)dKr0bket)W{i6~K6IbkLN#I@U##aQ7Opt35?L;a@>m~=g8U3{~j z7BJIWS(8rh2x|l~ojNRMh!C4)LsM!ZIR~Vvd)Fl8Ib`!mZnz#x6vU8}z{d)hs5OTj z|7nJ9Bu_#Xh1#BGNwre)ZKTqUF9TC4m<;GmuwkmBR#y>e#l!P)S+CaQs0a|1HbGB& zm}xZdoW>NT4F6=iz^FUh92(iz-|vYJjOysZKk4qvqA+AMeVK$bQ8}fu1SZl2nd27b zJ+pU}KsJOQLwqjOI&a*Pz*|VqL z>lv^~Yjg9D&vnh8Xd*1tL51kltcLVOadtCqc<|(6rzM#kaG66{(?$+bU{eqB+P{-6fL^m)0szsj{~EuLb9`A_Nf;U~f7l%jxUAlf*X@I0Ef)+d5Vx$ zMz);YIX@U0-Z}W$dChl6_qtSXmE1&`ZX=+66Ch;~KNpphs8{JV4x7GUvU!9n4CNyR zQt4)mV#?Lolob!3_HCMfrx49N6k|3r%0E%zyXiw4Yy?=98323I8=AzWNC8t0 zCVnB~KgK7sk-3*3u@Mbz?fP-(OWNx(<)f$D6OAT2-F0ukP(HTeeb7&Hxqhu*KTX?{ z;e0{NWIY>ppxY#eRjyG(d~LG%z5rxsjwdqGx%}nV%wRu9dsS0FR08bo3S*B=wP6%k zC1_rAMDuG^#k%Dfw$ohNu^MbzFJ@T1r+wS!7Mky=o;d;o6M zd$Xb|`4pI?9Q<-c;W1DIRmfsakWg-9WQ1Zk>JHSyjPrtW4I*qo&)~fbSeTgLh$wQ< zpeF;pIuUhnR-j(6?P-Oz{*he;uyFgCjpSnXr5RLa(qJc)$4@)&YL(TM3Y&oyG8#)X zX&um88uoF;8TgvbaH@Vn6bby_HUbBSVplp(rYC;%|E9Q1&o9guP<3=2IOFEv^Z&>A zeE8w7rXvCVg7Zdp^P3=DV2EZH5ENz@znpV0IMz}TA+vvd$hmg;%A_=@YXTvB*rQWM z03tM#$D=Qyn^0>`Sn5?NTm7-VhC9G|r>L9oZ{AxIA*l(9kc--7&Mo=Q?-v1TK?71z zOpTrhFb11~1t*lt%DU@&+eZmp0IUz;;euYP(XO2|^%Ot%ts!!hnEzj9p=Bx7OrO*< zz&H5=LP48_#pRAx!CO*A&wGMhixn(K6yTHR33yY0E>@Fu2;dw9>~ER>z_Bp2;g)69 z`94}DIao8-{z^742Ll+P5gxrIfeLzAH|b}J)E8jeDD0H1vgJHlfc#}=YX{E3VomXw zJT~h$Fe9uvpk_nB0K#j}+@kgZED0Fa&Omh4GAG+QuDz7fs7Q}-DC%C&4+=IKj z6Ce;IxVyW%yYt~1+=IJAaCav-^yWYJ^tk=dkDD=g_|{rwvu4ez_p74}NE7jQkA;j! z60!f{ix%o!^r)!ZOx_neS5eEarrm`{O3>N9_eq&TLuQoqxETbkiU0@{04+Ssj{FI! zMqdj*<$5q+jvtQ`0D^BE>JUe;lUMqqK3mETd<7`zq~cFG_%1V*|eQ%Y|5lGyf8O7#OVJbk9Bsy@-C)0 zayo!kT71dX}%uQaj5^ohaJj&kwV zf)MdgToy|3UqwW9VRXc6*#M?d!moSwJ^KWFZqAlRbT zya7Tgln)SBra<$fY&E2wJPdcQLhZZnuTy+Zr9lbQ=@*jzxs!1GSeMG%?u_H z2#DZ`?NMtd_!@mO_S9Sbqs3KR^=D;KTRh@#Mj03xKIj3}mnuRjrfcd4x{6$XKi^mmoQvWZ1TmVpAo-sNFv8Cg zvMMl4y*}T)#DOV6Qh+4gklf&s- zlXJ(GsYdoL?Tvmvxh)N{OmVu_2$|$HqgGwuYs^fX1Pl_*2*xxmj>Y1NM8Y1KiHhHB ze@C4r?w85)%Ez0BWp*+9`2|lZcA|&gsd|Lr`Q!O=JXhzl-=|EZJiu_Jj=V9hgs1bF zp#aE1l_6KV``<_I3MdRaiGQ3zqCYg4z9S$x!V-(6oOq_De1`(z#>6C?UT2L?t_I90 zI5yAf+WKyaE=-wM0eW$cN3qeZV#hx3sLiOk$GLxRMWFia7!@^GBgvNyXLy0fca6b^gZZGIkB+c&&Ut`>zO8>?&8_QY!!CL{!I zveqI(>^Vo(5R3CuvXV${)W ziJ<*8>)rv>S4H4mlA57iwUs{{y6_To#kdiNT+fthC-);O0Je8C(3Bq{~-LHq)uQ ztWQGzt3gq89CG;B1PnF1( zF~yN&iv5nzuoC}OzKQnO5#{(FWMD?}-^cTSeV!k~WJg`^Z*-K8Bfcuyv@z%yo4+^& zpna45U-&xqgoel=xzrtku#FvzO-O|7*>^*%+yTAxvD^svssh>;+5>R4YNZcDF#P!G zNGIA(h95tDs8J9YA{lb3VVhGYy95`~U3QBQ z?IPoXDG>&E9Wrv0Mz0oy@Iw1#WC~&S@PH^rJR~`9hKWjJ7;%^PHXLX%50an%hj=YF zKsGj>+MI5(68qIN%r&zdGms5v*(2Lu-R`!)dcr9}muXZJ>UDai(cXHd0RofxG~8c@ zzy6OTg(uD>){u@KohnKajlpVySLw&ei$`9d2MMZTDq=H-WUlFB1@c6{?dhUulLLy=c5Q+2+6x=^J zt@1mzwgA$PzG(NuxQc?(TFqC~=Dal;`Io$Ce|rchLol`}TmSEN^U6rVA0=n2_bZPY z(YFE5&d+3%Y~PfH#DqRnL)h+N+14Lj*HbX6McpAYEe@u* z%tnD_I#M0_AI@PO!r2BK7&!940wDm-LAzTQ0cf50m2-p+gWX(He<+2)Srloa7@hNt zw;=oR-H^H-r>M%o!OrN&5H4-o1%Tl8$A)q5u|X69UDjXrtlqV{3N3z8k}RRSq63M> z#$X6A;-~`1K!nQ)oIhWfBX>tNb7?vEmRamxiJtcrRbYK;HXHif!fJz=Gef2sz*au^ zK$HKfiS`%#s}vxanG(nM+1MBCm!kSMAR4+{#H0K#xca(NzgM~JQsaNwW@Deg)LM?r zJ%7deIG}1sNqJJQB6OmI8A4zeuTe>Vj@8;*Z7g9EbYV)vPx@;L)Mrl=8mu#LCVqKB ze;ySRFGGr+zxJO&eoH*es|LlFCp-JEbbXu+hxy0ZNc}ENQ2sa@TufMGie2hL^2fAVG;F;K-h}af8f=|~Ud3&P$Bvc>`jd686CM=aAM`?NqhU*`*sM|yn8apf%SUK86;hdw<*L6v&xSdj4E=Vo z>98PK>6|O^2k*-Kzlac901+Zh!zjPrjfFCrc&0czhk?zxYC zamS}+?a*gz*C@7#{3i%#)P9JZf)*NRxZ9esvjS}Wh+B?s~1%fORlD-*ZZ@!*-KjKhW&g8t4bt1ue5cOhQO!YB!km z2)Sl~2T;_T?0&->B78V`9i}gP`pWL>7%OXiIgMYhW?;ZXEu{PEj2Iwzb#;~5>eH$r zfY=;ZhuRYZBsq26ex)X(hf5%}U8PPw6LKn*cOsueF>Jbr5B2pVJ9|njCZ;$UB_rS0 zy@P`itW4-GQQM4t=ida8e)WL1E(TF}M?ih7EKDc~^n^dMSdwmI+gXLY=0{$S_ThG< z%>?h9=OIAQr?U{imcf$58u{oH=d5(;=`buVJfYuySm5T1jEsyke(jKjdLF7(q@*{Z zD^7Ep-uMQ=Z_Rpudw$ku34&_GOhS5nd^~V8yth8CwZu`gp7NEq`718a{tp-N^^6lV zUq``UwHOUzvz7%0HVQumuL1F>89;W%1iJnSgGKR8X@69KTdo}#c6S7nqd~09y0Uz9 zJJY<+(#RjYAg7}lv4Qz$r(po}Gdo{xncIE-E~}3nivB;)#H){oDTKOOW9L~-?I{u})5I`$4rR62kadbX(N{Lbe96w1q2!OS<_%WU$pWPaphE7|2nssqy>i`X)9SaZ9A*ZLHYPU|a?3TA~Z2a=pHq~|bI!txxenf%)el25{|BZ*EiS2>8 zL3(l5=2cLc)Bfv9y=~Ls!;MOhF+ACDx!-g}JEM zV?NR}^xNKkU-<};mInRNnBYeg$k^z+GQghVIk2UU#NuA+5pM8X-8*0 zxD+pljIQRt@Hw8W>c^$hnaJw$+e5i9>UM8E-URiH7ZG`P->a1L4);NVqf>U9P61B5 zGivs46N&AM>z`54o}{H_bkajHh|Y9}JhTAuDBQfQlLQl1*K3AmOIb~cl*Azm(bCES znoFvZ5aB%mj8IV6!nDSE8fD$@W@d28ZYT>#a3rI-V6}a27T_^S`$D~&{n%+Y3kwXV zc=y+-Q1-)@+8v=e6wRSm119-RIInMI_={3!#n(xp-%IsZ|A^J46+o-&fGp<0NSG(9 z^uHWynsw4Ym&gju3`B+UxHqt!7|Fc9l|CO9z`pOI2ME|TaPz09!mrTJW?JHBiGFVw zwr+KX=CE0(_s1cBJCe#cB_T7;F%dYh+RE58Io-C#Oc6foIB~rGwsij3<`MOaA!D1qP|pXcPUXHRZ~Jr$cl>1 zWpwAC#b@LQ-=j^6J|Zc#K)NYrK7?0Q;g*w>l&nO%WKVJ0vik}g-5nHHsM6ioW0~dAPLKSbUi{U-GL-V~uNfV~t;^9!w2{;%aH3Ig>td5@sSJfu<1qvj_EBy1Mn| zF>42K#(|v^q2rGQDnIj&W+y{C4-Xb{#<56?cZ-Fh5gR+E53)z3ff(esEj3+~^O_;> z8hU~tfYFl;@SYnim(iRyGVXt${}Cx6q`iT=y;&Hwc-;1b3JJ=CsbFE@|eoY}ow= zs6}lqZrMeA@#1wp#>Zb>qqxaOU(V;}?GLm3eSs|Ht)HM^e1zq$mkfGzxge#ksn^F$ zfwJAXnJh@lAiIkd0IjX7SWF zoaU?E=a*vpc@um|O5Q6h+Um{b-{v=4t1qD@d$gXTmgVtiVsrTM9EwW(n(&svLGnC7 zuw|=K?dH$`3$J`lJEX5ts7!KxNW(Q(UHyB{LT;j)GzvB=x%}t|_Hae$;xl~!)<`HP zrYiBe?1T=mL4|!Ay@d`i(Ny0@)J@{x$4a=EP~iN~QF77Hc%qW##avytanV-ip%gf* zQjjfn8vkCz6?+rSpDSsH8*QagpA4wThRUj-~etKg))rc?2mu4&uwZ#VrAMwr>|x;0j&u-`c;s ziAA0Q%XPSbt*E43ub2#NE{i`JTAAieTGCnF+F=cjXL?D_l86OHXXU0%TBL2E zX>-}TQ?oCNXWS}MBb0Oe+QL5T`$GVDEQ2P%&J3Gm`XGNm$abefNv<+gYkYU@ysRtK zSsBtfE?b>OHw{$G(#ztBcPrC_FAeS*1|i1h%>Jw_ZpA2N7i`c1&7_9}Y9_;kYTx(w z6ugx2Y8_l3m3wbs+G}ZHpo}TBMHn!+!0I! z@^ly1?9PrPn?)J zaQ94(VFn6T4!I@f9tV?!jM_VU z#@0fWSId#oWT{F)L_A3ugIXVe63T?IuxuWziO2N?wv1`; zBh3irT1M7IV~{^RE}j(B`n-EP;8iV0mjHvUuDdr$d-(c?9=;GBJ$`##2-oKugIh7* zdRx}ork!>rr)a*lM7=y8-sO)+397!(#_q|K|XuTS``+jx1=y;MN8wMmJ%X`IO$ zu|oy}pP_4&T+V*S8+)smUr>NbNN7EGAIS^60AILN1R#K=j!Iv00jbefIB=(xW=5I$ z&2C1_mbk?tRRz4q?QJ7h504a?6b%u^v9Um#XZ3KEeYrX=7-tY&RHi)1O;ZIH&23iK zGD9uN7hGa^1~o+d>|tviN*qn ztMOc+ORqaMsIEuKQ^Mry(`+uKM09>mpHA1M-+jSb)7EP!U!CbE&R4^1fY@W^$fnJI zmpHVPdx}Wq;)0*ai-ogTwH3tF#rDMVr=QZIQJ4R&`dceIDgBbYng$1Ml1|)EWn*Kb zC)i*wy+*zDM)0q`;O(`tp}25*jh3;oLn7AmSimW;k^oMXRST9725_pyB!bDHM2qiS zCnCd;@bz{58(NP1Tw!k7T1go?V#y%(7DB!otwPImZ!9d-aFi z8w*pVLkbx&jVaoGEi&eLb<1&r&kW+Q7{k6G^PxP@|AlA0=o?uP*DO;e1E2V#ukUI% zj>|V)u5nb|2p%3KCl-R1bH);5b#$Xu2p{^A~0&9$WXCOv>doQl?+zst)e7W01M0iNo;UG5}SrEdygN{ zS=!ehi+um6(Oo5~UNtI=7fy$&#GW+fIBYgJnd5q4>vhWgP;wYg$(9Kc^H-Vl$V*v@ z!FL6VA0YV*s^3VJxWuYFg-VPDa6~w?1f<{^+-s2V+OHgRxWmK4$zQ+JWB&j!(y8Ns zN3sJ zB10`HSwwDvXW|yi5mknlgcrs_XKJ37q)jILD{a2x^TU6&0KHyv`R!@MgMFzBB};eXLA?9uK_+D=TZGh3KwnAsP8n9hA*Hz9iM)K#vkfO?i`UW0>o@ z5k#A+|1H45fX(9h5^Zfw9I>A5aFB21%4PKJ5sJj7lcrcdHY+M{7ON4)S?hN3v@6=x z_rsG4`UYUb2=3^7_zWKi)q8nB?OG42v9zd28)U)jM&>6`r|M*9H+>{3*p$zKsVSc) z14-^O0%dG$d{`6T&NO1}|I$AGzBiAZSH%Ke7eA)k0u_Qx)YR;zcJC`9BBEq^>&oWQ zT4GGStE}8~8p^`NaeEe_flMe06geP|L!KO>lvq-4>jPRRdSxBtww9J2^DV4+Z^@;^ zPNIMph6@K}P*Oor|M^Vh@X*A>f<=qA?Yn*>wCx*@2WCuz4{@jGQ-+N#83{N>MX>=6 zG*j@|-w-dGPPl`oJEg>&7)%n9-XrlfBO`?&c)r;#xWbTLckZ9BaeF-SoJX`^n4*jTTVoF9{`pbMW zL*EnCDT7@khp8~b2a?dHPG=6HW>-~snb#x(2zCq{^^|xGaXbrO4h!vZEmXBh%HtB# zXmqndI~&lnz%0WVdvl{1Nv2J<_q&(j@CgA9O`yTW>l<%2EHYNnw>v^F40&8ew!$bw z6DtNC@xlcWk~jrx;F`bsr3(WW&2B>BMhJW+qUEYy0h*FS*1JdfXe)E^B4P$u5&4wL ze`2x&$>8qI=N1#PHfy)yNTc{&pR;jG!1L+UUV7lu|`W? z5Cyr8h-sb3(h^*^+r!~;S~oP9r;WRQLMDtXXV9T@w>j5s4cvQsb3MB>WIJC{y2770 zTLESS9-%99Jdmuiz0|L~l3ElKGbyqbpVqnl4CdzMf+=`*s9a;qFmkK-NLb8;b$OR3=nVb>;!P+ zFebdkYZp7zVN;ZZ2nyIl)M`ZWi?_l$*OgcmMks1(!dB*c-Cy)n_w8WPt+<@dag$h- zElW03n@u8};S#e@9S^t;g7Ra+<>z+v&&lX9v>GNa=X1v>MpllmUP;7o_y&`iu+%~0 ztwWy#9cE^?UM~5+mq9`>I7_~oC|iBxbE=6hp({VZT06||zZzdyNC7h4+pdD)+7 zqm~|WSmP`Iwh~#BAo`OtJWNVfkXBv&;I=^_(|{D<&mn=X99R&oM_~RK`y`I`PBA)P zSV*oSANC9&3P2Hu16YYFj)gZ0a7JoEzRLZkW2t^kf1TAHxYVqXN*e z@e`8~q)$5d`N%b58G9=yF}DE`m{^9A(w=`|h2S$ah9Yd9UUj5akRp#7gI-_E@f0up z&(P_*Sa_^bS(AR1;p@~wn0CHmlD*#x#8U5s`-0V?dYRn(WF8t7c#o_mBV%S}|5AmB zr|!M^l$_Ja#CD_Ck)KaRTvXXiaek|@|ZU8}j$xaf;W zHmD~jwpMFJU}^XpkApZA^)ZLJe;)#7u8Af#{>j20mjZFaejqCS*ys#h?IZv;5{OIL z)!I^$M5v96gUi?HGLB553t8z+An81%T`EbjuH<*Nnha?+9(D*lTDQ=4dueGwn&eKEunXg@B7# ztd@Zo5o2K@us&cO%Q|CrK{j2=F++l+=seOCxH?q|W(92*>m)M4g$&~sZ7q$AmkN5% zt+Oc8gGq@&pI3wpg^b{cPe=yBX|op$)$RV2Sv(|`1Cb+$+FNU_z#$};1M;N{zV~KYX@n$?wpN~q0I-L*@R~mW% zsc{q*Hx|b8zn|{aD{bGOoS-6!nEbzRDrBMgXRp6L|I#z8(~1&s6NlP38>*DdbF!J( zy*gZ~CHwU4i?{Ow%SQ&E@sYuMc)2j)EJrZ{M&iEWyCl`(YkAgp?#YDJo%WSo~vz=h9b}yByXjOLH^|QXv@z4)a z4#r+GU1(>{7U=spz<})xN!(>KC@&Az zx?-F<+_#pY5p0d$JU_40LLNAuf_125k&-nswhRr($Oa`fCfR0B>rTRNB)Jsl1KfI` z)lq$^+zB{tAV{5m6nf`${X0OKFUSPp*t$?>B6It6RkNF7PeCvp-1U_XLA{9s_V!Hk ztg9VCFK|iJ3>_qcLrB9xQhC5AEb{Jqt)hxBKQCAUzA~gD*Yf-K?^7Ck!+kGDt9NXC zUA-jwHZ8q^^3T5VaRmR)`p?(e#x2I!4ZnIl-3obMcwaBe;wG05>-^q6aM}3tuxq@; z&65lWH$;373d(bu%!bY2Mh`33*ctMN&R5N~o-JPD{u%jjF?-RWVKQX4Bl9HS>~t)h zEtOmj^lk%y99}&tH2v62G`T$S&t8Xfgj7&0O}){0{iM;-dWWrRsZQWfoWzWmmUVhj&wNFxpLe)%oBr~6mQ0{;v4%lPkpqz zg5FLhHpiX{y2w-3ORo$DHjLb&P$oe#i%~`mS7$woH`m=;W~?_i_e)lT1s#ErjM{9w zm&K@BB?Zi`8OA9cp?ptxQcsT=9x4e9VoP?cZzE9sax&`rCWL%ahk*$nV+5d>>55+( zf$ew66%&5uKcV@C%y^(b*|X1>0Vb%Sp;76li1x@9Bpz6{uhaBhZzD%lUr6Wz^zg>_ zdiMKaXO8CfS(^VdA+6$7m3FyZ)w2qVzhlUJ0FiDY63qfpB3cA&$;ZD(5G;< zo@FF*;j@{$i!0Nl%Pvi+lWXUn_sipcVD_RjLIsbbo0U!V_qmugm0-dZg|%KjwkKM?uxaMXuUDXPHQq7)QYkWU5xpK#zjT16F~rE!|voGKbtg-KXJ zrs{jf5#>@Z^`Ki8qaC7S(jn@}@2*8enORwJM|cL;>DEE1kwB0&r z5m+HA2T=D~x<&1R~V{f*nB=?I2tww|XzN*<&6 zbPsrV8KDOzkO75EI~!$INuTVaz-7XUV*$LD%mRK*R$6$hH^_Cr4|(hSh=!M4n+ff# z@aM@Xshx(>NPz#U*mnkW9FbiE3^cTSpm>V@&(ENKSP$xGe*j=TxhznU4Ke;WKpRZr zDU>>(f#vYgkyOfr()cgdRAYdY%okea#mT>Q`j)%AKJ_}FDx0lj&ZA?rLAPd`|T@|kb2e4w;M(0)DkI7itfGo;l zT0~03w>m|tzICJuD=BKoB$vj`lzQo?^CxsPJ~wG69l+8l-R1btfG7>@KF-BXW&je% zhPqK88n(XI8U;PfT3*^NpF)ehCMOCeWzZcbwmmikbc6+x1r=EUkXr)Rop`5VU$8A6 zv-AnmT5_VFVsabcN@l?F=%GexYQ3y7>&DV)wVA{&qN5|iRcZSP_@P6d?kF-udDJLm z=682@N4^DLXh{0fYv_1={eB%iJ?#9p)&>iI`Wa70XZmm2MQ5K&b!Rx`w{JtOP6$ye zza_f%Mz>D4@-EE>+9C%e{^brPFoi~aO){pT5zBRvZL}z>*(|&m>D5ARz#D1m9g~eC z!B}bxxPs9Y<4>|U9jXXhu}`YAb@%isl@90)u1cZgcyh^GbI}n5_khfD(6ti(jmq2StARf17MXk$aNO_H3s0>5AG$qNO`DnDIuFI$>qx~ z7u)|HZ)~3j1vVGjTY5{d?^)tH#4t0PIBFd1=12Wi2>O?r?Z~Ko$xL-*aj4zQT~IB_ zqhNO?I=9zF-LkXVt*(fw5&fi#gf%r&+X+WrJuXi!o0S3N~Dxk(+C6tA^%C z*AN&v%OCVM={_2fo*#|K7xrD8k0=BN&NE(O5S)>Lhrf{u^V|6h@erC+Pe-#(TZg~K z*vpmYm!c`M9m-H$mgCJo(qm)G2blhPAgMZ|0%cY@h zwTtEX2Q-h50W*23T+K2H=gZ1!a6+@X1+(_-{BohMD?D7O`&;g}+7-(DHJkK|Zi+lc zrX_=G$c#mshrlAT^jm|p|K$Q)0&SOw*%#oi0LE4sCZr6%otchJ!A36p*0xxfTt1-5 zq|FL{y6^Rb%EH1Tdg<@PbnAWg2m@R?eJXJ2^sZN~haXizHrQ*gd{1O(D6FwurbP_} zUDlZLPnfb{6`GJdryaXNm3}zTs(7{|>LHeTWwI|j+ggS^E~^G3YJT#Z=!#1W;iXQ; z@aASh?Lv8-4Y5_a(T==XqbdbrtX`XQ7@Lo^n#|_y(d^;h-_@QU1U^Y3GOp6{o}9ap ziQx6D0=SYO4>S{fY*2w<##UflfGr@iHKXz}HKjO*!>`Yw!XUsfZp5HLN2^hAfeCL3 zG+-2y@k|_{A3g9I90#H#$3msq0xF0A#eqrXvFZ2X=d-$JUIPaT~ zN~Bfi9-S4sAR>;vaMb613p6RWjEoLWD>MXDf6Hx0M-$#rIGtL^%%7fG2EN*AqFLsB zuexEKVbF1nk&h#SCjs?LGo1p7zR_?zg{_MVmcP>+u$DUpAma7>xV*H`Vd}ut82uxG zt|CNL|L?A_NCXj+3B{$BJ)c<;Z{d?xRs7-3N7_z+vD)_Od-Y)XAC4sHiD-(ffT#en zQ%TqbL4*kzyoJq?nMr2nQ_Z*_L5D98Lq|v00^aQvdm!7l;R$g`MXbJD^&P!ddX1yD zeS=BG=GNByyH&9ndv+&oIYHA7)^m6V`@oY>=7p2vx#I_|q8tZ3(|5G}X z>4r1_{GTrD6b-(Ww)gw1OGD;soPIij$pP^#Rvn9yvTDU*7{$EhEK`d;6=*OA0W!>O zA0`mE)5sBqoD)?nIjdVw3TgCxra|K3qTVbskQhpq3V{ zY)^elGj_aXBFwX85)SOOP66`AmKyKz@k%?Y0%NRH9(xoZPY9~C_;)hB$D%k_MUeRB zbudA|_iyQkT9ZCZhbAuP5m3@0#_D&t8;+$i54d97E5SjGrZ5cxs`q>Bq;>U5%CZzN z$n+X=^VFM8Y$Re(;(NLgiQiJbsia*@b_1JorgMcLm9mSEdWCV|7;`2+K_ffZ+iy0y zCrGiACPuHNF8=Ay!oZA<@bcN3BP^YpIO`79k) zzveuMc?04+0!Rd8D1nSoMxURM7swbXDFidHXjyUC%uuX9<5|_{!z|Y-^Rt_10Zaxd zi$kJA(#$#Yvg7S-f6Up9xP{V$y&vwa`Zz?CLB*yAc5o$s2*@Q%mxq*->VBAsYys`` zg>0H32a{!^ya@#!n1D~n97pa)++xe4YS7T33X*;uZJ%^NxR9k`&r>EX+JeCDiS?R! z>L8YZ*uZFEBid5YC`WtCtXn!Il^8z=^bZO_OH6Dhd<$!1;Y>>&StAmw>9s2=*F2~v zA&KG~@w%R`BUyP=&BaBE2Fd(VH-i&TwY6l_K8eMatuZFDLtm8zi-2IfNA`zjYBMt6 z04y**!1B_)-Qf>UZV7QK!w2Vc{`WU>Wx+=9!3`76KiHYkp%FAv&s__}e;5iWOZZ2m zia5}(brs{vjVwkE!Eys!F2LQY{qoh+(dqLzONOsEoGTer{W(*m$D1kOvu=E161hCs zpM`>_Y*i#u2;N&#H9%~Y`Hh-aCPO?ha}UIvEe%ZUYl|55kPeyVp8uIA_-kkWhTmZI z7xQ2u3thbr>G(-aVw6Rkx@Lujp)~6XpQQq8iBQ>af>uK9Bp~rtVrHx-i?2i zBU)9s9v$xY=M1;D&6#7^Ih5x>#_N|Z{s9MCiMf3Po_}f}Sk|S=*MM6rzV&o#jE>Lm z@(RRPt6vOfk2m)zmkXyTg{{g!m6SRC&_E*%R6)6sYAXd9IMcExpHh|yOrWBqb%NKi zKVme~j7(znk;q6jR+4iw?0T~x`@G&^;S&&uT@F&8sOgf{nOR2Kt}sf6#832PFX$Fz z={<3;CZN@N+*|+1-|vhR1hSp_Rsouf4#n6waG#te9+}U;{G2fyc`^Lo{gGq+LN7iA z%K>2b%H>hfy6G%LsQ#PSI89Exip`MN0+NawZ(%5!ewf|`@g-Rh zCs`tzw^vVy*<2|qKwl>Q1IzHo*&E!G~~+394sGoj>dUcwlXOB^Za0D(y+STMO9yi>oX=zyTo|4DXSNc!@nlJ2z0t|=s|VZfv2EhBphmxW8b+rQ0Wl$b0xs}~02w_+b($73mFdtrFYZ^EIwQ6rvd0eDcg zLlf+FeF_R;!6Y{MLvC=rm6Hy`B6Mdo|AulEjowT)K}jE9i_MlaDsXrMW!p;Ig^+k~ z%%AHaN$k)q?YFpm(5N3(v{$v{b8oD;P@?mORZpGCsOV-w-5?MRLOJ^Dk?xdh&9w0P=4KeoAG7i{IPTj~=m~i@l zZrVR-PFA{*k((g@dwx_b7*Y%44M_Nsw3&E@Df86b<$p7teMv!qMT~7uur2-m9qmQ2 zq`JNc#Js__b6?b?d-uJ*rGZ}L6$4&;ccTNri(aFw;c#iVew#dJT}y;PMe2TgA)ILn z*tTVex>g{8Y#fQNl1@X3A8Bvj?*P&296L@P&i_=?E<+hAjEhQ}1aD|)_(5rbvII8~ zcXDmlHRyl1rCZ#obU3he|I5+fcFs+1wF>)xK*fj7Ct77jJ&}$D1xZ4|{GLA^F5%rt z?|uPEc!Ftd^Cw^M@#+1sFxqzqKInf25F>znig43)#se>ll32!9^qo3Ys0fjxI+|UR zNo0-N1euGFpS12PKy`@M@uOJCi?9!066I=ck>Rj3VHc#Wmm-(*dq^;alGia!QSSJR zhM-odP3tIUhHpHsopzT`98624!$*}X69Rt+pa2P?z;I|p#4dmSOddESOz0S)^}d`h zOHC8d$pX5NBU!)_W=DD9zr3J}v7;=;CyTTi>7omw8I>9@E8QcP*l!o5Rm6Dw2Xp<@ zmAI%FOQVyL5|TArdu&e=dO0T!tSmJbZ5R2(ym%Or{9L9;FlS4C4!q8rr)dag zgjekqQ;b?w%0D&r4P3Om2)zdK^qHRC0G}0ce=HJHZSsNEzsLcv>V*S1kZ!0*QC|+u zL~BA+RKJQa6+~KQr4!QFB8!ujhz4E=D97ZvYCLmX$}`Gy*Kk<@#<>Rk}SFgVA|F6Qb_N!aklW~JtZhJuS5&QmZb!w>_$TOu`@HK(wU%uskSM7?c3!)v z`01R;uRsT7rxOz^(1NP;s>55YMe(ie+u!}-BtRdq&M12qOi7)~4q)~@uyW&k^!9+=IbsR& zS>))`#hi*wgju&N$|@>|+SN0kj;HW)e^Ed8FU+e!@r-cbN+`c~8pzCp+&)F!VF3K6 z|7{euiwAP7VR{XUrfG9>R0XA^q)c@X^9R-OFk#4kRsCH=y0sj@FCql44*btgGz0#x zPPFNtV77rpx@5bRzikf-VlHO4|30CdR8_L#fVNjpP6c+yH>^DW(TX<70N@`JUVz`naamw)`1rRc;K98cOqRKW+B z6R1}lnM!5uJ0dV#109*z2pn$-@Jvou zHMy_=eVpzbpEo!nBBI20=1SFj{|fo2tz4Bj=o%Hz&w#qdW&a{Cg-UKk;W51v*kSW1BR4tM1=ot@Mx%1h`I8;x)yqRVsf@md zqwKM*Em+4L<_%RA0TFLWw2G|4Bk%t`$p8C!p`+!Z>%jk1gm2oxn{|A1}+*+s^Rkd^}gO{)=azX&06V3{4l5VA5B-3%k!q+U*Qbo|HrAvSZ880|D3|-7e z>$lBLdCk{bouu?4DZj^+IyI{Os7=!${92QI@cI#wTqpYNUt>1@~9PvIq}fu z*$U$hf324g!3k-bnwnn8&*$(JG|b6DP1Lc7O$BBuS)QIDy2-Y90Pt|Ai#n@AC?i1O z8=-%I*7X0W{_Ha#%6sM+x zSEG#6wH=oxCgj)c@3#1l@A7B3;DK^PtmwPM`G5Tn;txiTH_d+zUro^0@>cT2VJcUs znc1?TP`B56;%~F<76hl8mQeTxk!LWE$1x#pW z6v>)SY_|G@^4(JS7cM}udmxL8goE-}94~oeXXmOK5sy|>c-tGmoWG=zIFmO##*#s+ zR?+L|rh^np&g@UrwjeQdyOTli#A%Ndw`s)&!I^s&CL!`UQNV7aaQZAH0-nv&<$5!2 z=j{!@fOxbxHzn2B7~d-Wa6S9PNSVqlql?9c!MD_FkBsN9TLopN^O*Ns+!DaVQxz{ z&$#!VRH_$?wJPga6a#!T5J2VrD&rcN(RkhiBFW- zJ@d2hXyprWp1L$N)s=$63Lg?qUg>uVET#QHoBI5qRI0@xI+CB+i&LiQqTc|ZvumbG z)Wp>F{}7y^m`cf`I+?7IVrUV)mBlf=J}IJ1sP@R}S@QseP7aZcjm>Hrms%ZHP+A)4 zC=I~cNMOK+)-L5E7hpxt3PJkQak6N4vn%y-^LlRw$X(ezuW~o|T!{f#d%*-*%usZ} zS1JiE9CH}fM#OZ87+~^I*vKfqrmk|)Cl_`M#$*+B11l~rj?}j&$2@_7*JbP@??Cx* zl1v}`dfD7?xT)c@^$riB7c|{!LjQmOv5{J?yZdv}jC=;p{u#FGe50*!!$>y!9|gH8 zGtCd=ON-?tv&w4nkb(Oe0LMy*9K-AfS#Z;R6lbjSBTMk<3I)z_u=nfK*dms~czV$y zTcEzUFuZhl_^3&QV$0y`een)3bANexiLy|^VCrL>I8LhrI&KvG=~c@(s^;}czNeDz zLKa=U%-r1EY`Ko&xRdk3W-X#um=6|3lWb}d=u_mKa5oGqbUDi%iY_g!&=SrBOrFyy zL5PEg)kR5DM#o^6&e}I_uJc1dKTzWq#0yaX30h81z@MUBVCHS4)k&r~;>GS5gU{o( zyQ=ob77lLsSOzC5mmMjec2nY+c487mCMN!9a*`Sw657#eqB82j^ z^3|p@>`F?i+2M-R+w<9Kisn~|ALO5(;=}uLe+R^~*o9gt$zL9qe#GPfKo12EtTc1n zpYp!WEMbHIopEA8j*iEU=OpdSV_rJ=RFh5tNI=F8vp1`-M3JMdZ_1YbeWE3my*kYy1+N1gi1RoXlv8$pG;q0a=8wA4WM$~AC-`*$W)mlXwpL48{VZH9+*XNZg{F3F?bSuJT;(9_XWU7 zS+Jxwpg#i?48npbRt52Iv_C3K3w^w*l|Dh^Q!nM_tqD2ZX&iJ`uPLi>F&L9_mHui; ze<4kRA53Aw%1CWOMJ?TEWv}`(u>F$F?+Q>W=FC?x$^rQ~&8jAVxGd520CCjyN|_0l z$YG_P>Im=Q)rT8PL6_7WNx<8b*;o|+HjhgT=yMwM2vBs>@8aH>E}H&j3|o(?qA9KP z1{9Pj{oQs|Zw_NoeR#7~4c5xbFaED_AlPj$0WY2^!f%m_(fHG})@92Zko+0wq&hv? zB41T2QS(Oa*#-F5sI`n#dHmziEDvWtc^60^fKU8;ee%N>tD+(gok4wSt0EIOxbF`W zMh<9To|DU%uj{PFYN4(rsOy}2aR2XFU42yU53(&1|9$m99g6-Ii@-#i=K4dBu6U|& zg-xiBEn<|-$QVD4{F=%EsVe=0U|k`iPYAcw$+}vtBDR4!p3}NNr$nK^y8h=Oizm>r z)W<^g`>EF!-s)=6;P%)(j+jubFLvByWp@8^qkXb7I-ziALY|44ALh(hRn%0|VCV4Y z*(ph3vsgtiks}bZFm2O!^O%CMMG^u@OO@~FXw4qc-E6lb%H6YPSnx&e^f>ygnau}j zrO7J7;b0=nKJaw0VDwObH}5O23|F9HODY=b#%;NV-Q5tXBOwda|95n#|7X|1YKz%= zWk&v08Pg2F9~W-^D4*it-yuIyyvFZ=XgRS+g!FFRe=bLKyja25?kis>wHo zK3w5f!Vdyn48?u_$5$yE_{!&44wxe**LLdRjnTdO(A)#t@DR?RQC;YU7iVKGEL_(~En`2d?B{F!1g zpdhRy$cw_tca9^i5H9w4nD6Co@w=^~BL?1B_(Fs<43Lot+S{`rywm7|kG8~qYs=zs z^3Uv)S=Lf?Q(hUo5%pzYVnUALyN1nN&(yc*q95t2s|!T5&9#w;GgMTPdGC7fD{K4} z=knf3O_Wy$%Ak_pd@fVj+THT=g+t$DHA4ZY1OrD_e^I!+J;n5rpWRNURY+qceAw`S zf{Y{hZg%o5OGtU2bf)p@Vs3%>KC!Lq4SuHA^{L}t+GF*h7vb>c50-FAz^z?FOSDxa+(BBJ~bXmIPm=*~ff*`AMVaCcNRW{>=5bKbIszHK}>? z=Yks_M$NeJts;n|tSkBD-@qLaCKnix(I$#gQ}JJEM-IGU&i8XYC}?N(!XHY`_!#{U z?Rvbj9o`-PPg_?RRaLZg0g;mK2I(%9?vRd4cSs3>0sD{{gS3*;ARvtb0-|&) zA)S8vT=b3ajq&`449-1wpLJHwIoEv?Uyy`3*-fBb!(gYo;drFaf0CAPWg$z`c%9qD zCsY=|W<9+hv6VYG%G!h)Zp0mOUK{R*IB@_ya;7Zr--AIx?fj`qK&_r!)b7ggc5zM%!g#}si z;(XSz+c43kPHnT%eZpH4nL1mom0JLrAjNfuqld>!Rz9*#fj)@;8ZeWzCmPP_*wzI- zImob&ww3v$A1C^O(hf$>WZR^4FaR&2tMVKY=3{9{0wMvbdVG61b{}XflKL+ApYF^G zysYhS9ymWx7rh?!8yJz=Fx6Oq=^WDTmB3K)U6-Jgv!?0!`YRPOI8+k!eW{^|FZFgu zKHTprppAXnc}0X%F8=A!{@k5-&&hA8?x)q2SxDrr3FKpit$D-2xypHin#mj(r5S;0 z_cBR1<3*)Gl%MCl6nsJqbbT>}Ce7v@^^VmqoIB6M(L|3Yv{+cVh-0X^tIW8A z#g81F`w{`F^p+6`$)^gT#J|i`ag@8VKFgtJS6*QB9Pp_{@7ZFLzqbog>ss?K%Opm(cE1Bb(vh|? z5<0U{xL@G~ekF~R=LP(y5)Q=K!_jOBGlwX0IaQ7F_M9_gVLS-1p|?9F_u+@Eb+2-9 zPK~^J*LZ$g!EuHXPYhNpA;o<#N@74J#n1cMqx(%z-S2{P#9-$E}pmsuYciQRME+~0MU%%d1FE5QXq;)RJ! znF&VhZMcYi8yk=7Rdg_7s^ArbHuM0rd7XSI;k^J2r1!je_yo1*uHKgEuK79DmNND` zMDEekr&`tZ@4niX8tUtZLzLb9?m(}Th3zAcQo!c3)pezEEQbhCvFB%<6>@h(g`T8T z+f${cg(rb`L4CJ1%);yB(Vvx1T`|cVl*#wqhFhb9WSY*(lvP;n1!br-PCi9i5tJ4d zh}A&&9g?bS0pOzIkpZA94b%Vabo+0saLK8n6Q6v2rGl9qaLc+_GP@JB4SPl%GEI~o zJUPtdPVOP}sZ-fV0ylUo<{W=z`!yUBstkH@I)iVr;r&Vw9+jRKnS*7B$hAyr56XLx zahG17H`8p8dxO&o3tQovou0q47uxyJ8d*()t=wyTIi{JswHEz-!z%SXVsi{-gzfrp zcd|@aT(i#yCqam8hB@;N^~FebUoR*bUQYAOL7;ev1I#S%i(eRD&g(Y)#=NOccJUdJ z=j;U#**FKbCr@XwA0Qym5Gu+_X*U=n$fT+vw`zg4m=qRncG~?E&-`n#*7)s%U%%MJ z$dLfNwMPrrL%6}6P=#0T8dvQu^XeCE{3itA7 z78YwO5nfe`mG|kbuI0Q@7nx4Hog2W(bd3CSYa%`)^z*~JfZ_ww+u<=+Xd2Eqhn)e) z$HF&QOWP}U3O1$F@$~={p5E^qT|hmH(3%ti z@vFC9a4AF`4=$LiGVjz@C*g3D;)d)3U`~0|#Dws-P$b}^!F=)e&(`VcO!NrIX`PuDr*i^UY7ee1UVSl9Qx$M6LeVtoXA z%xkfkGFvVhMf0@X>TVo+6(4Da5i^JiM#8vyEXZ`?K*B;{-yunfjFyjj+mVLoa%+^+d zO^WR@8^Vs*Qs-@q0>0;n0>mRwzxLES!4zEpsyzTWhywx#l^-pQ17djxvK9K6O@uKX zL`4?f9eFUF0H#+~HeCa~5Waxusm)^^AY-7o$8GIV(D*R5(0*n(qcl~&F=}NcT$Rw; z3W9t~iMS_aNitWOMq4VUK2njEF4cKk&-<~LxpQ_(cdBNwuVX|(Noh$1Q;WNV>_lDa zA^w5)+6L<p?}WFEN8+l-LNJ(hFY8v?rqJL^lBAV1t~>XjYCoD z=hfofyrC1@1t4wS#TXtGsq|^z4W0-e(1Whufe`^U9y|bjwwcC#&_8oa{%1Wim6D0*Gnn163>FxjbBq#QHo>MmS6(X{Ww;p z2lw%BeAZtTS>BqqU)k`9R3OYjSTK&=Bf+2FSSi`yAxA|^)I6L)`Bfmw?M*why@SwS zG8XD=Bs1dPf=oq4;%Evg>A@)Kq5⩔^xHfNsbLg1 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 JN@?@J{{vRO5#s;= literal 93001 zcmZ_0by$_(x;2alNGY&LLApy=fOL0vH;WPk2|Fmzo5|t?s%WADmCToz zsHlEXQBfrp>mQy!lJ>(fMI!qDf2$Oy5D*|aDX>+CFMs^+ z6-G!AZES4%hK9UH1C-5>P*9HWA&V)Y$guzI0S})M_bX4du(0q`hT#Q=gm5zbFJ}0+ zZMFzLZfsc4L0#UE5=8v(Z)}PbhHVN7AbkA)vM3SaBRVLi8683F|7(Hdu9a8+kKNj1!<0yd2f4gLEYYdxiFnS5O-}yTRxK^HRjWkX{dc;X=>0~||2R!QJsi`_q0&Ul zW}=SX1ZMgW!*kpTG`Q z+Jj>=gDn4t9m{-r0aweFretSV?M|5>Pu*dR zdd`XBg#VFW@P(MxUwl?n$Wez!jnbV{jNPU}6i zNUSU@lG@q?&d$!F_vHn@R#zXHn3y0TA?d=4vrYw9Cfg`dBdjr=7oIn`SBz zc-^p5n=&9Jcd^Ge>gtx^FqpImeo@JM>xxdz$%%`Mj2sGwe=H~{n1aowM{UT<%3^OY zDOrq6#?~)+U`&@AjVBDUVE)f#ogbEc=5fP9ZOZbnY+|#nek4xTQ>UfxAGE8DTYX5+ zmps|NfB(*vC_CqJd3iZg??5gtE?!EuHC})fM>J--Vf^1tWr~e7W6c?wt*a<4`Uoti ziXchWLHx1Ipq?0#2rQo%{jKyVl$I7*=`;6a?I!`ZKa#q-$uy8omb0;1F=fw65;;9VzgDIfokDZuTCB9F2e|3b;ZpPy8UGcd?2izwP9DV{%qpkxew2%&L!;LoNMH^T3qV0@9G!T(S6vjz9_7IOV5-kj zMujRB#?65XI9Ng_(PqpaRFR`jcc(D|yMX7upo03`9LjvmV_0I?wjRz98m%x9aoHMq zG+$@mS&-=ymg#ea=Hug2tgm1v!Ij&ri5&mL`ajO7=Ysm%B^aXbRWrirqBfra?_YhUJtf);e2h|9*x0nx{#E~I zRxcBoe$W-0o(Qi8j6lS=xW1nVla5NOw*tc}D2>Eb>%w2?=CQjqbQ2je;EMNaEtu zbZ>60)y;OLP~iD=T*b_qw&P!(Ho0v32R|iAOwM4kTxf8TpkP1I?GEUV8QaFWvOau& zabT8>x!oS{#4?7cyO-wcdXkAxdw&8m^vx8@e(%9!zIZhPnMqu+f0l}|e< z+JrybLjo{m@fY-KZG+w}HksYu-Cpcf4_AUB0+MNot;yM}W>C@-9!f+-Sn^0=xoS}< zwU>)fuFvgNQ?s%7k=jpmDvmIotNTO^T6GneDr9KQ0(CJvFYd(zgAKv0XAnC6!C^1? z`cHwsnv05O+>)saiN@0Pgh`*Yy!8%|{_XcDGJf85x|D~FteN{K+vD!*kvyUzf|l0S z7{Ug}zlOBxd9Uq?B?fVmF@gUoTB+(3ng1oDLO#w{;ct-tId(jT7PI)xjgXXt9RU((pWhHWM3F?S#fn01<(E3>A;c~`}6fW_>e}ABBr#6 z_U>2{z2Gn7Z1Lxvp^=}yCTfKZmU=uNRc7G?sYRFCbjl$<Fbmkhn-W#>P=(gPb z)p8(=fE$N+qtkV7Ms0F>aS`}RJMa}a@RcuIC1>&=YP;oQ#&BBTxb*)02BWnYOj5)+QlOxWr)nE? zznH}yV0t4Zb3x{PqIR-1D$%ee_EE$#^z8gxN9%b$_ouHXb5-Ucj@}!s_jkDENhg06 z4f@`fz1J{c3%}VIR6Sy5n*L=AS)VAR;o6wyy&0{(`R9}FO#|`P<;32YTY+tWWqQ^$6LqKyMcii znci%-Z@djHMyEG-Z1kA@MrV%mX1T>1u~Q|#cgq4^!sEezD*mymtb|CDF~lXucc&;O zPEv2!Uh6NVbr>-+YTk4WE`6!wFdK{Hd$C6+`S>enZNuZZ#`#S5(THr*Wz1X9_j|fR zDgKsb;H2qsvJetm)Lf`4Tyh=WDl30_+1eccxP7WV$$w^T*|>V2QIfk4ElgqF{pRAZ zP^W^d>HYrB272sWvf;AymEzo4d`Xf}W~7f~E;;&-;V&;-UDOlor06*fKQJX9C)<4M z8RRC3BeJS43_pocfW;GBXZqgZD8pFvYx?pn%Vb|xMJ`E2hbx!-3YLxg{p;6Sev)yA z47oSW0{P@)IL`CuaL|zGPrfS{N|(P)lp+ZAFM>V6XcWhH26b0{P%_`=_i!c~?+a#! zR?^5Y+Aw@ORaL)@@83CoAmVoukj{yh$Df}C*VC&J*Ux4C_~CwcWVwoj#RG~dyD%aY z3cUbnU^GiC0Mb7q9FvjpjGUZ&av)3~jLO?nPMDukugQyU^J@;x!pZ)t^^Dl~c$%Gg z*-Od*b`jq@!6mO_C8hr8F)wFt5}9eZ_U-1*CMsNve{_2mBx*fgv3#rbI3nAe-6eBQ z`0CP`j-n?hTb}u{a#VL1X1vH8cXDc zg4dm`re}HhSoBOB$R}^`3NMiQxTd9dj~ljw9;EtzrtQ7+VjW z9Uy=^Q3{Y~<-9c>8hP{0aSN&V;u0ixoyS#%5q^lM@lr5Vm}G4LP2-xwOr@ACopIAF zHFU7DK$aG|cWJjlud1pzEgzngob(3Qb2xlI0p?NkZ)*=*=Z;IqkGwnD_#y7YeN?d> z64&B=U3_Ownb{Rx&2*vXiOMSl8-dmYVGwpWn|!8xN%H7Q6_c2&FKm;CKREx?Ik1a? z`4JtdT%NjiJoNIS;oMfCq{}eS^MZ2X@X~AR2V;{rw2w~u@v~~9RiOj5Sktm zhwqd$!CnXLPhO37a=;fNB{a-PlNHO2KiP#!^TR2%`4eSjit$x`R1}WlWA(30sQRt&g$D(u=Fd0Dz($*#X=}AA`GhmO9MSd!8L6`v5&tN{LiZWt-2(c19p-A# z;;%zPeZoZwzr=K%;nB)sUWo5SCCngi{ zB?E&4q!<%BxHAOn$>dvZXX@aXa@=U+Na9zq2{d6xrh>O8@bvEPDTFD!4 zU;H}B5yHGkh(2A>W?$qB~Hk74nM6gAjI)}*f-uTd{*a2D;t@PJUoV!3fkA` zyVZsE-HiI;3&fY_=vb{Vj~j&~+^3%P_a?0-I>Ta%ynM&iJsUF-8QG^0a-W%EEN{QU zm$hUh_I3HyZgFY5Q)Re20UAQCRZrETJYp05LtUJU)oJZjUWRVd zCUy1w81Bs~6R5gv9q4eox|7FeFSFF3WZb$}PV4Bseuh4&Jf~S6xLuaoUZI(fXI(Z( z6I|VQ_%6cF3Czg3c8~yw@t7QDaYnu+?!3l~_4pX^+PlWwW`5TlB+ed53w!Dv+7|hQ zT}lESbxYx@U)XT9YAYogNf`qpO3EWDY7ug=r?wpf$G>pw-0UuqgJeZKh{cSJQ5oKpscq18$h#g_*Gmp+<6YMNj0mdSd5cu~~MjIO`Ii73; z&bPDG!<|XhSCudHORw+^1l%MoO!)*auL-y+G#_=s{-{e@(?Rh*#yl}Ya)|_8TpieM zgjC~`t-OcfJ7}En_Ucpuc%){1!Au5Kolfz~tT^0C<9a_%5C7TdXl#uhN$H5wG%wP0 zkBEMQ@a_Z`52aE*N!SRThJT3o=0fNh6Pw#lEaz^UWq@rv{!8RcB@BGXKZFR}iX z$a<29s_Ca=(~KuM%!}KCjw^nuD$Op{@qQam)!3$*7@s(t)bV(D0;?Fa#W=?&1^tP9 zyWB!*-V@Qj(D+VEB!$w7t%xSrp(xH&YXEsAlm46OZnuK_+i`A1`%xq;?Z&5f_a=#_ z*SYkSzxG;n=k6Xosw8RrfcSif9(r;rT+J2XmjMzPH9=i}jK(v6<7N-EM$|2?W03qK z%{qh8Jj3QLM?k!v&7Pb}S2e$#?JR}HES-)WMPi3D=f^K=1$MEEr--mVHUFE``&AY* zx4Nh_DUn%m&hR_s96fX|A(Hvi!EQzCr(QBoOc!y9A-aFww>gbyKsmiVf||bae&>~- z8Z{*Dk3+a7BwcMoDxWW9P0u;C4=vP8_F$O#ur+du)^2=FSeTlZYE&uk`D4&SK0@dSW zEBnfmuI^a^1(YSRB{d;viKKol+g1yE^>@f-!SLGeXFQ}k8+&$nzkgAxXK!RF!WbIA z9q2~*2?N9C?xhjMKej*Hn*~#;JP!N;&8d02sIO%nw$G>tD@1SY45)6lyUuZj<&X-z zH=V1oX>i^Qiyn+uo|l%CNL`NDdk0ZTH@k}TZK=xPEQX)TSH&KVbOWmBk$9^27`DNaB}ouL{V{@BqGX3JJSJ_+!gf zC1_>YExEnD-Jw-pW!{U9)B~C&g#L9I;dF>nd2`xixJ5xf$LY=_Zh3y0Zk4|rW`7RT zRR4eGductI;1Z6F@a-=f%Oy%6rgZDy8ht;VGH|~+>`m#4wh?S3r%D+wIpf{6%$#Hk zr^yo}TJ}1AT5jAN28PQ3W!Qq}-{#_3IVL%Vgs#f+NF*;u6|O7p!tkWE`;P35-Gie8 z(RK7qXs#9~(&dF;c?#xoBi4tYpx17mmR{pIa%w*@8^ey}FdI>ijwAf;9u5>FMSn*0 zytBW{Y?>@Yg6{14b#_HfYO_x&_a7HN`wo&rbK3E2e;Azm?E-`0dd}Cc6I()gZwxh+ zs$60atrh8}jbSvw&AL%{pJXxnmwRZWVX$oNfA%R*Et>8vZ4c?Bn*Qw2@&n{zX{NKZ z1*{lEszMH=UCWnGq$9diEpZsx8RCf0{rV)>5&31>(&aFlQ-i$`-d!SiLDpryp-n0D zO1j8@bf!}^=2W1DnD@sshQ$jcUi*MbtPT^RgT}7L6e7a2>oG6&-*U*u5Y=%QMG?O$ zmc^%o##a@C=W(brh@d|_FIWz9a~X#$24E-gVqo^ObkualJ9{*^`M5y=*(-7Vcju++f&yoILQv(GAi$njCtN6PSU= ztVe9r9u*!gQENMC(Q50w%!UD9Ei~>%wuW>f(*$=T=v(zAHS3cSi84ZRO9ie8)RMa# z+Zf(A_1|JMQU@L7RvQ0uHU)s*9qB3#02)M}KcIUkGPE*gYZWt|bY1JRntD?krMS zj7Im))NL|c4l@NKg!};rn*?=K;??VPvKgaudAFx$>BbC9A`EV%{3LtU78a6$U z5)0nvi{dXM1_u?hzlK1Dv^?;W(p6xEF8@S$f^MaHuj=P6B6d>*<#c{zk18P{p&$_# z-!OveRHZ){C132Ed#sw1U1FUk9!&XA(B!F^d+@M+%y|PBr1r0c$?|5+2fdcri7<~Ts(gsVr>p~ zzYV%8N>b)BkFQv!FUkGn=*yN~*c>OH-o}1u=4k%M_EIutkN}=%QiSnw0V$`CcgsDX z@YRj*wkSYZ`0aqtXY+SGQ&}nZqc)jp<+T5NPsO>ZN2M=-5Me*{M7Xw%qMb6aHQo6)fmIEK&&h1JLgLLY$vG|(K8t?evE#%7Oyt`G3Y=-2TgF|YlSr6 zyynf7KfO#jIXTt9h@PBGT0@wtnc>Ti_UkD8jbJ-?HEXmqq|TI^ct`5ttJU1&@qbC4V+>u4e`VH{D9hgte%o4g@<(_Rlv@XH~@e;h)1zeoLn1p}>s;bWL* z*tZxWkD3^~lo{(d|JXC{!7CpdI87Xpeh#bCOFC$BS9F7>;aDV(WK!Ep{-T*+;28{o z3lENA7>EF7B%FiyU-0KOlDkGShwS9Kgg*=KTRiwj&42p`O>kHKTI}2JlubzQN9DS? zCF!7&lpD{$A*@h=yaSd{gyB(|4%d%ny5=c>C0t5t_85OvKTn{Uzz7C32QEG>AK&u_ zRxN0Cbu}m5CXS<+nzcC1pES7(cu4zZ-i7LSN~UK;RFA{#L#1!e=B~-)XY=qLC4pv^ z=#kcg8)>5*~*$M<4%fBoS2 zLBP0QS2Q-wto>OyFAxCB@HH)sSTiijUORKB(1XwNHT{F%%dJd!MaV@MZ2j8UpkQXk z7#$sLVv+JVSP=vC5$dF%JP-PrL7g4^-&B+B%jZKqOV!p`5A?^YH&bm>Po}ocs3;;f8fDK3w$aL540)UTq#A*Dbvv@0uW1Ry3*+X;rw%$~l!zP4nj zIW{3-$V;Q98O$>@b?W(nK@utu=O*qx55$6|1SpP^S*{+Y)}RNz1`p?JHpKH)1$(#3 zjFiJXr0u2&=9Nx82S@U*Pb(!_7PG1PepH6stUC;UYpRT-Sf}Ds7(R0`M`mik7+S>U zK+^gHzP8dHAoi@F468Jiqfn@B_HQIe?q}$0hoE@1={-0R0pDrHyTmS46)IO5t4t*$ zuLQEiJz=oNHD*w|og%pYw$lXviZ0>Ewv@KRV`c{+#JYfXITE+@zUSse=BA8Z>>)P&9Dc)}s$R!q$_emi5NQt}AV&vn9IIRXny}Z8TQa9e=P_Zq2_)SU&HFOB$pv8X23u2?{ zP?t-(ZRo)@eKACVV+uT^hr1~YCpdUky?0GCNXV?J?;W4fL0=##7A%I7E9I3C-5Ng+ z;6Ke#Ym|3Qm$x%04JV9^cE6!$2`32x4tnGYN!M2yT(y8m6a<@BJ-j;aV!h}2TV|Sa z!$$wJ{rO$u?58B$S>i$H+8j#&H0!wM+^KS`66!9cK{0wnmucTN(o*OtL#kP>uQ$D0 zQR7H>-yDi713BC$T&^DeVm`ok?BfKVj770rV&~!fj}`zT5rVNmDi;C9z=tU|`jX0y zl~Uecj-HSKjgI#0#$$>O2{~lPu~v?dQD~pvc=z5fOXKfSvyu%P6PEP=R6#)jmuW+l zN=Jyhc;y}7kUsw~XKmGKcR9=?$<9&W zAt>`(-(S6m0w3dwyW*utDa^UXP{!D zvmAy2s@#|~^W8tY6!K=Ai~|9BTIuRx;YI`9(!GeKRS0Az8Wz4TT`8SuGT-4UBo<0e zOJl(%ipMTC@BP#vw0t^Wu0NFFwGYv+FDm#pG(yF&O5RF~W41bV?nQ2kL-}Hzr=)q% zeK={)c9$P6T@l1I4w?+~Qb7jl6$lbI*_Sx7ALY7bF_FJG{=iQ3GO;>+bjN%08NYnG zoM!!_w!O=Kwf$@zve{;5sf7dKWc$7sH%JsmHX~l@bWpAkLoabRS}5xCCLb|+qQdV9 zIP*Xb5%xe}%bXV`NWl!7opJVIeB)da7LPBqd=_?0*3!y!&9aGf3o9G|~MF{!pLc_q~hfTs;xw z1WfhG77<{kOP+kdigme&h5KoOgH4Y$BmDXwx>=4k^k)u~(7~O@vXoHmmqtNw^A>UC z_uR$PrJoL+GP9*wr;URM03dG5<_3^$BxmV%mB=ks0L6;u**}rLaNqtbxnM<&%fq)n z5pmHGYpf|eM`Pnbxxv$RepVBPFG;b!nTc`X{$1}-Yh$+O$lziL zxP`Xjjm}fE@Pzo`*(%u#2v!ikLgCixHX0k-Zp21j z+m@M;=N{}hYx zm7HH5|32(zu0W0Y?4*+Im+V!iV&$b9Je(LMp00IxaB#xFSL1~%FMy%4>!18CI3mJG-TaNa_?hTch^OcL;CuV1E{eUe@p0s>Ej+&rVoL)0lu*;E zgznF>5ru^e-`QVd!v5H6iMx1k3$aS+l6XvnpP)TMs~=-Fa}fMB=#KRSi!5Fe=5=)E zsM*+@Y9@a9TX`ZhUJbMm|u> zx`^KI|1g}bA@(@DefzI@3ZTC|6{bz_CT#S5wsz9*)S%It{$+v>di zwMGUO?O?9$IZFkNAj1Vgzoo~D%;7~o^k6XsWJ9FUpW!~gdr?W7dU9z*|B7N`1M?(Q}o9V zH=r3zL#-uTwF^qFPcb*y!AN?+m%gv`H4$# z7kg9lR<2BI*GPrGOFtbyKe3*kUb(T=vmuiTVe#3=sRFZhK|Ee=Xe7bW0{cK)nL|Lar(djsD zxX$S~lfk6@3SBUPDnT6fLfD0f?PM#;vXxc3c4xBE_R`kt@KDlj;aht?eQ-J@v~VYE zbl-AH(8_9DA$PcvUFi^A{_L0520uJ8?D>b6pio2@hH0Y1L1Pk07S#irDI9%$Z0fnl zqGm0JNj+b}`%d8!8ezOMJq6<^F>dKH}yyBQCnHX8nsN-zL?bZ3^zOz|CAdQ&?x}Zz|t#H*b{M%VdH!Sgng|YnY~o zHJZ(sH_D+kC8F%}J>HQe9sxm?cDjfAY1wLM)3+FusfJfUkoG&7+~90|i>D_fT#_2I z`$}{=6-gPs#J=P+QRD=-fgVr)um>6^#t}&bW8zHVr+2Z#icGGgI9XUQfgiFu0iBn} zwv|~G#RIZ|@#yMp${~rRbTc@~@ZYzgs}j=jy11G_`y-9F4CHFYQ~EK-l?$f6<9|ON z{$!@Ee80;ihIRF~eYiO+kkfO;o|>`sg&ye#?Q&zT>7C3e*h0v<)8UO&je8by%iUXu zxVVvLx`85FHS#r>tG@2opIbsCgoDGP+Gu)|WY72JK8{i^^{ns&XPX!NlwDdh2P8yZ&e;{JtM=Djl4lX@kFJ1Y( z>Pis&V%YqXHeJFl?vw7-E^NX<7t7)4i{O=L3a`6U-5(rKN!l%QRX}X?xNR_H)P8x3e5`##f$6c==j0N(|FQMn)t>QPRWb7ec}cKq zbD5#L)(`l#aOGW9Q-vy6UvVTAAM=)&kLVK5V6H$=q4$%5~giY$VbW@t& z7{y?UcWa!6Ehpr{q<`liM%`8F;%rn<^@@U(^mAeLdCb_}`T`vb3mR!34lLJQnIs}M zHXg$5ZN`Jc!+?UMS9%m5obmYyHhxp{@Q}2(uO2YD#wW<%`Uu@=t=dLBKb>p!ZAA|~ ziU!e>_3A-V^5sT4<#b-b@*64IS<;|MSY+!h+~!?@ZF5cOuQ-yuZ-yT^kfKX;Y#{3$ zm*KAs3mBi7@G_)vJ84xH5GLsHm@8V;>8cFWn!}krPj_hf%Oq$}BBy{rawNUsa(f%~ z_z)+(ZBZa^<5!NGYP4gkHvr-hUl3pd!Ds{+fh5G^V`4r6NihDl)H!p0G*MJdGx@;u z+b)3$Eb$N-{@i!dWd3*KEg7it(U(1yG46*cZ;8$)xip*hxs@u_sAg37-{~_{&mEM% z9!y)G%S|L0i67Z5$Pce_8TA^}yTSeL0=W^$oj#2(c|BG`48$W`dK#aUW5JlX_-&Y) zri*{QshNpSdRjpqja8;<i>mfKrCb8u8#NJ#W%lz|~3)f?1+96Xn7Hj{t zvFVpwxKkhD@gw1OXBNLh0xfjHeeWhe&Q9(Y2O96l{l4k@QwRoxpB02Yu{a~Ri0WPl zLO%=)3EXbZV(--DB5pk)2Oh0FRW|qJP3!>AtRGb65Bbq=*=jmA^P_KgKw`O_4L0%l z?|RoH^~>8wG7(*1Z;}KY0mk|*2X$+fRhIzlcrD5wT<5sjkrVh17T0jR?6xz37J%{; z@~4{6LAtlH##sFYQE{1azO3)1H#3UhG;TV-TQ{zd2drm8E}8QUztvBp2;XOf-TD5kyQPi*M*Ho<(bmwI|4`@)?F-6UyP2Wb?a^DW0f;I3e76ebmB7p@}Q=q@EqJm z6g3n$X?StmF<)F>+62SD@w0=%`&^?{{HV6X{X9U0t2$&xQhxT$>i5}Xk!ynyo4A(8 zChc*T3Cvf-NGLaWKZ&hGB|UWVd&?2-Fhcf~$RvEFdh&O;4fvGgXM3U#7d+KdYlb7>*w zt;s?)YB@e=j~B1H?9AoS8wZ0Tr9c$RwwF5PX2w*YgE{4A$kLmc!}pTsY*d&^pOdnIa_K zeSeqN+lh$zC0PyX=x?9J5H)+A_k1c1!JgZA$_z(8u2xI-d@P#nVxu%Y{+LX7b7j@i zJ8b2uykca~w>irx(t~xh>^BAT{=0YYqSIX^P>W9{1O)|Gew!#e3d`4Th8L_49+q`X zQZcrhOMCEpxb6mWW7YNgwO3HnaB1>JRylQ6Bwx(RJh;*5pX`uVS|(^uq%}U$Dt`$y z9xw2M*Gy=3#_Q6)&MTFGb$?#aBJqq$YyV__cyY6SUI|;wgv4kSe1@ETl_hAk$#ql; zXZjU!y+hKqFs@6QO&bB`c%Vd((GD10 zgYqcOQPAIUjMTix78E?yYEi{|ge-tZuwnlDhl~3KO8a<$1%BY({Ta3W<>L-Jr)r*T z=Y$ens^_R+D;VjtCMc-NRh0wiLm1KVNgBUuEC}4cXc&~bWRei zTt0tviW4mk)6JXt?)11NDTULT-RH&~%zXNq zZ$e}-=kjc^>V;{eeb+fsr=A5R)eA%J;kIS4kelx>_5@SVE1dC5t@!wUN?iEX`7kQW zwfO&HwcVln0JB-$uIVzFAEw}9>5ymRq$gt;FqT#+WRPN$Z}GU`!!F<{0gzciiiK+oAUo;e3XXSk`kaMBe+(`^j3173+cGbV!xiu5nU| zdU^AmaIznc!_$xTQBjWQx!%3Xh2}_uig$s|ogAo1jNI z&3`M|bAs?|#PbawPe3+IxqurJnE)F`i~A}Y5g(7oWk07mPbl46y}!_iYi4G4MF~Ye zI<7ogG?nD`A&AV(&=RloRtQ-c{PcHZ^O(!sLr#V39qbq{&-jMqT=*4fiL^AudtJo- zpxxg|t7BWtVz3eK+oI*4Qq=@yF4Z^jGh42?icm3Kw)yrJGJ7eGAGOmnqq(Y8WA;Ss z7q8L;onAZu4d?ZC0pD`WNA5RujK0(vHnaHO*Sca@^>_#6aTWyT&Z(TZ&*hhbbo|ml zT@Xs0^&C+hs4X}5e_MtJ{nePXoecUre#>g`hR$3Mm+^3abC+f=B}NYOoCccVQ$r~2 z!;k2;oEz2E2HPE(l8ab-U^qTSM%FfIi=(mr9!#Mo`T#U-$-GWfOWx;3HTIs&Rc`@f zqk4L@Gg$(3;~A>2xH!gi6JE-R7{wB`em6n86HCAruoL<2b%QK{xA7a+87SSS$QSa{ zyqsSNW|42?Z(@qOnA}HH9bh_$VBLnFwVJcf-{DND=KToLVy^b zUwa`Ahn?vkGyM6p(1Op_e1x(y<&Z_9m2hzeD6w?DZhx7geDm5k-8sclo!Je{&6w9t zIwX6-cS$dmlVkIMGEg3N18!CnY8J&#Qt5qnhXN`)@C`l?dbr@gowmnlzaMm9JZQ{u z@bQEGw%!}}u|Yo^S=eAG$uzsj!AgnoKhEbiWyzo577~mb`R%T)y7GRresrg#tM3Bl zgXNOL;U=t@%(#!vn{U=yjNh%28{%9x>dkz!peRpY`s7z>i&{2^ddbIAstik8f|B&| zC`+1&k@W}Z^fs&bhB&X5Tj#`6KUYv8i4f|`YC>0RwX7+O})9|a}q7$inp}&+p(1W`LYia}O;0~g_Uo$!Dw_S&@N1JBwGp@B4xd6V z9qYZ+^9WJk7#Y2PaY=HARz$EpJh?vIU*eZ%ECpYi==#UaTdgg$NWFfwrL$paZF)TM zM77207(x?VP*3hds__J?`5pFV|8(0DZNSRvcBH3=q87xYphw-mE7aZzYt3q?m(*=( zGal1cFt1CxBG}Nm*P?kLyes;f@r1_`=`?8FZOiD$l5j={fZCxLHs6v9c#$yzcY$j7 zKI4nM-5yPU3Yb`x!2Fv*&&+I(A=#7dWdj~*AdEHysdEd6uk`%87@oG>-<^wKuO6<3 zknf<76!~u@c5MlAKW~jJi<-&4UfIO;J6+E?7&(y8eZ^r&0sXm`8W4V8Dt+8CfNb=x zdc5ja0MnM>8Sxp*UiiU|l4||Xn~vq%=3m|x1txX;@R-jDDCGB_^^}JH7zO4n9*-R5 zPpVgGlw|@@cPADXt}?9Q$lcS%uM5cSwRCvRifjiIT}Bu${_H6T#wSjv;b zjd&1zz4xR+i9v|xe2|E7SL79<`ymGGCU&{Qyim?wet5q5hU=q>DDR!XcY^b?G~A33Nl`#7iP%xRwiP_= zcz8gJK-SkB6XACtTSMHS{YZE7X*Lpkw9%Wn%bSOM^36m%eT2WtJJmt4D*u5W+u81< zsn(=Na+n1skA0$XM(_cz4~UaVe>@B_kktDjW4~hFRJ_rt$kr(Nd9iz-ZG&q&p`Zw4 zus!w5KH;IEp;SfQ-rfrFq^#jxS$Uc92=UJ5nk8SBVT5Oc*>520M{p(HvtFbNq`++H zaY9FffHNtYp2k}R$Gf($oL#!^gay6|p8o0Y6vo z9@MQDkKBOf_B9!l+%Le}TTh9F;k}M$nc*46onb4QiE?HZa{zo+feEgr4O0pKS|=O9 zYEXxYCe(Vd77jrQEk}r@h$xqf=koTchcj8uCSV9hVT7n8cs@I0{57oG5x$Ps#Myo)EN18!aB*0_jd}clS6u zA`>+bNcAHKK)=sqtd)yZ;i}pmh3cyAm7fvwyYuP`kGwGQ6wZc|<|$KIvDL~(OiXB= z?9b~ohyxuge$m>_*UWM`O!2*y;#G#e0cpkQ3M2&9X*t2>?@ouAwHKcI*L}l7fl4irPrnSWm&*vhFRB8mm0|owdHZN$0DtlCpu|8iIH3nJ2Nr24GPkMqA(|iLCAR)4<0Wo@|AHedIdWGddLlmCoF%0U&KW=|I70*e{33tM% z{a5=q@tjEM5*US_i#d+y7di1JxSYtDez=&5+wtJbSh(`DvY+qEZ*utlH@SG z%cT;-a2)YKHF_bXczdS^Tj;o$ORx}}`BGNyT?g<7ic+uS$&S~AlVTUXia!hQfAVq! z5b<@=L%T+Ss^wp&V&(&RkRJqHUN*E!J$3)^!KS5WPe~T3=WO44Wq&i$&sj_nhS1=# zNj2BKRKzThKp;K13Nlg?H#tTxYQrnAx2@qDpnVfS?tah?Ffd4le;IOp&<->{U0T|x zMh3{7@MkpVWT4u-Q~ICJ4dD776BE3!@M7cl?|+`UwYmA!M8p>;w&wPF=%Fr_h{Rz~?x-IScOlgTjQ=C^;zea}dl1wPJqT(!3u#qofVPkX zPWhZS-4(p4HOi&06JYus2?Oje;M#)3-UJfxBV-`MIx^F6LwfK@RkxrYBtWYD;iBlY zCb<(ttbX5d!vm2+2)ts0s_^C*NK}FH*}S|b6kH7WSbPHo8l9+zt8G!)Yt-z(2gl+! zm|xEp*G0SPMX}P;Kk>B}2^gtFWj|Gj9L?*jT3@&VxDoBSE>Ya=NcQr zCW~~E$zez?As|MYIN`5n-x|^*GhJXH))V4xN<&K=N)GJ9B_(@5@j@r`V!z~v9 z{yoClzvV)y71Xcj7Mec1djHlq5D52XFvB9>vQ?v8TRjM*UoAP4#o>&Qfz8+S8rn%) zE5j_TEvb*C3I4QJJQsA;7H;|1*e)unis0q#T{cl*n(0;dNu^e%WF`@IK(zMvLCn+Y zvq*bkSLg4YJ0Bha4udi=he;ev1n8wlD3*|18XwJIE_wkBWaKNRH=EmXmSs1q`{vEh zV^LgSACo6ysAbl6^*&?z5>x+6pM|itwl%k+ZW{fhNWghD&~YK@$DV&CSZb`LzXG3=u&l>)S&Mpd6G{QR-zD zGGRNKwL`uJSMGuRJ-WFFfiiE1k}xy+AuUCW1ju5de-*ykqAt~~LcB$Z65IDsD>Te+ z!s%k8T(28?bFj#hdoZTJW(NM*2gATBR~qd9(DjyKRfb)+C?ZPN0x1!s8ziN>yF&zI zAtBP;ASK-?-Ho&o0>UDtySp3dJ~zJa{`TJ2Ip+`l5Y~F0J7$bI=9nD_8}CW4YtjXz zz5&}Z6P5=>AbvFOQrK!OE!C8P*D*!xPk|7DXWbLAn`}kDnZozARlGRG+&dFOb<49X z%`D5+pqySv8(1usA~1<)K!a@{2pA?txvrT1$T#uGOq9>jo88XLHe_NFlMer z%%eyEEqPL)8Opy19O##}ptNPr%|jEon)Davv3P(EER307HAOYx=bE5}Fu{HjdIEw& z=mfg~jqO?)mzDugW-(KG{DDg&POkv%OJaR`e0;1JwstKQ)buEg0&f2=y52b9e`LO{ zPNQLhCvP8BOzxQA09!9i#1<4mEd)~t_W_^szWL=lSr}!Yq*=!N4+K}8NtKc-pKL2Fr#GTk!I~9^6)>!bcXpImO=PB`}?Ye$YRTkiXNQ^fAx3LvX;` z)8Wms0sy6DUK!hr{xIOc+mA1196jMe`CFIleDxs@nN*A-_foU~m2Yd6R18+0%F90l6RCEC9W4 zs`>`rSFEiR#%^DZIS`!HHQvp}3LinSWJMV`e1ZFSI{$%t+~$c_vY@Uxuba@VX!M{- z9V~sVI(b-st@_vz($(_A#1%Bzgfo8HrF^cC=5)m!@xc0ISjhvKv?ax{X#SW|5~zzP z=jh8h?D9xcgckDk|Lqu!w%f*viHWgD(58YgoJjIkRaYx(7k)=uAR&qSJxjU{?^hVIq^pxdvtSr$zJRXTl=krCCU)z#1>$rodK{1_4G6%QfG*wozIX!;8iI+MvT z8!Y960boeK{qJ`$m(-Gq6rATUU@({e>9Al&Nu!7F!KF*3`7DEp0%v-98u%@BF@%Dy z)6-KduMc$i>I3Fz^p)4UG3dU7CX(*ag8(BMmFqgf1ZE%_*)o~{AM-noqS4&&@lzMq zMf%b02+GcUg_NNZEtaOYCQo)IA}6}(cjWC?rbIjh4vdGoY61UG`*>HT;1Z8K8XY7MVp(OMu6)l8h+8LD*jxLX?ygJBxzc|u3T?OHVe`Mz_A9#v)$cYL`+P~ z6jX3G9T)6L;(;@a6KkCZyx>DRJkq81oBwKN!JBZ5rm3g z?c_eO;;xbTr@%Gxatp)QCqH^;C&>N$D;YFiyylNR5Hi=b>OsNK%plr1O)6EkX1DDm z7c(Y2Mr}A*q;Zhivz53|8Z`P(Snh0FvDYj~i%b5CV{|ikE7q=UXxz7rJ$WdA@gK=^XGu^A4H@gyrAA6FTdk%SEdDP3Z|5SLO2L+hKj@gS8&sG7OyI| zJ+&g3GQIEkAO4+&-86&X#G&_nL{JE}=IT4yF1uh2+wT8{dIz#ltRaWENX0kGt_&1) zKxY8=v4|FNpu%2aWYQzC#C*=S0+b0r!)kO{*CXNPi;vEQY?Z!F!A+R?^h*3>-`3Nl z<3vyP8w(KNdA>}7VLbrHKo$|bA@Ki2?9-YgcIUwvG4VRz(?KH@e1Ex08_eq2OL^}zrL~m&5;PAGL{>YbI^^vu9`EIoT>!v{sBVCzpUyG2(lzKcT-d@ zhzlm12R*iL51U?As*`WmZV%=lu^9Boviu2@=3xco`{A2BWKAAQ+-Eu+zYFPmZj;+V z4oLT&E_x>^O_u-5f|65bV3|8M7FK4q|HxOsBb@8eA5j@K07m!J6el4F97b94*N)%E zD6F7)(*16b_LZmn59ih3Gf&NEblLI>^8ZWttIWJ?2~EUuH$Wuj{b8VG9uiFe8v67I zw;uwslFU{&gjAYEf5y9j1mjx=Qu|}SP?`tJy*lVSd7bB`XJ^O855d7fZEr6_S9$jz z+cH|0EB{x^BHS6Jvp~_20?ya z-ty9y5&+#)%0P#D0zip4EWKhRpY`PAL|Hqtnw}&*{pfF1`EwDJFp`O9alhQh3RPmH z3!L@632S#J+B3BlNBW_4n@P#zp!}oM)vdHaC|F-=jIBaG5pC^&t%yVzeM>0->*knm zdc%kW_)Fa3K04sWXqa~j1i(Z8P75X<8xjiY3Zgh_cC@#T=JciF9b(=VcAMf*uqqPE ziD%HHcb$8$r0E};^P5G&DlRP!px*(l%M5p3dXiP8Z4nU*_dOdnLm8?&rKF_fb0Q8i zAG`HZhT+1>{8N5vL)+U++Z1gxaMn{)qa0t*GWvflNK9u{)2M6n^$_vKY_S0t5g^n0 z8=CKMW@5qTlon_zE5Gi>#U(aTW4X@b2CZ8xXheQV?z-_?82@ZU zKu!tYTBUCBI=DgNNkLd`?BnVpDU67e6c2ORNH&$P|9`RjaPivYOq&w1D@+% zW#2eceK=3Ff0m&T2Ait3XL&5JI_^yV9`=q{9@q*b;JZ>AE7F?HvyK5=XpfiRHeuo9 z0rpkyA4lm!NoDD%{-ka|1$E0SC_vqnw+6jEp^FeLNU~80TSh*mWb{e^Y;NOouwVHG z1c^AZN`@GOsS?=qPi6A>&c+JW3kqJ@^)A>tFZ;{LKSTJcov}3J7xAg6NLu=*?^09@ zVb=CLnaPN^Z#gOrT9q>7VMhD9D?>e@ZpuZ{&rKt`iRSem<+VWf&2ZDc+Sd7)u-%mO$D+mU`^JgJT$Fj-IoLEb5W zx{bLx5d>o&KPYS^ygc6F)3Cy&0hF?HxV`Jm=ba0e?b`dGQWbQAh%1zr6Zc<)oE|nB z@R5A9Bc3@|O_n7U3e$#{6iDXT>|I^0C5jvuI>!8$sSk?s14UQ5@X6qY200NOpllN6++tCz+T0(qq$TIQeb z1JZWzIyn{vt1QbB=+_#fTZHp|H623F%*eir7Ayh`iWv)qw+Y~~NKPoBP6MF!PZ3H)bDPpuCmPmpXK)JF5TpCrlIF@OLcYiGYG|UABnhnkc}jzM0#{d zBDrYcn;>?#qSt{YV!+swn*TQ&JWzxVy(&}^a=~x8twGabHV}=UEm_&eCe5Bz8>Ee> zrFhy)#ahTFlZa7f`{vk}VzhWct6V=P@K*#8=jYWtEqyILO(|-u#&qG9Z|H<<;@$0{ zG^}CTK#~aw6}26R7+p~YQiS^5umRU7hxLX%*lNN% ze60LSPc=0e{RVUU_PXj9W5of=KzX<)AWJ6|>yQE+vPR<}c}Z{GsW+H)g7Gu9LoS2} zBWd`4bdk9XBkp<=wV3|^K&d$+4b4O{-YZ66gMAKrKv-g#M+K~@#``FnaVm8tai z@_qNr_MH7;Z)qV$gHxP3>xGE#&3CE?yG*;Trl&ESS)rsR5V7Vb>SU~-CEl-OSPe`0 zSD6R$yv4tAwudvR$Y)&*{xFoTU?W8Aiw-PeUI%H8oax)wNPsRA z3dl6VWxQutSXfJJNNdk;C@+V!5VP-JIq&R@`9j0tRl>GW#0yrdU@KwWPb!_nB3 z*On67ATk2y`Tj^ADiN1O;U0q3n;B4bt}q)Ww^(S>QJ)2Rmj6ifK>0G%DWA<7WMdsy z3A*Apc3)$V)Pt>`&7c91GlmbB%Px~7x@x_GIbR*IPqSBVpdy+p$3|P%(z>UwxDk$1 z?psF;xM-;YOKszj&XtJyLh#eKL(p|E+7=fL68L2WO8xaeR@3ka`Tvp{pruOKv)$W% z0aTr$Gy25luZO8Ndj9lFxVfQtc-#t)JDrXd5~)~OaryeSFR$cxRGV&7j}iw?@js+@2y5HOi(tb2F7?ACd)&NF`a~|eLKdL4qXuMugMsVDUPF|THa|$u^!>)hq*7^JDg}G|0URclT*5#dddO>EE}COq@;s5lNmMd zx)_7C9V>roBZ2Dzl5(wM%K;d_wa4VmJJ|>8%f58L2XnThA)bYAfz{MRHg2a6bAxtrTjNBz{k> zgHLnfM(7qw1#$Wf%K1rHfKr#JJw8kS(UsuICYH?@qKy@vW4c|JH47P?B$P3^MZLS| z&8LliQWJm~nBM6~#>+uVuUwg^!_&gf_$H9WHa0hNK&-sSSBtt%(ObgMls3G-Eg|Sb zXhiPYj^_5M-pr!o5A=jj9y;XXP~*DX79iTjV|9+bHCBZ49G%F2Xefq;IV{5P)303a zHw<3y{qy^Ev(0O}0k_z#&}X?EBW&u7^iMA^Cn?`k`O3ur;H0C=k4llr^+*7$HMVi` z00cl;GS+KBPB^|F`@V^Z1#tVdB|S*!s2#b<21{9r`)L8X=k~yYPQw>+_`LsxvBwv5 zuY?I3$e9h14tr;KX0tWtS6|LX4)Xj0t!h z3T+Gm6pd`EBjKt{HT@5j4i|C5&v~(}wnXcZ z0J$|=@{(HV;fa#aFt!o3NBBnB3^#os^lpCqOSCL>$T5cV<%8%M5$B8c_XEOq`;Hr@ zbf-HL$n2YpZF%b=}nowkQ-u>CdieS%`;9)2h-elCaDafxN(|~0h9iE-r3E1YIo|i%UW7SQS#AmU){4b zHf4XEl4RkWN(?O+8Dz+s?7`_8Uai#L6Nt&JaZ!vc@YmlQpk7|RSP+>jbp-@r+jn?W zr0Sw9R6xUw5$Ifq#&j7XoQ6JXKBx!Q^m{rle}CEq+N`rs#Q^pXkn%Qp3DIsURZ6nWra~yZH1IqdOBt% zc7DQwNJ?tJP?^Az9>L!A17)`@`ccbL1JeyqXCk)p5Iq^$XtVIC7!-ItQ8GMvG~O1| zWhGk0(NPES?Q~4aoc@I9P)oMjBFv@1f);DAQ8)V9Y7X(aG16s~03;U?LqH$AeN+KV z8irEw@2BAAc1UpMl;lWdSWU31C^A=7RXs`T5C?tGEiI%T9%bHey1dprilj|fIiv;e zZSM2393M$&!%zN0Li==q8>lZU7xKt|DlIK#lfp!3k%)Z&)RRcoh=lLQrZd5Fk z=MD5cJA`mwch2wGAI%&S%eyygc4u}(%JHNQQjfwBt}4ezVLp;bK!)UaTI!IjN>bs} zE2~8^C{&4}t^hoKeSo#tm8oa%MlvX%F@06*A z>rgtRU;TnVpVC0&1dnrh_p|4Wh=eT_rh>8K!;IJSEJJL~!K8WwN;(F-J-O#9s}WF) zuq6FQ9=t}0Mi)p-$F%KkMuAG4Rxd72=c_YN_WNEEy$*0(fE3AuNzK-_0v3o=_`BLy zPZc{B{#6F(eGg$n2hvb1`ML?i{~zX-$-P)a;(iMP^tcN5L75fer<14KS=Gf{Z?C)u zd#e{K1>Z|@u3UZjzl2b8&E z?zZ9Kk-=k z6XDSFmIvO?_vktkpVjr+!W5>mM_7p-?dRE%srm6WpgjGU8M?`Hk+%VpY_ zvh#~Oz2VN4gNHlo)41#^-2k}0LY#(KKJJDj%%uU5 zN=MNXTEleI;bjm<(5Klte06PU8E7Cg#|3-sbjOOhCf# zW~7tzw$C(bZ*pZ{?;u`&P&4OR;B|Z@4!!*@f}pAQNBklPZVeaS4=1*ghZB(`AmB37 z4XHr_0cou#{gk-L_Al=U3W_05uq_=8>F91?j%yGp{}T(P{?0$ablovsWpUaivS}~^ zwk00OWSt-{^O zK-fk)Dc&VcP6}nTT<({PK5>Uo@I_#rH$);k-TC)@B256I0nKJRE? zQ)M-L+{@a@BG_mWt1C5LzmBgAdyDX1`#u)LtyuSszCk}3eEj3=`$ zi8ISE&q=F^VQ4G`K@FK7*H>rEGA+>Gn!96FZX5iuI4V`;%If|}1WF*VF+ml)y!qs` zkqJvl{4(cL1!=@WcgN=DNX5!Kyy8n2=!3wItm|^rZf1mtdH0vRx1NOS`~sDN#qh-k z4YX5te%&9$UEEjB)FuNS1RVw~UCy^Omi;?OhhL~1e?Or;J@UasvHj($A%4){bId6g z9Tgq=o#i9aU=8Y7M-ow%nb(pXcCbqO;7j}6uSU{P6fXTiypPHaJyfjz3ik8nA9D*( zyKuT9NCGym(Zy@KV~lm;6Lc;3fsK$sV@0UFbFZ6ZYU-EejShVF>$%@J8_qj1|A7sMD@WyR!B2L<5!k)gh zW6hhA2~+y)pDj@d6kTx=Bd*r1p^s!1OVVRLkP~ zTIQ6i#kh;=XX*e+onU+I^v~RKgIFJr=yVswxbCy8kPWK(}Nv5SmnDM_hH1zxH za(T$W?LvWRs82FATL>v%dyzT2{Fys3_7J?2Kt9Bc^cVGerELvXIO|1{uukN}q1q;) zg)+P_L`*$NO%XD@F_uVgtF@I_`)vstRuUFcpTC0XmmJ$0$dSosZ2^J?X)UhLB!a1d zd^8~=l?F~EX?yPrp_P7TNjkD`rL2J0*Q`j6s^39s;+~x0pz1Mf#{C-b$9((MSpN@p z)jysMPG<2XAXoLBt73c51maaE;sL{HWHld6@UaF_%p+j;wR7AFwlrF?EZg#XUQMdS zQfX1k?N{q63$r-;7<$tfa`j+z$lIDj-*BEnB8?cg5K4=TjAbs0DDh2I zFq%GOL>vr9L83*H#>tb0CzswrQ0A3Ir5uApMn;j|8X-$NUGpATTQrWH@1M7GzBrgq z-aKBu;j$m>Ycf6fWxwE#Lc=N_%$(Sd{e}fT750W@p&^Xg;rWteB{S`}?~zd|eP_mk zdRuHUQO$iKQ0>NkCK-qr{yIz1dce<9;!>B(_lXCZ<5Fl!XmrflTLIlNXrDfX@5%{M zN{$z6u)3NM?2MhnPEfPkaA6)ScCHP&k#liP2qWLJMZif3%OYLg-2C}V=(suXYC2(m zL$WgN;I(i!?Z$N#vuAQBZ0OmGqM12O8R!_xx{r`PQ)qr=WOR(F@88!AW@G-I+yJ^; zjn-`IA;ei=d>&LMVV4j3=#T#X70n>4MiZ8IOSI7C3n()k$(0#NA-@}bCl3s35O zTgjNAV!t^Mzfb7%vct{VK32a~2JOY{^0AtO#pH0V%S(p$(gvzzthpBUy03zdEj2Jt zy^A7yHEXWbHguUUVi+1`ReM^*j^d5tG#xhl|jbLjB#2UOOFSF=--v<8h2d&0q$CihyR2?GCQsb{MrU(U>-!$RD zH-vr{8R25E4 z^FxWJc3b6>oaJteUuY>YPNk}1*hHCbj#35@7@6^0b{jaOsBkMxmSp z)lLtehSfjgRVoatvwKefJefCyLO|ffGgnu$;bLB5V&cB$E?J@|q_9{T>)*q_vGZgb z?IBNnYGc_$b|~+zi?r-}2U&y_6-l-X=s4Zo`M7y_eD0YRxU89PALUL}zp-VYJ|3Od z@Zk6D+$B}a!ia-yb=gBkM@Odlsx+z-V)(1mxb5L1A{e@%_q>)5j3sDe0n}$C zqmSn#U{{2KMHoEN(?e2IE!Ni8zj;Q+b7cDYQKag9m@|5mVh!Rm{&l$^b_Q zI#Xj(s8&#Ds$gX$I5JXI6Z0(LeUb0`<0G3detw?OMKIW0JMczezD(sB?$s3WlL#N_ z|K4N?LmRLbpJIb3JF%3|oJ{20Blc2>*VZ?JIdE)Y+}yma9UVFpUqmQul+bK#@N`3l z1lK47->m%40vf&q>fUb?q@UVB#3)}&;8Dc2uXSUejTHCv5Sool;pfTngz~?%g&BYR zxOy8PcXX;A`NVQj5Vsgvu7faIZW+l2f$#~vKeWKNrx3EjSiPvW)hkfJt#|2 zWUJJbHfUi1@^M#;!Efv+diWV>w9np>wh%ElKE-Yq@Le?yCPB?E+`%;tX2sJskaqQM zBC^C-0$^34H%YguiqIrtsNeG?%0Q8d<4|sJN0DEHV~k9jHHGWHKxd~=_-H-%CBT5D zam4S6f8jBKk=WHY{*N)B{K*urwn7=mQA^>lG`3b;b{%iu+G>DBnB0mdbw#U=W8T@N z;8#%K*7j!SC8;+ig=D#y`kHtwT)P0PJUjz_FLo3zJT!)2!z&^FG>kmTl{+}MjtGr4 zB(E0!&ZNCv=Cu9K`(FX)S#_@eR%2r(=XrR$Oc;Iz6_ucfvJF#$qfQ7D7*kcCxZs=U zY&fklp8w|DnfND$GbRh2;$kLGyf~0`H?R}1L5U_PP9dwLjHG_S!C_9B7=A<+=nc?A!&ENl^OE>O71h3kgysrcC z)qO5^-RJbTPsZh{Frx>z^L_wlcKM)4Ke?aYn(+%PU50Ha@x6dA*h!BrTO~BZu)YPb znJljddwYdVBzeDameBW9X__i7O3=M^=H_cOqh$5<^&P73LPDtBHaYkF81f`1V*hut zQA&mLp?g{p^=_K9!XN+YY6=t23%qx=#r^!Ok`eE}PA;1H z%r~;MP4_%G**G)wRC+~+l^OF5EiqcqA3h9v|327^OYC4^)5OF_tHX*q??0@Aw2 z;VeVdrb^+Rf}aMyopk`JygQ)C3>Te{OA3OCHUzVEXO>+*(3iKiGS5W*$e^9H_+17OKe4CC zLm z%TM6_`}a#*xzp8&(r6vYmeU&GH;FoY&w z-@6F^Gll2^APIm(EqdKBIqgk-G0ZW|($q6hFVyZQ$~X8JK@+jxQJhim;qqwtarDbp zYf+EU?;X5+HpBYO>o;7f{=I22h=G270wny>lA#IqwkMqylF-wGYU0F)E4=gb^X`EG ziLx033a*XMaZDxiRBz8$^gNC`G|@=L;17RI#>5g#c$^&7+arXD3*$qK=C4P!e_bPZ zX-{dDY)Tw|G9zb&c_jefDZMVYW=GDdK4?K2{s32NP!xa?&mjFVutAAp=Los<{n6)W z_LoZ9#e7~HTRrwrf=D({MeR~{Kn6zim1-!GdK3Z2B@n3w5~jXD$tbk1V@jl_!wy72 zNMNK~Hg~WgWA=)HwFOjZobVIxrCMS4_m*^FCq?GJe^G3MAJP&BYp*UDkzr6fOrTc#7Ho*(E0$8di>7F-G@f(RP0@SCM=VH2#4iricGE z8@_|3!hxeTCtY5CsKE8FwZL|nWG*Erkh_IW?;w@1AJy)g%KBa{Jiu#TJxrA}Y13~OqokCAE8|4lKNX`KpY}X;*t+}{ zQC%tjBW7-%f}H#fXvpyp_$&aDx#~Uy38J%^ac;(RK9o}%bR?wKh^Ld|y(Ret1-|A9 zKP)s}VL(dq(i0QE#?n|-5*=D~1fijTHktzLwNe&K4Xr|$H5j`@DR;*Ue6fN}mke68 zl?8JkMJx6jLijpKC|1X4W8>Q&9Exmtsig=y0qgdL9whNaC*nT+X( z3~r1=wjHv(5dXYlQ?B~m-R;$at*P=HS8Fr@sZ}0Uj;GWKzxqIk`Zia4-V(^l+;+!D z@)HzN7I6Z3g9gL3?&vEc6@TPd-nOWbjF~a$$k^^K46} z_U||1K{&hHDwa+56yh_Dkx}6T9?COU$lo2x>rCVP<~ms@$X1QO>__cp51wMpvJgPp zN=CM|4a`csO5<~W^J#?gJfoblvws(PYlsc5c4w?3@{f0bbvv9b^~c<}m^SaN05iF3 zHi&Gf{(uZxXxkv-CWy`*gnfW%@}Z1oMuCWxo5JaZtvqdffR)nOA07RsxV(Pb+GM<# zE?ZV0#A zGeP4qIR<+DARuwo-;eGWIH>i9jEugU8dp+7W}++!&fVP|Pc=J~=6N*1Q#a?1;3Nj> z)a3i@05Dr|B=LSrW)lSj+*0@+)Q=gB2?B7G0(?1_$@{-po)@o2RV0k(=H)K`2-pox zo%Rn~c{o@Q`%0aLU1x+2ugmfKmJrqU{3AyjrbXRW75K=GcFimr%k zd7iW0bliJ2)zx%@fGwoyKPKojS$z#oPEM+GpH0$Yqg2hcND>7TAl&^{vZDKy(v**F8LWui@ggV7&c5YPuWu0<>aiSr!1B9RF+5e zHVE>5KJR7F{?f;<@&%wld8_-;(#qHS628I*YaCZp{}}x?3f&2^jyL5ZgRCxiU)U~N zpf&uuqt`FtB%gNEHimuk)mGmv%H7DpZ`6vVJ)-b4H?lm1T?PjE#7kxfxJUc^Y zApr0lFxv7r?O)W#JE%tS8t~@;I#lKHNWR2ucENn2a5p|^LHDVfh1SOpHjwS=fS1Rf zlK6EdnQ6mYhAlYPLBzFzvQc*=o7LS?x z>R|oTz2S3Bu)j1~s1+Ln(OhXdfu?_GM?rBJ0;NKjtdq*NA{{6F_$TYbOh;K1XXi2! z>U*HuQgrZ}EPyjVKle4)IWj+gsEL1mMU1{RZl@GVz=L)UO<N6p1zP+sz_y$#@KuRP! zhW*#7o?9wjXrEcmN~X^3xUl41KHCpJUiW0IiU8BNxdplgq8pPLQC>`=!pg-;J*jnq z8|PQ8P1g9()dNRb0}%nkUjwn&l{o~v5L@2tV78BX+2~eJL>`~S0ffPRIa{h0$uMb; zb2RI^&k-g}eihsf;agKgLH$N=-V1mRx!ir zxCP*{Fk+&*LbZ*G4Bq+u`0+M@S+5u5?^U5cl^^2(d4x64M|GB#{V#V4-D5L>EYyksCzO&6|)~#pg1!~nz%!Nci`p@VeUwf36rpI5etxwucWi!^g_`IC#p3M z1@uCAkkBT>G7VZ%&Z+qMf0YKpGB4Kwwzj(Om9bJL*nT>X60`HrRj0vS_G;x3FBepmpt4c zhd?-bV8Ks=nSoieE32y=$!X}aS$l0`9KeKWa+m9cw^uzgnrg<9^+`@o2u%O}qjQ0x zz{ci*gjnE|W`hNz^70=T3dzZp{~O2gmWJ=;)ia13#Ml&*#?&;t$G(UcnbXc_gG!U> zzHkZW@#NOL26jbk;1E|&I_z>vE(}(G?2!J*1mmmKcwU%?(WT=MWc&fe~21QKqlt}S5F;rW5&BBYQU;JTCe+0h(#u3pp|+1cAgB_trw(BLcAzM|tSmW+#yeTIoi z3eY*cWTN*m)Ifi9%`PKrk`7c+?p~P|Ti7&pg`Y z?KfhT$NG6#epIR1A6xd_WUfqXk^%?C$8Qpwv=d8eQXaaniPiI}`)>NZ^(RlCBk7mo z2aAk=LBN4PUA#mgi6$rrnb%==BD~`Vi%yllj256_7RW6fEF1e`E3m}KM%`Ck;;c7p z!BL1q{mb-&(|_F~vK+SA<>xr2OEx^OqwKL4)Lo{ec@RR>K!!et6N0{*E`M`~W~nnc@hg z5D<&Pebg0^0sHz0!A-mfg(V%2J0o4$K6`Za-;Ol!(4)!x<=){3pwU`nW2*)Jo*&hF zCp&D*rM~jkVS+xqF1?mIY0`E(+lj%71r>QR1tzVi_}ukllsh|BUv*ustEf-VoilVf z=u_?kt^x)Do(*V-F}lD`?YGcS3<&0|1&~;wgVtz@dYQ z3zw%80QixoNe%4p#;XrajFr-8-+E3q2P>T<2dS`yU^;vqr3qv%KA^6oK;1UPEWk0HJQ@ZUqe2Sx;PQ003_aT8>YIS5^L zd3Idj^XlzcH69ZM0{{kpm&cWq72F(fHWzTA$;Fhu4X(7DqL3V(l(I>=ADm^5aW6Sk<&YLu`He~pfppqMp&a9Owu9WW z;r-x^0Oo1+w#k5jK^=2I&CXTMImapOxn{UZTdiCYr}1lDEn#7w4~l3-%$i#g-$N@| zI%rx*J1_!X=r76hBwmhZ$q_!2q<#)ZTyYV z@3&?o>V;x*wJ{Sfu(5wzWCxUNW}h?EGI2_%bSnIe@gdCUXNK;&p7LNMCcX?IU&QnO zDA0g(<2O$j*pOQ?6bd8YFvHrJ{En$WD7O71F**4YDna5;Ni8j{+L=*@-{7X(fLWVP zmS+tjTl3br-%>##;-j&kl!(ZeT$`HeYQNCWpSXEmloct&&NcHO{J0N?W=Ygp?8(U* zJ_r$JJq=@iMD(sW7;;$vh^~b1LHXzmg%E(JovNiErpbvgJooLm{$jGSAbN;P25ElRG_7?vMIL%&8Tn|PAHc~@ih1Ti?C1y@`ch5?9A+>SfAB|gF*1I-)l)=|J%m=3RZ zb-eH|=rtMsUi9^CcK5nOnDm#(Vu-z)OdfS!dN+g4%q&sD_r8(nt4zkZxU4KVrQ&mP z&>#qJE5LQp;yPl<9+x5LD`z4MdkHBh^zm#DrVC1Ze>+RIBA@y*lZZ}XE3FNPHb23; zveTtxv;Y@F?Wg-wJvU6Vd z)Ab~O$@dh*##Ap}y(*)Q^H3MfflDr7qlCZVHIO#NW&6!HToww}jQud>n|BfqOF zCeuOtr1zhCf=;a?oviQ<6jx5=Oq9hJ4{12v zs*r@LDmkz7cAzujugKe5etyrt2xYU56;r$ckCq^`C=jy`tPIlY4?xXBWVF^(u2j2` zP@@>{PT067oZ?gwB&HiR>rSL)J6dt44ShWIIEjbt!+Ng(Sec}T+R@3D0Fwq|LpMpi zyTeNH%HA1uS77&I2R5DHb$ar=coL5Ki??suUq7hM95+P`@j9&IEbp(V$6vTtyv_NT z9wvwXxrBOD9>R~8Pzu3f9%pqb+Hb1q{w?DTmAn*8e(^uYZ**5U1KU3gTF&A*#NlZ` z=1C|9RknhC?!sH$DAI6AcfnykV9AO(oORjnC$w>}W#3-;dtz64B8S-|cx4cGUIabW zZY)TU`f9t$(F^YX@KFd$t2O}6zZpaw-|`3&-O)AFSVrg}QY^2n`Fl2cNx_y|j_$IJ zSCrl%28*(YD?+#6vI!e)JOQX4Hmk7v-zwg<+z-zi<+QnHc@@tE5g!B7j|diNu*^A| z{cl&xV;$a1?*>#gYGdD3_7C-jvHxK7drOM=B%H26mv>lk0QYK zzaikRQJ7tl#KMD0b!;1h=Q4(OfG&L9n9)geCR=mqtnIkY;=TOTe>f) z<%dZKW4V#pfgy$F!@RVUz*pr~P=G@GGo~XRkc)@5p+K!}HABdBsby+Etn{pW2I1cN0jWSWUAp0A`M=+~5ZPLH`O-!0k+8(HU`@ohj!A8wYq#%kz+`99*0_keI?C5=weM2=9c z=&uNaZ1Wsvf=|NYUkxJbyQN)y{Omo4ZABR&)@hynqa{N-IrCwF^L_Gy{<=B9j#Kvq zVF4uw;RBd1FOEEFNbC_J2CTRnt=`P_jtTo&EiQjQ^gIS;yKt@oznnxTsB1EUd@Dy! z7P2~B7JGToEs78+h(v?$%tZ~h_Y4hM&6)t4y1U_m>2rS_q*fF;d^>A&^?jH1xLSpP z&x_5;Vm|09RBWi){#8sOUH~2tre!S0`%w3zY&7D2nMmCO)9Yc|lhNl%Gmu9Eh)tYMmu7udT zl;~X$@2E~i1L}e=-X$?Ne7*z#4f8uDv9`gj1VtC$;_Y%^#7!WpiN-C^;k}G0QlSif zJW{XQFWYgMUq1p{^9^V9e$gGf(Gsme{#Usp*YqF`AzhT65XL!%qRagro_QTn@O4_t zwfErHYTA7@?SreeV*SFQOg{5Eg22YgS(_7a+L-%L5s8)`%Ma(|wc=S+(F7_C?wPVV zUWFvu1jtb?oBWCo=RzDWn~;Zh5kH-hfWYH-5eKo}-0=MgyF{DTBl{(gT}#VIfK`37 z-ui-++v$>}@5+!afkhwb?OSKfvb9xA#MQfHQi=*4R6wZxXS0$NUhtyBKAHYhH&Ri1%19hWycTfa>H!jloBJv zuS!piZP0PKQHO2N5Al5Ea#-xrX+ZRJ3pcD**XbK)Pr-lA|J+Ajw2sFmc~uwO(+H>) zYgi{wxZ&}nz_Gy7`Z9yyKL7{(m7J1V06XN-UgzfV{9A(|`iF%FbgMKSzs|!_;rbcN zWBzTfm3snA#LW>i!H*P*-}fWg#=qrQH4aAoT_R1rKC@KEa6v?G82FegQrr65>~aD= zS3st9IpE9I?YPiS{6=&h!eE!Y6Wr%(0ZbH2D)$;=mKXH{l+US7o9wpSYp(tuy52gh zs;F)E6+u9{Te?BIQ@XpmyQD-wKGIwpkOv%_Qf?yW)T>0utS&%KuL6Tf&HMn3vQgLW&DL~o19Gf$M5Ogv4AQ~8ur`% zq_w`mgt9K!?V6&620=1n0)q6@i$1BeMK%N^`TRANy0=5^3z*F7x#N53m|X3*BGZRV zsBVn5;^JpMWy(^2)|3Why~5#j0?D?8_)6`C6U6XZ(Mv{3vp;C8hd}V&lYXryxPsBI zm_yZgN)2dc))8{1*Qvq8YpaV6$jjrq!JohnBxT(uN|PriuEp0r=pS7<{|vk zpB@lb3i`l#b@}iXWLP02b#-rF&H$445&w2RI9|{|R~~$!Z}3R}b0Uf; zvM;lz^(b=J{QelCX5yAiYh_qQuVOF;DrXT@5NF^bjGHlWtk6qPlr5rrhLjp!@3>in z5oi8O_`IFq&}Vz;Ku5~}pYL}NAhc2t5k8Ryzsp#p^?)-5=jFw<74wo*U0iAx3^MuL zeZio&kZ-N@rvG3W<@o_&7@S7D`+q=K-bam7aEf!iPW^XIT?K$|18j$r04f3LdSB$$ z3)~mJAo1_gO8Am_VF5@?PV86PO$;EecQN_M{8EwJd)eGwBqOk>{~dD^C}FhVDxlEl zDx&p`2{f>UC>&p~CFS|V|F73xLWlf(w*|rD@g58_vyp6%wji7L z2)`u!_VPF5o>R$duR)%r8{ySh0rpY&1W_9kjLz+wMEI*|v53Y)_nl>H#^2>YXu|-S-1*qFN zoc;Y`;CUz#rarU2wr2QOpSd?c)G&?D9X=8%l3HycJq{;2=#UYV103r=ro1dD&dY)# zVDu(*0;=hAL18|bVEe1`)Vlbsls`Qw=pSA3SaoQC#62Y8Qrh|oC?XN%4*?#K>;~lzLMWrv+l&;>g6#wJdjk?k>H&s3qSer zfW1MV5&S|ZGC}e0&dhP3MSTNUI#DJu42pm6Fxb#p>18>JUY0|ZOAM9rUqVF9^j#Mg ztQJzW5F~iIi04Cfd;aGgfi<`*KvM#5NEAv%R7n^{9^9y~9M~_PG&mG|m!bhG7)JlH zlHk`hg8~0`XnZ#C4+y>yV3=&Txi%=)g9pjVE!h#&Sd9q03!1d|ItHZ>R7l3Qoxrow zM+)vx6I6_6kAH=kp8h2aH1LCPsu4-xr#6{Ei@MK*x(Q0&xaBJwNFRNDZK}(Lm2H8S z5tr*3R!a-~aAXNbKy~|Ohiil9XDP=!=+R{W; z23Nh$pBoH^wkoV2S3Morz3=~c)vZQ}i{{#DU6R-QSq$3vU1PB!pD42l>PPgxUrEUO z{DKCP*=>ku)y~8>YFyatl@Z$zX-!U6xMb6A0-fH``GoXH5J8(9S$v-;F|%80JVzk% zn#R-D4@e+L1ek^&49$GKAfdyjQ?XW!A(OSQ=3*a%BU=4Lf+`G`8st6rbBk(pS7|^C zFwa5?)*hFBpLKDNm1=!E*PBuW=bl%=HmJGK!;B+r35OIx8!dzc#%nM^c9TLqfKw1a zsLU*$Aj50<%11{BnS#3ykcblUVeNEoFYNrKrS+quoR}V9gD$*FNQN?9@cs973=MQR z&rcYONV_i3nqem#0oa?9z(?%`bd#H4*JQy;WL5%(zUAJgs;STW6v*P%;RL_29NHQI zfpRIPyX13oF@^N^ynN(m6}M#gV!gvlr#Lt=vTvqTV|{lws6wyV7<8lmp2Z?VScO`= zPNMOFij9jyMMLY#xOa4P1QywZKx)nGxFM=qsxF7|3W0?A>F&@$x8WlUI%NwIFE1}S zIUlflL2CP62O|e*vu3>H1FI$QicF%SKTk@J$@&619A^Try_`G5`|Im_wPXF86~=vBie0x*P=lajg~uIZogl5^ zKB7<;5D;WUF3eTPjrXMC;^i&j?niy$5A}+VF3LW*lW+qjBw+qj z9F;=fh5_k6VvQX)(|aCkIPtv*Fdkr!#i_NonN3PVPE#gjwqNxQ9Q~fVzO4rbb7j!= z(~j))Q|0!JS3h-6|7!P7yIp244>uu5ApqU8484fAK~bHU>xP6?wnER-w>v2Pcc%k@ zhxb<7+o4u5zDN^5Op#SNZi-(akttV-1laAF_vET^M%4eAzn>UAj88aI7 z_b+?{iZlM3Hy`RN+Www8ihRD|{&Fsd{Dsqo@$SOj|D=6&tfd8GML+XP)7#b2FEaZf z*~!hoZubF~-A232&qJ~CcN)7`Hvs^{lt5zAOP z`VJ?C$k^D}Ts&4+M-*rxj^;W)Z>j!qh*I7CkA1XbwqT9HzS1gICJ#;=@*==UN-EMo z%Z5lIu>5FyywW+EuZHXv9}_NbYAaGyN@LW3mK|J^ktbLTQxjC^1cN1+JuWQAzp2E9 zm32Z&t_cH*FB&a`d4Kp14*QSyLrK>!l$G(^uc(Pa1z0lHr>A>?uKM);+Twr}nSzU+ zEXENC2nZbRAE-?(?qYV>eLYKHF<7q>lG=D+U|?hn3(sgkrXKYHj8ZC)O?j=Lpn&jB z`&$fl@8Z*=1`3)J1elE^?n#d;Yz+L+y;RHg-Z-30g5yJC^*O+JC%is>oxEoENMwxg zDOvFO>k1HmTTHvLdTv~=n&37z9n4XK=K?yNx0UuL{D&A?_eJv*8yQMSwukw>2-9?#(KEMFn!XbPof%5-*jEAH@xdn(-&Jl_7Xt0j{}6dx zfMxsa1x}vN2x3X#ESVsw3+~t;7q_&e-aAZW=eT=aen*iC;;^ZlX(C)4Q9TX#f}z-m99f0PpTVMEVQ=-C-ux+y@>S(yRebq5Ec$prncV%FMGi z#a86dvGn7xZ;tzi-wEjqY6}IGg{&cjl*%`tpTZ9!z0Pn%*%PK^bZx> zLjxx%PaYO(5uW@HulrBo?|2g_L`zkR|H9YQ)p}kZSDOY2K3<@UhvR_nkGzBnq)LT2 zLx&qDnL%w{_$7LhgAg@8oFFjJaO~~nKRP)XKHqoxsrm;{kN`J|8uL-%diyiUg;FAq zmijc5tQKrQK?GD*GD0I?i3h+D+PZUdyGtsJ-9G1I0T3Uk5x9%r^YcBB8k@Y+^hOZD z2j{ieFPFKuttwlV7<64ydm{j30=`o}n?Avd(6%t2_6vp=J4dc6LlKme0s0 zM>N=JT0>eov`?34P)cE{a96puJF zE7Nv`Tv=HOA3-5&%*Jr-*d;fBqAq^F-6|<9-Bo48j*6lvS*79~vODJdfe>djl>>m@ zkoSMKigDs;w@03QPB}~m^snrh*c`$+(7G2gmHguh9+YOEd!_Ee1_PP2B-{crghHZ-%NE^35F#k~JZ2oc~H%aA2~lCdrT1jF3hl;G&q=Ixe|_0pQCARzOy#+n=4Rl zfAUuqoy+8_?P1Nf2fik^lV1Y}`mt)ti@^%wkgqX#gtvN+mz$ZbRZYxR;7k6VKDcu< zpQN&1`jy%!RfZiM>81%dqw4Ed(El#CCR28p$k9yPnu;!n=&8E0h<{nkRT>xb(sd0) zFPLi%(dF1?NVO-VtvLn&& zsFfVtgDD`m+*xs)#081X!RdS9x@Il|Y+9`crG^rOq&~WD!b+k-EIh}Xrd}226|+rCZ>W- zH)ab0Lk+sh)QrSm(tSUH8F8$|PxL~CuhIiejo6PjpltPjLy=<*jm~J@To1BNb)fx$ z5!7HdjFrgewAS(MBj~K2VV0&s8K}U?1+NBO9?top3Adj1;g?}pz2v>o3Yh|CE4a#J zOc>}Cq<(01w>LLMqx?)v(Fr7RrEOc^=_WthXiM=@R%@$G&=_`Of{?s*Ef z`1jd}1ZaZo-f;|T5m6Ygm|w$mUz?j*3Eshr$Wj~hP3G5s1TsK+y{2iyIS&<+{_RD= z*P=@ixUA5?ho?80c_!grkdu?h%If#Wk5wjwlA#}I>|iHWqQaXxT9`wx^B)DBwg~;C zD?q_ov-Ia4t{Pg1QTd_r*1a-6{Imq zbv<$ZJk^-0>BNgmK+gabpweVLj>3^uiwDR#`2urfs?^Z@zLIMQoEc^%yV}^sZzbyp)!ZAUja^6hvgK*y`abZa$ve;`pLv;?E6f zX>dKn>WhF^3{;HSRrB!RAlrcJE}TBswfxTLPN)}tFJV%V`gq^^+cWLVWN!-89g(#Y z|CDOG%SBqe;`aWXbp9d`$>D7Q?W~jerP_N-we}n{qE~2mAWKG54m73(wCA|Sr2F}f z(e2sxkxfk9yN7)}}21od@!I$&vE@ltJqA_~PT$YTr(5 zFC(y8%Tg=SJERy%1}0-DLu4pk41_?iNPn753Kduaq>6gRD`s0}edlJd!h^iQ{$Dq4 zWi!6{!Eh?7uV=Sl$2V}$(IJ16`=aHIEwXSra30>EqWVW^Krvo-xy~lZphHjXf3X1i zgZ3aV4922&jsWIhhqxai#hGJpbPW<44Qe9*EcL(C1gdW_oV{-T8pXfYQI}(AJXM)8 zHRbpE*T zU!3XmUQ!4{+h`bDMZj5{r)C2awz(x_y>ZS5tW>eC z9I3Hi5|x|7W0%Fnwhz>t5`Y^=mc#Eh&;&g3Vpe<~07t;HB0xPv+O#gP6h-pxAw7I;eqOWAKa@NdbO6{X-abJvN@0m;Yb^B^essQ`mNXt; z&oKVvbGJ_w@lh!fnnwL}JaNhx1msyq%kdEUD)I<6$W$??YC6;NCYi$tPn#py_<*9x!$zeO+5sS;9g_bv)j)oUYC9YU1e&nF~ zE!(7D>}D_55CL~m8T(Z1PB9XKlyyKavrU!m%nWEEploLOUbUVSg@$D3Q(tDFw0D@J zWVundIu|``k7r}XU-SNvI%CT*Z4}j~zRIia5KV9B7~qj}Hxalc4~_YRVO%V8etn&^ z%^Et((C-F^+f%!09w`ny1RKCaO>r&`5oG(9H)Z1hD~hs zo%(80tiiKL1A;!JXJA-X)DTmGtI=ccOf$hXGi^jQ?Vge7ia|e-f*Edjfx_=8!8%98 z`3Q<-+UjvDAZs69N{SrXC@J;~f%=t6eExLsmn`l^&(Aix*wuG!ZEZJOaSG!ArXp1- zv2z35IH`H zH#WKl^PoZ!Wh!gSR48M@>va`T8$=LfDur590=6=~{>YDUMdX8uPaP}1JLlGvyS}l- z1Rqb>!tc&*naA*V&Ky{!KAOY7Y@Nve{~%jw;3TAXo1*Z|_x1em!;Jocd5hNR3dVsk zlf!!F(~010Eq-QV(>ro4U>bugcw2|=D zsK%If@X#f@)w)9kXOSV34UvHgiylZdah#;x8Ch82WePZ~mR{N0Gf;MiN>`wTDCkS{ zEC!gUKhm@jbot`>A7y@Ag4K&Zq#l68J^Q(U^Ub7ixuO;}#He&=+;zDr8mDO}R=FJz z4sgwT^VPXZ)y)OEr3~D%wjn)LpS+Y1-g$*&gF)y_g^&#5d8I@JW4Pj5({iiE#z z$oQPPa`PH6Zqx!2Z@{emRju~;GRFA z_h?D$Yf+K#oac~H2foAyY^b8pIUsyYfq(c4!60^~Z)&>LH8_}|_KxP5LQ={yL=k=1 zByQzfe`MyIwo^h^8}(oz1EGYIm-ygmy72n?Lii(+9k1lw2xWX&N1`MGtr)F@*Zvto zf;AD4RTazYlb(a4QWPVb2T_NDxvUX`W`ArJNQGyUtVxMOuPHVs@pKdwqi55AdOV4e z9~F1|=!@EIfOegNv^3@G2LrmZgu92^#bgdIDo~{8sV!ax@qm%<_WgAn%900!{>cMv z+jASIj5(L*FM;?|nur*(#UGU`nLcfAus5GX(s>v+>)A!v?eS>`@w^x!AInu~sLbqN zgFg{Ig}-|!4t+b8WEA0+?!F^?&8T)tdIoMmmZ8|<_-o&@W<_{g;cT+hcI8%17sMto z^yTS<1JkZ+%MJtmo|BJXZ^jf)*-5QpjGDW=lpHM=KqonW-mAc(mB78w-vpOtpr#v{V2w^z3}mIli;ZKAo=tIR)=sQ$nWcutJg~TKR7+E?fpAN)N2&u zfl$$uf{I8$R_ykSP}>;=W#5s5C&TMK6^kDlgK};O5x z%?=El(a%97n9NXQex*icVG#WRtEi9N>kW(KT|~Ye+@g4tS@6x9r}3|#S88A-<#S|- znitch%`$D!-fLMS(#5d9S6GExB@8Cgby4s699&75m19-LON8*t-afy9_y(bQvrMYn z?1V_i8K|x58i>=2@hSVDdd;AfS=|;^=se3DOAj8%40oAg!j%z{K`#Q~Rrx#xr&9^-{&X4@hQHFdZL>ure);-r8fwwsy=c*Nn4rN3489{_W4t;sCvkgn=w4%$ znb#H;7N%xq)lf;G1aL&xUXhPX@$g}g(W{L+aoQw4T{(bb@BJZTFk)U2pp}W zjSXKwOn-V-_NL%w2gG^$;wO{MRJr*En|C@qF?fij?0pGfpgTvRwQ)2~VydUq=E6o( zt(sm;j<-w76e!+kK8&)=UKX#S#h1*=Ck=ll!i4%k*w;bj!4&z9moix9|4?>9@lMS_ zg)%>%_IHU8Iy8|neLB+o^eU^e*nj=P-Dl6c+TYXr1wfxmW;OvS4>LcYQ;gvzoOwhI zFOGhrlSy#UZbW>z#a1tG>Ks7eCafqnhE!wIuF66`n5MDLQYwN?P(?(t&Wl?wgu5M# zn>&46dZbs)lRy@fO(S@)Gd;w8$aSna=eBWQ%xnFQC ze(9TLQ{>C=((F>XdF>-aBf6?aN0}lZHXSf|?G_+lew7ceH(dCOU+6C?4|6x4$M&YsRpLgZ^|h&+HZGoN_X;Q)JR17>ZjQkF2v5WQL3Y( z;pZEj3(JBLz={*K8-!CuWvn$5nNzEY5F#uh2j+fS)=pH$ww;)#stR!Ovej;WGez~K zv>?gKxxjD@CXtLtW)j<-HufJ8-+L9845{$$)DBhWM1S0oxp&dOEHtK*2Ym;Cr2Z@5 zOv7R2_vY(0k*_CX5kV&j6reS*cJ4NyFdi=P8KHn81Q%2jG#artk z#7XZ$c&m{tFQ56PV@-7TD-hxK>Cwgtp-_>a0?3J@K$(V>MT8+xOo~E{M%AxPI}XCq zGFN#mbO_17yAHCE+g-CNi}C!I<*E@$f!v>8XjFI$ASF+!as23*&A9MuD7MTL0jMei zH^}=BgTIoEg@H*0CeuZIL!L>}1;PU>0(c9$4Utlg-33^1qb{@ zgp3s%RHw{W$xLrw)!OMOuyHA*N191VEHBTr*H(gxFdxPi8fm_qL2qZCr`u-VVR%Q3 z%v3I!b_ce(ds(9qx`*YPX1@ zgKy2UK-e|}+SGLxjGqnOUJmSJp>1eWNqZdS_=oYlA7F!;-Ox|PlX|(FJ`=z*Yc*ZK zMoQ>+@5m9o)uX*}V|hJDM+WlU@f>dv{*Q06I%TdxM*8aBFE zrFNAskb|T`1n5|2$h)M(kfxE6=Y3}h)W2+c`0};o?a@&df>zc8yiC%H@w&B45<}er z?Q1_6WbsBPvq$Qd2S)r$IsW*e) zWd4!QagrnJ)#v9&_0N|xp_=tiZ0eN)ow4I>&rc3OkAxWJeM3YC|1eniU8y(+TRhw{ zVkjX%#Mf0UwdKPvgND3nuzxR8DbNzr)5~f&#vVxQs>Au@lMkBoscHzA?BjkQWZlX) zt0WP7%WonPxkUE;BOcgP_}fpq9kOkz%~r(=y8ELDbHyGF6VbaTlsuKqROr&cxIG}> zMW9mJVvhSRmp2|=R~hD%c(FGDd3;=O9nG9~m!L!*SWKk4_|wkBh^{9->A!l4%jle; zcDED4V1JSyq-<;$pdZH*$JqaJdry~>g))I2{_EV|0g75mcSFDPWnvfRRR@X5$gm?L zKhejKQ$V{oJFDXj#QT8Bt^ch_X->^4i%HGY*)*4we_#4LSOte26ks?E0q}e&fTfRr z_QeU=8GQ(Q$N+92GdA+ZGbPk5&)za${(47G#%(02#Uyh(BUk9Byv4?rz*?9nzgKQK zZ>QW_m_a_dGI%Q?0s2Li%A&YC9?rfG z$H&eZQ4tnZ@$mS0<}TesM!}IED)Q2;TcK}cN%&rORRC0Vsi}eLm34h*Rr!{vO9U$I z$&tJJW2aM$Vf0O3^S6^p^M`Xpx%PUF$cj`7y-bh^2+A|!GlT=V5iUL7UCFAx+&W>A zs`5RAos}taNeyE`480K-)9aqL;+@E2-cH=}b=nT~UMKbSlYT-XTET<7!%p)tNCOKF*r;HUekQwz`p*x4 znO{U!QFPcjvcFldT7jJ^kg)l6(GF5-H+V2uw<|B^+z-unqF0a`_F2?~&3icMBuxv1 zOC|PX`F#QI_3Vk~IXyXG(pTRxXPoZI!NJfF36_H@%U>|G?8t(q(rtC#e4U7E2ymN{K51lvHA$KXWyw>C#GRD9}peQ;duixlO)#mVi@DE4<7HOlFuI@Y8^C?TRqr~ z-I@9#7DG+?`{!RoAx!;TMZSihj7F1W%9v77b)dJ!&X_7Ox;GR|KGaaa;|D`PjrKbN|%Z< z5(+7VvP#W-6OF;wy1F8C>}2dfO0vIy>N%_3y2b>bb@O811V9A@3C5MRmC3;vk0eRL zm+))=)p48GFtrFO2Bw8Lup(;m@wxvaSGUf>;xyliKV5=)kN;<%vzb9?j1Un_sqO^h zf?x297ds*Zf_Ygj?%mdG8%?#?%C@7f3YGE_vc6Q87$Ij0((dkVu|H3_yF)jpFcc|d z!fFO0LF$T$)&&;i0g;NhrqVyOm!^a<(X~03n^U`_U&@W{4Tv~~jXx5a_A2uPz=B{2 zomSS1IR$1EljtPn2yf?XkFc_`#3aN7?0g$FVr14~{12AWT~|w|s~e{7*z}1TVpA}= zha-q!&h>mp?v%3)6^%m1*mAh~1A4*HYHG{7@D8C`nL(MYo)GjhQQ1>09Gn5~$*pSQ zIamJw>QfL6RA7IInHVez)PC}!i4{#T&P-M=$obK^n|V)%NZ$MT0+p1822!Zpg>?&l zxnpzs%q$xICKU5I%cwgrd?Y$lhuDiIU;TlO<57Ht+`Fw3P92FU-yR`B&cHK7_3Vlv zpVBvcmESX?>gFy0o|i6yekM|RCMo-~=B8^N5h){seoOFrw}BeGYYux1^K&n@PxXDV zPQ81*3+E}7)IKH)~)v!UAV!02e4kdj42 zWpHNn`=4aVvx`{asRG8C7VOlP-)y7lvjncBfy?djqFQyR6AhM1WojBYpeTd!$##N! z9&}=12_m0W7*7tsK(O#lcJIqmUwTlb_C-$oAN&O{p0~X$_V;Kyr?gF zlb$3Cq}*h6Fl80ZzS55q5MORSD%8nRu zby;F=lK^S{)v?#m@w)4wM=|b0XzLQsjTrU7U(~}jLx-U4VHjF5C4q4E_Vk`pljn{4 z)s_0-Yca=G%$?wdELTRE>@90YuggD&{VpG%m?%C_DEy?1!0#9>-_uaZ=GRV+#~%8E zTk=Rl5FSit^S%+VPb7c7KLc;0&);sR`V}UCQvRGyC<@h1$v~Oc1Vo8Zh^00fI&6dh zTs%BxG7!{R3R3p$ILNVM`9fVi)8bw}18P0eY(J5_jRv9~ZCPW{GB?xRUROVNP%JgZ z1!pE*O5{r)tQcIdpW3<*I5|;ow&k)wXAZqNUefA_MV%yBQohAzOUPF>OiWArMj7EH z_P)3zOrU2^WUITk!6zBt`&1kgDUy(XNE*W$?w#@l6{PIx8%^3fG)Vm7;jCx|Qp~|k zV06a2&0k!CEN7D?S`H=;TFzCZ_YDct(4_ozxJiv&%ew#R6%+uw%JUimLd|h&0COa{ zG3fDxk*f9E+4js^IT<4j<-wW1f5Up+8E<9rzp1`c|Q%;8OqzI@l0GHwjMP!Dx9hTe;Ni~J zH#T}&&_X$zk_r@}4Cg8}CqyEm$%SJ|j%uxzHTSjH+>Rkc37SKbh8oFexFJ`)r~G1Y zlx^cz17e}ED}RVM=f{>}C<}+kkIwjm#2nUEI3zk^I9;63j=9>$hJw7jZi^Q1vUMu1 zL_xr6p=wgx_~_P)sHwF)!&A~NzW30otPO*_@3)Uawo`(%ha5cvC1FjWcT_~Pi$ZO& zjXni9mh$07)9bc-*4D{MzuIKM>ac}!bDON0Gq0Ob{1LGsW8NcvI_)Rg+|A^*b`dH> zxWkaoUch2_fJg0r>Me*MVsY{dFVL~~3*_N7 zUvTyH4;(X$OXHh%A|M9fBrdV>m=?A>*bWBZ+{Rbl9#f0xRM#@`o47tC0gp6<1!eaBQh6=?rYs4m61QvSK3mLDJMScPM&579`OH%!22+^D{6nJCVWv}bIDOP*g-1V;?>BNsW3{kM9^*{l~} zb*}7sGCiNVuBUc4-930pW{Ltc=NN<J~r4LjWuHLkT=#5!qFQ8MZ3=!z{t#9jY@z=Mj1u`4G&UTDI( zdAuy@U+zVek&*v*PlE|FMG0P9W;Wr-|S!8h!<&N*- zkxjawE-QcaBJvOaVSAJ)NP~_?Q2d_F>7dUxIW?6{0~1`pc*zDyvnS(2UbYFh5ES}I zNbsO2MLtQWxao@V2P#t}~wWb@CH&cGS`6so@EMYoA;DT@d1&-nW1o`@uZz=tQq@}bF$ z!dtHmTJV=vc)EmJmU#IAk5vY+VCqzLq5>J}Y<568uY20N$kWqsdhVByM$&5!+EqnSQRcS1w zwEhBN`?OZfH5aTJU>@=h46;hp2v_%`>YIRnX^MyKIV<1(!0s!#gdL$JH z%n@FW7UpSeCUbRGf3RdT|Gxh&s%?!2q*K42GdL{ZpuG(nS^E1bWY$BJS{BTEhcJ`t z-^SqZFJAY}NchxT>NnkR241}j1P&fpB+Rqr+EIen1g54i-PG^jRjOTxbk)$o-kb41 zEu3R>9P3xs0D?W6RdsuZuHm2tJ_r9n6%nviPj)a99v|gNr^t$IzMW@)! zt25pSMo}@ygF4G`zhMfX5b?fad#BgLhN4_^c0!S$o6pj`*-ymw_FL{b)aB8O^)3Xf zh?_}-F{|uE7Db@NRYUz+IFXnqhEcQg(KDE_y=nkL6G z=P$@-G)2DM>^|+i`SrQ9P;da{VB8TE>v}n$1XKNY_UY%$Jjw z4n~gkuXQ5E_q;|86eTn>+a{?Bsq9luUFa($Kn);)&Yx})6<+}@3%!1T*vim1()OQq zV#teN@`jV}_fBgZ^)@H7S`ZNm$eNMQ3^M}ZA|{b2@MRss^c&9$v1gdgGbQzu3jFzn zdRFxXGBM`U>Pa9esAfDK36G=PY2pe|lC&<0#aYMyX*3q;rP+Fk4g4Uu25(uht6VM> zc=ZaXo^HSFrALk2+To) z=)F7ny$MHaA<29a&)OX=PNC-KOE8f?OlO@mg`*l00E=N`<+0 zF3l>=vpyZqj*my!F=Bnlo#k@cqFv(G#Ys^r*T!Z4T>z5veW9r@G(oRp0=JG=%XJEr zC0w4PuiwOc62-xbRaK$x`Fb%0;D?JtjVum!n=76i|2$P;%_;9f@=hhCM(8A6c2xsW zUnF-2_C$K`dP!fCCdR@09N{+#W;ES;%?!qmfm8EU-pPGufeTlyIa?)#g<;x7F{DI8 zptWC?^AfJ)UAv%9%_mJB^yq?v6;3Mru^Gv5-*=l{uy0c$YNFT*`-lr8a>3PRUDySo zYtEs&OpH}a9&93-YxZjyI9RXr3?=Q4hWqCW6GSB>O0AX_2H9+gnFpdP^>{^Wq|}DO zh`0EK)}c-PV>&ZGJ~H!s()BOb3Cy*c!jmn$NH{%r)Is&SqI-C}hAg{dhub!|>WC(J zuUH&gzt%0r{_NY_T=RpR4gjD{7g)zjjehwuNe2lr?Rf;mY$RtNP8}r41MM@&e8ZSj zV7fxXwUCiryT$ABtSv3wBFs1klk=CTKv>CYe$F8 zk3kU!E~`JgjJlJWP6=n(O-M(*h8+8VUJtObtI8;O4$5Kczx#>IHaH=vs z7g@CkC*5+H|1I7zAa=XOq7C97N?W~?V;aU#_@Ykw9HE!So&_Cmx` zF;MQ9jpmLnM32F)w_omRaD*6Y!N!38Ac{-zLrwLOS=9T~#^tmtTjXFQ<=_^(tQrk@ zxlq+wEn$g1GDLtvqj!2Pj>^h%(Vm3tm6sP?adA>cwbxys;lbSUc#FH7-;6>JrrIav z&n3lh;JBVueA$YiOIJ;?olFdBsvTH5A~0;j?qU~$x_Wv<=PAg^F>Y@5j-71tR$QAv zX`H9ibXNYKv`mXLEwQtVn<|h)B*XaJU`q@|p0?=g&fY|6GLs`dhdoZ9RNPNs5!^T5 z$cjZC<-OQ=NLp$*2@Hx~YW?#+wh2fh^?HBgKVB+tKUZJBGgQ*EnR8H8#6S(_$Mdvh ztA_V&{Yp_3f_WOIq*NB{QCX0JO;#Dx*au0 zZuUi(P*pm4;0|;JhlRz}s?HDuM{h*!TI%TFu^Gba(eII}7AcCWM!w3ixIL5Al2H?a z6ji}C>Irt(oBg9JE;@SW#(1#OO7neiP({P?Xg(r7<4WMZy+6>-aDnQ*P6>-ct&Y;% zu<+lM3+8d94>ZEEvIuWrI8`lp*7Z8}x#?AOZrF02wtFZ97a+e`9_NU`?Dwbd%NClh zv~U*dEqcUm&J+gaj5(?4Aou2FC0DV^l^TpHvo=a}II%M^DRSU<#~R}V%>V7xZ#90q#P*R~lUMx7Cbm(+l+LD40NPMQ+ykaAq) z(1(Ut%Y7qAa^m zP`bpfilntB5_pJ2E2)$U2VFx!2Xm!mZj{oqHb6KhOV>4vU#nf!uPWqh6?6QCKs4Gb zTlLzwZ{&}xjQK;uE1tM7>EcoP3X5&{G7m{1mV)_N&{k)Qm`Xn&Z=R_nigi@m>i^6SSL5*JHj zQ)2!vJ*laPKA(SKRxP9_v{xDkkEKS6RM|Ez}w0N4{Ill1X~X%32xT)9iBD`H_|P_K>21 zHl8-Wq`lXpT+2Dk$=O*;DmpVWGxoUb059I6lVzqC+(nUP1wZNf(%AL9{kiFI`35qZ zF3qQUGX=9@kTVpgyC4y+6$FlDBJiZ*aP~O&Khu)cY)K=~YE;M)5>`sKK`!_w#yV2)-}oL4^HZa#{4ce|TOv0Hia4fg8%3~rz^8;Xt@6^iL{+2U6_*|;26A}P&Y zu%T>~YPvvcfOeb^4)SrUk6={RBZ+3oM*E-NalJzl(h155=w@cid8g~&sYwKs`4gg} zD^t>sFZP#H*!OPF>ywc}<7ND>9voA>DY?VegQrYL{`!9JDUeGl2IbcgVU3Ws5bkQV zNlq7x5BeRKW_#mz*7f)(?Bgi|W6$3gYOfSGOG_0@$-T~`2!s?M%*Y0uPOVO9-at30 zoTVIM5U#|e?}_LXNN=C1)|G^rx;06MDH>N9c510>*BXgbS+=5}@ht18KWc0cr^VgzC<}+3DZ!~25wp24_xs)ZbRmF%WUY13c8U{(Y zG~*{rV%PF&pe(yn2gZAhvmm7CtrrBK!t0}#Ur^+h-n@hxpg@c6zyR4)!;VJA${Kff zu}@}G3|9yxXy8x-#fb7%R=P=c?D;7uC+S_jO5u~3PP<$I(WgAj65Obe5DQ^9xl~oM zJ==z+g#4d&2L}Y`@>X$U=Ao*0r>95~u%oKhra7P8-7$H**bN7@Xb^lqYPR38Io!3! ze=0Y25#gcVsB7vW&?q0GfU=>cND+7p;41tpnQt6Pjqh%=Mk_6qGHTE7a`SqMKSYox z;&{nj(hu5443jP~_u=97-Gks`u~^u`fmS-dXZqta`!oKNgV5Y7t}boWaZZTS*ksLw zkJ6F!czSn~V*VA9_3%7!I2OCV)GXINAdACdnE3!oC&c%jv+$x8zt+uwqX zn4e5d!S8Qn@xxP(GOnm==2XhuuTDqy{DEHKJ>rf}NLhmu|)1P04{&cYO zoOoUz;B%oTn=Yw}jk;+uxXbZ%7=!moW$c!2QGn31<#T!kEShnmy$|8Cq=vyBg z{CLzptW`qG@7V5o$e74{ey)&NrEIt1xD^GAwPD_4-C^~N%oO-StrV2P4FTTcn`nQpB0sr(WY3cC|eQs^uIja?rt3( z%6Q$koF_n-FX&aO8Z-e#zpn@SE6DP}?v#>{?h+&vknWQ7Tl~KNxj5$z24irs_u6yK`OGI?{*ZA`7YKX$ z?YN#Tf3RrNpp;IdoKdSzP8oreesJ{IBKHcBnD2O;m|#RElgpRU=;4;fL*xAN?XO}8 z2P>1~E7B#=kNB+oN@ud~i^nr%%M=6SgV`pC_voeNy+BLmOK}i=ks;JcHwzyk)@c5|>zC3wMbA zi-8&!MzV&{5g$)21jhe;6%D)?cUvaS9Il1D zqaz{`@Z=^H#_nAUu6fFoqk!?hwjJb>Pv*+%v9Zi1u%i0~Oc9LscBc!rHZ~|6+M+t0 zO2_LH-G+@`m86^7=1`n2RCg+O|9cXgFI5YT{}>zyZXAY^0qcvWrmOU3wK>nms!d*(g$u9f?2efL~$zcT9dU!S@K zr=rMfh$>-5GM!IN8mfRymg$Zbc70W!Kp00>{#50#-u^}F9mpaJ%nEGaPw~QLrUv8Y z>S}5ms2{1ldW#yZ1LZ^uK}h$kVoi(nsAHH{i;;d}PY>`DF>9Nj zu`0_*O8OpxS48DqOw0}aIQi6&X2&MR2(SI66K=Ikr>01W(_($i0~c#L#fqQFI3S|g z1p`M|KaJyGq5O9uy*iH_l?+bW+;|$uC4srQda2!Paq^ch<0Fn?Xl|N?dlcO7dlTnX zZ;&nOa6K^$jRwdwJ{ve58sXPE{aiBPqU}|03eAb@jT3b}6~Z~cJg=0;p>d|fh$H6m zj%G+g?APeH&fz>qhRY>=DA=tE7SZesW4t=rq_6mu%MazhK{o63yEz^YQRPQ93Z*UF zKunGe`nuHV&l^LsQ!ru45ao|97oFXiTANF7PbLMe*ACh?aA`6vh>HFx^CFgdufew$ zMTS0bxUL_!I0>d+u>qMHQL9`t4;J2D!P@4R53CBqpNWY?j~aH*na{I-#wVdxIKXSY z0Envb^jR;F)DQbGHj(x0D0owu>{$KKMk={TGje&crrapUv!*3GdA=#TxurLH{!m-S z;Z3M-aG8xaUx z%yBjFu3Evn+O0{ns@{1WX63qY1)Lv0n>{<{z-ju^u#eSxG0lJzzy!xR+S5Z{pT!cw zo?2e~k{?bd8g`qat}eaN%YmcH;O6~@`ozhd6N?|jAd$(Y`C|rp$xW@kG=A6|(*48j zaP-EkC;8Nit=#UQySG_$)>c+(uCDMX=vpcKM9UCiNCbTIshzcZu;%#LE{aNDA4UU( zDBG!4`b?gX{rrr^c_RP`WTgURn~Z%5$~4+Jbdo^lHr!@tr{B2Ce76z$#dCj7E91hA zy!~u6@K0r3;EHZj==k=ik0m!L`1c#oI&I2Xsi{%jI&*~Ck@)&CF3Sgn>Vb||LX(px z%^8>yxs1^mR5c1r8X#|6Zf~!fL;2&Mag!2hlb3}!wAE8S>#=5%!N=bUhu7659=Mu) zFwss{(v&GFol?-W&WYn4Y!c66<&uot+}?AH&hPF{P}QTJ5R5QJQ+6c3AcXY(NOo+V z2w{nu@#n5F=-^5BK5UgbK0ZEdc_F};aZu!2m74@iRFq~yTBImkO*xruEdu@pq67-K zu+9cg8%ly<+oRvOg(RB@dT+sWysuuNqRL-1kU~st_WF0kCMc500S@+2c zSl59s6tr(*AfkYXM;EJO>$MCPtfs4=$|gJ%)?AgF`*SBv?+CTl`w_)KJI zd~nsDi=BUT-o>iRyw#E$X{qmG4GsI7P9)M{hDge0C{rv3J(`NjDJSQ@dVj|#Q*yoP zya5DNlo!-xWxSt5ksI0XE{#->FqG7i@Fl|^)9$XWiv6w_)XZn71>Co6v=j3g{}N=; zPjxpm6zJ!`9$f8}5NURJI{{aS&N_`Le{z)rH31I)<`VrII19hi4WbmLTa;1t_?hTd zj~!SXAz;8D;Ez~uJs7D94-{iTdn z275vH+8KSPn9dI@1+h@1MQ;QdQrmKCSwW(X{#ev5UUa)NI&jC%u+kyW36Lf7tR z;g3|4g2DSqMn*Q#NU`OKg_&!MYR<5`P?;vi=FPdy~8t=a1I`9QAjU5LohiX!Zvfl(Ijc@G0?DQm}}C7Q5v1bnyyN%H5Qri6oY_ z9nM%Xc#d|7kcepVPtmCQJZ?w~boc41CR>RXzV~OY_&+Os^jg@Dxn`(2%ayp$qq{57 zGJ_k|y`f)FnPV}+MyE`_M$6$9&CYgRAr%rF@!je9CN?{Z2@R{Z!=kJ#+QK(OSKSpj zprX$!m;RpZN2nU`Zrb9~a;Gf;C=&}B@ zFAHYwB;^%-2qy0qOcnVi;O!Zm7dR7Sz_LVuX$~}Z3!hHL}kufEiY^VxZ zePG(vuWB_v|D9EDR+bkH6v93Bz|*hlu3V-<~ZMP~gic9MFTqh7eg@(ZY?=mT52O14nhiFfF~ zwPq)S49*g(yj(IOra1B)961UjWmi`sqUBir1}W(y8;>W?s;VK~ZXU4*bZ$!9l3T=2P8KDj1KPQH`3>ix*-kK2J`5S662R;vtly$AbRSh7`fV z3ninedB#|~eoP98rwIe1yZtGc;Ftnxl{t2AQ;2eq&Fy6REBHSjm_i&DpET3dUy8m< zABH30l-Y-t~dtoQG1^zHrJCH6n}BZc~rNx-7iR+FZKDk z9q4+TQ1sm`N>Awa@iqh0Ez)dhnV}u{>#&;ooo^v;Z*OC%ELBcN;g&@53443uBJo16 z&GLvrA}$loQC{!b2~Y`)?X&Rn>v2&VnAH4!3YI?Y^u4ei79&fCG8cWtrd@r=tPq2AmXLX$yxeku%@k$1@_)Dh2z~C?vAZ7Q83vyB*G>!? zh;aEeQ-UXR?E0*Ign}xtf=0`TuI9Zi;T?i{nk!-^8$Sznu!-68nbFA?!cx*3?X|*- zm5$A)yu~o1XDI2>F~|G?>4k=xJ-!#hi%q|S(z=`5FGi8aV%RDz-kCPt)tOW(9?IZo zd~+gdE>T?jS=xKx>zno0wjr8jza;Lhw#lnu8ZUTtq;XkESY*mDt?v8qx31D6 zJWroN0@Fxy6*c*5z~dFS49|v76A19)GLvw+y05BnL_PU=hO@WzTV21fGuSb^&cdgm zOQ&kzV#*~<{pY6(0ZcwRjl_`v*kDe}Axs%WJe#Cf?Aao|3chhUsw=5Zr5{p$eE;|O z!2d--L|SD+C2`#mdVMy&uz6IywJ7cAV4U@qW@oT*_`4rr{duHaZe-SqbP zydwfSOc+(9&nu~ARV$JYR;kX(O_I$!0@ybF&L$_+h%*A?~7b^7{omT}i zCkNl2ZotM6vWEb8#XxNTvHt3cK?NIL9~1K;8M{PE1}6C?aK&FS3R{2HpOPEjsHFU) zJ7;{&sZB#GE8pLjXPRD}j+QTC?n0}=lvV$u^V(N=5fQn6HKvWmVIzOIOzMooMADFT z%gtAd6vCN)aZt9ne-`(zb=RM>?E2gwDX3g>Nel}1VIYpgJ@ zK9Td2jRF?bjK?($rhCiP<$ncU2P*29=LJlh1+sD0m)585%bgBzI7QNWUBwQ z__5&^w?#*F0vm)|>RkY>+@)Fl#Y}o91^Wk==H04KP9h|mX2+5!<1~1OD|Y~Q zFKB&V)jtX50pw@=j|OJC--s~D%=|Z{Zlhp4Av9`dEL~F2`w*Zkv>L$3>PPsOD((O_ zX5+7)2cwB30b78!?Phf0PZ7VdS!a~P3ry+{u3#6>l21t?OibJBq;GHxS<>X&Rft0z zuC*Sw`omM}X7OJ7>PSzIcX-w4jx@31-G_?aSW9FH^=0%Ct(VH*kn4 zQW$lLr>6Y&VcuN)ps3O;k{r-c0J5$?Vm4QVz`x=yC@AX2iJ==f!Jmt(ir9E<`Nh8X zzVuFLU!zQ(?n!~b3KMg%3jCE-11-YPN(Ie$HfiaC+wI@Y)#SiqpXGKdu8!+J<1b}w zaToPV<=W9CR4Y~iG#hwdb4Z#v6QPRba-Le@zR;?$20!iqVO#~*2B!q}ws3DR`aF@$ zpf1tD>@*S2p}&l(LZ{?gGQ%v#ribG>yOh}2QDWu%i&E%fTMGf>EyX3 zsM)P1Tz;+3?Lbn#cJ`W7M8!lp&}cVPIktalB|XKsr%9yJ!wgiwkmt@GS&Yk#fR!;4 zme9h&!fqf6FF85c(p-~ymQMF%T%PC%2yL_e4WXslRo{N+?GglIz=_1uF8dK> z@`!W3O3mQ1lOSL*%yrw$(1;_8Nq!@7q8|1J;v9Y8q9UV&cAr`a4Z+w?* z8$`%0hO>IP(Tj6;P$QI}T48vzRHN%buY;a^tCZ;-1aQxB_b3n$z{<+1-&#w;ZL3-~ zg$c+Z>ys96IUxfKp4i&e0)t#^@m;K3OXJ^UydK+qERi{JdMjE^X~KP_-MkDBKifZwgwCTGkRfE%t@4kb4tG%=9hZnha?Yr zHAM)8#o(cNaMq0J%GV0Z)^$Ih+W955F z3b8c`#XkKEY{g>!MLdJC+>u=%S%TkByL@TFetnKS-bnvnU6Gvl{1%FT6bpLkj~zo8jMZ1zOj=Dwcx;sZ z!tzq7A>g5j!$TlpVj`7>DPjgKG_%2v8cV~k?{w=g*#-u!IY`F9$}RpUJcas3{l-SF zyMUP3$1tu3ltdA{|;u=RC3gqh)ExPStXg!>mj9ql{$uf{uf`*bQ92@w=yW zhz|J?6SX8S%n&9fkvlOKDt=ZH*7zP5d)__@?eT}%A+rBx`oiU+%XJ<9w z?V$ZYNNocNc{Dxg|EtEkRP3%H@c%pv=03%TAX9w?swB=&Z@)yQ4U`^Jh-WRx-^TKdALwT{4uPVYy7wU zRY;P9Zn=oxrJOoE1eQR-mJ5MyoCA~73k4lBncCI>27c%Cv~Mh-9~+h+q8Ay5M%B~P zMh*F6vZ?*szt(=7OPOE*H>a^wnyq5#)igzmfdW;123Xxqr%SiXMA`IkT=fJS?B5_X zH-~gZ=lTcVjFtG#{!1yvtyY6&7o@r*(Qmh8n`z`-&M(3PQPMCSPKk07J!1j0i>$-iQb(u16Rc1fA ze^W~>2kIT(H9c{3@?mHXZU>^c3*JW2+iF-`_eOjOc+eLQ|7#4M&7lN?Dq zJ3GxPeQpWgwcY6$>d2z}%Jy7XkSs^%P*!e-pr34`cV`@^ol8;0bn8z@My3)QD{2tq zRaLeindZf;fL3205gDLhCxvT;hWYDpzXBEHj#0M*FE3wze+{{a3IUH{%pJ0?leQN- z7^*_A#a~H`6zk2pUv0(-MnPZtd;2i3jA{kI&z-&ff*5wG^EGTC;8*k2`s}00Q~j<> zGWA*Q;#CN>FhKv>k}gF7Q{s+&#vkneE+s6_P(2d}`Q%}O+220}*v}2|mwGwsiUOr$rB8L( zl?f(1SZ-<|qBm)F)YC=*jyXo$YA{UXqS{s}l(XW3sIvRMLzN+}3_ne_vcd|F;nh;J z^9+~>Qg>LBwiy;^InF6wnbsYr+JEEi3IDWSfEaUNuwQ5GJ5hw1w)g2K?JMrO<8`y~ zUm$)D(=$db5CoXr^i*dnpg;cCd4X?THT>^U%lb?-5vT1^t(j(%y%xUMl73%!KZsbf z+a5`oE0D!7An6j{+&-|vG|c~GGoCR3r_Zmbg>f^O7?L9GUw(VCkn)5^in2>(x(1Ml zgeFaZ%uYRHVl6H^GsQ6lD8GP))g(F~D7Lq7*nnQ}o~CoU7G=J2TPBG%@;)`AElUu7 zkO(J9LOGMC2$)3RqhS#Jrn4g|hp0UgQ!vbww=!#`j7jek7v2>Nr@TlXRo7a7d-Vf< z^Ie{$yot%erH{BjL=Smcg?#99MC5Sde1xh1#^I0g%p7*4XzTHeX<#@7=m6wR#~(#} z$O0$z>NtX5knz1)X^xrqvCHcwS5%_5v5{@kjy;vl%R=;LrYlYK%gW&0*;;b;C6m*^ zly*NMghm60Iie3%YOD(nh^}RNAegdNm~kfOjmbOu?jMI%om-6}PhT%+z4n%hN)3Ki z-gx+6H+-uo^*C0^htl-1aLB;SF09H!*r~I!DMMko$D5Z_Pe}3ct*3DkfO4fK&21Mo zwVZ_aIt_j6F`yG2sGgl)7k4Y_#KRgv0vwSLyUO{7f)xAHK4GXC8sbZ<9LPN06EtTC z`(F#7lQw50yd2M5%x5JaFHTN2vF*F_S=utih{}DV(uhSn3dL0Y9yf-S_lHbe&C!ua zVmPj&L+}+RKt-m5V95|eo4pPglM@np7c?f+@o1NimiFo(s7x5B)QjyO%FW5+b8#^+596Z+Rb-1raK6TkUdnw*Zkr|bIivQRwq ziM`MOWX3fOH(GqBZa#7QE#mx>ujv@!DOSCO_6^F?{Y-gLc>X#)wDjHmsvgZ-680v> z|BKW^{${{J6N@i>YoEb87WS5q;D+{I;n^0Y5xWM~sYSx;a#J#m< z$FlNKY}XTG9U#M|16h6w9PzTMAKLwT)wTT3K=7TShsc`p&9QJXKlxQL!0l~<_1E8x z?v3+y+RX_vWG?iDvrd8Kh=xSK>%gmZsb!or>CHi;T|B3`xzQ=1J?YNJdaK1fz-|BV zUWei}k5_q``7fzLe_5$Ro8atZMCf2vQj#oqT6t%&F3u*ap;KnCjV`7OJ^?r)^udj-dLSvhn>AtrT)BZ-R29q64ov`8|^Ya-BN=V z7Uj>X27%pTa6N%YdXf@Esa*p`Eyobjm~J^U3qe)$87pvQH8j#X!+lY{{kZo2JuNB! zOSAY;oG&9J=Cuf!Iv3<^%=JK@e zc&;Tu3)=E%0m$HWwjwQxsOQuO#@<;J6E&QBx}=v|*W;&ioC!-vy#zyf<hF<0wCwCo>-12QpRZr=9+UgOl*k_ zVp51m`k4z1idscgHj~s`9@ZH9bMn-PXzH6uZEl`mqyD^eZ})sm1fXTw)cX~lt6f0U zn5w8r)$k07_D`I&W>?gXp!=4HhfbRfXb2S=M|pQ-gr8~4(t^d_eUHr?8y7G4l>1D} z0VkF%Hl$^+DMpV!;6}=%C4RY~Y1n{FOu>hDeaiOrVQ|hvTpm)N!{Z3WuSy!xf~Q7o zepMQUAq_c$S{E_N2Iu5r!8(=ku2-_iZ){|=^3htS#dwX3jF?kvz$2B92%cs_cyW{U zn;d_!WOl|Udq#>p@ueEBjwIH&1h#u$y;*J&4E-~C@}}2?r{w?Pz*I6-8n(?u|Gd9i zyytR$pjmG5sn5SrUm__{sqoY-k4S8U zFvVLAT!DI0bh0^x6N}T1s99&o3s-h56;Z4Qr)9`^w66V3A+k}cYw%!{X@pv7q&~wP6)A6(|Am5e zg9i`yQYr>^jkYy*gMUaf;ngBVx&PVD%H{3D)7IWu2pb<@VSW7QR0w}xGWDA}oc?Kd zveEZ~&VEjg`Y8e}nrOBoDNTo2#+t&SKfajtf{}wGJ8(xiXH8RBgSD@ykMup!9kmZ&+ed&2*{HBBv2r;ff?Lyml-dqc|oZ_Bpz8 z#$5WtBMHN@A%z{+D(r_IBtHU&g`fE#w?YGmb!<=8IxD+*oR)#p-j(g2vGflcz8gJJ zQCwWnbrqUius9}#lj>f8;mA}_%hxZoT^w~YIXbGSp4N}gq_gc9?8VHi@~6eA{12%Z2){p={RnauVCUMGJbJnoj3>b zMciia-K#dF%*>wV8Wz0C8Sd*bE&k* z9`=h!lDwSDf^$Y{`N0B0)KjeHyR7TG+YA|9wV^S>+xHHoMjd{DvLSl3{yx^a`{tDv zi0l^j<0`7HdxH3Xw|RqVI~YxNIm&udDiebebx8-YfyjQx{;1N+K8eSuo?e>meG7rJ zq4z;E5;W2J9sec_g-(CpX=Xbb79G>X#6)I8*FcgYt`fcs8$S6`w?Hzwc*C*H{YCx^ zDK#+bWQkNY#=&3ss+x|xmSZ#dRLoN)JT$GAE;Cdh`-VPuQzC=E0IBmz`;$apw=ckU zQM~rHfDevF3Pv2hAHhqne7XF{#9W=&uH6?}i`)+VA5glrqoeb|R%HT5FRv%R=il&8 z-I1|}m@Z>d1wQ&})!s-Nl|w0qh3wpuECS_K|H2dFbo8vlM3hl1 zDdooXs>y_@s6y=LT2)rtJIzj$qwDIq{!${Y!B8PpKj#HdRYJ}*EX{Nsl3u0MR^OcL zup41JxJLHAop^0iUZu3%$m;nk;B-U!?x$e7uJZ=z7`S(yYsOKc z0#&N=6WPLgjezfPXBK{|Kmv(@(vQyf_g6G}AK|ro?8Fw5MKK#xn~Qt>(8D0P7RH%x zLR2Ppcx2w#tPgzdcmy4Q)DM0^Vd6`F5KHB;I@kxUCZ57RpI8_*ag%lR#NU3`0mPp( zG8i1nqF_kHKeS~5kE(xPGPufAD!NtjOwE0|EPeF5pI%Ed3-!oF zk5y(iTAoqJm!Ka>%h(}jc$?l15Oiw*%ho2R741OOpSCngpT(x9zr@TK2B}1ipj^5D z2FvQ}lEo;Vsxj$W&5t}0$$}ELyJY&!jzoa6hPRDn-AN!o1HQWAXR3X6C^q~k7n6wh+ zYhBHFy*fK#f+$nVrHx(|4#g351QYX=O2h!&)wk^6U^35tPp{4~bmgW;!{`><|a!RQYfWX|{8# z!RV7R_3iUU(|7M1Y?^oL4L>@MH`*b69@+s$l*SCg`H?tDOD+kuNKBnMw--I3?INf-*;r< z>C19c4H!Ze3VxhCiuI7c4x?1oxf7@)#bR1(bqnQj{wY`cR!UjKlMrlY)8own>}flM zDO*s_!KRWGwzG{_D^{nah!N^YkDgv~-Biwzq4_1X9N1cp!S*kcguMNl*3P7pH=AG6 zIHY+Yg&8}8Wx2w~FK^RE=Zh~z>T^T|_&89UjPao%Q|+F=q#*-mz)lcs3-qH^XKC1{ zx~tEt$=@jzoV1k8EH}Nfa!V&ZBek-87#V2-f)ojtZl|^rR^?wtPL+^Rt;!wR94;Jj zWcMlKFL_;mslG%8oDX8v%0e&?Iysq>zZwu(PdZoW8n(Nprv?yrB~NB;(DOW@ zESL>8{^f51xtVnm%3#%B@wLK!42xRTPewybXM*CoxvzaINtYg?fJ8!@%_u8YDPBkL zxU30L_q9Yh07zqCklhwj=`RXzrOt37wP&jKXM1c+TcOOvaSs2HWH-#tHwrlo-cB4x zOKy<~_7zd?t}0slacIWm|O$PDPL zYw(DOKQgc;~lx?y2+O`hU@J`#qL3j>X0e$9E*X42*?IEj2z< z{;?~YHP)EG*v55FEuWGWyAJN|Zm?_@VbTiB;APZy3V&9}Twa>k^}vvanoe8owffXB zk_!7JgG_s=oWKQjjwM-&ws(Oq1c|Bu;cT_jKTRginTg)7+|ra!SVnskP|gUq=<*6( z#vQ-{(Cz~aR&S>@&dgQSIKZ7=Ug=ev=TIps_;=miY2Eqs?jgS5+8*I2F7gky5&wE# zQNyBIq>!?^P-Os_o`}cPnRaYS{Sve=9mU_Ie$>sOB zQ$6~7SpI*w0DWOvyNm1YyMJ8x5C5T`y2zmuYpMxYHJBioV{EG|l`NyDR?yQ=>S{-2 zkwsOdUL!+Z$XPi(;`X}FYu6W!b;_D7^JC8s(y`o9;@ zD5kA!zCq4d>xo$>5mmul*k;elBK1pkw$x6?rskr)IA$Dl2y_f^wVGa@59u%#;FFIaTYD&%q6pCNGp!WXMW>DpLAtnbi;prCVY#ad$2Vv!KMLV*@Tu)=?r z!~M#%hCQKkVl?AAQ481=Q_!M1e3 zs(_|IG*h(Iw2Q$P($8qHAU?AyJuDfoT<3eiNt3%=smCecbNup|DeNsGQHI4~6Y-RQ zH;2nb75|HfNKfNZ7t+65;zXiVMsi)vy)?nlD{E3l0)1(zxW`aJKcUV`?UCFeqf@r> z_bi++GVdg_o^EpI#vKwx0_z_WdFW+4&}rfr)=%f0`}cw$?qzTq60A{bd3*mwB`Ia# zZ(p$WvIz!?>f`*frG~fJxv=%_RxZ=SJRyref6}7GVN)xx8R(5u;EUS zbWxD)WZ)6s5;l=y2INCF_GWj+5<%J)Nu)e|B?dh&u0gHlJW{@CFr$`vP!OT+-7T@U zcj2SbCG4nXykd{Kfvn6r;m2<9^$g3g#uH3wi3hqp^N036DwTYXyU?R~(eF47xS?A( z3TU2IFOZMLujvHPMzy{sVJ@f4NKTL0s<*Q&xPM`p{?+OKp31q+o|$prdoPH9)P;uw z{Kzn^4GR!_38_Scg%o7+x}>6SjVI(gM-Cq}ut!HMO+wMi#K@M>`R1>kTts4EJj^;M`c^8+^aF7CeoK)F;7?4%?$2OAQb$vbN-A_}upKwSj`fq} zu)Z#9A78Hoc$`y&tsW%|PD{1DSyKjuE|xu-)d2?HkGa3h(TH9{Ql#fQF_|=s3=MYy znP0QT*(if8uQ`Jar@rI#WrPNb02wB_vZ5%hT_h@c8gLlpSgoa2T>j)LqmALHBW}5* zKWp<($otS)#*#^Y&Pel{6-Kw#ix<@Cs+HdG!SKOv9dH&KnjQzfkAf$#g!KFb;=HyR zo}YkH5R5$`W#!GZ>{I@-=P%FMRCwR4QvrVdi1-i|iFfZrxLwu^&piQG!Z=%*>36*+v1a8MAh!D$u2NJ zRBFYcR>Z#zecrZZ%@=1HJ-lk&#M(pU< zyMSYmGb%<2p?Dn~B&R^oYdo8r_vx8X0)~VafV=k*=Tj9obOSn_d%~S)Ox1t$gFpuj?Ob^mG8dwaawf0 znzQ@b(QoL|m?_-VG0?gA-^UHRA_Y3l<~HYmx#wWjNGurNUneK5L_?dNOuRSrKgx^j z&D9xZ-NZ8Ly>Xbd;NeZ0I%W+ag+rF{^^UkI9*QXpMWvp*6JL;&JTI;m8Kc;eaRQ~- zI_z+`IL*uClW07DeM2DTt>(YlogOM({nUe)A2S5ki|n7y@w<}PGx{-#+sDHLJAssM z{PDE!Z9TW5R$vfvY6U8RH%~GjBYMk?r?{JaHcDsOESwPMy$Q-BY| zs%)#`77zL{Anh0#eMpu(D;B+oPkQg@#QgUysCTdj&x!2|9XtV+&yNHF3yO@Kr;y@2 ztY4mAZOmfZxWR`0E?MND3m)l3ZTnr3VxV;3N_|mzd}@q4if)=c4+QR+E&*FOlgn$q z>~nc34=XK;kzfSRf3Lh`R}DnE&g)&uRwJb!h}V5fVvPlr+mOthp;M}{Fa$V9>Y;_3 za!ujTBG0|4jo#3s`f4&i9)o5_a6O8d9;|e^s-j9jEeWon5h6!3Bt@(*hw^H=y9Vn` zvW0vlK-yGM!mElhQ}+LmHv!Jh06do6N3fE%-f_B{a+O%^)0n>qGu!`bQE zf#Y{AUV3J)Mh}ix?Hk`c`W3AtnS2LD!4(3U2o>|C)x>jTHxO|fMn$1pUTr`?*FK;9 z=F(U@9Nspl=P?g#cM^*vm$#Aj_IPc3dQv>MPPxjpMwL&l)l*&n>vz!Fv0nXd-7ZfgNH*zvu6xYSb#J9;8|OJEH<=0( z6H^R0(ijzf3c3u8*rXIot}oSGe(z=!zHHA0aau-inui8ZVDbWr!}NMWZ}4r4)25bT zAMagT$SzGiTjMC4t2v8qxq=^23$2Eppaek@UoL2MogZUI`-JT= zqgQZO*qe*ue~fDMSy+}soL9(A60g4f_>o@x#)Xnz!EvN1Nt=@4D_2;hF&5zAPrkAMhuuR3=9m= z&q&u&FI|@Xd=<~CmJgAZMi?s2T`5P5_>X1NzrLQ1_~H_mnVw0Do0;F|P_C#g=Q!`f zUpp$FR1i9&oT2y=g>oN9G!(9J5yIH()<4%E9Fu96_0J>Jxov;Lv zwy`lRKVPybRpnr6sV#`d^u7wn(eRt$It+rNKHz$0mE+K5o}!55L( zG8^Q2N--50BzyIDP6-B!d`OmoD4@mb;bE#8C+14xM|IlYzZCY<1W>u2!ceXK`b0U%# zKYL?NR2qzdH$q=H6QB19lf*v_;ru_*!p~Qj{(n!2Jk0BwXtI{_vm_{x!DX6S4ldIq z`L=(u1)g%!4~A`iY3)A$66+g87(kON-TA!L@Q}eEX6p%Wc2+L#3KSk5mKWW7wG$HT z6&Wd?SFD_=?(NNk`YjyIjjOz0%Kur!K<(q>(^0QE-@s7Qh_X$_i9i*bRrL5AJ$z96`G z?6iOKCRLeo+y7C0^l5fEE9?7Q`}q6ax#9G!KiVpRZ#3tgG5N@M4`wf^X^ivLPO1yQ zxhu8TA|RexmpxB5ya=W+P&E(1F}ECnHa&$*z$s)22?^<9lD+&HBq51v6HItMLQ!kf zNEf45-lc^8nv^N&71h@m?_gMCheev%Skg2?O&GUQZ<46eh#nk zjLk;73nGRS!;Ghq@dB4FvNAa~ZQX7h+F4!i&;K2)+HL?FSqy zjAWgcI}ba(a%xX78A^*`Q`73$e+?-v9=LgM@xK&?xP{WqnI{qXTfMP54YZQ~iqSx&g*xdt@z<1yQa^w!N+SUGMp}?A}m9 zj$LmEtY*nXMWc%ekMif%kIhabipS&js&Uz$%8WZlo^2D%Ejafa&%LgBse3E4BoRkM z7iuQW?0y4hr-BZjlNrFHlK$49VEk1+DRveRW&lf6Zg|_OOK=ZUJCDbqt(gL@GsVt`Rj}xujF>f2KVxVmt{Frg#0?@{xGdSM%$?D&-vvs??!5(e3N!DkX_I^~@oId;8p!^j>B0!zR8!yk-cZ zwGHC>uazeTjx@43KW1W%fX|HHr5b?HU#8AHo@I5-mBi6j8Tf?oI0;DB)#1$bZjr=@ z~>aDR=@u2jj1oNWQJzgV1Q&Hy3siZ)NY?&&(7Q zJH;DpZu0S&?GG{)^15F+(7w{hsFaEnmytnyCB4O@laOvYN{pp$S){6RvC#{!-&8)S zNUb}@tb^_s_;=vBFp)kNCP7^(5d=_}de|VYxx~a|8twPWbiPaYHw0Wxv)nlwpd3YJmQJ(>@yNvNC*q`&o z0&6tX46Zs(5)3YmYNPuk5I_(oevdfGmy{)r$G{hP41bmqf2sz`7)ucnm#SzVZ2nal= zH8{HgVh(evV%OOqi@wpd)3t)iLeQN*_uE$;Imw|$_6>zYOC#D0N!2R??yF` zr@OG5U7n?=*p>t=rYJn*%heVO!iVQ>{xp8x)AXOE#E*sAUlqfXHL#BtH=>Xb1_3{4 z3aiQBM$wE_n*f+2{7;0RS=u+oX)^s8+{4K!(ubXCptkQM_SV+w0;J{Cpx@g7pRs#@8&HN46UaYdzlQLLV1!#c(d7^|0P(mA6jGl3(-4p-K+ZXzSTqCpH@+j#y#_ z6-Bv$C0)Sys;!4B`EIplv{-jaUI~?ra!z zw-M>s{hl7kWsK?QnLFP9!#Y}zyP|vZMSzQ8we3k)DB3A8qsrFDq zb@j=FB#knOBG%6~z=CAp`*)9-Z$SevWdP(93l0wc*l+Bnkdvk(21Kh2-gUq-6b>vT z#f&<*@?5$F6)j}$)og7A&kt&YtjBg$dR@vDc=8M4ID(gIy2-@B)`-)zv7L3^s;%9$ z7hT45f94zP&2({7+VG%7S*)jCb;yh;(#9vApRPm{s#e$%FsM86o3yg{RfRw^E*%L6&FQS^j>0a+6Uo$w;5J(+hx3H1WaxYQeBVuXU&O8fkHF z-4&`Q-TuDIC;>1pS-mo7lWpGf>^2tGSDsbQ^O$!&_uL+T!|8zD#v5Ep>dE((gqu%s zza+&9s(;9`!DXkN3oeRqST#&^75b}`sEO@OTp|w+-*n`T8=>c#r&8eJI!fV5GR2N_ zb8|~-l`q`clMY%6tyw(7>oqwiK!6F>a`28HUUFf0(6E`0=4NJ+#vHM&;DM#-z^r@? zq1zehJO81yiEz+lwmJ!U#bxOq_LPbxNT07)ePap=%(I-`p-p0y-5R*mQd#Zed*4+n z>soGb2Zn{W4k_&xtU+II2S zCemN1p$-Lh+MXqehljnIFjNb(29QVx%r>I!D-8;vuUk#eOnKuI$*miKz=sxmMqWf6G(`k`9Ty!9R62P0gr$N8G+a&OzM2M@17s5CyVx z_z^mkaEh*s`x=6YPi{`xu2yXti3zDAwLE-c<3GnZ1BJ#X0XMfB!`Gz)n#EmsAM&7$ zJOg|XW=Q*X4s^6?6AUSvfqFCFyCcO8HZuYnSct4=udsB3!{B30I;3$>VNyX-3CI}~ zmOcMq!S;M9pjxDpo-eoG_oO^&Mxv;5AX==vt$KIx-gBV46<)W^>D!aNiRT9@iHx?P zq5loen@m^OH)Noie- z=S1ezE7TYy0HI=fk9n_>z=Uz}F*DRZ3}pp!{Xytf@T_`jD+-eQSB>-|2fL4EtactT zsA9(`Y0|>MP#gyNz4mWuZ)Za#EJW&KCrH(Rs0cDx-%o7)nIS8H4#*U0*6DbyhZl(p z9Ae8aBGp1)=P7zLN$L zMQ7H&g(%A$|MFezl@u$V_V?R5@17BPT`i=gM)J=#dtpfkld(YBA&f*wL$%tF>P}f0`l{^Xorj{{3R`|-z;F~8s5{>N zyc|QP&NL=%`h&9A2RBz5$$Xf*PgIbn(ekFb=lCBxK>+SajqAIU-;f?sObBY-8@M(m z`=b~sU%2m(OY&&H`V;lK@p2%>EBf9*zlJJlG~FBMP^`*G4y64iuRED6{DzaTNs;6O zm7qt~R0i0}Ht{X|`Vrq`J6oKrb+S9}e6+?ZpN@FJ%kv-PIR2_djAj1kV#3DJ6MkOa z(+7WHVt`a6d}t?ftEltM=#n37cD1*{?D~LY;(q`tf;&)(155>jo9H1Kckw2)+VSK^ z2by}w91er}3z)%0l&Vmy+$uu?%k{7F8%jVRB)1@aJaQzq+{BTWnCOPj#pKr+7}iyL z@hKV>4fm08@W(n}rv6{#B?nVznNJdh7AWI)-n*TId6zC~VZ*owyIb*LlHw5m!w+(H zC$%ME&qQeoEEfAhy$=?(Ci9@N0Bg6ovC*$31w)Yf)%d7x#yJkLL)vM7CM7m9(!hF> z?&|dJ{(dr3n4^EJqTGUE!Bj#b;z_n!q%EJs_l*Rj))doK)jmGd3N}0KFY->0x#{UR zatiB^rYa7g4@N}L;&Gz<46Ijq5)s6}bxV$&*MN`;=@US-lkw!Oqd9M0-b!W*^(|OM z^JEadWjp`C)cV{hU%aFCBVCX_6Y!Tx38UfDlM%f-swzkHX`Z*4xyY!;E6pUYKbOp`A^klX{bZF15w3^?(jMR+A=2 zmDT^%0w6H+u&wK^*Z;#FzeBLcPr5gS;BxdQCtW){lsj%;mA;57o~M*wj*NpUKsu}r zBj;Zzt>2pz>mM7V_QW}q5lrdr*{>xKy$2~R{Z@XGX@w~+QL=N5ZP=HfJU7eg7rPI8 zNt7hhzpzkArm-$? zjLhVF79Y6(>H=s;UGO5b=UYEG05lR%wCj+BTfo9xu3T(LK`VPQ>o&cWA*=i9>9-<0 zphG(4+1wNYxgJY3KP3U$S_F7(e2WgSv!In4olKEX%L*hHJ2W0b{|b69z>_jJcpLpz z7f(Q~A=9F>o*^vIZDzH&zhViXF&@*C8CYzlD${wFih4Fz70PaQAkG_)Ar(hgq$4*x ze_>fvs_Pl}XeNotePz>)@*nedGvapkp1^E!4<2X-zC!XBIIJ5Le-`6d>`ruV>@WHu zI*H3Jii2!i5pc(30q{)t{yM|>t!KN>%CN0?v;Uf?@)I>x~Exz~(WMUQ|bGPL} zmgM8ZG31SugH#DA8dQRkkT;SRrU?eCNHFq4*p#&wN}biN-A~Gw7)H^s`yMLozinVL6kMe<3<)`eB#2I%xl*Q5KXMM(G-^D!QNF)rZCHm_mKcYlJ#7# zw(xR;0>OU%dsF3-T=q|5VD>=u>ecY@YGUSg%43VE`kQCHG^tUe4L<3OS{dX`JDtik zcy~89hjryY&E3opI;ZsidMe?`F$f4`-ap+?01Db_JPiT=^iRknvx%ujjORB&-+ zz&h;>Hib#bS`Og{@4A^vs$UAZ*r^(kOl9+S%N|1imExj#B6Kg43v5>El$dgP+H?OF zF%(8&?fnI*Wvc^s4C<$7w{^aX@G#54Kt&b<{H|ISEQ@t%d2os^cXpx>VEkt~eW81M zP;x%o?pN)fTrY!&v#pe<{EV-n5ioc`N(_hBP`td8`9uczm?dhLQB%JMMtb=+Ok<8C znTUu?D1{_`b^pbw(RN_g_lZ42PKRXS%pnQ5oqUByeF_nLAPtUZ;*;K=`H|buz@X+c z)&7i3rg^w2%1JD#`|vuRao^x185mfkfTuSHRNJ8k0#6uV+kjR?9&)PWo!wUkWk)zsei5!b+ffw6maKtqMFF-b`9dZjriUYIVo*K&Z3*SiZ#5_&AOI2p z9Pf7jtcW@f7Mq~Iy5?vagmMT;O-xj1{(MMxWVo<=et)qm;^TuBJukZuU&8k}cVhee znyorp7Vjm;Yd75cRy+|RzBXY@<>rY#xdO}iYKl^oOs$_t?B0E!i`AwB8x=H)$xh&s zp#J~>cxW0-nNa?YMQOr8elYzTA-<%49V9lflwh#3Qm+tS;MlIPhoq*dZu%X!KT`yP z9Bt(H%h_LVLZ_-#ZSnaF<2K?koS8`_8RNnWOi27Mh*(Xqb-|oVb9-9ouzv)hh5+PA zx}#iwu>p1ziWn3nrK6)GyFD;ce$lWnB@KoC*;l6J@hU|RzVv*2Fdm1`niR^PB`ejG zl$CoN>N0BA8;62+&jD|66fXcW-aNE=MriUjFq#<>%7Dq^-U~lZKI~%Dt8k26 zy#j)KX%tfUrA`GGCA4aC77IL=;}uaA{OII6WIoIHj$Txajd6K;t?|)cjHMvy;4LkB zIj4VlrS}LE&D9)?KZwT+PD?f$DhNX;KFxT9ze6+kjC|R=eZimwxAz?#D*A2mdW3w=-n1^V z?rMQOdpPl-g!jE0aLB3C@O!aQ_DJB%6~8tmgOpb_<~50axhh|}6+kq@>+uTRMH%Ps zK=GYS9y6j6Ujo2Gu}O;N$@~H&e2s!BqiWzUBvau!=YZ1x3>>n< zG1|qi4L|KR;=IKilm>n!Qo47M)jFsdl}VPb7<5@1K8``ceR9926@qA(gZ950t$NGS z7Ztvj?5k^(93o-dgDF;%HIV9qwb8tJZBtb&+B3N_H`eeWIr4)!I*`}gm2?*4H7W3!;G|4AmA zSiN*0_s0N+p9M*O7#b1pM-Yt=s|FAM1$zL5BRDzGbV|z(YZhlJ=)UK?VnW^k4Z4wQ ze6fR(e_{b=TfdTDUU5VOI*09@C?~Q=N`GaKN0L!ZI(Jgv7DF5-F(}>}o14#_9h9NU z3eX?aOhD2jh)Vb!M?))YFjrnCO>+&>RrcmAF&V?~CB5$os{_=0(?mgda(1gHRa8z6 zUCd5`{?YGR%SDU*8P}wzuZ;u*J>6hw)szR0%Of&Uy7I&+ zI}n&*!F}ge4a~Cw?JY?l*Et2$&~z|@{cqwI{*KQ+#92L=Dn-#YkX%i6j&*G(`zw6# z=KA4t6pJHoT~l+_J8h8^&S0|$nh@varW?ObrSVr*3h@)Dvt1N0>-@et_|8~I)cB?U zms0Eou6ZqNRwW%>)vn}Zxk`YKj|QQ3zNQQe*JVEB@e7lZEtMuc5Z3t`80ZMCpuL#u z)dJZU!jSuewBbK?ri{W5U3JHFE!X8@rw{l@W(#SBt4K&LKZbE#(k|ynjEiwIYsv%j zvqo_|oodL|s0(g5kts8cFA$om!k%G}PNB8H@_`Od@|uLBxSSkI1gbxE-*gJ3S0e&> z-E-swl<@92py?VovT6O)=3bU2gV1ROnfO}VW&bdS2L%vTu+l2we7a5o`WE`utK^if zg2XGd1Ri7N-wXXt*L|cXQpT8(8$Fx+`k&u;2yFJSF@30 z5S)tz20C@?%dmrsOCFHQPGt&HQh1Pwzp+UFh_Btvz^{{mv7Gp>c~0ta=(S0Qk_+h4 z4`Lk`YAsdrq;UoeL{`a@Jz6gW6b4o?F*2k^Gm&t5jxd*$R1pKV8pRVf_w;=?6-(mN z)yN1#1--7u|&VTJKQL8{v1G85bB4n#v>!-DRLafH|TVpAvnEk`UxozI}((!K!zZz$}BhWWqz04kk_uQV^ zMcGPMsVn{R`zunwpZ@+YuSiHL1beTquM0rFilkZb=Ehw4W^tPn$3vapT>ONHa6AEP z(?Z?5(dq@2{lJMR!2JIPa}Dv_J6)JV?x;@hA)lxHPY~B&x94RjM)l24PhBABO8s7-x$eZOIFxT6uVj3>t z|9&M&F#D20o$QX=V*GtJ+DD@`h<$Q>vH`Q`=)=G~NPNxr^k2oJ;89*^6Ns598_GWY z`>Tclb{Gey|Asr2#V{Zjl-z_Eb)*h9Wr#_3PF|CSuT*(Zr7uxN zK6kbwn@88kR_g(SF53ulxu>CZb3{Y}WMfi->W76gxrG^WXXRsd&=Lm36L8s$PZjCG zTQXV5w^Tj_IQh#>*-*rYNaK=$NLTE0XIE;VYw`RkBnt#uEiL?mz|c|f1EDrk)8TkU zpje}doPs^XxHY6{UYOr-MA*QBud2fo3LICcPA_+QVpt)E4-`g#z6W|ggsqWXm0X@r z!kH6qmXSw%ghG4(RoU3kP`C=IU8(lIAFwMZC^$JeW#e-kwK~5Z)zlOPY0)v$BAxg& z(}b*-9)P$H&CbbbJQ6#7AUr96;7Dp;Azie^yPJ=Yn|WUd$^(y-&1$w>4p7$wwgVy9 zSKrVx-en2IChj0Puen7>Co{T}qu+Pm+`MGy(5Pqn2#Y06u@-MMM4f{}7mJCANgkO2 zf}9|a`Ft@Nkyg`qQT^J2|HUy73@Cvz`?;5Jb7E^?VV~LJVRYbCfAx4P< zwtkTDyM+pU+{9H*kXi|L#!Bdf@VJ#~x#Z2Ds`AG&Ysq2qn4&GGxa=(i#J25rC)ecE zny~>vYHE|4itW>-g4q@8ic4+Jj9(tJ_fOC0Hm!uG`C2t9f$)+M!~$>m`Ij&wj7V-t zS zbw+lMJ#xS|5F*3sQk-E2RX}6zll2vul6!Pi6OD~$F_gKlxWiCLh*FneyF`654|M#S z4@N~i9<9I@oELyQ)yi_0f6j|V>c1}UCmgok)|E|F$CD(jR`*Q)n ze*8SFa(%kf$7_QGWpK$9T|Wh&!Z~B==;~7PFLjrS6HzkUNN@za?O&&{vfVCcSR6;f z8J4j(C<-}vV?)#Tqs-dT3gL{j7k}?z{2fqg(vDv`!Tx11hY5C%FUTvV@O$k*GQ*($ z{P2`YD2VjHnYn>LX*E7TtH07_zUKOtb4F}U5XKv)fi26q+}C&LbJ1jenwr0|3_gFQ zlbH4F44`MB3@Bya`7B2Psgz7cz<^qv0Z1Iyv^HN zL&f=07dBRr^u%yLiQ~P|r_XYI!d!o9C!+I;^P!cRoGp_C1xUwi-W*=MF$GEf>;NxD z!o_WEiC0Y zg2Vxd3UzR@;)v0P1_)0%s?Z@nt2pFmt;(yE<7+k``uoWufQbW1?xm ze{+e-lX{^W>138?b3^35UxxacQT?>}3&*cxv;aKBd$hu8VTn>)XK9RPkw+@w34)go`c;8RRI{mBt*=(sQ11!~NW3 zuUs=bnoF-4q*dw}8S$cMw_7&Utl7$zHq8)d4lTzkWlTgeX|0>z{LBtZ z)Q$YEUmWMQXVfppm+-i}x=8g1`$5z>R#;dfJ(&%T@fpaXlF`tJIZ&!i?dnFzU1_F{ zPK?d_m2)lMcC|1@M?lI_+2nj|m;OE8v~fY_@dr*^(CTzzujgB)BfpEC(_D6ok0Ula zTCWMKJE`QX%&x8xOx9dc_&>ob*_vjS;j$iKv)U z@uz!o7&^HWu&>t(%9Ak0ZZqh7*XZykpggab3cpxA!S)p8nXZQJRcB{Pi4P3MVX%u`x5PH@-DKrcayL zFQ>~PX0DKkh~_)AZoTkWJT{Ny?_L1~W{t%K5+-B#n=KOB%ofbT9SN)6KHtxLzyXUE z1qUp;b|IA>ERG1`8p$PsSu?f;JY_Y3`p>0&0cPIN}^wD@8)uir?S^dnA}lM2md38oei!Yu1&o7#hv z{T7HI5VH9?H>Bp1CFN3)Db_r%^NyaV1W5u2r~^>BpC8ojWC57W^2V9ZZh25;O!!33 z-s^Pnswlig4+BgMRH9^KQwF-{x694??+A#iKk{p{58%A1azTUheq?S>O~9d#&i%Aq zuyLPam@!&RC?H!1 ziv>J8D1S@cC?UIR2g`4V1ad#^%vKbG`$=oNpIB0=v7(xVL9;m9u8n3U%Q)v71By(1 zaWcH559fD-8gu)QuJ5Qx`3cbBet9y_ADgJ&ye!o`uhHud5@vZ(=0cx4sqOmBA2?{U z>!n0@$29XZkkighnTB>w<|3V<}>9NH0 z8GiokhZb`6A085~%K2<@SQt+SOJUBSqWkEwPjtcifTX9yUe%{H{>4vkX;}}~mC9!J z^!7Q7ki4p@D7xu6k^elbxqO@n$l&m1THI-My@|E^O3HA3e8Ju0R>64T#t8ZD2Pv=! zZK!XBVBW5g!ptp^F1M&x=wZE5nJLGLNsTWy{#94KgWx9@UB}}(enKM2#rK)2Xws}T z{NZBPe9CM%Ixokv>8VIL;Vs!8_1#7F_uG2*eApEKvH}g*{ zfl(QPQOBN|J+?WcE=it)rKV7#2T+8Du0|DFCyBaczO!dUn=vWt* zCB;iVog8t>+lTWE(}mh6tEJ}8X_23{D+c06BywF+JkGrI?K|zU2Q6iF4KUmiIc+P% zhEyr63(97JD^v9(pi`P+$_*8=J{nXVr0}a~kp1F73Y|+dmd2<4xVt#3`$0r|af;6w zvl0v$9GI(e8953he!=+xD7+V@> zSba{JD%aJd@_tZ1Jt;Kil#}sz!L$E6DxC|@{sXq*OtDd@676>OTAF|q>}Sj zCm74Iw#vvuH#a$~3=GnBHpCR5xQ=;eoG?&g=)-CvDX~0VyYb+MJrRgpA!%fkJyonK z!=%?@;nsQqTsgPUppbYaT=1fx*~2IubO_??bacf~D<3{iKbrj zz}xzu(%f&FdqLaJcl(s?X9LNszCJDddKJkBOYR?{qeuHonO_cGC~!%_B~-I|HME02 zk8&1^RNHE7MMbxa_(8tqZqG_pp3N9Qr5-dM)mN6poL*Hhg%nO7pW(^D9g3$9{*5D{qUC|(4{y2sY46t1N* zIs`*a)UT$0gwCz4Wv7fxob}N3v}I?6vGHK|PHAM!ZnvbS`O^xAiyQ6+^|i`u^5))B zqraKjkcO*?$eMuAP|=9dz8mQsKAyWC;)Gh^M`7DseV<0*&qa7`FJsxr{NT-FTWU4K z_}?=L3hU?$vwd@52EJ1{42+LOAHSnza62k)4KJ6%w5$=a7N!knw95gRWjzYAHqEHK zsmV;KKgX*yR!?Y>DWredvI`2TJkOX5-gtdUvPOH1x9iGnEh7~*n-8Y49BgY zg6zmeL0Vjz%Q3ddd$R%)5sg=jSae z7L;!ec7|u!d?w0>PuIBM{pA`^Rm;O} z_mrm?)CoAO-rlg;XyobOTJ8U|_)QLs=d2{0kSmPTKY*-*RJ_x{v;uPD8;Ca`9|FN*eLPVUMu;!Zb~QL+$toD33>`QIoqY~-xU_7Re#nkW(e_^ z$3U|^hxySzI4*Bcg{N7Q-y&3qQ?!Qh+_P1s-@X-e$Kiy@`rd3Yp(se|4Z zdwlYY90||O#WK;lWsSQXPB^PTRK;l0 z;dgHq`r;bhgwN0hZW_Zv*d3v57Mi(M>2uM*z;o2;-{ygtGKq}@igp=;%x|$ws#?U} z?5-Wc1lT?jihIWR!?o;Yu*4+Z7m9$)kEpIboUi#YxYFP`tNf@33kO#O1>e3KpyhHU z139&tkOQ0oR#ONDJrPRYZnji2=Ls{+_u%g4rZCnx^^VKJL6b{N+di1*61SQar&QZZ zaLuy#7a3HQt!K1KxsJT8l@n*IvPFEc2R>;7E??9rVHYHP{2h5rlZZ5PAE;s zkty-4Vvhf|NaY@RrP$|5?0bXBVePZF}~qcsR5#o62(_ z5R1aVTqx#yRjZknTzIZ%2ce#G)VkNyR{gG~%Cv_0GX|jC!C=gYlwHy{fBdZt zPVsRQvT9l8LS918UEJOAnro*n@Y2H${|_8O`$v9r2^+!`mDYf3Qv3gus%l}i`M!{C$qY}J-8v|ohy^jcQ(Rx>U1_m z`8^TG#O)@&l*JJVIE^v=De0vR^gIuL>deH86Z>_@O7=TxHaL*MJ%>Tjlh0bL+KGyq z>*C_eOpcfOfX1^dz}=yE7c@gQzhYWSJlIEL39ETw%9e;|R`kcR8s(w_S>ah6GHOG0ZF&xh*+kW4Q*Hu~qK-Qq>dTuS=7Ypi zez1}qb}-z(%hW5L_wH zk9Xay=A(j^OAS?o{B9rPC}3YEuuZlKCB2cB2n)V>y4xqIHvWa^{wGk4&M(S`PelC3 z&f5&{Hbt!Kw0PImL$WfhX*PDjLvri*5{$0p>dhd!qTsLt!x`oP6wpqvOsrg;=5jb~ zIwjZIDJv`$H}vNYR27@_3^dmAuh!=g^7$z8Yx7eP6Ke`1bCYep;_3B0UP#LxJfu^( zQSOG@}W zB5TtHAn@-=*8v{nSn81sUnRIXkpG_tGIBtHS!Q!@+VY7f@ZC?>QT*?0=1fEDz0Gk! zvd+Uys%mku&f8*F{7Q+e@Lhi_!P;o!p-_{0sEpDeqNvwHsnwp3K8j6bQ zlw@SWds9W{`qbG}>-&pBBb@a|V&^t8e_B53G&zfST>gk0hF(-#?nd|Ap0+J-|8?K)EfK9!wr3QN86fvmYw4+KnV7yw z*Txm>b$7ePgj&Py_w}p(=6#;0s?gTo2oEWZIdaWvlf*m5+qEyMtPZ3)spT?4LKMqP zPJ4O{O?&16cu6gFdNf2StfnD@v4;O)0W^f*6{jKG?@;_#SK>jZ9*lxcPxHFd==bb( zi`?av);BF(fl^UJ%3y<_s3~X9gdVVq8ITm^{U?X3jQ5iTx`2Xw=AGBswTsj3nH(N_ zVOr@8nWE9`QNqtEip_5%(Nlfq!-?f*?{l6MzWYLEnPG7bkDX9p7)Z%9Qvhs`=7*%_ zx0!GG))+WAlwc%U0*G3Z&Jgs@Rm@>4K1Rm1lT?{{xA~!)6|1`;^dOLi{yU&yI=?LE zdAO)^MCkjt%L4mH(xVUmxh&)EYJ1~d`X`?Z0I)vQZ*+=^_92DO&As}rRjZth+j_Qo zec0seZkF%GW?!jN_)#7{(2KsU?a1kQ#rv{cTohI+PkPgKtJzy38|iIB19!?YpY4LB zs#1Vca%JV9nXmnT(`8rS{@FGa zMReMKe@M3eDv=sVjx#-3yJ|9?b!M(zppB;Lf){C9gttb zpyMDN^75a_K&3qSKKv!IGJZw)@YV1UZgP7)7gsnSEX;Ev|K~T|-DUR?xPr{nMXcTt zRO-6M3US1~o!{?^p+YESR1u)>?%lWP`>UN)qf7PD$ft`N2UG0%8Gl+gBeJpvp=&q}#RfkBct!JrN5R9aGt@@%)hoTd4orahD)>k6(^>~KhosHXsU9pWtYn5@UNu`uHLMMr z&0uUm>&}EJqV%HaMWOk|Top1a%MQVO<6m1GC}EMluJUDS%FiQ`w|^s2s!jJXAw9X} zA}9TRcX|+MXM7nVOqSjx3VoRh(kyr}Z9ZFuT@k`smFo-)R!$uCx;FVdLW2)*ZS)b) zjeo9GSVQi+5VIUrj9$9P%;C zOan-Mcd96+{Dy4emp1$Jq|)>b+j$cj0lj{^<@%WW86Nww9ZWjD=F$7Ie! z373$^&Tl1eZ4xVPZW^|y^X@#$wul4#c@zqMVqu$@bqsthGr{)zi{NYrke;n-12Hvp z7(?5|+K<^W;tS>(&kWzt(qqQQ(avsh-w*wDDH)h5dd$^tZ=9$y7P+*`8A-g2VbE_= zh>OZh?NLP4L>i!dnWvQJWTyL}_A{7{2E-aRznyT}1&H|EiafEgL9NxOy-_o!7fGu; zGZF79VZ5A2sOdg5AIK?_27 zF7GQjX-AZ%M@INni3skW@7tA~K&Gl@?T&lRJL~vjpSHV{xQC9OfuqSZb7=<$f}|V0 zOq<2evT9}W@n}Tpk-L*zk{8(toBdI%rYE7R10B$1n_+ zoYLiu+fGlDiog1Sl@+p#iil7yhk~zm$Eaodi2+aBqKqKaA^oPD@C*FUxIf)5V429| zl6`2}37<5e(>Na`a9}lBJ#rgjUE^20$xWsT&0|MS(BHou4E?e=^!}+zZ?{9kddGD# zUmrxe?@cr~mht0STk8a<4o!myj{Zn8)S91yPM_U2rJL@`eg|;otlsG{fv5m)YesEB zrV6wOrTI6=IiCwz2~3hL<|%pZt2T&Zx7XyDgg#PHZT%?KYt`BX-yIPSSx?E#6Kp`9 zom5~-NJ5@VGg$Uk6brM9!+oZ#tg^%G-08pF@KtfHY>qA*?+rN?-u3VU^xpb2en@y% zFeZVjuKQSe#Kyv~r8mViA@zjE(M$0R`$OIx6P2>$JO!3pU*pXP87@lN+c1U@{Nk_g zGj{KiihugL7e<(vt;DUgQf!QHHA{lYyk}ngsRRy4Hdd7PqkK|W*x213cl?O2SCLQB z;NjrFWAC<={5Ie-%^|DHntvfBYXI?mXbK9+5p%=Qruyr_TCitRNgd&W^(IRAN(qC`iWX3{N#kvH3?z7}2CEX&>I3H)M#2$6BynPY)b;XG*zrlR~7% zj>GiphmQ@@aKa~_uG3A5lzMv)cwvu?AjCpgaPa8sfH*wq4eZ0E+Y&5dVn&&EU)9m{ zRyq;|EykKQl2#vd>V`VYuy&I`_tTqyhF4Z|r9&BlFJx-^4f4e#`HZZC1-t_Vv zw_-%-Dm7s1SelP6Xa7#`GAU0U>K0}Dl1O)Cn&(`vJfBJ=5B7|+x^dd^=fWVp`^~&f zXL)zOIy-Plu)F6iD$)lh$`U12``Na*<#E)>a;h*N$%B8nDC*(ioGkCf`ED5M`u2W# zt${4TisKUXwV0kqQ4YJMl6IVf*Yz^zt>a^gyHz)-!?(<|^nU6U&jxf3yHv~HPSZnd zG99lD0Z%iy@>M@B2Z@#SB7mY{G+HFG%w9@o2{DQ5IMU6{t?(GzgVF|a6$rtIg@Rr~ z%(|6Z3sTOFQ~Hfy>0p9jJ8BAXe!F@~daD`xrG}hR(I_z0Z>`|kVMGZhz&Ag@0|IKB z)ksIxn-wL0VpAWNDQyfR-G{x31%btJzT$1M-Y~5+9tp!4B+LXpUTllS(-VoMmVW%# zOGZ+_vPLB?%xpn+L?SF6?EZApEmWhJ%zH{2`BELz1QykkQU><5aP>GDa<0sFAKjea z)-H!sTM7wXdU^!ypP{P1>2Wf+_B6lcW95PIgs#&SMcdH#nR+C>*~l~+>qVJPV~cEZ zt+)>lzm%!qS~J1{hm78hHa#Be+kMS={OUN;HR};49O%y7$rr;up%^TIeideoA;UjF z^nIaFh~AK8QgOnrsq^ir_AAWOl2l$7=|2 zRGz&J*YQl@iJEQ3=6`W{a<5B86}JpWqFsKCzTFhfR&OrXEY_;g>oHlZA4;>c=Yk@z zUut`7=*V`O$Zap?`xCvk{a!AwwmW`8Yls(5T+7>?O;EBVB6R2@8jcNR3RJ3PldCJo zQ1pj!sFYiVa0F^N#7%OLo1{@^herVfu`$x!9ulJ*f3sbG{&(|y%vbGm z&UkC32~TniFU(s6_>Rxc+oRah!=F#r)m89tbc6!FEEEs99`a@ls-Jjqah)Gzr+Tk9 zOMG$}87%CdKf61MY7CqyFWWpO_A;178B#Iv%Jk|<4|1xT)4r51uN;@H#t}aO+`qh?H)s4O%Ls1lkgtUnXdd&cso^zGiCg_W_fCd05`HaTW>SR*U67>n^haRya zouZbBPwyrIUV7)i*q*nes%om0Ey_j_Ew08B@yYk^{9XlqBID{8=@k0<3~3p5Z^z!- z>zZ&e52>0MWZ9T5HOzp5fqIq&FdW=*J3Jw4t}o+@5VF?^*nV1bvYPAE*l30@=rri> zMw9wM>k|JDqM5A#c1w19P%1QJx9ngE(Sez_@)?4RIpXfgwr|6XhRPD67SXVvQKmq9 z5#4s$$4RSQSL)^#Y-juM(|R{x;pQRuJAT@isQpS>Pt&;%KOI3sgjrH=5EEBv-!47C zWsCg!APO1R3W-5&UJ?p6GW^d`y4@+?iQPN{pJcESdTd-Nn4*;I`Os_UhjA!c2fx6F z9Y1tSgo2lW@5bPkm6+lNPcTCl_zZtN4J)rgFQt;a$&5C=;P za~lh@f^Z!!t0?=BD!;-f?hl!8c*Oaemg0S1tuchsc-W-&X39#WB?>(a|M#q93q!uX zN}li^i#aD}07ke=Kh%hYzQ)2*>a}YPV<4D9af#la&;I_Fl0+p1rPbLfRv8#w6dPX+ zr!V)Gmcpgrr9zI8j{>l+0?gwZrnh%fy>qBU7Ry5EB2>Bpn_P{3N6(U~$69d3= zO7@TX?G)(I2G&JYDCPux4HC@SPlS<~PSt|CO`84EhU;=S=cZO_VJCsi2$gzA?vfS` z>x9*D{mnpJLqqMe=xC5V{3`Z^`8b&El2@x~P_|H}y~5ev@RGCZe5;ps-=HBHlpB;^ zK5PxGMP8jPebU3?-_h2r@yK<0F@JO1y{?iU1_r1ndZaVXE|Ejq#45Z828*NVPvNiU1pqEEXxfMbJt`hf99OKWd!9Of+^(OHxn{pH%>v2m zE~X>doye+r`SBz!P<*;{~v2lM;)?`jD8z&^m= z3}YuG9^gsyd~gZZQ_S4D~QI)(IW|K_oFb6S3Sg z--P~`;{KF09h8AKcwzZ|&>IufY+_iT2ZLbRZ`Q16*7WR|9$gd=Uaw6tV0ocQbP(hFAlk4}rrzM5)XZ>C|J z!4-OQxCQu$Coo0O$*2jmerriD)GP*$G3D2c9xIW4 zhI-zw^V`4qk%`JieUGXkV_`Gu5!Whyo!?8>WBi*zor0W~0INm7{VckL%Q0{wJdq_! zqRx2WJ2tMV!8jKk%kQ7o%I;V5VokZ&$BgyYT0W8>gtx%jzeK%D zXlQEM(<;Zu%Y>*@XFHf>WwsR%M zm`xs=xbhTpk{g>=t2cvD(DmOoyS7pQ^Q~~*F?W_T^SD9I-S2O$xu!$E!chjuW;;CI z#Fuyof7C!P$PdA~4FkyOND z4UXCnk=l|5PM(-|zp>bOiRXpW*H|@^jWjd*;y7co$EZx0fs6I5 zMW@k8Y*+8*?rzHk`S~B#BAE#bQ6<7MuonDltgbMG7B~a&z|fHB%*^W7GP3M4s<|N% zM2myjk~HPkyVJ6R30%0nwdP*vd+9`cF;h7orHvLWitaMivTg)^0p55d#dYfIV*RY zF|!+Q{f^=O@r_AvPv8*-=;``KY+mQtvg@MB(}UZ5gQIgD(@+vyLf)r@q-sW=RFw+7 z(<~VAf$5d6kH9U;L#v!$+gk-;B8Pyq$#gJQ%?vuCzh9u*>sB$(U3fY4TT`wVH{|wv zr3I1wE#&>_`0p;k5W3^ryQw-wKthT>-}a5>b!nm{LU?eMmJYeOGw&Z+uqZljlSXhm?(TLJzI9J_3gX7<~EG(6ks40JG$zdZ8FQ(P?2XOVB z*$Lh;sI##ig(&=r-#f;DJ-9nCKkHi68aVj_?F4E!L_ohYquDVtx6S>@8o2?`5rn7% z44SkleH@c*tB%cbQ#Tgi!Wa~djf|#_2j^?{dwcWBN;PZ5;Y3fHKY$Ob%k^UU_hBB8 z4+Ew+C%)NMLxb#5d8GuMB;J1L<~0h9EmU+3)na-M@cTKoZ+@ zu#m=3Z@-Fzi)#*u3i=MCT1x7SxC|ex?_pu=9?1Vw*O307wyr!L>a~jxjcu4>G)*JP zo=Z#(in`n}vX0#_lw`U_iUws65lX`3+O8!_xKj4@ma-J3WRSgNX-JlAB~)B_pWlo= zpSSnD^O?`{-^}lM&U1ce{ho8eoB(sPg*j*t`8Y4${-cP`AO86sEasqo%Cq zRn^Z<4=ZLy-cE@JBj+{~E72Dx)=H=X58AA>+=%&Bb< zvHcm^LjQzFE%7d1ve;i^||giWv@4i7DG5)U0qO874TQjC_~=mI;=9y#@3bw^j%x2(F=6=rQL6Wupd~~ znD@Q)pgg9-&!FP(jSG{dByz8vHseDQYAz2TZQvIA#8AGmrS=X=}0aMahLNO)hd_;nJa=iXe#wo@hEy zdGCzXYjq1(xw(G&!nA_VABZ zo-DL#)EyRPo?8!0ik-EMm9xz^qkgl~Q{B0y0Nn!07+7PdnyCyt#0$SF@q*e_Vr>ME;lhhyQ#3;Le(Kv0U>4P3vu=|T6%JHXS4Ox3%E-f5cDS;j z?njq}tDZa6CaZy*1N!<`RbSl7thx2eqZ1Lgv3IiW27~yv8vJ z6Cjf?;lX@{CT9~?kXfgkIyyPIw>~Ha05P?q8W<|J8JVOal(;)ZE0_8Njd^70bb@uW zZ(U9SH1Ytw*zLEXJmsz8;Bn2{MMYiu&iB2#bNfka5t!BsridJQP&0K}2AhThodn+v zK4cUjoZ$ijyB^%&01Y6ks2#j?sC{|G5g8@jxRPV%3kRWH&( zAMJ^QcklU$O!9e7DBEi+c)UokDLj(*v?~7b73uxdCirqH&zAXgovnJB@C7zI@vYxx zgl)Pbo6M48k(oUAo(PgYW@r?oZu(6+`VH_T=Mu^{9YsxOX?xTq0xVHKfPB zh6dzppzac$K2j&gmHpPIPTgY5gkxHoKpV+AN4MvjhJPojyA(ZUzJh9DonKyE9_+5T zk}{lTELuMNK*c~CCbK5kU$9bLQzMS|8j<<*@uQWVuAB0Je*71%?0anr(4fboJ_T~D zU7kqLdXYaIOQ+LO631+ZhKmOKa7%d6w#SAdcY5yiFM17T-JP#+EqDVaz`n0;GUVNs z0Fw;qFFm1>sHmwPv~P*}aYQbTN_wKxa+nAcZ4^HK2tDU0IB#H>m7+o^z02lf;5;4q zoH;le`M8sS0OKjr3mkkQss+Q7mm`}=gNt}5sP%;2qIy<)_Pwz#PC#LggA8Z?f)r-_HhagZ?<-?k!zu#CoT?&85AGWQ>kYrbz9C}DQ4p#Z6VXS0<$Ajol z_z2_V9Nzf^jUh6o`LHcgp!g=8PL*#Md=lZAFd8DJm# zx&+RavO|RkH~;|^JHNVg2CLcHLnrkQffu9X;5HkFD)NbPmp`0ptZZ|0a}fd0K-#QW z92B|4OK5fgmtulg14>)O#tAD1Aq<>L+Tjas2>_Quk(HIb8`OwN<~)F%0|M&ra&SBX z94RI5VhY>aDd^T)M6onv1`N?j_U^Eu8Xu!`<8gsyj+L_YA*_D*i366$3KxU-nZW@v zgP62~rtm#vWZ=E+*A3CSQ1-dz=#?4g$9PTIF$yG!5g?kJyT2YSDGVJk$rIdk((Ll& zEXP8y5)ZABX*H8Bo(6)LUN0gj113UZvF$n%q^5>-Qw+hf?ek1o8Gs$06JIJKMq0;l7l3|11c)iDgp3q8EMtqFBQ#=VH;;l3jrMz z=R0tSLuNt)AnTT&%WiaYQo`D$D)+Nn*|VO`r^0)`ZPR^i1};_bbAGsNwqt3?>KV!j z%q=FfwzVV=%)3_BIt}h}bvcsOkrCWob=p#4$YeMs{FpTt8zvvO2jb~SsRc;j@}L4- z;5Ifkic#mIoMr|WocHsPV#ujO{{uP{-eF)zoOV;HKG8!Oal5Y3-> z`5UNZr`R{fOtjC5_qQ)-{m|Y*I{}>UnwaS(^JaI7I#jvcK)6-AcM*xi!q<>box_;f zN^)|#Rt)-|cDDVwMJ6l*9{6QmwV|P-yS_Gfz&KwcCrAv_BH&2nYyFl5kss^#xo2HW`W*B6cn^RI1^idJLo;{AQlG zF9bO`nTJh?XyEQ{*tn-;Y~g0wJHd|mPYQDcOqeVQb}CX-hY1qdZ1&#SewM@i4s)Ts zO%Y)?;0Se|niWF8y`V2Den|0$n69qpperE&@ONUk^&r56Rshu9e!FkXfxBa0A@)^? zMiIeXD>IZn#d?vv-amHTxBD~RTmLzxxLll2j-)Br-dPL)1dJG#bqr&u1Hnqz3I%ap}xApNa^hC-|@?+ zZ{RcLQCdN(A+JFMY{cjC<;z%|H>|V$)~@4Hjt&3Z71^Wfw4OsdYwbvlP2`HG|F%}Q zlX#75jqLd?iX*v-;(Yt(sje8jTbm^iFU0(Q4C_#KfF(kK3@W;kr+aRR`G5KFKyeqw zpE%KeBoEJw3vR?0jIFDA`$31c>W1vJZu^YSTnoVvmaYR=2Q(<*jumUCfqU2RVGT{ay}Yxm8y~$ydU5qEAgG6 zl2SGEFk?)J5#{i0Ovl7k^4yzhlaRH!Lz>pEC&8%u9SbHGIC~-RD%=FbQwaQ~eUVGN zpH`*AkRy25qd6W50{+jJ5Cw4ihEdKT7F^es%g{g8=&g{a-f_$)k9*NStyZ~^n8;1J zmB`gY+yiW`VY&LiT*7Hu+|0DCCuY`xg+G$$;bW z_;G-o{ zOwiTMtq_&4_GRInWgkCM!pT}sqy)^z^1Ysz*y9fj5LF*","|"], -[{y:-0.875,c:"#2277ff",fa:[0,0,0,1],w:1.5},"Media\n\n\nL2",{c:"#bbc6ed"},"!",{x:14.5,c:"#bed4ba"},"/",{c:"#a3a3a3",w:1.5},"F12"], -[{y:-0.375,x:3.5,c:"#bbc6ed"},"(",{x:10.5,c:"#bed4ba"},"5"], -[{y:-0.875,x:2.5,c:"#bbc6ed"},"$",{x:1},")",{x:8.5,c:"#bed4ba"},"4",{x:1},"6"], -[{y:-0.875,x:5.5,c:"#bbc6ed"},"`",{x:6.5},"/"], -[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Symbols\n\n\nL1",{c:"#bbc6ed",t:"#000000"},"#",{x:14.5,c:"#bed4ba"},"*",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSymbols\nL1"], -[{y:-0.625,x:6.5,c:"#bfbf67",t:"#000000",h:1.5},"Tab >\n\n\nTab",{x:4.5,h:1.5},"< Tab\n\n\nShift Tab"], -[{y:-0.75,x:3.5,c:"#bbc6ed"},"[",{x:10.5,c:"#bed4ba"},"2"], -[{y:-0.875,x:2.5,c:"#bbc6ed"},"^",{x:1},"]",{x:8.5,c:"#bed4ba"},"1",{x:1},"3"], -[{y:-0.875,x:5.5,c:"#bbc6ed"},"~",{x:6.5},"\\"], -[{y:-0.875,c:"#cccccc",a:7,w:1.5},"",{c:"#bbc6ed",a:4},"%",{x:14.5,c:"#bed4ba"},"-",{c:"#2277ff",w:1.5},"\n\nCaps Lock"], -[{y:-0.375,x:3.5,c:"#cccccc",a:7},"",{x:10.5,c:"#bed4ba",a:4},"."], -[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1},"",{x:8.5,c:"#bed4ba",a:4},"0",{x:1},"="], -[{y:-0.75,x:0.5,c:"#cccccc",a:7},"","",{x:14.5,c:"#bed4ba",a:4},"+","Enter"], -[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bfbf67"},"Left","Right"], +[{y:-0.875,x:5.5},"F5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",{c:"#99de2a",a:4},"F6"], +[{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F1",{x:14.5},"F10",{c:"#2277ff",w:1.5},"\n\nShift\n\n\n\n\nLock"], +[{y:-0.375,x:3.5,c:"#c4e0bf"},"{",{x:10.5,c:"#89b087"},"8"], +[{y:-0.875,x:2.5,c:"#c4e0bf"},"@",{x:1},"}",{x:8.5,c:"#89b087"},"7",{x:1},"9"], +[{y:-0.875,x:5.5,c:"#c4e0bf"},"&",{h:1.5},"<",{x:4.5,h:1.5},">","|"], +[{y:-0.875,c:"#2277ff",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#c4e0bf"},"!",{x:14.5,c:"#89b087"},"/",{c:"#2277ff",w:1.5},"\n\nMedia\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#c4e0bf"},"(",{x:10.5,c:"#89b087"},"5"], +[{y:-0.875,x:2.5,c:"#c4e0bf"},"$",{x:1},")",{x:8.5,c:"#89b087"},"4",{x:1},"6"], +[{y:-0.875,x:5.5,c:"#c4e0bf"},"`",{x:6.5},"/"], +[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#c4e0bf",t:"#000000"},"#",{x:14.5,c:"#89b087"},"*",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSymbols\n\n\n\n\nShift"], +[{y:-0.625,x:6.5,c:"#54d6de",t:"#000000",fa:[0,0,0,1],h:1.5},"Tab >\n\n\nTab",{x:4.5,h:1.5},"< Tab\n\n\nShift Tab"], +[{y:-0.75,x:3.5,c:"#c4e0bf"},"[",{x:10.5,c:"#89b087"},"2"], +[{y:-0.875,x:2.5,c:"#c4e0bf"},"^",{x:1},"]",{x:8.5,c:"#89b087"},"1",{x:1},"3"], +[{y:-0.875,x:5.5,c:"#c4e0bf"},"~",{x:6.5},"\\"], +[{y:-0.875,c:"#2277ff",f2:1,w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#c4e0bf"},"%",{x:14.5,c:"#89b087"},"-",{c:"#2277ff",fa:[0,1,0,1],w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#cccccc",a:7},"",{x:10.5,c:"#89b087",a:4},"."], +[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1},"",{x:8.5,c:"#89b087",a:4},"0",{x:1},"="], +[{y:-0.75,x:0.5,c:"#cccccc",a:7},"","",{x:14.5,c:"#89b087",a:4},"+","Enter"], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#54d6de"},"Left","Right"], [{h:2},"Space",{h:2},"Enter","Up"], [{x:2},"Down"], [{r:-30,rx:13,y:-1,x:-3},"Home","End"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex index 1a085984..c8d56d5b 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex @@ -1,1119 +1,1179 @@ -:100000000C9465020C94A9020C94A9020C94A90208 -:100010000C94A9020C94A9020C94A9020C94A902B4 -:100020000C94A9020C94A9020C94B00B0C94820CB1 -:100030000C94A9020C94A9020C94A9020C94A90294 -:100040000C94A9020C940B210C94A9020C94A90203 -:100050000C94A9020C94AD1A0C94A9020C94A90258 -:100060000C94A9020C94A9020C94A9020C94A90264 -:100070000C94A9020C94A9020C94A9020C94A90254 -:100080000C94A9020C94A9020C94A9020C94A90244 -:100090000C94A9020C94A9020C94A9020C94A90234 -:1000A0000C94A9020C94A9020C94A902E70C090D66 -:1000B000F40D090DF40D4B0D6E0DF40DC30DD60DA1 -:1000C000C310C310F110F11033116F116F136F13C0 -:1000D00087116F137E127E1249136F136F135D1316 -:1000E0000000F0A135002B000152E100E00000000B -:1000F0001E00140004001D7100774E001F001A003E -:1001000016001B00007F4C002000080007000600BE -:10011000E2002A002100150009001900E3004B004D -:10012000220017000A00050000004A0029002F00E5 -:1001300000002B0200004D002D00300000002B00BD -:100140000000500023001C000B00110000004F00B5 -:10015000240018000D001000E700520025000C00DC -:100160000E003600E6002C00260012000F003700BB -:10017000007F2800270013003300387100775100FA -:100180002E0031823481E500E40000002900025293 -:1001900001000100010000003A001E0220022202BC -:1001A000010051003B001F02210223020100280030 -:1001B0003C002F0226022F0001002C003D003002DF -:1001C00027023000010052003E00240235003502B3 -:1001D000000050000100360200002B0000004F001C -:1001E0000100370200002B0200004A003F003102EC -:1001F0003800310000004D0040005F005C005900F5 -:1002000062004B00410060005D005A0037004C0066 -:10021000420061005E005B0067002A00430054005A -:100220005500560057004E004400450001003900BB -:1002300058000000290002520100010001000000E6 -:10024000A5000100010001000100B500A6000100A9 -:10025000F200010001000100A800F000F100F1002F -:10026000F400B600AA00F900F3000100FA00B4009F -:10027000A9000100010001000000B8000100F90020 -:100280000000FA000000B9000100F9000000FA00C7 -:100290000000AC00010001004A0001000000AB00BA -:1002A0004600F9005000FA000100A9004B0052007E -:1002B000510051004E00AE00B30001004F0001009C -:1002C0000100AD00B10001004D0001000100AA00D5 -:1002D00001000100010001000100000016034500BB -: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 -:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A -:1004E0009091EF01A091F001B091F1018730904B14 -:1004F000A740B04BB9F41092EE011092EF011092A8 -:10050000F0011092F10114BE84B7877F84BF88E1A7 -:100510000FB6F89480936000109260000FBEE0E088 -:10052000FFE3099511E0A0E0B1E0EAE9F5E402C0DB -:1005300005900D92A433B107D9F721E0A4E3B1E00F -:1005400001C01D92AE3EB207E1F70E94F6080C947E -:10055000CB220C94000061110BC0FC018281882326 -:1005600021F085EE0E94570F03C085EE0E941F10F8 -:1005700080E090E0089508956091B1017091B2011A -:100580008091B3019091B4010E94D91956985E9858 -:1005900025982D9826982E9827982F98813019F015 -:1005A000823021F00895259A2D9A0895269A2E9A40 -:1005B00008950C94BC0256985E9825982D9826981C -:1005C0002E9827982F988FEF90E090938900809332 -:1005D000880090938B0080938A0090938D00809385 -:1005E0008C00259A2D9A2FEF80E792E021508040D1 -:1005F0009040E1F700C00000269A2E9A2FEF80E786 -:1006000092E0215080409040E1F700C00000279A1E -:100610002F9A2FEF80E792E0215080409040E1F741 -:1006200000C0000025982D982FEF80E792E0215020 -:1006300080409040E1F700C0000026982E982FEFF0 -:1006400080E792E0215080409040E1F700C0000038 -:1006500027982F9856985E9825982D9826982E982A -:1006600027982F98089589EA8093800089E08093E5 -:10067000810024982C983F988AB18F748AB96E981B -:10068000479A8BB1806B8BB9769A0E94DB020C94EF -:10069000BB0280E2809300018091340181110EC081 -:1006A0000E94980381E0809334012FEF83ED90E363 -:1006B000215080409040E1F700C0000080E40E949B -:1006C0009E038093000181112EC00E94C803809375 -:1006D0000001811128C00E94C8038093000181118C -:1006E00022C08FE30E94C8038093000181111BC0C8 -:1006F0000E94C00380E40E949E0380930001811148 -:1007000012C08CE00E94C8038093000181110BC0CD -:100710000E94C80380930001811105C08FE30E94ED -:10072000C803809300010E94C003809100010895D6 -:100730001092B9008AE08093B800089594EA9093EB -:10074000BC009091BC0097FFFCCF9091B900987FBE -:10075000983021F0903111F081E008958093BB0032 -:1007600084E88093BC008091BC0087FFFCCF80911F -:10077000B900887F883111F0803471F780E00895E6 -:1007800084E98093BC008091BC0084FDFCCF089577 -:100790008093BB0084E88093BC008091BC0087FFFD -:1007A000FCCF9091B900987F81E0983209F480E005 -:1007B000089584E88093BC008091BC0087FFFCCF43 -:1007C0008091BB00089580910001811115C080E4E3 -:1007D0000E949E038093000181110CC082E10E945F -:1007E000C80380930001811105C08FEF0E94C803E8 -:1007F000809300010E94C00384B1807F84B985B1D9 -:10080000807F85B98AB1837F8AB98BB1837F8BB9A9 -:100810003E98469808950E944903809300010E94E3 -:10082000E30380B38C7080BB81B3836F81BBE4E44E -:10083000F1E0A6E3B1E011921D9281E0E235F80704 -:10084000D1F70C943303BF92CF92DF92EF92FF92D5 -:100850000F931F93CF93DF9380910001882379F04A -:10086000809135018F5F80933501811108C00E940E -:10087000490380930001811102C00E94DB0206E35C -:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455 -:10089000E394F12CC73000F580910001811162C012 -:1008A00080E40E949E0380930001811112C082E1C6 -:1008B0000E94C8038093000181110BC0C7010C2E58 -:1008C00001C0880F0A94EAF780950E94C8038093BC -:1008D00000010E94C00346C0CA30A1F028F4C8300D -:1008E00059F0C93061F005C0CC3089F070F0CD30DE -:1008F00089F0209A289810C0219A29980DC0229A30 -:100900002A980AC0239A2B9807C0529A01C0539A7A -:100910005B9802C03E9A4698E0EAEA95F1F78FB1FB -:1009200079995AC092E081708D25892B7C9B02C0F9 -:1009300090E001C094E0892B7D9B02C090E001C053 -:1009400098E0892B7E9B02C090E001C090E1892B4A -:100950009FB19095991F9927991F9295990F907E15 -:10096000892B0FC08091000181114BC080E40E944F -:100970009E0380930001882389F1B12C0E94C0035B -:100980008B2DF8019081981719F08083C092010196 -:100990000E94E30321960F5F1F4FCE30D10509F06F -:1009A00079CF80910101882371F1815080930101F9 -:1009B000882339F08FE99FE00197F1F700C000002C -:1009C00022C0A4E4B1E0E6E3F1E081918D9391E0EF -:1009D000E434F907D1F717C090E0A5CF83E10E9476 -:1009E000C803809300018111C8CF81E40E949E0357 -:1009F000809300018111C1CF0E94D903B82EB09419 -:100A0000BDCF80E0BECF0E94D90281E0DF91CF91BF -:100A10001F910F91FF90EF90DF90CF90BF900895BE -:100A2000E82FF0E0EC5BFE4F8081089508958B3B4A -:100A3000910578F4883A910540F5853A9105D0F40E -:100A40008430910508F0B1C08130910509F4ADC042 -:100A50006BC0803E910508F467C0883E910508F49C -:100A6000A4C09C01205F31092031310508F05CC031 -:100A700090650895853A910509F459C0863A910523 -:100A800009F458C083E890E40895883A910509F480 -:100A900054C0893A910509F453C08A3A910509F482 -:100AA00052C08B3A910509F451C08C3A910509F472 -:100AB00050C08D3A910509F44FC0803B910509F46F -:100AC0004EC08E3A910509F44DC08F3A910509F454 -:100AD0004CC0813B910509F44BC0823B910509F460 -:100AE0004AC0833B910509F449C0843B910509F450 -:100AF00048C0853B910509F447C0863B910509F440 -:100B000046C0873B910509F445C0883B910509F42F -:100B100044C0893B910509F443C08A3B910509F023 -:100B200042C08AE296E4089580E090E0089581E86A -:100B300090E4089582E890E4089582EE94E40895A4 -:100B400089EE94E408958AEE94E4089585EB94E4A4 -:100B5000089586EB94E4089587EB94E408958CEC73 -:100B600094E408958DEC94E4089583E895E4089561 -:100B70008AE895E4089582E995E4089584E995E486 -:100B8000089581E296E4089583E296E4089584E26C -:100B900096E4089585E296E4089586E296E4089541 -:100BA00087E296E4089580E094E40895089596E03D -:100BB000799FF001112494E5899FE00DF11D112426 -:100BC000E60FF11DEE0FFF1FEC51FF4F8591949141 -:100BD0000895880F991F805A9040FC018591949147 -:100BE0000895880F991F80529F4FFC018591949121 -:100BF000089526E0729FF001112444E5849FE00DE2 -:100C0000F11D1124E60FF11DEE0FFF1FEC51FF4FF8 -:100C100025913491C9019A9581159F4110F4C9011C -:100C20000895C90190528115904128F4C9019F701F -:100C30000E94F1050895C90190538115904120F457 -:100C4000C9019927906C0895211580E5380769F44A -:100C50000E9490139FEF24E34CE0915020404040CD -:100C6000E1F700C000000C94D21A213080E538076B -:100C700031F48091CC0181608093CC010895C90149 -:100C800090558115904108F050C0832F99278F709F -:100C9000992781309105D9F4A9014370552702C0E5 -:100CA000880F991F4A95E2F79C68A90164E0440FF8 -:100CB000551F6A95E1F744275370842B952B73E0F9 -:100CC000220F331F7A95E1F7207633271DC082303B -:100CD000910529F4922F8827816F906A08958330B7 -:100CE0009105A9F4A9014370552781E090E002C065 -:100CF000880F991F4A95E2F79C6843E0220F331F43 -:100D00004A95E1F7207E3770822B932B0895049744 -:100D1000F1F4A9014370552781E090E002C0880FEB -:100D2000991F4A95E2F79A68E8CFC9019057811553 -:100D3000904120F4C9019F7090620895C9019058B4 -:100D40008115904120F4C9019F70906A0895203E5A -:100D50003105E0F4203C310558F52133310509F423 -:100D600070C048F42932310509F464C02A323105D3 -:100D700009F46EC074C029333105F1F02238310511 -:100D8000D9F02533310509F44EC069C0233E310541 -:100D900089F138F4203E3105C1F0223E3105E1F001 -:100DA0005EC0263E310569F1273E3105A9F157C0E5 -:100DB000C9010E94E90508958091DF0180FD02C00C -:100DC00081FF4DC080EE90E04BC08091DF0180FF3D -:100DD000F9CF89E390E044C08091DF0182FF0EC02B -:100DE0008091DF0184FF03C080E090E039C083EE92 -:100DF00090E036C08091DF0182FFF2CF82EE90E07A -:100E00002FC08091DF0183FF0BC08091DF0184FD43 -:100E1000EBCF87EE90E024C08091DF0183FFF5CF18 -:100E200086EE90E01DC08091DF0185FF07C089E25A -:100E300090E016C08091DF0185FFF9CF85E390E057 -:100E40000FC08091DF0186FF07C08AE290E008C0F2 -:100E50008091DF0186FFF9CF81E390E001C0C901F5 -:100E60000E941705089508950C943307809162013C -:100E70000895CF93DF9300D01F92CDB7DEB72091B6 -:100E8000E501243019F523E029839B838A8320938D -:100E9000E9008FEF9091E800815095FD06C095ED37 -:100EA0009A95F1F700008111F5CF8091E80085FF58 -:100EB0000DC040E050E063E070E0CE0101960E947A -:100EC000A3098091E8008E778093E8000F900F903F -:100ED0000F90DF91CF910895CF93DF9300D01F92B1 -:100EE000CDB7DEB72091E501243021F522E029833A -:100EF0009B838A8383E08093E9008FEF9091E800E1 -:100F0000815095FD06C095ED9A95F1F7000081118D -:100F1000F5CF8091E80085FF0DC040E050E063E030 -:100F200070E0CE0101960E94A3098091E8008E77BF -:100F30008093E8000F900F900F90DF91CF9108956C -:100F40002091E5012430F1F422E02093E9002FEF15 -:100F50003091E800215035FD06C035ED3A95F1F7A6 -:100F600000002111F5CF2091E80025FF0BC040E0E3 -:100F700050E065E070E00E94A3098091E8008E7760 -:100F80008093E8000895CF93DF93EC018091E50111 -:100F9000843009F046C090910C019923D9F09091CA -:100FA0000D019923B9F08093E9008FEF9091E8004B -:100FB000815095FD06C095E19A95F1F700008111E9 -:100FC000F5CF8091E80085FF2CC040E050E060E163 -:100FD00070E017C081E08093E9008FEF9091E80006 -:100FE000815095FD06C095ED9A95F1F700008111AD -:100FF000F5CF8091E80085FF14C040E050E068E044 -:1010000070E0CE010E94A3098091E8008E77809362 -:10101000E80080E1FE01A2E5B1E001900D928A9521 -:10102000E1F7DF91CF9108958091E401811109C02A -:101030000E94350B0E94920B8091E20084608093A5 -:10104000E20008951092E401089508950C94F820A8 -:101050000E94691A0E94FE200E942F0E0C943407F1 -:1010600042E061EC81E00E94AF0A42E061EC82E084 -:101070000E94AF0A42E061EC83E00E94AF0A42E1C5 -:1010800061EC84E00C94AF0A8091E701833009F4AD -:1010900055C030F4813071F0823009F48EC008956B -:1010A0008A3009F47AC08B3009F460C0893009F0C5 -:1010B0009CC020C08091E601813A09F096C08091E1 -:1010C000E800877F8093E8008091EA019091EB012E -:1010D000892B21F060E080E090E003C060E182E5D0 -:1010E00091E070E00E94EC098091E8008B7780939A -:1010F000E80008958091E601813209F076C0809180 -:10110000EA019091EB01009719F0039709F06DC087 -:101110008091E800877F8093E8008091E80082FD5D -:1011200005C08091E5018111F8CF5FC08091F10089 -:10113000809362018091E8008B7753C08091E60133 -:10114000813A09F052C08091EA019091EB01892B1C -:1011500009F04BC08091E800877F8093E800809180 -:10116000E80080FFFCCF80910C0136C08091E60141 -:101170008132D9F58091EA019091EB01892BA9F593 -:101180008091E800877F8093E8000E94E40A8091C4 -:10119000E80180930C010C9490138091E601813258 -:1011A00021F58091E800877F8093E8000E94E40A9F -:1011B0008091E9018093630108958091E601813A6D -:1011C000A1F48091E800877F8093E8008091E80097 -:1011D00080FFFCCF809163018093F1008091E80053 -:1011E0008E778093E8000C94E40A089584B7877F93 -:1011F00084BF88E10FB6F89480936000109260007D -:101200000FBE90E080E80FB6F89480936100909351 -:1012100061000FBE0E947E0E0E94350B0E94920B51 -:101220008091E20084608093E20078940E940D0E29 -:101230000E94800E82E091E00E942A0E0E94E62029 -:101240008091E501853069F40E942C1A8091E301B8 -:101250008823B1F30E94541A882391F30E948D09C8 -:10126000EFCF0E94860EECCF292F33272330310594 -:10127000A9F06CF42130310509F442C02230310567 -:1012800009F043C08DE690E020E133E042C0213216 -:101290003105C9F02232310519F137C09927813063 -:1012A000910541F08230910541F0892B71F5ECE018 -:1012B000F3E005C0E4EFF2E002C0ECEDF2E084916F -:1012C00090E09F0126C0643000F5E62FF0E0EE0FBD -:1012D000FF1FEE5DFE4F2081318189E090E019C053 -:1012E000643098F4E62FF0E0DF01AA0FBB1FA65E82 -:1012F000BE4F2D913C91EA5EFE4F808190E009C087 -:1013000082E190E02DE733E004C080E090E020E04F -:1013100030E0FA0131832083089580E189BD82E1C4 -:1013200089BD09B400FEFDCF8091D8008F7D8093E8 -:10133000D8008091E00082608093E0008091E0001E -:1013400081FDFCCF0895CF92DF92EF92FF920F9331 -:101350001F93CF93DF937C018B01EA010E94050B61 -:10136000811131C0209731F088819981081B190BB8 -:10137000E80EF91EC12CD12C0115110519F180912F -:10138000E80085FD14C08091E8008E778093E80026 -:10139000209741F0888199818C0D9D1D99838883C8 -:1013A00085E011C00E94050B882331F30CC0F701C2 -:1013B00081917F018093F10001501109FFEFCF1A55 -:1013C000DF0ADACF80E0DF91CF911F910F91FF907C -:1013D000EF90DF90CF9008952091EC013091ED01D6 -:1013E0002617370748F06115710539F42091E80098 -:1013F0002E772093E80001C0B901FC0120E06115BF -:101400007105B9F18091E501882309F440C0853068 -:1014100009F43FC08091E80083FD3DC08091E80061 -:1014200082FF06C08091E80082FF26C080E0089518 -:101430008091E80080FFE3CF2091F3008091F200DB -:1014400090E0922B6115710551F08830910538F4C8 -:1014500021912093F100615071090196F3CF21E0B1 -:10146000089709F020E08091E8008E778093E800EB -:10147000C6CF2111C7CFD6CF8091E501882339F09F -:10148000853039F08091E80083FFCCCF04C082E042 -:10149000089583E0089581E008952091EC01309152 -:1014A000ED012617370748F06115710539F42091D1 -:1014B000E8002E772093E80001C0B901FC0120E08C -:1014C00061157105C1F18091E501882309F441C0DE -:1014D000853009F440C08091E80083FD3EC08091D2 -:1014E000E80082FF06C08091E80082FF27C080E00C -:1014F00008958091E80080FFE3CF2091F300809170 -:10150000F20090E0922B6115710559F08830910539 -:1015100040F424912093F1003196615071090196B5 -:10152000F2CF21E0089709F020E08091E8008E7763 -:101530008093E800C5CF2111C6CFD5CF8091E501BA -:10154000882339F0853039F08091E80083FFCBCFD4 -:1015500004C082E0089583E0089581E00895982F03 -:10156000973058F59093E900981739F07091EC0096 -:101570002091ED005091F00003C0242F762F50E011 -:1015800021FF19C03091EB003E7F3093EB0030918A -:10159000ED003D7F3093ED003091EB0031603093F2 -:1015A000EB007093EC002093ED005093F00020913D -:1015B000EE0027FF07C09F5FD3CF8F708093E900B5 -:1015C00081E0089580E008958091E60187FD05C0DF -:1015D0008091E80080FF0EC012C08091E80082FD7B -:1015E00005C08091E5018111F8CF08958091E80050 -:1015F0008B7708C08091E5018111EACF0895809131 -:10160000E8008E778093E80008958091E40090913F -:10161000E50045E62091EC0020FF21C02091E80084 -:1016200020FD21C02091E501222389F0253089F099 -:101630002091EB0025FD0FC02091E4003091E500E2 -:101640002817390739F3415041F0C901E3CF82E04F -:10165000089583E0089581E0089584E0089520913D -:10166000E80022FFDFCF80E008950E94A30B0E94D4 -:10167000AB0BE0EEF0E0808181608083E8EDF0E08C -:1016800080818F77808319BCA7EDB0E08C918E7F2D -:101690008C9380818F7E80831092E40108950F9354 -:1016A0001F93CF93DF930E94A30B0E94AB0BC8ED57 -:1016B000D0E088818F77888388818068888388815B -:1016C0008F7D888319BC1092E5011092E101109280 -:1016D000E3011092E20100EE10E0F80180818B7FBF -:1016E000808388818160888342E060E080E00E949E -:1016F000AF0AE1EEF0E080818E7F8083E2EEF0E0E1 -:10170000808181608083808188608083F80180810E -:101710008E7F8083888180618883DF91CF911F9144 -:101720000F910895E8EDF0E080818F7E8083E7EDF2 -:10173000F0E080818160808384E082BF81E08093DB -:10174000E4010C944F0BE8EDF0E080818E7F808304 -:101750001092E20008951092DA001092E1000895CC -:101760001F920F920FB60F9211242F933F934F9316 -:101770005F936F937F938F939F93AF93BF93EF93F9 -:10178000FF938091E10082FF0BC08091E20082FF15 -:1017900007C08091E1008B7F8093E1000E940C0ED6 -:1017A0008091DA0080FF1FC08091D80080FF1BC0AD -:1017B0008091DA008E7F8093DA008091D90080FFDB -:1017C0000DC080E189BD82E189BD09B400FEFDCF75 -:1017D00081E08093E5010E94140805C019BC1092B5 -:1017E000E5010E9422088091E10080FF19C08091EC -:1017F000E20080FF15C08091E2008E7F8093E200BE -:101800008091E20080618093E2008091D800806244 -:101810008093D80019BC85E08093E5010E942608DA -:101820008091E10084FF30C08091E20084FF2CC0F1 -:1018300080E189BD82E189BD09B400FEFDCF8091C0 -:10184000D8008F7D8093D8008091E1008F7E8093B7 -:10185000E1008091E2008F7E8093E2008091E200BF -:1018600081608093E2008091E101882311F084E09F -:1018700007C08091E30087FF02C083E001C081E0E0 -:101880008093E5010E9428088091E10083FF29C030 -:101890008091E20083FF25C08091E100877F8093E3 -:1018A000E10082E08093E5011092E1018091E10086 -:1018B0008E7F8093E1008091E2008E7F8093E20032 -:1018C0008091E20080618093E20042E060E080E08D -:1018D0000E94AF0A8091F00088608093F0000E941F -:1018E0002508FF91EF91BF91AF919F918F917F91CB -:1018F0006F915F914F913F912F910F900FBE0F907D -:101900001F9018951F920F920FB60F9211242F93CC -:101910003F934F935F936F937F938F939F93AF9377 -:10192000BF93CF93EF93FF93C091E900CF70809165 -:10193000EC001092E9008091F000877F8093F00026 -:1019400078940E94BE0C1092E9008091F0008860AB -:101950008093F000C093E900FF91EF91CF91BF9188 -:10196000AF919F918F917F916F915F914F913F9137 -:101970002F910F900FBE0F901F9018951F93CF932C -:10198000DF93CDB7DEB7AA970FB6F894DEBF0FBED0 -:10199000CDBFE6EEF1E08091F100819321E0EE3ED3 -:1019A000F207C9F70E9444088091E80083FF1CC138 -:1019B0002091E6013091E701832F90E08A30910574 -:1019C00008F012C1FC01EA5AFF4F0C948022203823 -:1019D00081F0223809F008C18091EA018F7080936C -:1019E000E9008091EB0085FB882780F91092E900DF -:1019F00006C08091E2019091E30191118260909183 -:101A0000E800977F9093E8008093F1001092F10036 -:101A1000C5C0822F8D7F09F0E7C0222319F0223044 -:101A200061F0E2C08091E801813009F0DDC033301F -:101A300009F080E08093E30128C08091E8018111E2 -:101A400024C02091EA012F7009F4CEC02093E90050 -:101A50008091EB0080FF19C08091EB00333011F4CE -:101A6000806211C080618093EB0081E090E0022EE3 -:101A700001C0880F0A94EAF78093EA001092EA0006 -:101A80008091EB0088608093EB001092E9008091D8 -:101A9000E800877F86C02111A7C01091E8011F7759 -:101AA0008091E3008078812B8093E3008091E800AF -:101AB000877F8093E8000E94E40A8091E80080FF1D -:101AC000FCCF8091E30080688093E300112311F044 -:101AD00083E001C082E08093E50186C02058223077 -:101AE00008F082C08091E8019091E9018C3D23E0EB -:101AF000920779F583E08A838AE289834FB7F89465 -:101B0000DE01139620E03EE051E2E32FF0E0509337 -:101B10005700E49120FF03C0E295EF703F5FEF7044 -:101B20008E2F90E0EA3010F0C79601C0C0968D93DA -:101B30009D932F5F243149F74FBF8091E800877F45 -:101B40008093E8006AE270E0CE0101960E94EC0901 -:101B500014C0AE014F5F5F4F6091EA010E943409EB -:101B6000009709F441C02091E800277F2093E80006 -:101B7000BC0189819A810E944D0A8091E8008B778F -:101B80008093E80031C0203879F58091E800877FA4 -:101B90008093E8008091E1018093F1008091E8005A -:101BA0008E778093E8000E94E40A1EC021111CC0B9 -:101BB0009091E8019230C0F48091E800877F809393 -:101BC000E8009093E1010E94E40A8091E101811113 -:101BD00004C08091E30087FF02C084E001C081E07F -:101BE0008093E5010E9430088091E80083FF0AC0DD -:101BF0008091E800877F8093E8008091EB0080620D -:101C00008093EB00AA960FB6F894DEBF0FBECDBF4F -:101C1000DF91CF911F9108950895CF938091E501B1 -:101C20008823B1F08091E9008F709091EC0090FFD3 -:101C300002C090E801C090E0C92FC82B1092E900C3 -:101C40008091E80083FD0E94BE0CCF70C093E90034 -:101C5000CF91089590936901809368010895E09170 -:101C60006801F0916901309721F00190F081E02D39 -:101C7000099480E00895E0916801F091690130973E -:101C800021F00280F381E02D09940895E09168012C -:101C9000F0916901309721F00480F581E02D0994DD -:101CA000089520916601309167018217930771F0C2 -:101CB0009093670180936601E0916801F09169015A -:101CC000309721F00680F781E02D09940895209146 -:101CD0006401309165018217930771F0909365015B -:101CE00080936401E0916801F0916901309721F0DF -:101CF0000084F185E02D0994089508950C947D0EDB -:101D00000E946F1A0E940B040C94351BCF92DF9235 -:101D1000EF92FF920F931F93CF93DF93CDB7DEB770 -:101D20002B970FB6F894DEBF0FBECDBF0E942304E1 -:101D30003BE6E32E31E0F32E00E010E0C02E802FD2 -:101D40000E941005F701D1907F01D826B1F40F5FF2 -:101D50001F4F0E30110591F78FEF89838A831B8205 -:101D60000E94781A8160782F9D838C8349815A81E3 -:101D70006B818D810E94290F41C09091CC0191FF10 -:101D800004C08B870E9416058B8520E030E04D2D26 -:101D900050E0922FBA01022E02C0759567950A9401 -:101DA000E2F760FF25C02E83CF82EE24E394F12C6E -:101DB00002C0EE0CFF1C9A95E2F790E08E219F2165 -:101DC00021E0892B09F420E028870E94781A81609D -:101DD000782F9A8789874E815F8168858A850E94DE -:101DE000290FF801E559FE4F80818E25808306C0BA -:101DF0002F5F3F4F2630310561F6A9CF0E94191E93 -:101E000010916A010E942F0E1817A1F00E942F0E48 -:101E100080936A012B960FB6F894DEBF0FBECDBF3C -:101E2000DF91CF911F910F91FF90EF90DF90CF90B6 -:101E30000C9434072B960FB6F894DEBF0FBECDBFBF -:101E4000DF91CF911F910F91FF90EF90DF90CF9096 -:101E50000895CF93DF93CDB7DEB72B970FB6F894E5 -:101E6000DEBF0FBECDBF4F83588769877A878B87C8 -:101E7000DE01119686E0FD0111928A95E9F785E071 -:101E8000FE01379601900D928A95E1F749815A81BA -:101E90006B817C818D819E810E945C162B960FB692 -:101EA000F894DEBF0FBECDBFDF91CF910895CF93E1 -:101EB000C82F882309F4C1C0823859F40E942F0E1C -:101EC00081FDBBC089E30E94F9180E94B31989E320 -:101ED0000CC0833879F40E942F0E80FDAEC083E5DC -:101EE0000E94F9180E94B31983E50E943919CF9115 -:101EF0000C94B319843859F40E942F0E82FD9DC0B2 -:101F000087E40E94F9180E94B31987E4EECF8CEFA2 -:101F10008C0F813A48F48C2F0E944E2081118DC085 -:101F20008C2F0E94F918E3CF80E28C0F883048F4A0 -:101F3000C77081E001C0880FCA95EAF70E947A193C -:101F4000D6CF8BE58C0F833078F4C53A29F0C63AAA -:101F500031F482E890E005C081E890E002C083E8B7 -:101F600090E0CF910C94510E88E58C0F833108F0EE -:101F700064C0C83A39F1C93A41F1CA3A49F1CB3A99 -:101F800051F1CC3A59F1CD3A61F1C03B69F1CE3A09 -:101F900071F1CF3A79F1C13B81F1C23B89F1C33B89 -:101FA00091F1C43B99F1C53BA1F1C63BA9F1C73BF7 -:101FB000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2ED -:101FC00092E038C082EE90E035C089EE90E032C0F9 -:101FD0008AEE90E02FC085EB90E02CC086EB90E07D -:101FE00029C087EB90E026C08CEC90E023C08DECFC -:101FF00090E020C083E891E01DC08AE891E01AC01B -:1020000082E991E017C084E991E014C081E292E096 -:1020100011C083E292E00EC084E292E00BC085E240 -:1020200092E008C086E292E005C087E292E002C03A -:1020300080E090E0CF910C94670ECF9108958823B3 -:1020400009F44BC0823859F40E942F0E81FF45C01D -:1020500089E30E94F9180E94B31989E30CC0833800 -:1020600071F40E942F0E80FF38C083E50E94F9189A -:102070000E94B31983E50E9439190C94B31984386E -:1020800059F40E942F0E82FF28C087E40E94F9189D -:102090000E94B31987E4EFCF9CEF980F913A58F361 -:1020A00090E2980F983050F4877091E001C0990F3A -:1020B0008A95EAF7892F0E948019DFCF9BE5980F58 -:1020C000933020F480E090E00C94510E885A8331D4 -:1020D00020F480E090E00C94670E0895882321F0AE -:1020E0000E947A190C94B3190895882321F00E9454 -:1020F00080190C94B3190895CF92DF92EF92FF925A -:102100000F931F93CF93DF93CDB7DEB728970FB60A -:10211000F894DEBF0FBECDBF8C0185E0F801DE0173 -:10212000119601900D928A95E1F7F8014081318175 -:10213000F280258122952F7083819481892B31F043 -:102140003F3F31F481E04F3F19F403C081E001C00B -:1021500080E080FDC4C249833A8389819A812F83BC -:102160000E94B7189E8388870E94B6180E9489171C -:102170004E81E42FE295EF70F0E0E05AFF4F2F819F -:1021800068850C948022842F807F142F1F708823F1 -:1021900011F01295107FFF2059F0112309F454C259 -:1021A000812F68870E948A190E94B31968854CC2E2 -:1021B000862F0E941F10112309F491C2812F0E94C3 -:1021C000901928960FB6F894DEBF0FBECDBFDF91F1 -:1021D000CF911F910F91FF90EF90DF90CF900C94D3 -:1021E000B319342F307F842F8F70303211F08295E5 -:1021F000807F662319F0613019F12BC0FF20B1F008 -:10220000222309F493C1213009F090C128960FB61A -:10221000F894DEBF0FBECDBFDF91CF911F910F911C -:10222000FF90EF90DF90CF900C949A19222319F031 -:10223000213009F454C28E830E949D198E8189C178 -:10224000FF2021F0223008F04AC270C1211147C29C -:1022500080C1FF2021F0222309F468C1F5C12223A7 -:1022600009F477C105C2242F26952695237030E006 -:102270002115310521F021303105C9F030C2FF2090 -:1022800021F0862F942F937002C080E090E0289672 -:102290000FB6F894DEBF0FBECDBFDF91CF911F9177 -:1022A0000F91FF90EF90DF90CF900C94510EFF2094 -:1022B00021F0862F942F937002C080E090E0289642 -:1022C0000FB6F894DEBF0FBECDBFDF91CF911F9147 -:1022D0000F91FF90EF90DF90CF900C94670E862FB8 -:1022E000FF2019F00E94211D02C00E94891D28961E -:1022F0000FB6F894DEBF0FBECDBFDF91CF911F9117 -:102300000F91FF90EF90DF90CF900C940E1E842FD2 -:10231000837009F076C0F110E2C1262F2295269530 -:102320002770220F220F862F8F70C82ED12CE12C00 -:10233000F12C022E04C0CC0CDD1CEE1CFF1C0A94F8 -:10234000D2F764FF10C06FE070E080E090E004C05E -:10235000660F771F881F991F2A95D2F76095709591 -:102360008095909503C060E070E0CB01242F269506 -:1023700026952370422F50E042305105D1F0433072 -:10238000510559F16C297D298E299F29413051052C -:1023900041F128960FB6F894DEBF0FBECDBFDF9196 -:1023A000CF911F910F91FF90EF90DF90CF900C9401 -:1023B000AE176C297D298E299F2928960FB6F8948F -:1023C000DEBF0FBECDBFDF91CF911F910F91FF9068 -:1023D000EF90DF90CF900C94C8170E94AE17C70102 -:1023E000B60128960FB6F894DEBF0FBECDBFDF91C1 -:1023F000CF911F910F91FF90EF90DF90CF900C94B1 -:102400009417FF2019F0842F817001C086958823CE -:1024100009F465C1262F229526952770220F220FD9 -:10242000862F8F70C82ED12CE12CF12C022E04C0E7 -:10243000CC0CDD1CEE1CFF1C0A94D2F764FF10C00C -:102440006FE070E080E090E004C0660F771F881FA7 -:10245000991F2A95D2F7609570958095909503C045 -:1024600060E070E0CB01242F269526952370422F43 -:1024700050E042305105D1F04330510559F16C29FB -:102480007D298E299F294130510541F128960FB6AB -:10249000F894DEBF0FBECDBFDF91CF911F910F919A -:1024A000FF90EF90DF90CF900C9482186C297D29DB -:1024B0008E299F2928960FB6F894DEBF0FBECDBF98 -:1024C000DF91CF911F910F91FF90EF90DF90CF9010 -:1024D0000C949C180E948218C701B60128960FB66A -:1024E000F894DEBF0FBECDBFDF91CF911F910F914A -:1024F000FF90EF90DF90CF900C946818603FC9F187 -:1025000018F4603E50F49BC0623F09F460C008F4C8 -:102510004AC0633F09F46FC092C0162F1F70842F0A -:102520008F71FF2099F00E940118812F28960FB615 -:10253000F894DEBF0FBECDBFDF91CF911F910F91F9 -:10254000FF90EF90DF90CF900C946E100E942218B5 -:10255000812F28960FB6F894DEBF0FBECDBFDF9156 -:10256000CF911F910F91FF90EF90DF90CF900C943F -:102570007510FF20A1F02111B2C0842F8F71289611 -:102580000FB6F894DEBF0FBECDBFDF91CF911F9184 -:102590000F91FF90EF90DF90CF900C94471822306E -:1025A00008F09DC0EACFFF20A1F0842F8F712896FC -:1025B0000FB6F894DEBF0FBECDBFDF91CF911F9154 -:1025C0000F91FF90EF90DF90CF900C940118FF20B7 -:1025D00061F3842F8F7128960FB6F894DEBF0FBE7B -:1025E000CDBFDF91CF911F910F91FF90EF90DF90C2 -:1025F000CF900C942218FF2091F0842F8F71289691 -:102600000FB6F894DEBF0FBECDBFDF91CF911F9103 -:102610000F91FF90EF90DF90CF900C94EC172896DD -:102620000FB6F894DEBF0FBECDBFDF91CF911F91E3 -:102630000F91FF90EF90DF90CF900C94E217FF2066 -:10264000A1F0222309F4B1CF862F28960FB6F89473 +:100000000C940B040C944F040C944F040C944F0468 +:100010000C944F040C944F040C944F040C944F0414 +:100020000C944F040C944F040C946F0D0C94410EDF +:100030000C944F040C944F040C944F040C944F04F4 +:100040000C944F040C94EC220C944F040C944F0429 +:100050000C944F040C948E1C0C944F040C944F047D +:100060000C944F040C944F040C944F040C944F04C4 +:100070000C944F040C944F040C944F040C944F04B4 +:100080000C944F040C944F040C944F040C944F04A4 +:100090000C944F040C944F040C944F040C944F0494 +:1000A0000C944F040C944F040C944F04A60EC80EED +:1000B000B30FC80EB30F0A0F2D0FB30F820F950F9A +:1000C00089128912B712B712F91235133515351581 +:1000D0004D133515441444140F15351535152315D6 +:1000E000000000810889248935812B850252E100B6 +:1000F000E00000001E00140004001D0000774E0008 +:100100001F001A0016001B00007F4C002000080092 +:1001100007000600E2002A0021001500090019006E +:10012000E3004B00220017000A00050000004A000F +:1001300029002F0000002B0200004D002D00300090 +:1001400000002B000000500023001C000B001100D9 +:1001500000004F00240018000D001000E7005200BE +:1001600025000C000E003600E6002C0026001200D0 +:100170000F003700007F28002700130033003800ED +:10018000007751002E8131853482E500E4000000C3 +:100190000100C300C2003900010000002900010075 +:1001A0000100010001000100010001000100010047 +:1001B0000100010001000100010001000100010037 +:1001C0000100010001000100010001000100010027 +:1001D0000100010000000100010001000000010019 +:1001E000000001000100010000000100000001000A +:1001F00001000100010001000000010001000100F8 +:1002000001000100010001000100010001000100E6 +:1002100001000100010001000100010001000100D6 +:100220000100010001000100010001000100C30004 +:10023000C200390001000000010005520252E10035 +:10024000010000003A001E022002220201005100BB +:100250003B001F0221022302010028003C002F0264 +:1002600026022F0001002C003D0030022702300042 +:10027000010052003E00240235003502000050000B +:100280000100360200002B0000004F000100370281 +:1002900000002B0200004A003F003102380031000C +:1002A00000004D004000240021001E0027004B00EC +:1002B0004100250022001F0037004C0042002600AC +:1002C000230020002E002A004300380025022D00C4 +:1002D0002E024E00010005520252E50028000000E7 +:1002E000045205520000E100010000003A001E0225 +:1002F00020022202010051003B001F0221022302C2 +:10030000010028003C002F0226022F0001002C00D3 +:100310003D00300227023000010052003E0024025E +:1003200035003502000050000100360200002B00AD +:1003300000004F000100370200002B0200004A00BD +:100340003F0031023800310000004D004000240021 +:1003500021001E0027004B004100250022001F0045 +:1003600037004C0042002600230020002E002A0007 +:100370004300380025022D002E024E000452055283 +:100380000000E5002800000001000654C10039000B +:10039000010000002900010001000100010001002E +:1003A0000100010001000100010001000100010045 +:1003B0000100010001000100010001000100010035 +:1003C0000100010001000100010001000000010026 +:1003D0000100010000000100000001000100010017 +:1003E0000000010000000100010001000100010007 +:1003F00000000100010001000100010001000100F6 +:1004000001000100010001000100010001000100E4 +:1004100001000100010001000100010001000100D4 +:100420000100010001000654C10039000100000074 +:10043000010005520000E100A80000004400660031 +:10044000A6000100AA00B50045000100F20001006D +:10045000A90001006800F000F100F100F400B6000E +:1004600069000100F3000100F500B4006A0001001A +:10047000010001000000B8000100F9000000FA00CE +:100480000000B9000100F9000000FA000000AC0013 +:100490006B004600530001000000AB006C004A00F6 +:1004A00050004D004900A9006D005200510051005C +:1004B0004C00AE006E004B004F004E000100AD003E +:1004C0006F00B100B30001000100AA000100055255 +:1004D0000000E50001000000075200000000E100FC +:1004E000A800000044006600A6000100AA00B500B4 +:1004F00045000100F2000100A90001006800F000C1 +:10050000F100F100F400B60069000100F300010001 +:10051000F500B4006A000100010001000000B8000D +:100520000100F9000000FA000000B9000100F90024 +:100530000000FA000000AC006B0046005300010010 +:100540000000AB006C004A0050004D004900A900BB +:100550006D005200510051004C00AE006E004B0087 +:100560004F004E000100AD006F00B100B30001006C +:100570000100AA00075200000000E5000100000091 +:100580000100C10001003900010000002900010044 +:100590000100010001000100010001000100010053 +:1005A0000100010001000100010001000100010043 +:1005B0000100010001000100010001000100010033 +:1005C0000100010000000100010001000000010025 +:1005D0000000010001000100000001000000010016 +:1005E0000100010001000100000001000100010004 +:1005F00001000100010001000100010001000100F3 +:1006000001000100010001000100010001000100E2 +:100610000100010001000100010001000100C10012 +:100620000100390001000000160345007200670058 +:100630006F0044006F007800200045005A00000061 +:1006400016034500720067006F0044006F007800D9 +:10065000200045005A0000000403090409026D004F +:10066000040100A0FA0904000001030101000921AE +:1006700011010001223F000705810308000A090457 +:1006800001000103010200092111010001224D00B6 +:100690000705820308000A090402000103000000A4 +:1006A0000921110100012236000705830308000A11 +:1006B00009040300010300000009211101000122C7 +:1006C0003900070584031000011201100100000029 +:1006D00008EDFE071301000102000105010906A152 +:1006E00001050719E029E715002501950875018125 +:1006F00002050819012905950575019102950175F5 +:1007000003910105071900297715002501957875D2 +:10071000018102C005010980A101850216010026A0 +:10072000B7001A01002AB700751095018100C005B5 +:100730000C0901A1018503160100269C021A010083 +:100740002A9C02751095018100C005010902A101D2 +:100750000901A100050919012905150025019505C3 +:100760007501810295017503810105010930093187 +:100770001581257F95027508810609381581257F29 +:10078000950175088106050C0A38021581257F95AB +:100790000175088106C0C005010906A101050719F8 +:1007A000E029E7150025019508750181029501757D +:1007B0000881010508190129059505750191029522 +:1007C00001750391010507190029FF150025FF9503 +:1007D0000675088100C00000000000000000000055 +:1007E00000010204060A0F17202C3A4A5D71879D0A +:1007F000B3C7DAE9F5FCFFFCF5E9DAC7B39D877109 +:100800005D4A3A2C20170F0A06040201000000007E +:1008100000000000000011241FBECFEFDAE0DEBFB1 +:10082000CDBF04B603FE24C08091EF019091F0018A +:10083000A091F101B091F2018730904BA740B04BED +:10084000B9F41092EF011092F0011092F1011092A0 +:10085000F20114BE84B7877F84BF88E10FB6F89495 +:1008600080936000109260000FBEE0E0FFE3099506 +:1008700011E0A0E0B1E0ECE5F9E402C005900D92D2 +:10088000A433B107D9F721E0A4E3B1E001C01D9280 +:10089000AF3EB207E1F70E94B50A0C94AC240C9469 +:1008A000000061110BC0FC018281882321F085EEDC +:1008B0000E94161103C085EE0E94DE1180E090E0D8 +:1008C00008950895CF936091B1017091B201809124 +:1008D000B3019091B4010E94BA1BC82F56985E983C +:1008E00025982D9826982E9827982F98813011F0CA +:1008F000843029F4259A2D9A269A2E9A04C087309E +:1009000021F4259A2D9A279A2F9A0E94EE0F81FFA3 +:1009100002C0259A2D9A8EEF8C0F823010F4269A01 +:100920002E9AC550C23010F4279A2F9ACF9108956D +:100930000C94620456985E9825982D9826982E98C7 +:1009400027982F988FEF90E09093890080938800EC +:1009500090938B0080938A0090938D0080938C00FD +:10096000259A2D9A2FEF80E792E021508040904009 +:10097000E1F700C00000269A2E9A2FEF80E792E060 +:10098000215080409040E1F700C00000279A2F9A44 +:100990002FEF80E792E0215080409040E1F700C0C7 +:1009A000000025982D982FEF80E792E0215080409D +:1009B0009040E1F700C0000026982E982FEF80E7C6 +:1009C00092E0215080409040E1F700C0000027985D +:1009D0002F9856985E9825982D9826982E982798A7 +:1009E0002F98089589EA8093800089E080938100A0 +:1009F00024982C983F988AB18F748AB96E98479A38 +:100A00008BB1806B8BB9769A0E949A040C94610426 +:100A100080E2809300018091340181110EC00E9418 +:100A2000570581E0809334012FEF83ED90E321504F +:100A300080409040E1F700C0000080E40E945D0526 +:100A40008093000181112EC00E94870580930001D0 +:100A5000811128C00E94870580930001811122C066 +:100A60008FE30E9487058093000181111BC00E94C3 +:100A70007F0580E40E945D0580930001811112C012 +:100A80008CE00E9487058093000181110BC00E94B9 +:100A9000870580930001811105C08FE30E948705BF +:100AA000809300010E947F058091000108951092BB +:100AB000B9008AE08093B800089594EA9093BC004E +:100AC0009091BC0097FFFCCF9091B900987F98302F +:100AD00021F0903111F081E008958093BB0084E80B +:100AE0008093BC008091BC0087FFFCCF8091B9004F +:100AF000887F883111F0803471F780E0089584E9AF +:100B00008093BC008091BC0084FDFCCF089580934D +:100B1000BB0084E88093BC008091BC0087FFFCCFC1 +:100B20009091B900987F81E0983209F480E00895AF +:100B300084E88093BC008091BC0087FFFCCF80914B +:100B4000BB00089580910001811115C080E40E94CE +:100B50005D058093000181110CC082E10E94870530 +:100B600080930001811105C08FEF0E94870580935B +:100B700000010E947F0584B1807F84B985B1807FA8 +:100B800085B98AB1837F8AB98BB1837F8BB93E984F +:100B9000469808950E940805809300010E94A205CE +:100BA00080B38C7080BB81B3836F81BBE4E4F1E0E0 +:100BB000A6E3B1E011921D9281E0E235F807D1F78A +:100BC0000C94F204BF92CF92DF92EF92FF920F93B8 +:100BD0001F93CF93DF9380910001882379F0809158 +:100BE00035018F5F80933501811108C00E9408058F +:100BF00080930001811102C00E949A0406E311E073 +:100C0000C0E0D0E0DD24D39482E0C82EEE24E3944B +:100C1000F12CC73000F580910001811162C080E4A1 +:100C20000E945D0580930001811112C082E10E9443 +:100C300087058093000181110BC0C7010C2E01C0F4 +:100C4000880F0A94EAF780950E9487058093000137 +:100C50000E947F0546C0CA30A1F028F4C83059F080 +:100C6000C93061F005C0CC3089F070F0CD3089F02A +:100C7000209A289810C0219A29980DC0229A2A9863 +:100C80000AC0239A2B9807C0529A01C0539A5B98C6 +:100C900002C03E9A4698E0EAEA95F1F78FB1799959 +:100CA0005AC092E081708D25892B7C9B02C090E018 +:100CB00001C094E0892B7D9B02C090E001C098E0C8 +:100CC000892B7E9B02C090E001C090E1892B9FB1EF +:100CD0009095991F9927991F9295990F907E892B2E +:100CE0000FC08091000181114BC080E40E945D051E +:100CF00080930001882389F1B12C0E947F058B2D00 +:100D0000F8019081981719F08083C09201010E9428 +:100D1000A20521960F5F1F4FCE30D10509F079CF84 +:100D200080910101882371F1815080930101882312 +:100D300039F08FE99FE00197F1F700C0000022C071 +:100D4000A4E4B1E0E6E3F1E081918D9391E0E43435 +:100D5000F907D1F717C090E0A5CF83E10E9487057E +:100D6000809300018111C8CF81E40E945D058093CA +:100D700000018111C1CF0E949805B82EB094BDCF5B +:100D800080E0BECF0E94980481E0DF91CF911F9157 +:100D90000F91FF90EF90DF90CF90BF900895E82FD4 +:100DA000F0E0EC5BFE4F8081089508958B3B910548 +:100DB00078F4883A910540F5853A9105D0F484306D +:100DC000910508F0B1C08130910509F4ADC06BC048 +:100DD000803E910508F467C0883E910508F4A4C0E0 +:100DE0009C01205F31092031310508F05CC090651D +:100DF0000895853A910509F459C0863A910509F498 +:100E000058C083E890E40895883A910509F454C0E5 +:100E1000893A910509F453C08A3A910509F452C000 +:100E20008B3A910509F451C08C3A910509F450C0F0 +:100E30008D3A910509F44FC0803B910509F44EC0ED +:100E40008E3A910509F44DC08F3A910509F44CC0D2 +:100E5000813B910509F44BC0823B910509F44AC0DE +:100E6000833B910509F449C0843B910509F448C0CE +:100E7000853B910509F447C0863B910509F446C0BE +:100E8000873B910509F445C0883B910509F444C0AE +:100E9000893B910509F443C08A3B910509F042C0A2 +:100EA0008AE296E4089580E090E0089581E890E475 +:100EB000089582E890E4089582EE94E4089589EE1E +:100EC00094E408958AEE94E4089585EB94E40895FB +:100ED00086EB94E4089587EB94E408958CEC94E415 +:100EE00008958DEC94E4089583E895E408958AE8E4 +:100EF00095E4089582E995E4089584E995E40895D8 +:100F000081E296E4089583E296E4089584E296E40B +:100F1000089585E296E4089586E296E4089587E2CE +:100F200096E4089580E094E40895089596E0799F0A +:100F3000F001112494E5899FE00DF11D1124E60FC5 +:100F4000F11DEE0FFF1FE851FF4F85919491089519 +:100F5000880F991F805A9040FC01859194910895C3 +:100F6000880F991F80529F4FFC018591949108959D +:100F700026E0729FF001112444E5849FE00DF11DED +:100F80001124E60FF11DEE0FFF1FE851FF4F2591D1 +:100F90003491C9019A9581159F4110F4C9010895B2 +:100FA000C90190528115904128F4C9019F700E9497 +:100FB000B0070895C90190538115904120F4C901EB +:100FC0009927906C0895211580E5380769F40E94EF +:100FD00058159FEF24E34CE0915020404040E1F74A +:100FE00000C000000C94B31C213080E5380731F4B8 +:100FF0008091CD0181608093CD010895C901905504 +:101000008115904108F050C0832F99278F70992740 +:1010100081309105D9F4A9014370552702C0880F8A +:10102000991F4A95E2F79C68A90164E0440F551F97 +:101030006A95E1F744275370842B952B73E0220FB8 +:10104000331F7A95E1F7207633271DC08230910552 +:1010500029F4922F8827816F906A08958330910533 +:10106000A9F4A9014370552781E090E002C0880FE0 +:10107000991F4A95E2F79C6843E0220F331F4A9577 +:10108000E1F7207E3770822B932B08950497F1F4BB +:10109000A9014370552781E090E002C0880F991F95 +:1010A0004A95E2F79A68E8CFC901905781159041B7 +:1010B00020F4C9019F7090620895C901905881156C +:1010C000904120F4C9019F70906A0895203E310537 +:1010D000E0F4203C310558F52133310509F470C0A6 +:1010E00048F42932310509F464C02A32310509F483 +:1010F0006EC074C029333105F1F022383105D9F0C2 +:101100002533310509F44EC069C0233E310589F10C +:1011100038F4203E3105C1F0223E3105E1F05EC0D9 +:10112000263E310569F1273E3105A9F157C0C901B5 +:101130000E94A80708958091E00180FD02C081FF10 +:101140004DC080EE90E04BC08091E00180FFF9CF70 +:1011500089E390E044C08091E00182FF0EC080915D +:10116000E00184FF03C080E090E039C083EE90E0AE +:1011700036C08091E00182FFF2CF82EE90E02FC076 +:101180008091E00183FF0BC08091E00184FDEBCFF3 +:1011900087EE90E024C08091E00183FFF5CF86EEDA +:1011A00090E01DC08091E00185FF07C089E290E0DA +:1011B00016C08091E00185FFF9CF85E390E00FC074 +:1011C0008091E00186FF07C08AE290E008C080912C +:1011D000E00186FFF9CF81E390E001C0C9010E94E0 +:1011E000D606089508950C94F2088091620108953E +:1011F000CF93DF9300D01F92CDB7DEB72091E601E9 +:10120000243019F523E029839B838A832093E90006 +:101210008FEF9091E800815095FD06C095ED9A956D +:10122000F1F700008111F5CF8091E80085FF0DC036 +:1012300040E050E063E070E0CE0101960E94620B56 +:101240008091E8008E778093E8000F900F900F90C8 +:10125000DF91CF910895CF93DF9300D01F92CDB748 +:10126000DEB72091E601243021F522E029839B831B +:101270008A8383E08093E9008FEF9091E8008150AA +:1012800095FD06C095ED9A95F1F700008111F5CF17 +:101290008091E80085FF0DC040E050E063E070E021 +:1012A000CE0101960E94620B8091E8008E778093B8 +:1012B000E8000F900F900F90DF91CF91089520914B +:1012C000E6012430F1F422E02093E9002FEF309181 +:1012D000E800215035FD06C035ED3A95F1F70000E4 +:1012E0002111F5CF2091E80025FF0BC040E050E030 +:1012F00065E070E00E94620B8091E8008E77809339 +:10130000E8000895CF93DF93EC018091E6018430EB +:1013100009F046C090910C019923D9F090910D01EC +:101320009923B9F08093E9008FEF9091E800815004 +:1013300095FD06C095E19A95F1F700008111F5CF72 +:101340008091E80085FF2CC040E050E060E170E053 +:1013500017C081E08093E9008FEF9091E800815001 +:1013600095FD06C095ED9A95F1F700008111F5CF36 +:101370008091E80085FF14C040E050E068E070E034 +:10138000CE010E94620B8091E8008E778093E80086 +:1013900080E1FE01A2E5B1E001900D928A95E1F7AE +:1013A000DF91CF9108958091E501811109C00E94DC +:1013B000F40C0E94510D8091E20084608093E20061 +:1013C00008951092E501089508950C94D9220E9481 +:1013D0004A1C0E94DF220E94EE0F0C94F30842E0A8 +:1013E00061EC81E00E946E0C42E061EC82E00E94C0 +:1013F0006E0C42E061EC83E00E946E0C42E161EC15 +:1014000084E00C946E0C8091E801833009F455C09F +:1014100030F4813071F0823009F48EC008958A3042 +:1014200009F47AC08B3009F460C0893009F09CC09F +:1014300020C08091E701813A09F096C08091E800D0 +:10144000877F8093E8008091EB019091EC01892BDC +:1014500021F060E080E090E003C060E182E591E08F +:1014600070E00E94AB0B8091E8008B778093E800DE +:1014700008958091E701813209F076C08091EB01F7 +:101480009091EC01009719F0039709F06DC08091DD +:10149000E800877F8093E8008091E80082FD05C026 +:1014A0008091E6018111F8CF5FC08091F1008093B7 +:1014B00062018091E8008B7753C08091E701813A07 +:1014C00009F052C08091EB019091EC01892B09F059 +:1014D0004BC08091E800877F8093E8008091E8000E +:1014E00080FFFCCF80910C0136C08091E7018132F2 +:1014F000D9F58091EB019091EC01892BA9F58091B0 +:10150000E800877F8093E8000E94A30C8091E901A6 +:1015100080930C010C9458158091E701813221F5DC +:101520008091E800877F8093E8000E94A30C80915F +:10153000EA018093630108958091E701813AA1F463 +:101540008091E800877F8093E8008091E80080FF29 +:10155000FCCF809163018093F1008091E8008E7749 +:101560008093E8000C94A30C089584B7877F84BF10 +:1015700088E10FB6F89480936000109260000FBE6F +:1015800090E080E80FB6F89480936100909361003A +:101590000FBE0E943D100E94F40C0E94510D8091DC +:1015A000E20084608093E20078940E94CC0F0E9455 +:1015B0003F1082E091E00E94E90F0E94C7228091D3 +:1015C000E601853069F40E940D1C8091E4018823B6 +:1015D000B1F30E94351C882391F30E944C0BEFCF8E +:1015E0000E944510ECCF292F332723303105A9F075 +:1015F0006CF42130310509F442C02230310509F084 +:1016000043C08DE690E02CE536E042C02132310542 +:10161000C9F02232310519F137C09927813091057F +:1016200041F08230910541F0892B71F5E8E5F6E053 +:1016300005C0E0E4F6E002C0E8E2F6E0849190E064 +:101640009F0126C0643000F5E62FF0E0EE0FFF1F8B +:10165000EE5DFE4F2081318189E090E019C0643059 +:1016600098F4E62FF0E0DF01AA0FBB1FA65EBE4F85 +:101670002D913C91EA5EFE4F808190E009C082E1AD +:1016800090E029EC36E004C080E090E020E030E01B +:10169000FA0131832083089580E189BD82E189BD0B +:1016A00009B400FEFDCF8091D8008F7D8093D800D3 +:1016B0008091E00082608093E0008091E00081FDF5 +:1016C000FCCF0895CF92DF92EF92FF920F931F937A +:1016D000CF93DF937C018B01EA010E94C40C81113E +:1016E00031C0209731F088819981081B190BE80ED1 +:1016F000F91EC12CD12C0115110519F18091E800BA +:1017000085FD14C08091E8008E778093E8002097D3 +:1017100041F0888199818C0D9D1D9983888385E096 +:1017200011C00E94C40C882331F30CC0F7018191D1 +:101730007F018093F10001501109FFEFCF1ADF0AFA +:10174000DACF80E0DF91CF911F910F91FF90EF9062 +:10175000DF90CF9008952091ED013091EE01261792 +:10176000370748F06115710539F42091E8002E77AC +:101770002093E80001C0B901FC0120E0611571056A +:10178000B9F18091E601882309F440C0853009F45D +:101790003FC08091E80083FD3DC08091E80082FF5A +:1017A00006C08091E80082FF26C080E00895809105 +:1017B000E80080FFE3CF2091F3008091F20090E0F9 +:1017C000922B6115710551F08830910538F4219103 +:1017D0002093F100615071090196F3CF21E0089741 +:1017E00009F020E08091E8008E778093E800C6CF72 +:1017F0002111C7CFD6CF8091E601882339F08530FB +:1018000039F08091E80083FFCCCF04C082E00895D6 +:1018100083E0089581E008952091ED013091EE017B +:101820002617370748F06115710539F42091E80053 +:101830002E772093E80001C0B901FC0120E061157A +:101840007105C1F18091E601882309F441C085301A +:1018500009F440C08091E80083FD3EC08091E8001B +:1018600082FF06C08091E80082FF27C080E00895D3 +:101870008091E80080FFE3CF2091F3008091F20097 +:1018800090E0922B6115710559F08830910540F474 +:1018900024912093F1003196615071090196F2CFA5 +:1018A00021E0089709F020E08091E8008E7780938E +:1018B000E800C5CF2111C6CFD5CF8091E60188239E +:1018C00039F0853039F08091E80083FFCBCF04C038 +:1018D00082E0089583E0089581E00895982F97307D +:1018E00058F59093E900981739F07091EC00209129 +:1018F000ED005091F00003C0242F762F50E021FF1F +:1019000019C03091EB003E7F3093EB003091ED0039 +:101910003D7F3093ED003091EB0031603093EB0070 +:101920007093EC002093ED005093F0002091EE00B6 +:1019300027FF07C09F5FD3CF8F708093E90081E0BE +:10194000089580E008958091E70187FD05C08091AA +:10195000E80080FF0EC012C08091E80082FD05C043 +:101960008091E6018111F8CF08958091E8008B778E +:1019700008C08091E6018111EACF08958091E800C6 +:101980008E778093E80008958091E4009091E500BF +:1019900045E62091EC0020FF21C02091E80020FDC9 +:1019A00021C02091E601222389F0253089F0209181 +:1019B000EB0025FD0FC02091E4003091E5002817D1 +:1019C000390739F3415041F0C901E3CF82E008956E +:1019D00083E0089581E0089584E008952091E8006F +:1019E00022FFDFCF80E008950E94620D0E946A0D01 +:1019F000E0EEF0E0808181608083E8EDF0E08081BE +:101A00008F77808319BCA7EDB0E08C918E7F8C938B +:101A100080818F7E80831092E50108950F931F933C +:101A2000CF93DF930E94620D0E946A0DC8EDD0E053 +:101A300088818F77888388818068888388818F7D7B +:101A4000888319BC1092E6011092E2011092E40121 +:101A50001092E30100EE10E0F80180818B7F80831B +:101A600088818160888342E060E080E00E946E0CA3 +:101A7000E1EEF0E080818E7F8083E2EEF0E0808115 +:101A800081608083808188608083F80180818E7F7F +:101A90008083888180618883DF91CF911F910F912E +:101AA0000895E8EDF0E080818F7E8083E7EDF0E03F +:101AB00080818160808384E082BF81E08093E50142 +:101AC0000C940E0DE8EDF0E080818E7F8083109203 +:101AD000E20008951092DA001092E10008951F923A +:101AE0000F920FB60F9211242F933F934F935F9352 +:101AF0006F937F938F939F93AF93BF93EF93FF93D6 +:101B00008091E10082FF0BC08091E20082FF07C05C +:101B10008091E1008B7F8093E1000E94CB0F809148 +:101B2000DA0080FF1FC08091D80080FF1BC0809129 +:101B3000DA008E7F8093DA008091D90080FF0DC09B +:101B400080E189BD82E189BD09B400FEFDCF81E05D +:101B50008093E6010E94D30905C019BC1092E601EA +:101B60000E94E1098091E10080FF19C08091E200AC +:101B700080FF15C08091E2008E7F8093E20080910B +:101B8000E20080618093E2008091D80080628093BF +:101B9000D80019BC85E08093E6010E94E509809198 +:101BA000E10084FF30C08091E20084FF2CC080E11E +:101BB00089BD82E189BD09B400FEFDCF8091D800C6 +:101BC0008F7D8093D8008091E1008F7E8093E1002B +:101BD0008091E2008F7E8093E2008091E20081603C +:101BE0008093E2008091E201882311F084E007C035 +:101BF0008091E30087FF02C083E001C081E0809311 +:101C0000E6010E94E7098091E10083FF29C08091ED +:101C1000E20083FF25C08091E100877F8093E1008F +:101C200082E08093E6011092E2018091E1008E7FD4 +:101C30008093E1008091E2008E7F8093E2008091AA +:101C4000E20080618093E20042E060E080E00E9478 +:101C50006E0C8091F00088608093F0000E94E4098F +:101C6000FF91EF91BF91AF919F918F917F916F9174 +:101C70005F914F913F912F910F900FBE0F901F904A +:101C800018951F920F920FB60F9211242F933F9326 +:101C90004F935F936F937F938F939F93AF93BF9374 +:101CA000CF93EF93FF93C091E900CF708091EC0048 +:101CB0001092E9008091F000877F8093F000789483 +:101CC0000E947D0E1092E9008091F0008860809360 +:101CD000F000C093E900FF91EF91CF91BF91AF91D8 +:101CE0009F918F917F916F915F914F913F912F9134 +:101CF0000F900FBE0F901F9018951F93CF93DF93F7 +:101D0000CDB7DEB7AA970FB6F894DEBF0FBECDBF32 +:101D1000E7EEF1E08091F100819321E0EF3EF207E0 +:101D2000C9F70E94030A8091E80083FF1CC120913B +:101D3000E7013091E801832F90E08A30910508F0A7 +:101D400012C1FC01EA5AFF4F0C946124203881F043 +:101D5000223809F008C18091EB018F708093E9006F +:101D60008091EB0085FB882780F91092E90006C07E +:101D70008091E3019091E401911182609091E800DB +:101D8000977F9093E8008093F1001092F100C5C016 +:101D9000822F8D7F09F0E7C0222319F0223061F0F5 +:101DA000E2C08091E901813009F0DDC0333009F0F3 +:101DB00080E08093E40128C08091E901811124C072 +:101DC0002091EB012F7009F4CEC02093E90080919F +:101DD000EB0080FF19C08091EB00333011F480627A +:101DE00011C080618093EB0081E090E0022E01C081 +:101DF000880F0A94EAF78093EA001092EA00809133 +:101E0000EB0088608093EB001092E9008091E8007D +:101E1000877F86C02111A7C01091E9011F778091AB +:101E2000E3008078812B8093E3008091E800877F36 +:101E30008093E8000E94A30C8091E80080FFFCCF13 +:101E40008091E30080688093E300112311F083E028 +:101E500001C082E08093E60186C02058223008F05D +:101E600082C08091E9019091EA018C3D23E09207C4 +:101E700079F583E08A838AE289834FB7F894DE019B +:101E8000139620E03EE051E2E32FF0E0509357003C +:101E9000E49120FF03C0E295EF703F5FEF708E2F5B +:101EA00090E0EA3010F0C79601C0C0968D939D93E4 +:101EB0002F5F243149F74FBF8091E800877F8093DF +:101EC000E8006AE270E0CE0101960E94AB0B14C0FC +:101ED000AE014F5F5F4F6091EB010E94F30A0097E4 +:101EE00009F441C02091E800277F2093E800BC015D +:101EF00089819A810E940C0C8091E8008B778093F5 +:101F0000E80031C0203879F58091E800877F809320 +:101F1000E8008091E2018093F1008091E8008E77E3 +:101F20008093E8000E94A30C1EC021111CC0909158 +:101F3000E9019230C0F48091E800877F8093E80047 +:101F40009093E2010E94A30C8091E201811104C0F0 +:101F50008091E30087FF02C084E001C081E08093AC +:101F6000E6010E94EF098091E80083FF0AC080919A +:101F7000E800877F8093E8008091EB008062809387 +:101F8000EB00AA960FB6F894DEBF0FBECDBFDF916F +:101F9000CF911F9108950895CF938091E6018823F2 +:101FA000B1F08091E9008F709091EC0090FF02C039 +:101FB00090E801C090E0C92FC82B1092E9008091F1 +:101FC000E80083FD0E947D0ECF70C093E900CF91A1 +:101FD000089590936901809368010895E0916801E4 +:101FE000F0916901309721F00190F081E02D099482 +:101FF00080E00895E0916801F0916901309721F047 +:102000000280F381E02D09940895E0916801F09138 +:102010006901309721F00480F581E02D099408953D +:1020200020916601309167018217930771F09093B8 +:10203000670180936601E0916801F0916901309732 +:1020400021F00680F781E02D099408952091640124 +:10205000309165018217930771F090936501809329 +:102060006401E0916801F0916901309721F00084EA +:10207000F185E02D0994089508950C943C100E9478 +:10208000501C0E94CA050C94161DCF92DF92EF924D +:10209000FF920F931F93CF93DF93CDB7DEB72B97AC +:1020A0000FB6F894DEBF0FBECDBF0E94E2053BE63F +:1020B000E32E31E0F32E00E010E0C02E802F0E94CE +:1020C000CF06F701D1907F01D826B1F40F5F1F4FE3 +:1020D0000E30110591F78FEF89838A831B820E944E +:1020E000591C8160782F9D838C8349815A816B8133 +:1020F0008D810E94E81041C09091CD0191FF04C0F4 +:102100008B870E94D5068B8520E030E04D2D50E076 +:10211000922FBA01022E02C0759567950A94E2F7D4 +:1021200060FF25C02E83CF82EE24E394F12C02C001 +:10213000EE0CFF1C9A95E2F790E08E219F2121E0A2 +:10214000892B09F420E028870E94591C8160782F90 +:102150009A8789874E815F8168858A850E94E81009 +:10216000F801E559FE4F80818E25808306C02F5FE0 +:102170003F4F2630310561F6A9CF0E94FA1F10911A +:102180006A010E94EE0F1817A1F00E94EE0F8093D3 +:102190006A012B960FB6F894DEBF0FBECDBFDF915C +:1021A000CF911F910F91FF90EF90DF90CF900C9403 +:1021B000F3082B960FB6F894DEBF0FBECDBFDF91AC +:1021C000CF911F910F91FF90EF90DF90CF900895E6 +:1021D000CF93DF93CDB7DEB72B970FB6F894DEBF62 +:1021E0000FBECDBF4F83588769877A878B87DE0103 +:1021F000119686E0FD0111928A95E9F785E0FE01CE +:10220000379601900D928A95E1F749815A816B8149 +:102210007C818D819E810E9424182B960FB6F894A4 +:10222000DEBF0FBECDBFDF91CF910895CF93C82FF2 +:10223000882309F4C1C0823859F40E94EE0F81FD51 +:10224000BBC089E30E94C11A0E948B1B89E30CC0AA +:10225000833879F40E94EE0F80FDAEC083E50E94C2 +:10226000C11A0E948B1B83E50E94011BCF910C9425 +:102270008B1B843859F40E94EE0F82FD9DC087E4C9 +:102280000E94C11A0E948B1B87E4EECF8CEF8C0F4B +:10229000813A48F48C2F0E942F2281118DC08C2FFF +:1022A0000E94C11AE3CF80E28C0F883048F4C770D7 +:1022B00081E001C0880FCA95EAF70E94421BD6CF81 +:1022C0008BE58C0F833078F4C53A29F0C63A31F4A7 +:1022D00082E890E005C081E890E002C083E890E0E9 +:1022E000CF910C94101088E58C0F833108F064C0F6 +:1022F000C83A39F1C93A41F1CA3A49F1CB3A51F1F8 +:10230000CC3A59F1CD3A61F1C03B69F1CE3A71F165 +:10231000CF3A79F1C13B81F1C23B89F1C33B91F1E5 +:10232000C43B99F1C53BA1F1C63BA9F1C73BB1F153 +:10233000C83BB9F1C93BC1F1CA3BC9F58AE292E099 +:1023400038C082EE90E035C089EE90E032C08AEE6F +:1023500090E02FC085EB90E02CC086EB90E029C088 +:1023600087EB90E026C08CEC90E023C08DEC90E0F1 +:1023700020C083E891E01DC08AE891E01AC082E99C +:1023800091E017C084E991E014C081E292E011C0AD +:1023900083E292E00EC084E292E00BC085E292E01C +:1023A00008C086E292E005C087E292E002C080E0C9 +:1023B00090E0CF910C942610CF910895882309F4D2 +:1023C0004BC0823859F40E94EE0F81FF45C089E36B +:1023D0000E94C11A0E948B1B89E30CC0833871F4E0 +:1023E0000E94EE0F80FF38C083E50E94C11A0E9450 +:1023F0008B1B83E50E94011B0C948B1B843859F4C2 +:102400000E94EE0F82FF28C087E40E94C11A0E943A +:102410008B1B87E4EFCF9CEF980F913A58F390E233 +:10242000980F983050F4877091E001C0990F8A9509 +:10243000EAF7892F0E94481BDFCF9BE5980F933066 +:1024400020F480E090E00C941010885A833120F43E +:1024500080E090E00C9426100895882321F00E94DB +:10246000421B0C948B1B0895882321F00E94481B6B +:102470000C948B1B0895CF92DF92EF92FF920F93F3 +:102480001F93CF93DF93CDB7DEB728970FB6F8949D +:10249000DEBF0FBECDBF8C0185E0F801DE011196D5 +:1024A00001900D928A95E1F7F80140813181F28027 +:1024B000258122952F7083819481892B31F03F3FB4 +:1024C00031F481E04F3F19F403C081E001C080E0A6 +:1024D00080FDCBC249833A8389819A812F830E94F0 +:1024E0007F1A9E8388870E947E1A0E9451192F812D +:1024F0004E816885FF2029F00E945F1B68854E8110 +:102500002F81E42FE295EF70F0E0E05AFF4F0C943A +:102510006124842F807F142F1F70882311F012955F +:10252000107FFF2059F0112309F454C2812F6887CE +:102530000E94521B0E948B1B68854CC2862F0E94F2 +:10254000DE11112309F491C2812F0E94581B289695 +:102550000FB6F894DEBF0FBECDBFDF91CF911F91B4 +:102560000F91FF90EF90DF90CF900C948B1B342F46 +:10257000307F842F8F70303211F08295807F6623F8 +:1025800019F0613019F12BC0FF20B1F0222309F4BA +:1025900093C1213009F090C128960FB6F894DEBFA0 +:1025A0000FBECDBFDF91CF911F910F91FF90EF90A4 +:1025B000DF90CF900C94721B222319F0213009F484 +:1025C00054C28E830E94751B8E8189C1FF2021F029 +:1025D000223008F04AC270C1211147C280C1FF20D9 +:1025E00021F0222309F468C1F5C1222309F477C13F +:1025F00005C2242F26952695237030E0211531053C +:1026000021F021303105C9F030C2FF2021F0862FA2 +:10261000942F937002C080E090E028960FB6F89453 +:10262000DEBF0FBECDBFDF91CF911F910F91FF9005 +:10263000EF90DF90CF900C941010FF2021F0862FA8 +:10264000942F937002C080E090E028960FB6F89423 :10265000DEBF0FBECDBFDF91CF911F910F91FF90D5 -:10266000EF90DF90CF900C94570F222309F4B1CF55 -:10267000862F28960FB6F894DEBF0FBECDBFDF9130 -:10268000CF911F910F91FF90EF90DF90CF900C941E -:102690001F104F70C8010E94AB0228960FB6F89425 -:1026A000DEBF0FBECDBFDF91CF911F910F91FF9085 -:1026B000EF90DF90CF900C9409174F70C8012896C7 -:1026C0000FB6F894DEBF0FBECDBFDF91CF911F9143 -:1026D0000F91FF90EF90DF90CF900C94D605289645 -:1026E0000FB6F894DEBF0FBECDBFDF91CF911F9123 -:1026F0000F91FF90EF90DF90CF9008950E9497196F -:102700000E946C190E94B3190E94BA1E0E940E1EEC -:1027100080E090E00E94510E80E090E00C94670E03 -:102720000E9487190C947E130E94B718292F2295B6 -:102730002F7030E02C3031054CF42A3031056CF428 -:10274000225031092230310590F407C02C30310578 -:1027500051F02F30310539F00AC0803E10F0803F33 -:1027600031F481E0089593FB882780F9089580E093 -:102770000895CF93DF9300D000D01F92CDB7DEB77E -:102780000F900F900F900F900F90DF91CF910895C1 -:10279000CF93DF9300D000D000D0CDB7DEB7269620 -:1027A0000FB6F894DEBF0FBECDBFDF91CF91089575 -:1027B0001F93CF93DF93C091790116E080917A0146 -:1027C000C81799F0D0E01C9FF0011D9FF00D112457 -:1027D000E558FE4F408151816281738184819581EA -:1027E0000E94C8132196C770E9CFDF91CF911F9146 -:1027F00008954091AB015091AC016091AD01709191 -:10280000AE018091AF019091B0010C94C813CF93A9 -:102810008091B00182958F7009F05FC08091AD0109 -:10282000882309F45AC020917901A0917A0160911E -:10283000AB017091AC018091AE019091AF0131E09C -:102840006F3F09F030E0B32FC6E02A1709F445C006 -:10285000009721F07F3F21F44B2F03C041E001C0DE -:1028600040E030E040FD35C0C29FF001C39FF00D55 -:102870001124E558FE4F418174132BC0408164132D -:1028800028C04281411125C043815481481759070E -:1028900010F441505109481B590B483C5105C8F4EC -:1028A0008091B0018F7080618093B00186E0829F3B -:1028B000F001839FF00D1124E058FE4F80818F704E -:1028C000806180838BEA91E00E947C10CF910C9410 -:1028D000D8132F5F3F4F2770B8CFCF910895CF9275 -:1028E000DF92EF92FF920F931F93CF93DF93CDB7B9 -:1028F000DEB762970FB6F894DEBF0FBECDBF8C0176 -:1029000085E0F801DE011D9601900D928A95E1F7B0 -:10291000D8014C9111965C91119712966C91129777 -:102920001396ED90FC9014977091AB01E091AC017F -:102930002091AE013091AF012115310531F0EF3F0B -:1029400031F481E07F3F19F403C081E001C080E0F1 -:10295000B82FB170CB2E80FD6CC1D090AD01DD20C1 -:1029600009F4F5C0F091B001E216F30638F0C701A2 -:10297000821B930B883C910548F09BC020953095B5 -:102980002E0D3F1D283C310508F093C08F2F807F0E -:1029900009F052C0E51314C0741312C0D62E611191 -:1029A0000FC0FF70F061F093B0010E94F9138BEA41 -:1029B00091E00E947C108091B001F80185836CC188 -:1029C000EF2831F05F3F31F481E04F3F19F403C04D -:1029D00081E001C080E080FD03C081E0862701C066 -:1029E00080E0F82FF170FF2E80FF1CC080917901EC -:1029F00020917A0136E0821709F428C190E0389FCF -:102A0000F001399FF00D1124E558FE4F71815713E5 -:102A100006C07081471303C07281671303C001961B -:102A20008770E9CFD62E662309F436C18091B001B4 -:102A300081608093B00153C0E51308C0741306C0D1 -:102A4000611104C0D8011596FC93AEC04D875E8716 -:102A50008D859E856A8B0E9494136A89882329F14B -:102A6000D62E662311F12091B001822F82958F70AE -:102A700090E002970CF460C08091AB019091AC01A2 -:102A800098878F831986FB86EA862C87CE01079666 -:102A900051C0E51731F14D875E878D859E856A8B24 -:102AA0000E9494136A8981112EC0C8010E947C1073 -:102AB000A4C08F2F807F69F77E2DF98AE88A8989E3 -:102AC0000E94B9138BEA91E00E947C10EBEAF1E0DE -:102AD00086E0DF011D928A95E9F70E94F913D12C57 -:102AE000DBC07413D8CF6111D6CFD8011596FC93F3 -:102AF000C8010E947C10EBEAF1E086E0DF011D9244 -:102B00008A95E9F7C9C0D62E662379F22091B001E3 -:102B1000822F82958F7090E0029774F08091AB01C4 -:102B20009091AC019A8389831B82FD82EC822E8373 -:102B3000CE0101960E947C1086E0F801ABEAB1E07C -:102B400001900D928A95E1F70E9407146FC0E2167A -:102B5000F30628F0C701821B930B9C0104C020954B -:102B600030952E0D3F1D283C310508F052C0D62E61 -:102B7000662309F49ACFE5132CC074132AC0809100 -:102B8000B00180FD1DC0982F92959F70C9F0D801AB -:102B900015968C9315979F3039F09F5F9295907F93 -:102BA0008F70892B15968C93C8010E947C1086E04B -:102BB000F801ABEAB1E001900D928A95E1F736C0D9 -:102BC00086E0F801ABEAB1E001900D928A95E1F759 -:102BD00063C04D875E878D859E850E9494138823F0 -:102BE00079F086E0F801ABEAB1E001900D928A95A8 -:102BF000E1F70E9407140E94F913DD24D3944CC01E -:102C00008091B00181608093B001C8010E947C1066 -:102C100043C07E2DF98AE88A89890E94B913EBEABC -:102C2000F1E086E0DF011D928A95E9F70E94F91331 -:102C300033C0662309F439CF4D875E878D859E8525 -:102C40000E949413882309F430CFCBCF4D875E8741 -:102C50008D859E850E94B718292F22952F7030E010 -:102C6000223031052CF49F7041F0811106C00CC058 -:102C7000243031052CF49F7049F4805E883020F0B8 -:102C8000C8010E947C10CF2CDC2C06C0D801159600 -:102C90009C91907F91F7F8CF8D2D62960FB6F894A6 -:102CA000DEBF0FBECDBFDF91CF911F910F91FF907F -:102CB000EF90DF90CF9008951F93CF93DF93CDB720 -:102CC000DEB72C970FB6F894DEBF0FBECDBF4F8393 -:102CD000588769877A878B879C87CE0107960E94E1 -:102CE0006F148823C1F02F8138858A859B85892BB5 -:102CF00031F03F3F11F080E003C02F3FE1F781E06A -:102D0000811147C04F81588569857A858B859C855F -:102D10000E94C8133EC086E0FE013796DE01119680 -:102D200001900D928A95E1F7FF81E8854A855B85E0 -:102D30004115510531F0EF3F31F481E0FF3F19F4C7 -:102D400003C081E001C080E080FD23C020917A01B2 -:102D500030E0C9010196877099276091790170E090 -:102D600086179707F1F1F983EA835D834C8396E038 -:102D7000929FD001939FB00D1124A558BE4FFE0124 -:102D8000319601900D929A95E1F780937A010E9415 -:102D9000D81316E08091790190917A01891779F121 -:102DA000189FC001112485589E4F0E946F148823DC -:102DB00031F1E09179011E9FF0011124E558FE4F99 -:102DC0004081518162817381848195810E94C81301 -:102DD0008091790190E0019687709927809379011D -:102DE000D9CF0E94901310927A0110927901EBEAE8 -:102DF000F1E086E0DF011D928A95E9F7CACF2C96B3 -:102E00000FB6F894DEBF0FBECDBFDF91CF911F91FB -:102E10000895EF92FF920F931F93CF93DF93FC01DE -:102E2000009709F46FC0F12CEE24E394EF01219692 -:102E30008491843740F4843008F055C0813081F0AB -:102E4000823021F15FC0853709F447C0C0F19CE7AB -:102E5000980F903708F056C08F770E941F1045C01A -:102E60008F010E5F1F4FFE01849190E2980F983002 -:102E700050F48770FE2D01C0FF0F8A95EAF78F2F5F -:102E80000E948A1915C00E94570F14C08F010E5F4F -:102E90001F4FFE01849190E2980F983068F487707C -:102EA000FE2D01C0FF0F8A95EAF78F2F0E9490191F -:102EB0000E94B319E80119C00E941F10FBCFCF0177 -:102EC0000296FE01C491CC2361F0EFE9FFE0319757 -:102ED000F1F700C00000C150F6CFCF010296FE010D -:102EE000F490EC0102C00E94570F8F2D882341F00F -:102EF000EFE9FFE03197F1F700C000008150F6CF15 -:102F0000FE0194CFDF91CF911F910F91FF90EF9031 -:102F1000089508956093B5017093B6018093B70149 -:102F20009093B8010C947E130F931F930091B501F9 -:102F30001091B6012091B7013091B801062B172BE3 -:102F4000282B392B0093B5011093B6012093B701BC -:102F50003093B8011F910F910C947E130F931F9320 -:102F60000091B5011091B6012091B7013091B801DF -:102F700006231723282339230093B5011093B601A4 -:102F80002093B7013093B8011F910F910C947E13D9 -:102F90000F931F930091B5011091B6012091B701D5 -:102FA0003091B80106271727282739270093B50144 -:102FB0001093B6012093B7013093B8011F910F9180 -:102FC0000C947E131092B1011092B2011092B301D1 -:102FD0001092B4010C947E1341E050E060E070E088 -:102FE00004C0440F551F661F771F8A95D2F7409380 -:102FF000B1015093B2016093B3017093B4010C948A -:103000007E1341E050E060E070E004C0440F551FC3 -:10301000661F771F8A95D2F78091B1019091B20116 -:10302000A091B301B091B401842B952BA62BB72BA3 -:103030008093B1019093B201A093B301B093B40116 -:103040000C947E1341E050E060E070E004C0440F57 -:10305000551F661F771F8A95D2F74095509560954A -:1030600070958091B1019091B201A091B301B0919E -:10307000B40184239523A623B7238093B1019093B1 -:10308000B201A093B301B093B4010C947E1341E05C -:1030900050E060E070E004C0440F551F661F771FCA -:1030A0008A95D2F78091B1019091B201A091B301BC -:1030B000B091B40184279527A627B7278093B10143 -:1030C0009093B201A093B301B093B4010C947E131A -:1030D0000F931F930091B1011091B2012091B301A0 -:1030E0003091B401062B172B282B392B0093B101FB -:1030F0001093B2012093B3013093B4011F910F914B -:103100000C947E130F931F930091B1011091B201A3 -:103110002091B3013091B4010623172328233923CA -:103120000093B1011093B2012093B3013093B40125 -:103130001F910F910C947E130F931F930091B10177 -:103140001091B2012091B3013091B40106271727E5 -:10315000282739270093B1011093B2012093B301BE -:103160003093B4011F910F910C947E130895CF9268 -:10317000DF92EF92FF920F931F93CF93DF93EC01B7 -:10318000C090B501D090B601E090B701F090B801C1 -:103190008091B1019091B201A091B301B091B401BD -:1031A000C82AD92AEA2AFB2A0FE110E0B701A601B2 -:1031B000002E04C076956795579547950A94D2F7E7 -:1031C00040FF07C0BE01802F0E94F90581309105A4 -:1031D00039F40150110950F7BE0180E00E94F90551 -:1031E000DF91CF911F910F91FF90EF90DF90CF90E3 -:1031F000089590910C019923D9F090910D01992394 -:10320000B9F0982F9695969596959F3088F5E09110 -:103210000E01F0910F01E90FF11D877021E030E000 -:1032200001C0220F8A95EAF78181822B818308955C -:1032300040910E0150910F0120E030E09FEFFA0124 -:10324000E20FF31F6281681799F09F3F19F4611133 -:1032500001C0922F2F5F3F4F2E30310581F79F3FE6 -:1032600039F0FA01E90FF11D97FDFA95828308956F -:10327000089590910C019923E1F090910D0199230B -:10328000C1F0982F9695969596959F3020F5E091F0 -:103290000E01F0910F01E90FF11D877021E030E080 -:1032A00001C0220F8A95EAF7209581812823218386 -:1032B000089540910E0150910F0120E030E0FA0195 -:1032C000E20FF31F9281981301C012822F5F3F4FCC -:1032D0002E303105A1F7089581E090E0E0910E01D4 -:1032E000F0910F01E80FF91F1082019680319105CE -:1032F000A9F708959091CB01982B9093CB01089555 -:1033000080959091CB0198239093CB0108951092D2 -:10331000CB0108959091CA01982B9093CA0108950A -:1033200080959091CA0198239093CA0108951092B4 -:10333000CA0108958093B90108951092B9010895C2 -:1033400040910E0150910F0120E030E080E0FA0141 -:10335000E20FF31F918191118F5F2F5F3F4F2F304D -:103360003105A9F70895E0910E01F0910F018091C8 -:10337000CB018083E0910E01F0910F01808190914B -:10338000CA01892B80839091B901992361F0E09162 -:103390000E01F0910F018081892B80830E94A0197A -:1033A00081111092B90180910E0190910F010C943E -:1033B0003B0ECF92DF92EF92FF920F931F936C011F -:1033C000EE24FF24C114D104E104F10421F46B01C3 -:1033D0007C0180E001C080E133272F2D1E2D0D2DB3 -:1033E000011511052105310519F0885F6801790182 -:1033F00097018601A4E03695279517950795AA951C -:10340000D1F7011511052105310519F08C5F68010F -:10341000790197018601F2E0369527951795079572 -:10342000FA95D1F7011511052105310519F08E5FC7 -:1034300068017901B701A60176956795579547957B -:10344000452B462B472B09F08F5F1F910F91FF9063 -:10345000EF90DF90CF9008958091E501843009F1DD -:103460001092CD0120E488E190E00FB6F894A89581 -:10347000809360000FBE2093600083B7817F8460DB -:1034800083BF83B7816083BF7894889583B78E7F2D -:1034900083BF88E10FB6F8948093600010926000BB -:1034A0000FBE089508950895CF930E94521A0E9466 -:1034B00023040E94531AC0E08C2F0E941005811132 -:1034C00005C0CF5FCE30C1F780E001C081E0CF9171 -:1034D00008950E9490130E942F0E0C94340782E0EE -:1034E00084BD93E095BD9AEF97BD80936E000895DB -:1034F0002FB7F8948091CE019091CF01A091D00187 -:10350000B091D1012FBF0895CF92DF92EF92FF9239 -:103510000F931F932FB7F8944091CE015091CF0194 -:103520006091D0017091D1012FBF6A017B01EE241F -:10353000FF248C0120E030E0C016D106E206F3063D -:1035400010F441505109481B590BCA011F910F91AA -:10355000FF90EF90DF90CF9008951F920F920FB6DB -:103560000F9211248F939F93AF93BF938091CE01BD -:103570009091CF01A091D001B091D1010196A11DF0 -:10358000B11D8093CE019093CF01A093D001B09351 -:10359000D101BF91AF919F918F910F900FBE0F906E -:1035A0001F9018950E94350BF8942FEF87EA91E64B -:1035B000215080409040E1F700C0000087E090EB90 -:1035C000DC018093EE019093EF01A093F001B093A2 -:1035D000F1012CE088E190E00FB6F894A895809373 -:1035E00060000FBE20936000FFCFEF92FF920F9319 -:1035F0001F93CF93DF93E82EF12C8F2D0E9410059F -:10360000C0E0D0E0082F10E098010C2E02C03595E4 -:1036100027950A94E2F720FD05C02196C630D10512 -:1036200099F709C06C2F7F2D80E00E94D705E81222 -:10363000F4CF81E005C0F3948EE0F812DECF80E095 -:10364000DF91CF911F910F91FF90EF900895CF934D -:10365000C82F8CE20E94F51A882321F08C2FCF917D -:103660000C94F51A80E0CF910895CF930E947A1CB4 -:10367000811102C00E94601CC5E6C15049F00E9441 -:1036800023048FE39CE90197F1F700C00000F5CF18 -:1036900089E20E94271B811111C18AE20E94271B27 -:1036A00081110E94601C85E00E94271B81110E94ED -:1036B000D21A0E94851C8093CC0187E00E94271BB0 -:1036C000882399F18BE10E94271B882351F0909168 -:1036D000CC0191FB882780F921E0822780FB91F9BA -:1036E00022C08EE00E94271B882351F09091CC01CC -:1036F00092FB882780F921E0822780FB92F913C092 -:1037000080E10E94271B9091CC01882341F093FB1C -:10371000882780F921E0822780FB93F904C0892F54 -:10372000809580FB90F99093CC018091CC010E9410 -:10373000891C0E94971C8093DF0180EE0E94271B4A -:10374000882341F08091DF01982F909590FB80F9BC -:103750008093DF0189E30E94271B882359F0909111 -:10376000DF0191FB882780F921E0822780FB91F916 -:103770009093DF0182EE0E94271B882359F09091DD -:10378000DF0192FB882780F921E0822780FB92F9F4 -:103790009093DF0186EE0E94271B882359F09091B9 -:1037A000DF0193FB882780F921E0822780FB93F9D2 -:1037B0009093DF0183EE0E94271B882359F090919C -:1037C000DF0194FB882780F921E0822780FB94F9B0 -:1037D0009093DF0185E30E94271B882359F0909185 -:1037E000DF0195FB882780F921E0822780FB95F98E -:1037F0009093DF0181E30E94271B882359F0909169 -:10380000DF0196FB882780F921E0822780FB96F96B -:103810009093DF0181E10E94271B882359F090914A -:10382000DF0197FB882780F921E0822780FB97F949 -:103830009093DF018091DF010E949B1C8091DF014A -:1038400087FB882780F980930D0187E20E94271B60 -:10385000C82F8EE10E94271B8111C2608FE10E9458 -:10386000271B8111C46080E20E94271B8111C86060 -:1038700081E20E94271B8111C06182E20E94271B06 -:103880008111C06283E20E94271B8111C06484E21F -:103890000E94271B882311F0C06802C0CC2329F0A6 -:1038A0008C2F0E94921C6C2F03C00E948E1C682FCC -:1038B00070E080E090E0CF910C948A17CF9108954A -:1038C0006DEE7EEF80E090E00E94B62260E082E044 -:1038D00090E00E94A82260E083E090E00E94A8228D -:1038E00060E084E090E00E94A82260E085E090E043 -:1038F0000C94A82280E090E00E94A22221E08D3E5C -:103900009E4F09F020E0822F089582E090E00C9411 -:103910009A22682F82E090E00C94A82283E090E045 -:103920000C949A22682F83E090E00C94A82284E003 -:1039300090E00C949A22682F84E090E00C94A822E6 -:103940008091D40180FF0BC06091130185E0689FD6 -:10395000B001112475956795759567952AC081FF0B -:1039600009C06091130185E0689FB001112475952D -:1039700067951FC082FF07C06091130185E0689FB3 -:10398000B001112416C04091D5014423C9F06091C3 -:103990001201461788F72091130185E0289F9001B6 -:1039A0001124429FC001439F900D112470E00E949A -:1039B0006C226038710540F46115710539F002C060 -:1039C00065E070E0862F08958FE7089581E00895FF -:1039D0008091D40180FF08C06091110170E075955D -:1039E00067957595679521C081FF06C060911101AB -:1039F00070E07595679519C082FF04C06091110150 -:103A000070E010C08091D5018823C1F06091100151 -:103A10008617A0F790911101989FC001112470E0C2 -:103A20000E946C226038710528F46115710521F03F -:103A3000862F08958FE7089581E0089561E070E092 -:103A4000F4CF803F21F40E94A01C819504C0813FE7 -:103A500029F40E94A01C8093D8010895823F21F48C -:103A60000E94A01C819504C0833F29F40E94A01CE1 -:103A70008093D7010895893F19F40E94E81C05C07E -:103A80008A3F31F40E94E81C81958093D901089502 -:103A90008B3F21F40E94E81C819504C08C3F29F4DF -:103AA0000E94E81C8093DA010895843F21F48091FC -:103AB000D601816017C0853F21F48091D6018260D4 -:103AC00011C0863F21F48091D60184600BC0873FEE -:103AD00021F48091D601886005C0883F31F480913F -:103AE000D60180618093D60108958D3F21F48091A5 -:103AF000D40181600BC08E3F21F48091D40182609B -:103B000005C08F3F29F48091D40184608093D40153 -:103B10000895803F39F48091D80187FF6CC01092DE -:103B2000D80169C0813F29F48091D8011816BCF3EF -:103B300062C09091D701823F29F497FF5CC0109238 -:103B4000D70159C0833F19F41916CCF354C0893FEB -:103B500041F48091D90118160CF04DC01092D90192 -:103B60004AC08A3F29F48091D90187FF44C0F6CF2B -:103B70008B3F39F48091DA0187FF3DC01092DA0162 -:103B80003AC08C3F29F48091DA011816BCF333C097 -:103B9000843F21F48091D6018E7F17C0853F21F4A8 -:103BA0008091D6018D7F11C0863F21F48091D6018E -:103BB0008B7F0BC0873F21F48091D601877F05C0A2 -:103BC000883F31F48091D6018F7E8093D60113C057 -:103BD0008D3F21F48091D4018E7F0BC08E3F21F464 -:103BE0008091D4018D7F05C08F3F29F48091D4014D -:103BF0008B7F8093D4018091D70181110EC0809179 -:103C0000D80181110AC08091D901811106C080912B -:103C1000DA01811102C01092D501089586ED91E07C -:103C20000E94460E0E94781A9093D3018093D2018D -:103C300008951F93CF93DF938091D2019091D30188 -:103C40000E94841A4091D501442321F0209114014F -:103C500030E006C0209115015AE0259F9001112403 -:103C60008217930708F482C08091D7011091D80180 -:103C7000D091D901C091DA01811107C0111105C09D -:103C8000D11103C0CC2309F471C04F3F19F04F5F2D -:103C90004093D501181624F40E94A01C8093D701EC -:103CA0008091D70187FF05C00E94A01C8195809359 -:103CB000D701111624F40E94A01C8093D801809192 -:103CC000D80187FF05C00E94A01C81958093D80170 -:103CD0006091D701662339F11091D801112319F1B0 -:103CE000772767FD7095872F972F0E947D2123E30B -:103CF00033E343E35FE30E94E1210E944A216093A2 -:103D0000D701612F772767FD7095872F972F0E9426 -:103D10007D2123E333E343E35FE30E94E1210E943B -:103D20004A216093D8011D1624F40E94E81C809358 -:103D3000D9018091D90187FF05C00E94E81C8195B7 -:103D40008093D9011C1624F40E94E81C8093DA01A8 -:103D50008091DA0187FF05C00E94E81C819580935D -:103D6000DA01DF91CF911F910C940E1EDF91CF915C -:103D70001F910895E6EDF1E085E0DF011D928A953F -:103D8000E9F71092D5011092D4010895833081F1A2 -:103D900028F4813059F08230D1F00895853009F44B -:103DA00049C0B8F1863009F456C008952091150134 -:103DB000862F90E0820F911D8F3F910520F4620FB6 -:103DC0006093150108958FEF809315010895209158 -:103DD0001401862F90E0820F911D8F3F910520F4F2 -:103DE000620F6093140108958FEF8093140108957A -:103DF00020911301862F90E0820F911D8F3F910536 -:103E000020F4620F6093130108958FEF80931301E4 -:103E1000089520911201862F90E0820F911D8F3F0F -:103E2000910520F4620F6093120108958FEF809343 -:103E30001201089520911101862F90E0820F911DAB -:103E40008F3F910520F4620F6093110108958FEF69 -:103E500080931101089520911001862F90E0820F28 -:103E6000911D8F3F910520F4620F6093100108951A -:103E70008FEF809310010895833011F128F4813081 -:103E800049F0823091F00895853081F120F186303B -:103E9000C1F1089580911501681720F4861B809365 -:103EA0001501089510921501089580911401681765 -:103EB00020F4861B80931401089510921401089534 -:103EC00080911301681720F4861B809313010895D5 -:103ED00010921301089580911201681720F4861B37 -:103EE000809312010895109212010895809111019A -:103EF000681720F4861B8093110108951092110118 -:103F0000089580911001681720F4861B809310019A -:103F100008951092100108958D3109F442C020F5E2 -:103F20008E3009F479C070F4873009F45EC020F453 -:103F3000863009F442C033C08830D1F18B3009F4A7 -:103F4000A7C02DC0863109F4A3C038F4803109F42C -:103F50006DC0813109F47BC022C0893109F498C059 -:103F60008B3109F44FC01BC0853309F479C048F484 -:103F7000873209F475C008F478C0893209F470C03A -:103F80000EC0833438F48A3308F071C0883309F4E2 -:103F90007FC005C0833409F463C08834C1F080E079 -:103FA00008950E9404210E942F0E0E94340770C0C1 -:103FB0000E94851C0E94971C6BC08091CC01817F60 -:103FC0008E7F8093CC0181E08093DC0108950E9474 -:103FD00090132FEF83ED90E3215080409040E1F764 -:103FE00000C000000E94D21A53C09091CC01892FCA -:103FF000817090FF03C0917F9E7F26C09160909357 -:10400000CC0146C09091CC0191FB882780F921E03A -:10401000822780FB91F913C09091CC0192FB8827F5 -:1040200080F921E0822780FB92F909C09091CC01B0 -:1040300093FB882780F921E0822780FB93F99093F6 -:10404000CC01882329F191609093CC0108950E94BE -:10405000901380910D0191E0892780930D0118C084 -:1040600061E070E080E090E00FC023EE01C027EC3B -:10407000280F61E070E080E090E004C0660F771FD9 -:10408000881F991F2A95D2F70E948A170E949013C1 -:1040900081E0089580E0089580E00895CF93C82FCF -:1040A0008091DC01813079F018F08230D1F184C048 -:1040B000A0910E01B0910F018C91813169F0823293 -:1040C00009F07CC009C0A0910E01B0910F018C9144 -:1040D000813111F0823249F48C2F0E944A208111E3 -:1040E0001DC08C2F0E948C1F1AC08C2F0E944C2048 -:1040F000811114C0C43179F048F4CB3079F0C0316B -:1041000009F060C082E08093DC0108C0C93219F078 -:10411000C83321F057C01092DC0154C081E0817097 -:1041200053C0C93289F118F5C43171F1A8F4C73010 -:1041300009F046C08AE08093150194E19093140140 -:1041400093E0909313018093120188E08093110112 -:1041500088E28093100134C0CE51C63088F5EC2F30 -:10416000F0E0E65DFE4F80818093DB0129C0CE3414 -:10417000E9F020F4CB3421F56AE013C0C13579F0C1 -:10418000C235F1F461E00DC08091DB01882319F0A4 -:104190001092DB0115C081E08093DC0115C061E065 -:1041A00006C08091DB010E94C61E0AC06AE08091B1 -:1041B000DB010E943C1F04C01092DC0180E004C0BF -:1041C00081E002C080E0ABCFCF910895E1E8F0E05C -:1041D0008081886080838081816080838FB7F8943C -:1041E00093E09093890090ED909388008FBF08959D -:1041F000EFE6F0E08081826080830895EFE6F0E0F2 -:1042000080818D7F80830895EFE6F0E0808192E0E9 -:104210008927808308951F920F920FB60F92112461 -:104220002F933F934F935F936F937F938F939F93BE -:10423000AF93BF93EF93FF938091DD019091DE01E7 -:1042400001969093DE018093DD01811103C082E02D -:104250000E943407E091DE01E695E695F0E0E6572E -:10426000FB4FE4918091DD018E1303C080E00E943A -:104270003407FF91EF91BF91AF919F918F917F9103 -:104280006F915F914F913F912F910F900FBE0F90C3 -:104290001F90189504D06894B1118DC0089570D006 -:1042A00088F09F5790F0B92F9927B751A0F0D1F01F -:1042B000660F771F881F991F1AF0BA95C9F712C0A9 -:1042C000B13081F077D0B1E0089574C0672F782FB6 -:1042D0008827B85F39F0B93FCCF386957795679515 -:1042E000B395D9F73EF490958095709561957F4F81 -:1042F0008F4F9F4F0895E89409C097FB3EF4909527 -:104300008095709561957F4F8F4F9F4F9923A9F0AE -:10431000F92F96E9BB279395F6958795779567953D -:10432000B795F111F8CFFAF4BB0F11F460FF1BC081 -:104330006F5F7F4F8F4F9F4F16C0882311F096E914 -:1043400011C0772321F09EE8872F762F05C06623C2 -:1043500071F096E8862F70E060E02AF09A95660F7B -:10436000771F881FDAF7880F9695879597F9089534 -:1043700057FD9058440F551F59F05F3F71F0479516 -:10438000880F97FB991F61F09F3F79F087950895FB -:10439000121613061406551FF2CF4695F1DF08C01A -:1043A000161617061806991FF1CF86957105610537 -:1043B00008940895E894BB2766277727CB0197F9DF -:1043C00008950BD078C069D028F06ED018F09523EE -:1043D00009F05AC05FC01124EECFCADFA0F3959F49 -:1043E000D1F3950F50E0551F629FF001729FBB27DC -:1043F000F00DB11D639FAA27F00DB11DAA1F649F88 -:104400006627B00DA11D661F829F2227B00DA11D3A -:10441000621F739FB00DA11D621F839FA00D611DC0 -:10442000221F749F3327A00D611D231F849F600DE1 -:10443000211D822F762F6A2F11249F5750408AF01A -:10444000E1F088234AF0EE0FFF1FBB1F661F771FA6 -:10445000881F91505040A9F79E3F510570F014C03D -:10446000AACF5F3FECF3983EDCF38695779567958E -:10447000B795F795E7959F5FC1F7FE2B880F911DC4 -:104480009695879597F9089597F99F6780E870E06A -:1044900060E008959FEF80EC089500240A941616BA -:1044A000170618060906089500240A941216130622 -:1044B000140605060895092E0394000C11F48823B0 -:1044C00052F0BB0F40F4BF2B11F460FF04C06F5FCC -:1044D0007F4F8F4F9F4F089597FB072E16F4009440 -:1044E00007D077FD09D00E94862207FC05D03EF454 -:1044F000909581959F4F0895709561957F4F089590 -:10450000EE0FFF1F0590F491E02D0994AA1BBB1B31 -:1045100051E107C0AA1FBB1FA617B70710F0A61BC3 -:10452000B70B881F991F5A95A9F780959095BC01E4 -:10453000CD010895F999FECF92BD81BDF89A9927D2 -:1045400080B50895A8E1B0E042E050E00C94BD22AF -:10455000262FF999FECF1FBA92BD81BD20BD0FB69F -:10456000F894FA9AF99A0FBE019608950E94A8222B -:10457000272F0C94A922DC01CB01FC01F999FECF75 -:1045800006C0F2BDE1BDF89A319600B40D924150DB -:0A4590005040B8F70895F894FFCFEB -:10459A0020023607C307A0076C0739070101BA01D1 -:1045AA0028080A03140A3F4D36394B04FE03C80390 -:1045BA008F0322033B0354036D0301020304050620 -:0445CA0007080900D5 +:10266000EF90DF90CF900C942610862FFF2019F06A +:102670000E94021F02C00E946A1F28960FB6F8949B +:10268000DEBF0FBECDBFDF91CF911F910F91FF90A5 +:10269000EF90DF90CF900C94EF1F842F837009F0A0 +:1026A00076C0F110E2C1262F229526952770220FC1 +:1026B000220F862F8F70C82ED12CE12CF12C022EE8 +:1026C00004C0CC0CDD1CEE1CFF1C0A94D2F764FF86 +:1026D00010C06FE070E080E090E004C0660F771FEC +:1026E000881F991F2A95D2F76095709580959095CF +:1026F00003C060E070E0CB01242F2695269523705F +:10270000422F50E042305105D1F04330510559F18C +:102710006C297D298E299F294130510541F1289648 +:102720000FB6F894DEBF0FBECDBFDF91CF911F91E2 +:102730000F91FF90EF90DF90CF900C9476196C2959 +:102740007D298E299F2928960FB6F894DEBF0FBEEB +:10275000CDBFDF91CF911F910F91FF90EF90DF9050 +:10276000CF900C9490190E947619C701B601289653 +:102770000FB6F894DEBF0FBECDBFDF91CF911F9192 +:102780000F91FF90EF90DF90CF900C945C19FF2099 +:1027900019F0842F817001C08695882309F465C1E2 +:1027A000262F229526952770220F220F862F8F70B5 +:1027B000C82ED12CE12CF12C022E04C0CC0CDD1C37 +:1027C000EE1CFF1C0A94D2F764FF10C06FE070E0AB +:1027D00080E090E004C0660F771F881F991F2A953C +:1027E000D2F7609570958095909503C060E070E099 +:1027F000CB01242F269526952370422F50E042309E +:102800005105D1F04330510559F16C297D298E29AC +:102810009F294130510541F128960FB6F894DEBF4B +:102820000FBECDBFDF91CF911F910F91FF90EF9021 +:10283000DF90CF900C944A1A6C297D298E299F290C +:1028400028960FB6F894DEBF0FBECDBFDF91CF91B3 +:102850001F910F91FF90EF90DF90CF900C94641A2E +:102860000E944A1AC701B60128960FB6F894DEBF37 +:102870000FBECDBFDF91CF911F910F91FF90EF90D1 +:10288000DF90CF900C94301A603FC9F118F4603E8D +:1028900050F49BC0623F09F460C008F44AC0633F33 +:1028A00009F46FC092C0162F1F70842F8F71FF2004 +:1028B00099F00E94C919812F28960FB6F894DEBFAF +:1028C0000FBECDBFDF91CF911F910F91FF90EF9081 +:1028D000DF90CF900C942D120E94EA19812F289638 +:1028E0000FB6F894DEBF0FBECDBFDF91CF911F9121 +:1028F0000F91FF90EF90DF90CF900C943412FF2057 +:10290000A1F02111B2C0842F8F7128960FB6F894D0 +:10291000DEBF0FBECDBFDF91CF911F910F91FF9012 +:10292000EF90DF90CF900C940F1A223008F09DC0EA +:10293000EACFFF20A1F0842F8F7128960FB6F8946C +:10294000DEBF0FBECDBFDF91CF911F910F91FF90E2 +:10295000EF90DF90CF900C94C919FF2061F3842F82 +:102960008F7128960FB6F894DEBF0FBECDBFDF91F2 +:10297000CF911F910F91FF90EF90DF90CF900C942B +:10298000EA19FF2091F0842F8F7128960FB6F894E2 +:10299000DEBF0FBECDBFDF91CF911F910F91FF9092 +:1029A000EF90DF90CF900C94B41928960FB6F8945E +:1029B000DEBF0FBECDBFDF91CF911F910F91FF9072 +:1029C000EF90DF90CF900C94AA19FF20A1F0222362 +:1029D00009F4B1CF862F28960FB6F894DEBF0FBE4C +:1029E000CDBFDF91CF911F910F91FF90EF90DF90BE +:1029F000CF900C941611222309F4B1CF862F28967C +:102A00000FB6F894DEBF0FBECDBFDF91CF911F91FF +:102A10000F91FF90EF90DF90CF900C94DE114F70EC +:102A2000C8010E94510428960FB6F894DEBF0FBE6D +:102A3000CDBFDF91CF911F910F91FF90EF90DF906D +:102A4000CF900C94D1184F70C80128960FB6F89407 +:102A5000DEBF0FBECDBFDF91CF911F910F91FF90D1 +:102A6000EF90DF90CF900C94950728960FB6F894CE +:102A7000DEBF0FBECDBFDF91CF911F910F91FF90B1 +:102A8000EF90DF90CF9008950E945F1B0E946F1B14 +:102A90000E94341B0E948B1B0E949B200E94EF1FF0 +:102AA00080E090E00E94101080E090E00C942610EE +:102AB0000E944F1B0C9444150E947F1A292F2295C7 +:102AC0002F7030E02C3031054CF42A3031056CF495 +:102AD000225031092230310590F407C02C303105E5 +:102AE00051F02F30310539F00AC0803E10F0803FA0 +:102AF00031F481E0089593FB882780F9089580E000 +:102B00000895CF93DF9300D000D01F92CDB7DEB7EA +:102B10000F900F900F900F900F90DF91CF9108952D +:102B2000CF93DF9300D000D000D0CDB7DEB726968C +:102B30000FB6F894DEBF0FBECDBFDF91CF910895E1 +:102B40001F93CF93DF93C091790116E080917A01B2 +:102B5000C81799F0D0E01C9FF0011D9FF00D1124C3 +:102B6000E558FE4F40815181628173818481958156 +:102B70000E9490152196C770E9CFDF91CF911F91E8 +:102B800008954091AB015091AC016091AD017091FD +:102B9000AE018091AF019091B0010C949015CF934C +:102BA0008091B00182958F7009F05FC08091AD0176 +:102BB000882309F45AC020917901A0917A0160918B +:102BC000AB017091AC018091AE019091AF0131E009 +:102BD0006F3F09F030E0B32FC6E02A1709F445C073 +:102BE000009721F07F3F21F44B2F03C041E001C04B +:102BF00040E030E040FD35C0C29FF001C39FF00DC2 +:102C00001124E558FE4F418174132BC04081641399 +:102C100028C04281411125C043815481481759077A +:102C200010F441505109481B590B483C5105C8F458 +:102C30008091B0018F7080618093B00186E0829FA7 +:102C4000F001839FF00D1124E058FE4F80818F70BA +:102C5000806180838BEA91E00E943B12CF910C94BB +:102C6000A0152F5F3F4F2770B8CFCF910895CF9217 +:102C7000DF92EF92FF920F931F93CF93DF93CDB725 +:102C8000DEB762970FB6F894DEBF0FBECDBF8C01E2 +:102C900085E0F801DE011D9601900D928A95E1F71D +:102CA000D8014C9111965C91119712966C911297E4 +:102CB0001396ED90FC9014977091AB01E091AC01EC +:102CC0002091AE013091AF012115310531F0EF3F78 +:102CD00031F481E07F3F19F403C081E001C080E05E +:102CE000B82FB170CB2E80FD6CC1D090AD01DD202E +:102CF00009F4F5C0F091B001E216F30638F0C7010F +:102D0000821B930B883C910548F09BC02095309521 +:102D10002E0D3F1D283C310508F093C08F2F807F7A +:102D200009F052C0E51314C0741312C0D62E6111FD +:102D30000FC0FF70F061F093B0010E94C1158BEAE3 +:102D400091E00E943B128091B001F80185836CC133 +:102D5000EF2831F05F3F31F481E04F3F19F403C0B9 +:102D600081E001C080E080FD03C081E0862701C0D2 +:102D700080E0F82FF170FF2E80FF1CC08091790158 +:102D800020917A0136E0821709F428C190E0389F3B +:102D9000F001399FF00D1124E558FE4F7181571352 +:102DA00006C07081471303C07281671303C0019688 +:102DB0008770E9CFD62E662309F436C18091B00121 +:102DC00081608093B00153C0E51308C0741306C03E +:102DD000611104C0D8011596FC93AEC04D875E8783 +:102DE0008D859E856A8B0E945C156A89882329F1EE +:102DF000D62E662311F12091B001822F82958F701B +:102E000090E002970CF460C08091AB019091AC010E +:102E100098878F831986FB86EA862C87CE010796D2 +:102E200051C0E51731F14D875E878D859E856A8B90 +:102E30000E945C156A8981112EC0C8010E943B1254 +:102E4000A4C08F2F807F69F77E2DF98AE88A89894F +:102E50000E9481158BEA91E00E943B12EBEAF1E0BF +:102E600086E0DF011D928A95E9F70E94C115D12CF9 +:102E7000DBC07413D8CF6111D6CFD8011596FC935F +:102E8000C8010E943B12EBEAF1E086E0DF011D92EF +:102E90008A95E9F7C9C0D62E662379F22091B00150 +:102EA000822F82958F7090E0029774F08091AB0131 +:102EB0009091AC019A8389831B82FD82EC822E83E0 +:102EC000CE0101960E943B1286E0F801ABEAB1E028 +:102ED00001900D928A95E1F70E94CF156FC0E2161E +:102EE000F30628F0C701821B930B9C0104C02095B8 +:102EF00030952E0D3F1D283C310508F052C0D62ECE +:102F0000662309F49ACFE5132CC074132AC080916C +:102F1000B00180FD1DC0982F92959F70C9F0D80117 +:102F200015968C9315979F3039F09F5F9295907FFF +:102F30008F70892B15968C93C8010E943B1286E0F6 +:102F4000F801ABEAB1E001900D928A95E1F736C045 +:102F500086E0F801ABEAB1E001900D928A95E1F7C5 +:102F600063C04D875E878D859E850E945C15882392 +:102F700079F086E0F801ABEAB1E001900D928A9514 +:102F8000E1F70E94CF150E94C115DD24D3944CC0F7 +:102F90008091B00181608093B001C8010E943B1212 +:102FA00043C07E2DF98AE88A89890E948115EBEA5F +:102FB000F1E086E0DF011D928A95E9F70E94C115D4 +:102FC00033C0662309F439CF4D875E878D859E8592 +:102FD0000E945C15882309F430CFCBCF4D875E87E4 +:102FE0008D859E850E947F1A292F22952F7030E0B3 +:102FF000223031052CF49F7041F0811106C00CC0C5 +:10300000243031052CF49F7049F4805E883020F024 +:10301000C8010E943B12CF2CDC2C06C0D8011596AB +:103020009C91907F91F7F8CF8D2D62960FB6F89412 +:10303000DEBF0FBECDBFDF91CF911F910F91FF90EB +:10304000EF90DF90CF9008951F93CF93DF93CDB78C +:10305000DEB72C970FB6F894DEBF0FBECDBF4F83FF +:10306000588769877A878B879C87CE0107960E944D +:1030700037168823C1F02F8138858A859B85892B57 +:1030800031F03F3F11F080E003C02F3FE1F781E0D6 +:10309000811147C04F81588569857A858B859C85CC +:1030A0000E9490153EC086E0FE013796DE01119623 +:1030B00001900D928A95E1F7FF81E8854A855B854D +:1030C0004115510531F0EF3F31F481E0FF3F19F434 +:1030D00003C081E001C080E080FD23C020917A011F +:1030E00030E0C9010196877099276091790170E0FD +:1030F00086179707F1F1F983EA835D834C8396E0A5 +:10310000929FD001939FB00D1124A558BE4FFE0190 +:10311000319601900D929A95E1F780937A010E9481 +:10312000A01516E08091790190917A01891779F1C3 +:10313000189FC001112485589E4F0E94371688237E +:1031400031F1E09179011E9FF0011124E558FE4F05 +:103150004081518162817381848195810E949015A3 +:103160008091790190E00196877099278093790189 +:10317000D9CF0E94581510927A0110927901EBEA8A +:10318000F1E086E0DF011D928A95E9F7CACF2C961F +:103190000FB6F894DEBF0FBECDBFDF91CF911F9168 +:1031A0000895EF92FF920F931F93CF93DF93FC014B +:1031B000009709F46FC0F12CEE24E394EF012196FF +:1031C0008491843740F4843008F055C0813081F018 +:1031D000823021F15FC0853709F447C0C0F19CE718 +:1031E000980F903708F056C08F770E94DE1145C0C7 +:1031F0008F010E5F1F4FFE01849190E2980F98306F +:1032000050F48770FE2D01C0FF0F8A95EAF78F2FCB +:103210000E94621B15C00E94161114C08F010E5F20 +:103220001F4FFE01849190E2980F983068F48770E8 +:10323000FE2D01C0FF0F8A95EAF78F2F0E94681BB1 +:103240000E948B1BE80119C00E94DE11FBCFCF0149 +:103250000296FE01C491CC2361F0EFE9FFE03197C3 +:10326000F1F700C00000C150F6CFCF010296FE0179 +:10327000F490EC0102C00E9416118F2D882341F0BA +:10328000EFE9FFE03197F1F700C000008150F6CF81 +:10329000FE0194CFDF91CF911F910F91FF90EF909E +:1032A000089508956093B5017093B6018093B701B6 +:1032B0009093B8010C9444150F931F930091B5019E +:1032C0001091B6012091B7013091B801062B172B50 +:1032D000282B392B0093B5011093B6012093B70129 +:1032E0003093B8011F910F910C9444150F931F93C5 +:1032F0000091B5011091B6012091B7013091B8014C +:1033000006231723282339230093B5011093B60110 +:103310002093B7013093B8011F910F910C9444157D +:103320000F931F930091B5011091B6012091B70141 +:103330003091B80106271727282739270093B501B0 +:103340001093B6012093B7013093B8011F910F91EC +:103350000C9444151092B1011092B2011092B30175 +:103360001092B4010C94441541E050E060E070E02C +:1033700004C0440F551F661F771F8A95D2F74093EC +:10338000B1015093B2016093B3017093B4010C94F6 +:10339000441541E050E060E070E004C0440F551F68 +:1033A000661F771F8A95D2F78091B1019091B20183 +:1033B000A091B301B091B401842B952BA62BB72B10 +:1033C0008093B1019093B201A093B301B093B40183 +:1033D0000C94441541E050E060E070E004C0440FFC +:1033E000551F661F771F8A95D2F7409550956095B7 +:1033F00070958091B1019091B201A091B301B0910B +:10340000B40184239523A623B7238093B10190931D +:10341000B201A093B301B093B4010C94441541E000 +:1034200050E060E070E004C0440F551F661F771F36 +:103430008A95D2F78091B1019091B201A091B30128 +:10344000B091B40184279527A627B7278093B101AF +:103450009093B201A093B301B093B4010C944415BE +:103460000F931F930091B1011091B2012091B3010C +:103470003091B401062B172B282B392B0093B10167 +:103480001093B2012093B3013093B4011F910F91B7 +:103490000C9444150F931F930091B1011091B20148 +:1034A0002091B3013091B401062317232823392337 +:1034B0000093B1011093B2012093B3013093B40192 +:1034C0001F910F910C9444150F931F930091B1011C +:1034D0001091B2012091B3013091B4010627172752 +:1034E000282739270093B1011093B2012093B3012B +:1034F0003093B4011F910F910C9444150895CF920D +:10350000DF92EF92FF920F931F93CF93DF93EC0123 +:10351000C090B501D090B601E090B701F090B8012D +:103520008091B1019091B201A091B301B091B40129 +:10353000C82AD92AEA2AFB2A0FE110E0B701A6011E +:10354000002E04C076956795579547950A94D2F753 +:1035500040FF07C0BE01802F0E94B807813091054F +:1035600039F40150110950F7BE0180E00E94B807FC +:10357000DF91CF911F910F91FF90EF90DF90CF904F +:10358000089590910C019923D9F090910D01992300 +:10359000B9F0982F9695969596959F3088F5E0917D +:1035A0000E01F0910F01E90FF11D877021E030E06D +:1035B00001C0220F8A95EAF78181822B81830895C9 +:1035C00040910E0150910F0120E030E09FEFFA0191 +:1035D000E20FF31F6281681799F09F3F19F46111A0 +:1035E00001C0922F2F5F3F4F2E30310581F79F3F53 +:1035F00039F0FA01E90FF11D97FDFA9582830895DC +:10360000089590910C019923E1F090910D01992377 +:10361000C1F0982F9695969596959F3020F5E0915C +:103620000E01F0910F01E90FF11D877021E030E0EC +:1036300001C0220F8A95EAF72095818128232183F2 +:10364000089540910E0150910F0120E030E0FA0101 +:10365000E20FF31F9281981301C012822F5F3F4F38 +:103660002E303105A1F7089581E090E0E0910E0140 +:10367000F0910F01E80FF91F10820196803191053A +:10368000A9F708959091CC01982B9093CC010895BF +:1036900080959091CC0198239093CC01089510923D +:1036A000CC0108959091CB01982B9093CB01089574 +:1036B00080959091CB0198239093CB01089510921F +:1036C000CB0108959091CA01982B9093CA01089557 +:1036D00080959091CA0198239093CA010895109201 +:1036E000CA0108958093B90108951092B90108950F +:1036F00040910E0150910F0120E030E080E0FA018E +:10370000E20FF31F918191118F5F2F5F3F4F2F3099 +:103710003105A9F70895E0910E01F0910F01809114 +:10372000CC018083E0910E01F0910F018081909196 +:10373000CB01892B8083E0910E01F0910F018081F4 +:103740009091CA01892B80839091B901992361F0EE +:10375000E0910E01F0910F018081892B80830E94FE +:10376000781B81111092B90180910E0190910F0187 +:103770000C94FA0FCF92DF92EF92FF920F931F9368 +:103780006C01EE24FF24C114D104E104F10421F4FE +:103790006B017C0180E001C080E133272F2D1E2DBD +:1037A0000D2D011511052105310519F0885F6801FE +:1037B000790197018601A4E036952795179507951D +:1037C000AA95D1F7011511052105310519F08C5F76 +:1037D0006801790197018601F2E0369527951795E2 +:1037E0000795FA95D1F7011511052105310519F055 +:1037F0008E5F68017901B701A601769567955795A7 +:103800004795452B462B472B09F08F5F1F910F9152 +:10381000FF90EF90DF90CF9008958091E601843083 +:1038200009F11092CE0120E488E190E00FB6F894FF +:10383000A895809360000FBE2093600083B7817FBE +:10384000846083BF83B7816083BF7894889583B792 +:103850008E7F83BF88E10FB6F8948093600010924A +:1038600060000FBE089508950895CF930E94331C01 +:103870000E94E2050E94341CC0E08C2F0E94CF06FB +:10388000811105C0CF5FCE30C1F780E001C081E07B +:10389000CF9108950E9458150E94EE0F0C94F308E2 +:1038A00082E084BD93E095BD9AEF97BD80936E0052 +:1038B00008952FB7F8948091CF019091D001A091F5 +:1038C000D101B091D2012FBF0895CF92DF92EF9234 +:1038D000FF920F931F932FB7F8944091CF0150910F +:1038E000D0016091D1017091D2012FBF6A017B019B +:1038F000EE24FF248C0120E030E0C016D106E20661 +:10390000F30610F441505109481B590BCA011F918D +:103910000F91FF90EF90DF90CF9008951F920F923C +:103920000FB60F9211248F939F93AF93BF93809103 +:10393000CF019091D001A091D101B091D201019617 +:10394000A11DB11D8093CF019093D001A093D1010F +:10395000B093D201BF91AF919F918F910F900FBE05 +:103960000F901F9018950E94F40CF8942FEF87EA9F +:1039700091E6215080409040E1F700C0000087E0D0 +:1039800090EBDC018093EF019093F001A093F101A3 +:10399000B093F2012CE088E190E00FB6F894A8957E +:1039A000809360000FBE20936000FFCFEF92FF92E4 +:1039B0000F931F93CF93DF93E82EF12C8F2D0E944E +:1039C000CF06C0E0D0E0082F10E098010C2E02C016 +:1039D000359527950A94E2F720FD05C02196C6305B +:1039E000D10599F709C06C2F7F2D80E00E949607C2 +:1039F000E812F4CF81E005C0F3948EE0F812DECF38 +:103A000080E0DF91CF911F910F91FF90EF9008958B +:103A1000CF93C82F8CE20E94D61C882321F08C2FD4 +:103A2000CF910C94D61C80E0CF910895CF930E9443 +:103A30005B1E811102C00E94411EC5E6C15049F0C3 +:103A40000E94E2058FE39CE90197F1F700C00000B6 +:103A5000F5CF89E20E94081D811111C18AE20E94FE +:103A6000081D81110E94411E85E00E94081D8111E0 +:103A70000E94B31C0E94661E8093CD0187E00E94C5 +:103A8000081D882399F18BE10E94081D882351F0BD +:103A90009091CD0191FB882780F921E0822780FB5E +:103AA00091F922C08EE00E94081D882351F0909168 +:103AB000CD0192FB882780F921E0822780FB92F9D3 +:103AC00013C080E10E94081D9091CD01882341F030 +:103AD00093FB882780F921E0822780FB93F904C0BB +:103AE000892F809580FB90F99093CD018091CD0135 +:103AF0000E946A1E0E94781E8093E00180EE0E9460 +:103B0000081D882341F08091E001982F909590FB4B +:103B100080F98093E00189E30E94081D882359F011 +:103B20009091E00191FB882780F921E0822780FBBA +:103B300091F99093E00182EE0E94081D882359F0CC +:103B40009091E00192FB882780F921E0822780FB99 +:103B500092F99093E00186EE0E94081D882359F0A7 +:103B60009091E00193FB882780F921E0822780FB78 +:103B700093F99093E00183EE0E94081D882359F089 +:103B80009091E00194FB882780F921E0822780FB57 +:103B900094F99093E00185E30E94081D882359F071 +:103BA0009091E00195FB882780F921E0822780FB36 +:103BB00095F99093E00181E30E94081D882359F054 +:103BC0009091E00196FB882780F921E0822780FB15 +:103BD00096F99093E00181E10E94081D882359F035 +:103BE0009091E00197FB882780F921E0822780FBF4 +:103BF00097F99093E0018091E0010E947C1E8091F2 +:103C0000E00187FB882780F980930D0187E20E94FD +:103C1000081DC82F8EE10E94081D8111C2608FE12E +:103C20000E94081D8111C46080E20E94081D81115C +:103C3000C86081E20E94081D8111C06182E20E9479 +:103C4000081D8111C06283E20E94081D8111C064B9 +:103C500084E20E94081D882311F0C06802C0CC23B2 +:103C600029F08C2F0E94731E6C2F03C00E946F1EC0 +:103C7000682F70E080E090E0CF910C945219CF91C2 +:103C800008956DEE7EEF80E090E00E94972460E062 +:103C900082E090E00E94892460E083E090E00E944E +:103CA000892460E084E090E00E94892460E085E05F +:103CB00090E00C94892480E090E00E94832421E02D +:103CC0008D3E9E4F09F020E0822F089582E090E023 +:103CD0000C947B24682F82E090E00C94892483E08C +:103CE00090E00C947B24682F83E090E00C9489246E +:103CF00084E090E00C947B24682F84E090E00C94A6 +:103D000089248091D50180FF0BC06091130185E06B +:103D1000689FB001112475956795759567952AC0C0 +:103D200081FF09C06091130185E0689FB0011124F3 +:103D3000759567951FC082FF07C06091130185E0EC +:103D4000689FB001112416C04091D6014423C9F0E8 +:103D500060911201461788F72091130185E0289F92 +:103D600090011124429FC001439F900D112470E0E7 +:103D70000E944D246038710540F46115710539F0D9 +:103D800002C065E070E0862F08958FE7089581E016 +:103D900008958091D50180FF08C06091110170E005 +:103DA000759567957595679521C081FF06C06091EF +:103DB000110170E07595679519C082FF04C060918C +:103DC000110170E010C08091D6018823C1F060918C +:103DD00010018617A0F790911101989FC00111243E +:103DE00070E00E944D246038710528F4611571055A +:103DF00021F0862F08958FE7089581E0089561E00E +:103E000070E0F4CF803F21F40E94811E819504C0B0 +:103E1000813F29F40E94811E8093D9010895823F39 +:103E200021F40E94811E819504C0833F29F40E94E1 +:103E3000811E8093D8010895893F19F40E94C91EFC +:103E400005C08A3F31F40E94C91E81958093DA0132 +:103E500008958B3F21F40E94C91E819504C08C3FB8 +:103E600029F40E94C91E8093DB010895843F21F448 +:103E70008091D701816017C0853F21F48091D701DF +:103E8000826011C0863F21F48091D70184600BC00D +:103E9000873F21F48091D701886005C0883F31F4C5 +:103EA0008091D70180618093D70108958D3F21F4DF +:103EB0008091D50181600BC08E3F21F48091D501A6 +:103EC000826005C08F3F29F48091D5018460809382 +:103ED000D5010895803F39F48091D90187FF6CC0E6 +:103EE0001092D90169C0813F29F48091D901181637 +:103EF000BCF362C09091D801823F29F497FF5CC067 +:103F00001092D80159C0833F19F41916CCF354C04C +:103F1000893F41F48091DA0118160CF04DC01092DF +:103F2000DA014AC08A3F29F48091DA0187FF44C050 +:103F3000F6CF8B3F39F48091DB0187FF3DC01092B3 +:103F4000DB013AC08C3F29F48091DB011816BCF3E9 +:103F500033C0843F21F48091D7018E7F17C0853F05 +:103F600021F48091D7018D7F11C0863F21F480918B +:103F7000D7018B7F0BC0873F21F48091D701877FCA +:103F800005C0883F31F48091D7018F7E8093D7019F +:103F900013C08D3F21F48091D5018E7F0BC08E3FE1 +:103FA00021F48091D5018D7F05C08F3F29F4809148 +:103FB000D5018B7F8093D5018091D80181110EC0EE +:103FC0008091D90181110AC08091DA01811106C066 +:103FD0008091DB01811102C01092D601089587ED16 +:103FE00091E00E9405100E94591C9093D401809387 +:103FF000D30108951F93CF93DF938091D3019091C4 +:10400000D4010E94651C4091D601442321F02091E7 +:10401000140130E006C0209115015AE0259F90015F +:1040200011248217930708F482C08091D80110915F +:10403000D901D091DA01C091DB01811107C01111C2 +:1040400005C0D11103C0CC2309F471C04F3F19F052 +:104050004F5F4093D601181624F40E94811E80936E +:10406000D8018091D80187FF05C00E94811E8195EB +:104070008093D801111624F40E94811E8093D901E7 +:104080008091D90187FF05C00E94811E8195809390 +:10409000D9016091D801662339F11091D90111231A +:1040A00019F1772767FD7095872F972F0E945E2360 +:1040B00023E333E343E35FE30E94C2230E942B2305 +:1040C0006093D801612F772767FD7095872F972F11 +:1040D0000E945E2323E333E343E35FE30E94C223B2 +:1040E0000E942B236093D9011D1624F40E94C91E3F +:1040F0008093DA018091DA0187FF05C00E94C91E12 +:1041000081958093DA011C1624F40E94C91E8093C5 +:10411000DB018091DB0187FF05C00E94C91E8195EC +:104120008093DB01DF91CF911F910C94EF1FDF9102 +:10413000CF911F910895E7EDF1E085E0DF011D9239 +:104140008A95E9F71092D6011092D501089583302F +:1041500081F128F4813059F08230D1F00895853012 +:1041600009F449C0B8F1863009F456C00895209189 +:104170001501862F90E0820F911D8F3F910520F44D +:10418000620F6093150108958FEF809315010895D4 +:1041900020911401862F90E0820F911D8F3F910591 +:1041A00020F4620F6093140108958FEF809314013F +:1041B000089520911301862F90E0820F911D8F3F6B +:1041C000910520F4620F6093130108958FEF80939F +:1041D0001301089520911201862F90E0820F911D06 +:1041E0008F3F910520F4620F6093120108958FEFC5 +:1041F00080931201089520911101862F90E0820F83 +:10420000911D8F3F910520F4620F60931101089575 +:104210008FEF80931101089520911001862F90E077 +:10422000820F911D8F3F910520F4620F6093100162 +:1042300008958FEF809310010895833011F128F4D1 +:10424000813049F0823091F00895853081F120F17C +:104250008630C1F1089580911501681720F4861BFE +:10426000809315010895109215010895809114010D +:10427000681720F4861B809314010895109214018E +:10428000089580911301681720F4861B8093130111 +:10429000089510921301089580911201681720F477 +:1042A000861B809312010895109212010895809147 +:1042B0001101681720F4861B809311010895109254 +:1042C0001101089580911001681720F4861B8093D6 +:1042D000100108951092100108958D3109F442C023 +:1042E00020F58E3009F479C070F4873009F45EC08F +:1042F00020F4863009F442C033C08830D1F18B30CD +:1043000009F4A7C02DC0863109F4A3C038F4803168 +:1043100009F46DC0813109F47BC022C0893109F4F0 +:1043200098C08B3109F44FC01BC0853309F479C0A4 +:1043300048F4873209F475C008F478C0893209F46A +:1043400070C00EC0833438F48A3308F071C08833EB +:1043500009F47FC005C0833409F463C08834C1F018 +:1043600080E008950E94E5220E94EE0F0E94F3086B +:1043700070C00E94661E0E94781E6BC08091CD01A5 +:10438000817F8E7F8093CD0181E08093DD01089550 +:104390000E9458152FEF83ED90E32150804090400C +:1043A000E1F700C000000E94B31C53C09091CD0102 +:1043B000892F817090FF03C0917F9E7F26C09160FE +:1043C0009093CD0146C09091CD0191FB882780F953 +:1043D00021E0822780FB91F913C09091CD0192FBDF +:1043E000882780F921E0822780FB92F909C090910B +:1043F000CD0193FB882780F921E0822780FB93F988 +:104400009093CD01882329F191609093CD01089577 +:104410000E94581580910D0191E0892780930D012C +:1044200018C061E070E080E090E00FC023EE01C0B2 +:1044300027EC280F61E070E080E090E004C0660F98 +:10444000771F881F991F2A95D2F70E9452190E9440 +:10445000581581E0089580E0089580E00895CF9395 +:10446000C82F8091DD01813079F018F08230D1F1D0 +:1044700084C0A0910E01B0910F018C91813169F03F +:10448000823209F07CC009C0A0910E01B0910F01E9 +:104490008C91813111F0823249F48C2F0E942B22B1 +:1044A00081111DC08C2F0E946D211AC08C2F0E947B +:1044B0002D22811114C0C43179F048F4CB3079F049 +:1044C000C03109F060C082E08093DD0108C0C932CC +:1044D00019F0C83321F057C01092DD0154C081E0BB +:1044E000817053C0C93289F118F5C43171F1A8F453 +:1044F000C73009F046C08AE08093150194E190939B +:10450000140193E0909313018093120188E080934B +:10451000110188E28093100134C0CE51C63088F575 +:10452000EC2FF0E0E65DFE4F80818093DC0129C036 +:10453000CE34E9F020F4CB3421F56AE013C0C13564 +:1045400079F0C235F1F461E00DC08091DC0188237F +:1045500019F01092DC0115C081E08093DD0115C0D7 +:1045600061E006C08091DC010E94A7200AC06AE0D9 +:104570008091DC010E941D2104C01092DD0180E0C9 +:1045800004C081E002C080E0ABCFCF910895E1E8A4 +:10459000F0E08081886080838081816080838FB734 +:1045A000F89493E09093890090ED909388008FBFEA +:1045B0000895EFE6F0E08081826080830895EFE661 +:1045C000F0E080818D7F80830895EFE6F0E08081C8 +:1045D00092E08927808308951F920F920FB60F9261 +:1045E00011242F933F934F935F936F937F938F93F8 +:1045F0009F93AF93BF93EF93FF938091DE019091D0 +:10460000DF0101969093DF018093DE01811103C0E9 +:1046100082E00E94F308E091DF01E695E695F0E084 +:10462000EA52F84FE4918091DE018E1303C080E0DE +:104630000E94F308FF91EF91BF91AF919F918F91ED +:104640007F916F915F914F913F912F910F900FBE8E +:104650000F901F90189504D06894B1118DC00895E3 +:1046600070D088F09F5790F0B92F9927B751A0F0DC +:10467000D1F0660F771F881F991F1AF0BA95C9F7F6 +:1046800012C0B13081F077D0B1E0089574C0672FC7 +:10469000782F8827B85F39F0B93FCCF386957795A6 +:1046A0006795B395D9F73EF490958095709561958F +:1046B0007F4F8F4F9F4F0895E89409C097FB3EF4BA +:1046C00090958095709561957F4F8F4F9F4F99235F +:1046D000A9F0F92F96E9BB279395F69587957795DD +:1046E0006795B795F111F8CFFAF4BB0F11F460FF9D +:1046F0001BC06F5F7F4F8F4F9F4F16C0882311F0F5 +:1047000096E911C0772321F09EE8872F762F05C008 +:10471000662371F096E8862F70E060E02AF09A95A3 +:10472000660F771F881FDAF7880F9695879597F998 +:10473000089557FD9058440F551F59F05F3F71F091 +:104740004795880F97FB991F61F09F3F79F08795F8 +:104750000895121613061406551FF2CF4695F1DF81 +:1047600008C0161617061806991FF1CF8695710511 +:10477000610508940895E894BB2766277727CB0145 +:1047800097F908950BD078C069D028F06ED018F052 +:10479000952309F05AC05FC01124EECFCADFA0F301 +:1047A000959FD1F3950F50E0551F629FF001729FC6 +:1047B000BB27F00DB11D639FAA27F00DB11DAA1FE5 +:1047C000649F6627B00DA11D661F829F2227B00D32 +:1047D000A11D621F739FB00DA11D621F839FA00DBD +:1047E000611D221F749F3327A00D611D231F849F0D +:1047F000600D211D822F762F6A2F11249F57504064 +:104800008AF0E1F088234AF0EE0FFF1FBB1F661FFE +:10481000771F881F91505040A9F79E3F510570F0B7 +:1048200014C0AACF5F3FECF3983EDCF386957795F2 +:104830006795B795F795E7959F5FC1F7FE2B880FB2 +:10484000911D9695879597F9089597F99F6780E848 +:1048500070E060E008959FEF80EC089500240A94D2 +:104860001616170618060906089500240A9412164B +:104870001306140605060895092E0394000C11F47E +:10488000882352F0BB0F40F4BF2B11F460FF04C02B +:104890006F5F7F4F8F4F9F4F089597FB072E16F442 +:1048A000009407D077FD09D00E94672407FC05D04B +:1048B0003EF4909581959F4F0895709561957F4F37 +:1048C0000895EE0FFF1F0590F491E02D0994AA1BA7 +:1048D000BB1B51E107C0AA1FBB1FA617B70710F0EB +:1048E000A61BB70B881F991F5A95A9F7809590951D +:1048F000BC01CD010895F999FECF92BD81BDF89A12 +:10490000992780B50895A8E1B0E042E050E00C940A +:104910009E24262FF999FECF1FBA92BD81BD20BDDE +:104920000FB6F894FA9AF99A0FBE019608950E946C +:104930008924272F0C948A24DC01CB01FC01F999EE +:10494000FECF06C0F2BDE1BDF89A319600B40D92DB +:0C49500041505040B8F70895F894FFCF94 +:10495C002002F50882095F092B09F8080101BA0148 +:10496C0028080A03140A3F4D363997074A071407DB +:10497C00DB066E068706A006B906010203040506CF +:04498C00070809000F :00000001FF diff --git a/keyboard/ergodox_ez/keymaps/ordinary/readme.md b/keyboard/ergodox_ez/keymaps/ordinary/readme.md index 6534f481..b1aaed69 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/readme.md +++ b/keyboard/ergodox_ez/keymaps/ordinary/readme.md @@ -10,54 +10,66 @@ no rights reserved, use for any purposes, credit me if you are a nice person ## The Base Layout ## -* The yellow keys are text navigation and manipulation -* The dark blue keys are shift keys: case shift (traditional shift), symbol shift, and media shift -* The light blue keys are modifiers: traditional Control, Option, and C ommand keys, plus Hyper and Meh -* The two green keys, tab and tilde, are in the typical places to ease use of the Application Switcher -* The red keys is Escape, one of the few buttons which is in an atypical position +* The light blue keys are modifiers: traditional Control, Option, and Command keys, plus Hyper and Meh +* The dark blue keys are Shift keys: Capitals Shift (traditional shift), Symbol Shift, and Media Shift; plus a Shift Lock key +* Several dark blue keys double for entry of characters which would typically be in those locations +* The turquoise keys are text navigation and manipulation +* The red keys is Escape and it is always found in that location no matter what ![Ordinary base layout](ordinary-base.png) -This layout puts the modifier keys along the bottom of the keyboard where they are on most layouts. They are in the regular order, with the addition of Hyper and Meh keys. The shift key (case shift) is in the prevalent location. The primo slots usually wasted on Caps Lock and Enter are instead used for the Symbol Shift key which promotes use of the Symbols layer. On the right side of the layout, the Symbol and Media shift keys also double as character keys -- quote and backslash, respectively -- so that touch typists can continue to find those punctuation marks in the right place. +This layout puts the modifier keys along the bottom of the keyboard where they are on most keyboards. They are in the regular order, with the addition of Hyper and Meh keys. On the outside edges are the Shift keys. The traditional shift key is called Capitals Shift and it is in the normal location. Above that are Symbols Shift and Media Shift. Each Shift key momentarily switches the layout to that layer, and if you use the Shift Lock button you can lock the layout to that layer. -Other than the yellow keys, the only buttons which move to new locations are the Brackets and Dash and Escape. Most touch typists dont touch-type brackets or dash anyway, so only Escape really requires retraining of muscle memory. +Touch typists will also find tilde, tab, equals/plus, slash/pipe, and quote/double-quote sharing space on those Shift keys where they would probably be on a common keyboard. Other than the turquoise keys the only buttons which move to new locations are the Brackets and Dash and Escape. Most touch typists dont touch-type brackets or dash anyway so only Escape really requires retraining of muscle memory, and see below for the Special Escape Sequence. -The four big yellow keys are arranged differently than in the default Ergodox EZ layout. The Ordinary Layout here copies the design of the old Fingerworks TouchStream keyboard, but also reflects the natural presumptions of the author -- me!; I type the space character with my right hand, and to me it makes sense for the two delete keys to be next to one another. +The four big turquoise keys are arranged differently than in the default Ergodox EZ layout. The Ordinary Layout here copies the design of the old Fingerworks TouchStream keyboard, but also reflects the natural presumptions of the author -- me! I type the space character with my right hand, and to me it makes sense for the two delete keys to be next to one another. -The Forward Tab and Backward Tab keys are there mostly because I ended up with two extra buttons and needed something to do with them. My muscle memory from using the Truly Ergonomic Keyboard makes me look for the Tab key with my right index finger, so it is handy to have this redundant Tab, and the idea with the Backward Tab key is that it becomes easy to navigate text fields in forms, or to indent/unindent code. +The Forward Tab and Backward Tab keys are in their locations mostly because I ended up with two extra buttons and needed something to do with them. My muscle memory from using the Truly Ergonomic Keyboard makes me look for the Tab key with my right index finger, so it is handy to have this redundant Tab, and the idea with the Backward Tab key is that it becomes easy to navigate text fields in forms, or to indent/unindent code. -## The Symbols Layout ## +## The Symbols Layer ## -* The periwinkle keys are the eponymous symbols -* The gray keys are F-Keys -* The green keys are a proper number pad -* The red Escape key is found in the "right" location on this layer -* The yellow keys are the *reverse* of the yellow keys on the base layer -* The dark blue Media key means that the Media layer is accessible with the left hand +* The light green keys are the eponymous symbols +* The bright green keys are F-Keys +* The dark green keys constitute a number pad +* The turquoise keys are the *reverse* of the turquoise keys on the base layer ![Ordinary symbol layout](ordinary-symbol.png) The Ergodox EZ ships with the "Coder Layer" which I like to call the Symbols layer. There are some significant improvements in The Ordinary Layout over the default layout. The symbol keys are mostly the same as on the default layout, which did a good job in this regard, but with a few enhancements: + * Angle brackets on this layer mean that curly, square, and angle brackets are all available on different layers of the same two buttons. Also, they mean that all kinds of brackets, including parentheses, are available on both the Base and Symbols layers. * The slash, backslash, and pipe characters are grouped together as a memory aid. * The & and | symbols are juxtaposed as a memory aid -The number pad area here, in green, includes all four arithmetic operations in the same order found on most number pads. This layout also has an Enter key, and importantly the key codes emitted by this number pad are *number pad specific key codes*, not regular keyboard key codes. Some software distinguishes keypad codes so users now have access to a fully realized number pad when using The Ordinary Layout. - -The Escape key's true home is in the top left corner of the keyboard, so on this layer it can be found there. And on the Symbols layer, the Tab key switches to become a Media key, so press Symbols then Media to access the Media layer using the left hand. +The number pad area here, in green, includes all four arithmetic operations in the same order found on most number pads and features an Enter key. The keycodes emitted here are normal numeric keycodes, not the number-pad specific keycodes emitted by most number pads, because this layout does not use a Num Lock key to switch the buttons between numeric keycodes and navigational keycodes. See the explanation in The Media Layout section about navigation using these same buttons. -Finally, consider the yellow text-nav keys. In the Symbols layer, these are *reversed* from the base layer, with most keys mirrored, but the Delete keys shifted to maintain the directional significance of their arrangement. This is powerful! Often I find myself using the mouse with my right hand, and the left hand needs to press Enter. Instead of reaching the left hand over to the right side of the keyboard, now I simply tap Symbols to reverse the yellow keys, and Enter is right where it should be. +Finally, consider the turquoise text-nav keys. Here in the Symbols layer, these are *reversed* from the base layer, with most keys mirrored, but the Delete keys shifted to maintain the directional significance of their arrangement. This is powerful! Often I find myself using the mouse with my right hand, and the left hand needs to press Enter. Instead of reaching the left hand over to the right side of the keyboard, now I simply tap Symbols to reverse the yellow keys, and Enter is right where it should be. -## The Media Layout ## +## The Media Layer ## -* The light turquoise keys move the mouse or the text cursor -* The dark turquoise keys scroll -* The light purple keys signal Web and Audio applications -* The dark purple keys signal the operating system -* The red Escape key is, again, found in the "right" location +* The dark orange keys on the left move the mouse cursor +* The dark orange keys on the right move the text cursor +* The light orange keys are for scrolling and paging +* The bright green keys are more F-keys +* The dark yellow keys signal Web and Audio applications +* The light yellow keys signal the operating system ![Ordinary media layout](ordinary-media.png) -This layer was inspired by the Media layer on the Ergodox EZ but takes it farther. The Fingerworks TouchStream had a very useful feature for controlling the text cursor easily and this layer does something similar. The left hand can move the mouse, the right hand moves the text cursor, in all four directions, in small or large increments. This greatly enhances navigation in text documents. +This layer was inspired by the Media layer on the Ergodox EZ but takes it farther. The Fingerworks TouchStream keyboard had a very useful feature for controlling the text cursor easily and this layer does something similar. The left hand can move the mouse, the right hand moves the text cursor, in all four directions, in small or large increments. This greatly enhances navigation in text documents. + +Moreover, the orange keys on the right overlay the numberpad from the Symbols Layer, such that in the Media Layer the same keys can be used as if they were a number pad in navigational mode (Num Lock off). For instance, in traditional number pads the '3' key became 'Page Down', and so it is here. This means a user can do text navigation without moving either hand. + +## Switching Between Layers ## + +The three Shift keys correspond to three logical layers on top of the ever-present base layer, and are represented in the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). Shift keys work in the expected way: press them and the keys shift to that layer; release them and the keys shift back to the base layer. There is also a feature of the Ordinary Layout to lock the keys onto a layer: hold down the Shift Lock key then press a Shift key and -- just like traditional Caps Lock -- the keys will remain in the shifted state. To revert to the base layer, use the Shift Lock key again in combination with the Shift key. + +This layout attempts to treat the Capitals Shift layer the same as the other two Shift layers, although internally they are different. Due to these differences, it is possible to switch from any layer to any other layer, and to lock to any layer, *except* it is not possible to go from Media to Symbols. You must exit the Media layer before engaging the Symbols layer. When you depress the Shift Lock key it will illuminate the LEDs corresponding to the layers available, so if you are on the base layer or the Capitals layer or the Symbols layer, then all three LEDs will light up, but if you are on the Media layer then only the Capitals and Media layers will light up. + +## Special Escape Sequence ## + +In the Ordinary Layout, the most unsatisfying key location is the Escape key which rightly belongs segregated on its own way up on the top left of the keyboard. The Ergodox does not have a physical button in such a location and the nearest one, in the top left corner, was assigned to the tilde button which is traditionally found in that location. The Escape key is important so it features prominently on the other top corner on the left side of the keyboard, and is always there in all layers. Nevertheless, alas, it isn't Ordinary to put the escape in that different corner! + +That tilde key has a second function as the Shift Lock key and that makes possible a special feature. To make this layout as Ordinary as possible, the Escape key can *also* be accessed by pressing Shift Lock then the 1 button right next to it. This easy gesture is a way to partially maintain the ease of flicking your wrist to the left and tapping Escape. This gesture works in all layers. From 96f75f39c8dfbd9d84d1a6ceb0b2db0ce5cc52bf Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Mon, 11 Apr 2016 23:28:16 -0500 Subject: [PATCH 09/55] The Ordinary Layout is the layout you are looking for. Come and see. --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 91 +- .../ergodox_ez/keymaps/ordinary/ordinary.hex | 2214 +++++++++-------- .../ergodox_ez/keymaps/ordinary/readme.md | 4 +- 3 files changed, 1180 insertions(+), 1129 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 07a1e5e8..63cf8c0c 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -3,14 +3,15 @@ #include "debug.h" #include "action_layer.h" -#define BASE 0 // default layer -#define LOCK 1 // layer lock keys +#define BASE 0 // default layer +#define LOCK 1 // layer lock keys #define SYMB_MO 2 // symbols momentary layer #define SYMB_TG 3 // symbols lock layer -#define SYMB_XX 4 // symbols lock layer +#define SYMB_XX 4 // symbols exit layer #define MDIA_MO 5 // media momentary layer #define MDIA_TG 6 // media lock layer -#define MDIA_XX 7 // topmost escape +#define MDIA_XX 7 // media exit layer +#define UNLOCK 8 // clear to base layer /* * Ordinary Ergodox EZ keyboard layout, v3 @@ -133,7 +134,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [SYMB_MO] = KEYMAP( // left hand - KC_TRNS ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS + KC_FN2 ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS ,MO(MDIA_MO) ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM) ,MO(SYMB_MO) ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV ,KC_LSFT ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB @@ -142,7 +143,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_UP ,KC_SPC ,KC_ENT ,KC_DOWN // right hand - ,KC_TRNS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_TRNS + ,KC_TRNS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_FN2 ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,MO(MDIA_MO) ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,MO(SYMB_MO) ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_RSFT @@ -177,7 +178,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand MO(SYMB_XX) ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS ,MO(MDIA_MO) ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM) -,KC_NO ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV +,MO(UNLOCK) ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV ,KC_LSFT ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_LEFT ,KC_RGHT @@ -186,7 +187,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand ,KC_TRNS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,MO(SYMB_XX) ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,MO(MDIA_MO) - ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,KC_NO + ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,MO(UNLOCK) ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_RSFT ,KC_0 ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT ,KC_HOME ,KC_END @@ -259,18 +260,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [MDIA_MO] = KEYMAP( // left hand - KC_TRNS ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_TRNS + KC_FN3 ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_TRNS ,MO(MDIA_MO) ,KC_POWER,KC_TRNS ,KC_MS_U ,KC_TRNS ,KC_TRNS ,KC_WH_U -,KC_NO ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_TRNS +,MO(SYMB_MO) ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_TRNS ,KC_LSFT ,KC_TRNS ,KC_TRNS ,KC_MS_D ,KC_TRNS ,KC_TRNS ,KC_WH_D ,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_BTN1 ,KC_BTN2 ,KC_WSTP ,KC_WREF ,KC_WSCH ,KC_WBAK ,KC_TRNS ,KC_WHOM // right hand - ,KC_TRNS ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS + ,KC_TRNS ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_FN3 ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,MO(MDIA_MO) - ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_NO + ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,MO(SYMB_MO) ,KC_WH_D ,KC_TRNS ,KC_END ,KC_DOWN ,KC_PGDN ,KC_TRNS ,KC_RSFT ,KC_INS ,KC_DEL ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_MPRV ,KC_MNXT @@ -302,7 +303,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MDIA_TG] = KEYMAP( // left hand MO(MDIA_XX) ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_TRNS -,KC_NO ,KC_POWER,KC_TRNS ,KC_MS_U ,KC_TRNS ,KC_TRNS ,KC_WH_U +,MO(UNLOCK) ,KC_POWER,KC_TRNS ,KC_MS_U ,KC_TRNS ,KC_TRNS ,KC_WH_U ,KC_NO ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_TRNS ,KC_LSFT ,KC_TRNS ,KC_TRNS ,KC_MS_D ,KC_TRNS ,KC_TRNS ,KC_WH_D ,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_BTN1 ,KC_BTN2 @@ -311,7 +312,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_WBAK ,KC_TRNS ,KC_WHOM // right hand ,KC_TRNS ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,MO(MDIA_XX) - ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,KC_NO + ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,MO(UNLOCK) ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_NO ,KC_WH_D ,KC_TRNS ,KC_END ,KC_DOWN ,KC_PGDN ,KC_TRNS ,KC_RSFT ,KC_INS ,KC_DEL ,KC_TRNS ,KC_TRNS ,KC_TRNS @@ -360,6 +361,51 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS + ), + +/* Keymap 22: Unlock Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | Unlock | | | | | | | | | | | | | | Unlock | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | | | | | | | | | | | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | |------| |------| | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | | | | | | | | | | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[UNLOCK] = KEYMAP( +// left hand + KC_FN1 ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS,KC_TRNS ,KC_TRNS + + // right hand + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN1 + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS @@ -367,7 +413,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_CLEAR(ON_PRESS) // FN1 - clear to base layer + [1] = ACTION_LAYER_CLEAR(ON_PRESS) // FN1 - clear to base layer ,[2] = ACTION_LAYER_INVERT(SYMB_TG, ON_PRESS) // FN2 - toggle to Symbols on press ,[3] = ACTION_LAYER_INVERT(MDIA_TG, ON_PRESS) // FN3 - toggle to Media on press }; @@ -396,21 +442,16 @@ void matrix_init_user(void) { void matrix_scan_user(void) { uint8_t layer = biton32(layer_state); + // do not change lights for locking and unlocking + if(layer == UNLOCK || layer == LOCK || layer == SYMB_XX || layer == MDIA_XX) { + return; + } + ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); - // lock layer turns on all lights - if(layer == LOCK || layer == SYMB_XX) { - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - } else if(layer == MDIA_XX) { - ergodox_right_led_1_on(); - ergodox_right_led_3_on(); - } - // caps lock turns on red light if(host_keyboard_leds() & (1< Date: Mon, 11 Apr 2016 23:34:41 -0500 Subject: [PATCH 10/55] The Ordinary Layout is the layout you are looking for. Come and see. --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 63cf8c0c..3a999f26 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_TRNS ,KC_TRNS ), -/* Keymap 10: Symbol Momentary Layer +/* Keymap 2: Symbol Momentary Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | | @@ -153,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_PGDN ,KC_BSPC ,KC_DEL ), -/* Keymap 11: Symbol Lock Layer +/* Keymap 3: Symbol Lock Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | Lock | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | Lock | @@ -195,7 +195,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_PGDN ,KC_BSPC ,KC_DEL ), -/* Keymap 12: Symbol Unlock Layer +/* Keymap 4: Symbol Unlock Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | | Esc | | | | | | | | | | | | | | @@ -237,7 +237,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_TRNS ,KC_TRNS ), -/* Keymap 20: Media and mouse keys +/* Keymap 5: Media Momentary Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | | F11 | F12 | F13 | F14 | F15 | | | | F16 | F17 | F18 | F19 | F20 | | @@ -279,7 +279,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_VOLD ,KC_MSTP ,KC_MPLY ), -/* Keymap 21: Media Lock Layer +/* Keymap 6: Media Lock Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | | F11 | F12 | F13 | F14 | F15 | | | | F16 | F17 | F18 | F19 | F20 | | @@ -321,7 +321,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_VOLD ,KC_MSTP ,KC_MPLY ), -/* Keymap 22: Media Unlock Layer +/* Keymap 7: Media Unlock Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | | Esc | | | | | | | | | | | | | | @@ -366,7 +366,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_TRNS ,KC_TRNS ), -/* Keymap 22: Unlock Layer +/* Keymap 8: Unlock Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | Unlock | | | | | | | | | | | | | | Unlock | @@ -413,7 +413,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_CLEAR(ON_PRESS) // FN1 - clear to base layer + [1] = ACTION_LAYER_CLEAR(ON_PRESS) // FN1 - clear to base layer ,[2] = ACTION_LAYER_INVERT(SYMB_TG, ON_PRESS) // FN2 - toggle to Symbols on press ,[3] = ACTION_LAYER_INVERT(MDIA_TG, ON_PRESS) // FN3 - toggle to Media on press }; From 5ef6978cab7de2821eb6bfce4fd04067655a8937 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 12 Apr 2016 06:55:26 -0500 Subject: [PATCH 11/55] Adding personal files --- keyboard/planck/Makefile | 4 +- keyboard/planck/config.h | 2 +- keyboard/planck/keymaps/pc.c | 132 +++++++++++++++++++++++++++++++++++ 3 files changed, 135 insertions(+), 3 deletions(-) create mode 100644 keyboard/planck/keymaps/pc.c diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 03d26017..17e5cd45 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -137,8 +137,8 @@ CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality # MIDI_ENABLE = YES # MIDI controls # AUDIO_ENABLE = YES # Audio output on port C6 # UNICODE_ENABLE = YES # Unicode diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index d3719e0c..d435cc79 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -76,7 +76,7 @@ along with this program. If not, see . #define NO_DEBUG /* disable print */ -#define NO_PRINT +//#define NO_PRINT /* disable action features */ //#define NO_ACTION_LAYER diff --git a/keyboard/planck/keymaps/pc.c b/keyboard/planck/keymaps/pc.c new file mode 100644 index 00000000..f8254fd4 --- /dev/null +++ b/keyboard/planck/keymaps/pc.c @@ -0,0 +1,132 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "planck.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +// 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 _QW 0 +#define _CM 1 +#define _DV 2 +#define _LW 3 +#define _RS 4 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | |Raise | Space |Lower | / | Left | Down |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QW] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT }, + {KC_LCTL, KC_LGUI, KC_LALT, KC_NO, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} +}, + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_CM] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DV] = { + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RS] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LW] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; From ff06eaf8537e5f6ab1489c77a6147531c57bb538 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 12 Apr 2016 08:17:02 -0500 Subject: [PATCH 12/55] Added del --- keyboard/planck/keymaps/pc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/planck/keymaps/pc.c b/keyboard/planck/keymaps/pc.c index f8254fd4..0adee8b2 100644 --- a/keyboard/planck/keymaps/pc.c +++ b/keyboard/planck/keymaps/pc.c @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT }, - {KC_LCTL, KC_LGUI, KC_LALT, KC_NO, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} + {KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} }, /* Colemak From 3a601e76e4efdd6dd42e02146fd52d8ede979756 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 14:43:09 -0500 Subject: [PATCH 13/55] Adding PC Atomic --- keyboard/atomic/Makefile | 7 +- keyboard/atomic/config.h | 93 ++++++++++++++++++--- keyboard/atomic/keymaps/default.c | 124 ++++++++++++++++------------ keyboard/atomic/keymaps/pc_atomic.c | 75 +++++++++++++++++ 4 files changed, 231 insertions(+), 68 deletions(-) create mode 100644 keyboard/atomic/keymaps/pc_atomic.c diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index da6d0ac6..95554ea8 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -115,14 +115,14 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # comment out to disable the options. # BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +#MOUSEKEY_ENABLE = yes # 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 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -# NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +#BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality # MIDI_ENABLE = YES # MIDI controls # UNICODE_ENABLE = YES # Unicode # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID @@ -137,4 +137,3 @@ VPATH += $(TOP_DIR) VPATH += $(TMK_DIR) include $(TOP_DIR)/quantum/quantum.mk - diff --git a/keyboard/atomic/config.h b/keyboard/atomic/config.h index 149aed47..e28fa18c 100644 --- a/keyboard/atomic/config.h +++ b/keyboard/atomic/config.h @@ -32,36 +32,109 @@ along with this program. If not, see . #define MATRIX_ROWS 5 #define MATRIX_COLS 15 -// Planck PCB default pin-out -// Change this to how you wired your keyboard -// COLS: Left to right, ROWS: Top to bottom +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ #define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } #define ROWS (int []){ D0, D5, B5, B6, C6 } /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW -/* define if matrix has ghost */ +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST /* number of backlight levels */ -/* NOTE: this is the max value of 0..BACKLIGHT_LEVELS so really 16 levels. */ #define BACKLIGHT_LEVELS 3 -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 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 */ +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ #define IS_COMMAND() ( \ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) - +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER B +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z /* * Feature disable options diff --git a/keyboard/atomic/keymaps/default.c b/keyboard/atomic/keymaps/default.c index f37d9d9a..d62e5c24 100644 --- a/keyboard/atomic/keymaps/default.c +++ b/keyboard/atomic/keymaps/default.c @@ -1,60 +1,76 @@ #include "atomic.h" +#define _QW 0 +#define _CM 1 +#define _DV 2 +#define _LW 3 +#define _RS 4 + +// ROW 1 OPTIONS +// .--------------------------------------------------------------------------------------------------------------------------------------. +// | | | | | | | | | | | | | | | | +// '--------------------------------------------------------------------------------------------------------------------------------------' +// .- 2u ------------. +// | X | +// '-----------------' + +// ROW 2 OPTIONS +// .--------------------------------------------------------------------------------------------------------------------------------------. +// | | | | | | | | | | | | | | | | +// '--------------------------------------------------------------------------------------------------------------------------------------' +// .- 2u ------------. .- 2u ------------. +// | X | | X | +// '-----------------' '-----------------' + +// ROW 3 OPTIONS +// .--------------------------------------------------------------------------------------------------------------------------------------. +// | | | | | | | | | | | | | | | | +// '--------------------------------------------------------------------------------------------------------------------------------------' +// .- 2u ------------. .- 2u ------------. +// | X | | X | +// '-----------------' '-----------------' +// .- 2u ------------. +// | X | +// '-----------------' + +// ROW 4 OPTIONS +// .--------------------------------------------------------------------------------------------------------------------------------------. +// | | | | | | | | | | | | | | | | +// '--------------------------------------------------------------------------------------------------------------------------------------' +// .- 2u ------------. +// | X | +// '-----------------' +// .- 2u ------------. .- 2u ------------. +// | X | | X | +// '-----------------' '-----------------' +// .- 2u ------------. +// | X | +// '-----------------' + +// ROW 5 OPTIONS +// .--------------------------------------------------------------------------------------------------------------------------------------. +// | | | | | | | | | | | | | | | | +// '--------------------------------------------------------------------------------------------------------------------------------------' +// .- 1.25u --+ 1.25u ------- 1.25u +--- 1.25u --- 2u -------------- 1.25u ---- 1.25u ------ 1.25u +---- 1.25u . +// | X | X | X | X | X | X | X | X | X | +// '-----------------------------------------------------------------------------------------------------------' +// .- 2u ------------. +// | X | +// '-----------------' +// .--------------------- 6.25u ----------------------------. +// | X | +// '--------------------------------------------------------' +// .----------------------- 6.25u ---------------------------- 1.25u ---- 1.25u ---- 1.25u ------ 1.25u +-- 1.25u --. +// | X | X | X | X | X | X | +// '----------------------------------------------------------------------------------------------------------------' + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = { /* Qwerty */ - { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL }, -// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ -// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ -// ┌─ 2u ────────────┐ -// │ X │ -// └─────────────────┘ - { 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_DEL }, -// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ -// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ -// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ -// │ X │ │ X │ -// └─────────────────┘ └─────────────────┘ - { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, -// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ -// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ -// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ -// │ X │ │ X │ -// └─────────────────┘ └─────────────────┘ -// ┌─ 2u ────────────┐ -// │ X │ -// └─────────────────┘ - { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, -// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ -// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ -// ┌─ 2u ────────────┐ -// │ X │ -// └─────────────────┘ -// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ -// │ X │ │ X │ -// └─────────────────┘ └─────────────────┘ -// ┌─ 2u ────────────┐ -// │ X │ -// └─────────────────┘ - { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RGUI, KC_RALT, KC_RCTL, BL_STEP, KC_LEFT, KC_DOWN, KC_RGHT }, -// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ -// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ -// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐ -// │ X │ X │ X │ X │ X │ X │ X │ X │ X │ -// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘ -// ┌─ 2u ────────────┐ -// │ X │ -// └─────────────────┘ -// ┌───────────────────── 6.25u ────────────────────────────┐ -// │ X │ -// └────────────────────────────────────────────────────────┘ -// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐ -// │ X │ X │ X │ X │ X │ X │ -// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘ + [_QW] = { /* Qwerty */ + { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL }, + { 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_DEL }, + { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RGUI, KC_RALT, KC_RCTL, BL_STEP, KC_LEFT, KC_DOWN, KC_RGHT }, } }; diff --git a/keyboard/atomic/keymaps/pc_atomic.c b/keyboard/atomic/keymaps/pc_atomic.c new file mode 100644 index 00000000..2792ff6e --- /dev/null +++ b/keyboard/atomic/keymaps/pc_atomic.c @@ -0,0 +1,75 @@ +#include "atomic.h" + +#define _QW 0 +#define _LW 1 +#define _RS 2 +#define _FN 3 + +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +/* + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL | LWIN | FN | LALT | RAISED | XXXXXX . SPACE | LOWER | RALT | HOME | END | RCTRL | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// [_QW] = { /* QWERTY */ + [0] = { /* QWERTY */ + { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, XXXXXXX, KC_BSPC }, + { 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_DEL }, + { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, KC_UP, KC_PGDN }, + { KC_LCTL, KC_LGUI, MO(_FN), KC_LALT, MO(_RS), XXXXXXX, KC_SPC, MO(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + }, + [_LW] = { /* 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, KC_PSCR, KC_PAUS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + [_RS] = { /* 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, KC_PSCR, KC_PAUS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + [_FN] = { /* FUNCTION */ + { 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, KC_PSCR, KC_PAUS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE + [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER + + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(1), + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return MACRODOWN(TYPE(KC_T), END); + break; + } + return MACRO_NONE; +}; From 02a3d77940d9b9dcf3af3e8ca9672145155fbfe6 Mon Sep 17 00:00:00 2001 From: Wojciech Siewierski Date: Wed, 13 Apr 2016 22:24:42 +0200 Subject: [PATCH 14/55] Optimize source_layers_cache for the cache memory Swapping the array indices should increase the locality of the memory access. --- tmk_core/common/action_layer.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c index fc721a73..e817c0d5 100644 --- a/tmk_core/common/action_layer.c +++ b/tmk_core/common/action_layer.c @@ -111,7 +111,7 @@ void layer_debug(void) #endif #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) -uint8_t source_layers_cache[MAX_LAYER_BITS][(MATRIX_ROWS * MATRIX_COLS + 7) / 8] = {0}; +uint8_t source_layers_cache[(MATRIX_ROWS * MATRIX_COLS + 7) / 8][MAX_LAYER_BITS] = {0}; void update_source_layers_cache(keypos_t key, uint8_t layer) { @@ -120,9 +120,9 @@ void update_source_layers_cache(keypos_t key, uint8_t layer) const uint8_t storage_bit = key_number % 8; for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) { - source_layers_cache[bit_number][storage_row] ^= + source_layers_cache[storage_row][bit_number] ^= (-((layer & (1U << bit_number)) != 0) - ^ source_layers_cache[bit_number][storage_row]) + ^ source_layers_cache[storage_row][bit_number]) & (1U << storage_bit); } } @@ -136,7 +136,7 @@ uint8_t read_source_layers_cache(keypos_t key) for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) { layer |= - ((source_layers_cache[bit_number][storage_row] + ((source_layers_cache[storage_row][bit_number] & (1U << storage_bit)) != 0) << bit_number; } From caf3e48de8b29aa21343301dd22ce425e8f7c3ba Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 17:40:16 -0500 Subject: [PATCH 15/55] LOCAL COMMIT LOCAL COMMIT --- keyboard/atomic/Makefile | 24 +- keyboard/atomic/config.h | 95 +------- keyboard/atomic/keymaps/default.c | 283 +++++++++++++++++------ keyboard/atomic/keymaps/pc_atomic.c | 37 ++- keyboard/planck/keymaps/default/keymap.c | 16 +- 5 files changed, 263 insertions(+), 192 deletions(-) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 95554ea8..17baeaf5 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -114,19 +114,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -#MOUSEKEY_ENABLE = yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA -#BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # 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 - not yet supported in LUFA +#BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +#MIDI_ENABLE = yes # MIDI controls +#UNICODE_ENABLE = yes # Unicode +#BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/atomic/config.h b/keyboard/atomic/config.h index e28fa18c..11c0e848 100644 --- a/keyboard/atomic/config.h +++ b/keyboard/atomic/config.h @@ -32,109 +32,36 @@ along with this program. If not, see . #define MATRIX_ROWS 5 #define MATRIX_COLS 15 -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ +// Planck PCB default pin-out +// Change this to how you wired your keyboard +// COLS: Left to right, ROWS: Top to bottom #define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } #define ROWS (int []){ D0, D5, B5, B6, C6 } /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ +/* define if matrix has ghost */ //#define MATRIX_HAS_GHOST /* number of backlight levels */ +/* NOTE: this is the max value of 0..BACKLIGHT_LEVELS so really 16 levels. */ #define BACKLIGHT_LEVELS 3 +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 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 -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ +/* key combination for command */ #define IS_COMMAND() ( \ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z + /* * Feature disable options @@ -154,4 +81,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION +#define MAGIC_KEY_BOOTLOADER B + #endif diff --git a/keyboard/atomic/keymaps/default.c b/keyboard/atomic/keymaps/default.c index d62e5c24..4ed8a71f 100644 --- a/keyboard/atomic/keymaps/default.c +++ b/keyboard/atomic/keymaps/default.c @@ -1,95 +1,234 @@ #include "atomic.h" +// Fillers to make layering more clear +#define _______ KC_TRNS +#define ___T___ KC_TRNS +#define XXXXXXX KC_NO + +// Layer shorthand #define _QW 0 #define _CM 1 #define _DV 2 #define _LW 3 #define _RS 4 +#define _FN 4 -// ROW 1 OPTIONS -// .--------------------------------------------------------------------------------------------------------------------------------------. -// | | | | | | | | | | | | | | | | -// '--------------------------------------------------------------------------------------------------------------------------------------' -// .- 2u ------------. -// | X | -// '-----------------' +/* ROW 1 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. + * | KEY . XXXXXX | + * '-----------------' + */ + +/* ROW 2 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. .- 2u ------------. + * | KEY . XXXXXX | | KEY . XXXXXX | + * '-----------------' '-----------------' + */ + +/* ROW 3 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. .- 2u ------------. + * | KEY . XXXXXX | | X | + * '-----------------' '-----------------' + * .- 2u ------------. + * | X | + * '-----------------' + */ + +/* ROW 4 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. + * | KEY . XXXXXX | + * '-----------------' + * .- 2u ------------. .- 2u ------------. + * | KEY . XXXXXX | | KEY . XXXXXX | + * '-----------------' '-----------------' + * .- 2u ------------. + * | KEY . XXXXXX | + * '-----------------' + */ -// ROW 2 OPTIONS -// .--------------------------------------------------------------------------------------------------------------------------------------. -// | | | | | | | | | | | | | | | | -// '--------------------------------------------------------------------------------------------------------------------------------------' -// .- 2u ------------. .- 2u ------------. -// | X | | X | -// '-----------------' '-----------------' +/* ROW 5 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 1.25u --+ 1.25u ------- 1.25u +--- 1.25u --- 2u -------------- 1.25u ---- 1.25u ------ 1.25u +---- 1.25u . + * | X | X | X | X | X | X | X | X | X | + * '-----------------------------------------------------------------------------------------------------------' + * .- 2u ------------. + * | X | + * '-----------------' + * .--------------------- 6.25u ----------------------------. + * | X | + * '--------------------------------------------------------' + * .----------------------- 6.25u ---------------------------- 1.25u ---- 1.25u ---- 1.25u ------ 1.25u +-- 1.25u --. + * | X | X | X | X | X | X | + * '----------------------------------------------------------------------------------------------------------------' + */ -// ROW 3 OPTIONS -// .--------------------------------------------------------------------------------------------------------------------------------------. -// | | | | | | | | | | | | | | | | -// '--------------------------------------------------------------------------------------------------------------------------------------' -// .- 2u ------------. .- 2u ------------. -// | X | | X | -// '-----------------' '-----------------' -// .- 2u ------------. -// | X | -// '-----------------' +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -// ROW 4 OPTIONS -// .--------------------------------------------------------------------------------------------------------------------------------------. -// | | | | | | | | | | | | | | | | -// '--------------------------------------------------------------------------------------------------------------------------------------' -// .- 2u ------------. -// | X | -// '-----------------' -// .- 2u ------------. .- 2u ------------. -// | X | | X | -// '-----------------' '-----------------' -// .- 2u ------------. -// | X | -// '-----------------' +/* QWERTY - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_QW] = { /* QWERTY */ + { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, + { 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_DEL }, + { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT }, + }, -// ROW 5 OPTIONS -// .--------------------------------------------------------------------------------------------------------------------------------------. -// | | | | | | | | | | | | | | | | -// '--------------------------------------------------------------------------------------------------------------------------------------' -// .- 1.25u --+ 1.25u ------- 1.25u +--- 1.25u --- 2u -------------- 1.25u ---- 1.25u ------ 1.25u +---- 1.25u . -// | X | X | X | X | X | X | X | X | X | -// '-----------------------------------------------------------------------------------------------------------' -// .- 2u ------------. -// | X | -// '-----------------' -// .--------------------- 6.25u ----------------------------. -// | X | -// '--------------------------------------------------------' -// .----------------------- 6.25u ---------------------------- 1.25u ---- 1.25u ---- 1.25u ------ 1.25u +-- 1.25u --. -// | X | X | X | X | X | X | -// '----------------------------------------------------------------------------------------------------------------' +/* COLEMAK - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | R | S | T | D | H | N | E | I | O | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_CM] = { /* COLEMAK */ + { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, + { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* DVORAK - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | ' | , | . | P | Y | F | G | C | R | L | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | O | E | U | I | D | H | T | N | S | / | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = { /* Qwerty */ - { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL }, - { 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_DEL }, - { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, - { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, - { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RGUI, KC_RALT, KC_RCTL, BL_STEP, KC_LEFT, KC_DOWN, KC_RGHT }, - } + [_DV] = { /* DVORAK */ + { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, + { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* LOWERED + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | | | | | | | | | | | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | | | | | | | | | | | | XXXXXX . | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | | | | | | | | | | | XXXXXX . | | | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_LW] = { /* LOWERED */ + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + +/* RAISED + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | | | | | | | | | | | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | | | | | | | | | | | | XXXXXX . | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | | | | | | | | | | | XXXXXX . | | | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_RS] = { /* RAISED */ + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + +/* FUNCTION + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | NUM LK | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | SCR LK | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | PAUSE | PR SCR | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT | VOL+ | VOL- | PLAY | | XXXXXX . | WHEEL+ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | | QWERTY | COLEMK | DVORAK | | | | | | | XXXXXX . | MOUS U | WHEEL- | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_FN] = { /* 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, ___T___, ___T___ }, + { 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, KC_PSCR }, + { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, + { _______, _______, DF(_QW), DF(_CM), DF(_DV), _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + }, }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), }; -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function - switch(id) { - case 0: - return MACRODOWN(TYPE(KC_T), END); - break; - } + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + } return MACRO_NONE; }; diff --git a/keyboard/atomic/keymaps/pc_atomic.c b/keyboard/atomic/keymaps/pc_atomic.c index 2792ff6e..1c0425a7 100644 --- a/keyboard/atomic/keymaps/pc_atomic.c +++ b/keyboard/atomic/keymaps/pc_atomic.c @@ -23,34 +23,33 @@ */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -// [_QW] = { /* QWERTY */ - [0] = { /* QWERTY */ - { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, XXXXXXX, KC_BSPC }, + [_QW] = { /* QWERTY */ + { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, XXXXXXX }, { 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_DEL }, - { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_PGUP }, - { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, MO(_FN), KC_LALT, MO(_RS), XXXXXXX, KC_SPC, MO(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, XXXXXXX, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_UP, KC_PGDN }, + { KC_LCTL, KC_LGUI, MO(_FN), KC_LALT, MO(_RS), KC_SPC, XXXXXXX, MO(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, }, [_LW] = { /* 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, KC_PSCR, KC_PAUS }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { 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, ___T___, ___T___ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, }, [_RS] = { /* 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, KC_PSCR, KC_PAUS }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { 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, ___T___, ___T___ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, }, [_FN] = { /* FUNCTION */ - { 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, KC_PSCR, KC_PAUS }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { 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, ___T___, ___T___ }, + { 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, KC_PSCR }, + { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, + { _______, _______, _______, DF(_CM), DF(_DV), _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, }, }; diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 988deee9..f1c7b561 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -16,6 +16,10 @@ #define _LW 3 #define _RS 4 +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty @@ -85,9 +89,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_RS] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, /* Lower @@ -103,9 +107,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LW] = { {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} } }; From 390fd3107a84277151ceb63255c859307221a290 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 18:48:25 -0500 Subject: [PATCH 16/55] local files local files --- keyboard/planck/config.h | 2 +- keyboard/planck/keymaps/pc.c | 40 +++++++++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index d435cc79..7d64f097 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -73,7 +73,7 @@ along with this program. If not, see . */ /* disable debug print */ -#define NO_DEBUG +//#define NO_DEBUG /* disable print */ //#define NO_PRINT diff --git a/keyboard/planck/keymaps/pc.c b/keyboard/planck/keymaps/pc.c index 0adee8b2..ed062609 100644 --- a/keyboard/planck/keymaps/pc.c +++ b/keyboard/planck/keymaps/pc.c @@ -15,6 +15,14 @@ #define _DV 2 #define _LW 3 #define _RS 4 +#define _FN 5 + +#define XXXXXXX KC_NO +#define _______ KC_TRNS + +#define ASFT(kc) LSFT(RSFT(kc)) +#define MG_B ASFT(KC_B) +#define MG_H ASFT(KC_H) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -26,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI | Alt | |Raise | Space |Lower | / | Left | Down |Right | + * | Ctrl | GUI | Alt | Del |Raise | Space |Lower | / | Left | Down |Right | * `-----------------------------------------------------------------------------------' */ [_QW] = { @@ -85,9 +93,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_RS] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, RESET, _______}, + {_______, _______, _______, _______, MO(_FN), _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, /* Lower @@ -103,9 +111,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LW] = { {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, MG_B, _______}, + {_______, _______, _______, _______, _______, _______, _______, MO(_FN), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Function + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_FN] = { + {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, + {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MG_H, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, + {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, + {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} } }; From 3755ef5ddbdad9f25a53fee951c3eb78035b52c3 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 20:57:51 -0500 Subject: [PATCH 17/55] Compiler Warnings / Atomic TLC Corrected compiler warnings for a number of issues. Gave Atomic some TLC. --- keyboard/atomic/Makefile | 4 +- keyboard/atomic/atomic.h | 3 + keyboard/atomic/backlight.c | 2 + keyboard/atomic/config.h | 95 +++++++++++++++++++++++++---- keyboard/atomic/keymaps/default.c | 26 ++++---- keyboard/atomic/keymaps/pc_atomic.c | 3 +- quantum/keymap_common.c | 6 +- quantum/keymap_common.h | 2 - quantum/keymap_midi.h | 2 +- tmk_core/common/action_code.h | 2 +- tmk_core/common/keymap.c | 3 +- 11 files changed, 113 insertions(+), 35 deletions(-) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 17baeaf5..2b017446 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -120,13 +120,13 @@ 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 - not yet supported in LUFA -#BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality #MIDI_ENABLE = yes # MIDI controls #UNICODE_ENABLE = yes # Unicode #BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/atomic/atomic.h b/keyboard/atomic/atomic.h index d8574efa..d5461e42 100644 --- a/keyboard/atomic/atomic.h +++ b/keyboard/atomic/atomic.h @@ -26,5 +26,8 @@ void matrix_init_user(void); void matrix_scan_user(void); +void process_action_user(keyrecord_t *record); +void led_set_user(uint8_t usb_led); +void backlight_init_ports(void); #endif \ No newline at end of file diff --git a/keyboard/atomic/backlight.c b/keyboard/atomic/backlight.c index f69364b2..647b57e7 100644 --- a/keyboard/atomic/backlight.c +++ b/keyboard/atomic/backlight.c @@ -1,6 +1,8 @@ #include #include "backlight.h" +#include "atomic.h" + #define CHANNEL OCR1C diff --git a/keyboard/atomic/config.h b/keyboard/atomic/config.h index 11c0e848..f30a9e6c 100644 --- a/keyboard/atomic/config.h +++ b/keyboard/atomic/config.h @@ -32,36 +32,109 @@ along with this program. If not, see . #define MATRIX_ROWS 5 #define MATRIX_COLS 15 -// Planck PCB default pin-out -// Change this to how you wired your keyboard -// COLS: Left to right, ROWS: Top to bottom +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ #define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } #define ROWS (int []){ D0, D5, B5, B6, C6 } /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW -/* define if matrix has ghost */ +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST /* number of backlight levels */ -/* NOTE: this is the max value of 0..BACKLIGHT_LEVELS so really 16 levels. */ #define BACKLIGHT_LEVELS 3 -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 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 */ +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ #define IS_COMMAND() ( \ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) - +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z /* * Feature disable options @@ -81,6 +154,4 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -#define MAGIC_KEY_BOOTLOADER B - #endif diff --git a/keyboard/atomic/keymaps/default.c b/keyboard/atomic/keymaps/default.c index 4ed8a71f..0ede363a 100644 --- a/keyboard/atomic/keymaps/default.c +++ b/keyboard/atomic/keymaps/default.c @@ -11,7 +11,7 @@ #define _DV 2 #define _LW 3 #define _RS 4 -#define _FN 4 +#define _FN 5 /* ROW 1 OPTIONS * .--------------------------------------------------------------------------------------------------------------------------------------. @@ -148,11 +148,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | | | | | | | | | | | | | | INS | + * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | | INS | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | | | | | | | | | | | | | XXXXXX . | | + * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | XXXXXX . | | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | | | | | | | | | | | | XXXXXX . | | | + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| * | | | | | | XXXXXX . | | | | | | | | | * '--------------------------------------------------------------------------------------------------------------------------------------' @@ -160,9 +160,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LW] = { /* LOWERED */ { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, KC_INS }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, ___T___, ___T___, _______ }, + { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, }, @@ -170,11 +170,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | | | | | | | | | | | | | | INS | + * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | | INS | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | | | | | | | | | | | | | XXXXXX . | | + * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | XXXXXX . | | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | | | | | | | | | | | | XXXXXX . | | | + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| * | | | | | | XXXXXX . | | | | | | | | | * '--------------------------------------------------------------------------------------------------------------------------------------' @@ -182,9 +182,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RS] = { /* RAISED */ { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, KC_INS }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, ___T___, ___T___, _______ }, + { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, }, diff --git a/keyboard/atomic/keymaps/pc_atomic.c b/keyboard/atomic/keymaps/pc_atomic.c index 1c0425a7..bdf57504 100644 --- a/keyboard/atomic/keymaps/pc_atomic.c +++ b/keyboard/atomic/keymaps/pc_atomic.c @@ -6,6 +6,7 @@ #define _FN 3 #define _______ KC_TRNS +#define ___T___ KC_TRNS #define XXXXXXX KC_NO /* @@ -48,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { 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, ___T___, ___T___ }, { 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, KC_PSCR }, { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, - { _______, _______, _______, DF(_CM), DF(_DV), _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, }, }; diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 2eef4f15..ae6cddb3 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -87,6 +87,7 @@ action_t action_for_key(uint8_t layer, keypos_t key) return action; #endif } else if (keycode == RESET) { // RESET is 0x5000, which is why this is here + action_t action; clear_keyboard(); #ifdef AUDIO_ENABLE play_notes(&goodbye, 5, false); @@ -96,12 +97,13 @@ action_t action_for_key(uint8_t layer, keypos_t key) *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific #endif bootloader_jump(); - return; + return action; } else if (keycode == DEBUG) { // DEBUG is 0x5001 // TODO: Does this actually work? + action_t action; print("\nDEBUG: enabled.\n"); debug_enable = true; - return; + return action; } else if (keycode >= 0x5000 && keycode < 0x6000) { // Layer movement shortcuts // See .h to see constraints/usage diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 3db40772..4a877d2a 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -184,8 +184,6 @@ extern const uint16_t fn_actions[]; // Toggle to layer - 256 layer max #define TG(layer) (layer | 0x5400) -#define MIDI(n) (n | 0x6000) - // M-od, T-ap - 256 keycode max #define MT(mod, kc) (kc | 0x7000 | ((mod & 0xF) << 8)) #define CTL_T(kc) MT(0x1, kc) diff --git a/quantum/keymap_midi.h b/quantum/keymap_midi.h index a89420ce..436fb2eb 100644 --- a/quantum/keymap_midi.h +++ b/quantum/keymap_midi.h @@ -20,7 +20,7 @@ along with this program. If not, see . #include -#define MIDI 0x6000 +#define MIDI(n) (n | 0x6000) #define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000 #define CHNL(note, channel) (note + (channel << 8)) diff --git a/tmk_core/common/action_code.h b/tmk_core/common/action_code.h index 4fe9c1d5..2b0b0b07 100644 --- a/tmk_core/common/action_code.h +++ b/tmk_core/common/action_code.h @@ -301,7 +301,7 @@ enum backlight_opt { #define ACTION_BACKLIGHT_DECREASE() ACTION(ACT_BACKLIGHT, BACKLIGHT_DECREASE << 8) #define ACTION_BACKLIGHT_TOGGLE() ACTION(ACT_BACKLIGHT, BACKLIGHT_TOGGLE << 8) #define ACTION_BACKLIGHT_STEP() ACTION(ACT_BACKLIGHT, BACKLIGHT_STEP << 8) -#define ACTION_BACKLIGHT_LEVEL(level) ACTION(ACT_BACKLIGHT, BACKLIGHT_LEVEL << 8 | level) +#define ACTION_BACKLIGHT_LEVEL(level) ACTION(ACT_BACKLIGHT, BACKLIGHT_LEVEL << 8 | (level)) /* Command */ #define ACTION_COMMAND(id, opt) ACTION(ACT_COMMAND, (opt)<<8 | (addr)) /* Function */ diff --git a/tmk_core/common/keymap.c b/tmk_core/common/keymap.c index 11f4aa8a..8955fc71 100644 --- a/tmk_core/common/keymap.c +++ b/tmk_core/common/keymap.c @@ -22,7 +22,7 @@ along with this program. If not, see . #include "action_macro.h" #include "wait.h" #include "debug.h" - +#include "bootloader.h" static action_t keycode_to_action(uint8_t keycode); @@ -143,6 +143,7 @@ static action_t keycode_to_action(uint8_t keycode) action.code = ACTION_TRANSPARENT; break; case KC_BOOTLOADER: + action.code = ACTION_NO; clear_keyboard(); wait_ms(50); bootloader_jump(); // not return From 9ff9317720d4fcee6b35800f71d598f9a59de661 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 21:55:04 -0500 Subject: [PATCH 18/55] Corrected spacing. --- keyboard/planck/Makefile | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 17e5cd45..ae637fc2 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -130,20 +130,22 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # 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 +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +# MIDI_ENABLE = yes # MIDI controls +# AUDIO_ENABLE = yes # Audio output on port C6 +# UNICODE_ENABLE = yes # Unicode +# BLUETOOTH_ENABLE = ye # Enable Bluetooth with the Adafruit EZ-Key HID +# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -# AUDIO_ENABLE = YES # Audio output on port C6 -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID -# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend + ifdef BACKLIGHT_ENABLE SRC += backlight.c From aa9eaa97730d9dea730e74b6d5a01bc344af9bfd Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 21:56:27 -0500 Subject: [PATCH 19/55] Corrected spacing. --- keyboard/atomic/Makefile | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 2b017446..20cf4fff 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -114,19 +114,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 - not yet supported in LUFA -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -#MIDI_ENABLE = yes # MIDI controls -#UNICODE_ENABLE = yes # Unicode -#BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # 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 - not yet supported in LUFA +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +#MIDI_ENABLE = yes # MIDI controls +#UNICODE_ENABLE = yes # Unicode +#BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax From 95a44cdf01a98180363e8039d769fa7be92b0194 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 22:00:36 -0500 Subject: [PATCH 20/55] Disabled print. --- keyboard/planck/config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index 7d64f097..d3719e0c 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -73,10 +73,10 @@ along with this program. If not, see . */ /* disable debug print */ -//#define NO_DEBUG +#define NO_DEBUG /* disable print */ -//#define NO_PRINT +#define NO_PRINT /* disable action features */ //#define NO_ACTION_LAYER From 2900b4884598b06ed59371c48ecea9d3f0bff5ac Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 22:04:44 -0500 Subject: [PATCH 21/55] Added parenthesis to midi macro. --- quantum/keymap_midi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/keymap_midi.h b/quantum/keymap_midi.h index 436fb2eb..795f2638 100644 --- a/quantum/keymap_midi.h +++ b/quantum/keymap_midi.h @@ -20,7 +20,7 @@ along with this program. If not, see . #include -#define MIDI(n) (n | 0x6000) +#define MIDI(n) ((n) | 0x6000) #define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000 #define CHNL(note, channel) (note + (channel << 8)) From 44e4320b2ea508d75f28cb6796f6cf414164564b Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 06:34:56 -0500 Subject: [PATCH 22/55] Nightly --- keyboard/planck/keymaps/pc.c | 71 +++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 18 deletions(-) diff --git a/keyboard/planck/keymaps/pc.c b/keyboard/planck/keymaps/pc.c index ed062609..20bb5d86 100644 --- a/keyboard/planck/keymaps/pc.c +++ b/keyboard/planck/keymaps/pc.c @@ -2,6 +2,8 @@ // this is the style you want to emulate. #include "planck.h" +#include "print.h" +#include "action_layer.h" #ifdef BACKLIGHT_ENABLE #include "backlight.h" #endif @@ -38,10 +40,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_QW] = { - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {RESET, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT }, - {KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} + {KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, M(_LW), KC_SPC, KC_SPC, M(_RS), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} }, /* Colemak @@ -95,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, RESET, _______}, - {_______, _______, _______, _______, MO(_FN), _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, /* Lower @@ -113,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, MG_B, _______}, - {_______, _______, _______, _______, _______, _______, _______, MO(_FN), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, /* Function @@ -139,20 +141,53 @@ const uint16_t PROGMEM fn_actions[] = { }; + +int tri_layer = 0; +void update_tri_layer(int layer) { + if (tri_layer > 1) { + layer_on(layer); + } else { + layer_off(layer); + } +} + + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - #ifdef BACKLIGHT_ENABLE - backlight_step(); - #endif - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; + // MACRODOWN only works in this function + switch(id) + { + case _RS: + if (record->event.pressed) { + print("RS_DN"); + layer_on(_RS); + tri_layer++; + update_tri_layer(_FN); + } else { + print("RS_UP"); + layer_off(_RS); + tri_layer--; + update_tri_layer(_FN); + phex(layer_state); + } + break; + + case _LW: + if (record->event.pressed) { + print("LW_DN"); + layer_on(_LW); + tri_layer++; + update_tri_layer(_FN); + } else { + print("LW_UP"); + layer_off(_LW); + tri_layer--; + update_tri_layer(_FN); + } + break; + + default: + break; + } + return MACRO_NONE; }; From 59e041672ccd35060aba75c7c05561a39c05d742 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 08:20:55 -0500 Subject: [PATCH 23/55] Remapped magic bootloader key to B. --- keyboard/atomic/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/atomic/config.h b/keyboard/atomic/config.h index f30a9e6c..1b34decf 100644 --- a/keyboard/atomic/config.h +++ b/keyboard/atomic/config.h @@ -130,7 +130,7 @@ along with this program. If not, see . //#define MAGIC_KEY_LAYER7 7 //#define MAGIC_KEY_LAYER8 8 //#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE +#define MAGIC_KEY_BOOTLOADER B //#define MAGIC_KEY_LOCK CAPS //#define MAGIC_KEY_EEPROM E //#define MAGIC_KEY_NKRO N From 4b4d3069b4e71de370f0fea8a949f1ae39bb0993 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 08:50:01 -0500 Subject: [PATCH 24/55] Update and rename pc_atomic.c to pvc_atomic.c Also removed unused FNs --- keyboard/atomic/keymaps/{pc_atomic.c => pvc_atomic.c} | 6 ------ 1 file changed, 6 deletions(-) rename keyboard/atomic/keymaps/{pc_atomic.c => pvc_atomic.c} (96%) diff --git a/keyboard/atomic/keymaps/pc_atomic.c b/keyboard/atomic/keymaps/pvc_atomic.c similarity index 96% rename from keyboard/atomic/keymaps/pc_atomic.c rename to keyboard/atomic/keymaps/pvc_atomic.c index bdf57504..b18e3a37 100644 --- a/keyboard/atomic/keymaps/pc_atomic.c +++ b/keyboard/atomic/keymaps/pvc_atomic.c @@ -55,12 +55,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), - }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) From 19061f2ff1283f756b162055bac776814caa2d84 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 08:54:22 -0500 Subject: [PATCH 25/55] Update and rename pc_atomic.c to pvc_atomic.c --- keyboard/atomic/keymaps/{pc_atomic.c => pvc_atomic.c} | 6 ------ 1 file changed, 6 deletions(-) rename keyboard/atomic/keymaps/{pc_atomic.c => pvc_atomic.c} (96%) diff --git a/keyboard/atomic/keymaps/pc_atomic.c b/keyboard/atomic/keymaps/pvc_atomic.c similarity index 96% rename from keyboard/atomic/keymaps/pc_atomic.c rename to keyboard/atomic/keymaps/pvc_atomic.c index bdf57504..b18e3a37 100644 --- a/keyboard/atomic/keymaps/pc_atomic.c +++ b/keyboard/atomic/keymaps/pvc_atomic.c @@ -55,12 +55,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), - }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) From 3d601c1bce23cf31052b9a61818fd1343970499b Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 08:56:27 -0500 Subject: [PATCH 26/55] Rename pc.c to pvc_planck.c --- keyboard/planck/keymaps/{pc.c => pvc_planck.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename keyboard/planck/keymaps/{pc.c => pvc_planck.c} (100%) diff --git a/keyboard/planck/keymaps/pc.c b/keyboard/planck/keymaps/pvc_planck.c similarity index 100% rename from keyboard/planck/keymaps/pc.c rename to keyboard/planck/keymaps/pvc_planck.c From 3dd20f2b6c16ea56bacc5e1581db3fbc1cfc5444 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 11:35:49 -0500 Subject: [PATCH 27/55] Rename pc.c to pvc_planck.c --- keyboard/planck/keymaps/{pc.c => pvc_planck.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename keyboard/planck/keymaps/{pc.c => pvc_planck.c} (100%) diff --git a/keyboard/planck/keymaps/pc.c b/keyboard/planck/keymaps/pvc_planck.c similarity index 100% rename from keyboard/planck/keymaps/pc.c rename to keyboard/planck/keymaps/pvc_planck.c From cf17687f29820b6bf9b8feb3b23dec6e271572c5 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 12:59:16 -0500 Subject: [PATCH 28/55] Adding personal build file settings --- keyboard/atomic/Makefile | 4 ++-- keyboard/planck/Makefile | 4 ++-- keyboard/planck/config.h | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 20cf4fff..f95b2350 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -119,8 +119,8 @@ MOUSEKEY_ENABLE = yes # 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 - not yet supported in LUFA -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +#BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality #MIDI_ENABLE = yes # MIDI controls #UNICODE_ENABLE = yes # Unicode #BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index ae637fc2..5271c279 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -135,8 +135,8 @@ MOUSEKEY_ENABLE = yes # 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 -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality # MIDI_ENABLE = yes # MIDI controls # AUDIO_ENABLE = yes # Audio output on port C6 # UNICODE_ENABLE = yes # Unicode diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index d3719e0c..7d64f097 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -73,10 +73,10 @@ along with this program. If not, see . */ /* disable debug print */ -#define NO_DEBUG +//#define NO_DEBUG /* disable print */ -#define NO_PRINT +//#define NO_PRINT /* disable action features */ //#define NO_ACTION_LAYER From f051496f1343259f4da8c5d917b9c9e47b97e38c Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 18:01:29 -0500 Subject: [PATCH 29/55] Checkin --- keyboard/atomic/Makefile | 7 ++ keyboard/atomic/keymaps/pvc_atomic.c | 170 +++++++++++++++++++++++++-- tmk_core/common/action_layer.h | 1 + 3 files changed, 169 insertions(+), 9 deletions(-) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index f95b2350..206b5f11 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -136,4 +136,11 @@ VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) VPATH += $(TMK_DIR) +debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION +debug-on: all + +debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT +debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) +debug-off: all + include $(TOP_DIR)/quantum/quantum.mk diff --git a/keyboard/atomic/keymaps/pvc_atomic.c b/keyboard/atomic/keymaps/pvc_atomic.c index b18e3a37..3ddd3e32 100644 --- a/keyboard/atomic/keymaps/pvc_atomic.c +++ b/keyboard/atomic/keymaps/pvc_atomic.c @@ -1,9 +1,12 @@ #include "atomic.h" +#include "action_layer.h" #define _QW 0 #define _LW 1 #define _RS 2 #define _FN 3 +#define _F1 4 +#define _F2 5 #define _______ KC_TRNS #define ___T___ KC_TRNS @@ -29,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { 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_DEL }, { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, XXXXXXX, KC_PGUP }, { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, MO(_FN), KC_LALT, MO(_RS), KC_SPC, XXXXXXX, MO(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + { KC_LCTL, KC_LGUI, M(_FN), KC_LALT, M(_RS), KC_SPC, XXXXXXX, M(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, }, [_LW] = { /* 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, ___T___, ___T___ }, @@ -52,18 +55,167 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, }, + [_F1] = { /* 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, ___T___, ___T___ }, + { 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, KC_PSCR }, + { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + }, + [_F2] = { /* 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, ___T___, ___T___ }, + { 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, KC_PSCR }, + { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + }, }; +#define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) +#define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer))) + +void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) +{ + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) + { + layer_on(layer3); + } + else + { + layer_off(layer3); + } +} + +void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order) +{ + if (order) + { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) + { + layer_on(layer3); + } + else + { + layer_off(layer3); + layer_off(layer4); + } + } + else + { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) + { + layer_on(layer4); + } + else + { + layer_off(layer3); + layer_off(layer4); + } + } +} + +/* ignore me +void change_quad_layer(uint8_t focus_layer, bool desired_focus_layer_state, uint8_t pair_layer, uint8_t layer3, uint8_t layer4) +{ + + // If desired focus layer state == 1 and current focus layer state == 1 + if ((desired_focus_layer_state) && IS_LAYER_ON(layer1)) + { + // Do Nothing + } + // If desired focus layer state == 0 and current focus layer state == 1 + else if ((desired_focus_layer_state) && IS_LAYER_ON(layer1)) + { + // If + layer_off(layer3); + layer_off(layer4); + } + } + else + { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) + { + layer_on(layer4); + } + else + { + layer_off(layer3); + layer_off(layer4); + } + } +} +*/ + const uint16_t PROGMEM fn_actions[] = { }; -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - // MACRODOWN only works in this function - switch(id) { - case 0: - return MACRODOWN(TYPE(KC_T), END); - break; - } - return MACRO_NONE; + + // MACRODOWN only works in this function + switch(id) + { + case _FN: + if (record->event.pressed) { + print("FN_DN\n"); + print_val_bin32(layer_state); + layer_on(_FN); + print_val_bin32(layer_state); + } else { + print("FN_UP\n"); + print_val_bin32(layer_state); + layer_off(_FN); + print_val_bin32(layer_state); + } + break; + + case _RS: + if (record->event.pressed) { + print("RS_DN\n"); + print_val_bin32(layer_state); + layer_on(_RS); + //tri_layer++; + print_val_bin32(layer_state); + //update_tri_layer(_RS, _LW, _FN); + update_quad_layer(_RS, _LW, _F1, _F2, 0); + print_val_bin32(layer_state); + } else { + print("RS_UP\n"); + print_val_bin32(layer_state); + layer_off(_RS); + //tri_layer--; + print_val_bin32(layer_state); + //update_tri_layer(_RS, _LW, _FN); + update_quad_layer(_RS, _LW, _F1, _F2, 0); + print_val_bin32(layer_state); + } + break; + + case _LW: + if (record->event.pressed) { + print("LW_DN\n"); + print_val_bin32(layer_state); + layer_on(_LW); + //tri_layer++; + print_val_bin32(layer_state); + //update_tri_layer(_RS, _LW, _FN); + update_quad_layer(_RS, _LW, _F1, _F2, 1); + print_val_bin32(layer_state); + } else { + print("LW_UP\n"); + print_val_bin32(layer_state); + layer_off(_LW); + //tri_layer--; + print_val_bin32(layer_state); + //update_tri_layer(_RS, _LW, _FN); + update_quad_layer(_RS, _LW, _F1, _F2, 1); + print_val_bin32(layer_state); + } + break; + + default: + break; + } + return MACRO_NONE; }; diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h index 3a4b1e33..025cf542 100644 --- a/tmk_core/common/action_layer.h +++ b/tmk_core/common/action_layer.h @@ -68,6 +68,7 @@ void layer_xor(uint32_t state); #define layer_and(state) #define layer_xor(state) #define layer_debug() + #endif /* pressed actions cache */ From ddbe4307789b6087c3e6f146a5e02f1084f3cecc Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 14 Apr 2016 19:13:24 -0400 Subject: [PATCH 30/55] new defaults --- keyboard/planck/Makefile | 2 +- keyboard/planck/keymaps/default/keymap.c | 146 ++++++++++++++++++++--- 2 files changed, 133 insertions(+), 15 deletions(-) diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index ae637fc2..ee1c60fe 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -138,7 +138,7 @@ 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 BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality # MIDI_ENABLE = yes # MIDI controls -# AUDIO_ENABLE = yes # Audio output on port C6 +AUDIO_ENABLE = yes # Audio output on port C6 # UNICODE_ENABLE = yes # Unicode # BLUETOOTH_ENABLE = ye # Enable Bluetooth with the Adafruit EZ-Key HID # RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 30ad8776..e0656733 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -5,6 +5,10 @@ #ifdef BACKLIGHT_ENABLE #include "backlight.h" #endif +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif // 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. @@ -15,6 +19,15 @@ #define _DV 2 #define _LW 3 #define _RS 4 +#define _AD 5 + +// Macro name shortcuts +#define M_QW 0 +#define M_CM 1 +#define M_DV 2 +#define M_LW 3 +#define M_RS 4 +#define M_BL 5 // Fillers to make layering more clear #define _______ KC_TRNS @@ -37,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Colemak @@ -55,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Dvorak @@ -73,24 +86,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Raise * ,-----------------------------------------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Next | Vol- | Vol+ | Play | + * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ [_RS] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, _______}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, @@ -98,18 +111,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Next | Vol- | Vol+ | Play | + * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ [_LW] = { {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, _______}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | |Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_AD] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, _______, _______, _______, _______, M(M_QW), M(M_CM), M(M_DV), _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } }; @@ -117,11 +148,85 @@ const uint16_t PROGMEM fn_actions[] = { }; +float tone_qw[][2] = { + {440.0*pow(2.0,(67)/12.0), 400}, + {440.0*pow(2.0,(60)/12.0), 400}, + {0, 400}, + {440.0*pow(2.0,(67)/12.0), 1600} +}; + +float tone_cm[][2] = { + {440.0*pow(2.0,(67)/12.0), 400}, + {440.0*pow(2.0,(60)/12.0), 400}, + {0, 400}, + {440.0*pow(2.0,(67)/12.0), 1000}, + {0, 200}, + {440.0*pow(2.0,(67)/12.0), 1000} +}; + +float tone_dv[][2] = { + {440.0*pow(2.0,(67)/12.0), 400}, + {440.0*pow(2.0,(60)/12.0), 400}, + {0, 400}, + {440.0*pow(2.0,(67)/12.0), 800}, + {0, 200}, + {440.0*pow(2.0,(67)/12.0), 800}, + {0, 200}, + {440.0*pow(2.0,(67)/12.0), 800} +}; + + +#define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) +#define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer))) + +void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { + layer_on(layer3); + } else { + layer_off(layer3); + } +} const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { - case 0: + case M_QW: + if (record->event.pressed) { + play_notes(&tone_qw, 4, false); + default_layer_set(1UL<<_QW); + } + break; + case M_CM: + if (record->event.pressed) { + play_notes(&tone_cm, 6, false); + default_layer_set(1UL<<_CM); + } + break; + case M_DV: + if (record->event.pressed) { + play_notes(&tone_dv, 8, false); + default_layer_set(1UL<<_DV); + } + break; + case M_LW: + if (record->event.pressed) { + layer_on(_LW); + update_tri_layer(_LW, _RS, _AD); + } else { + layer_off(_LW); + update_tri_layer(_LW, _RS, _AD); + } + break; + case M_RS: + if (record->event.pressed) { + layer_on(_RS); + update_tri_layer(_LW, _RS, _AD); + } else { + layer_off(_RS); + update_tri_layer(_LW, _RS, _AD); + } + break; + case M_BL: if (record->event.pressed) { register_code(KC_RSFT); #ifdef BACKLIGHT_ENABLE @@ -134,3 +239,16 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } return MACRO_NONE; }; + +float start_up[][2] = { + {440.0*pow(2.0,(67)/12.0), 650}, + {440.0*pow(2.0,(64)/12.0), 450}, + {440.0*pow(2.0,(55)/12.0), 450}, + {440.0*pow(2.0,(60)/12.0), 450}, + {440.0*pow(2.0,(64)/12.0), 1000} +}; + +void matrix_init_user(void) { + init_notes(); + play_notes(&start_up, 5, false); +} From 63462bf8c12cea1c13ca1bd1f105fe53f556806e Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 14 Apr 2016 20:42:14 -0400 Subject: [PATCH 31/55] changing up the makefile a bit --- keyboard/planck/Makefile | 56 +++++++++++++-------- keyboard/planck/keymaps/default/keymap.c | 49 +++++++++++------- keyboard/planck/keymaps/default/makefile.mk | 1 + quantum/quantum.mk | 8 +-- tmk_core/common.mk | 26 +++++----- tmk_core/protocol/lufa.mk | 4 +- 6 files changed, 84 insertions(+), 60 deletions(-) create mode 100644 keyboard/planck/keymaps/default/makefile.mk diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index ee1c60fe..dc6e46df 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -38,6 +38,27 @@ # To rebuild project do "make clean" then "make all". #---------------------------------------------------------------------------- +# Build Options +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # 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 = no # USB Nkey Rollover - if this doesn't work, see here: + # https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + # Target file name (without extension). TARGET = planck @@ -62,17 +83,28 @@ ifneq ("$(wildcard keymaps/$(KEYMAP).c)","") else ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","") KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif else $(error Keymap file does not exist) +endif endif -endif + else + ifneq ("$(wildcard keymaps/default.c)","") KEYMAP_FILE = keymaps/default.c else KEYMAP_FILE = keymaps/default/keymap.c endif + +ifneq ("$(wildcard keymaps/default/makefile.mk)","") + include keymaps/default/makefile.mk endif + +endif + SRC := $(KEYMAP_FILE) $(SRC) CONFIG_H = config.h @@ -127,27 +159,7 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT OPT_DEFS += -DBOOTLOADER_SIZE=4096 -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = yes # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -# UNICODE_ENABLE = yes # Unicode -# BLUETOOTH_ENABLE = ye # Enable Bluetooth with the Adafruit EZ-Key HID -# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend - - -ifdef BACKLIGHT_ENABLE +ifeq ($(BACKLIGHT_ENABLE), yes) SRC += backlight.c endif diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index e0656733..97ba5d28 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -89,38 +89,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, -/* Raise +/* Lower * ,-----------------------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_RS] = { - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, +[_LW] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, -/* Lower +/* Raise * ,-----------------------------------------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | * |------+------+------+------+------+------|------+------+------+------+------+------| * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_LW] = { - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, +[_RS] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, @@ -148,17 +148,18 @@ const uint16_t PROGMEM fn_actions[] = { }; +#ifdef AUDIO_ENABLE float tone_qw[][2] = { {440.0*pow(2.0,(67)/12.0), 400}, {440.0*pow(2.0,(60)/12.0), 400}, - {0, 400}, + {0, 800}, {440.0*pow(2.0,(67)/12.0), 1600} }; float tone_cm[][2] = { {440.0*pow(2.0,(67)/12.0), 400}, {440.0*pow(2.0,(60)/12.0), 400}, - {0, 400}, + {0, 800}, {440.0*pow(2.0,(67)/12.0), 1000}, {0, 200}, {440.0*pow(2.0,(67)/12.0), 1000} @@ -167,14 +168,14 @@ float tone_cm[][2] = { float tone_dv[][2] = { {440.0*pow(2.0,(67)/12.0), 400}, {440.0*pow(2.0,(60)/12.0), 400}, - {0, 400}, + {0, 800}, {440.0*pow(2.0,(67)/12.0), 800}, {0, 200}, {440.0*pow(2.0,(67)/12.0), 800}, {0, 200}, {440.0*pow(2.0,(67)/12.0), 800} }; - +#endif #define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) #define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer))) @@ -192,19 +193,25 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) switch(id) { case M_QW: if (record->event.pressed) { - play_notes(&tone_qw, 4, false); + #ifdef AUDIO_ENABLE + play_notes(&tone_qw, 4, false); + #endif default_layer_set(1UL<<_QW); } break; case M_CM: if (record->event.pressed) { - play_notes(&tone_cm, 6, false); + #ifdef AUDIO_ENABLE + play_notes(&tone_cm, 6, false); + #endif default_layer_set(1UL<<_CM); } break; case M_DV: if (record->event.pressed) { - play_notes(&tone_dv, 8, false); + #ifdef AUDIO_ENABLE + play_notes(&tone_dv, 8, false); + #endif default_layer_set(1UL<<_DV); } break; @@ -240,6 +247,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; +#ifdef AUDIO_ENABLE float start_up[][2] = { {440.0*pow(2.0,(67)/12.0), 650}, {440.0*pow(2.0,(64)/12.0), 450}, @@ -247,8 +255,11 @@ float start_up[][2] = { {440.0*pow(2.0,(60)/12.0), 450}, {440.0*pow(2.0,(64)/12.0), 1000} }; +#endif void matrix_init_user(void) { + #ifdef AUDIO_ENABLE init_notes(); play_notes(&start_up, 5, false); + #endif } diff --git a/keyboard/planck/keymaps/default/makefile.mk b/keyboard/planck/keymaps/default/makefile.mk new file mode 100644 index 00000000..628167ff --- /dev/null +++ b/keyboard/planck/keymaps/default/makefile.mk @@ -0,0 +1 @@ +AUDIO_ENABLE = yes \ No newline at end of file diff --git a/quantum/quantum.mk b/quantum/quantum.mk index de93af7e..3069f582 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -23,19 +23,19 @@ ifndef CUSTOM_MATRIX SRC += $(QUANTUM_DIR)/matrix.c endif -ifdef MIDI_ENABLE +ifeq ($(MIDI_ENABLE), yes) SRC += $(QUANTUM_DIR)/keymap_midi.c endif -ifdef AUDIO_ENABLE +ifeq ($(AUDIO_ENABLE), yes) SRC += $(QUANTUM_DIR)/audio.c endif -ifdef UNICODE_ENABLE +ifeq ($(UNICODE_ENABLE), yes) SRC += $(QUANTUM_DIR)/keymap_unicode.c endif -ifdef RGBLIGHT_ENABLE +ifeq ($(RGBLIGHT_ENABLE), yes) SRC += $(QUANTUM_DIR)/light_ws2812.c SRC += $(QUANTUM_DIR)/rgblight.c OPT_DEFS += -DRGBLIGHT_ENABLE diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 89c366f5..8d028d52 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -17,66 +17,66 @@ SRC += $(COMMON_DIR)/host.c \ # Option modules -ifdef BOOTMAGIC_ENABLE +ifeq ($(BOOTMAGIC_ENABLE), yes) SRC += $(COMMON_DIR)/bootmagic.c SRC += $(COMMON_DIR)/avr/eeconfig.c OPT_DEFS += -DBOOTMAGIC_ENABLE endif -ifdef MOUSEKEY_ENABLE +ifeq ($(MOUSEKEY_ENABLE), yes) SRC += $(COMMON_DIR)/mousekey.c OPT_DEFS += -DMOUSEKEY_ENABLE OPT_DEFS += -DMOUSE_ENABLE endif -ifdef EXTRAKEY_ENABLE +ifeq ($(EXTRAKEY_ENABLE), yes) OPT_DEFS += -DEXTRAKEY_ENABLE endif -ifdef CONSOLE_ENABLE +ifeq ($(CONSOLE_ENABLE), yes) OPT_DEFS += -DCONSOLE_ENABLE else OPT_DEFS += -DNO_PRINT OPT_DEFS += -DNO_DEBUG endif -ifdef COMMAND_ENABLE +ifeq ($(COMMAND_ENABLE), yes) SRC += $(COMMON_DIR)/command.c OPT_DEFS += -DCOMMAND_ENABLE endif -ifdef NKRO_ENABLE +ifeq ($(NKRO_ENABLE), yes) OPT_DEFS += -DNKRO_ENABLE endif -ifdef MIDI_ENABLE +ifeq ($(MIDI_ENABLE), yes) OPT_DEFS += -DMIDI_ENABLE endif -ifdef AUDIO_ENABLE +ifeq ($(AUDIO_ENABLE), yes) OPT_DEFS += -DAUDIO_ENABLE endif -ifdef USB_6KRO_ENABLE +ifeq ($(USB_6KRO_ENABLE), yes) OPT_DEFS += -DUSB_6KRO_ENABLE endif -ifdef SLEEP_LED_ENABLE +ifeq ($(SLEEP_LED_ENABLE), yes) SRC += $(COMMON_DIR)/sleep_led.c OPT_DEFS += -DSLEEP_LED_ENABLE OPT_DEFS += -DNO_SUSPEND_POWER_DOWN endif -ifdef BACKLIGHT_ENABLE +ifeq ($(BACKLIGHT_ENABLE), yes) SRC += $(COMMON_DIR)/backlight.c OPT_DEFS += -DBACKLIGHT_ENABLE endif -ifdef BLUETOOTH_ENABLE +ifeq ($(BLUETOOTH_ENABLE), yes) OPT_DEFS += -DBLUETOOTH_ENABLE endif -ifdef KEYMAP_SECTION_ENABLE +ifeq ($(KEYMAP_SECTION_ENABLE), yes) OPT_DEFS += -DKEYMAP_SECTION_ENABLE ifeq ($(strip $(MCU)),atmega32u2) diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk index 4905760b..f3209c22 100644 --- a/tmk_core/protocol/lufa.mk +++ b/tmk_core/protocol/lufa.mk @@ -17,7 +17,7 @@ LUFA_SRC = $(LUFA_DIR)/lufa.c \ $(LUFA_DIR)/descriptor.c \ $(LUFA_SRC_USB) -ifdef MIDI_ENABLE +ifeq ($(MIDI_ENABLE), yes) LUFA_SRC += $(LUFA_DIR)/midi/midi.c \ $(LUFA_DIR)/midi/midi_device.c \ $(LUFA_DIR)/midi/bytequeue/bytequeue.c \ @@ -25,7 +25,7 @@ ifdef MIDI_ENABLE $(LUFA_SRC_USBCLASS) endif -ifdef BLUETOOTH_ENABLE +ifeq ($(BLUETOOTH_ENABLE), yes) LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ $(TMK_DIR)/protocol/serial_uart.c endif From 3993afbb2e022f4e6371c729ac6a025f16bc734e Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 22:27:28 -0500 Subject: [PATCH 32/55] adding new per-keymap makefile --- keyboard/atomic/Makefile | 85 +++++++++++++------ keyboard/atomic/keymaps/pvc/makefile.mk | 16 ++++ .../atomic/keymaps/{ => pvc}/pvc_atomic.c | 0 3 files changed, 73 insertions(+), 28 deletions(-) create mode 100644 keyboard/atomic/keymaps/pvc/makefile.mk rename keyboard/atomic/keymaps/{ => pvc}/pvc_atomic.c (100%) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 206b5f11..364efa3f 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -27,7 +27,7 @@ # make flip-ee = Download the eeprom file to the device, using Atmel FLIP # (must have Atmel FLIP installed). # -# make debug = Start either simulavr or avarice as specified for debugging, +# make debug = Start either simulavr or avarice as specified for debugging, # with avr-gdb or avr-insight as the front end for debugging. # # make filename.s = Just compile filename.c into the assembler code only. @@ -38,6 +38,27 @@ # To rebuild project do "make clean" then "make all". #---------------------------------------------------------------------------- +# Build Options +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # 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 = no # USB Nkey Rollover - if this doesn't work, see here: + # https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + # Target file name (without extension). TARGET = atomic @@ -50,15 +71,42 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # # project specific files -SRC = atomic.c \ - backlight.c +SRC = atomic.c + +ifdef keymap + KEYMAP = $(keymap) +endif ifdef KEYMAP - SRC := keymaps/$(KEYMAP).c $(SRC) +ifneq ("$(wildcard keymaps/$(KEYMAP).c)","") + KEYMAP_FILE = keymaps/$(KEYMAP).c +else +ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","") + KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif +else +$(error Keymap file does not exist) +endif +endif + else - SRC := keymaps/default.c $(SRC) + +ifneq ("$(wildcard keymaps/default.c)","") + KEYMAP_FILE = keymaps/default.c +else + KEYMAP_FILE = keymaps/default/keymap.c +endif + +ifneq ("$(wildcard keymaps/default/makefile.mk)","") + include keymaps/default/makefile.mk +endif + endif +SRC := $(KEYMAP_FILE) $(SRC) + CONFIG_H = config.h # MCU name @@ -111,22 +159,10 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT OPT_DEFS += -DBOOTLOADER_SIZE=4096 -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 - not yet supported in LUFA -#BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -#MIDI_ENABLE = yes # MIDI controls -#UNICODE_ENABLE = yes # Unicode -#BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +ifeq ($(BACKLIGHT_ENABLE), yes) + SRC += backlight.c +endif -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax @@ -136,11 +172,4 @@ VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) VPATH += $(TMK_DIR) -debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION -debug-on: all - -debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT -debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) -debug-off: all - -include $(TOP_DIR)/quantum/quantum.mk +include $(TOP_DIR)/quantum/quantum.mk \ No newline at end of file diff --git a/keyboard/atomic/keymaps/pvc/makefile.mk b/keyboard/atomic/keymaps/pvc/makefile.mk new file mode 100644 index 00000000..ff0a9c33 --- /dev/null +++ b/keyboard/atomic/keymaps/pvc/makefile.mk @@ -0,0 +1,16 @@ +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # 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 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboard/atomic/keymaps/pvc_atomic.c b/keyboard/atomic/keymaps/pvc/pvc_atomic.c similarity index 100% rename from keyboard/atomic/keymaps/pvc_atomic.c rename to keyboard/atomic/keymaps/pvc/pvc_atomic.c From 2597fb7c508cf36704291cd48b2c752dd21f2b0d Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 14 Apr 2016 23:33:46 -0400 Subject: [PATCH 33/55] might have broken something --- keyboard/planck/config.h | 4 ++-- keyboard/planck/keymaps/default/makefile.mk | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index d3719e0c..7d64f097 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -73,10 +73,10 @@ along with this program. If not, see . */ /* disable debug print */ -#define NO_DEBUG +//#define NO_DEBUG /* disable print */ -#define NO_PRINT +//#define NO_PRINT /* disable action features */ //#define NO_ACTION_LAYER diff --git a/keyboard/planck/keymaps/default/makefile.mk b/keyboard/planck/keymaps/default/makefile.mk index 628167ff..e1c5bd2e 100644 --- a/keyboard/planck/keymaps/default/makefile.mk +++ b/keyboard/planck/keymaps/default/makefile.mk @@ -1 +1,2 @@ -AUDIO_ENABLE = yes \ No newline at end of file +AUDIO_ENABLE = yes +BACKLIGHT_ENABLE = yes \ No newline at end of file From 43a4ffc25971b2aea94b65ca1db66371e653ec5f Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 14 Apr 2016 23:53:35 -0400 Subject: [PATCH 34/55] bootmagic somehow not getting enabled, so adding eeconfig to backlight src include cond --- keyboard/planck/Makefile | 11 ++++------- keyboard/planck/keymaps/default/keymap.c | 3 --- tmk_core/common.mk | 1 + 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index dc6e46df..693e9c8a 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -107,6 +107,10 @@ endif SRC := $(KEYMAP_FILE) $(SRC) +ifeq ($(BACKLIGHT_ENABLE), yes) + SRC := backlight.c $(SRC) +endif + CONFIG_H = config.h # MCU name @@ -126,7 +130,6 @@ MCU = atmega32u4 # software delays. F_CPU = 16000000 - # # LUFA specific # @@ -158,12 +161,6 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # USBaspLoader 2048 OPT_DEFS += -DBOOTLOADER_SIZE=4096 - -ifeq ($(BACKLIGHT_ENABLE), yes) - SRC += backlight.c -endif - - # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 97ba5d28..151a6b4f 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -2,9 +2,6 @@ // this is the style you want to emulate. #include "planck.h" -#ifdef BACKLIGHT_ENABLE - #include "backlight.h" -#endif #include "action_layer.h" #ifdef AUDIO_ENABLE #include "audio.h" diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 8d028d52..030767cc 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -69,6 +69,7 @@ endif ifeq ($(BACKLIGHT_ENABLE), yes) SRC += $(COMMON_DIR)/backlight.c + SRC += $(COMMON_DIR)/avr/eeconfig.c OPT_DEFS += -DBACKLIGHT_ENABLE endif From bb0836c62016f482f517771a9f5a8dbc68bd0a1c Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 15 Apr 2016 00:26:22 -0400 Subject: [PATCH 35/55] the spacessss --- keyboard/planck/Makefile | 66 +++++++++++++-------- keyboard/planck/keymaps/default/makefile.mk | 3 +- quantum/quantum.mk | 8 +-- tmk_core/common.mk | 26 ++++---- tmk_core/protocol/lufa.mk | 4 +- 5 files changed, 60 insertions(+), 47 deletions(-) diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 693e9c8a..8d4e7787 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -38,31 +38,9 @@ # To rebuild project do "make clean" then "make all". #---------------------------------------------------------------------------- -# Build Options -# change to "no" to disable the options, or define them in the makefile.mk in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 = no # USB Nkey Rollover - if this doesn't work, see here: - # https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - # Target file name (without extension). TARGET = planck - # Directory common source filess exist TOP_DIR = ../.. TMK_DIR = ../../tmk_core @@ -107,10 +85,6 @@ endif SRC := $(KEYMAP_FILE) $(SRC) -ifeq ($(BACKLIGHT_ENABLE), yes) - SRC := backlight.c $(SRC) -endif - CONFIG_H = config.h # MCU name @@ -161,6 +135,46 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # USBaspLoader 2048 OPT_DEFS += -DBOOTLOADER_SIZE=4096 +# Build Options +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # 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 = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifdef KEYMAP + +ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif +endif + +else + +ifneq ("$(wildcard keymaps/default/makefile.mk)","") + include keymaps/default/makefile.mk +endif + +endif + +ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) + SRC := backlight.c $(SRC) +endif + # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/planck/keymaps/default/makefile.mk b/keyboard/planck/keymaps/default/makefile.mk index e1c5bd2e..8cbec4a1 100644 --- a/keyboard/planck/keymaps/default/makefile.mk +++ b/keyboard/planck/keymaps/default/makefile.mk @@ -1,2 +1 @@ -AUDIO_ENABLE = yes -BACKLIGHT_ENABLE = yes \ No newline at end of file +AUDIO_ENABLE = yes \ No newline at end of file diff --git a/quantum/quantum.mk b/quantum/quantum.mk index 3069f582..17bb5017 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -23,19 +23,19 @@ ifndef CUSTOM_MATRIX SRC += $(QUANTUM_DIR)/matrix.c endif -ifeq ($(MIDI_ENABLE), yes) +ifeq ($(strip $(MIDI_ENABLE)), yes) SRC += $(QUANTUM_DIR)/keymap_midi.c endif -ifeq ($(AUDIO_ENABLE), yes) +ifeq ($(strip $(AUDIO_ENABLE)), yes) SRC += $(QUANTUM_DIR)/audio.c endif -ifeq ($(UNICODE_ENABLE), yes) +ifeq ($(strip $(UNICODE_ENABLE)), yes) SRC += $(QUANTUM_DIR)/keymap_unicode.c endif -ifeq ($(RGBLIGHT_ENABLE), yes) +ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) SRC += $(QUANTUM_DIR)/light_ws2812.c SRC += $(QUANTUM_DIR)/rgblight.c OPT_DEFS += -DRGBLIGHT_ENABLE diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 030767cc..f8006c67 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -17,67 +17,67 @@ SRC += $(COMMON_DIR)/host.c \ # Option modules -ifeq ($(BOOTMAGIC_ENABLE), yes) +ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes) SRC += $(COMMON_DIR)/bootmagic.c SRC += $(COMMON_DIR)/avr/eeconfig.c OPT_DEFS += -DBOOTMAGIC_ENABLE endif -ifeq ($(MOUSEKEY_ENABLE), yes) +ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) SRC += $(COMMON_DIR)/mousekey.c OPT_DEFS += -DMOUSEKEY_ENABLE OPT_DEFS += -DMOUSE_ENABLE endif -ifeq ($(EXTRAKEY_ENABLE), yes) +ifeq ($(strip $(EXTRAKEY_ENABLE)), yes) OPT_DEFS += -DEXTRAKEY_ENABLE endif -ifeq ($(CONSOLE_ENABLE), yes) +ifeq ($(strip $(CONSOLE_ENABLE)), yes) OPT_DEFS += -DCONSOLE_ENABLE else OPT_DEFS += -DNO_PRINT OPT_DEFS += -DNO_DEBUG endif -ifeq ($(COMMAND_ENABLE), yes) +ifeq ($(strip $(COMMAND_ENABLE)), yes) SRC += $(COMMON_DIR)/command.c OPT_DEFS += -DCOMMAND_ENABLE endif -ifeq ($(NKRO_ENABLE), yes) +ifeq ($(strip $(NKRO_ENABLE)), yes) OPT_DEFS += -DNKRO_ENABLE endif -ifeq ($(MIDI_ENABLE), yes) +ifeq ($(strip $(MIDI_ENABLE)), yes) OPT_DEFS += -DMIDI_ENABLE endif -ifeq ($(AUDIO_ENABLE), yes) +ifeq ($(strip $(AUDIO_ENABLE)), yes) OPT_DEFS += -DAUDIO_ENABLE endif -ifeq ($(USB_6KRO_ENABLE), yes) +ifeq ($(strip $(USB_6KRO_ENABLE)), yes) OPT_DEFS += -DUSB_6KRO_ENABLE endif -ifeq ($(SLEEP_LED_ENABLE), yes) +ifeq ($(strip $(SLEEP_LED_ENABLE)), yes) SRC += $(COMMON_DIR)/sleep_led.c OPT_DEFS += -DSLEEP_LED_ENABLE OPT_DEFS += -DNO_SUSPEND_POWER_DOWN endif -ifeq ($(BACKLIGHT_ENABLE), yes) +ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) SRC += $(COMMON_DIR)/backlight.c SRC += $(COMMON_DIR)/avr/eeconfig.c OPT_DEFS += -DBACKLIGHT_ENABLE endif -ifeq ($(BLUETOOTH_ENABLE), yes) +ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) OPT_DEFS += -DBLUETOOTH_ENABLE endif -ifeq ($(KEYMAP_SECTION_ENABLE), yes) +ifeq ($(strip $(KEYMAP_SECTION_ENABLE)), yes) OPT_DEFS += -DKEYMAP_SECTION_ENABLE ifeq ($(strip $(MCU)),atmega32u2) diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk index f3209c22..9ac6298f 100644 --- a/tmk_core/protocol/lufa.mk +++ b/tmk_core/protocol/lufa.mk @@ -17,7 +17,7 @@ LUFA_SRC = $(LUFA_DIR)/lufa.c \ $(LUFA_DIR)/descriptor.c \ $(LUFA_SRC_USB) -ifeq ($(MIDI_ENABLE), yes) +ifeq ($(strip $(MIDI_ENABLE)), yes) LUFA_SRC += $(LUFA_DIR)/midi/midi.c \ $(LUFA_DIR)/midi/midi_device.c \ $(LUFA_DIR)/midi/bytequeue/bytequeue.c \ @@ -25,7 +25,7 @@ ifeq ($(MIDI_ENABLE), yes) $(LUFA_SRC_USBCLASS) endif -ifeq ($(BLUETOOTH_ENABLE), yes) +ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ $(TMK_DIR)/protocol/serial_uart.c endif From ee2ee7f4f049dda385a9db7dddd8e7e91681315b Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 15 Apr 2016 13:44:07 -0400 Subject: [PATCH 36/55] audio note length fixes --- keyboard/planck/keymaps/default/keymap.c | 46 ++++++++++++------------ quantum/audio.c | 7 +++- quantum/keymap_common.c | 10 +++--- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 151a6b4f..dee2840f 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -147,30 +147,30 @@ const uint16_t PROGMEM fn_actions[] = { #ifdef AUDIO_ENABLE float tone_qw[][2] = { - {440.0*pow(2.0,(67)/12.0), 400}, - {440.0*pow(2.0,(60)/12.0), 400}, - {0, 800}, - {440.0*pow(2.0,(67)/12.0), 1600} + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16} }; float tone_cm[][2] = { - {440.0*pow(2.0,(67)/12.0), 400}, - {440.0*pow(2.0,(60)/12.0), 400}, - {0, 800}, - {440.0*pow(2.0,(67)/12.0), 1000}, - {0, 200}, - {440.0*pow(2.0,(67)/12.0), 1000} + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16}, + {0, 4}, + {440.0*pow(2.0,(71)/12.0), 16} }; float tone_dv[][2] = { - {440.0*pow(2.0,(67)/12.0), 400}, - {440.0*pow(2.0,(60)/12.0), 400}, - {0, 800}, - {440.0*pow(2.0,(67)/12.0), 800}, - {0, 200}, - {440.0*pow(2.0,(67)/12.0), 800}, - {0, 200}, - {440.0*pow(2.0,(67)/12.0), 800} + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16}, + {0, 4}, + {440.0*pow(2.0,(69)/12.0), 16}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16} }; #endif @@ -246,11 +246,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE float start_up[][2] = { - {440.0*pow(2.0,(67)/12.0), 650}, - {440.0*pow(2.0,(64)/12.0), 450}, - {440.0*pow(2.0,(55)/12.0), 450}, - {440.0*pow(2.0,(60)/12.0), 450}, - {440.0*pow(2.0,(64)/12.0), 1000} + {440.0*pow(2.0,(67)/12.0), 12}, + {440.0*pow(2.0,(64)/12.0), 8}, + {440.0*pow(2.0,(55)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(64)/12.0), 20} }; #endif diff --git a/quantum/audio.c b/quantum/audio.c index f29d941d..50e5505f 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -255,7 +255,12 @@ ISR(TIMER3_COMPA_vect) { note_position++; - if (note_position >= note_length) { + bool end_of_note = false; + if (ICR3 > 0) + end_of_note = (note_position >= (note_length / ICR3 * 0xFFFF)); + else + end_of_note = (note_position >= (note_length * 0x7FF)); + if (end_of_note) { current_note++; if (current_note >= notes_length) { if (notes_repeat) { diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index ae6cddb3..e3030a88 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -33,11 +33,9 @@ along with this program. If not, see . #include "audio.h" float goodbye[][2] = { - {440.0*pow(2.0,(67)/12.0), 400}, - {0, 50}, - {440.0*pow(2.0,(60)/12.0), 400}, - {0, 50}, - {440.0*pow(2.0,(55)/12.0), 600}, + {440.0*pow(2.0,(67)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(55)/12.0), 12}, }; #endif @@ -90,7 +88,7 @@ action_t action_for_key(uint8_t layer, keypos_t key) action_t action; clear_keyboard(); #ifdef AUDIO_ENABLE - play_notes(&goodbye, 5, false); + play_notes(&goodbye, 3, false); #endif _delay_ms(250); #ifdef ATREUS_ASTAR From 8f85117aa9e060371177e3b523bc89dc7aad19e8 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Fri, 15 Apr 2016 14:42:50 -0500 Subject: [PATCH 37/55] Added Audio to my Atomic --- keyboard/atomic/Makefile | 67 +++--- keyboard/atomic/keymaps/pvc/config.h | 157 +++++++++++++ .../keymaps/pvc/{pvc_atomic.c => keymap.c} | 207 ++++++++---------- keyboard/atomic/keymaps/pvc/makefile.mk | 6 +- keyboard/planck/Makefile | 31 +-- quantum/audio.h | 4 +- 6 files changed, 297 insertions(+), 175 deletions(-) create mode 100644 keyboard/atomic/keymaps/pvc/config.h rename keyboard/atomic/keymaps/pvc/{pvc_atomic.c => keymap.c} (59%) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 364efa3f..1203cf6a 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -38,31 +38,9 @@ # To rebuild project do "make clean" then "make all". #---------------------------------------------------------------------------- -# Build Options -# change to "no" to disable the options, or define them in the makefile.mk in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 = no # USB Nkey Rollover - if this doesn't work, see here: - # https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - # Target file name (without extension). TARGET = atomic - # Directory common source filess exist TOP_DIR = ../.. TMK_DIR = ../../tmk_core @@ -73,6 +51,8 @@ TARGET_DIR = . # # project specific files SRC = atomic.c +CONFIG_H = config.h + ifdef keymap KEYMAP = $(keymap) endif @@ -88,7 +68,7 @@ ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") endif else $(error Keymap file does not exist) -endif +endif endif else @@ -107,8 +87,6 @@ endif SRC := $(KEYMAP_FILE) $(SRC) -CONFIG_H = config.h - # MCU name #MCU = at90usb1287 MCU = atmega32u4 @@ -126,7 +104,6 @@ MCU = atmega32u4 # software delays. F_CPU = 16000000 - # # LUFA specific # @@ -158,11 +135,45 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # USBaspLoader 2048 OPT_DEFS += -DBOOTLOADER_SIZE=4096 +# Build Options +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # 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 = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifdef KEYMAP + +ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif +endif + +else + +ifneq ("$(wildcard keymaps/default/makefile.mk)","") + include keymaps/default/makefile.mk +endif -ifeq ($(BACKLIGHT_ENABLE), yes) - SRC += backlight.c endif +ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) + SRC := backlight.c $(SRC) +endif # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/atomic/keymaps/pvc/config.h b/keyboard/atomic/keymaps/pvc/config.h new file mode 100644 index 00000000..8449fa06 --- /dev/null +++ b/keyboard/atomic/keymaps/pvc/config.h @@ -0,0 +1,157 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ortholinear Keyboards +#define PRODUCT The Atomic Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } +#define ROWS (int []){ D0, D5, B5, B6, B3 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* 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 + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +#define MAGIC_KEY_BOOTLOADER B +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboard/atomic/keymaps/pvc/pvc_atomic.c b/keyboard/atomic/keymaps/pvc/keymap.c similarity index 59% rename from keyboard/atomic/keymaps/pvc/pvc_atomic.c rename to keyboard/atomic/keymaps/pvc/keymap.c index 3ddd3e32..627f57ff 100644 --- a/keyboard/atomic/keymaps/pvc/pvc_atomic.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -1,12 +1,19 @@ #include "atomic.h" #include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif #define _QW 0 #define _LW 1 #define _RS 2 #define _FN 3 -#define _F1 4 -#define _F2 5 + +#define M_QW 0 +#define M_LW 1 +#define M_RS 2 +#define M_FN 3 + #define _______ KC_TRNS #define ___T___ KC_TRNS @@ -32,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { 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_DEL }, { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, XXXXXXX, KC_PGUP }, { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, M(_FN), KC_LALT, M(_RS), KC_SPC, XXXXXXX, M(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + { KC_LCTL, KC_LGUI, M(M_FN), KC_LALT, M(M_RS), KC_SPC, XXXXXXX, M(M_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, }, [_LW] = { /* 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, ___T___, ___T___ }, @@ -55,29 +62,50 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, }, - [_F1] = { /* 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, ___T___, ___T___ }, - { 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, KC_PSCR }, - { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, - { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, - }, - [_F2] = { /* 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, ___T___, ___T___ }, - { 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, KC_PSCR }, - { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, - { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, - }, }; #define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) #define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer))) + +#ifdef AUDIO_ENABLE +float tone_lw[][2] = { + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16} +}; + +float tone_rs[][2] = { + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16}, + {0, 4}, + {440.0*pow(2.0,(71)/12.0), 16} +}; + +float tone_fn[][2] = { + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16}, + {0, 4}, + {440.0*pow(2.0,(69)/12.0), 16}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16} +}; +#endif + + void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { + #ifdef AUDIO_ENABLE + println("PlayNotes FN"); + play_notes(&tone_fn, 8, false); + #endif layer_on(layer3); } else @@ -114,37 +142,6 @@ void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t l } } -/* ignore me -void change_quad_layer(uint8_t focus_layer, bool desired_focus_layer_state, uint8_t pair_layer, uint8_t layer3, uint8_t layer4) -{ - - // If desired focus layer state == 1 and current focus layer state == 1 - if ((desired_focus_layer_state) && IS_LAYER_ON(layer1)) - { - // Do Nothing - } - // If desired focus layer state == 0 and current focus layer state == 1 - else if ((desired_focus_layer_state) && IS_LAYER_ON(layer1)) - { - // If - layer_off(layer3); - layer_off(layer4); - } - } - else - { - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) - { - layer_on(layer4); - } - else - { - layer_off(layer3); - layer_off(layer4); - } - } -} -*/ const uint16_t PROGMEM fn_actions[] = { }; @@ -152,70 +149,54 @@ const uint16_t PROGMEM fn_actions[] = { const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - - // MACRODOWN only works in this function - switch(id) - { - case _FN: - if (record->event.pressed) { - print("FN_DN\n"); - print_val_bin32(layer_state); - layer_on(_FN); - print_val_bin32(layer_state); - } else { - print("FN_UP\n"); - print_val_bin32(layer_state); - layer_off(_FN); - print_val_bin32(layer_state); - } - break; - - case _RS: - if (record->event.pressed) { - print("RS_DN\n"); - print_val_bin32(layer_state); - layer_on(_RS); - //tri_layer++; - print_val_bin32(layer_state); - //update_tri_layer(_RS, _LW, _FN); - update_quad_layer(_RS, _LW, _F1, _F2, 0); - print_val_bin32(layer_state); - } else { - print("RS_UP\n"); - print_val_bin32(layer_state); - layer_off(_RS); - //tri_layer--; - print_val_bin32(layer_state); - //update_tri_layer(_RS, _LW, _FN); - update_quad_layer(_RS, _LW, _F1, _F2, 0); - print_val_bin32(layer_state); - } - break; - - case _LW: - if (record->event.pressed) { - print("LW_DN\n"); - print_val_bin32(layer_state); - layer_on(_LW); - //tri_layer++; - print_val_bin32(layer_state); - //update_tri_layer(_RS, _LW, _FN); - update_quad_layer(_RS, _LW, _F1, _F2, 1); - print_val_bin32(layer_state); - } else { - print("LW_UP\n"); - print_val_bin32(layer_state); - layer_off(_LW); - //tri_layer--; - print_val_bin32(layer_state); - //update_tri_layer(_RS, _LW, _FN); - update_quad_layer(_RS, _LW, _F1, _F2, 1); - print_val_bin32(layer_state); - } - break; - + // MACRODOWN only works in this function + switch(id) { + case M_LW: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + println("PlayNotes LW"); + play_notes(&tone_lw, 4, false); + #endif + layer_on(_LW); + update_tri_layer(_LW, _RS, _FN); + } else { + layer_off(_LW); + update_tri_layer(_LW, _RS, _FN); + } + break; + case M_RS: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + println("PlayNotes RS"); + play_notes(&tone_rs, 6, false); + #endif + layer_on(_RS); + update_tri_layer(_LW, _RS, _FN); + } else { + layer_off(_RS); + update_tri_layer(_LW, _RS, _FN); + } + break; default: - break; - } - return MACRO_NONE; + break; + } + return MACRO_NONE; +}; + +#ifdef AUDIO_ENABLE +float start_up[][2] = { + {440.0*pow(2.0,(67)/12.0), 12}, + {440.0*pow(2.0,(64)/12.0), 8}, + {440.0*pow(2.0,(55)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(64)/12.0), 20} }; +#endif + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + init_notes(); + play_notes(&start_up, 5, false); + println("Matrix Init"); + #endif +} diff --git a/keyboard/atomic/keymaps/pvc/makefile.mk b/keyboard/atomic/keymaps/pvc/makefile.mk index ff0a9c33..c41102f5 100644 --- a/keyboard/atomic/keymaps/pvc/makefile.mk +++ b/keyboard/atomic/keymaps/pvc/makefile.mk @@ -1,16 +1,18 @@ BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +CONFIG_H = keymaps/$(KEYMAP)/config.h \ No newline at end of file diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index c8517e75..83b8303b 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -157,39 +157,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifdef KEYMAP -<<<<<<< HEAD -<<<<<<< HEAD -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 -# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = yes # MIDI controls -# AUDIO_ENABLE = yes # Audio output on port C6 -# UNICODE_ENABLE = yes # Unicode -# BLUETOOTH_ENABLE = ye # Enable Bluetooth with the Adafruit EZ-Key HID -# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend - - -ifdef BACKLIGHT_ENABLE -======= -ifeq ($(BACKLIGHT_ENABLE), yes) ->>>>>>> master - SRC += backlight.c -======= ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") include keymaps/$(KEYMAP)/makefile.mk endif ->>>>>>> remotes/jackhumbert/new_defaults endif else @@ -212,4 +183,4 @@ VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) VPATH += $(TMK_DIR) -include $(TOP_DIR)/quantum/quantum.mk +include $(TOP_DIR)/quantum/quantum.mk \ No newline at end of file diff --git a/quantum/audio.h b/quantum/audio.h index 99203cea..31f9a357 100644 --- a/quantum/audio.h +++ b/quantum/audio.h @@ -6,6 +6,6 @@ void play_sample(uint8_t * s, uint16_t l, bool r); void play_note(double freq, int vol); void stop_note(double freq); -void stop_all_notes(); -void init_notes(); +void stop_all_notes(void); +void init_notes(void); void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat); \ No newline at end of file From 2aa51e4416b65317b16660c0676696974b2dcfc5 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Fri, 15 Apr 2016 16:32:44 -0500 Subject: [PATCH 38/55] Tweaking PVC atomic layout --- keyboard/atomic/Makefile | 30 ++++++++++++------------- keyboard/atomic/keymaps/pvc/keymap.c | 13 +++++++++-- keyboard/atomic/keymaps/pvc/makefile.mk | 27 +++++++++++----------- 3 files changed, 39 insertions(+), 31 deletions(-) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 1203cf6a..3f066aeb 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -51,8 +51,6 @@ TARGET_DIR = . # # project specific files SRC = atomic.c -CONFIG_H = config.h - ifdef keymap KEYMAP = $(keymap) endif @@ -87,6 +85,8 @@ endif SRC := $(KEYMAP_FILE) $(SRC) +CONFIG_H = config.h + # MCU name #MCU = at90usb1287 MCU = atmega32u4 @@ -139,21 +139,21 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # change to "no" to disable the options, or define them in the makefile.mk in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # 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 = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifdef KEYMAP diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 627f57ff..7bfd910a 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -1,13 +1,15 @@ #include "atomic.h" #include "action_layer.h" + #ifdef AUDIO_ENABLE - #include "audio.h" +#include "audio.h" #endif #define _QW 0 #define _LW 1 #define _RS 2 -#define _FN 3 +#define _AD 3 +#define _FN 4 #define M_QW 0 #define M_LW 1 @@ -62,6 +64,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, }, + [_ADJ] = { /* ADJUST */ + { 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, ___T___, ___T___ }, + { 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, KC_PSCR }, + { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + }, }; #define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) diff --git a/keyboard/atomic/keymaps/pvc/makefile.mk b/keyboard/atomic/keymaps/pvc/makefile.mk index c41102f5..d4699665 100644 --- a/keyboard/atomic/keymaps/pvc/makefile.mk +++ b/keyboard/atomic/keymaps/pvc/makefile.mk @@ -1,18 +1,17 @@ -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # 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 # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend CONFIG_H = keymaps/$(KEYMAP)/config.h \ No newline at end of file From 549b797ad1ebb30ebaa19af2cf3b7cc2a2c055bc Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Sat, 16 Apr 2016 01:36:18 +0200 Subject: [PATCH 39/55] My Attempt at adapting the Bone2 layout with Neo2 navigation cluster & number block to the Planck. Very much a WIP, will most likely start tweaking further once my Planck kit has dropped --- keyboard/planck/keymaps/bone2planck.c | 112 ++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 keyboard/planck/keymaps/bone2planck.c diff --git a/keyboard/planck/keymaps/bone2planck.c b/keyboard/planck/keymaps/bone2planck.c new file mode 100644 index 00000000..a99e7719 --- /dev/null +++ b/keyboard/planck/keymaps/bone2planck.c @@ -0,0 +1,112 @@ + +#include "planck.h" +#ifdef BACKLIGHT_ENABLE +#include "backlight.h" +#endif +#include "..\..\quantum\keymap_extras\keymap_german.h" + +/* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout. + It has Umlauts and "ß" as it is optimized for a mix of German & English. + My favourite features are the placement of the special characters often used for programming right on the home row + and the number & navigation block combo, so you never have to move your hands from their home position. + + Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Bone2 + * ,-----------------------------------------------------------------------------------. + * | Q | J | D | U | A | X | P | H | L | M | W | ẞ | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | M1 | C | T | I | E | O | B | N | R | S | G | M1 | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter | + * `-----------------------------------------------------------------------------------' + */ + [0] = { + { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS }, + { MO(1), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, MO(1) }, + { DE_S, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, DE_S }, + { KC_LCTL, KC_LGUI, KC_LALT, MO(3), MO(2), KC_SPC, KC_SPC, MO(2), MO(3), KC_ESC, KC_TAB, KC_ENT } + }, + + /* M1 Special Characters + * ,-----------------------------------------------------------------------------------. + * | ° | @ | _ | [ | ] | ^ | ! | < | > | = | & | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | M1 | \ | / | { | } | * | ? | ( | ) | - | : | M1 | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | # | $ | | | ~ | € | + | % | " | ' | ; | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter | + * `-----------------------------------------------------------------------------------' + */ + [1] = { + { DE_RING, DE_AT, DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LESS, DE_MORE, DE_EQL, DE_AMPR, KC_NO }, + { KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QST, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, KC_TRNS }, + { KC_NO , DE_HASH, DE_DLR, DE_PIPE, DE_TILD, DE_EURO, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_NO }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS } + }, + + /* Navigation & Number Blocks + * ,-----------------------------------------------------------------------------------. + * | | PgUp | Bksp | Up | DEL | PgDn | | 7 | 8 | 9 | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | Home | Lft | Down | Right| End | . | 4 | 5 | 6 | , | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter | + * `-----------------------------------------------------------------------------------' + */ + [2] = { + { KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_NO }, + { KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_NO }, + { DE_S, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, KC_0, DE_1, DE_2, DE_3, DE_SCLN, DE_S }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS } + }, + + /* Function & Media Keys + * ,-----------------------------------------------------------------------------------. + * | | | Print|Scroll|Pause | | | F7 | F8 | F9 | F12 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | Mute | Vol- | Vol+ | | ³ | F4 | F5 | F6 | F11 | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | M3 | | Space | | M3 | Esc | Tab |Enter | + * `-----------------------------------------------------------------------------------' + */ + [3] = { + { KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F12, KC_NO }, + { KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO }, + { KC_TRNS, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, KC_TRNS}, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} + } +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch (id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); +#ifdef BACKLIGHT_ENABLE + backlight_step(); +#endif + } + else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; From 0faa18eab996c2cfcc5da0b60b702f52335c5854 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 15 Apr 2016 23:38:21 -0400 Subject: [PATCH 40/55] audio enable stored in eeprom --- keyboard/planck/keymaps/default/keymap.c | 7 +++- keyboard/preonic/Makefile | 4 +- keyboard/preonic/keymaps/default/keymap.c | 12 +++--- quantum/audio.c | 48 ++++++++++++++++++++++- quantum/audio.h | 14 ++++++- tmk_core/common/avr/eeconfig.c | 8 ++++ tmk_core/common/eeconfig.h | 6 +++ 7 files changed, 89 insertions(+), 10 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 56092d04..3f34ba41 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -135,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_AD] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, _______, _______, _______, _______, M(M_QW), M(M_CM), M(M_DV), _______, _______}, + {_______, _______, _______, _______, M(6), _______, _______, M(M_QW), M(M_CM), M(M_DV), _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -231,6 +231,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) unregister_code(KC_RSFT); } break; + case 6: + if (record->event.pressed) { + audio_toggle(); + } + break; } return MACRO_NONE; }; diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index 664aff73..e48052c8 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -139,8 +139,8 @@ COMMAND_ENABLE = yes # Commands for debug and configuration # SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = YES # MIDI controls -AUDIO_ENABLE = YES # Audio output on port C6 +MIDI_ENABLE = yes # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 # UNICODE_ENABLE = YES # Unicode # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time. diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 78467078..3da69c21 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -59,11 +59,11 @@ const uint16_t PROGMEM fn_actions[] = { }; float start_up[][2] = { - {440.0*pow(2.0,(67)/12.0), 600}, - {440.0*pow(2.0,(64)/12.0), 400}, - {440.0*pow(2.0,(55)/12.0), 400}, - {440.0*pow(2.0,(60)/12.0), 400}, - {440.0*pow(2.0,(64)/12.0), 1000}, + {440.0*pow(2.0,(67)/12.0), 4}, + {440.0*pow(2.0,(64)/12.0), 8}, + {440.0*pow(2.0,(55)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(64)/12.0), 10}, }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -76,8 +76,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef BACKLIGHT_ENABLE backlight_step(); #endif + audio_toggle(); } else { unregister_code(KC_RSFT); + play_notes(&start_up, 5, false); } break; } diff --git a/quantum/audio.c b/quantum/audio.c index 50e5505f..73985479 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -8,6 +8,8 @@ #include "audio.h" #include "keymap_common.h" +#include "eeconfig.h" + #define PI 3.14159265 // #define PWM_AUDIO @@ -57,6 +59,25 @@ uint8_t notes_length; bool notes_repeat; uint8_t current_note = 0; +audio_config_t audio_config; + + +void audio_toggle(void) { + audio_config.enable ^= 1; + eeconfig_write_audio(audio_config.raw); +} + +void audio_on(void) { + audio_config.enable = 1; + eeconfig_write_audio(audio_config.raw); +} + +void audio_off(void) { + audio_config.enable = 0; + eeconfig_write_audio(audio_config.raw); +} + + void stop_all_notes() { voices = 0; #ifdef PWM_AUDIO @@ -129,6 +150,12 @@ void stop_note(double freq) { void init_notes() { + /* check signature */ + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + audio_config.raw = eeconfig_read_audio(); + #ifdef PWM_AUDIO PLLFRQ = _BV(PDIV2); PLLCSR = _BV(PLLE); @@ -160,7 +187,6 @@ void init_notes() { ISR(TIMER3_COMPA_vect) { - if (note) { #ifdef PWM_AUDIO if (voices == 1) { @@ -288,9 +314,16 @@ ISR(TIMER3_COMPA_vect) { } + if (!audio_config.enable) { + notes = false; + note = false; + } } void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat) { + +if (audio_config.enable) { + if (note) stop_all_notes(); notes = true; @@ -319,7 +352,12 @@ void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat) { #endif } +} + void play_sample(uint8_t * s, uint16_t l, bool r) { + +if (audio_config.enable) { + stop_all_notes(); place_int = 0; sample = s; @@ -330,9 +368,15 @@ void play_sample(uint8_t * s, uint16_t l, bool r) { TIMSK3 |= _BV(OCIE3A); #else #endif + +} + } void play_note(double freq, int vol) { + +if (audio_config.enable) { + if (notes) stop_all_notes(); note = true; @@ -367,4 +411,6 @@ void play_note(double freq, int vol) { TCCR3A |= _BV(COM3A1); #endif +} + } \ No newline at end of file diff --git a/quantum/audio.h b/quantum/audio.h index 99203cea..58270015 100644 --- a/quantum/audio.h +++ b/quantum/audio.h @@ -3,9 +3,21 @@ #include #include +typedef union { + uint8_t raw; + struct { + bool enable :1; + uint8_t level :7; + }; +} audio_config_t; + +void audio_toggle(void); +void audio_on(void); +void audio_off(void); + void play_sample(uint8_t * s, uint16_t l, bool r); void play_note(double freq, int vol); void stop_note(double freq); void stop_all_notes(); void init_notes(); -void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat); \ No newline at end of file +void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat); diff --git a/tmk_core/common/avr/eeconfig.c b/tmk_core/common/avr/eeconfig.c index 5bd47dc6..d0c3f4f5 100644 --- a/tmk_core/common/avr/eeconfig.c +++ b/tmk_core/common/avr/eeconfig.c @@ -13,6 +13,9 @@ void eeconfig_init(void) #ifdef BACKLIGHT_ENABLE eeprom_write_byte(EECONFIG_BACKLIGHT, 0); #endif +#ifdef AUDIO_ENABLE + eeprom_write_byte(EECONFIG_AUDIO, 0); +#endif } void eeconfig_enable(void) @@ -43,3 +46,8 @@ void eeconfig_write_keymap(uint8_t val) { eeprom_write_byte(EECONFIG_KEYMAP, val uint8_t eeconfig_read_backlight(void) { return eeprom_read_byte(EECONFIG_BACKLIGHT); } void eeconfig_write_backlight(uint8_t val) { eeprom_write_byte(EECONFIG_BACKLIGHT, val); } #endif + +#ifdef AUDIO_ENABLE +uint8_t eeconfig_read_audio(void) { return eeprom_read_byte(EECONFIG_AUDIO); } +void eeconfig_write_audio(uint8_t val) { eeprom_write_byte(EECONFIG_AUDIO, val); } +#endif \ No newline at end of file diff --git a/tmk_core/common/eeconfig.h b/tmk_core/common/eeconfig.h index 3cd1a174..ddefca13 100644 --- a/tmk_core/common/eeconfig.h +++ b/tmk_core/common/eeconfig.h @@ -31,6 +31,7 @@ along with this program. If not, see . #define EECONFIG_KEYMAP (uint8_t *)4 #define EECONFIG_MOUSEKEY_ACCEL (uint8_t *)5 #define EECONFIG_BACKLIGHT (uint8_t *)6 +#define EECONFIG_AUDIO (uint8_t *)7 /* debug bit */ @@ -72,4 +73,9 @@ uint8_t eeconfig_read_backlight(void); void eeconfig_write_backlight(uint8_t val); #endif +#ifdef AUDIO_ENABLE +uint8_t eeconfig_read_audio(void); +void eeconfig_write_audio(uint8_t val); +#endif + #endif From 9d4bfc1bcf9a93b25ce4f7c32d8f3db12c85c23b Mon Sep 17 00:00:00 2001 From: IBNobody Date: Fri, 15 Apr 2016 22:40:07 -0500 Subject: [PATCH 41/55] Corrected layer macros --- keyboard/atomic/keymaps/pvc/keymap.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 7bfd910a..7abd7f4f 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -64,20 +64,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, }, - [_ADJ] = { /* ADJUST */ - { 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, ___T___, ___T___ }, - { 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, KC_PSCR }, - { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, - { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + [_AD] = { /* ADJUST */ + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, }, }; -#define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) -#define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer))) - +#define IS_LAYER_ON(layer) (layer_state & (1UL << (layer))) +#define IS_LAYER_OFF(layer) (!IS_LAYER_ON(layer)) #ifdef AUDIO_ENABLE + + + + float tone_lw[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, From c294636c666a6c4a9c170a9a7f62607d48081b3c Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 15 Apr 2016 23:46:35 -0400 Subject: [PATCH 42/55] audio on by default --- tmk_core/common/avr/eeconfig.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/common/avr/eeconfig.c b/tmk_core/common/avr/eeconfig.c index d0c3f4f5..25bb9e84 100644 --- a/tmk_core/common/avr/eeconfig.c +++ b/tmk_core/common/avr/eeconfig.c @@ -14,7 +14,7 @@ void eeconfig_init(void) eeprom_write_byte(EECONFIG_BACKLIGHT, 0); #endif #ifdef AUDIO_ENABLE - eeprom_write_byte(EECONFIG_AUDIO, 0); + eeprom_write_byte(EECONFIG_AUDIO, 0xFF); // On by default #endif } From 0b0ec82427aff54481103559066213056b6d7598 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 00:01:22 -0400 Subject: [PATCH 43/55] eeprom reset tool --- quantum/tools/README.md | 6 ++++++ quantum/tools/eeprom_reset.hex | 9 +++++++++ 2 files changed, 15 insertions(+) create mode 100644 quantum/tools/README.md create mode 100644 quantum/tools/eeprom_reset.hex diff --git a/quantum/tools/README.md b/quantum/tools/README.md new file mode 100644 index 00000000..07021442 --- /dev/null +++ b/quantum/tools/README.md @@ -0,0 +1,6 @@ +`eeprom_reset.hex` is to reset the eeprom on the Atmega32u4, like this: + + dfu-programmer atmega32u4 erase + dfu-programmer atmega32u4 flash --eeprom eeprom-reset.bin + + You'll need to reflash afterwards, because DFU requires the flash to be erased before messing with the eeprom. \ No newline at end of file diff --git a/quantum/tools/eeprom_reset.hex b/quantum/tools/eeprom_reset.hex new file mode 100644 index 00000000..a8a75389 --- /dev/null +++ b/quantum/tools/eeprom_reset.hex @@ -0,0 +1,9 @@ +:10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 +:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +:10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 +:10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +:10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 +:00000001FF From d81ef5b7eb888ae2878e60d548854413ee3023c6 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 01:19:37 -0400 Subject: [PATCH 44/55] new defaults for planck and preonic --- keyboard/planck/keymaps/default/keymap.c | 74 +++--- keyboard/preonic/Makefile | 55 ++-- keyboard/preonic/keymaps/default/README.md | 35 +-- keyboard/preonic/keymaps/default/keymap.c | 260 ++++++++++++++++--- keyboard/preonic/keymaps/default/makefile.mk | 1 + 5 files changed, 308 insertions(+), 117 deletions(-) create mode 100644 keyboard/preonic/keymaps/default/makefile.mk diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 3f34ba41..ede08ad7 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -19,12 +19,16 @@ #define _AD 5 // Macro name shortcuts -#define M_QW 0 -#define M_CM 1 -#define M_DV 2 -#define M_LW 3 -#define M_RS 4 +#define QWERTY M(_QW) +#define COLEMAK M(_CM) +#define DVORAK M(_DV) +#define LOWER M(_LW) +#define RAISE M(_RS) #define M_BL 5 +#ifdef AUDIO_ENABLE + #define AUD_OFF M(6) + #define AUD_ON M(7) +#endif // Fillers to make layering more clear #define _______ KC_TRNS @@ -47,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Colemak @@ -65,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Dvorak @@ -83,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, - {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Lower @@ -126,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | | Reset| | | | | | | | | | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | | | | | |Qwerty|Colemk|Dvorak| | | + * | | | |Aud on|Audoff| | |Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | | | | | | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -135,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_AD] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, _______, M(6), _______, _______, M(M_QW), M(M_CM), M(M_DV), _______, _______}, + {_______, _______, _______, AUD_ON, AUD_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -146,6 +150,14 @@ const uint16_t PROGMEM fn_actions[] = { }; #ifdef AUDIO_ENABLE +float start_up[][2] = { + {440.0*pow(2.0,(67)/12.0), 12}, + {440.0*pow(2.0,(64)/12.0), 8}, + {440.0*pow(2.0,(55)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(64)/12.0), 20} +}; + float tone_qw[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, @@ -157,20 +169,20 @@ float tone_cm[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16}, + {440.0*pow(2.0,(67)/12.0), 12}, {0, 4}, - {440.0*pow(2.0,(71)/12.0), 16} + {440.0*pow(2.0,(71)/12.0), 12} }; float tone_dv[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16}, + {440.0*pow(2.0,(67)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(69)/12.0), 16}, + {440.0*pow(2.0,(69)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16} + {440.0*pow(2.0,(67)/12.0), 8} }; #endif @@ -179,7 +191,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { - case M_QW: + case _QW: if (record->event.pressed) { #ifdef AUDIO_ENABLE play_notes(&tone_qw, 4, false); @@ -187,7 +199,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) default_layer_set(1UL<<_QW); } break; - case M_CM: + case _CM: if (record->event.pressed) { #ifdef AUDIO_ENABLE play_notes(&tone_cm, 6, false); @@ -195,7 +207,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) default_layer_set(1UL<<_CM); } break; - case M_DV: + case _DV: if (record->event.pressed) { #ifdef AUDIO_ENABLE play_notes(&tone_dv, 8, false); @@ -203,7 +215,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) default_layer_set(1UL<<_DV); } break; - case M_LW: + case _LW: if (record->event.pressed) { layer_on(_LW); update_tri_layer(_LW, _RS, _AD); @@ -212,7 +224,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) update_tri_layer(_LW, _RS, _AD); } break; - case M_RS: + case _RS: if (record->event.pressed) { layer_on(_RS); update_tri_layer(_LW, _RS, _AD); @@ -233,23 +245,23 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case 6: if (record->event.pressed) { - audio_toggle(); + #ifdef AUDIO_ENABLE + audio_off(); + #endif + } + break; + case 7: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + audio_on(); + play_notes(&start_up, 5, false); + #endif } break; } return MACRO_NONE; }; -#ifdef AUDIO_ENABLE -float start_up[][2] = { - {440.0*pow(2.0,(67)/12.0), 12}, - {440.0*pow(2.0,(64)/12.0), 8}, - {440.0*pow(2.0,(55)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {440.0*pow(2.0,(64)/12.0), 20} -}; -#endif - void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index e48052c8..eaf9ef92 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -126,27 +126,44 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # 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 = yes # 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 +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # 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 = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = yes # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID -# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time. - -ifdef BACKLIGHT_ENABLE - SRC += backlight.c +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifdef KEYMAP + +ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif +endif + +else + +ifneq ("$(wildcard keymaps/default/makefile.mk)","") + include keymaps/default/makefile.mk +endif + +endif + +ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) + SRC := backlight.c $(SRC) endif diff --git a/keyboard/preonic/keymaps/default/README.md b/keyboard/preonic/keymaps/default/README.md index d2f43bbd..e911968d 100644 --- a/keyboard/preonic/keymaps/default/README.md +++ b/keyboard/preonic/keymaps/default/README.md @@ -1,34 +1 @@ -# The Default Planck Layout - - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = { /* Qwerty */ - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_CM] = { /* Colemak */ - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_DV] = { /* Dvorak */ - {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, - {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, - {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_RS] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} - }, - [_LW] = { /* LOWER */ - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} - } - }; \ No newline at end of file +# The default Preonic layout - largely based on the Planck's \ No newline at end of file diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 3da69c21..c52d8472 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -1,9 +1,7 @@ -// This is the canonical layout file for the Quantum project. If you want to add another keyboard, -// this is the style you want to emulate. - #include "preonic.h" -#ifdef BACKLIGHT_ENABLE - #include "backlight.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" #endif // Each layer gets a name for readability, which is then used in the keymap matrix below. @@ -15,42 +13,150 @@ #define _DV 2 #define _LW 3 #define _RS 4 +#define _AD 5 + +// Macro name shortcuts +#define QWERTY M(_QW) +#define COLEMAK M(_CM) +#define DVORAK M(_DV) +#define LOWER M(_LW) +#define RAISE M(_RS) +#define M_BL 5 +#ifdef AUDIO_ENABLE + #define AUD_OFF M(6) + #define AUD_ON M(7) +#endif + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_QW] = { /* Qwerty */ + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QW] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, -[_CM] = { /* Colemak */ + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_CM] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL}, {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, -[_DV] = { /* Dvorak */ + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DV] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL}, {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, -[_RS] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LW] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, -[_LW] = { /* LOWER */ + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RS] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Audoff|Aud on| | |Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_AD] = { + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AUD_ON, AUD_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } }; @@ -58,28 +164,116 @@ const uint16_t PROGMEM fn_actions[] = { }; +#ifdef AUDIO_ENABLE float start_up[][2] = { - {440.0*pow(2.0,(67)/12.0), 4}, + {440.0*pow(2.0,(55)/12.0), 12}, + {0, 2}, + {440.0*pow(2.0,(67)/12.0), 8}, {440.0*pow(2.0,(64)/12.0), 8}, {440.0*pow(2.0,(55)/12.0), 8}, + {440.0*pow(2.0,(67)/12.0), 12}, + {0, 2}, + {440.0*pow(2.0,(67)/12.0), 12} +}; + +float tone_qw[][2] = { + {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, - {440.0*pow(2.0,(64)/12.0), 10}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16} }; +float tone_cm[][2] = { + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 12}, + {0, 4}, + {440.0*pow(2.0,(71)/12.0), 12} +}; + +float tone_dv[][2] = { + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(69)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 8} +}; +#endif + + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { - case 0: + case _QW: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + play_notes(&tone_qw, 4, false); + #endif + default_layer_set(1UL<<_QW); + } + break; + case _CM: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + play_notes(&tone_cm, 6, false); + #endif + default_layer_set(1UL<<_CM); + } + break; + case _DV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + play_notes(&tone_dv, 8, false); + #endif + default_layer_set(1UL<<_DV); + } + break; + case _LW: + if (record->event.pressed) { + layer_on(_LW); + update_tri_layer(_LW, _RS, _AD); + } else { + layer_off(_LW); + update_tri_layer(_LW, _RS, _AD); + } + break; + case _RS: + if (record->event.pressed) { + layer_on(_RS); + update_tri_layer(_LW, _RS, _AD); + } else { + layer_off(_RS); + update_tri_layer(_LW, _RS, _AD); + } + break; + case M_BL: if (record->event.pressed) { register_code(KC_RSFT); #ifdef BACKLIGHT_ENABLE backlight_step(); #endif - audio_toggle(); } else { unregister_code(KC_RSFT); - play_notes(&start_up, 5, false); + } + break; + case 6: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + audio_off(); + #endif + } + break; + case 7: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + audio_on(); + play_notes(&start_up, 7, false); + #endif } break; } @@ -87,8 +281,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) }; void matrix_init_user(void) { -#ifdef AUDIO_ENABLE + #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 5, false); -#endif + play_notes(&start_up, 7, false); + #endif } diff --git a/keyboard/preonic/keymaps/default/makefile.mk b/keyboard/preonic/keymaps/default/makefile.mk new file mode 100644 index 00000000..628167ff --- /dev/null +++ b/keyboard/preonic/keymaps/default/makefile.mk @@ -0,0 +1 @@ +AUDIO_ENABLE = yes \ No newline at end of file From 142ce47698613bb8fb757f13c29928a572a4d9d9 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 01:23:08 -0400 Subject: [PATCH 45/55] added keymap_extras to path --- quantum/quantum.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/quantum/quantum.mk b/quantum/quantum.mk index 17bb5017..1fe7390e 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -46,6 +46,7 @@ endif # Search Path VPATH += $(TOP_DIR)/$(QUANTUM_DIR) +VPATH += $(TOP_DIR)/$(QUANTUM_DIR)/keymap_extras include $(TMK_DIR)/protocol/lufa.mk From 86169833c597fa5f2b5226e1587c48a6692ec017 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 15:47:17 -0400 Subject: [PATCH 46/55] updates to preonic default, music mode integrated --- keyboard/preonic/keymaps/default/keymap.c | 160 +++++++++++++++------- quantum/audio.c | 100 ++++++++------ 2 files changed, 165 insertions(+), 95 deletions(-) diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index c52d8472..6824f68b 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -1,31 +1,40 @@ #include "preonic.h" #include "action_layer.h" +#include "eeconfig.h" #ifdef AUDIO_ENABLE #include "audio.h" + #define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ + 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ + 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ + 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ + 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } #endif // 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 _QW 0 -#define _CM 1 -#define _DV 2 -#define _LW 3 -#define _RS 4 -#define _AD 5 +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 5 +#define _MUSIC 6 // Macro name shortcuts -#define QWERTY M(_QW) -#define COLEMAK M(_CM) -#define DVORAK M(_DV) -#define LOWER M(_LW) -#define RAISE M(_RS) +#define QWERTY M(_QWERTY) +#define COLEMAK M(_COLEMAK) +#define DVORAK M(_DVORAK) +#define LOWER M(_LOWER) +#define RAISE M(_RAISE) #define M_BL 5 #ifdef AUDIO_ENABLE #define AUD_OFF M(6) #define AUD_ON M(7) #endif +#define MUS_OFF M(8) +#define MUS_ON M(9) // Fillers to make layering more clear #define _______ KC_TRNS @@ -46,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_QW] = { +[_QWERTY] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, @@ -67,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_CM] = { +[_COLEMAK] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL}, {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, @@ -88,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_DV] = { +[_DVORAK] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL}, {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, @@ -109,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_LW] = { +[_LOWER] = { {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, @@ -130,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_RS] = { +[_RAISE] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, @@ -151,10 +160,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ -[_AD] = { +[_ADJUST] = { {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, {_______, _______, _______, AUD_ON, AUD_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, _______, _______, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, + +/* Music (reserved for process_action_user) + * + */ +[_MUSIC] = { + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -166,24 +186,20 @@ const uint16_t PROGMEM fn_actions[] = { #ifdef AUDIO_ENABLE float start_up[][2] = { - {440.0*pow(2.0,(55)/12.0), 12}, - {0, 2}, - {440.0*pow(2.0,(67)/12.0), 8}, - {440.0*pow(2.0,(64)/12.0), 8}, - {440.0*pow(2.0,(55)/12.0), 8}, - {440.0*pow(2.0,(67)/12.0), 12}, - {0, 2}, - {440.0*pow(2.0,(67)/12.0), 12} + {440.0*pow(2.0,(50)/12.0), 20}, + {440.0*pow(2.0,(62)/12.0), 8}, + {440.0*pow(2.0,(54)/12.0), 20}, + {440.0*pow(2.0,(62)/12.0), 8} }; -float tone_qw[][2] = { +float tone_qwerty[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, {0, 4}, {440.0*pow(2.0,(67)/12.0), 16} }; -float tone_cm[][2] = { +float tone_colemak[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, {0, 4}, @@ -192,7 +208,7 @@ float tone_cm[][2] = { {440.0*pow(2.0,(71)/12.0), 12} }; -float tone_dv[][2] = { +float tone_dvorak[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, {0, 4}, @@ -202,53 +218,66 @@ float tone_dv[][2] = { {0, 4}, {440.0*pow(2.0,(67)/12.0), 8} }; + +float tone_music[][2] = { + {440.0*pow(2.0,(48)/12.0), 8}, + {440.0*pow(2.0,(50)/12.0), 8}, + {440.0*pow(2.0,(52)/12.0), 8}, + {440.0*pow(2.0,(53)/12.0), 8}, + {440.0*pow(2.0,(55)/12.0), 8}, + {440.0*pow(2.0,(57)/12.0), 8}, + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8} +}; #endif const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - // MACRODOWN only works in this function switch(id) { - case _QW: + case _QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_qw, 4, false); + play_notes(&tone_qwerty, 4, false); #endif - default_layer_set(1UL<<_QW); + eeconfig_write_default_layer(1UL<<_QWERTY); + default_layer_set(1UL<<_QWERTY); } break; - case _CM: + case _COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_cm, 6, false); + play_notes(&tone_colemak, 6, false); #endif - default_layer_set(1UL<<_CM); + eeconfig_write_default_layer(1UL<<_COLEMAK); + default_layer_set(1UL<<_COLEMAK); } break; - case _DV: + case _DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_dv, 8, false); + play_notes(&tone_dvorak, 8, false); #endif - default_layer_set(1UL<<_DV); + eeconfig_write_default_layer(1UL<<_DVORAK); + default_layer_set(1UL<<_DVORAK); } break; - case _LW: + case _LOWER: if (record->event.pressed) { - layer_on(_LW); - update_tri_layer(_LW, _RS, _AD); + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { - layer_off(_LW); - update_tri_layer(_LW, _RS, _AD); + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } break; - case _RS: + case _RAISE: if (record->event.pressed) { - layer_on(_RS); - update_tri_layer(_LW, _RS, _AD); + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { - layer_off(_RS); - update_tri_layer(_LW, _RS, _AD); + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } break; case M_BL: @@ -272,7 +301,23 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - play_notes(&start_up, 7, false); + play_notes(&start_up, 4, false); + #endif + } + break; + case 8: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + layer_off(_MUSIC); + stop_all_notes(); + #endif + } + break; + case 9: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + play_notes(&tone_music, 8, false); + layer_on(_MUSIC); #endif } break; @@ -280,9 +325,24 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; +uint8_t starting_note = 0x0C; +int offset = 7; + +void process_action_user(keyrecord_t *record) { + + if (IS_LAYER_ON(_MUSIC)) { + if (record->event.pressed) { + play_note(((double)261.626)*pow(2.0, -2.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + } else { + stop_note(((double)261.626)*pow(2.0, -2.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); + } + } + +} + void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 7, false); + play_notes(&start_up, 4, false); #endif } diff --git a/quantum/audio.c b/quantum/audio.c index 73985479..5edcccdb 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -32,6 +32,8 @@ int voice_place = 0; double frequency = 0; int volume = 0; long position = 0; +int duty_place = 1; +int duty_counter = 0; double frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0}; int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0}; @@ -98,53 +100,55 @@ void stop_all_notes() { } void stop_note(double freq) { - #ifdef PWM_AUDIO - freq = freq / SAMPLE_RATE; - #endif - for (int i = 7; i >= 0; i--) { - if (frequencies[i] == freq) { - frequencies[i] = 0; - volumes[i] = 0; - for (int j = i; (j < 7); j++) { - frequencies[j] = frequencies[j+1]; - frequencies[j+1] = 0; - volumes[j] = volumes[j+1]; - volumes[j+1] = 0; - } - } - } - voices--; - if (voices < 0) - voices = 0; - if (voices == 0) { + if (note) { #ifdef PWM_AUDIO - TIMSK3 &= ~_BV(OCIE3A); - #else - TIMSK3 &= ~_BV(OCIE3A); - TCCR3A &= ~_BV(COM3A1); + freq = freq / SAMPLE_RATE; #endif - frequency = 0; - volume = 0; - note = false; - } else { - double freq = frequencies[voices - 1]; - int vol = volumes[voices - 1]; - double starting_f = frequency; - if (frequency < freq) { - sliding = true; - for (double f = starting_f; f <= freq; f += ((freq - starting_f) / 2000.0)) { - frequency = f; + for (int i = 7; i >= 0; i--) { + if (frequencies[i] == freq) { + frequencies[i] = 0; + volumes[i] = 0; + for (int j = i; (j < 7); j++) { + frequencies[j] = frequencies[j+1]; + frequencies[j+1] = 0; + volumes[j] = volumes[j+1]; + volumes[j+1] = 0; + } } - sliding = false; - } else if (frequency > freq) { - sliding = true; - for (double f = starting_f; f >= freq; f -= ((starting_f - freq) / 2000.0)) { - frequency = f; + } + voices--; + if (voices < 0) + voices = 0; + if (voices == 0) { + #ifdef PWM_AUDIO + TIMSK3 &= ~_BV(OCIE3A); + #else + TIMSK3 &= ~_BV(OCIE3A); + TCCR3A &= ~_BV(COM3A1); + #endif + frequency = 0; + volume = 0; + note = false; + } else { + double freq = frequencies[voices - 1]; + int vol = volumes[voices - 1]; + double starting_f = frequency; + if (frequency < freq) { + sliding = true; + for (double f = starting_f; f <= freq; f += ((freq - starting_f) / 2000.0)) { + frequency = f; + } + sliding = false; + } else if (frequency > freq) { + sliding = true; + for (double f = starting_f; f >= freq; f -= ((starting_f - freq) / 2000.0)) { + frequency = f; + } + sliding = false; } - sliding = false; + frequency = freq; + volume = vol; } - frequency = freq; - volume = vol; } } @@ -239,13 +243,19 @@ ISR(TIMER3_COMPA_vect) { if (frequency > 0) { // ICR3 = (int)(((double)F_CPU) / frequency); // Set max to the period // OCR3A = (int)(((double)F_CPU) / frequency) >> 1; // Set compare to half the period - if (place > 10) { + voice_place %= voices; + if (place > (frequencies[voice_place] / 500)) { voice_place = (voice_place + 1) % voices; place = 0.0; } ICR3 = (int)(((double)F_CPU) / frequencies[voice_place]); // Set max to the period - OCR3A = (int)(((double)F_CPU) / frequencies[voice_place]) >> 1; // Set compare to half the period + OCR3A = (int)(((double)F_CPU) / frequencies[voice_place]) >> 1 * duty_place; // Set compare to half the period place++; + // if (duty_counter > (frequencies[voice_place] / 500)) { + // duty_place = (duty_place % 3) + 1; + // duty_counter = 0; + // } + // duty_counter++; } #endif } @@ -375,7 +385,7 @@ if (audio_config.enable) { void play_note(double freq, int vol) { -if (audio_config.enable) { +if (audio_config.enable && voices < 8) { if (notes) stop_all_notes(); From ab19ebd08a8b955775e6fa94cdf6b8d128d8b43c Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 18:51:58 -0400 Subject: [PATCH 47/55] MAGIC functionality, AG swap in default layout --- keyboard/planck/keymaps/default/README.md | 32 --- keyboard/preonic/Makefile | 2 +- keyboard/preonic/keymaps/default/keymap.c | 19 +- quantum/keymap_common.c | 250 ++++++++++++---------- quantum/keymap_common.h | 28 ++- tmk_core/common.mk | 3 + tmk_core/common/keyboard.c | 8 +- tmk_core/common/keymap.h | 3 - tmk_core/common/magic.c | 36 ++++ tmk_core/common/magic.h | 6 + 10 files changed, 226 insertions(+), 161 deletions(-) create mode 100644 tmk_core/common/magic.c create mode 100644 tmk_core/common/magic.h diff --git a/keyboard/planck/keymaps/default/README.md b/keyboard/planck/keymaps/default/README.md index d2f43bbd..de9680b4 100644 --- a/keyboard/planck/keymaps/default/README.md +++ b/keyboard/planck/keymaps/default/README.md @@ -1,34 +1,2 @@ # The Default Planck Layout - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = { /* Qwerty */ - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_CM] = { /* Colemak */ - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_DV] = { /* Dvorak */ - {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, - {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, - {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_RS] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} - }, - [_LW] = { /* LOWER */ - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} - } - }; \ No newline at end of file diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index eaf9ef92..9199968c 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -130,7 +130,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # change to "no" to disable the options, or define them in the makefile.mk in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 6824f68b..e1f9b620 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -153,9 +153,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------+------+------+------+------+------+------| * | | Reset| | | | | | | | | | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Audoff|Aud on| | |Qwerty|Colemk|Dvorak| | | + * | | | |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | | | | | | + * | | | |Musoff|Mus on| | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' @@ -163,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = { {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AUD_ON, AUD_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, {_______, _______, _______, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, @@ -231,6 +231,10 @@ float tone_music[][2] = { }; #endif +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_write_default_layer(default_layer); + default_layer_set(default_layer); +} const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { @@ -240,8 +244,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE play_notes(&tone_qwerty, 4, false); #endif - eeconfig_write_default_layer(1UL<<_QWERTY); - default_layer_set(1UL<<_QWERTY); + persistant_default_layer_set(1UL<<_QWERTY); } break; case _COLEMAK: @@ -249,8 +252,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE play_notes(&tone_colemak, 6, false); #endif - eeconfig_write_default_layer(1UL<<_COLEMAK); - default_layer_set(1UL<<_COLEMAK); + persistant_default_layer_set(1UL<<_COLEMAK); } break; case _DVORAK: @@ -258,8 +260,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE play_notes(&tone_dvorak, 8, false); #endif - eeconfig_write_default_layer(1UL<<_DVORAK); - default_layer_set(1UL<<_DVORAK); + persistant_default_layer_set(1UL<<_DVORAK); } break; case _LOWER: diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 3a00d36f..b9191668 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -27,6 +27,8 @@ along with this program. If not, see . #include "keymap_midi.h" #include "bootloader.h" +extern keymap_config_t keymap_config; + #include #include #ifdef AUDIO_ENABLE @@ -47,120 +49,9 @@ action_t action_for_key(uint8_t layer, keypos_t key) // 16bit keycodes - important uint16_t keycode = keymap_key_to_keycode(layer, key); - if (keycode >= 0x0100 && keycode < 0x2000) { - // Has a modifier - action_t action; - // Split it up - action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); // adds modifier to key - return action; - } else if (keycode >= 0x2000 && keycode < 0x3000) { - // Is a shortcut for function layer, pull last 12bits - // This means we have 4,096 FN macros at our disposal - return keymap_func_to_action(keycode & 0xFFF); - } else if (keycode >= 0x3000 && keycode < 0x4000) { - // When the code starts with 3, it's an action macro. - action_t action; - action.code = ACTION_MACRO(keycode & 0xFF); - return action; -#ifdef BACKLIGHT_ENABLE - } else if (keycode >= BL_0 && keycode <= BL_15) { - action_t action; - action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F); - return action; - } else if (keycode == BL_DEC) { - action_t action; - action.code = ACTION_BACKLIGHT_DECREASE(); - return action; - } else if (keycode == BL_INC) { - action_t action; - action.code = ACTION_BACKLIGHT_INCREASE(); - return action; - } else if (keycode == BL_TOGG) { - action_t action; - action.code = ACTION_BACKLIGHT_TOGGLE(); - return action; - } else if (keycode == BL_STEP) { - action_t action; - action.code = ACTION_BACKLIGHT_STEP(); - return action; -#endif - } else if (keycode == RESET) { // RESET is 0x5000, which is why this is here - action_t action; - clear_keyboard(); - #ifdef AUDIO_ENABLE - play_notes(&goodbye, 3, false); - #endif - _delay_ms(250); - #ifdef ATREUS_ASTAR - *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific - #endif - bootloader_jump(); - return action; - } else if (keycode == DEBUG) { // DEBUG is 0x5001 - // TODO: Does this actually work? - action_t action; - print("\nDEBUG: enabled.\n"); - debug_enable = true; - return action; - } else if (keycode >= 0x5000 && keycode < 0x6000) { - // Layer movement shortcuts - // See .h to see constraints/usage - int type = (keycode >> 0x8) & 0xF; - if (type == 0x1) { - // Layer set "GOTO" - int when = (keycode >> 0x4) & 0x3; - int layer = keycode & 0xF; - action_t action; - action.code = ACTION_LAYER_SET(layer, when); - return action; - } else if (type == 0x2) { - // Momentary layer - int layer = keycode & 0xFF; - action_t action; - action.code = ACTION_LAYER_MOMENTARY(layer); - return action; - } else if (type == 0x3) { - // Set default layer - int layer = keycode & 0xFF; - action_t action; - action.code = ACTION_DEFAULT_LAYER_SET(layer); - return action; - } else if (type == 0x4) { - // Set default layer - int layer = keycode & 0xFF; - action_t action; - action.code = ACTION_LAYER_TOGGLE(layer); - return action; - } -#ifdef MIDI_ENABLE - } else if (keycode >= 0x6000 && keycode < 0x7000) { - action_t action; - action.code = ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8); - return action; -#endif - } else if (keycode >= 0x7000 && keycode < 0x8000) { - action_t action; - action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); - return action; - } else if (keycode >= 0x8000 && keycode < 0x9000) { - action_t action; - action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); - return action; -#ifdef UNICODE_ENABLE - } else if (keycode >= 0x8000000) { - action_t action; - uint16_t unicode = keycode & ~(0x8000); - action.code = ACTION_FUNCTION_OPT(unicode & 0xFF, (unicode & 0xFF00) >> 8); - return action; -#endif - } else { - - } - switch (keycode) { case KC_FN0 ... KC_FN31: return keymap_fn_to_action(keycode); -#ifdef BOOTMAGIC_ENABLE case KC_CAPSLOCK: case KC_LOCKING_CAPS: if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) { @@ -224,7 +115,6 @@ action_t action_for_key(uint8_t layer, keypos_t key) return keycode_to_action(KC_BSLASH); } return keycode_to_action(KC_BSPACE); -#endif default: return keycode_to_action(keycode); } @@ -265,6 +155,142 @@ static action_t keycode_to_action(uint16_t keycode) case KC_TRNS: action.code = ACTION_TRANSPARENT; break; + case 0x0100 ... 0x1FFF: ; + // Has a modifier + // Split it up + action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); // adds modifier to key + break; + case 0x2000 ... 0x2FFF: + // Is a shortcut for function layer, pull last 12bits + // This means we have 4,096 FN macros at our disposal + return keymap_func_to_action(keycode & 0xFFF); + break; + case 0x3000 ... 0x3FFF: ; + // When the code starts with 3, it's an action macro. + action.code = ACTION_MACRO(keycode & 0xFF); + break; + #ifdef BACKLIGHT_ENABLE + case BL_0 ... BL_15: + action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F); + break; + case BL_DEC: + action.code = ACTION_BACKLIGHT_DECREASE(); + break; + case BL_INC: + action.code = ACTION_BACKLIGHT_INCREASE(); + break; + case BL_TOGG: + action.code = ACTION_BACKLIGHT_TOGGLE(); + break; + case BL_STEP: + action.code = ACTION_BACKLIGHT_STEP(); + break; + #endif + case RESET: ; // RESET is 0x5000, which is why this is here + clear_keyboard(); + #ifdef AUDIO_ENABLE + play_notes(&goodbye, 3, false); + #endif + _delay_ms(250); + #ifdef ATREUS_ASTAR + *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific + #endif + bootloader_jump(); + break; + case DEBUG: ; // DEBUG is 0x5001 + print("\nDEBUG: enabled.\n"); + debug_enable = true; + break; + case 0x5002 ... 0x50FF: + // MAGIC actions (BOOTMAGIC without the boot) + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + /* keymap config */ + keymap_config.raw = eeconfig_read_keymap(); + if (keycode == MAGIC_SWAP_CONTROL_CAPSLOCK) { + keymap_config.swap_control_capslock = 1; + } else if (keycode == MAGIC_CAPSLOCK_TO_CONTROL) { + keymap_config.capslock_to_control = 1; + } else if (keycode == MAGIC_SWAP_LALT_LGUI) { + keymap_config.swap_lalt_lgui = 1; + } else if (keycode == MAGIC_SWAP_RALT_RGUI) { + keymap_config.swap_ralt_rgui = 1; + } else if (keycode == MAGIC_NO_GUI) { + keymap_config.no_gui = 1; + } else if (keycode == MAGIC_SWAP_GRAVE_ESC) { + keymap_config.swap_grave_esc = 1; + } else if (keycode == MAGIC_SWAP_BACKSLASH_BACKSPACE) { + keymap_config.swap_backslash_backspace = 1; + } else if (keycode == MAGIC_HOST_NKRO) { + keymap_config.nkro = 1; + } else if (keycode == MAGIC_SWAP_ALT_GUI) { + keymap_config.swap_lalt_lgui = 1; + keymap_config.swap_ralt_rgui = 1; + } + /* UNs */ + else if (keycode == MAGIC_UNSWAP_CONTROL_CAPSLOCK) { + keymap_config.swap_control_capslock = 0; + } else if (keycode == MAGIC_UNCAPSLOCK_TO_CONTROL) { + keymap_config.capslock_to_control = 0; + } else if (keycode == MAGIC_UNSWAP_LALT_LGUI) { + keymap_config.swap_lalt_lgui = 0; + } else if (keycode == MAGIC_UNSWAP_RALT_RGUI) { + keymap_config.swap_ralt_rgui = 0; + } else if (keycode == MAGIC_UNNO_GUI) { + keymap_config.no_gui = 0; + } else if (keycode == MAGIC_UNSWAP_GRAVE_ESC) { + keymap_config.swap_grave_esc = 0; + } else if (keycode == MAGIC_UNSWAP_BACKSLASH_BACKSPACE) { + keymap_config.swap_backslash_backspace = 0; + } else if (keycode == MAGIC_UNHOST_NKRO) { + keymap_config.nkro = 0; + } else if (keycode == MAGIC_UNSWAP_ALT_GUI) { + keymap_config.swap_lalt_lgui = 0; + keymap_config.swap_ralt_rgui = 0; + } + eeconfig_write_keymap(keymap_config.raw); + break; + case 0x5100 ... 0x5FFF: ; + // Layer movement shortcuts + // See .h to see constraints/usage + int type = (keycode >> 0x8) & 0xF; + if (type == 0x1) { + // Layer set "GOTO" + int when = (keycode >> 0x4) & 0x3; + int layer = keycode & 0xF; + action.code = ACTION_LAYER_SET(layer, when); + } else if (type == 0x2) { + // Momentary layer + int layer = keycode & 0xFF; + action.code = ACTION_LAYER_MOMENTARY(layer); + } else if (type == 0x3) { + // Set default layer + int layer = keycode & 0xFF; + action.code = ACTION_DEFAULT_LAYER_SET(layer); + } else if (type == 0x4) { + // Set default layer + int layer = keycode & 0xFF; + action.code = ACTION_LAYER_TOGGLE(layer); + } + break; + #ifdef MIDI_ENABLE + case 0x6000 ... 0x6FFF: + action.code = ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8); + break; + #endif + case 0x7000 ... 0x7FFF: + action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); + break; + case 0x8000 ... 0x8FFF: + action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); + break; + #ifdef UNICODE_ENABLE + case 0x8000000 ... 0x8FFFFFF: + uint16_t unicode = keycode & ~(0x8000); + action.code = ACTION_FUNCTION_OPT(unicode & 0xFF, (unicode & 0xFF00) >> 8); + break; + #endif default: action.code = ACTION_NO; break; diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 7452a1ff..ce87e477 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -30,7 +30,6 @@ along with this program. If not, see . // #include "print.h" #include "debug.h" -#ifdef BOOTMAGIC_ENABLE /* NOTE: Not portable. Bit field order depends on implementation */ typedef union { uint16_t raw; @@ -45,8 +44,6 @@ typedef union { bool nkro:1; }; } keymap_config_t; -keymap_config_t keymap_config; -#endif /* translates key to keycode */ @@ -168,6 +165,30 @@ extern const uint16_t fn_actions[]; #define RESET 0x5000 #define DEBUG 0x5001 +// MAGIC keycodes +#define MAGIC_SWAP_CONTROL_CAPSLOCK 0x5002 +#define MAGIC_UNSWAP_CONTROL_CAPSLOCK 0x5003 +#define MAGIC_CAPSLOCK_TO_CONTROL 0x5004 +#define MAGIC_UNCAPSLOCK_TO_CONTROL 0x5005 +#define MAGIC_SWAP_LALT_LGUI 0x5006 +#define MAGIC_UNSWAP_LALT_LGUI 0x5007 +#define MAGIC_SWAP_RALT_RGUI 0x5008 +#define MAGIC_UNSWAP_RALT_RGUI 0x5009 +#define MAGIC_NO_GUI 0x500a +#define MAGIC_UNNO_GUI 0x500b +#define MAGIC_SWAP_GRAVE_ESC 0x500c +#define MAGIC_UNSWAP_GRAVE_ESC 0x500d +#define MAGIC_SWAP_BACKSLASH_BACKSPACE 0x500e +#define MAGIC_UNSWAP_BACKSLASH_BACKSPACE 0x500f +#define MAGIC_HOST_NKRO 0x5010 +#define MAGIC_UNHOST_NKRO 0x5011 +#define MAGIC_SWAP_ALT_GUI 0x5012 +#define MAGIC_UNSWAP_ALT_GUI 0x5013 + +#define AG_SWAP MAGIC_SWAP_ALT_GUI +#define AG_NORM MAGIC_UNSWAP_ALT_GUI + + // GOTO layer - 16 layers max // when: // ON_PRESS = 1 @@ -213,4 +234,5 @@ void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3); #define IS_LAYER_ON(layer) ((layer_state) & (1UL<<(layer))) #define IS_LAYER_OFF(layer) ((!layer_state) & (1UL<<(layer))) + #endif diff --git a/tmk_core/common.mk b/tmk_core/common.mk index f8006c67..9cb2eb8e 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -21,6 +21,9 @@ ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes) SRC += $(COMMON_DIR)/bootmagic.c SRC += $(COMMON_DIR)/avr/eeconfig.c OPT_DEFS += -DBOOTMAGIC_ENABLE +else + SRC += $(COMMON_DIR)/magic.c + SRC += $(COMMON_DIR)/avr/eeconfig.c endif ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index 302b3ec8..1d998184 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -27,7 +27,11 @@ along with this program. If not, see . #include "command.h" #include "util.h" #include "sendchar.h" -#include "bootmagic.h" +#ifdef BOOTMAGIC_ENABLE + #include "bootmagic.h" +#else + #include "magic.h" +#endif #include "eeconfig.h" #include "backlight.h" #ifdef MOUSEKEY_ENABLE @@ -86,6 +90,8 @@ void keyboard_init(void) #ifdef BOOTMAGIC_ENABLE bootmagic(); +#else + magic(); #endif #ifdef BACKLIGHT_ENABLE diff --git a/tmk_core/common/keymap.h b/tmk_core/common/keymap.h index e1a6f992..abc9bdb3 100644 --- a/tmk_core/common/keymap.h +++ b/tmk_core/common/keymap.h @@ -22,8 +22,6 @@ along with this program. If not, see . #include #include "action.h" - -#ifdef BOOTMAGIC_ENABLE /* NOTE: Not portable. Bit field order depends on implementation */ typedef union { uint8_t raw; @@ -39,7 +37,6 @@ typedef union { }; } keymap_config_t; keymap_config_t keymap_config; -#endif /* translates key to keycode */ diff --git a/tmk_core/common/magic.c b/tmk_core/common/magic.c new file mode 100644 index 00000000..f21d1346 --- /dev/null +++ b/tmk_core/common/magic.c @@ -0,0 +1,36 @@ +#include +#include +#include +#include "matrix.h" +#include "bootloader.h" +#include "debug.h" +#include "keymap.h" +#include "host.h" +#include "action_layer.h" +#include "eeconfig.h" +#include "magic.h" + +keymap_config_t keymap_config; + +void magic(void) +{ + /* check signature */ + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + + /* debug enable */ + debug_config.raw = eeconfig_read_debug(); + + /* keymap config */ + keymap_config.raw = eeconfig_read_keymap(); + +#ifdef NKRO_ENABLE + keyboard_nkro = keymap_config.nkro; +#endif + + uint8_t default_layer = 0; + default_layer = eeconfig_read_default_layer(); + default_layer_set((uint32_t)default_layer); + +} \ No newline at end of file diff --git a/tmk_core/common/magic.h b/tmk_core/common/magic.h new file mode 100644 index 00000000..3fa2d8b8 --- /dev/null +++ b/tmk_core/common/magic.h @@ -0,0 +1,6 @@ +#ifndef MAGIC_H +#define MAGIC_H + +void magic(void); + +#endif From b8d2e66638409066661e7dd3c66473d583256ec5 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 19:30:15 -0400 Subject: [PATCH 48/55] readme clarity for rgbleds --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 613bdcf4..6e1ab9bc 100644 --- a/README.md +++ b/README.md @@ -304,7 +304,7 @@ For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring Please note that the underglow is not compatible with audio output. So you cannot enable both of them at the same time. -Please add the following options into your config.h, and set them up according your hardware configuration. +Please add the following options into your config.h, and set them up according your hardware configuration. These settings are for the F4 by default: #define ws2812_PORTREG PORTF #define ws2812_DDRREG DDRF @@ -314,6 +314,12 @@ Please add the following options into your config.h, and set them up according y #define RGBLIGHT_SAT_STEP 17 #define RGBLIGHT_VAL_STEP 17 +You'll need to edit `PORTF`, `DDRF`, and `PF4` on the first three lines to the port/pin you have your LED(s) wired to, eg for B3 change things to: + + #define ws2812_PORTREG PORTB + #define ws2812_DDRREG DDRB + #define ws2812_pin PB3 + The firmware supports 5 different light effects, and the color (hue, saturation, brightness) can be customized in most effects. To control the underglow, you need to modify your keymap file to assign those functions to some keys/key combinations. For details, please check this keymap. `keyboard/planck/keymaps/yang/keymap.c` ### WS2812 Wiring From c83aa16f1d614c1c10f7597a67ffb9f2ae871951 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 20:26:02 -0400 Subject: [PATCH 49/55] fixes audio prescaler to emit correct freq --- keyboard/preonic/keymaps/default/keymap.c | 52 +++++++++++------------ quantum/audio.c | 12 +++--- quantum/keymap_common.c | 6 +-- 3 files changed, 36 insertions(+), 34 deletions(-) diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index e1f9b620..6b626231 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -186,48 +186,48 @@ const uint16_t PROGMEM fn_actions[] = { #ifdef AUDIO_ENABLE float start_up[][2] = { - {440.0*pow(2.0,(50)/12.0), 20}, - {440.0*pow(2.0,(62)/12.0), 8}, - {440.0*pow(2.0,(54)/12.0), 20}, - {440.0*pow(2.0,(62)/12.0), 8} + {440.0*pow(2.0,(14)/12.0), 20}, + {440.0*pow(2.0,(26)/12.0), 8}, + {440.0*pow(2.0,(18)/12.0), 20}, + {440.0*pow(2.0,(26)/12.0), 8} }; float tone_qwerty[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16} + {440.0*pow(2.0,(31)/12.0), 16} }; float tone_colemak[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 12}, + {440.0*pow(2.0,(31)/12.0), 12}, {0, 4}, - {440.0*pow(2.0,(71)/12.0), 12} + {440.0*pow(2.0,(35)/12.0), 12} }; float tone_dvorak[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 8}, + {440.0*pow(2.0,(31)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(69)/12.0), 8}, + {440.0*pow(2.0,(33)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 8} + {440.0*pow(2.0,(31)/12.0), 8} }; float tone_music[][2] = { - {440.0*pow(2.0,(48)/12.0), 8}, - {440.0*pow(2.0,(50)/12.0), 8}, - {440.0*pow(2.0,(52)/12.0), 8}, - {440.0*pow(2.0,(53)/12.0), 8}, - {440.0*pow(2.0,(55)/12.0), 8}, - {440.0*pow(2.0,(57)/12.0), 8}, - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8} + {440.0*pow(2.0,(12)/12.0), 8}, + {440.0*pow(2.0,(14)/12.0), 8}, + {440.0*pow(2.0,(16)/12.0), 8}, + {440.0*pow(2.0,(17)/12.0), 8}, + {440.0*pow(2.0,(19)/12.0), 8}, + {440.0*pow(2.0,(21)/12.0), 8}, + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8} }; #endif @@ -333,9 +333,9 @@ void process_action_user(keyrecord_t *record) { if (IS_LAYER_ON(_MUSIC)) { if (record->event.pressed) { - play_note(((double)261.626)*pow(2.0, -2.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + play_note(((double)261.626)*pow(2.0, -3.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); } else { - stop_note(((double)261.626)*pow(2.0, -2.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); + stop_note(((double)261.626)*pow(2.0, -3.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); } } diff --git a/quantum/audio.c b/quantum/audio.c index 5edcccdb..470dc8e0 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -12,6 +12,8 @@ #define PI 3.14159265 +#define CPU_PRESCALER 8 + // #define PWM_AUDIO #ifdef PWM_AUDIO @@ -244,12 +246,12 @@ ISR(TIMER3_COMPA_vect) { // ICR3 = (int)(((double)F_CPU) / frequency); // Set max to the period // OCR3A = (int)(((double)F_CPU) / frequency) >> 1; // Set compare to half the period voice_place %= voices; - if (place > (frequencies[voice_place] / 500)) { + if (place > (frequencies[voice_place] / 50)) { voice_place = (voice_place + 1) % voices; place = 0.0; } - ICR3 = (int)(((double)F_CPU) / frequencies[voice_place]); // Set max to the period - OCR3A = (int)(((double)F_CPU) / frequencies[voice_place]) >> 1 * duty_place; // Set compare to half the period + ICR3 = (int)(((double)F_CPU) / (frequencies[voice_place] * CPU_PRESCALER)); // Set max to the period + OCR3A = (int)(((double)F_CPU) / (frequencies[voice_place] * CPU_PRESCALER)) >> 1 * duty_place; // Set compare to half the period place++; // if (duty_counter > (frequencies[voice_place] / 500)) { // duty_place = (duty_place % 3) + 1; @@ -281,8 +283,8 @@ ISR(TIMER3_COMPA_vect) { place -= SINE_LENGTH; #else if (note_frequency > 0) { - ICR3 = (int)(((double)F_CPU) / note_frequency); // Set max to the period - OCR3A = (int)(((double)F_CPU) / note_frequency) >> 1; // Set compare to half the period + ICR3 = (int)(((double)F_CPU) / (note_frequency * CPU_PRESCALER)); // Set max to the period + OCR3A = (int)(((double)F_CPU) / (note_frequency * CPU_PRESCALER)) >> 1; // Set compare to half the period } else { ICR3 = 0; OCR3A = 0; diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index b9191668..899437f4 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -35,9 +35,9 @@ extern keymap_config_t keymap_config; #include "audio.h" float goodbye[][2] = { - {440.0*pow(2.0,(67)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {440.0*pow(2.0,(55)/12.0), 12}, + {440.0*pow(2.0,(31)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, + {440.0*pow(2.0,(19)/12.0), 12}, }; #endif From b5c22ab5b5b77d5e21cc4145831608eed6756ad7 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sat, 16 Apr 2016 19:27:21 -0500 Subject: [PATCH 50/55] Merging with QMK main to fix audio issues --- keyboard/atomic/keymaps/pvc/keymap.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 7abd7f4f..189da16c 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -3,8 +3,10 @@ #ifdef AUDIO_ENABLE #include "audio.h" +#include "musical_notes.h" #endif + #define _QW 0 #define _LW 1 #define _RS 2 @@ -82,10 +84,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float tone_lw[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16} +Q_NOTE(_C4 ) , +Q_NOTE(_CS4 ) , +Q_NOTE(_D4 ) , +Q_NOTE(_DS4 ) , +Q_NOTE(_E4 ) , +Q_NOTE(_F4 ) , +Q_NOTE(_FS4 ) , +Q_NOTE(_G4 ) , +Q_NOTE(_GS4 ) , +Q_NOTE(_A4 ) , +Q_NOTE(_AS4 ) , +Q_NOTE(_B4 ) , }; float tone_rs[][2] = { @@ -158,6 +168,7 @@ void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t l const uint16_t PROGMEM fn_actions[] = { }; +#define ARRAY_SIZE(x) ((sizeof x) / (sizeof *x)) const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { @@ -167,7 +178,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE println("PlayNotes LW"); - play_notes(&tone_lw, 4, false); + print_val_hex32(ARRAY_SIZE(tone_lw)); + play_notes(&tone_lw, 12, false); #endif layer_on(_LW); update_tri_layer(_LW, _RS, _FN); From 41cc35425ab32c9a9492006da8b667d01d32dfa6 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 21:31:40 -0400 Subject: [PATCH 51/55] rests between notes as an argument --- keyboard/planck/keymaps/default/keymap.c | 10 ++++---- keyboard/preonic/keymaps/default/keymap.c | 16 ++++++------- quantum/audio.c | 29 ++++++++++++++++------- quantum/audio.h | 3 ++- quantum/keymap_common.c | 2 +- 5 files changed, 37 insertions(+), 23 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index ede08ad7..a6edefef 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -194,7 +194,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _QW: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_qw, 4, false); + play_notes(&tone_qw, 4, false, 0); #endif default_layer_set(1UL<<_QW); } @@ -202,7 +202,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _CM: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_cm, 6, false); + play_notes(&tone_cm, 6, false, 0); #endif default_layer_set(1UL<<_CM); } @@ -210,7 +210,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _DV: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_dv, 8, false); + play_notes(&tone_dv, 8, false, 0); #endif default_layer_set(1UL<<_DV); } @@ -254,7 +254,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - play_notes(&start_up, 5, false); + play_notes(&start_up, 5, false, 0); #endif } break; @@ -265,6 +265,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 5, false); + play_notes(&start_up, 5, false, 0); #endif } diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 6b626231..1223793c 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -242,7 +242,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_qwerty, 4, false); + play_notes(&tone_qwerty, 4, false, 0); #endif persistant_default_layer_set(1UL<<_QWERTY); } @@ -250,7 +250,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_colemak, 6, false); + play_notes(&tone_colemak, 6, false, 1); #endif persistant_default_layer_set(1UL<<_COLEMAK); } @@ -258,7 +258,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_dvorak, 8, false); + play_notes(&tone_dvorak, 8, false, 10); #endif persistant_default_layer_set(1UL<<_DVORAK); } @@ -302,7 +302,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - play_notes(&start_up, 4, false); + play_notes(&start_up, 4, false, 0); #endif } break; @@ -317,7 +317,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case 9: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_music, 8, false); + play_notes(&tone_music, 8, false, 0); layer_on(_MUSIC); #endif } @@ -333,9 +333,9 @@ void process_action_user(keyrecord_t *record) { if (IS_LAYER_ON(_MUSIC)) { if (record->event.pressed) { - play_note(((double)261.626)*pow(2.0, -3.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); } else { - stop_note(((double)261.626)*pow(2.0, -3.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); + stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); } } @@ -344,6 +344,6 @@ void process_action_user(keyrecord_t *record) { void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 4, false); + play_notes(&start_up, 4, false, 0); #endif } diff --git a/quantum/audio.c b/quantum/audio.c index 470dc8e0..40d09d62 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -61,7 +61,11 @@ uint16_t note_position = 0; float (* notes_pointer)[][2]; uint8_t notes_length; bool notes_repeat; +float notes_rest; +bool note_resting = false; + uint8_t current_note = 0; +uint8_t rest_counter = 0; audio_config_t audio_config; @@ -314,13 +318,21 @@ ISR(TIMER3_COMPA_vect) { return; } } - #ifdef PWM_AUDIO - note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE; - note_length = (*notes_pointer)[current_note][1]; - #else - note_frequency = (*notes_pointer)[current_note][0]; - note_length = (*notes_pointer)[current_note][1] / 4; - #endif + if (!note_resting && ((int)notes_rest != 0)) { + note_resting = true; + note_frequency = 0; + note_length = notes_rest; + current_note--; + } else { + note_resting = false; + #ifdef PWM_AUDIO + note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE; + note_length = (*notes_pointer)[current_note][1]; + #else + note_frequency = (*notes_pointer)[current_note][0]; + note_length = (*notes_pointer)[current_note][1] / 4; + #endif + } note_position = 0; } @@ -332,7 +344,7 @@ ISR(TIMER3_COMPA_vect) { } } -void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat) { +void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat, float n_rest) { if (audio_config.enable) { @@ -343,6 +355,7 @@ if (audio_config.enable) { notes_pointer = np; notes_length = n_length; notes_repeat = n_repeat; + notes_rest = n_rest; place = 0; current_note = 0; diff --git a/quantum/audio.h b/quantum/audio.h index 58270015..65a6f943 100644 --- a/quantum/audio.h +++ b/quantum/audio.h @@ -2,6 +2,7 @@ #include #include #include +#include "musical_notes.h" typedef union { uint8_t raw; @@ -20,4 +21,4 @@ void play_note(double freq, int vol); void stop_note(double freq); void stop_all_notes(); void init_notes(); -void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat); +void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat, float n_rest); diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 899437f4..457f70a4 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -189,7 +189,7 @@ static action_t keycode_to_action(uint16_t keycode) case RESET: ; // RESET is 0x5000, which is why this is here clear_keyboard(); #ifdef AUDIO_ENABLE - play_notes(&goodbye, 3, false); + play_notes(&goodbye, 3, false, 0); #endif _delay_ms(250); #ifdef ATREUS_ASTAR From a87522033d6385ecd2422f26f5bb6bdad9d44676 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sat, 16 Apr 2016 20:37:22 -0500 Subject: [PATCH 52/55] Merging with QMK main to fix rest issues --- keyboard/atomic/keymaps/pvc/keymap.c | 169 ++++++++++++++++++++++----- 1 file changed, 139 insertions(+), 30 deletions(-) diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 189da16c..22970834 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -84,6 +84,59 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float tone_lw[][2] = { +/* +Q_NOTE(_C1 ) , +Q_NOTE(_CS1 ) , +Q_NOTE(_D1 ) , +Q_NOTE(_DS1 ) , +Q_NOTE(_E1 ) , +Q_NOTE(_F1 ) , +Q_NOTE(_FS1 ) , +Q_NOTE(_G1 ) , +Q_NOTE(_GS1 ) , +Q_NOTE(_A1 ) , +Q_NOTE(_AS1 ) , +Q_NOTE(_B1 ) , +*/ + +Q_NOTE(_C4 ) , +Q_NOTE(_CS4 ) , +Q_NOTE(_D4 ) , +Q_NOTE(_DS4 ) , +Q_NOTE(_E4 ) , +Q_NOTE(_F4 ) , +Q_NOTE(_FS4 ) , +Q_NOTE(_G4 ) , +Q_NOTE(_GS4 ) , +Q_NOTE(_A4 ) , +Q_NOTE(_AS4 ) , +Q_NOTE(_B1 ) , + + +Q_NOTE(_C2 ) , +Q_NOTE(_CS2 ) , +Q_NOTE(_D2 ) , +Q_NOTE(_DS2 ) , +Q_NOTE(_E2 ) , +Q_NOTE(_F2 ) , +Q_NOTE(_FS2 ) , +Q_NOTE(_G2 ) , +Q_NOTE(_GS2 ) , +Q_NOTE(_A2 ) , +Q_NOTE(_AS2 ) , +Q_NOTE(_B2 ) , +Q_NOTE(_C3 ) , +Q_NOTE(_CS3 ) , +Q_NOTE(_D3 ) , +Q_NOTE(_DS3 ) , +Q_NOTE(_E3 ) , +Q_NOTE(_F3 ) , +Q_NOTE(_FS3 ) , +Q_NOTE(_G3 ) , +Q_NOTE(_GS3 ) , +Q_NOTE(_A3 ) , +Q_NOTE(_AS3 ) , +Q_NOTE(_B3 ) , Q_NOTE(_C4 ) , Q_NOTE(_CS4 ) , Q_NOTE(_D4 ) , @@ -96,15 +149,64 @@ Q_NOTE(_GS4 ) , Q_NOTE(_A4 ) , Q_NOTE(_AS4 ) , Q_NOTE(_B4 ) , +Q_NOTE(_C5 ) , +Q_NOTE(_CS5 ) , +Q_NOTE(_D5 ) , +Q_NOTE(_DS5 ) , +Q_NOTE(_E5 ) , +Q_NOTE(_F5 ) , +Q_NOTE(_FS5 ) , +Q_NOTE(_G5 ) , +Q_NOTE(_GS5 ) , +Q_NOTE(_A5 ) , +Q_NOTE(_AS5 ) , +Q_NOTE(_B5 ) , +Q_NOTE(_C6 ) , +Q_NOTE(_CS6 ) , +Q_NOTE(_D6 ) , +Q_NOTE(_DS6 ) , +Q_NOTE(_E6 ) , +Q_NOTE(_F6 ) , +Q_NOTE(_FS6 ) , +Q_NOTE(_G6 ) , +Q_NOTE(_GS6 ) , +Q_NOTE(_A6 ) , +Q_NOTE(_AS6 ) , +Q_NOTE(_B6 ) , +Q_NOTE(_C7 ) , +Q_NOTE(_CS7 ) , +Q_NOTE(_D7 ) , +Q_NOTE(_DS7 ) , +Q_NOTE(_E7 ) , +Q_NOTE(_F7 ) , +Q_NOTE(_FS7 ) , +Q_NOTE(_G7 ) , +Q_NOTE(_GS7 ) , +Q_NOTE(_A7 ) , +Q_NOTE(_AS7 ) , +Q_NOTE(_B7 ) , +Q_NOTE(_C8 ) , +Q_NOTE(_CS8 ) , +Q_NOTE(_D8 ) , +Q_NOTE(_DS8 ) , +Q_NOTE(_E8 ) , +Q_NOTE(_F8 ) , +Q_NOTE(_FS8 ) , +Q_NOTE(_G8 ) , +Q_NOTE(_GS8 ) , +Q_NOTE(_A8 ) , +Q_NOTE(_AS8 ) , +Q_NOTE(_B8 ) , + }; float tone_rs[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16}, - {0, 4}, - {440.0*pow(2.0,(71)/12.0), 16} +Q_NOTE(_F8 ) , +Q_NOTE(_G8 ) , +Q_NOTE(_GS8 ) , +Q_NOTE(_A8 ) , +Q_NOTE(_AS8 ) , +Q_NOTE(_B8 ) , }; float tone_fn[][2] = { @@ -119,23 +221,6 @@ float tone_fn[][2] = { }; #endif - -void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) -{ - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) - { - #ifdef AUDIO_ENABLE - println("PlayNotes FN"); - play_notes(&tone_fn, 8, false); - #endif - layer_on(layer3); - } - else - { - layer_off(layer3); - } -} - void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order) { if (order) @@ -179,7 +264,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE println("PlayNotes LW"); print_val_hex32(ARRAY_SIZE(tone_lw)); - play_notes(&tone_lw, 12, false); + play_notes(&tone_lw, 96, false); #endif layer_on(_LW); update_tri_layer(_LW, _RS, _FN); @@ -209,18 +294,42 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE float start_up[][2] = { - {440.0*pow(2.0,(67)/12.0), 12}, - {440.0*pow(2.0,(64)/12.0), 8}, - {440.0*pow(2.0,(55)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {440.0*pow(2.0,(64)/12.0), 20} +Q_NOTE(_E4 ) , +{0,1} , +Q_NOTE(_E4 ) , +{0,1} , +Q_NOTE(_F4 ) , +{0,1} , +Q_NOTE(_G4 ) , +{0,1} , +Q_NOTE(_G4 ) , +{0,1} , +Q_NOTE(_F4 ) , +{0,1} , +Q_NOTE(_E4 ) , +{0,1} , +Q_NOTE(_D4 ) , +{0,1} , +Q_NOTE(_C4 ) , +{0,1} , +Q_NOTE(_C4 ) , +{0,1} , +Q_NOTE(_D4 ) , +{0,1} , +Q_NOTE(_E4 ) , +{0,1} , +H_NOTE(_E4 ) , +{0,1} , +Q_NOTE(_D4 ) , +{0,1} , +H_NOTE(_D4 ) , }; #endif void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 5, false); + play_notes(&start_up, 29, false); println("Matrix Init"); #endif } From 8bbd064cf52a76508589579f19595607a1f3af21 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 23:07:50 -0400 Subject: [PATCH 53/55] changes to play_notes, goodbye --- keyboard/planck/keymaps/default/keymap.c | 10 +++++----- keyboard/preonic/Makefile | 2 +- keyboard/preonic/config.h | 4 ++-- keyboard/preonic/keymaps/default/keymap.c | 12 ++++++------ quantum/audio.c | 2 +- quantum/keymap_common.c | 16 +++++++++------- 6 files changed, 24 insertions(+), 22 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index a6edefef..5591b337 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -194,7 +194,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _QW: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_qw, 4, false, 0); + play_notes(&tone_qw, false, 0); #endif default_layer_set(1UL<<_QW); } @@ -202,7 +202,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _CM: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_cm, 6, false, 0); + play_notes(&tone_cm, false, 0); #endif default_layer_set(1UL<<_CM); } @@ -210,7 +210,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _DV: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_dv, 8, false, 0); + play_notes(&tone_dv, false, 0); #endif default_layer_set(1UL<<_DV); } @@ -254,7 +254,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - play_notes(&start_up, 5, false, 0); + play_notes(&start_up, false, 0); #endif } break; @@ -265,6 +265,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 5, false, 0); + play_notes(&start_up, false, 0); #endif } diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index 9199968c..3504e272 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -133,7 +133,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality diff --git a/keyboard/preonic/config.h b/keyboard/preonic/config.h index 5528667f..bb9d29da 100644 --- a/keyboard/preonic/config.h +++ b/keyboard/preonic/config.h @@ -73,10 +73,10 @@ along with this program. If not, see . */ /* disable debug print */ -#define NO_DEBUG +// #define NO_DEBUG /* disable print */ -#define NO_PRINT +// #define NO_PRINT /* disable action features */ //#define NO_ACTION_LAYER diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 1223793c..c7b6b89f 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -242,7 +242,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_qwerty, 4, false, 0); + play_notes(&tone_qwerty, false, 0); #endif persistant_default_layer_set(1UL<<_QWERTY); } @@ -250,7 +250,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_colemak, 6, false, 1); + play_notes(&tone_colemak, false, 0); #endif persistant_default_layer_set(1UL<<_COLEMAK); } @@ -258,7 +258,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_dvorak, 8, false, 10); + play_notes(&tone_dvorak, false, 0); #endif persistant_default_layer_set(1UL<<_DVORAK); } @@ -302,7 +302,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - play_notes(&start_up, 4, false, 0); + play_notes(&start_up, false, 0); #endif } break; @@ -317,7 +317,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case 9: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_music, 8, false, 0); + play_notes(&tone_music, false, 0); layer_on(_MUSIC); #endif } @@ -344,6 +344,6 @@ void process_action_user(keyrecord_t *record) { void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 4, false, 0); + play_notes(&start_up, false, 0); #endif } diff --git a/quantum/audio.c b/quantum/audio.c index 40d09d62..773edfd8 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -318,7 +318,7 @@ ISR(TIMER3_COMPA_vect) { return; } } - if (!note_resting && ((int)notes_rest != 0)) { + if (!note_resting && (notes_rest > 0)) { note_resting = true; note_frequency = 0; note_length = notes_rest; diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 457f70a4..8f35521a 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -33,12 +33,14 @@ extern keymap_config_t keymap_config; #include #ifdef AUDIO_ENABLE #include "audio.h" - - float goodbye[][2] = { - {440.0*pow(2.0,(31)/12.0), 8}, - {440.0*pow(2.0,(24)/12.0), 8}, - {440.0*pow(2.0,(19)/12.0), 12}, - }; + #ifndef GOODBYE_TUNE + #define GOODBYE_TUNE { \ + {440.0*pow(2.0,(31)/12.0), 8}, \ + {440.0*pow(2.0,(24)/12.0), 8}, \ + {440.0*pow(2.0,(19)/12.0), 12}, \ + } + #endif + float goodbye_tune[][2] = GOODBYE_TUNE; #endif static action_t keycode_to_action(uint16_t keycode); @@ -189,7 +191,7 @@ static action_t keycode_to_action(uint16_t keycode) case RESET: ; // RESET is 0x5000, which is why this is here clear_keyboard(); #ifdef AUDIO_ENABLE - play_notes(&goodbye, 3, false, 0); + play_notes(&goodbye_tune, false, 0); #endif _delay_ms(250); #ifdef ATREUS_ASTAR From 45f10b4c4b308226fa1568277654a13853a03ab4 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sat, 16 Apr 2016 22:10:18 -0500 Subject: [PATCH 54/55] Fixed how note arrays are used. --- keyboard/atomic/keymaps/pvc/keymap.c | 44 ++++++---------------------- quantum/audio.c | 14 ++++----- quantum/audio.h | 17 +++++++++-- quantum/keymap_common.c | 4 +-- quantum/musical_notes.h | 7 ++++- 5 files changed, 39 insertions(+), 47 deletions(-) diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 22970834..c2081f52 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -75,8 +75,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }, }; -#define IS_LAYER_ON(layer) (layer_state & (1UL << (layer))) -#define IS_LAYER_OFF(layer) (!IS_LAYER_ON(layer)) #ifdef AUDIO_ENABLE @@ -201,24 +199,14 @@ Q_NOTE(_B8 ) , }; float tone_rs[][2] = { -Q_NOTE(_F8 ) , -Q_NOTE(_G8 ) , -Q_NOTE(_GS8 ) , -Q_NOTE(_A8 ) , +Q_NOTE(_A4 ) , +Q_NOTE(_A4 ) , +Q_NOTE(_A4 ) , +Q_NOTE(_A4 ) , Q_NOTE(_AS8 ) , Q_NOTE(_B8 ) , }; -float tone_fn[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16}, - {0, 4}, - {440.0*pow(2.0,(69)/12.0), 16}, - {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16} -}; #endif void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order) @@ -253,18 +241,18 @@ void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t l const uint16_t PROGMEM fn_actions[] = { }; -#define ARRAY_SIZE(x) ((sizeof x) / (sizeof *x)) +//#define MUSIC_ARRAY_SIZE(x) (((int)(sizeof(x) / (sizeof(x[0][0])))) / 2) const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + // MACRODOWN only works in this function switch(id) { case M_LW: if (record->event.pressed) { #ifdef AUDIO_ENABLE println("PlayNotes LW"); - print_val_hex32(ARRAY_SIZE(tone_lw)); - play_notes(&tone_lw, 96, false); + PLAY_NOTE_ARRAY(tone_lw, false, STACCATO); #endif layer_on(_LW); update_tri_layer(_LW, _RS, _FN); @@ -277,7 +265,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE println("PlayNotes RS"); - play_notes(&tone_rs, 6, false); + PLAY_NOTE_ARRAY(tone_rs, false, LEGATO); #endif layer_on(_RS); update_tri_layer(_LW, _RS, _FN); @@ -295,33 +283,19 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE float start_up[][2] = { Q_NOTE(_E4 ) , -{0,1} , Q_NOTE(_E4 ) , -{0,1} , Q_NOTE(_F4 ) , -{0,1} , Q_NOTE(_G4 ) , -{0,1} , Q_NOTE(_G4 ) , -{0,1} , Q_NOTE(_F4 ) , -{0,1} , Q_NOTE(_E4 ) , -{0,1} , Q_NOTE(_D4 ) , -{0,1} , Q_NOTE(_C4 ) , -{0,1} , Q_NOTE(_C4 ) , -{0,1} , Q_NOTE(_D4 ) , -{0,1} , Q_NOTE(_E4 ) , -{0,1} , H_NOTE(_E4 ) , -{0,1} , Q_NOTE(_D4 ) , -{0,1} , H_NOTE(_D4 ) , }; #endif @@ -329,7 +303,7 @@ H_NOTE(_D4 ) , void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 29, false); + PLAY_NOTE_ARRAY(start_up, false, STACCATO); println("Matrix Init"); #endif } diff --git a/quantum/audio.c b/quantum/audio.c index 40d09d62..90f3c5a1 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -181,7 +181,7 @@ void init_notes() { DDRC |= _BV(PORTC6); TIMSK3 &= ~_BV(OCIE3A); // Turn off 3A interputs - + TCCR3A = 0x0; // Options not needed TCCR3B = _BV(CS31) | _BV(CS30) | _BV(WGM32); // 64th prescaling and CTC OCR3A = SAMPLE_DIVIDER - 1; // Correct count/compare, related to sample playback @@ -202,14 +202,14 @@ ISR(TIMER3_COMPA_vect) { if (voices == 1) { // SINE OCR4A = pgm_read_byte(&sinewave[(uint16_t)place]) >> 2; - + // SQUARE // if (((int)place) >= 1024){ // OCR4A = 0xFF >> 2; // } else { // OCR4A = 0x00; // } - + // SAWTOOTH // OCR4A = (int)place / 4; @@ -298,9 +298,9 @@ ISR(TIMER3_COMPA_vect) { note_position++; bool end_of_note = false; - if (ICR3 > 0) + if (ICR3 > 0) end_of_note = (note_position >= (note_length / ICR3 * 0xFFFF)); - else + else end_of_note = (note_position >= (note_length * 0x7FF)); if (end_of_note) { current_note++; @@ -318,7 +318,7 @@ ISR(TIMER3_COMPA_vect) { return; } } - if (!note_resting && ((int)notes_rest != 0)) { + if (!note_resting && (notes_rest > 0)) { note_resting = true; note_frequency = 0; note_length = notes_rest; @@ -412,7 +412,7 @@ if (audio_config.enable && voices < 8) { if (frequency != 0) { double starting_f = frequency; if (frequency < freq) { - for (double f = starting_f; f <= freq; f += ((freq - starting_f) / 2000.0)) { + for (double f = starting_f; f <= freq; f += ((freq - starting_f) / 2000.0)) { frequency = f; } } else if (frequency > freq) { diff --git a/quantum/audio.h b/quantum/audio.h index 65a6f943..762c9806 100644 --- a/quantum/audio.h +++ b/quantum/audio.h @@ -4,6 +4,9 @@ #include #include "musical_notes.h" +#ifndef AUDIO_H +#define AUDIO_H + typedef union { uint8_t raw; struct { @@ -19,6 +22,16 @@ void audio_off(void); void play_sample(uint8_t * s, uint16_t l, bool r); void play_note(double freq, int vol); void stop_note(double freq); -void stop_all_notes(); -void init_notes(); +void stop_all_notes(void); +void init_notes(void); void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat, float n_rest); + + +// These macros are used to allow play_notes to play an array of indeterminate +// length. This works around the limitation of C's sizeof operation on pointers. +// The global float array for the song must be used here. +#define NOTE_ARRAY_SIZE(x) ((int)(sizeof(x) / (sizeof(x[0])))) +#define PLAY_NOTE_ARRAY(note_array, note_repeat, note_rest_style) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), (note_repeat), (note_rest_style)); + + +#endif \ No newline at end of file diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 457f70a4..61a51aed 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -189,7 +189,7 @@ static action_t keycode_to_action(uint16_t keycode) case RESET: ; // RESET is 0x5000, which is why this is here clear_keyboard(); #ifdef AUDIO_ENABLE - play_notes(&goodbye, 3, false, 0); + PLAY_NOTE_ARRAY(goodbye, false, 0); #endif _delay_ms(250); #ifdef ATREUS_ASTAR @@ -202,7 +202,7 @@ static action_t keycode_to_action(uint16_t keycode) debug_enable = true; break; case 0x5002 ... 0x50FF: - // MAGIC actions (BOOTMAGIC without the boot) + // MAGIC actions (BOOTMAGIC without the boot) if (!eeconfig_is_enabled()) { eeconfig_init(); } diff --git a/quantum/musical_notes.h b/quantum/musical_notes.h index 79f04fd9..837f6a06 100644 --- a/quantum/musical_notes.h +++ b/quantum/musical_notes.h @@ -9,7 +9,7 @@ #define WHOLE_NOTE(note) {(NOTE##note), 64} #define HALF_NOTE(note) {(NOTE##note), 32} #define QUARTER_NOTE(note) {(NOTE##note), 16} -#define EIGTH_NOTE(note) {(NOTE##note), 8} +#define EIGHTH_NOTE(note) {(NOTE##note), 8} #define SIXTEENTH_NOTE(note) {(NOTE##note), 4} // Note Types Short @@ -19,6 +19,11 @@ #define E_NOTE(n) EIGTH_NOTE(n) #define S_NOTE(n) SIXTEENTH_NOTE(n) +// Note Styles +// Staccato makes sure there is a rest between each note. Think: TA TA TA +// Legato makes notes flow together. Think: TAAA +#define STACCATO 0.01 +#define LEGATO 0 // Notes - # = Octave #define NOTE_REST 0.00 From a67d425f4d5278595e7ab785a0f246b83fb1a09f Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 17 Apr 2016 01:00:39 -0400 Subject: [PATCH 55/55] planck default layout updates --- keyboard/planck/Makefile | 4 +- keyboard/planck/keymaps/default/keymap.c | 183 +++++++++++++++-------- quantum/audio.c | 5 +- quantum/keymap_common.c | 8 +- 4 files changed, 130 insertions(+), 70 deletions(-) diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 83b8303b..01d9e3ce 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -139,10 +139,10 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # change to "no" to disable the options, or define them in the makefile.mk in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 207af2a1..aecddec4 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -11,24 +11,27 @@ // 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 _QW 0 -#define _CM 1 -#define _DV 2 -#define _LW 3 -#define _RS 4 -#define _AD 5 +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 5 +#define _MUSIC 6 // Macro name shortcuts -#define QWERTY M(_QW) -#define COLEMAK M(_CM) -#define DVORAK M(_DV) -#define LOWER M(_LW) -#define RAISE M(_RS) +#define QWERTY M(_QWERTY) +#define COLEMAK M(_COLEMAK) +#define DVORAK M(_DVORAK) +#define LOWER M(_LOWER) +#define RAISE M(_RAISE) #define M_BL 5 #ifdef AUDIO_ENABLE #define AUD_OFF M(6) #define AUD_ON M(7) #endif +#define MUS_OFF M(8) +#define MUS_ON M(9) // Fillers to make layering more clear #define _______ KC_TRNS @@ -47,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_QW] = { +[_QWERTY] = { {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, @@ -65,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_CM] = { +[_COLEMAK] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, @@ -83,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_DV] = { +[_DVORAK] = { {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, @@ -101,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_LW] = { +[_LOWER] = { {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, @@ -119,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_RS] = { +[_RAISE] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, @@ -130,16 +133,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | | Reset| | | | | | | | | | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff| | |Qwerty|Colemk|Dvorak| | | + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | | | | | | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ -[_AD] = { +[_ADJUST] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AUD_ON, AUD_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, _______, _______, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, + +/* Music (reserved for process_action_user) + * + */ +[_MUSIC] = { + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -150,87 +163,102 @@ const uint16_t PROGMEM fn_actions[] = { }; #ifdef AUDIO_ENABLE -float start_up[][2] = { - {440.0*pow(2.0,(67)/12.0), 12}, - {440.0*pow(2.0,(64)/12.0), 8}, - {440.0*pow(2.0,(55)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {440.0*pow(2.0,(64)/12.0), 20} +float tone_startup[][2] = { + {440.0*pow(2.0,(31)/12.0), 12}, + {440.0*pow(2.0,(28)/12.0), 8}, + {440.0*pow(2.0,(19)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, + {440.0*pow(2.0,(28)/12.0), 20} }; -float tone_qw[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, +float tone_qwerty[][2] = { + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16} + {440.0*pow(2.0,(31)/12.0), 16} }; -float tone_cm[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, +float tone_colemak[][2] = { + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 12}, + {440.0*pow(2.0,(31)/12.0), 12}, {0, 4}, - {440.0*pow(2.0,(71)/12.0), 12} + {440.0*pow(2.0,(35)/12.0), 12} }; -float tone_dv[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, +float tone_dvorak[][2] = { + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 8}, + {440.0*pow(2.0,(31)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(69)/12.0), 8}, + {440.0*pow(2.0,(33)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 8} + {440.0*pow(2.0,(31)/12.0), 8} +}; + +float tone_music[][2] = { + {440.0*pow(2.0,(12)/12.0), 8}, + {440.0*pow(2.0,(14)/12.0), 8}, + {440.0*pow(2.0,(16)/12.0), 8}, + {440.0*pow(2.0,(17)/12.0), 8}, + {440.0*pow(2.0,(19)/12.0), 8}, + {440.0*pow(2.0,(21)/12.0), 8}, + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8} }; #endif +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_write_default_layer(default_layer); + default_layer_set(default_layer); +} + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - // MACRODOWN only works in this function switch(id) { - case _QW: + case _QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_qw, false, 0); + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); #endif - default_layer_set(1UL<<_QW); + persistant_default_layer_set(1UL<<_QWERTY); } break; - case _CM: + case _COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_cm, false, 0); + PLAY_NOTE_ARRAY(tone_colemak, false, 0); #endif - default_layer_set(1UL<<_CM); + persistant_default_layer_set(1UL<<_COLEMAK); } break; - case _DV: + case _DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_dv, false, 0); + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); #endif - default_layer_set(1UL<<_DV); + persistant_default_layer_set(1UL<<_DVORAK); } break; - case _LW: + case _LOWER: if (record->event.pressed) { - layer_on(_LW); - update_tri_layer(_LW, _RS, _AD); + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { - layer_off(_LW); - update_tri_layer(_LW, _RS, _AD); + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } break; - case _RS: + case _RAISE: if (record->event.pressed) { - layer_on(_RS); - update_tri_layer(_LW, _RS, _AD); + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { - layer_off(_RS); - update_tri_layer(_LW, _RS, _AD); + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } break; case M_BL: @@ -254,7 +282,23 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - PLAY_NOTE_ARRAY(start_up, false, 0); + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif + } + break; + case 8: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + layer_off(_MUSIC); + stop_all_notes(); + #endif + } + break; + case 9: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_music, false, 0); + layer_on(_MUSIC); #endif } break; @@ -262,9 +306,24 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; +uint8_t starting_note = 0x0C; +int offset = 7; + +void process_action_user(keyrecord_t *record) { + + if (IS_LAYER_ON(_MUSIC)) { + if (record->event.pressed) { + play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + } else { + stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); + } + } + +} + void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - PLAY_NOTE_ARRAY(start_up, false, 0); + PLAY_NOTE_ARRAY(tone_startup, false, 0); #endif } diff --git a/quantum/audio.c b/quantum/audio.c index 90f3c5a1..6bd6532a 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -350,7 +350,6 @@ if (audio_config.enable) { if (note) stop_all_notes(); - notes = true; notes_pointer = np; notes_length = n_length; @@ -375,6 +374,8 @@ if (audio_config.enable) { TIMSK3 |= _BV(OCIE3A); TCCR3A |= _BV(COM3A1); #endif + + notes = true; } } @@ -404,7 +405,6 @@ if (audio_config.enable && voices < 8) { if (notes) stop_all_notes(); - note = true; #ifdef PWM_AUDIO freq = freq / SAMPLE_RATE; #endif @@ -436,6 +436,7 @@ if (audio_config.enable && voices < 8) { TCCR3A |= _BV(COM3A1); #endif + note = true; } } \ No newline at end of file diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 02d3c74b..d38e6fdb 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -33,14 +33,14 @@ extern keymap_config_t keymap_config; #include #ifdef AUDIO_ENABLE #include "audio.h" - #ifndef GOODBYE_TUNE - #define GOODBYE_TUNE { \ + #ifndef TONE_GOODBYE + #define TONE_GOODBYE { \ {440.0*pow(2.0,(31)/12.0), 8}, \ {440.0*pow(2.0,(24)/12.0), 8}, \ {440.0*pow(2.0,(19)/12.0), 12}, \ } #endif - float goodbye_tune[][2] = GOODBYE_TUNE; + float tone_goodbye[][2] = TONE_GOODBYE; #endif static action_t keycode_to_action(uint16_t keycode); @@ -191,7 +191,7 @@ static action_t keycode_to_action(uint16_t keycode) case RESET: ; // RESET is 0x5000, which is why this is here clear_keyboard(); #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(goodbye_tune, false, 0); + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); #endif _delay_ms(250); #ifdef ATREUS_ASTAR

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