diff options
author | Alex Johnstone <alexjj@gmail.com> | 2016-04-05 16:44:37 +0200 |
---|---|---|
committer | Alex Johnstone <alexjj@gmail.com> | 2016-04-05 16:44:37 +0200 |
commit | 1facc53a26294df7fb2a42f8f3d025176b8c384a (patch) | |
tree | 98eebfa4beb49524c1345c2dd9e93d1fb8aa445a /keyboard/preonic | |
parent | 48899673af8b82638d601455f405f03db165bd57 (diff) | |
parent | 931b0a79fc071498c229b0051be0ebadd934a549 (diff) | |
download | qmk_firmware-1facc53a26294df7fb2a42f8f3d025176b8c384a.tar.gz qmk_firmware-1facc53a26294df7fb2a42f8f3d025176b8c384a.tar.xz |
Merge pull request #5 from jackhumbert/master
Sync with upstream
Diffstat (limited to 'keyboard/preonic')
31 files changed, 5149 insertions, 1851 deletions
diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index 0145e44bc..664aff732 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/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. @@ -39,25 +39,41 @@ #---------------------------------------------------------------------------- # Target file name (without extension). -TARGET = preonic_lufa +TARGET = preonic + # Directory common source filess exist TOP_DIR = ../.. +TMK_DIR = ../../tmk_core # Directory keyboard dependent files exist TARGET_DIR = . # # project specific files -SRC = extended_keymap_common.c \ - matrix.c \ - led.c \ - backlight.c +SRC = preonic.c + +ifdef keymap + KEYMAP = $(keymap) +endif ifdef KEYMAP - SRC := extended_keymaps/extended_keymap_$(KEYMAP).c $(SRC) +ifneq ("$(wildcard keymaps/$(KEYMAP).c)","") + KEYMAP_FILE = keymaps/$(KEYMAP).c else - SRC := extended_keymaps/extended_keymap_default.c $(SRC) +ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","") + KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c +else +$(error Keymap file does not exist) +endif endif +else +ifneq ("$(wildcard keymaps/default.c)","") + KEYMAP_FILE = keymaps/default.c +else + KEYMAP_FILE = keymaps/default/keymap.c +endif +endif +SRC := $(KEYMAP_FILE) $(SRC) CONFIG_H = config.h @@ -120,24 +136,26 @@ 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 +# 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 -BACKLIGHT_ENABLE = yes - -ifdef MIDI_ENABLE - SRC += keymap_midi.c \ - beeps.c +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 endif + # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax # Search Path VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) +VPATH += $(TMK_DIR) -include $(TOP_DIR)/protocol/lufa.mk -include $(TOP_DIR)/common.mk -include $(TOP_DIR)/rules.mk +include $(TOP_DIR)/quantum/quantum.mk diff --git a/keyboard/preonic/Makefile.pjrc b/keyboard/preonic/Makefile.pjrc deleted file mode 100644 index be83ba18b..000000000 --- a/keyboard/preonic/Makefile.pjrc +++ /dev/null @@ -1,116 +0,0 @@ -#---------------------------------------------------------------------------- -# On command line: -# -# make all = Make software. -# -# make clean = Clean out built project files. -# -# make coff = Convert ELF to AVR COFF. -# -# make extcoff = Convert ELF to AVR Extended COFF. -# -# make program = Download the hex file to the device. -# Please customize your programmer settings(PROGRAM_CMD) -# -# make teensy = Download the hex file to the device, using teensy_loader_cli. -# (must have teensy_loader_cli installed). -# -# make dfu = Download the hex file to the device, using dfu-programmer (must -# have dfu-programmer installed). -# -# make flip = Download the hex file to the device, using Atmel FLIP (must -# have Atmel FLIP installed). -# -# make dfu-ee = Download the eeprom file to the device, using dfu-programmer -# (must have dfu-programmer installed). -# -# 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, -# with avr-gdb or avr-insight as the front end for debugging. -# -# make filename.s = Just compile filename.c into the assembler code only. -# -# make filename.i = Create a preprocessed source file for use in submitting -# bug reports to the GCC project. -# -# To rebuild project do "make clean" then "make all". -#---------------------------------------------------------------------------- - -# Target file name (without extension). -TARGET = gh60_pjrc - -# Directory common source filess exist -TOP_DIR = ../.. - -# Directory keyboard dependent files exist -TARGET_DIR = . - -# project specific files -SRC = keymap_common.c \ - matrix.c \ - led.c - -ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) -else - SRC := keymap_jack.c $(SRC) -endif - -CONFIG_H = config.h - - -# MCU name, you MUST set this to match the board you are using -# type "make clean" after changing this, so all files will be rebuilt -MCU = atmega32u4 -#MCU = at90usb1286 - - -# Processor frequency. -# Normally the first thing your program should do is set the clock prescaler, -# so your program will run at the correct speed. You should also set this -# variable to same clock speed. The _delay_ms() macro uses this, and many -# examples use this variable to calculate timings. Do not add a "UL" here. -F_CPU = 16000000 - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -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(+5000) -EXTRAKEY_ENABLE = yes # Audio control and System control(+600) -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover(+500) -#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support - - -# Search Path -VPATH += $(TARGET_DIR) -VPATH += $(TOP_DIR) - -include $(TOP_DIR)/protocol/pjrc.mk -include $(TOP_DIR)/common.mk -include $(TOP_DIR)/rules.mk - -plain: OPT_DEFS += -DKEYMAP_PLAIN -plain: all - -poker: OPT_DEFS += -DKEYMAP_POKER -poker: all - -poker_set: OPT_DEFS += -DKEYMAP_POKER_SET -poker_set: all - -poker_bit: OPT_DEFS += -DKEYMAP_POKER_BIT -poker_bit: all diff --git a/keyboard/preonic/PCB_GUIDE.md b/keyboard/preonic/PCB_GUIDE.md deleted file mode 100644 index c3004c75a..000000000 --- a/keyboard/preonic/PCB_GUIDE.md +++ /dev/null @@ -1,116 +0,0 @@ -# Planck Firmware Guide - -## Setting up the environment - -### Windows -1. Install [WinAVR Tools](http://sourceforge.net/projects/winavr/) for AVR GCC compiler. -2. Install [DFU-Programmer][dfu-prog] (the -win one). -3. Start DFU bootloader on the chip first time you will see 'Found New Hardware Wizard' to install driver. If you install device driver properly you can find chip name like 'ATmega32U4' under 'LibUSB-Win32 Devices' tree on 'Device Manager'. If not you will need to update its driver on 'Device Manager' to the `dfu-programmer` driver. - -### Mac -1. Install [CrossPack](http://www.obdev.at/products/crosspack/index.html) or install Xcode from the App Store and install the Command Line Tools from `Xcode->Preferences->Downloads`. -2. Install [DFU-Programmer][dfu-prog]. - -### Linux -1. Install AVR GCC with your favorite package manager. -2. Install [DFU-Programmer][dfu-prog]. - -##Verify Your Installation -1. Clone the following repository: https://github.com/jackhumbert/tmk_keyboard -2. Open a Terminal and `cd` into `tmk_keyboard/keyboard/planck` -3. Run `make`. This should output a lot of information about the build process. - -## Using the built-in functions - -Here is a list of some of the functions available from the command line: - -* `make clean`: clean the environment - may be required in-between builds -* `make`: compile the code -* `make COMMON=true`: compile with the common (non-extended) keymap -* `make MATRIX=<matrix_file>`: compile with the referenced matrix file. Default if unspecified is `matrix_pcb.c`. For handwired boards, use `matrix_handwired.c`. -* `make KEYMAP=<keymap>`: compile with the extended keymap file `extended_keymaps/extended_keymap_<keymap>.c` -* `make COMMON=true KEYMAP=<keymap>`: compile with the common keymap file `common_keymaps/keymap_<keymap>.c` -* `make dfu`: build and flash the layout to the PCB -* `make dfu-force`: build and force-flash the layout to the PCB (may be require for first flash) - -Generally, the instructions to flash the PCB are as follows: - -1. Make changes to the appropriate keymap file -2. Save the file -3. `make clean` -4. Press the reset button on the PCB/press the key with the `RESET` keycode -5. `make <arguments> dfu` - use the necessary `KEYMAP=<keymap>` and/or `COMMON=true` arguments here. - -## Extended keymap - -### Keymap - -Unlike the common keymap, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/jackhumbert/tmk_keyboard/blob/master/keyboard/planck/extended_keymap_common.h). - -You can use modifiers with keycodes like this: - - LCTL(KC_C) - -Which will generate Ctrl+c. These are daisy-chainable, meaning you can do things like: - - LCTL(LALT(KC_C)) - -That will generate Ctrl+Alt+c. The entire list of these functions is here: - -* `LCTL()`: Left control -* `LSFT()` / `S()`: Left shift -* `LALT()`: Left alt/opt -* `LGUI()`: Left win/cmd -* `RCTL()`: Right control -* `RSFT()`: Right shift -* `RALT()`: Right alt/opt -* `RGUI()`: Right win/cmd - -`S(KC_1)`-like entries are useful in writing keymaps for the Planck. - -### Other keycodes - -A number of other keycodes have been added that you may find useful: - -* `CM_<key>`: the Colemak equivalent of a key (in place of `KC_<key>`), when using Colemak in software (`CM_O` generates `KC_SCLN`) -* `RESET`: jump to bootloader for flashing (same as press the reset button) -* `BL_STEP`: step through the backlight brightnesses -* `BL_<0-15>`: set backlight brightness to 0-15 -* `BL_DEC`: lower the backlight brightness -* `BL_INC`: raise the backlight brightness -* `BL_TOGG`: toggle the backlight on/off - -### Function layers - -The extended keymap extends the number of function layers from 32 to the near-infinite value of 256. Rather than using `FN<num>` notation (still available, but limited to `FN0`-`FN31`), you can use the `FUNC(<num>)` notation. `F(<num>)` is a shortcut for this. - -The function actions are unchanged, and you can see the full list of them [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/common/action_code.h). They are explained in detail [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keymap.md#2-action). - -### Macros - -Macros have been setup in the `extended_keymaps/extended_keymaps_default.c` file so that you can use `M(<num>)` to access a macro in the `action_get_macro` section on your keymap. The switch/case structure you see here is required, and is setup for `M(0)` - you'll need to copy and paste the code to look like this (e.g. to support `M(3)`): - - switch(id) { - case 0: - return MACRODOWN(TYPE(KC_A), END); - break; - case 1: - return MACRODOWN(TYPE(KC_B), END); - break; - case 2: - return MACRODOWN(TYPE(KC_C), END); - break; - case 3: - return MACRODOWN(TYPE(KC_D), END); - break; - } - return MACRO_NONE; - -`MACRODOWN()` is a shortcut for `(record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)` which tells the macro to execute when the key is pressed. Without this, the macro will be executed on both the down and up stroke. - -[cygwin]: https://www.cygwin.com/ -[mingw]: http://www.mingw.org/ -[mhv]: https://infernoembedded.com/products/avr-tools -[winavr]: http://winavr.sourceforge.net/ -[crosspack]: http://www.obdev.at/products/crosspack/index.html -[dfu-prog]: http://dfu-programmer.sourceforge.net/ diff --git a/keyboard/preonic/README.md b/keyboard/preonic/README.md index ee824d26e..4a33a3e4e 100644 --- a/keyboard/preonic/README.md +++ b/keyboard/preonic/README.md @@ -1,56 +1,25 @@ -Planck keyboard firmware +Preonic keyboard firmware ====================== -DIY/Assembled compact ortholinear 40% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com). +DIY/Assembled compact ortholinear 50% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com). -## Extended Keymap -If you include extended_keymap_common.h instead of keymap_common.h at the top of your file, you'll have access to a bunch of goodies: +## Quantum MK Firmware -- Use `LSFT()`, `LCTL()`, et. al. (listed in extended_keymap_common.h) as modifiers for keys (daisy-chain-able) -- Use `FUNC(1)` instead of `FN1` (etc.) to access the function layers beyond the 32 function layer limit -- Use `CM_F` instead of `KC_F` to get the ColeMak equivilent for shortcuts (maps backwards) -- Use `MACRODOWN()` instead of `MACRO()` to easily make a keydown macro (`CM_*` works here too) +For the full Quantum feature list, see [the parent README.md](/README.md). -### Some notes on usage: +## Building -- The `KEYMAP()` macro is unable to be used due to the bitwise modifications that take place - refer to extended_keymap_jack.c to see how to set things up with the `KC_` prefix -- Keep an eye on the Makefile - this needs to include the correct files to work -- Don't forget to use `const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {` instead of the 8bit equivilent - -## Build - -Follow [this guide](http://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177.html) to setup your development environment before anything else. Abbreviated instructions are provide at the [bottom of this document](https://github.com/rswiernik/tmk_keyboard/tree/rswiernik_dev/keyboard/planck#environment-setup) - -Download the whole firmware [here](https://github.com/jackhumbert/tmk_keyboard/archive/master.zip) and navigate to the keyboard/planck folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex that you can load with the Teensy app onto your Planck (once you've hit reset/shorted GND & RST). +Download or clone the whole firmware and navigate to the keyboard/preonic folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button. Depending on which keymap you would like to use, you will have to compile slightly differently. -####Default -To build with the default keymap, simply move to the tmk\_keyboard/keyboard/planck/ and run `make` as follows: -``` -$ make -``` - -## Keymap -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files. - -####**Extended Keymaps** +### Default +To build with the default keymap, simply run `make`. -To build the firmware binary hex file with an extended keymap just do `make` with `KEYMAP` option like: -``` -$ make KEYMAP=[common|jack|<name>] -``` -_The only applicable keymaps will work with this option._ Extended keymaps follow the format **__extended\_keymap\_\<name\>.c__** +### Other Keymaps +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap, create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files. -####**Common Keymaps** - -Building with a common keymap is as simple as adding the COMMON option. Note that only +To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: ``` -$ make KEYMAP=[common|jack|<name>] COMMON=true +$ make KEYMAP=[default|jack|<name>] ``` -_The only applicable keymaps will work with this option._ Common keymaps follow the format **__keymap\_\<name\>.c__** - -## Notable TMK forks (which some of the keymap files are from) -- [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck) -- [Pierre's Fork](https://github.com/pcarrier/tmk_keyboard/blob/pcarrier/planck/keyboard/gh60/keymap_planck.c) -- [Nathan's Fork](https://github.com/nathanrosspowell/tmk_keyboard/tree/planck-jack/keyboard/planck) -- [Matthew's Fork](https://github.com/pepers/tmk_keyboard/tree/master/keyboard/planck_grid) +Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder. diff --git a/keyboard/preonic/__avr_gdbinit b/keyboard/preonic/__avr_gdbinit deleted file mode 100644 index afc51e6d1..000000000 --- a/keyboard/preonic/__avr_gdbinit +++ /dev/null @@ -1,6 +0,0 @@ -define reset -SIGNAL SIGHUP -end -file planck_lufa.elf -target remote localhost:4242 -break main diff --git a/keyboard/preonic/analog.c b/keyboard/preonic/analog.c deleted file mode 100644 index 49b84ee0e..000000000 --- a/keyboard/preonic/analog.c +++ /dev/null @@ -1,53 +0,0 @@ -// Simple analog to digitial conversion - -#include <avr/io.h> -#include <avr/pgmspace.h> -#include <stdint.h> -#include "analog.h" - - -static uint8_t aref = (1<<REFS0); // default to AREF = Vcc - - -void analogReference(uint8_t mode) -{ - aref = mode & 0xC0; -} - - -// Arduino compatible pin input -int16_t analogRead(uint8_t pin) -{ -#if defined(__AVR_ATmega32U4__) - static const uint8_t PROGMEM pin_to_mux[] = { - 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, - 0x25, 0x24, 0x23, 0x22, 0x21, 0x20}; - if (pin >= 12) return 0; - return adc_read(pgm_read_byte(pin_to_mux + pin)); -#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) - if (pin >= 8) return 0; - return adc_read(pin); -#else - return 0; -#endif -} - -// Mux input -int16_t adc_read(uint8_t mux) -{ -#if defined(__AVR_AT90USB162__) - return 0; -#else - uint8_t low; - - ADCSRA = (1<<ADEN) | ADC_PRESCALER; // enable ADC - ADCSRB = (1<<ADHSM) | (mux & 0x20); // high speed mode - ADMUX = aref | (mux & 0x1F); // configure mux input - ADCSRA = (1<<ADEN) | ADC_PRESCALER | (1<<ADSC); // start the conversion - while (ADCSRA & (1<<ADSC)) ; // wait for result - low = ADCL; // must read LSB first - return (ADCH << 8) | low; // must read MSB only once! -#endif -} - - diff --git a/keyboard/preonic/analog.h b/keyboard/preonic/analog.h deleted file mode 100644 index 9b95a93be..000000000 --- a/keyboard/preonic/analog.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef _analog_h_included__ -#define _analog_h_included__ - -#include <stdint.h> - -void analogReference(uint8_t mode); -int16_t analogRead(uint8_t pin); -int16_t adc_read(uint8_t mux); - -#define ADC_REF_POWER (1<<REFS0) -#define ADC_REF_INTERNAL ((1<<REFS1) | (1<<REFS0)) -#define ADC_REF_EXTERNAL (0) - -// These prescaler values are for high speed mode, ADHSM = 1 -#if F_CPU == 16000000L -#define ADC_PRESCALER ((1<<ADPS2) | (1<<ADPS1)) -#elif F_CPU == 8000000L -#define ADC_PRESCALER ((1<<ADPS2) | (1<<ADPS0)) -#elif F_CPU == 4000000L -#define ADC_PRESCALER ((1<<ADPS2)) -#elif F_CPU == 2000000L -#define ADC_PRESCALER ((1<<ADPS1) | (1<<ADPS0)) -#elif F_CPU == 1000000L -#define ADC_PRESCALER ((1<<ADPS1)) -#else -#define ADC_PRESCALER ((1<<ADPS0)) -#endif - -// some avr-libc versions do not properly define ADHSM -#if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) -#if !defined(ADHSM) -#define ADHSM (7) -#endif -#endif - -#endif diff --git a/keyboard/preonic/beeps.c b/keyboard/preonic/beeps.c deleted file mode 100644 index 8ffd70f41..000000000 --- a/keyboard/preonic/beeps.c +++ /dev/null @@ -1,246 +0,0 @@ -#include "beeps.h" -#include <math.h> -#include <avr/pgmspace.h> -#include <avr/interrupt.h> -#include <avr/io.h> - -#define PI 3.14159265 - -void delay_us(int count) { - while(count--) { - _delay_us(1); - } -} - -int voices = 0; -double frequency = 0; -int volume = 0; -int position = 0; - -double frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0}; -int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0}; -bool sliding = false; -#define RANGE 1000 -volatile int i=0; //elements of the wave - - -void beeps() { - play_notes(); -} - -void send_freq(double freq, int vol) { - int duty = (((double)F_CPU) / freq); - ICR3 = duty; // Set max to the period - OCR3A = duty >> (0x10 - vol); // Set compare to half the period -} - -void stop_all_notes() { - voices = 0; - TCCR3A = 0; - TCCR3B = 0; - frequency = 0; - volume = 0; - - for (int i = 0; i < 8; i++) { - frequencies[i] = 0; - volumes[i] = 0; - } -} - -void stop_note(double freq) { - 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) { - TCCR3A = 0; - TCCR3B = 0; - frequency = 0; - volume = 0; - } else { - double freq = frequencies[voices - 1]; - int vol = volumes[voices - 1]; - if (frequency < freq) { - sliding = true; - for (double f = frequency; f <= freq; f += ((freq - frequency) / 500.0)) { - send_freq(f, vol); - } - sliding = false; - } else if (frequency > freq) { - sliding = true; - for (double f = frequency; f >= freq; f -= ((frequency - freq) / 500.0)) { - send_freq(f, vol); - } - sliding = false; - } - send_freq(freq, vol); - frequency = freq; - volume = vol; - } -} - -void init_notes() { - // TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (1 << WGM10); - // TCCR1B = (1 << COM1B1) | (0 << COM1A0) | (1 << WGM13) | (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10); - - // DDRC |= (1<<6); - - // TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); - // TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (0 << CS31) | (1 << CS30); - - // ICR3 = 0xFFFF; - // OCR3A = (int)((float)wave[i]*ICR3/RANGE); //go to next array element - - - // cli(); - - // /* Enable interrupt on timer2 == 127, with clk/8 prescaler. At 16MHz, - // this gives a timer interrupt at 15625Hz. */ - // TIMSK3 = (1 << OCIE3A); - - // /* clear/reset timer on match */ - // // TCCR3A = 1<<WGM31 | 0<<WGM30; CTC mode, reset on match - // // TCCR3B = 0<<CS32 | 1<<CS31 | 0<<CS30; /* clk, /8 prescaler */ - - // TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); - // TCCR3B = (0 << WGM33) | (0 << WGM32) | (0 << CS32) | (0 << CS31) | (1 << CS30); - - - // TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (0 << WGM10); - // TCCR1B = (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10); - // // SPCR = 0x50; - // // SPSR = 0x01; - // DDRC |= (1<<6); - // // ICR3 = 0xFFFF; - // // OCR3A=80; - // PORTC |= (1<<6); - - // sei(); -} - -// #define highByte(c) ((c >> 8) & 0x00FF) -// #define lowByte(c) (c & 0x00FF) - -ISR(TIMER3_COMPA_vect) { - - if (ICR3 > 0 && !sliding) { - switch (position) { - case 0: { - int duty = (((double)F_CPU) / (frequency)); - ICR3 = duty; // Set max to the period - OCR3A = duty >> 1; // Set compare to half the period - break; - } - case 1: { - int duty = (((double)F_CPU) / (frequency*2)); - ICR3 = duty; // Set max to the period - OCR3A = duty >> 1; // Set compare to half the period - break; - } - case 2: { - int duty = (((double)F_CPU) / (frequency*3)); - ICR3 = duty; // Set max to the period - OCR3A = duty >> 1; // Set compare to half the period - break; - } - } - position = (position + 1) % 3; - } -// /* OCR2A has been cleared, per TCCR2A above */ -// // OCR3A = 127; - -// // pos1 += incr1; -// // pos2 += incr2; -// // pos3 += incr3; - -// // sample = sinewave[highByte(pos1)] + sinewave[highByte(pos2)] + sinewave[highByte(pos3)]; - -// // OCR3A = sample; - - -// OCR3A=pgm_read_byte(&sinewave[pos1]); -// pos1++; -// // PORTC &= ~(1<<6); - -// /* buffered, 1x gain, active mode */ -// // SPDR = highByte(sample) | 0x70; -// // while (!(SPSR & (1<<SPIF))); - -// // SPDR = lowByte(sample); -// // while (!(SPSR & (1<<SPIF))); - -// // PORTC |= (1<<6); -} - -void play_note(double freq, int vol) { - - if (freq > 0) { - DDRC |= (1<<6); - - TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); - TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30); - - if (frequency != 0) { - if (frequency < freq) { - for (double f = frequency; f <= freq; f += ((freq - frequency) / 500.0)) { - send_freq(f, vol); - } - } else if (frequency > freq) { - for (double f = frequency; f >= freq; f -= ((frequency - freq) / 500.0)) { - send_freq(f, vol); - } - } - } - send_freq(freq, vol); - frequency = freq; - volume = vol; - - frequencies[voices] = frequency; - volumes[voices] = volume; - voices++; - } - // ICR3 = 0xFFFF; - // for (int i = 0; i < 10000; i++) { - // OCR3A = round((sin(i*freq)*.5)+.5)*0xFFFF; - // // _delay_us(50); - // } - - // TCCR3A = 0; - // TCCR3B = 0; -} - -// void note(int x, float length) { -// DDRC |= (1<<6); -// int t = (int)(440*pow(2,-x/12.0)); // starting note -// for (int y = 0; y < length*1000/t; y++) { // note length -// PORTC |= (1<<6); -// delay_us(t); -// PORTC &= ~(1<<6); -// delay_us(t); -// } -// PORTC &= ~(1<<6); -// } - -// void true_note(float x, float y, float length) { -// for (uint32_t i = 0; i < length * 50; i++) { -// uint32_t v = (uint32_t) (round(sin(PI*2*i*640000*pow(2, x/12.0))*.5+1 + sin(PI*2*i*640000*pow(2, y/12.0))*.5+1) / 2 * pow(2, 8)); -// for (int u = 0; u < 8; u++) { -// if (v & (1 << u) && !(PORTC&(1<<6))) -// PORTC |= (1<<6); -// else if (PORTC&(1<<6)) -// PORTC &= ~(1<<6); -// } -// } -// PORTC &= ~(1<<6); -// }
\ No newline at end of file diff --git a/keyboard/preonic/beeps.h b/keyboard/preonic/beeps.h deleted file mode 100644 index 378983c60..000000000 --- a/keyboard/preonic/beeps.h +++ /dev/null @@ -1,12 +0,0 @@ -#include <stdint.h> -#include <stdbool.h> -#include <avr/io.h> -#include <util/delay.h> - -void note(int x, float length); -void beeps(); -void true_note(float x, float y, float length); -void play_note(double freq, int vol); -void stop_note(double freq); -void stop_all_notes(); -void init_notes();
\ No newline at end of file diff --git a/keyboard/preonic/config.h b/keyboard/preonic/config.h index cad269c9d..5528667fa 100644 --- a/keyboard/preonic/config.h +++ b/keyboard/preonic/config.h @@ -18,11 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #ifndef CONFIG_H #define CONFIG_H -#include "config_definitions.h" +#include "config_common.h" /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6062 +#define PRODUCT_ID 0x6061 #define DEVICE_VER 0x0001 #define MANUFACTURER Ortholinear Keyboards #define PRODUCT The Preonic Keyboard @@ -34,7 +34,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* Planck PCB default pin-out */ #define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } -#define ROWS (int []){ D1, D0, D5, B5, B6 } +#define ROWS (int []){ D2, D5, B5, B6, D3 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST @@ -55,6 +58,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) +/* ws2812 RGB LED */ +#define ws2812_PORTREG PORTD +#define ws2812_DDRREG DDRD +#define ws2812_pin PD1 +#define RGBLED_NUM 28 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboard/preonic/config_definitions.h b/keyboard/preonic/config_definitions.h deleted file mode 100644 index fd138b884..000000000 --- a/keyboard/preonic/config_definitions.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef CONFIG_DEFINITIONS_H -#define CONFIG_DEFINITIONS_H - -#define B0 0x20 -#define B1 0x21 -#define B2 0x22 -#define B3 0x23 -#define B4 0x24 -#define B5 0x25 -#define B6 0x26 -#define B7 0x27 -#define C0 0x30 -#define C1 0x31 -#define C2 0x32 -#define C3 0x33 -#define C4 0x34 -#define C5 0x35 -#define C6 0x36 -#define C7 0x37 -#define D0 0x40 -#define D1 0x41 -#define D2 0x42 -#define D3 0x43 -#define D4 0x44 -#define D5 0x45 -#define D6 0x46 -#define D7 0x47 -#define E0 0x50 -#define E1 0x51 -#define E2 0x52 -#define E3 0x53 -#define E4 0x54 -#define E5 0x55 -#define E6 0x56 -#define E7 0x57 -#define F0 0x60 -#define F1 0x61 -#define F2 0x62 -#define F3 0x63 -#define F4 0x64 -#define F5 0x65 -#define F6 0x66 -#define F7 0x67 - - - - - -#endif - diff --git a/keyboard/preonic/extended_keymap_common.c b/keyboard/preonic/extended_keymap_common.c deleted file mode 100644 index 4fa80de7c..000000000 --- a/keyboard/preonic/extended_keymap_common.c +++ /dev/null @@ -1,216 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako <wakojun@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "extended_keymap_common.h" -#include "report.h" -#include "keycode.h" -#include "action_layer.h" -#include "action.h" -#include "action_macro.h" -#include "debug.h" -#include "backlight.h" -#include "keymap_midi.h" -#include <lufa.h> - -static action_t keycode_to_action(uint16_t keycode); - -/* converts key to action */ -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); - return action; - } else if (keycode >= 0x2000 && keycode < 0x3000) { - // Is a shortcut for function layer, pull last 12bits - return keymap_func_to_action(keycode & 0xFFF); - } else if (keycode >= 0x3000 && keycode < 0x4000) { - action_t action; - action.code = ACTION_MACRO(keycode & 0xFF); - return action; - } 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; - } else if (keycode == RESET) { - bootloader_jump(); - return; - } else if (keycode == DEBUG) { - print("\nDEBUG: enabled.\n"); - debug_enable = true; - return; - } else if (keycode >= 0x6000 && keycode < 0x7000) { - action_t action; - action.code = ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8); - return action; - } - - 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) { - return keycode_to_action(KC_LCTL); - } - return keycode_to_action(keycode); - case KC_LCTL: - if (keymap_config.swap_control_capslock) { - return keycode_to_action(KC_CAPSLOCK); - } - return keycode_to_action(KC_LCTL); - case KC_LALT: - if (keymap_config.swap_lalt_lgui) { - if (keymap_config.no_gui) { - return keycode_to_action(ACTION_NO); - } - return keycode_to_action(KC_LGUI); - } - return keycode_to_action(KC_LALT); - case KC_LGUI: - if (keymap_config.swap_lalt_lgui) { - return keycode_to_action(KC_LALT); - } - if (keymap_config.no_gui) { - return keycode_to_action(ACTION_NO); - } - return keycode_to_action(KC_LGUI); - case KC_RALT: - if (keymap_config.swap_ralt_rgui) { - if (keymap_config.no_gui) { - return keycode_to_action(ACTION_NO); - } - return keycode_to_action(KC_RGUI); - } - return keycode_to_action(KC_RALT); - case KC_RGUI: - if (keymap_config.swap_ralt_rgui) { - return keycode_to_action(KC_RALT); - } - if (keymap_config.no_gui) { - return keycode_to_action(ACTION_NO); - } - return keycode_to_action(KC_RGUI); - case KC_GRAVE: - if (keymap_config.swap_grave_esc) { - return keycode_to_action(KC_ESC); - } - return keycode_to_action(KC_GRAVE); - case KC_ESC: - if (keymap_config.swap_grave_esc) { - return keycode_to_action(KC_GRAVE); - } - return keycode_to_action(KC_ESC); - case KC_BSLASH: - if (keymap_config.swap_backslash_backspace) { - return keycode_to_action(KC_BSPACE); - } - return keycode_to_action(KC_BSLASH); - case KC_BSPACE: - if (keymap_config.swap_backslash_backspace) { - return keycode_to_action(KC_BSLASH); - } - return keycode_to_action(KC_BSPACE); -#endif - default: - return keycode_to_action(keycode); - } -} - - -/* Macro */ -__attribute__ ((weak)) -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - return MACRO_NONE; -} - -/* Function */ -__attribute__ ((weak)) -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) -{ -} - -/* translates keycode to action */ -static action_t keycode_to_action(uint16_t keycode) -{ - action_t action; - switch (keycode) { - case KC_A ... KC_EXSEL: - case KC_LCTRL ... KC_RGUI: - action.code = ACTION_KEY(keycode); - break; - case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE: - action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode)); - break; - case KC_AUDIO_MUTE ... KC_WWW_FAVORITES: - action.code = ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(keycode)); - break; - case KC_MS_UP ... KC_MS_ACCEL2: - action.code = ACTION_MOUSEKEY(keycode); - break; - case KC_TRNS: - action.code = ACTION_TRANSPARENT; - break; - default: - action.code = ACTION_NO; - break; - } - return action; -} - - -/* translates key to keycode */ -uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - // Read entire word (16bits) - return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint16_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} - -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]) }; -} diff --git a/keyboard/preonic/extended_keymap_common.h b/keyboard/preonic/extended_keymap_common.h deleted file mode 100644 index 7ccfa1b03..000000000 --- a/keyboard/preonic/extended_keymap_common.h +++ /dev/null @@ -1,181 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako <wakojun@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef KEYMAP_H -#define KEYMAP_H - -#include <stdint.h> -#include <stdbool.h> -#include "action.h" -#include <avr/pgmspace.h> -#include "keycode.h" -#include "keymap.h" -#include "action_macro.h" -#include "report.h" -#include "host.h" -// #include "print.h" -#include "debug.h" - -#ifdef BOOTMAGIC_ENABLE -/* NOTE: Not portable. Bit field order depends on implementation */ -typedef union { - uint16_t raw; - struct { - bool swap_control_capslock:1; - bool capslock_to_control:1; - bool swap_lalt_lgui:1; - bool swap_ralt_rgui:1; - bool no_gui:1; - bool swap_grave_esc:1; - bool swap_backslash_backspace:1; - bool nkro:1; - }; -} keymap_config_t; -keymap_config_t keymap_config; -#endif - - -/* translates key to keycode */ -uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key); - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint16_t keycode); - -/* translates Fn keycode to action */ -action_t keymap_func_to_action(uint16_t keycode); - -extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - -// Ability to use mods in layouts -#define LCTL(kc) kc | 0x0100 -#define LSFT(kc) kc | 0x0200 -#define LALT(kc) kc | 0x0400 -#define LGUI(kc) kc | 0x0800 -#define RCTL(kc) kc | 0x1100 -#define RSFT(kc) kc | 0x1200 -#define RALT(kc) kc | 0x1400 -#define RGUI(kc) kc | 0x1800 - -// Alias for function layers than expand past FN31 -#define FUNC(kc) kc | 0x2000 - -// Aliases -#define S(kc) LSFT(kc) -#define F(kc) FUNC(kc) - -// For software implementation of colemak -#define CM_Q KC_Q -#define CM_W KC_W -#define CM_F KC_E -#define CM_P KC_R -#define CM_G KC_T -#define CM_J KC_Y -#define CM_L KC_U -#define CM_U KC_I -#define CM_Y KC_O -#define CM_SCLN KC_P - -#define CM_A KC_A -#define CM_R KC_S -#define CM_S KC_D -#define CM_T KC_F -#define CM_D KC_G -#define CM_H KC_H -#define CM_N KC_J -#define CM_E KC_K -#define CM_I KC_L -#define CM_O KC_SCLN - -#define CM_Z KC_Z -#define CM_X KC_X -#define CM_C KC_C -#define CM_V KC_V -#define CM_B KC_B -#define CM_K KC_N -#define CM_M KC_M -#define CM_COMM KC_COMM -#define CM_DOT KC_DOT -#define CM_SLSH KC_SLSH - -// Make it easy to support these in macros -#define KC_CM_Q CM_Q -#define KC_CM_W CM_W -#define KC_CM_F CM_F -#define KC_CM_P CM_P -#define KC_CM_G CM_G -#define KC_CM_J CM_J -#define KC_CM_L CM_L -#define KC_CM_U CM_U -#define KC_CM_Y CM_Y -#define KC_CM_SCLN CM_SCLN - -#define KC_CM_A CM_A -#define KC_CM_R CM_R -#define KC_CM_S CM_S -#define KC_CM_T CM_T -#define KC_CM_D CM_D -#define KC_CM_H CM_H -#define KC_CM_N CM_N -#define KC_CM_E CM_E -#define KC_CM_I CM_I -#define KC_CM_O CM_O - -#define KC_CM_Z CM_Z -#define KC_CM_X CM_X -#define KC_CM_C CM_C -#define KC_CM_V CM_V -#define KC_CM_B CM_B -#define KC_CM_K CM_K -#define KC_CM_M CM_M -#define KC_CM_COMM CM_COMM -#define KC_CM_DOT CM_DOT -#define KC_CM_SLSH CM_SLSH - -#define M(kc) kc | 0x3000 - -#define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE) - -#define BL_ON 0x4009 -#define BL_OFF 0x4000 -#define BL_0 0x4000 -#define BL_1 0x4001 -#define BL_2 0x4002 -#define BL_3 0x4003 -#define BL_4 0x4004 -#define BL_5 0x4005 -#define BL_6 0x4006 -#define BL_7 0x4007 -#define BL_8 0x4008 -#define BL_9 0x4009 -#define BL_10 0x400A -#define BL_11 0x400B -#define BL_12 0x400C -#define BL_13 0x400D -#define BL_14 0x400E -#define BL_15 0x400F -#define BL_DEC 0x4010 -#define BL_INC 0x4011 -#define BL_TOGG 0x4012 -#define BL_STEP 0x4013 - -#define RESET 0x5000 -#define DEBUG 0x5001 - -#define MIDI(n) n | 0x6000 - -#endif diff --git a/keyboard/preonic/extended_keymaps/extended_keymap_default.c b/keyboard/preonic/extended_keymaps/extended_keymap_default.c deleted file mode 100644 index b52f60fd0..000000000 --- a/keyboard/preonic/extended_keymaps/extended_keymap_default.c +++ /dev/null @@ -1,70 +0,0 @@ -#include "extended_keymap_common.h" -#include "backlight.h" -#include "lufa.h" -#include "debug.h" - -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_DEL}, - {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, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions -}, -[1] = { /* Colemak */ - {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_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}, - {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[2] = { /* RAISE */ - {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_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, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[3] = { /* LOWER */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, - {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[4] = { /* TENKEY */ - {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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_KP_7, KC_KP_8, KC_KP_9, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_KP_4, KC_KP_5, KC_KP_6, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_KP_1, KC_KP_2, KC_KP_3, KC_SLSH, KC_ENT}, - {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, KC_SPC, KC_SPC, KC_KP_0, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -} -}; - -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: - if (record->event.pressed) { - register_code(KC_RSFT); - midi_send_noteon(&midi_device, 1, 64, 127); - backlight_step(); - } else { - unregister_code(KC_RSFT); - midi_send_noteoff(&midi_device, 1, 64, 127); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/preonic/extended_keymaps/extended_keymap_lock.c b/keyboard/preonic/extended_keymaps/extended_keymap_lock.c deleted file mode 100644 index ec7bc776a..000000000 --- a/keyboard/preonic/extended_keymaps/extended_keymap_lock.c +++ /dev/null @@ -1,81 +0,0 @@ -#include "extended_keymap_common.h" -#include "backlight.h" -#include "action_layer.h" -#include "keymap_midi.h" -#include "beeps.h" - -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_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_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, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions -}, -[1] = { /* 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_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}, - {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[2] = { /* 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, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[3] = { /* LOWER */ - {KC_GRV, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, - {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[4] = { /* TENKEY */ - {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_KP_7, KC_KP_8, KC_KP_9, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_KP_4, KC_KP_5, KC_KP_6, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_KP_1, KC_KP_2, KC_KP_3, KC_SLSH, KC_ENT}, - {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, KC_SPC, KC_SPC, KC_KP_0, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[5] = { - { MIDI12 }, - { MIDI12 }, - { MIDI12 }, - { MIDI12 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), MIDI, MIDI, MIDI, MIDI} -} - -}; - -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) -{ - switch(id) { - case 0: - if (record->event.pressed) { - // register_code(KC_RSFT); - backlight_set(BACKLIGHT_LEVELS); - default_layer_and(0); - default_layer_or((1<<5)); - } else { - // unregister_code(KC_RSFT); - backlight_set(0); - default_layer_and(0); - default_layer_or(0); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/preonic/flash-pcb.sh b/keyboard/preonic/flash-pcb.sh new file mode 100755 index 000000000..8b59b83f5 --- /dev/null +++ b/keyboard/preonic/flash-pcb.sh @@ -0,0 +1,3 @@ +dfu-programmer atmega32u4 erase --force +dfu-programmer atmega32u4 flash preonic_pcb.hex +dfu-programmer atmega32u4 reset
\ No newline at end of file diff --git a/keyboard/preonic/keymap_midi.c b/keyboard/preonic/keymap_midi.c deleted file mode 100644 index a0fa59990..000000000 --- a/keyboard/preonic/keymap_midi.c +++ /dev/null @@ -1,110 +0,0 @@ -/* -Copyright 2015 Jack Humbert <jack.humb@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "extended_keymap_common.h" -#include "keymap_midi.h" -#include <lufa.h> - -uint8_t starting_note = 0x0C; -int offset = 7; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - if (id != 0) { - if (record->event.pressed) { - midi_send_noteon(&midi_device, opt, (id & 0xFF), 127); - } else { - midi_send_noteoff(&midi_device, opt, (id & 0xFF), 127); - } - } - - if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) { - if (record->event.pressed) { - starting_note++; - play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC); - midi_send_cc(&midi_device, 0, 0x7B, 0); - midi_send_cc(&midi_device, 1, 0x7B, 0); - midi_send_cc(&midi_device, 2, 0x7B, 0); - midi_send_cc(&midi_device, 3, 0x7B, 0); - midi_send_cc(&midi_device, 4, 0x7B, 0); - return; - } else { - stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1))); - stop_all_notes(); - return; - } - } - if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) { - if (record->event.pressed) { - starting_note--; - play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC); - midi_send_cc(&midi_device, 0, 0x7B, 0); - midi_send_cc(&midi_device, 1, 0x7B, 0); - midi_send_cc(&midi_device, 2, 0x7B, 0); - midi_send_cc(&midi_device, 3, 0x7B, 0); - midi_send_cc(&midi_device, 4, 0x7B, 0); - return; - } else { - stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1))); - stop_all_notes(); - return; - } - } - - if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { - offset++; - midi_send_cc(&midi_device, 0, 0x7B, 0); - midi_send_cc(&midi_device, 1, 0x7B, 0); - midi_send_cc(&midi_device, 2, 0x7B, 0); - midi_send_cc(&midi_device, 3, 0x7B, 0); - midi_send_cc(&midi_device, 4, 0x7B, 0); - stop_all_notes(); - for (int i = 0; i <= 7; i++) { - play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)), 0xC); - _delay_us(80000); - stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1))); - _delay_us(8000); - } - return; - } - if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { - offset--; - midi_send_cc(&midi_device, 0, 0x7B, 0); - midi_send_cc(&midi_device, 1, 0x7B, 0); - midi_send_cc(&midi_device, 2, 0x7B, 0); - midi_send_cc(&midi_device, 3, 0x7B, 0); - midi_send_cc(&midi_device, 4, 0x7B, 0); - stop_all_notes(); - for (int i = 0; i <= 7; i++) { - play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)), 0xC); - _delay_us(80000); - stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1))); - _delay_us(8000); - } - return; - } - - if (record->event.pressed) { - // midi_send_noteon(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127); - midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127); - play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); - } else { - // midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127); - midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127); - stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); - } -}
\ No newline at end of file diff --git a/keyboard/preonic/keymap_midi.h b/keyboard/preonic/keymap_midi.h deleted file mode 100644 index c5917f884..000000000 --- a/keyboard/preonic/keymap_midi.h +++ /dev/null @@ -1,220 +0,0 @@ -/* -Copyright 2015 Jack Humbert <jack.humb@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef KEYMAP_MIDI_H -#define KEYMAP_MIDI_H - -#define MIDI 0x6000 -#define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000 - -#define CHNL(note, channel) (note + (channel << 8)) - -#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), } - -#define N_CN1 (0x600C + (12 * -1) + 0 ) -#define N_CN1S (0x600C + (12 * -1) + 1 ) -#define N_DN1F (0x600C + (12 * -1) + 1 ) -#define N_DN1 (0x600C + (12 * -1) + 2 ) -#define N_DN1S (0x600C + (12 * -1) + 3 ) -#define N_EN1F (0x600C + (12 * -1) + 3 ) -#define N_EN1 (0x600C + (12 * -1) + 4 ) -#define N_FN1 (0x600C + (12 * -1) + 5 ) -#define N_FN1S (0x600C + (12 * -1) + 6 ) -#define N_GN1F (0x600C + (12 * -1) + 6 ) -#define N_GN1 (0x600C + (12 * -1) + 7 ) -#define N_GN1S (0x600C + (12 * -1) + 8 ) -#define N_AN1F (0x600C + (12 * -1) + 8 ) -#define N_AN1 (0x600C + (12 * -1) + 9 ) -#define N_AN1S (0x600C + (12 * -1) + 10) -#define N_BN1F (0x600C + (12 * -1) + 10) -#define N_BN1 (0x600C + (12 * -1) + 11) -#define N_C0 (0x600C + (12 * 0) + 0 ) -#define N_C0S (0x600C + (12 * 0) + 1 ) -#define N_D0F (0x600C + (12 * 0) + 1 ) -#define N_D0 (0x600C + (12 * 0) + 2 ) -#define N_D0S (0x600C + (12 * 0) + 3 ) -#define N_E0F (0x600C + (12 * 0) + 3 ) -#define N_E0 (0x600C + (12 * 0) + 4 ) -#define N_F0 (0x600C + (12 * 0) + 5 ) -#define N_F0S (0x600C + (12 * 0) + 6 ) -#define N_G0F (0x600C + (12 * 0) + 6 ) -#define N_G0 (0x600C + (12 * 0) + 7 ) -#define N_G0S (0x600C + (12 * 0) + 8 ) -#define N_A0F (0x600C + (12 * 0) + 8 ) -#define N_A0 (0x600C + (12 * 0) + 9 ) -#define N_A0S (0x600C + (12 * 0) + 10) -#define N_B0F (0x600C + (12 * 0) + 10) -#define N_B0 (0x600C + (12 * 0) + 11) -#define N_C1 (0x600C + (12 * 1) + 0 ) -#define N_C1S (0x600C + (12 * 1) + 1 ) -#define N_D1F (0x600C + (12 * 1) + 1 ) -#define N_D1 (0x600C + (12 * 1) + 2 ) -#define N_D1S (0x600C + (12 * 1) + 3 ) -#define N_E1F (0x600C + (12 * 1) + 3 ) -#define N_E1 (0x600C + (12 * 1) + 4 ) -#define N_F1 (0x600C + (12 * 1) + 5 ) -#define N_F1S (0x600C + (12 * 1) + 6 ) -#define N_G1F (0x600C + (12 * 1) + 6 ) -#define N_G1 (0x600C + (12 * 1) + 7 ) -#define N_G1S (0x600C + (12 * 1) + 8 ) -#define N_A1F (0x600C + (12 * 1) + 8 ) -#define N_A1 (0x600C + (12 * 1) + 9 ) -#define N_A1S (0x600C + (12 * 1) + 10) -#define N_B1F (0x600C + (12 * 1) + 10) -#define N_B1 (0x600C + (12 * 1) + 11) -#define N_C2 (0x600C + (12 * 2) + 0 ) -#define N_C2S (0x600C + (12 * 2) + 1 ) -#define N_D2F (0x600C + (12 * 2) + 1 ) -#define N_D2 (0x600C + (12 * 2) + 2 ) -#define N_D2S (0x600C + (12 * 2) + 3 ) -#define N_E2F (0x600C + (12 * 2) + 3 ) -#define N_E2 (0x600C + (12 * 2) + 4 ) -#define N_F2 (0x600C + (12 * 2) + 5 ) -#define N_F2S (0x600C + (12 * 2) + 6 ) -#define N_G2F (0x600C + (12 * 2) + 6 ) -#define N_G2 (0x600C + (12 * 2) + 7 ) -#define N_G2S (0x600C + (12 * 2) + 8 ) -#define N_A2F (0x600C + (12 * 2) + 8 ) -#define N_A2 (0x600C + (12 * 2) + 9 ) -#define N_A2S (0x600C + (12 * 2) + 10) -#define N_B2F (0x600C + (12 * 2) + 10) -#define N_B2 (0x600C + (12 * 2) + 11) -#define N_C3 (0x600C + (12 * 3) + 0 ) -#define N_C3S (0x600C + (12 * 3) + 1 ) -#define N_D3F (0x600C + (12 * 3) + 1 ) -#define N_D3 (0x600C + (12 * 3) + 2 ) -#define N_D3S (0x600C + (12 * 3) + 3 ) -#define N_E3F (0x600C + (12 * 3) + 3 ) -#define N_E3 (0x600C + (12 * 3) + 4 ) -#define N_F3 (0x600C + (12 * 3) + 5 ) -#define N_F3S (0x600C + (12 * 3) + 6 ) -#define N_G3F (0x600C + (12 * 3) + 6 ) -#define N_G3 (0x600C + (12 * 3) + 7 ) -#define N_G3S (0x600C + (12 * 3) + 8 ) -#define N_A3F (0x600C + (12 * 3) + 8 ) -#define N_A3 (0x600C + (12 * 3) + 9 ) -#define N_A3S (0x600C + (12 * 3) + 10) -#define N_B3F (0x600C + (12 * 3) + 10) -#define N_B3 (0x600C + (12 * 3) + 11) -#define N_C4 (0x600C + (12 * 4) + 0 ) -#define N_C4S (0x600C + (12 * 4) + 1 ) -#define N_D4F (0x600C + (12 * 4) + 1 ) -#define N_D4 (0x600C + (12 * 4) + 2 ) -#define N_D4S (0x600C + (12 * 4) + 3 ) -#define N_E4F (0x600C + (12 * 4) + 3 ) -#define N_E4 (0x600C + (12 * 4) + 4 ) -#define N_F4 (0x600C + (12 * 4) + 5 ) -#define N_F4S (0x600C + (12 * 4) + 6 ) -#define N_G4F (0x600C + (12 * 4) + 6 ) -#define N_G4 (0x600C + (12 * 4) + 7 ) -#define N_G4S (0x600C + (12 * 4) + 8 ) -#define N_A4F (0x600C + (12 * 4) + 8 ) -#define N_A4 (0x600C + (12 * 4) + 9 ) -#define N_A4S (0x600C + (12 * 4) + 10) -#define N_B4F (0x600C + (12 * 4) + 10) -#define N_B4 (0x600C + (12 * 4) + 11) -#define N_C5 (0x600C + (12 * 5) + 0 ) -#define N_C5S (0x600C + (12 * 5) + 1 ) -#define N_D5F (0x600C + (12 * 5) + 1 ) -#define N_D5 (0x600C + (12 * 5) + 2 ) -#define N_D5S (0x600C + (12 * 5) + 3 ) -#define N_E5F (0x600C + (12 * 5) + 3 ) -#define N_E5 (0x600C + (12 * 5) + 4 ) -#define N_F5 (0x600C + (12 * 5) + 5 ) -#define N_F5S (0x600C + (12 * 5) + 6 ) -#define N_G5F (0x600C + (12 * 5) + 6 ) -#define N_G5 (0x600C + (12 * 5) + 7 ) -#define N_G5S (0x600C + (12 * 5) + 8 ) -#define N_A5F (0x600C + (12 * 5) + 8 ) -#define N_A5 (0x600C + (12 * 5) + 9 ) -#define N_A5S (0x600C + (12 * 5) + 10) -#define N_B5F (0x600C + (12 * 5) + 10) -#define N_B5 (0x600C + (12 * 5) + 11) -#define N_C6 (0x600C + (12 * 6) + 0 ) -#define N_C6S (0x600C + (12 * 6) + 1 ) -#define N_D6F (0x600C + (12 * 6) + 1 ) -#define N_D6 (0x600C + (12 * 6) + 2 ) -#define N_D6S (0x600C + (12 * 6) + 3 ) -#define N_E6F (0x600C + (12 * 6) + 3 ) -#define N_E6 (0x600C + (12 * 6) + 4 ) -#define N_F6 (0x600C + (12 * 6) + 5 ) -#define N_F6S (0x600C + (12 * 6) + 6 ) -#define N_G6F (0x600C + (12 * 6) + 6 ) -#define N_G6 (0x600C + (12 * 6) + 7 ) -#define N_G6S (0x600C + (12 * 6) + 8 ) -#define N_A6F (0x600C + (12 * 6) + 8 ) -#define N_A6 (0x600C + (12 * 6) + 9 ) -#define N_A6S (0x600C + (12 * 6) + 10) -#define N_B6F (0x600C + (12 * 6) + 10) -#define N_B6 (0x600C + (12 * 6) + 11) -#define N_C7 (0x600C + (12 * 7) + 0 ) -#define N_C7S (0x600C + (12 * 7) + 1 ) -#define N_D7F (0x600C + (12 * 7) + 1 ) -#define N_D7 (0x600C + (12 * 7) + 2 ) -#define N_D7S (0x600C + (12 * 7) + 3 ) -#define N_E7F (0x600C + (12 * 7) + 3 ) -#define N_E7 (0x600C + (12 * 7) + 4 ) -#define N_F7 (0x600C + (12 * 7) + 5 ) -#define N_F7S (0x600C + (12 * 7) + 6 ) -#define N_G7F (0x600C + (12 * 7) + 6 ) -#define N_G7 (0x600C + (12 * 7) + 7 ) -#define N_G7S (0x600C + (12 * 7) + 8 ) -#define N_A7F (0x600C + (12 * 7) + 8 ) -#define N_A7 (0x600C + (12 * 7) + 9 ) -#define N_A7S (0x600C + (12 * 7) + 10) -#define N_B7F (0x600C + (12 * 7) + 10) -#define N_B7 (0x600C + (12 * 7) + 11) -#define N_C8 (0x600C + (12 * 8) + 0 ) -#define N_C8S (0x600C + (12 * 8) + 1 ) -#define N_D8F (0x600C + (12 * 8) + 1 ) -#define N_D8 (0x600C + (12 * 8) + 2 ) -#define N_D8S (0x600C + (12 * 8) + 3 ) -#define N_E8F (0x600C + (12 * 8) + 3 ) -#define N_E8 (0x600C + (12 * 8) + 4 ) -#define N_F8 (0x600C + (12 * 8) + 5 ) -#define N_F8S (0x600C + (12 * 8) + 6 ) -#define N_G8F (0x600C + (12 * 8) + 6 ) -#define N_G8 (0x600C + (12 * 8) + 7 ) -#define N_G8S (0x600C + (12 * 8) + 8 ) -#define N_A8F (0x600C + (12 * 8) + 8 ) -#define N_A8 (0x600C + (12 * 8) + 9 ) -#define N_A8S (0x600C + (12 * 8) + 10) -#define N_B8F (0x600C + (12 * 8) + 10) -#define N_B8 (0x600C + (12 * 8) + 11) -#define N_C8 (0x600C + (12 * 8) + 0 ) -#define N_C8S (0x600C + (12 * 8) + 1 ) -#define N_D8F (0x600C + (12 * 8) + 1 ) -#define N_D8 (0x600C + (12 * 8) + 2 ) -#define N_D8S (0x600C + (12 * 8) + 3 ) -#define N_E8F (0x600C + (12 * 8) + 3 ) -#define N_E8 (0x600C + (12 * 8) + 4 ) -#define N_F8 (0x600C + (12 * 8) + 5 ) -#define N_F8S (0x600C + (12 * 8) + 6 ) -#define N_G8F (0x600C + (12 * 8) + 6 ) -#define N_G8 (0x600C + (12 * 8) + 7 ) -#define N_G8S (0x600C + (12 * 8) + 8 ) -#define N_A8F (0x600C + (12 * 8) + 8 ) -#define N_A8 (0x600C + (12 * 8) + 9 ) -#define N_A8S (0x600C + (12 * 8) + 10) -#define N_B8F (0x600C + (12 * 8) + 10) -#define N_B8 (0x600C + (12 * 8) + 11) - -#endif
\ No newline at end of file diff --git a/keyboard/preonic/keymaps/default/README.md b/keyboard/preonic/keymaps/default/README.md new file mode 100644 index 000000000..d2f43bbdb --- /dev/null +++ b/keyboard/preonic/keymaps/default/README.md @@ -0,0 +1,34 @@ +# 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/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c new file mode 100644 index 000000000..784670784 --- /dev/null +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -0,0 +1,92 @@ +// 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" +#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] = { +[_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_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_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_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_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_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_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_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} +} +}; + +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}, +}; + +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; +}; + +void matrix_init_user(void) { +#ifdef AUDIO_ENABLE + init_notes(); + play_notes(&start_up, 5, false); +#endif +} diff --git a/keyboard/preonic/keymaps/lock/README.md b/keyboard/preonic/keymaps/lock/README.md new file mode 100644 index 000000000..d21cb990b --- /dev/null +++ b/keyboard/preonic/keymaps/lock/README.md @@ -0,0 +1,3 @@ +# Lock layout + +This layout is designed for having a lock switch in the lower-left-hand corner, and for experimenting with MIDI/audio features. It's constantly in development, so don't expect anything to work/be documented correctly!
\ No newline at end of file diff --git a/keyboard/preonic/keymaps/lock/keymap.c b/keyboard/preonic/keymaps/lock/keymap.c new file mode 100644 index 000000000..cfb7f0803 --- /dev/null +++ b/keyboard/preonic/keymaps/lock/keymap.c @@ -0,0 +1,105 @@ +// 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" +#endif +#include "action_layer.h" + +// 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 _MI 5 + +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_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_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_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_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_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_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_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_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} +}, +[_MI] = { /* MIDI */ + {MIDI12}, + {MIDI12}, + {MIDI12}, + {MIDI12}, + {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MIDI, MIDI, MIDI, MIDI} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +float start_up[][2] = { + {440.0*pow(2.0,(67)/12.0), 600}, + {0, 50}, + {440.0*pow(2.0,(64)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(55)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(60)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(64)/12.0), 1000}, +}; + +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 + default_layer_state = 1<<5; + } else { + unregister_code(KC_RSFT); + default_layer_state = 1<<0; + } + break; + } + return MACRO_NONE; +}; + +void matrix_init_user(void) { + init_notes(); + play_notes(&start_up, 9, false); +} diff --git a/keyboard/preonic/keymaps/nerdgasm/README.md b/keyboard/preonic/keymaps/nerdgasm/README.md new file mode 100644 index 000000000..d2f43bbdb --- /dev/null +++ b/keyboard/preonic/keymaps/nerdgasm/README.md @@ -0,0 +1,34 @@ +# 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/keymaps/nerdgasm/keymap.c b/keyboard/preonic/keymaps/nerdgasm/keymap.c new file mode 100644 index 000000000..818102fbd --- /dev/null +++ b/keyboard/preonic/keymaps/nerdgasm/keymap.c @@ -0,0 +1,117 @@ +// 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" +#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] = { +[_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_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_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_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_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_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_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_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} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +// Guitar Notes +#define N_E 13180.5 +#define N_B 9870.8 +#define N_G 15680.0 +#define N_D 11740.7 +#define N_E 13180.5 + +float start_up[][2] = { + { N_E, 500 }, + { 0, 50 }, + { N_E, 500 }, + { 0, 50 }, + { N_E, 500 }, + { 0, 50 }, + { N_B, 500 }, + { 0, 50 }, + { N_E, 1000 }, + { 0, 50 }, + { N_G, 1500 }, + { 0, 50 }, +}; + +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; +}; + +void matrix_init_user(void) { +#ifdef AUDIO_ENABLE + init_notes(); + play_notes(&start_up, 12, false); +#endif +} + +void process_action_user(keyrecord_t *record) { +#ifdef AUDIO_ENABLE + if (record->event.pressed) { + float keypress[][2] = { + {440.0*pow(2.0,(record->event.key.col*7)/12.0), 600} + }; + play_notes(&keypress, 1, false); + } +#endif +} diff --git a/keyboard/preonic/led.c b/keyboard/preonic/led.c deleted file mode 100644 index 2c0574660..000000000 --- a/keyboard/preonic/led.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -Copyright 2012 Jun Wako <wakojun@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <avr/io.h> -#include "stdint.h" -#include "led.h" - - -void led_set(uint8_t usb_led) -{ - // // Using PE6 Caps Lock LED - // if (usb_led & (1<<USB_LED_CAPS_LOCK)) - // { - // // Output high. - // DDRE |= (1<<6); - // PORTE |= (1<<6); - // } - // else - // { - // // Output low. - // DDRE &= ~(1<<6); - // PORTE &= ~(1<<6); - // } -} diff --git a/keyboard/preonic/matrix.c b/keyboard/preonic/matrix.c deleted file mode 100644 index 98ef55ed6..000000000 --- a/keyboard/preonic/matrix.c +++ /dev/null @@ -1,234 +0,0 @@ -/* -Copyright 2012 Jun Wako -Generated by planckkeyboard.com (2014 Jack Humbert) - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -/* - * scan matrix - */ -#include <stdint.h> -#include <stdbool.h> -#include <avr/io.h> -#include <util/delay.h> -#include "print.h" -#include "debug.h" -#include "util.h" -#include "matrix.h" - -#ifndef DEBOUNCE -# define DEBOUNCE 10 -#endif -static uint8_t debouncing = DEBOUNCE; - -/* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing[MATRIX_ROWS]; - -static matrix_row_t read_cols(void); -static void init_cols(void); -static void unselect_rows(void); -static void select_row(uint8_t row); - -inline -uint8_t matrix_rows(void) -{ - return MATRIX_ROWS; -} - -inline -uint8_t matrix_cols(void) -{ - return MATRIX_COLS; -} - -void matrix_init(void) -{ - // To use PORTF disable JTAG with writing JTD bit twice within four cycles. - MCUCR |= (1<<JTD); - MCUCR |= (1<<JTD); - - backlight_init_ports(); - - // Turn status LED on - DDRE |= (1<<6); - PORTE |= (1<<6); - - // initialize row and col - unselect_rows(); - init_cols(); - - // initialize matrix state: all keys off - for (uint8_t i=0; i < MATRIX_ROWS; i++) { - matrix[i] = 0; - matrix_debouncing[i] = 0; - } -} - - -uint8_t matrix_scan(void) -{ - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - select_row(i); - _delay_us(30); // without this wait read unstable value. - matrix_row_t cols = read_cols(); - if (matrix_debouncing[i] != cols) { - matrix_debouncing[i] = cols; - if (debouncing) { - debug("bounce!: "); debug_hex(debouncing); debug("\n"); - } - debouncing = DEBOUNCE; - } - unselect_rows(); - } - - if (debouncing) { - if (--debouncing) { - _delay_ms(1); - } else { - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - matrix[i] = matrix_debouncing[i]; - } - } - } - - return 1; -} - -bool matrix_is_modified(void) -{ - if (debouncing) return false; - return true; -} - -inline -bool matrix_is_on(uint8_t row, uint8_t col) -{ - return (matrix[row] & ((matrix_row_t)1<col)); -} - -inline -matrix_row_t matrix_get_row(uint8_t row) -{ - return matrix[row]; -} - -void matrix_print(void) -{ - print("\nr/c 0123456789ABCDEF\n"); - for (uint8_t row = 0; row < MATRIX_ROWS; row++) { - phex(row); print(": "); - pbin_reverse16(matrix_get_row(row)); - print("\n"); - } -} - -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); - } - return count; -} - -static void init_cols(void) -{ - int B = 0, C = 0, D = 0, E = 0, F = 0; - for(int x = 0; x < MATRIX_COLS; x++) { - int col = COLS[x]; - if ((col & 0xF0) == 0x20) { - B |= (1<<(col & 0x0F)); - } else if ((col & 0xF0) == 0x30) { - C |= (1<<(col & 0x0F)); - } else if ((col & 0xF0) == 0x40) { - D |= (1<<(col & 0x0F)); - } else if ((col & 0xF0) == 0x50) { - E |= (1<<(col & 0x0F)); - } else if ((col & 0xF0) == 0x60) { - F |= (1<<(col & 0x0F)); - } - } - DDRB &= ~(B); PORTB |= (B); - DDRC &= ~(C); PORTC |= (C); - DDRD &= ~(D); PORTD |= (D); - DDRE &= ~(E); PORTE |= (E); - DDRF &= ~(F); PORTF |= (F); -} - -static matrix_row_t read_cols(void) -{ - matrix_row_t result = 0; - for(int x = 0; x < MATRIX_COLS; x++) { - int col = COLS[x]; - if ((col & 0xF0) == 0x20) { - result |= (PINB&(1<<(col & 0x0F)) ? 0 : (1<<x)); - } else if ((col & 0xF0) == 0x30) { - result |= (PINC&(1<<(col & 0x0F)) ? 0 : (1<<x)); - } else if ((col & 0xF0) == 0x40) { - result |= (PIND&(1<<(col & 0x0F)) ? 0 : (1<<x)); - } else if ((col & 0xF0) == 0x50) { - result |= (PINE&(1<<(col & 0x0F)) ? 0 : (1<<x)); - } else if ((col & 0xF0) == 0x60) { - result |= (PINF&(1<<(col & 0x0F)) ? 0 : (1<<x)); - } - } - return result; -} - -static void unselect_rows(void) -{ - int B = 0, C = 0, D = 0, E = 0, F = 0; - for(int x = 0; x < MATRIX_ROWS; x++) { - int row = ROWS[x]; - if ((row & 0xF0) == 0x20) { - B |= (1<<(row & 0x0F)); - } else if ((row & 0xF0) == 0x30) { - C |= (1<<(row & 0x0F)); - } else if ((row & 0xF0) == 0x40) { - D |= (1<<(row & 0x0F)); - } else if ((row & 0xF0) == 0x50) { - E |= (1<<(row & 0x0F)); - } else if ((row & 0xF0) == 0x60) { - F |= (1<<(row & 0x0F)); - } - } - DDRB &= ~(B); PORTB |= (B); - DDRC &= ~(C); PORTC |= (C); - DDRD &= ~(D); PORTD |= (D); - DDRE &= ~(E); PORTE |= (E); - DDRF &= ~(F); PORTF |= (F); -} - -static void select_row(uint8_t row) -{ - int row_pin = ROWS[row]; - if ((row_pin & 0xF0) == 0x20) { - DDRB |= (1<<(row_pin & 0x0F)); - PORTB &= ~(1<<(row_pin & 0x0F)); - } else if ((row_pin & 0xF0) == 0x30) { - DDRC |= (1<<(row_pin & 0x0F)); - PORTC &= ~(1<<(row_pin & 0x0F)); - } else if ((row_pin & 0xF0) == 0x40) { - DDRD |= (1<<(row_pin & 0x0F)); - PORTD &= ~(1<<(row_pin & 0x0F)); - } else if ((row_pin & 0xF0) == 0x50) { - DDRE |= (1<<(row_pin & 0x0F)); - PORTE &= ~(1<<(row_pin & 0x0F)); - } else if ((row_pin & 0xF0) == 0x60) { - DDRF |= (1<<(row_pin & 0x0F)); - PORTF &= ~(1<<(row_pin & 0x0F)); - } -}
\ No newline at end of file diff --git a/keyboard/preonic/preonic.c b/keyboard/preonic/preonic.c new file mode 100644 index 000000000..f639f247a --- /dev/null +++ b/keyboard/preonic/preonic.c @@ -0,0 +1,41 @@ +#include "preonic.h" + +__attribute__ ((weak)) +void matrix_init_user(void) { + +}; + +__attribute__ ((weak)) +void matrix_scan_user(void) { + +}; + +__attribute__ ((weak)) +void process_action_user(keyrecord_t *record) { + +}; + +void matrix_init_kb(void) { + #ifdef BACKLIGHT_ENABLE + backlight_init_ports(); + #endif + + #ifdef RGBLIGHT_ENABLE + rgblight_init(); + #endif + + + // Turn status LED on + DDRE |= (1<<6); + PORTE |= (1<<6); + + matrix_init_user(); +}; + +void matrix_scan_kb(void) { + matrix_scan_user(); +}; + +void process_action_kb(keyrecord_t *record) { + process_action_user(record); +}
\ No newline at end of file diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h new file mode 100644 index 000000000..51ed9ba39 --- /dev/null +++ b/keyboard/preonic/preonic.h @@ -0,0 +1,51 @@ +#ifndef PREONIC_H +#define PREONIC_H + +#include "matrix.h" +#include "keymap_common.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif +#ifdef RGBLIGHT_ENABLE + #include "rgblight.h" +#endif +#include <stddef.h> +#ifdef MIDI_ENABLE + #include <keymap_midi.h> +#endif + +#define PREONIC_MIT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k43, k44, k45, k45, k47, k48, k49, k4a, k4b } \ +} + +#define PREONIC_GRID( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \ +} + +void matrix_init_user(void); +void matrix_scan_user(void); +void process_action_kb(keyrecord_t *record); + +#endif diff --git a/keyboard/preonic/preonic_music.hex b/keyboard/preonic/preonic_music.hex new file mode 100644 index 000000000..603693bff --- /dev/null +++ b/keyboard/preonic/preonic_music.hex @@ -0,0 +1,1713 @@ +:100000000C9410030C9454030C9454030C94540358
+:100010000C9454030C9454030C9454030C94540304
+:100020000C9454030C9454030C9410170C94E21782
+:100030000C94BD290C9454030C9454030C94540355
+:100040000C9454030C9454030C9454030C945403D4
+:100050000C9454030C942A2A0C9454030C945403C7
+:100060000C9454030C9454030C9454030C945403B4
+:100070000C9454030C9454030C9454030C945403A4
+:100080000C94440E0C9454030C9454030C94540399
+:100090000C9454030C9454030C9454030C94540384
+:1000A0000C9454030C9454030C9454030763423689
+:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9
+:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD
+:1000D0000000803F08000000BE922449123EABAAF7
+:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52
+:1000F000AA3E00000000BF000000803F000000009A
+:1001000000084178D3BB4387D1133D190E3CC3BDD2
+:100110004282AD2B3E68EC8276BED98FE1A93E4C7F
+:1001200080EFFFBE01C4FF7F3F00000000003500EC
+:100130001E001F00200021002200230024002500B3
+:10014000260027002A002B0014001A0008001500C2
+:1001500017001C0018000C00120013002A002900D0
+:1001600004001600070009000A000B000D000E0035
+:100170000F0033003400E1001D001B0006001900D1
+:10018000050011001000360037003800280000304C
+:10019000E000E200E30003522C002C000452500067
+:1001A000510052004F0035001E001F0020002100AA
+:1001B0002200230024002500260027002A002B000F
+:1001C00014001A00090013000A000D000F001800A7
+:1001D0001C0033002A002900040015001600170037
+:1001E00007000B00110008000C0012003400E100B1
+:1001F0001D001B000600190005000E00100036004F
+:100200003700380028000030E000E200E30003522D
+:100210002C002C0004525000510052004F003500B9
+:100220001E001F00200021002200230024002500C2
+:10023000260027002A002B00340036003700130068
+:100240001C0009000A00060015000F002A00290002
+:1002500004001200080018000C0007000B00170033
+:10026000110016003800E100330014000D000E00EC
+:100270001B00050010001A0019001D0028000030A6
+:10028000E000E200E30003522C002C000452500076
+:10029000510052004F0035001E001F0020002100B9
+:1002A0002200230024002500260027002A00350212
+:1002B0001E021F0220022102220223022402250222
+:1002C000260227022A0001003A003B003C003D00C4
+:1002D0003E003F002D022E022F02300231020100AB
+:1002E00040004100420043004400450000530153D8
+:1002F0000253005001000100010001000100010053
+:10030000010001000100AB00AA00A900AE00350009
+:100310001E001F00200021002200230024002500D1
+:10032000260027002A0035001E001F0020002100A3
+:100330002200230024002500260027002A000100B7
+:100340003A003B003C003D003E003F002D002E00E7
+:100350002F00300031000100400041004200430006
+:1003600044004500005301530253005001000100B6
+:100370000100010001000100010001000100AB00CB
+:10038000AA00A900AE00006000600060006000608C
+:10039000006000600060006000600060006000605D
+:1003A000006000600060006000600060006000604D
+:1003B000006000600060006000600060006000603D
+:1003C000006000600060006000600060006000602D
+:1003D000006000600060006000600060006000601D
+:1003E00000600060006000300100010001000100B9
+:1003F00001000100010000600060006000602A034D
+:1004000054006800650020005000720065006F0015
+:100410006E006900630020004B00650079006200F7
+:100420006F0061007200640000002C034F00720036
+:10043000740068006F006C0069006E006500610068
+:10044000720020004B006500790062006F006100BF
+:100450007200640073000000040309040902D00064
+:10046000060100A0FA0904000001030101000921AE
+:1004700011010001223F000705810308000A090459
+:1004800001000103010200092111010001224D00B8
+:100490000705820308000A090402000103000000A6
+:1004A0000921110100012236000705830308000A13
+:1004B00009040300020300000009211101000122C8
+:1004C0002000070584032000010705040320000124
+:1004D00009040400000101000009240100010900D1
+:1004E00001050904050002010300000724010001C1
+:1004F0004100062402010100062402020200092430
+:1005000003010301020100092403020401010100A7
+:100510000905060240000500000525010101090545
+:1005200085024000050000052501010312011001AC
+:1005300000000008EDFE61600100010200010631CB
+:10054000FF0974A1010975150025FF952075088123
+:10055000020976150025FF952075089102C0050156
+:100560000980A101850216010026B7001A01002AA0
+:10057000B700751095018100C0050C0901A1018526
+:1005800003160100269C021A01002A9C0275109590
+:10059000018100C005010902A1010901A1000509AD
+:1005A000190129051500250195057501810295019F
+:1005B000750381010501093009311581257F9502F7
+:1005C0007508810609381581257F95017508810612
+:1005D000050C0A38021581257F950175088106C032
+:1005E000C005010906A101050719E029E715002545
+:1005F00001950875018102950175088101050819A9
+:100600000129059505750191029501750391010573
+:1006100007190029FF150025FF950675088100C000
+:1006200011241FBECFEFDAE0DEBFCDBF04B603FE5C
+:1006300024C08091050490910604A0910704B09114
+:1006400008048730904BA740B04BB9F410920504D2
+:1006500010920604109207041092080414BE84B786
+:10066000877F84BF88E10FB6F89480936000109272
+:1006700060000FBEE0E0F8E3099512E0A0E0B1E011
+:10068000E6ECF9E602C005900D92A832B107D9F761
+:1006900014E0A8E2B2E001C01D92A530B107E1F775
+:1006A0000E94C8130C94E1340C94000061111DC029
+:1006B000FC018281882351F085EE0E94901E0E94E9
+:1006C000BC3080E290E0A0E0B0E007C085EE0E9480
+:1006D000581F81E090E0A0E0B0E08093E1029093A9
+:1006E000E202A093E302B093E40280E090E0089578
+:1006F0000E94370E40E050E069E070E080E091E059
+:100700000C94880F08950E948B036E9A769A0C942D
+:1007100078030C948203279A2F988FEF9FEF909382
+:100720008700809386008AE08093800089E180932F
+:1007300081000C94653081110BC080918000877F0F
+:100740008093800010928D0010928C002F98089555
+:100750002F98833041F480918000886080938000DE
+:100760008FEF9FEF12C0909180009860909380006F
+:1007700023E030E0281B3109220F331F8FEF9FEF5A
+:1007800002C0969587952A95E2F790938D00809305
+:100790008C0008958B3B910568F4883A910530F5FB
+:1007A000853A9105C0F48430910598F4019709F0D9
+:1007B0006FC071C0803E910508F46AC0883E910503
+:1007C00040F09C01205F31092031310508F060C004
+:1007D0005CC09C01A1C0853A910509F45FC0863ACE
+:1007E000910509F45EC023E830E496C0883A91058B
+:1007F00009F45AC0893A910509F459C08A3A910519
+:1008000009F458C08B3A910509F457C08C3A910508
+:1008100009F456C08D3A910509F455C0803B910505
+:1008200009F454C08E3A910509F453C08F3A9105EA
+:1008300009F452C0813B910509F451C0823B9105F6
+:1008400009F450C0833B910509F44FC0843B9105E6
+:1008500009F44EC0853B910509F44DC0863B9105D6
+:1008600009F44CC0873B910509F44BC0883B9105C6
+:1008700009F44AC0893B910509F449C08A3B9105B6
+:1008800009F048C02AE236E447C09C01306544C004
+:1008900020E030E041C021E030E03EC021E830E41B
+:1008A0003BC022E830E438C022EE34E435C029EE03
+:1008B00034E432C02AEE34E42FC025EB34E42CC0FB
+:1008C00026EB34E429C027EB34E426C02CEC34E4D6
+:1008D00023C02DEC34E420C023E835E41DC02AE811
+:1008E00035E41AC022E935E417C024E935E414C020
+:1008F00021E236E411C023E236E40EC024E236E4FD
+:100900000BC025E236E408C026E236E405C027E243
+:1009100036E402C020E034E4C90108959CE0799FE8
+:10092000F00111249CE3899FE00DF11D1124E60FD5
+:10093000F11DEE0FFF1FE25DFE4F25913491C901BD
+:100940000895880F991F82559040FC01259134919C
+:10095000C9010895880F991F825D9E4FFC01259162
+:100960003491C90108950E948E049C019A958115C5
+:100970009F4110F4C9010895C90190528115904119
+:1009800028F4C9019F700E94AA040895C9019053D8
+:100990008115904120F4C9019927906C0895C901EF
+:1009A0009054409728F4C9018F709927946D089549
+:1009B000203180E4380719F480E091ED0895213169
+:1009C00090E4390719F480E090ED0895223140E475
+:1009D000340719F480E092ED0895233180E438075C
+:1009E00019F480E093ED0895211590E53907A1F4FD
+:1009F0000E948B2340E065E088E491E00E94880F2C
+:100A00002FEF44E38CE0215040408040E1F700C0EC
+:100A100000000E944F2A1EC1213090E5390731F4B1
+:100A20008091F10281608093F10214C1C901905557
+:100A30008115904108F062C0432F55274F7055270C
+:100A400041305105F9F4C90174E0880F991F7A9576
+:100A5000E1F788279370B901E3E0660F771FEA9505
+:100A6000E1F760767727862B972B9C6823703327D6
+:100A700002C0440F551F2A95E2F74F715527842B6A
+:100A8000952B08954230510529F4922F8827816FC4
+:100A9000906A089543305105B9F4C90153E0880FB5
+:100AA000991F5A95E1F7807E97702370332741E0B4
+:100AB00050E002C0440F551F2A95E2F74F715527A9
+:100AC000842B952B9C6808954430510589F5C90104
+:100AD00043E0880F991F4A95E1F7807E9770237055
+:100AE000332741E050E002C0440F551F2A95E2F73A
+:100AF0004F715527842B952B9A680895C9019056FC
+:100B00008115904118F4C901906F0895C90190575B
+:100B10008115904120F4C9019F7090620895C90128
+:100B200090588115904120F4C9019F70906A0895F2
+:100B3000203E3105E0F4203C310568F521333105D4
+:100B400009F475C048F42932310509F46BC02A3222
+:100B5000310509F07BC075C02933310501F1223818
+:100B60003105E9F02533310509F070C051C0233E4D
+:100B70003105B1F140F4203E3105D1F0223E31057E
+:100B800009F064C01CC0263E310579F1273E3105CD
+:100B900009F05CC038C0C9010E94A1040895809189
+:100BA000020380FD02C081FF51C080EE90E04FC083
+:100BB0008091020380FFF9CF89E390E048C08091E3
+:100BC000020382FF0AC08091020384FF03C080E019
+:100BD00090E03DC083EE90E03AC082EE90E037C0F6
+:100BE0008091020382FFEFCFF8CF8091020383FF51
+:100BF00007C08091020384FDEACF87EE90E027C012
+:100C000086EE90E024C08091020383FFF2CFF8CFFC
+:100C10008091020385FF03C089E290E018C085E35C
+:100C200090E015C08091020385FDF9CFF5CF80914A
+:100C3000020386FF03C08AE290E009C081E390E0EE
+:100C400006C08091020386FDF9CFF5CFC9010E944D
+:100C5000CA030895089508950C942B065F926F922D
+:100C60007F928F929F92AF92BF92CF92DF92EF923C
+:100C7000FF920F931F93CF93DF93CDB7DEB72A97E1
+:100C80000FB6F894DEBF0FBECDBF9E012F5F3F4F62
+:100C90004E018BE0880E911C60E070E000E010E0F7
+:100CA000E12CF12CC12CD12CA12CB12C8AE0782E76
+:100CB000622E532E41E050E0E3E9F1E0A62DB52D80
+:100CC000872D01900D928A95E1F7F901819191911B
+:100CD0009F01FC01E07FFF27E032F10559F48F709E
+:100CE0009927FA0102C0EE0FFF1F8A95E2F7AE2A9C
+:100CF000BF2A37C0E033F10559F48F709927FA0104
+:100D000002C0EE0FFF1F8A95E2F7CE2ADF2A29C024
+:100D1000E034F10559F48F709927FA0102C0EE0F03
+:100D2000FF1F8A95E2F7EE2AFF2A1BC0E035F10586
+:100D300059F48F709927FA0102C0EE0FFF1F8A95B0
+:100D4000E2F70E2B1F2B0DC0E036F10551F48F702A
+:100D50009927FA0102C0EE0FFF1F8A95E2F76E2B6A
+:100D60007F2B2815390509F0A7CF94B18A2D8095DE
+:100D7000892384B985B18A2985B997B18C2D80954D
+:100D8000892387B988B18C2988B99AB18E2D80952D
+:100D900089238AB98BB18E298BB99DB1802F80951B
+:100DA00089238DB98EB1802B8EB990B3862F809513
+:100DB000892380BB81B3862B81BB2A960FB6F8941A
+:100DC000DEBF0FBECDBFDF91CF911F910F91FF907E
+:100DD000EF90DF90CF90BF90AF909F908F907F90DB
+:100DE0006F905F9008955F926F927F928F929F9223
+:100DF000AF92BF92CF92DF92EF92FF920F931F9329
+:100E0000CF93DF93CDB7DEB768970FB6F894DEBF08
+:100E10000FBECDBF85B7806885BF85B7806885BFA9
+:100E20000E942E069E012F5F3F4F4E0189E1880EE2
+:100E3000911C60E070E000E010E0E12CF12CC12C8E
+:100E4000D12CA12CB12C98E1792E622E532E41E0A9
+:100E500050E0EDE9F1E0A62DB52D872D01900D9222
+:100E60008A95E1F7F901819191919F01FC01E07F61
+:100E7000FF27E032F10559F48F709927FA0102C07B
+:100E8000EE0FFF1F8A95E2F7AE2ABF2A37C0E03384
+:100E9000F10559F48F709927FA0102C0EE0FFF1F78
+:100EA0008A95E2F7CE2ADF2A29C0E034F10559F409
+:100EB0008F709927FA0102C0EE0FFF1F8A95E2F7A3
+:100EC000EE2AFF2A1BC0E035F10559F48F709927EF
+:100ED000FA0102C0EE0FFF1F8A95E2F70E2B1F2BBF
+:100EE0000DC0E036F10551F48F709927FA0102C068
+:100EF000EE0FFF1F8A95E2F76E2B7F2B2815390521
+:100F000009F0A7CF94B18A2D8095892384B985B142
+:100F10008A2985B997B18C2D8095892387B988B1A5
+:100F20008C2988B99AB18E2D809589238AB98BB185
+:100F30008E298BB99DB1802F809589238DB98EB173
+:100F4000802B8EB990B3862F8095892380BB81B387
+:100F5000862B81BB10922902109228021092330234
+:100F60001092320210922B0210922A021092350235
+:100F70001092340210922D0210922C02109237021D
+:100F80001092360210922F0210922E021092390205
+:100F900010923802109231021092300210923B02ED
+:100FA00010923A0268960FB6F894DEBF0FBECDBF1E
+:100FB000DF91CF911F910F91FF90EF90DF90CF9035
+:100FC000BF90AF909F908F907F906F905F900C94A8
+:100FD00083035F926F927F928F929F92AF92BF92A4
+:100FE000CF92DF92EF92FF920F931F93CF93DF93F5
+:100FF000CDB7DEB7A2970FB6F894DEBF0FBECDBF58
+:101000007E0149E1E40EF11C22E3C22E22E0D22E41
+:101010005E0153E2A50EB11C3AE0532E470101E0F8
+:1010200010E048E1642E55E0752EE3E9F1E0D401CB
+:10103000852D01900D928A95E1F7F70181919191AB
+:101040007F019C01207F33272032310589F424B1B0
+:101050008F709927A80102C0440F551F8A95E2F7A7
+:10106000CA01242B24B995B18095892385B94FC035
+:101070002033310589F427B18F709927F80102C018
+:10108000EE0FFF1F8A95E2F7CF012E2B27B998B1FB
+:101090008095892388B93BC02034310589F42AB171
+:1010A0008F709927A80102C0440F551F8A95E2F757
+:1010B000CA01242B2AB99BB1809589238BB927C0FB
+:1010C0002035310589F42DB18F709927F80102C0C0
+:1010D000EE0FFF1F8A95E2F7CF012E2B2DB99EB19F
+:1010E000809589238EB913C02036310581F420B351
+:1010F0008F709927A80102C0440F551F8A95E2F707
+:10110000CA01242B20BB91B38095892381BB50EA6F
+:101110005A95F1F7BE016F5F7F4F80E090E020E0CD
+:1011200030E0EDE9F1E0DE011196462D01900D92DF
+:101130004A95E1F7FB0141915191BF01FA01E07F2E
+:10114000FF27E032F10511F4E3B113C0E033F105FC
+:1011500011F4E6B10EC0E034F10511F4E9B109C0B3
+:10116000E035F10511F4ECB104C0E036F105B9F455
+:10117000EFB1F0E04F70552702C0F595E7954A951D
+:10118000E2F7E0FD08C0A801022E02C0440F551F7F
+:101190000A94E2F702C040E050E0842B952B2F5FC9
+:1011A0003F4F2C30310509F0BCCFF6012081318151
+:1011B0002817390721F091838083709270010E9473
+:1011C0002E06F2E0CF0ED11CEA14FB0409F02DCF5D
+:1011D000809170018823A1F1815080937001882350
+:1011E00039F08FE99FE00197F1F700C0000028C0B7
+:1011F00080913202909133029093290280932802C9
+:10120000809134029091350290932B0280932A02B0
+:10121000809136029091370290932D0280932C0298
+:10122000809138029091390290932F0280932E0280
+:1012300080913A0290913B02909331028093300268
+:101240000E94890381E0A2960FB6F894DEBF0FBE1C
+:10125000CDBFDF91CF911F910F91FF90EF90DF9065
+:10126000CF90BF90AF909F908F907F906F905F9046
+:101270000895E82FF0E0EE0FFF1FE85DFD4F80813D
+:10128000918108950895CF92DF92EF92FF920F938C
+:101290001F93CF93DF93CDB7DEB7CC5BD2400FB6B1
+:1012A000F894DEBF0FBECDBF8C01862F642F88233C
+:1012B00079F0F80192812FE7482F992329F084E0F3
+:1012C00093E00E94EC1904C084E093E00E94FC19B2
+:1012D000F80180818B3091F59181943009F0A8C29A
+:1012E0009281809173019923B1F08F5F8093730194
+:1012F00096E4E5EBF1E0DE01A958BD4F01900D92B7
+:101300009A95E1F7E0917101F0917201EE0FFF1FE4
+:1013100027E732E036C096E4E5EBF1E0DE01AF5CB2
+:10132000BD4F01900D929A95E1F7E0917101F09116
+:101330007201EE0FFF1F21E332E093C08A3009F003
+:10134000CBC0F8019181943009F072C292818091F2
+:101350007301992309F473C081508093730196E45B
+:10136000E5EBF1E0DE01A551BE4F01900D929A959B
+:10137000E1F7E0917101F0917201EE0FFF1F2BEE8A
+:1013800031E02C0F3D1FE20FF31F60817181680F68
+:10139000711D882777FD8095982F0E94003220E0EC
+:1013A00030E040E451E40E94653120E030E040E864
+:1013B00050E40E94FD309B01AC0160E070E080E0F1
+:1013C00090E40E94173321E230ED42E053E40E94A2
+:1013D000B4324CE050E00E94E30F20E04BE760E0C5
+:1013E00084E093E00E94DC1920E04BE761E084E0B8
+:1013F00093E00E94DC1920E04BE762E084E093E098
+:101400000E94DC1920E04BE763E084E093E00E9457
+:10141000DC1920E04BE764E084E093E0C454DD4F46
+:101420000FB6F894DEBF0FBECDBFDF91CF911F91F5
+:101430000F91FF90EF90DF90CF900C94DC1996E421
+:10144000E5EBF1E0DE01AB55BE4F01900D929A95B0
+:10145000E1F7E0917101F0917201EE0FFF1F25EAB3
+:1014600031E02C0F3D1FE20FF31F60817181680F87
+:10147000711D882777FD8095982F0E94003220E00B
+:1014800030E040E451E40E94653120E030E040E883
+:1014900050E40E94FD309B01AC0160E070E080E010
+:1014A00090E40E94173321E230ED42E053E40E94C1
+:1014B000B4320E94130DC454DD4F0FB6F894DEBF52
+:1014C0000FBECDBFDF91CF911F910F91FF90EF9095
+:1014D000DF90CF900C94E60C893009F0D3C0F8016E
+:1014E0009181943009F0A4C19281992309F4A0C19B
+:1014F0008091710190917201019690937201809395
+:10150000710120E04BE760E084E093E00E94DC1989
+:1015100020E04BE761E084E093E00E94DC1920E0EA
+:101520004BE762E084E093E00E94DC1920E04BE7A7
+:1015300063E084E093E00E94DC1920E04BE764E084
+:1015400084E093E00E94DC190E94E60C00E010E0C9
+:10155000E6E4FE2E80917301E5EBF1E0DE01A15A95
+:10156000BE4F9F2D01900D929A95E1F7E091710188
+:10157000F0917201E00FF11FEE0FFF1F2FE531E038
+:101580002C0F3D1FE20FF31F60817181680F711DE9
+:10159000882777FD8095982F0E94003220E030E068
+:1015A00040E451E40E94653120E030E040E850E43E
+:1015B0000E94FD309B01AC0160E070E080E090E4AF
+:1015C0000E94173321E230ED42E053E40E94B4322E
+:1015D0004CE050E00E94E30F3FEF87EE93E0315084
+:1015E00080409040E1F700C0000080917301E5EB7E
+:1015F000F1E0DE01A75EBE4F9F2D01900D929A95FE
+:10160000E1F7E0917101F0917201E00FF11FEE0F2F
+:10161000FF1F29E131E02C0F3D1FE20FF31F608116
+:101620007181680F711D882777FD8095982F0E9422
+:10163000003220E030E040E451E40E94653120E0D7
+:1016400030E040E850E40E94FD309B01AC0160E0D6
+:1016500070E080E090E40E94173321E230ED42E038
+:1016600053E40E94B4320E94130D8FEF9CE7019760
+:10167000F1F700C000000F5F1F4F0830110509F09F
+:1016800069CF94C1883009F0D3C0F80191819430BA
+:1016900009F0CEC09281992309F4CAC080917101EA
+:1016A000909172010197909372018093710120E0F3
+:1016B0004BE760E084E093E00E94DC1920E04BE718
+:1016C00061E084E093E00E94DC1920E04BE762E0F7
+:1016D00084E093E00E94DC1920E04BE763E084E0C3
+:1016E00093E00E94DC1920E04BE764E084E093E0A3
+:1016F0000E94DC190E94E60C00E010E056E4F52E92
+:1017000080917301E5EBF1E0DE01AD52BF4F9F2DFB
+:1017100001900D929A95E1F7E0917101F0917201BB
+:10172000E00FF11FEE0FFF1F23ED30E02C0F3D1FE8
+:10173000E20FF31F60817181680F711D882777FDAB
+:101740008095982F0E94003220E030E040E451E480
+:101750000E94653120E030E040E850E40E94FD3016
+:101760009B01AC0160E070E080E090E40E941733E0
+:1017700021E230ED42E053E40E94B4324CE050E00C
+:101780000E94E30F3FEF87EE93E03150804090409E
+:10179000E1F700C0000080917301E5EBF1E0DE01AC
+:1017A000A357BF4F9F2D01900D929A95E1F7E091BD
+:1017B0007101F0917201E00FF11FEE0FFF1F2DE894
+:1017C00030E02C0F3D1FE20FF31F60817181680F25
+:1017D000711D882777FD8095982F0E94003220E0A8
+:1017E00030E040E451E40E94653120E030E040E820
+:1017F00050E40E94FD309B01AC0160E070E080E0AD
+:1018000090E40E94173321E230ED42E053E40E945D
+:10181000B4320E94130D8FEF9CE70197F1F700C0DF
+:1018200000000F5F1F4F0830110509F069CFBEC0DF
+:10183000F801228190917301222309F45DC026E40E
+:10184000E5EBF1E0DE01A95BBF4F01900D922A9517
+:10185000E1F7E0917101F0917201E80FF11DEE0FD7
+:10186000FF1F27E430E02C0F3D1FE20FF31F6081C4
+:101870007181690F711D882777FD8095982F0E94CF
+:10188000003220E030E040E451E40E9465316B0119
+:101890007C01F801818165E070E0681B710988278F
+:1018A00077FD8095982F0E9400329B01AC01C70103
+:1018B000B6010E94FD309B01AC0160E070E080E069
+:1018C00090E40E94173321E230ED42E053E40E949D
+:1018D000B4324FE050E0C454DD4F0FB6F894DEBF91
+:1018E0000FBECDBFDF91CF911F910F91FF90EF9071
+:1018F000DF90CF900C94E30F26E4E5EBF1E0DE01FE
+:10190000119601900D922A95E1F7E0917101F09105
+:101910007201E80FF11DEE0FFF1F21E030E02C0FE8
+:101920003D1FE20FF31F60817181690F711D8827D0
+:1019300077FD8095982F0E94003220E030E040E44F
+:1019400051E40E9465316B017C01F801818165E001
+:1019500070E0681B7109882777FD8095982F0E9499
+:1019600000329B01AC01C701B6010E94FD309B0112
+:10197000AC0160E070E080E090E40E94173321E267
+:1019800030ED42E053E40E94B432C454DD4F0FB650
+:10199000F894DEBF0FBECDBFDF91CF911F910F91A5
+:1019A000FF90EF90DF90CF900C94130DC454DD4F57
+:1019B0000FB6F894DEBF0FBECDBFDF91CF911F9160
+:1019C0000F91FF90EF90DF90CF90089510928702D3
+:1019D00010928602809171008D7F809371008091BA
+:1019E00090008F77809390001092480210924702E7
+:1019F0001092800210928102109282021092830251
+:101A000010927F0210927E02EEE5F2E0AEE4B2E0C8
+:101A100011921192119211921D921D9282E0EE3755
+:101A2000F807B1F708956F927F928F929F92AF92CD
+:101A3000BF92CF92DF92EF92FF920F931F93CF93BB
+:101A4000DF936B017C010EE712E04CE5A42E42E02F
+:101A5000B42EC7E0D0E0A7019601F80192918291DF
+:101A6000729162918F010E946131882349F0219720
+:101A7000F2E0AF1AB108CF3F8FEFD80761F734C05B
+:101A8000F8011082118212821382F50111821082F4
+:101A9000FE01EE0FFF1FEE0FFF1FE25AFD4FDE01AA
+:101AA000AA0FBB1FA25BBD4FCE011AC00196448195
+:101AB0005581668177814083518362837383148269
+:101AC00015821682178212962D913C9113971196CA
+:101AD0003C932E9313961C921E9212973496129654
+:101AE0008730910519F7C3CF8091860290918702C4
+:101AF000019797FD05C0909387028093860204C0EA
+:101B00001092870210928602E0918602F09187027D
+:101B10003097C9F4809171008D7F8093710080911E
+:101B200090008F7780939000109280021092810233
+:101B3000109282021092830210927F0210927E0213
+:101B40001092470285C03197DF01AA0FBB1FAA0F71
+:101B5000BB1FA25ABD4FCD90DD90ED90FC90EE0FD3
+:101B6000FF1FE25BFD4FC081D181609080027090C9
+:101B700081028090820290908302A7019601662DD7
+:101B8000772D882D992D0E94613187FF25C0262D44
+:101B9000372D482D592DC701B6010E94FC3020E099
+:101BA00030E04AEF54E40E9465315B018C012A2D3C
+:101BB0003B2D402F512F662D772D882D992D0E947A
+:101BC000FD303B014C01A7019601772D992D0E9414
+:101BD0006131181664F72EC0A7019601662D772D86
+:101BE000882D992D0E94B032181634F5A701960160
+:101BF000662D772D882D992D0E94FC3020E030E055
+:101C00004AEF54E40E9465315B018C012A2D3B2D83
+:101C1000402F512F662D772D882D992D0E94FC3055
+:101C20003B014C01A7019601772D992D0E94B032FE
+:101C300087FFECCF10924D02C0928002D0928102B9
+:101C4000E0928202F0928302D0937F02C0937E02E0
+:101C5000DF91CF911F910F91FF90EF90DF90CF9088
+:101C6000BF90AF909F908F907F906F9008953E9A15
+:101C7000E1E7F0E080818D7F808382E080939000B7
+:101C80008AE18093910008951F920F920FB60F92F0
+:101C90001124CF92DF92EF92FF922F933F934F93B5
+:101CA0005F936F937F938F939F93AF93BF93CF93E4
+:101CB000DF93EF93FF9380914702882309F479C063
+:101CC00020E030E0A9016091800270918102809152
+:101CD0008202909183020E94B03218160CF069C003
+:101CE00020E030E040E251E46091490270914A0204
+:101CF00080914B0290914C020E94B0321816BCF4B5
+:101D00008091840290918502019660918602709183
+:101D100087020E949C3490938502809384021092E3
+:101D2000490210924A0210924B0210924C02C0914A
+:101D30008402D0918502CC0FDD1FCC0FDD1FC25A6B
+:101D4000DD4F288139814A815B8160E074E284E75C
+:101D50009BE40E9465310E94CD317093970060939F
+:101D60009600288139814A815B8160E074E284E7D2
+:101D70009BE40E9465310E94CD3175956795709303
+:101D800099006093980020E030E040E85FE36091C4
+:101D9000490270914A0280914B0290914C020E943C
+:101DA000FD306093490270934A0280934B029093F6
+:101DB0004C0280914802882309F493C0C0904302EA
+:101DC000D0904402E0904502F090460220E030E0DE
+:101DD000A901C701B6010E94B0321816F4F4A70198
+:101DE000960160E074E284E79BE40E9465310E9402
+:101DF000CD317093970060939600A701960160E043
+:101E000074E284E79BE40E9465310E94CD317595B0
+:101E10006795709399006093980060913D0270916E
+:101E20003E026F5F7F4F70933E0260933D0280E001
+:101E300090E00E94FE3120913F023091400240919B
+:101E40004102509142020E94B03287FD4AC0809107
+:101E50003C028F5F80933C029091F1038917A0F0C0
+:101E60008091F603882319F010923C020DC08091F6
+:101E700071008D7F80937100809190008F778093A7
+:101E80009000109248022DC0E091F203F091F3030C
+:101E900080913C0298E0899FE00DF11D1124808122
+:101EA0009181A281B3818093430290934402A093D5
+:101EB0004502B093460220E030E040E85EE36481F2
+:101EC0007581868197810E94B43260933F0270933E
+:101ED0004002809341029093420210923E0210927F
+:101EE0003D02FF91EF91DF91CF91BF91AF919F9113
+:101EF0008F917F916F915F914F913F912F91FF90C3
+:101F0000EF90DF90CF900F900FBE0F901F9018951D
+:101F10000F931F93CF93DF9300D0CDB7DEB78C0123
+:101F200080914702882331F04A8369830E94E60C3E
+:101F300069814A8181E0809348021093F303009302
+:101F4000F2036093F1034093F6031092490210925A
+:101F50004A0210924B0210924C0210923C02F8017D
+:101F600040815181628173814093430250934402C6
+:101F7000609345027093460220E030E040E85EE363
+:101F800064817581868197810E94B43260933F029B
+:101F900070934002809341029093420210923E025D
+:101FA00010923D0280917100826080937100809157
+:101FB00090008068809390000F900F90DF91CF91F8
+:101FC0001F910F9108956F927F928F929F92AF927F
+:101FD000BF92CF92DF92EF92FF920F931F93CF9316
+:101FE000DF936B017C01EA018091480281110E941C
+:101FF000E60C81E08093470220E030E0A901C701B0
+:10200000B6010E94B03218160CF09AC0609080029F
+:1020100070908102809082029090830220E030E0F4
+:10202000A901662D772D882D992D0E94613181118E
+:1020300028C0C0928002D0928102E0928202F09287
+:102040008302D0937F02C0937E028091860290919A
+:102050008702FC01EE0FFF1FEE0FFF1FE25AFD4F3C
+:10206000C082D182E282F382FC01EE0FFF1FE25BAD
+:10207000FD4FD183C083019690938702809386029F
+:102080005FC0A7019601662D772D882D992D0E949E
+:10209000613187FF25C0262D372D482D592DC701C9
+:1020A000B6010E94FC3020E030E04AEF54E40E9488
+:1020B00065315B018C012A2D3B2D402F512F662D60
+:1020C000772D882D992D0E94FD303B014C01A701F1
+:1020D0009601772D992D0E946131181664F7A9CFCA
+:1020E000A7019601662D772D882D992D0E94B0327B
+:1020F00018160CF09ECFA7019601662D772D882D1E
+:10210000992D0E94FC3020E030E04AEF54E40E9418
+:1021100065315B018C012A2D3B2D402F512F662DFF
+:10212000772D882D992D0E94FC303B014C01A70191
+:102130009601772D992D0E94B03287FFECCF79CF91
+:10214000809171008260809371008091900080681E
+:1021500080939000DF91CF911F910F91FF90EF90AE
+:10216000DF90CF90BF90AF909F908F907F906F90B7
+:102170000895809191020895CF93DF9300D01F922C
+:10218000CDB7DEB72091FB03243021F523E029836E
+:102190009B838A832093E9008FEF06C095ED9A9583
+:1021A000F1F70000882329F09091E800815095FF15
+:1021B000F5CF8091E80085FF0DC040E050E063E07E
+:1021C00070E0CE0101960E94A6148091E8008E77FF
+:1021D0008093E8000F900F900F90DF91CF910895BA
+:1021E000CF93DF9300D01F92CDB7DEB72091FB03D2
+:1021F000243029F522E029839B838A8383E080931E
+:10220000E9008FEF06C095ED9A95F1F7000088235D
+:1022100029F09091E800815095FFF5CF8091E8007A
+:1022200085FF0DC040E050E063E070E0CE01019614
+:102230000E94A6148091E8008E778093E8000F90AA
+:102240000F900F90DF91CF9108952091FB032430E0
+:10225000F9F422E02093E9002FEF06C035ED3A951E
+:10226000F1F70000222329F03091E800215035FFDA
+:10227000F5CF2091E80025FF0BC040E050E065E07D
+:1022800070E00E94A6148091E8008E778093E800A9
+:102290000895CF93DF93EC018091FB03843041F5E7
+:1022A00081E08093E9008FEF06C095ED9A95F1F7F4
+:1022B0000000882329F09091E800815095FFF5CF28
+:1022C0008091E80085FF14C040E050E068E070E0D5
+:1022D000CE010E94A6148091E8008E778093E800DA
+:1022E00088E0FE01A9E8B2E001900D928A95E1F73D
+:1022F000DF91CF910895BF92CF92DF92EF92FF923C
+:102300000F931F93CF93DF937C01B62EE90100E07A
+:1023100010E0C42ED12C0BC04991202F2B0D2F770C
+:102320004F776FE0C7010E94DC190F5F1F4F0C153C
+:102330001D0594F3DF91CF911F910F91FF90EF90C6
+:10234000DF90CF90BF90089570E06F5F7F4F6F7008
+:1023500077270C94DC190F931F93CF93C42F63300E
+:10236000710509F04AC0842F807F803849F1803997
+:1023700009F043C0622F6F7770E080E090E00E9428
+:10238000003220E030E040E451E40E9465319B01DE
+:10239000AC0160E070E080E090E40E9417330F77BA
+:1023A00010E023E0159507952A95E1F72DEC3CEC1C
+:1023B00042E053E40E94B432A8010E94E30F1DC022
+:1023C000622F6F7770E080E090E00E94003220E0A2
+:1023D00030E040E451E40E9465319B01AC0160E0D3
+:1023E00070E080E090E40E9417332DEC3CEC42E07A
+:1023F00053E40E94B4320E94130DCC3F29F4CF91D4
+:102400001F910F910C94E60CCF911F910F9108959D
+:102410000F931F93CF93DF93CDB7DEB727970FB6F8
+:10242000F894DEBF0FBECDBF8C0114C08A810E941C
+:10243000B6199A819D839B819E839C819F83811184
+:102440001EC089818430B1F08730A1F08630A1F0C0
+:102450008530A1F0BE016F5F7F4F84E791E00E945D
+:10246000231D8111E3CF84E791E00E94141D0E9497
+:102470008F190DC083E003C082E001C081E0AE018E
+:102480004B5F5F4F682FC8010E94491AE3CF279620
+:102490000FB6F894DEBF0FBECDBFDF91CF911F9175
+:1024A0000F910895EF92FF920F93CF93DF9300D097
+:1024B00000D000D0CDB7DEB77B014A832B830C83DD
+:1024C000842F2E834D830E94B6192E814D81811158
+:1024D0001BC082E0E816F10479F083E0E816F1040D
+:1024E00021F0EA94EF2821F50BC0073F11F487E0B3
+:1024F00001C084E089830BC0273FD9F786E0FACF7B
+:10250000473FB9F785E0F6CF42954F704983BE014A
+:102510006F5F7F4F84E791E00E94D91C84E791E0D0
+:102520000E94F71C84E791E00E94141D0E948F19FD
+:1025300026960FB6F894DEBF0FBECDBFDF91CF91C8
+:102540000F91FF90EF9008958091FA03811109C0D7
+:102550000E9495160E94F2168091E200846080939A
+:10256000E20008951092FA030895089508950C94D6
+:10257000B229809192028F5F8093920262E30E945F
+:102580007C34911135C0109292028091930288237D
+:1025900079F18091FB03843049F58091E9008F70D7
+:1025A0009091EC0090FF02C090E801C090E0982B61
+:1025B00084E08093E9008091EB0080FF14C080915B
+:1025C000EE0087FD03C00FC01092F1008091E8007B
+:1025D00085FDFACF8091E80080FF05C08091E8007A
+:1025E0008E778093E8009F709093E9001092930299
+:1025F000089542E061EC81E00E940B1642E061EC3C
+:1026000082E00E940B1642E061EC83E00E940B1610
+:1026100042E261EC84E00E940B1642E361E885E04F
+:102620000E940B1642E360E886E00C940B16809142
+:10263000FD03833009F454C030F4813071F08230EE
+:1026400009F0A5C08CC08A3009F479C08B3009F438
+:102650005FC0893009F09BC020C08091FC03813AA3
+:1026600009F095C08091E800877F8093E800809111
+:10267000000490910104892B21F060E080E090E05B
+:1026800003C068E089E892E070E00E944415809100
+:10269000E8008B778093E80008958091FC038132F5
+:1026A00009F075C08091000490910104892B09F014
+:1026B0006EC08091E800877F8093E80005C080911C
+:1026C000FB03882309F463C08091E80082FFF7CF01
+:1026D0008091F100809391028091E8008B7753C044
+:1026E0008091FC03813A09F052C0809100049091DE
+:1026F0000104892B09F04BC08091E800877F80930B
+:10270000E8008091E80080FFFCCF80918A0136C00C
+:102710008091FC038132D9F58091000490910104ED
+:10272000892BA9F58091E800877F8093E8000E94BB
+:1027300042168091FE0380938A010C948B23809132
+:10274000FC03813221F58091E800877F8093E800C7
+:102750000E9442168091FF03809388020895809121
+:10276000FC03813AA1F48091E800877F8093E80020
+:102770008091E80080FFFCCF809188028093F10077
+:102780008091E8008E778093E8000C9442160895BB
+:1027900084E093E00E94181A62E572E184E093E01D
+:1027A0000E946E1A68E072E184E093E00E94721A5F
+:1027B00084B7877F84BF88E10FB6F8948093600068
+:1027C000109260000FBE90E080E80FB6F8948093FE
+:1027D0006100909361000FBE0E949C1D0E9495169F
+:1027E0000E94F2168091E20084608093E200789467
+:1027F0006BEA71E184E093E00E94141A64EA71E1EB
+:1028000084E093E00E940C1A6BE771E184E093E0AE
+:102810000E94101A0E94370E0E948F190E949E1D5E
+:1028200080E891E00E94481D0BC00E946C298091B5
+:10283000F903882329F00E949A2981110E9490149B
+:102840008091FB03853089F384E093E00E94211C92
+:102850000E94A81DF5CF292F332723303105B1F071
+:102860004CF42130310509F44DC02230310509F016
+:102870004EC007C02132310541F12232310591F1BC
+:1028800046C0E0EDF0E08CE594E045C0992781304A
+:10289000910569F08230910589F0892B09F037C0E4
+:1028A000E8E5F4E0E491F0E088E594E034C0EAE2A1
+:1028B000F4E0E491F0E08AE294E02DC0EEEFF3E082
+:1028C000E491F0E08EEF93E026C0643000F5E62F4F
+:1028D000F0E0EE0FFF1FE550FE4F80819181E9E0AF
+:1028E000F0E019C0643098F4E62FF0E0DF01AA0FA1
+:1028F000BB1FAD5FBD4F8D919C91E55FFD4FE081AA
+:10290000F0E009C0E2E1F0E08CE295E004C0E0E034
+:10291000F0E080E090E0DA018D939C93CF01089580
+:1029200080E189BD82E189BD09B400FEFDCF8091BF
+:10293000D8008F7D8093D8008091E00082608093E2
+:10294000E0008091E00081FDFCCF0895BF92CF921E
+:10295000DF92EF92FF920F931F93CF93DF937C014F
+:102960008B01EA010E946316B82E811133C02097B3
+:1029700031F028813981021B130BE20EF31EC12CAA
+:10298000D12C23C08091E80085FD15C08091E8001E
+:102990008E778093E800209749F0888199818C0D8B
+:1029A0009D1D9983888325E0B22E14C00E94631672
+:1029B000882359F00EC0F70181917F018093F100C7
+:1029C00001501109FFEFCF1ADF0A01151105D1F6E9
+:1029D00001C0B82E8B2DDF91CF911F910F91FF90E9
+:1029E000EF90DF90CF90BF900895BF92CF92DF928B
+:1029F000EF92FF920F931F93CF93DF937C018B0194
+:102A0000EA010E946316B82E811133C0209731F07D
+:102A100028813981021B130BE20EF31EC12CD12C2D
+:102A200023C08091E80085FD15C08091E8008B7778
+:102A30008093E800209749F0888199818C0D9D1D35
+:102A40009983888345E0B42E14C00E9463168823BE
+:102A500059F00EC08091F100F70181937F01015080
+:102A60001109FFEFCF1ADF0A01151105D1F601C0D8
+:102A7000B82E8B2DDF91CF911F910F91FF90EF908A
+:102A8000DF90CF90BF9008954091020450910304CD
+:102A90004617570748F06115710539F44091E80071
+:102AA0004E774093E80001C0BA01FC0140E033C01A
+:102AB0008091FB03882309F444C0853009F443C0A6
+:102AC0008091E80083FD41C08091E80082FD33C021
+:102AD0008091E80080FF1FC09091F3008091F20088
+:102AE000392F20E0A901482BCA0106C0419140932B
+:102AF000F1006150710901966115710519F0883076
+:102B00009105A0F341E0089709F040E08091E800CA
+:102B10008E778093E8006115710551F64111C8CF99
+:102B20000AC08091FB03882361F0853061F08091B9
+:102B3000E80083FD0AC08091E80082FFF2CF80E0C8
+:102B4000089582E0089583E0089581E0089540911A
+:102B50000204509103044617570748F061157105A8
+:102B600039F44091E8004E774093E80001C0BA0183
+:102B7000FC0140E034C08091FB03882309F445C088
+:102B8000853009F444C08091E80083FD42C0809103
+:102B9000E80082FD34C08091E80080FF20C0909161
+:102BA000F3008091F200392F20E0A901482BCA01DF
+:102BB00007C044914093F10031966150710901962C
+:102BC0006115710519F08830910598F341E0089777
+:102BD00009F040E08091E8008E778093E80061156D
+:102BE000710549F64111C7CF0AC08091FB038823C4
+:102BF00061F0853061F08091E80083FD0AC080912A
+:102C0000E80082FFF2CF80E0089582E0089583E03B
+:102C1000089581E00895982F2CC09093E9009817AB
+:102C200039F07091EC002091ED005091F00003C05C
+:102C3000242F762F50E021FD02C09F5F1AC03091F3
+:102C4000EB003E7F3093EB003091ED003D7F309301
+:102C5000ED003091EB0031603093EB007093EC00AD
+:102C60002093ED005093F0002091EE0027FDE5CF7A
+:102C700007C0973090F28F708093E90081E008954B
+:102C800080E008958091FC0387FD05C08091E800F5
+:102C900080FF0EC012C08091E80082FD05C08091C7
+:102CA000FB038111F8CF08958091E8008B7708C06D
+:102CB0008091FB038111EACF08958091E8008E771F
+:102CC0008093E80008958091E4009091E50045E646
+:102CD0002091EC0020FD1FC023C02091FB03222384
+:102CE00091F0253091F02091EB0025FD10C020914E
+:102CF000E4003091E5002817390751F34150C9012C
+:102D000039F784E0089582E0089583E0089581E032
+:102D1000089580E008952091E80020FFDECFF9CFEC
+:102D20002091E80022FFD9CFF4CF0E9403170E9420
+:102D30000B17E0EEF0E0808181608083E8EDF0E049
+:102D400080818F77808319BCA7EDB0E08C918E7F56
+:102D50008C9380818F7E80831092FA0308950F9365
+:102D60001F93CF93DF930E9403170E940B17C8EDA8
+:102D7000D0E088818F778883888180688883888184
+:102D80008F7D888319BC1092FB031092F703109279
+:102D9000F9031092F80300EE10E0F80180818B7FB8
+:102DA000808388818160888342E060E080E00E94C7
+:102DB0000B16E1EEF0E080818E7F8083E2EEF0E0A2
+:102DC000808181608083808188608083F801808138
+:102DD0008E7F8083888180618883DF91CF911F916E
+:102DE0000F910895E8EDF0E080818F7E8083E7ED1C
+:102DF000F0E080818160808384E082BF81E0809305
+:102E0000FA030C94AF16E8EDF0E080818E7F8083AA
+:102E10001092E20008951092DA001092E1000895F5
+:102E20001F920F920FB60F9211242F933F934F933F
+:102E30005F936F937F938F939F93AF93BF93EF9322
+:102E4000FF938091E10082FF0BC08091E20082FF3E
+:102E500007C08091E1008B7F8093E1000E94B9124E
+:102E60008091DA0080FF1FC08091D80080FF1BC0D6
+:102E70008091DA008E7F8093DA008091D90080FF04
+:102E80000DC080E189BD82E189BD09B400FEFDCF9E
+:102E900081E08093FB030E94A41205C019BC10922C
+:102EA000FB030E94B2128091E10080FF19C0809163
+:102EB000E20080FF15C08091E2008E7F8093E200E7
+:102EC0008091E20080618093E2008091D80080626E
+:102ED0008093D80019BC85E08093FB030E94B61252
+:102EE0008091E10084FF30C08091E20084FF2CC01B
+:102EF00080E189BD82E189BD09B400FEFDCF8091EA
+:102F0000D8008F7D8093D8008091E1008F7E8093E0
+:102F1000E1008091E2008F7E8093E2008091E200E8
+:102F200081608093E2008091F703882311F084E0B0
+:102F300007C08091E30087FF02C083E001C081E009
+:102F40008093FB030E94B7128091E10083FF29C0A8
+:102F50008091E20083FF25C08091E100877F80930C
+:102F6000E10082E08093FB031092F7038091E1007F
+:102F70008E7F8093E1008091E2008E7F8093E2005B
+:102F80008091E20080618093E20042E060E080E0B6
+:102F90000E940B168091F00088608093F0000E94E0
+:102FA000B512FF91EF91BF91AF919F918F917F915A
+:102FB0006F915F914F913F912F910F900FBE0F90A6
+:102FC0001F9018951F920F920FB60F9211242F93F6
+:102FD0003F934F935F936F937F938F939F93AF93A1
+:102FE000BF93CF93EF93FF938091E9008F709091FF
+:102FF000EC0090FF02C090E801C090E0C92FC82B00
+:103000001092E9008091F000877F8093F00078941F
+:103010000E9426181092E9008091F0008860809349
+:10302000F000CF70C093E900FF91EF91CF91BF9175
+:10303000AF919F918F917F916F915F914F913F9150
+:103040002F910F900FBE0F901F9018951F93CF9345
+:10305000DF93CDB7DEB7AC970FB6F894DEBF0FBEE7
+:10306000CDBFECEFF3E08091F100819324E0E430F8
+:10307000F207C9F70E9417138091E80083FF37C158
+:103080008091FC039091FD03953009F488C038F4D9
+:103090009130B1F170F0933009F029C131C098300E
+:1030A00009F4F8C0993009F404C1963009F01FC141
+:1030B0009DC0803821F0823809F019C108C0809184
+:1030C000F8039091F903992389F082600FC08091F1
+:1030D0000004909101048F7099278093E9008091FA
+:1030E000EB0085FB882780F91092E9009091E800B9
+:1030F000977F9093E8008093F1001092F100D5C083
+:10310000882319F0823009F0F2C08F7121F08230EB
+:1031100009F0EDC00BC08091FE03813009F0E7C0DB
+:10312000933009F080E08093F9032FC08091FE0373
+:1031300081112BC080910004909101048F70992718
+:10314000009709F4D4C08093E9002091EB0020FFA0
+:103150001CC02091FD03233021F48091EB0080629C
+:1031600012C09091EB0090619093EB0021E030E071
+:1031700001C0220F8A95EAF72093EA001092EA0034
+:103180008091EB0088608093EB001092E9008091C1
+:10319000E800877F8093E8000E944216A8C0811152
+:1031A000A6C08091FE039091FF038F779927182F77
+:1031B0009091E3009078982B9093E3008091E80041
+:1031C000877F8093E8000E9442168091E80080FF8C
+:1031D000FCCF8091E30080688093E300112311F01D
+:1031E00083E001C082E08093FB0381C0805882307D
+:1031F00008F07DC08091FE039091FF038C3D23E099
+:10320000920779F583E08A838AE289834FB7F8943D
+:10321000DE01139620E03EE051E2E32FF0E0509310
+:103220005700E49120FF03C0E295EF703F5FEF701D
+:103230008E2F90E0EA3010F0C79601C0C0968D93B3
+:103240009D932F5F243149F74FBF8091E800877F1E
+:103250008093E8006AE270E0CE0101960E94441576
+:1032600013C0AE01455D5F4F609100040E942B14B6
+:103270000097E9F12091E800277F2093E800BC0146
+:103280008BA59CA50E94A7158091E8008B77809361
+:10329000E8002DC0803859F58091E800877F809341
+:1032A000E8008091F7038093F1008091E8008E7729
+:1032B00071CF81111CC09091FE039230C0F48091B7
+:1032C000E800877F8093E8009093F7030E944216FE
+:1032D0008091F703811104C08091E30087FF02C051
+:1032E00084E001C081E08093FB030E94F912809189
+:1032F000E80083FF0AC08091E800877F8093E800A0
+:103300008091EB0080628093EB00AC960FB6F8944E
+:10331000DEBF0FBECDBFDF91CF911F910895CF9338
+:103320008091FB038823B1F08091E9008F70909128
+:10333000EC0090FF02C090E801C090E0C92FC82BBC
+:103340001092E9008091E80083FD0E942618CF705A
+:10335000C093E900CF910895881F8827881F08959A
+:1033600091E0883F08F490E0892F0895982F907F8E
+:10337000903B99F038F4903981F0903A71F09038A0
+:10338000C9F40BC0903DA1F018F4903C99F410C022
+:10339000903E19F0903F71F402C083E00895E82F49
+:1033A000E15FEF3038F4F0E0E15FFD4F8081089598
+:1033B00082E0089580E008950F932F774F776F7024
+:1033C000606BDC01ED91FC91022F242F462F63E00E
+:1033D00070E009950F9108950F932F774F776F70D5
+:1033E0006069DC01ED91FC91022F242F462F63E0F0
+:1033F00070E009950F9108950F932F774F776F70B5
+:103400006068DC01ED91FC91022F242F462F63E0D0
+:1034100070E009950F910895FC017383628308950C
+:10342000FC01738F628F0895FC01758F648F08957E
+:10343000CF93DF93EC011DA21FA21EA2BC01685D09
+:103440007F4F40EC88519F4F0E94551C1B821A826F
+:103450001D821C821F821E82198618861B861A8670
+:103460001D861C861F861E86198A188A1B8A1A8A40
+:103470001D8A1C8A1F8A1E8A198E188E1B8E1A8E10
+:103480001D8E1C8E1F8E1E8E19A218A2DF91CF9149
+:103490000895CF92DF92FF920F931F93CF93DF9304
+:1034A0001F92CDB7DEB7F62E6A018C0108511F4F6F
+:1034B00008C0F60161916F01C80149830E945C1C3C
+:1034C00049818C2D841B8F15A0F30F90DF91CF9134
+:1034D0001F910F91FF90DF90CF900895FC017183B1
+:1034E00060830895FC0171A360A30895AF92BF9219
+:1034F000CF92DF92EF92FF920F931F93CF93DF93C0
+:1035000000D01F92CDB7DEB77C016B01142FB22E15
+:10351000A02EDC0195968C9195978430F1F45A9603
+:10352000ED91FC915B97309709F4D8C0CB010197DE
+:1035300063E070E00E948834DB01AA0FBB1FA60F76
+:10354000B71F49832A830B834C2D4A1B9E012F5F93
+:103550003F4FBD01C7010995B1C06230710509F443
+:1035600053C06330710529F06130710509F09CC0CA
+:1035700083C0842F807F803A01F130F48038B9F025
+:10358000803909F0ABC00DC0803EE9F0803F09F101
+:10359000803B09F0A3C0D7011296ED91FC911397DF
+:1035A00023C0D7011496ED91FC9115971DC0D7014A
+:1035B0001696ED91FC91179717C0D7011896ED91CB
+:1035C000FC91199711C0D7011A96ED91FC911B97A8
+:1035D0000BC0423F09F082C0D7011C96ED91FC91CF
+:1035E0001D97309731F47AC0309709F477C0123FB5
+:1035F00021F42A2D4B2D62EF04C0612F6F702A2D0C
+:103600004B2DC70109955AC0842F807F803D59F00A
+:10361000803F79F0803C09F061C0D7011E96ED91A2
+:10362000FC911F9719C0D7015096ED91FC915197CD
+:1036300013C0433F31F4D7015296ED91FC9153975B
+:1036400008C0413F09F04AC0D7015496ED91FC9162
+:103650005597309741F442C0309709F43FC0133F6B
+:1036600011F0113F19F44B2D612F03C0612F6F70C2
+:103670004B2DC701099522C0842F0E94B0198823C1
+:1036800031F0D7015696ED91FC91579707C0163F40
+:1036900029F5D7015896ED91FC9159973097F1F0A3
+:1036A000612FC70109950AC064307105A8F416C0DE
+:1036B0000A2D2B2D412FB601C7010995D7015E9622
+:1036C000ED91FC915F97309789F00A2D2B2D412FBA
+:1036D000B601C70109950AC0C12CD12CD7015C964F
+:1036E000ED91FC915D97309719F7E8CF0F900F900F
+:1036F0000F90DF91CF911F910F91FF90EF90DF908E
+:10370000CF90BF90AF900895EF92FF920F931F93C9
+:10371000CF93DF93EC01162F862F0E94B0198823D8
+:1037200069F0FDA081E08DA300E020E0412F61E081
+:1037300070E0CE010E94761AFDA27CC0812F0E940B
+:10374000AC194DA1882309F440C0443029F01AA3D4
+:1037500021E030E03FA32EA3812F0E94B6198130D3
+:1037600031F070F0823051F0833059F507C08DA3ED
+:1037700000E020E0412F61E070E01EC08DA35AC040
+:10378000103F19F0173FE9F404C084E08DA31AA399
+:103790003FC02EA13FA1C90163E070E00E948834C0
+:1037A0008C0F9D1FFC0112A3B9016F5F7F4F7FA398
+:1037B0006EA30CA12BA14AA1CE010E94761A1DA2D4
+:1037C00039C01DA21FA21EA235C0442399F12EA10B
+:1037D0003FA1C90163E070E00E9488347C01FE01D2
+:1037E000E80FF91F12A3B9016F5F7F4F7FA36EA38C
+:1037F0008130910591F082E0E816F104D9F40CA132
+:103800002BA14AA1CE010E94761A8DA1843091F09D
+:1038100081E090E09FA38EA30DC0423059F400E0F8
+:103820002BA14AA1CE010E94761A8DA1843011F0FD
+:10383000FFA2EEA2DF91CF911F910F91FF90EF9029
+:103840000895CF92DF92EF92FF920F931F93CF9341
+:10385000DF93EC01E8A1F9A1309709F009958E01F9
+:1038600008511F4FC8010E948E1CE12CF12CC82E5C
+:10387000D12C0FC060E0C8010E94A21C682FCE01AD
+:103880000E94841B61E0C8010E94B31C8FEFE81AFC
+:10389000F80AEC14FD0470F3DF91CF911F910F91A2
+:1038A000FF90EF90DF90CF900895FC0142837483E6
+:1038B00063831182108208950F931F93CF93DF9338
+:1038C000EC01062F0E94D41C182F298130E0C90179
+:1038D00001966A8170E00E949C34488150E0841710
+:1038E000950729F4812F0E94D71C80E012C0EB813C
+:1038F000FC81E20FF31F00832981822F90E0019663
+:103900006A8170E00E949C348983812F0E94D71CB9
+:1039100081E0DF91CF911F910F910895CF93DF93B5
+:10392000EC010E94D41C29819881291710F0C22F24
+:1039300002C0CA81C20FC91B0E94D71C8C2FDF9105
+:10394000CF910895FC012081862F90E0820F911D78
+:10395000628170E00E949C340380F481E02DE80FC6
+:10396000F91F808108950F931F93CF93DF931F92C8
+:10397000CDB7DEB78C0169830E94D41C482FF801B3
+:1039800080816981262F30E0280F311D6281C901B5
+:1039900070E00E949C348083842F0F90DF91CF9140
+:1039A0001F910F910C94D71C8FB7F89408958FBF77
+:1039B0000895FC01CB012091FB032430B1F4218157
+:1039C0002F702093E90040E050E064E070E00E9436
+:1039D000A61481110BC09091E80095FD07C090914D
+:1039E000E8009E779093E800089582E00895209182
+:1039F000FB032430A9F4FC0181818F708093E900DE
+:103A00003091F3002091F200932F80E0822B892BDC
+:103A100049F08091E8008E778093E8000C9463165B
+:103A200082E0089580E008952091FB03243051F452
+:103A3000FC0121812F702093E9002091E80020FDF6
+:103A40000C94F71C0895FC01CB012091FB0324305A
+:103A500011F080E0089526812F702093E9002091D5
+:103A6000E80022FFF6CF2091E80025FFF2CF40E0EA
+:103A700050E064E070E00E94F5148091E80085FD5C
+:103A800005C08091E8008B778093E80081E008957D
+:103A900090939502809394020895E0919402F0919E
+:103AA0009502309721F00190F081E02D099480E09B
+:103AB0000895E0919402F0919502309721F00280F0
+:103AC000F381E02D09940895E0919402F09195021C
+:103AD000309721F00480F581E02D0994089520911C
+:103AE0009602309197028217930771F09093970294
+:103AF00080939602E0919402F0919502309721F024
+:103B00000680F781E02D0994089520919802309164
+:103B100099028217930771F090939902809398020B
+:103B2000E0919402F0919502309721F00084F185A4
+:103B3000E02D0994089508950C949B1D0E94E62998
+:103B40000E94F3060E94BA2A0C9465300C942C064D
+:103B50005F926F927F928F929F92AF92BF92CF921D
+:103B6000DF92EF92FF920F931F93CF93DF93CDB726
+:103B7000DEB72A970FB6F894DEBF0FBECDBF0E9406
+:103B8000E9079AE9C92E92E0D92E00E010E0AA24B4
+:103B9000A394B12C502E802F0E9439093C01F601CC
+:103BA000E190F1906F01E826F926E114F10431F477
+:103BB0000F5F1F4F0530110569F73AC08091F10280
+:103BC00081FD0E94420920E030E04501022E02C042
+:103BD000880C991C0A94E2F7C4018E219F21892B3D
+:103BE00009F12E835F826820792081E0672809F43B
+:103BF00080E088870E94EF298160782F9A878987E3
+:103C00004E815F8168858A850E94611EF801EE0FF2
+:103C1000FF1FE656FD4F808191818825992591836C
+:103C2000808316C02F5F3F4F2C30310571F6C0CF17
+:103C30008FEF89838A831B820E94EF298160782F0E
+:103C40009D838C8349815A816B818D810E94611E85
+:103C50000E94A72D1091A4020E944D1D1817D9F0A3
+:103C60000E944D1D8093A4022A960FB6F894DEBFE1
+:103C70000FBECDBFDF91CF911F910F91FF90EF90BD
+:103C8000DF90CF90BF90AF909F908F907F906F907C
+:103C90005F900C94A61D2A960FB6F894DEBF0FBE57
+:103CA000CDBFDF91CF911F910F91FF90EF90DF90EB
+:103CB000CF90BF90AF909F908F907F906F905F90CC
+:103CC0000895CF93DF93CDB7DEB72B970FB6F89457
+:103CD000DEBF0FBECDBF4F83588769877A878B873A
+:103CE000DE01119686E0FD0111928A95E9F785E0E3
+:103CF000FE01379601900D928A95E1F749815A812C
+:103D00006B817C818D819E810E944A262B960FB605
+:103D1000F894DEBF0FBECDBFDF91CF910895089517
+:103D2000CF93C82F882309F4C1C0823859F40E9468
+:103D30004D1D81FDBBC089E30E94B1280E943D2931
+:103D400089E30CC0833879F40E944D1D80FDAEC01C
+:103D500083E50E94B1280E943D2983E50E94D32873
+:103D6000CF910C943D29843859F40E944D1D82FD59
+:103D70009DC087E40E94B1280E943D2987E4EECFD0
+:103D80008450813A48F48C2F0E94C72F81118EC035
+:103D90008C2F0E94B128E4CF8C2F805E883050F4A5
+:103DA000C77081E090E001C0880FCA95EAF70E94D1
+:103DB000F428D6CF8C2F855A833078F4C53A29F071
+:103DC000C63A31F482E890E005C081E890E002C094
+:103DD00083E890E0CF910C946F1D8C2F885A83312B
+:103DE00008F064C0C83A39F1C93A41F1CA3A49F118
+:103DF000CB3A51F1CC3A59F1CD3A61F1C03B69F17E
+:103E0000CE3A71F1CF3A79F1C13B81F1C23B89F1F0
+:103E1000C33B91F1C43B99F1C53BA1F1C63BA9F16C
+:103E2000C73BB1F1C83BB9F1C93BC1F1CA3BC9F5C8
+:103E30008AE292E038C082EE90E035C089EE90E0F0
+:103E400032C08AEE90E02FC085EB90E02CC086EB6C
+:103E500090E029C087EB90E026C08CEC90E023C076
+:103E60008DEC90E020C083E891E01DC08AE891E0ED
+:103E70001AC082E991E017C084E991E014C081E2A0
+:103E800092E011C083E292E00EC084E292E00BC0A7
+:103E900085E292E008C086E292E005C087E292E007
+:103EA00002C080E090E0CF910C94851DCF910895E1
+:103EB000882309F44DC0823859F40E944D1D81FFBA
+:103EC00047C089E30E94B1280E943D2989E30CC0C4
+:103ED000833871F40E944D1D80FF3AC083E50E9433
+:103EE000B1280E943D2983E50E94D3280C943D29E6
+:103EF000843859F40E944D1D82FF2AC087E40E9435
+:103F0000B1280E943D2987E4EFCF982F9450913A31
+:103F100008F4EACF982F905E983058F4282F277035
+:103F200081E090E001C0880F2A95EAF70E94FA2804
+:103F3000DDCF982F955A933020F480E090E00C94D8
+:103F40006F1D885A833120F480E090E00C94851D29
+:103F50000895882321F00E94F4280C943D290895A7
+:103F6000882321F00E94FA280C943D290895BF92DD
+:103F7000CF92DF92EF92FF920F931F93CF93DF9335
+:103F8000CDB7DEB727970FB6F894DEBF0FBECDBF13
+:103F90008C0185E0F801DE01119601900D928A9561
+:103FA000E1F7F801D080E180F280558152955F7091
+:103FB00083819481892B41F0FFEFEF1208C081E0EB
+:103FC00090E0DF1631F003C081E090E002C080E0B5
+:103FD00090E080FD7CC3C8015E830E948F1ED98261
+:103FE000EA8289819A810E946E28B92E8F830E946D
+:103FF0006D280E9495275E816F81FF2021F00E942D
+:1040000011296F815E812B2D22952F7030E0253094
+:10401000310509F4E6C06CF4243031050CF0A2C07F
+:104020004B2D407F8B2D8F70223031050CF045C019
+:1040300017C02C3031054CF42A3031050CF0E7C1A3
+:104040002830310509F043C3E5C02D30310509F4AE
+:10405000BAC20CF4A2C22F30310509F038C323C311
+:10406000182F411101C002C01295107FFF2059F096
+:10407000112309F46BC2812F6F830E9404290E94CF
+:104080003D296F8163C2862F0E94581F112309F4B6
+:104090001EC3812F0E940A2927960FB6F894DEBF0F
+:1040A0000FBECDBFDF91CF911F910F91FF90EF9089
+:1040B000DF90CF90BF900C943D29403211F0829553
+:1040C000807F662319F0613071F523C0FF20B1F0C5
+:1040D000511101C032C0513081F527960FB6F894C6
+:1040E000DEBF0FBECDBFDF91CF911F910F91FF902B
+:1040F000EF90DF90CF90BF900C942429511101C014
+:1041000003C0513009F4E3C28E830E9427298E81B7
+:104110009AC1FF2021F0563008F0D9C20EC05530A8
+:1041200008F0D5C290C1FF20C9F0552331F0F80145
+:10413000958190FF0BC29F70958327960FB6F894D8
+:10414000DEBF0FBECDBFDF91CF911F910F91FF90CA
+:10415000EF90DF90CF90BF900C94A91F552309F4E6
+:1041600072C109C22B2D26952695237030E02115AA
+:10417000310529F02130310509F0A9C219C0FF200D
+:1041800021F0862F9B2D937002C080E090E027964F
+:104190000FB6F894DEBF0FBECDBFDF91CF911F9158
+:1041A0000F91FF90EF90DF90CF90BF900C946F1D18
+:1041B000FF2021F0862F9B2D937002C080E090E0BD
+:1041C00027960FB6F894DEBF0FBECDBFDF91CF911B
+:1041D0001F910F91FF90EF90DF90CF90BF900C94C4
+:1041E000851D862FFF2019F00E94AD2C02C00E9471
+:1041F000152D27960FB6F894DEBF0FBECDBFDF9109
+:10420000CF911F910F91FF90EF90DF90CF90BF90D3
+:104210000C949C2D8B2D837009F079C0F11057C23E
+:10422000262F229526952770220F220F862F8F701A
+:10423000C82ED12CE12CF12C022E04C0CC0CDD1C9C
+:10424000EE1CFF1C0A94D2F764FF10C06FE070E010
+:1042500080E090E004C0660F771F881F991F2A95A1
+:10426000D2F7609570958095909503C060E070E0FE
+:10427000CB012B2D269526952370422F50E04230FE
+:104280005105D9F04330510569F16C297D298E29FA
+:104290009F294130510551F127960FB6F894DEBFA2
+:1042A0000FBECDBFDF91CF911F910F91FF90EF9087
+:1042B000DF90CF90BF900C94AA276C297D298E297E
+:1042C0009F2927960FB6F894DEBF0FBECDBFDF91B2
+:1042D000CF911F910F91FF90EF90DF90CF90BF9003
+:1042E0000C94BC270E94AA27C701B60127960FB6D7
+:1042F000F894DEBF0FBECDBFDF91CF911F910F911C
+:10430000FF90EF90DF90CF90BF900C949827FF2004
+:1043100019F08B2D817001C08695882309F4D7C1CF
+:10432000262F229526952770220F220F862F8F7019
+:10433000C82ED12CE12CF12C022E04C0CC0CDD1C9B
+:10434000EE1CFF1C0A94D2F764FF10C06FE070E00F
+:1043500080E090E004C0660F771F881F991F2A95A0
+:10436000D2F7609570958095909503C060E070E0FD
+:10437000CB012B2D269526952370422F50E04230FD
+:104380005105D9F04330510569F16C297D298E29F9
+:104390009F294130510551F127960FB6F894DEBFA1
+:1043A0000FBECDBFDF91CF911F910F91FF90EF9086
+:1043B000DF90CF90BF900C9449286C297D298E29DD
+:1043C0009F2927960FB6F894DEBF0FBECDBFDF91B1
+:1043D000CF911F910F91FF90EF90DF90CF90BF9002
+:1043E0000C945B280E944928C701B60127960FB696
+:1043F000F894DEBF0FBECDBFDF91CF911F910F911B
+:10440000FF90EF90DF90CF90BF900C943728603FE3
+:1044100059F120F4603E08F494C008C0623F09F4EA
+:1044200067C0F0F1633F09F08CC065C0162F1F70A4
+:104430008B2D8F71FF2021F00E94E227812F7DCEEE
+:104440000E94FD27812F27960FB6F894DEBF0FBE7E
+:10445000CDBFDF91CF911F910F91FF90EF90DF9033
+:10446000CF90BF900C94B01FFF20B1F0553008F0F2
+:104470002EC18B2D8F7127960FB6F894DEBF0FBE1D
+:10448000CDBFDF91CF911F910F91FF90EF90DF9003
+:10449000CF90BF900C941C28563008F018C1E9CF7B
+:1044A000FF2099F08B2D8F7127960FB6F894DEBF01
+:1044B0000FBECDBFDF91CF911F910F91FF90EF9075
+:1044C000DF90CF90BF900C94E2278B2D8F712796B1
+:1044D0000FB6F894DEBF0FBECDBFDF91CF911F9115
+:1044E0000F91FF90EF90DF90CF90BF900C94FD273D
+:1044F000F110EBCFD7CFFF2099F08B2D8F7127963E
+:104500000FB6F894DEBF0FBECDBFDF91CF911F91E4
+:104510000F91FF90EF90DF90CF90BF900C94D32736
+:1045200027960FB6F894DEBF0FBECDBFDF91CF91B7
+:104530001F910F91FF90EF90DF90CF90BF900C9460
+:10454000CE27FF20A9F0552309F4ACCF862F27965C
+:104550000FB6F894DEBF0FBECDBFDF91CF911F9194
+:104560000F91FF90EF90DF90CF90BF900C94901E32
+:10457000552309F4AACF862F27960FB6F894DEBFED
+:104580000FBECDBFDF91CF911F910F91FF90EF90A4
+:10459000DF90CF90BF900C94581F4B2D4F70C801E7
+:1045A0000E94560327960FB6F894DEBF0FBECDBF0C
+:1045B000DF91CF911F910F91FF90EF90DF90CF90FF
+:1045C000BF900C940027F11082C09B2D9F70492F43
+:1045D00050E04230510599F144F44115510569F01C
+:1045E0004130510509F073C019C043305105C1F184
+:1045F0004430510509F06BC044C027960FB6F894BB
+:10460000DEBF0FBECDBFDF91CF911F910F91FF9005
+:10461000EF90DF90CF90BF900C94763027960FB636
+:10462000F894DEBF0FBECDBFDF91CF911F910F91E8
+:10463000FF90EF90DF90CF90BF900C948D30279635
+:104640000FB6F894DEBF0FBECDBFDF91CF911F91A3
+:104650000F91FF90EF90DF90CF90BF900C94A93016
+:1046600027960FB6F894DEBF0FBECDBFDF91CF9176
+:104670001F910F91FF90EF90DF90CF90BF900C941F
+:10468000BC30862F27960FB6F894DEBF0FBECDBF85
+:10469000DF91CF911F910F91FF90EF90DF90CF901E
+:1046A000BF900C94E0304B2D4F70C80127960FB689
+:1046B000F894DEBF0FBECDBFDF91CF911F910F9158
+:1046C000FF90EF90DF90CF90BF900C944309279616
+:1046D0000FB6F894DEBF0FBECDBFDF91CF911F9113
+:1046E0000F91FF90EF90DF90CF90BF9008950E94C0
+:1046F00011290E9421290E94E6280E943D290E943A
+:10470000482E0E949C2D80E090E00E946F1D80E06A
+:1047100090E00C94851D0E9401290C9477230E943F
+:104720006E28292F22952F7030E02C3031054CF463
+:104730002A3031056CF4225031092230310590F4D1
+:1047400007C02C30310551F02F30310559F406C027
+:10475000803E10F0803F31F481E0089593FB88277C
+:1047600080F9089580E00895CF93DF9300D000D0C2
+:104770001F92CDB7DEB70F900F900F900F900F9054
+:10478000DF91CF910895CF93DF9300D000D000D078
+:10479000CDB7DEB726960FB6F894DEBF0FBECDBFFD
+:1047A000DF91CF9108951F93CF93DF93C091DB02E8
+:1047B00016E012C0D0E01C9FF0011D9FF00D1124E7
+:1047C000E555FD4F408151816281738184819581DE
+:1047D0000E94C3232196C7708091DC02C813EACFE0
+:1047E000DF91CF911F9108954091A5025091A602AB
+:1047F0006091A7027091A8028091A9029091AA02EB
+:104800000C94C3230F931F93CF93DF938091AA023D
+:1048100082958F7009F069C08091A702882309F4FE
+:1048200064C0A091DB02D091DC02B091A502C091DE
+:10483000A6028091A8029091A90221E030E0BF3F3A
+:1048400011F020E030E0122FBC016095709506E079
+:104850004AC0009721F0CF3F29F4212F05C021E065
+:1048600030E002C020E030E020FD3BC04A2F50E0A5
+:10487000049FF001059FF00D1124E555FD4F2181A6
+:10488000C2132FC02081B2132CC02281211129C054
+:10489000238134812817390718F0281B390B02C0EF
+:1048A000260F371F283C3105E0F48091AA028F7053
+:1048B00080618093AA0286E0849FF001859FF00DBD
+:1048C0001124E055FD4F80818F708061808385EADF
+:1048D00092E00E94B71FDF91CF911F910F910C942E
+:1048E000D323AF5FA770AD13B4CFDF91CF911F91EA
+:1048F0000F910895EF92FF920F931F93CF93DF9341
+:10490000CDB7DEB762970FB6F894DEBF0FBECDBF4E
+:104910008C0185E0F801DE011D9601900D928A95CB
+:10492000E1F7D8014C9111965C91119712966C9118
+:1049300012971396ED90FC9014977091A502E09158
+:10494000A6028091A8029091A902009739F0EF3F4A
+:1049500041F421E030E07F3F31F003C021E030E05E
+:1049600002C020E030E020FD5CC12091A70222239C
+:1049700009F4F1C0E816F90628F09701281B390B55
+:10498000C90104C0809590958E0D9F1D883C9105AE
+:1049900008F098C08091AA02982F907F09F064C017
+:1049A000E51314C0741312C0611110C08F708061C0
+:1049B0008093AA020E94F42385EA92E00E94B71F26
+:1049C0008091AA02D80115968C9343C1EF2839F043
+:1049D0005F3F41F481E090E04F3F31F003C081E060
+:1049E00090E002C080E090E080FD03C081E0862777
+:1049F00002C080E090E080FF2EC08091DB02209119
+:104A0000DC0236E013C090E0389FF001399FF00DD2
+:104A10001124E555FD4F7181571306C0708147136E
+:104A200003C07281671317C0019687708213EBCFA2
+:104A300012C19F7059F0882309F40BC107C09F7001
+:104A400029F0F8019581907F09F403C1805E8830D8
+:104A500008F4FFC0D2C0662309F4FBC08091AA020B
+:104A600081608093AA02F5C0E51308C0741306C0E4
+:104A7000611104C0D80115968C939DC04D875E8747
+:104A80008D859E856A8B0E948F236A89882309F40D
+:104A9000B4C0662309F4B1C02091AA02822F829586
+:104AA0008F7090E002970CF4C6C08091A50290919F
+:104AB000A60298878F831986FB86EA862C87CE010B
+:104AC000079646C08091AA02982F907F59F47E2DB8
+:104AD000F98AE88A89890E94B42385EA92E00E94D3
+:104AE000B71F95C0E51311C074130FC061110DC03D
+:104AF000F8018583C8010E94B71FE5EAF2E086E06D
+:104B0000DF011D928A95E9F7A2C04D875E878D85EA
+:104B10009E856A8B0E948F236A89882309F46DC061
+:104B2000662309F46AC02091AA02822F82958F70B1
+:104B300090E002970CF47FC08091A5029091A602AC
+:104B40009A8389831B82FD82EC822E83CE0101969B
+:104B50000E94B71F70C0E816F90628F09701281BBD
+:104B6000390BC90104C0809590958E0D9F1D883C1E
+:104B7000910508F046C0662309F43FC0E51330C034
+:104B800074132EC02091AA0220FD21C0322F32952D
+:104B90003F70832F90E00097D1F0D80115962C93A9
+:104BA00015970F9741F0832F8F5F8295807F2F702D
+:104BB000282B15962C93C8010E94B71F86E0F80198
+:104BC000A5EAB2E001900D928A95E1F73EC086E039
+:104BD000F801A5EAB2E001900D928A95E1F737C09D
+:104BE0004D875E878D859E850E948F23811123C00E
+:104BF0008091AA0281608093AA02C8010E94B71F17
+:104C000026C07E2DF98AE88A89890E94B423E5EAC4
+:104C1000F2E086E0DF011D928A95E9F70E94F42315
+:104C200018C0662351F34D875E878D859E850E944F
+:104C30008F23882311F386E0F801A5EAB2E0019002
+:104C40000D928A95E1F70E9402240E94F42381E0EC
+:104C500014C080E012C04D875E878D859E850E94BE
+:104C60006E28292F22952F7030E0223031050CF468
+:104C7000E0CE243031050CF6E2CE62960FB6F89401
+:104C8000DEBF0FBECDBFDF91CF911F910F91FF907F
+:104C9000EF9008951F93CF93DF93CDB7DEB72C9796
+:104CA0000FB6F894DEBF0FBECDBF4F83588769871C
+:104CB0007A878B879C87CE0107960E947A24882367
+:104CC000D9F02F8138858A859B85892B39F03F3F24
+:104CD00019F080E090E004C02F3FD9F781E090E028
+:104CE000892B09F06DC04F81588569857A858B8540
+:104CF0009C850E94C32364C086E0FE013796DE01D6
+:104D0000119601900D928A95E1F7FF81E8854A8519
+:104D10005B854115510539F0EF3F41F481E090E0AA
+:104D2000FF3F31F003C081E090E002C080E090E0FE
+:104D300080FD46C02091DC0230E0C90101968770F9
+:104D400099276091DB0270E08617970709F440C04D
+:104D5000F983EA835D834C8396E0929FD001939F11
+:104D6000B00D1124A555BD4FFE01319601900D9255
+:104D70009A95E1F78093DC020E94D32321C0189F0B
+:104D8000C001112485559D4F0E947A24882371F11A
+:104D9000E091DB021E9FF0011124E555FD4F40819B
+:104DA000518162817381848195810E94C3238091A6
+:104DB000DB0290E00196877099278093DB0201C0A7
+:104DC00016E08091DB029091DC028913D8CF0EC0EF
+:104DD0000E948B231092DC021092DB02E5EAF2E0E3
+:104DE00086E0DF011D928A95E9F7EACF2C960FB68F
+:104DF000F894DEBF0FBECDBFDF91CF911F91089514
+:104E0000DF92EF92FF920F931F93CF93DF93EC010A
+:104E1000009709F46EC0D12CEE24E394F12C8E019E
+:104E20000F5F1F4FFE018491843748F4843008F0EF
+:104E30004CC0813071F0823009F05BC01EC08537F4
+:104E400009F43FC080F1982F9458903708F051C072
+:104E50003FC02296F8018491982F905E983050F4CC
+:104E60008770FE2D01C0FF0F8A95EAF78F2F0E94F1
+:104E7000142913C00E94901E2FC02296F80184911D
+:104E8000982F905E983060F48770FE2D01C0FF0F60
+:104E90008A95EAF78F2F0E941A290E943D291CC08B
+:104EA0000E94581F19C02296F801049107C08FE98B
+:104EB0009FE00197F1F700C0000001500111F7CF0A
+:104EC0000BC02296F801D49007C00E94901E03C028
+:104ED0008F770E94581FE8018D2D07C08150EFE9A0
+:104EE000FFE03197F1F700C00000882309F497CF65
+:104EF000F5CFDF91CF911F910F91FF90EF90DF9051
+:104F000008956093E1027093E2028093E30290932C
+:104F1000E4020C9477236093DD027093DE028093A9
+:104F2000DF029093E0020C94772308950C9481277C
+:104F30000F931F930091E1021091E2022091E3028E
+:104F40003091E402602B712B822B932B1F910F91D8
+:104F50000C9481270F931F930091E1021091E202BC
+:104F60002091E3023091E402602371238223932392
+:104F70001F910F910C9481270F931F930091E102D1
+:104F80001091E2022091E3023091E4026027712740
+:104F9000822793271F910F910C94812760E070E086
+:104FA000CB010C948B2741E050E060E070E004C03E
+:104FB000440F551F661F771F8A95D2F7CB01BA01A0
+:104FC0000C948B2741E050E060E070E004C0440F97
+:104FD000551F661F771F8A95D2F78091DD02909149
+:104FE000DE02A091DF02B091E002482B592B6A2B20
+:104FF0007B2BCB01BA010C948B2741E050E060E0A1
+:1050000070E004C0440F551F661F771F8A95D2F7C2
+:1050100040955095609570958091DD029091DE02EB
+:10502000A091DF02B091E002482359236A237B2339
+:10503000CB01BA010C948B2741E050E060E070E0B6
+:1050400004C0440F551F661F771F8A95D2F78091C1
+:10505000DD029091DE02A091DF02B091E0024827CC
+:1050600059276A277B27CB01BA010C948B270F9312
+:105070001F930091DD021091DE022091DF0230913A
+:10508000E002602B712B822B932B1F910F910C94BC
+:105090008B270F931F930091DD021091DE02209168
+:1050A000DF023091E00260237123822393231F915A
+:1050B0000F910C948B270F931F930091DD02109199
+:1050C000DE022091DF023091E00260277127822703
+:1050D00093271F910F910C948B270895CF92DF9205
+:1050E000EF92FF920F931F93CF93DF93EC01C09049
+:1050F000E102D090E202E090E302F090E4028091BD
+:10510000DD029091DE02A091DF02B091E002C82A98
+:10511000D92AEA2AFB2A0FE110E0B701A601002EE6
+:1051200004C076956795579547950A94D2F740FF46
+:1051300008C0BE01802F0E94B3048130910509F0A0
+:1051400007C00150110948F7BE0180E00E94B30476
+:10515000DF91CF911F910F91FF90EF90DF90CF9053
+:10516000089540918B0150918C0120E030E09FEF39
+:10517000FA01E20FF31F62816817A1F09F3F19F453
+:10518000611101C0922F2F5F3F4F2630310581F70B
+:1051900007C0FA01E90FF11D97FDFA958283089582
+:1051A0009F3FB9F7089540918B0150918C0120E009
+:1051B00030E0FA01E20FF31F9281981301C01282CE
+:1051C0002F5F3F4F26303105A1F7089581E090E031
+:1051D000E0918B01F0918C01E80FF91F108201968C
+:1051E00088309105A9F708959091E502982B909346
+:1051F000E502089580959091E50298239093E50249
+:1052000008951092E50208959091E602982B9093EC
+:10521000E602089580959091E60298239093E60225
+:1052200008951092E60208959091E702982B9093CA
+:10523000E702089580959091E70298239093E70202
+:1052400008951092E70208958093E802089510925D
+:10525000E802089540918B0150918C0120E030E0EC
+:1052600080E0FA01E20FF31F918191118F5F2F5FB0
+:105270003F4F27303105A9F70895E0918B01F09158
+:105280008C018091E5028083E0918B01F0918C018B
+:1052900080819091E602892B8083E0918B01F091CF
+:1052A0008C0180819091E702892B80839091E802A4
+:1052B000992361F0E0918B01F0918C018081892B21
+:1052C00080830E942A2981110E94272980918B01C5
+:1052D00090918C010C94591D8091FB03843039F11D
+:1052E0001092F20220E488E190E00FB6F894A895BD
+:1052F000809360000FBE2093600080E00E949B03BB
+:1053000080E00E942C0683B7817F846083BF83B7CF
+:10531000816083BF7894889583B78E7F83BF88E14F
+:105320000FB6F89480936000109260000FBE08954D
+:1053300008950895CF9380E00E949B030E949829CE
+:105340000E94E9070E949929C0E08C2F0E94390928
+:10535000892B29F4CF5FC530C1F780E001C081E01F
+:10536000CF9108950E948B2380E00E949B030E94AE
+:1053700065300E944D1D0C942C061F920F920FB6A3
+:105380000F9211248F939F93AF93BF938091F2025A
+:10539000811113C08091F3029091F402A091F50263
+:1053A000B091F6024196A11DB11D8093F302909336
+:1053B000F402A093F502B093F602BF91AF919F91D2
+:1053C0008F910F900FBE0F901F90189582E084BDB3
+:1053D00093E095BD9AEF97BD80936E0008958FB7C7
+:1053E000F8944091F3025091F4026091F5027091AB
+:1053F000F6028FBFCA010895CF92DF92EF92FF921B
+:105400000F931F932FB7F8944091F3025091F40239
+:105410006091F5027091F6022FBF6A017B01EE24C4
+:10542000FF248C0120E030E0C016D106E206F3062E
+:1054300020F09A01281B390B05C09C01209530955E
+:10544000240F351FC9011F910F91FF90EF90DF903E
+:10545000CF9008951F920F920FB60F9211248F9341
+:105460009F93AF93BF938091F3029091F402A09128
+:10547000F502B091F6020196A11DB11D8093F302D1
+:105480009093F402A093F502B093F602BF91AF910E
+:105490009F918F910F900FBE0F901F9018950E94B3
+:1054A0009516F8942FEF87EA91E6215080409040BE
+:1054B000E1F700C0000087E090EBDC018093050479
+:1054C00090930604A0930704B09308042CE088E1AD
+:1054D00090E00FB6F894A895809360000FBE2093DB
+:1054E0006000FFCFCF92DF92EF92FF920F931F9356
+:1054F000CF93DF93C82ED12C01E010E08D2D0E94B8
+:1055000039097C01C0E0D0E098010C2E02C0220FC6
+:10551000331F0A94E2F72E213F21232B29F42196F1
+:10552000CC30D10589F708C06C2F7D2D80E00E941A
+:105530008E04C812F4CF06C0D39485E0D812DECF13
+:1055400080E001C081E0DF91CF911F910F91FF902A
+:10555000EF90DF90CF900895CF93C82F8CE20E94F8
+:10556000722A882321F08C2FCF910C94722A80E02C
+:10557000CF910895CF930E94FD2B811102C00E940C
+:10558000DE2BC5E608C00E94E9078FE39CE901977E
+:10559000F1F700C00000C150B1F789E20E94AC2AC7
+:1055A00081110AC18AE20E94AC2A81110E94DE2B7D
+:1055B00085E00E94AC2A81110E944F2A0E94082C8B
+:1055C0008093F10287E00E94AC2A882399F18BE155
+:1055D0000E94AC2A882351F09091F10291FB882718
+:1055E00080F921E0822780FB91F922C08EE00E94A1
+:1055F000AC2A882351F09091F10292FB882780F920
+:1056000021E0822780FB92F913C080E10E94AC2A3E
+:105610009091F102882341F093FB882780F921E0E3
+:10562000822780FB93F904C0892F809580FB90F935
+:105630009093F1028091F1020E940C2C0E941A2C8E
+:105640008093020380EE0E94AC2A882341F080916F
+:105650000203982F909590FB80F98093020389E3D1
+:105660000E94AC2A882359F09091020391FB88276D
+:1056700080F921E0822780FB91F99093020382EE6A
+:105680000E94AC2A882359F09091020392FB88274C
+:1056900080F921E0822780FB92F99093020386EE45
+:1056A0000E94AC2A882359F09091020393FB88272B
+:1056B00080F921E0822780FB93F99093020383EE27
+:1056C0000E94AC2A882359F09091020394FB88270A
+:1056D00080F921E0822780FB94F99093020385E30F
+:1056E0000E94AC2A882359F09091020395FB8827E9
+:1056F00080F921E0822780FB95F99093020381E3F2
+:105700000E94AC2A882359F09091020396FB8827C7
+:1057100080F921E0822780FB96F99093020381E1D2
+:105720000E94AC2A882359F09091020397FB8827A6
+:1057300080F921E0822780FB97F990930203809102
+:1057400002030E941E2C87E20E94AC2AC82F8EE121
+:105750000E94AC2A8111C2608FE10E94AC2A8111A3
+:10576000C46080E20E94AC2A8111C86081E20E947C
+:10577000AC2A8111C06182E20E94AC2A8111C06210
+:1057800083E20E94AC2A8111C06484E20E94AC2AA8
+:10579000882311F0C06802C0CC2329F08C2F0E940E
+:1057A000152C6C2F03C00E94112C682F70E080E034
+:1057B00090E0CF910C949627CF9108956DEE7EEFF7
+:1057C00080E090E00E94CC3460E082E090E00E94B3
+:1057D000BE3460E083E090E00E94BE3460E084E08C
+:1057E00090E00E94BE3460E085E090E00E94BE340C
+:1057F00060E086E090E00C94BE3480E090E00E948F
+:10580000B83421E08D3E9E4F09F020E0822F0895AC
+:1058100082E090E00C94B034682F82E090E00C9429
+:10582000BE3483E090E00C94B034682F83E090E0C5
+:105830000C94BE3484E090E00C94B034682F84E083
+:1058400090E00C94BE3486E090E00C94B034682F65
+:1058500086E090E00C94BE348091FF0280FF0BC084
+:105860006091900185E0689FB0011124759567955E
+:10587000759567952AC081FF09C06091900185E008
+:10588000689FB0011124759567951FC082FF07C0FE
+:105890006091900185E0689FB001112416C040918D
+:1058A000F9024423C9F060918F01461788F72091CF
+:1058B000900185E0289F90011124429FC001439FE1
+:1058C000900D112470E00E949C346038710540F402
+:1058D0006115710539F002C065E070E0862F08950A
+:1058E0008FE7089581E008958091FF0280FF08C04E
+:1058F00060918E0170E0759567957595679521C0EB
+:1059000081FF06C060918E0170E07595679519C0A2
+:1059100082FF04C060918E0170E010C08091F90296
+:105920008823C1F060918D018617A0F790918E01B8
+:10593000989FC001112470E00E949C34603871056A
+:1059400028F46115710521F0862F08958FE70895D9
+:1059500081E0089561E070E0F4CF803F21F40E947F
+:105960002C2C819504C0813F29F40E942C2C80931B
+:10597000FC020895823F21F40E942C2C819504C0E2
+:10598000833F29F40E942C2C8093FB020895893FC9
+:1059900019F40E94742C05C08A3F31F40E94742CC3
+:1059A00081958093FD0208958B3F21F40E94742C11
+:1059B000819504C08C3F29F40E94742C8093FE02D0
+:1059C0000895843F21F48091FA02816017C0853FD9
+:1059D00021F48091FA02826011C0863F21F4809107
+:1059E000FA0284600BC0873F21F48091FA0288603C
+:1059F00005C0883F31F48091FA0280618093FA02F9
+:105A000008958D3F21F48091FF0281600BC08E3F8D
+:105A100021F48091FF02826005C08F3F29F48091BC
+:105A2000FF0284608093FF020895803F29F48091F3
+:105A3000FC0287FF6EC007C0813F41F48091FC02E9
+:105A400018160CF066C01092FC0263C09091FB0225
+:105A5000823F19F497FF5DC005C0833F31F41916EA
+:105A60000CF057C01092FB0254C0893F31F4809172
+:105A7000FD0218160CF04DC006C08A3F39F4809123
+:105A8000FD0287FF46C01092FD0243C08B3F29F400
+:105A90008091FE0287FF3DC006C08C3F39F48091A3
+:105AA000FE021816B4F51092FE0233C0843F21F4B2
+:105AB0008091FA028E7F05C0853F31F48091FA0211
+:105AC0008D7F8093FA0225C0863F21F48091FA02EF
+:105AD0008B7FF7CF873F21F48091FA02877FF1CF48
+:105AE000883F21F48091FA028F7EEBCF8D3F21F425
+:105AF0008091FF028E7F0BC08E3F21F48091FF02C8
+:105B00008D7F05C08F3F29F48091FF028B7F8093AA
+:105B1000FF028091FB0281110EC08091FC02811175
+:105B20000AC08091FD02811106C08091FE028111A0
+:105B300002C01092F90208958AEF92E00E94641D5B
+:105B40000E94EF299093F8028093F7020895CF9373
+:105B50008091F7029091F8020E94FC294091F9028D
+:105B6000442321F02091910130E006C02091920160
+:105B70005AE0259F900111248217930708F486C0EC
+:105B80008091FB0281110DC09091FC02911109C01E
+:105B90009091FD02911105C09091FE02992309F4A4
+:105BA00075C04F3F19F04F5F4093F902181624F467
+:105BB0000E942C2C8093FB028091FB0287FF05C082
+:105BC0000E942C2C81958093FB028091FC02181678
+:105BD00024F40E942C2C8093FC028091FC0287FF0D
+:105BE00005C00E942C2C81958093FC026091FB02E1
+:105BF000662339F1C091FC02CC2319F1772767FDA8
+:105C00007095872F972F0E94003223E333E343E3FD
+:105C10005FE30E94B4320E94CD316093FB026C2F8F
+:105C2000772767FD7095872F972F0E94003223E317
+:105C300033E343E35FE30E94B4320E94CD316093CB
+:105C4000FC028091FD02181624F40E94742C8093AB
+:105C5000FD028091FD0287FF05C00E94742C819592
+:105C60008093FD028091FE02181624F40E94742C89
+:105C70008093FE028091FE0287FF05C00E94742C73
+:105C800081958093FE02CF910C949C2DCF91089525
+:105C9000EAEFF2E085E0DF011D928A95E9F71092C4
+:105CA000F9021092FF020895833089F130F48130B7
+:105CB00061F0823009F06EC019C0853009F449C026
+:105CC000B8F1863009F066C055C020919201862F48
+:105CD00090E0820F911D8F3F910520F4620F609339
+:105CE000920108958FEF8093920108952091910180
+:105CF000862F90E0820F911D8F3F910520F4620F57
+:105D00006093910108958FEF809391010895209100
+:105D10009001862F90E0820F911D8F3F910520F416
+:105D2000620F6093900108958FEF80939001089522
+:105D300020918F01862F90E0820F911D8F3F91055A
+:105D400020F4620F60938F0108958FEF80938F018D
+:105D5000089520918E01862F90E0820F911D8F3F34
+:105D6000910520F4620F60938E0108958FEF809368
+:105D70008E01089520918D01862F90E0820F911D54
+:105D80008F3F910520F4620F60938D0108958FEF8E
+:105D900080938D010895833021F130F4813059F0E2
+:105DA000823009F049C012C0853089F128F186306F
+:105DB00009F042C037C080919201681720F4861B19
+:105DC000809392010895109292010895809191011B
+:105DD000681720F4861B8093910108951092910119
+:105DE000089580919001681720F4861B809390019C
+:105DF000089510929001089580918F01681720F402
+:105E0000861B80938F01089510928F0108958091D1
+:105E10008E01681720F4861B80938E0108951092DE
+:105E20008E01089580918D01681720F4861B809360
+:105E30008D01089510928D01089541E050E060E0D9
+:105E400070E004C0440F551F661F771F8A95D2F774
+:105E5000CB01BA010E9496270C948B23873200F560
+:105E60008E3108F089C08E3009F469C060F4873043
+:105E700009F44DC018F4863049F531C0883041F13D
+:105E80008B3021F57EC0863109F47BC018F4803157
+:105E9000E9F45FC0893109F474C08B31B9F445C0AD
+:105EA000883309F46EC048F4893209F467C0853339
+:105EB00009F464C0873251F461C0833409F45EC0D0
+:105EC00018F48A3318F056C0883499F080E00895A9
+:105ED0000E94082C0E941A2C0E94232C52C08091F0
+:105EE000F102817F8E7F8093F10281E08093000335
+:105EF00008950E948B232FEF83ED90E32150804083
+:105F00009040E1F700C000000E944F2A3AC09091F3
+:105F1000F102892F8095817080FB90F919F09660CD
+:105F2000986025C0997F977F22C09091F10291FBE4
+:105F3000882780F921E0822780FB91F913C0909196
+:105F4000F10292FB882780F921E0822780FB92F9F9
+:105F500009C09091F10293FB882780F921E0822704
+:105F600080FB93F99093F102882359F0916090930C
+:105F7000F10207C0895303C08D5101C080E00E9427
+:105F80001D2F81E0089580E0089580E00895CF936B
+:105F9000C82F80910003813071F020F0823009F029
+:105FA00089C037C0A0918B01B0918C018C91823255
+:105FB00009F082C007C0A0918B01B0918C018C9137
+:105FC000823249F48C2F0E94C32F81111EC08C2F66
+:105FD0000E942E2F1CC08C2F0E94C52F811115C02E
+:105FE000C43169F030F4CB3081F0C03109F068C0C1
+:105FF00009C0C93221F0C83309F062C006C010924E
+:1060000000035EC082E08093000381E090E0817035
+:106010005AC0C932C9F060F4C431B1F020F4C730BD
+:1060200009F04CC034C0CE51C63008F047C017C08C
+:10603000CE3439F120F4CB3409F040C01CC0C13556
+:10604000C1F0C235D9F513C080910103882319F03E
+:106050001092010333C081E08093000334C0EC2F21
+:10606000F0E0E25EFD4F80818093010327C061E094
+:1060700003C061E007C06AE0809101030E94542ED2
+:106080001DC06AE0809101030E94CB2E17C08EE1F3
+:106090008093920182E3809391018AE08093900142
+:1060A00084E180938F0188E080938E0188E2809361
+:1060B0008D0104C01092000380E005C081E003C0A0
+:1060C00080E090E0A4CFCF9108950E94FD2B811134
+:1060D00002C00E94DE2B0E94232C8093040480FFC8
+:1060E00002C0869501C080E00C949B03809104045B
+:1060F000982F9695292F30E0233031054CF49F5F7F
+:10610000990F8170892B8160809304040E94272C51
+:106110008091040486950C949B0380910404982F2D
+:10612000969591F09158990F8170892B8093040472
+:106130008E7F91E009F490E08091040490FB80F957
+:10614000809304040E94272C8091040486950C946B
+:106150009B0380910404982F909590FB80F9809385
+:1061600004040E94272C8091040480FF02C08695BD
+:1061700001C080E00C949B0330910404232F2695EA
+:106180002F5F2F77822F90E0317004972CF4220F2D
+:10619000232B2093040402C0309304048091040450
+:1061A000282F2E7F91E009F490E090FB80F98093F6
+:1061B00004040E94272C8091040486950C949B0370
+:1061C00020910404922F96959827990F822F817021
+:1061D000892B809304048E7F91E009F490E08091F4
+:1061E000040490FB80F9809304040E94272C809182
+:1061F000040486950C949B035058BB27AA270ED005
+:1062000075C166D130F06BD120F031F49F3F11F4AD
+:106210001EF45BC10EF4E095E7FB51C1E92F77D185
+:1062200080F3BA17620773078407950718F071F4B3
+:106230009EF58FC10EF4E0950B2EBA2FA02D0B0109
+:10624000B90190010C01CA01A0011124FF27591BBB
+:1062500099F0593F50F4503E68F11A16F040A22FC1
+:10626000232F342F4427585FF3CF46953795279532
+:10627000A795F0405395C9F77EF41F16BA0B620B31
+:10628000730B840BBAF09150A1F0FF0FBB1F661F78
+:10629000771F881FC2F70EC0BA0F621F731F841FBB
+:1062A00048F4879577956795B795F7959E3F08F0E1
+:1062B000B3CF9395880F08F09927EE0F97958795A0
+:1062C0000895D9D008F481E008950CD00FC107D10A
+:1062D00040F0FED030F021F45F3F19F0F0C05111D2
+:1062E00039C1F3C014D198F39923C9F35523B1F3FD
+:1062F000951B550BBB27AA2762177307840738F035
+:106300009F5F5F4F220F331F441FAA1FA9F333D093
+:106310000E2E3AF0E0E830D091505040E695001C47
+:10632000CAF729D0FE2F27D0660F771F881FBB1F03
+:10633000261737074807AB07B0E809F0BB0B802DDD
+:10634000BF01FF2793585F4F2AF09E3F510568F029
+:10635000B6C000C15F3FECF3983EDCF386957795BD
+:106360006795B795F7959F5FC9F7880F911D96952B
+:10637000879597F90895E1E0660F771F881FBB1F87
+:10638000621773078407BA0720F0621B730B840B34
+:10639000BA0BEE1F88F7E095089504D06894B11108
+:1063A000D9C00895BCD088F09F5790F0B92F992795
+:1063B000B751A0F0D1F0660F771F881F991F1AF010
+:1063C000BA95C9F712C0B13081F0C3D0B1E00895D9
+:1063D000C0C0672F782F8827B85F39F0B93FCCF35A
+:1063E000869577956795B395D9F73EF49095809506
+:1063F000709561957F4F8F4F9F4F0895E89409C026
+:1064000097FB3EF490958095709561957F4F8F4FE7
+:106410009F4F9923A9F0F92F96E9BB279395F695FD
+:10642000879577956795B795F111F8CFFAF4BB0F7B
+:1064300011F460FF1BC06F5F7F4F8F4F9F4F16C0DF
+:10644000882311F096E911C0772321F09EE8872F69
+:10645000762F05C0662371F096E8862F70E060E025
+:106460002AF09A95660F771F881FDAF7880F96959E
+:10647000879597F90895990F0008550FAA0BE0E842
+:10648000FEEF16161706E807F907C0F012161306F6
+:10649000E407F50798F0621B730B840B950B39F436
+:1064A0000A2661F0232B242B252B21F408950A269C
+:1064B00009F4A140A6958FEF811D811D089597F9DC
+:1064C0009F6780E870E060E008959FEF80EC08959A
+:1064D00000240A94161617061806090608950024C3
+:1064E0000A9412161306140605060895092E03943D
+:1064F000000C11F4882352F0BB0F40F4BF2B11F4B1
+:1065000060FF04C06F5F7F4F8F4F9F4F089557FD0F
+:106510009058440F551F59F05F3F71F04795880F11
+:1065200097FB991F61F09F3F79F0879508951216A8
+:1065300013061406551FF2CF4695F1DF08C0161654
+:1065400017061806991FF1CF869571056105089405
+:106550000895E894BB2766277727CB0197F908951C
+:106560008ADF08F48FEF08950BD0C0CFB1DF28F099
+:10657000B6DF18F0952309F0A2CFA7CF1124EACFF8
+:10658000C6DFA0F3959FD1F3950F50E0551F629F92
+:10659000F001729FBB27F00DB11D639FAA27F00D7C
+:1065A000B11DAA1F649F6627B00DA11D661F829FA3
+:1065B0002227B00DA11D621F739FB00DA11D621F88
+:1065C000839FA00D611D221F749F3327A00D611DA5
+:1065D000231F849F600D211D822F762F6A2F112487
+:1065E0009F5750408AF0E1F088234AF0EE0FFF1FDA
+:1065F000BB1F661F771F881F91505040A9F79E3F11
+:10660000510570F05CCFA6CF5F3FECF3983EDCF312
+:10661000869577956795B795F795E7959F5FC1F74D
+:10662000FE2B880F911D9695879597F90895FA018D
+:10663000EE0FFF1F30962105310599F161157105A7
+:1066400061F48038BFE39B0749F168949038810575
+:1066500061F08038BFEF9B0741F0992342F5FF3F7F
+:10666000E1053105210511F1E8940894E795D90178
+:10667000AA2329F4AB2FBE2FF85FD0F310C0FF5F21
+:1066800070F4A695E0F7F73950F019F0FF3A38F4B6
+:106690009F779F930CD00F9007FC905808953EF081
+:1066A00014CF60E070E080E89FE308954FE79F77A4
+:1066B0005F934F933F932F939ED02F913F914F9194
+:1066C0005F9152DF05C019F40EF0F9CE42CFFDCE36
+:1066D00026DFC8F39638C0F707F80F92E8942BE34B
+:1066E0003AEA48EB5FE74EDF0F920F920F924DB7F9
+:1066F0005EB70F92C0D0ECEAF0E016D04F915F91F8
+:10670000EF91FF91E595EE1FFF1F49F0FE57E068FE
+:106710004427EE0F441FFA95E1F74195550B32D00F
+:106720000F9007FE26C00895DF93CF931F930F931A
+:10673000FF92EF92DF927B018C01689405C0DA2E04
+:10674000EF011EDFFE01E894A59125913591459159
+:106750005591AEF3EF0162DDFE019701A801DA94D5
+:1067600079F7DF90EF90FF900F911F91CF91DF911C
+:1067700008959B01AC0160E070E080E89FE3A5CD47
+:106780009ECEACC0CCDEE8F39923D9F3940F511D13
+:10679000BBF39150504094F059F0882332F0660FCB
+:1067A000771F881F91505040C1F79E3F510544F715
+:1067B000880F911D9695879597F908955F3FACF0E6
+:1067C000983E9CF0BB27869577956795B79508F41A
+:1067D000B1609395C1F7BB0F58F711F460FFE8CF94
+:1067E0006F5F7F4F8F4F9F4FE3CFB4CE0EF076C0D9
+:1067F0006CCE689464CE93DEC8F39923D1F3C6F3CC
+:10680000DF93CF931F930F93FF92C92FDD27882328
+:106810002AF02197660F771F881FDAF720E030E013
+:1068200040E85FEB9FE3883920F0803E30F021960E
+:106830008F77E3DCE4EDF0E003C0DFDCE1E0F1E0E2
+:1068400073DF8B01BE01EC01FB2E6F57710975954B
+:10685000771F880B990BD4DD28E132E741E35FE332
+:106860008FDEAF2D9801AE01FF900F911F91CF9158
+:10687000DF91D4DC3BCEFA01DC01AA0FBB1F9B01E8
+:10688000AC01BF5728F422273327442750781FC074
+:10689000B75188F4AB2F0024469537952795011CF6
+:1068A000A395D2F3002069F0220F331F441FB39544
+:1068B000DAF30DD0A1CC61307105A0E88A07B946A2
+:1068C00030F49B01AC0166277727882790783096B3
+:1068D00021F0208331834283538308959F3F31F019
+:1068E000915020F4879577956795B795880F911DFE
+:1068F0009695879597F90895991B79E004C0991F9B
+:10690000961708F0961B881F7A95C9F78095089509
+:10691000AA1BBB1B51E107C0AA1FBB1FA617B707C5
+:1069200010F0A61BB70B881F991F5A95A9F78095E1
+:106930009095BC01CD01089597FB072E16F40094A5
+:1069400007D077FD09D00E94883407FC05D03EF4BB
+:10695000909581959F4F0895709561957F4F08950B
+:10696000F999FECF92BD81BDF89A992780B5089517
+:10697000A8E1B0E042E050E00C94D334262FF9991E
+:10698000FECF1FBA92BD81BD20BD0FB6F894FA9A12
+:10699000F99A0FBE019608950E94BE34272F0C94D9
+:1069A000BF34DC01CB01FC01F999FECF06C0F2BD7A
+:1069B000E1BDF89A319600B40D9241505040B8F7BD
+:0669C0000895F894FFCFDA
+:1069C60055D0A446000016440000000000004842CE
+:1069D60061978A460000C843000000000000484254
+:1069E60055D024460000C84300000000000048427D
+:1069F60000005C460000C84300000000000048425A
+:106A060061978A4600007A4455D0A4460000C843E0
+:106A1600000000000000484200005C460000C84339
+:106A2600000000000000484255D0244600001644ED
+:106A36000507000C05854000000106400000010026
+:106A4600B91049112511F010BC1001E902280814EB
+:106A56000A321E4200450025002600430061006000
+:106A660000200037006400650066006700440046A9
+:106A7600002400470000000200040005000700098A
+:106A8600000B000C000E001000110013001500177B
+:106A96000018001A001C001D001F002100230024FE
+:106AA600002600280029002B002D002F0030003280
+:106AB6000034003500370039003B006E048704A01F
+:106AC60004B904E10594055E053E053F4D362002F6
+:106AD60003020000010001010101010001010102A0
+:086AE60003040506070809007E
+:00000001FF
diff --git a/keyboard/preonic/preonic_pcb.hex b/keyboard/preonic/preonic_pcb.hex new file mode 100644 index 000000000..5bdc190e1 --- /dev/null +++ b/keyboard/preonic/preonic_pcb.hex @@ -0,0 +1,1702 @@ +:100000000C94D4020C9418030C9418030C94180349
+:100010000C9418030C9418030C9418030C941803F4
+:100020000C9418030C9418030C94E8160C94BA174B
+:100030000C946C290C9418030C9418030C9418035A
+:100040000C9418030C9418030C9418030C941803C4
+:100050000C9418030C94D9290C9418030C941803CD
+:100060000C9418030C9418030C9418030C941803A4
+:100070000C9418030C9418030C9418030C94180394
+:100080000C941C0E0C9418030C9418030C94180375
+:100090000C9418030C9418030C9418030C94180374
+:1000A0000C9418030C9418030C941803076342363D
+:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9
+:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD
+:1000D0000000803F08000000BE922449123EABAAF7
+:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52
+:1000F000AA3E00000000BF000000803F000000009A
+:1001000000084178D3BB4387D1133D190E3CC3BDD2
+:100110004282AD2B3E68EC8276BED98FE1A93E4C7F
+:1001200080EFFFBE01C4FF7F3F00000000003500EC
+:100130001E001F00200021002200230024002500B3
+:10014000260027002A002B0014001A0008001500C2
+:1001500017001C0018000C00120013002A002900D0
+:1001600004001600070009000A000B000D000E0035
+:100170000F0033003400E1001D001B0006001900D1
+:10018000050011001000360037003800280000304C
+:10019000E000E200E30003522C002C000452500067
+:1001A000510052004F0035001E001F0020002100AA
+:1001B0002200230024002500260027002A002B000F
+:1001C00014001A00090013000A000D000F001800A7
+:1001D0001C0033002A002900040015001600170037
+:1001E00007000B00110008000C0012003400E100B1
+:1001F0001D001B000600190005000E00100036004F
+:100200003700380028000030E000E200E30003522D
+:100210002C002C0004525000510052004F003500B9
+:100220001E001F00200021002200230024002500C2
+:10023000260027002A002B00340036003700130068
+:100240001C0009000A00060015000F002A00290002
+:1002500004001200080018000C0007000B00170033
+:10026000110016003800E100330014000D000E00EC
+:100270001B00050010001A0019001D0028000030A6
+:10028000E000E200E30003522C002C000452500076
+:10029000510052004F0035001E001F0020002100B9
+:1002A0002200230024002500260027002A00350212
+:1002B0001E021F0220022102220223022402250222
+:1002C000260227022A0001003A003B003C003D00C4
+:1002D0003E003F002D022E022F02300231020100AB
+:1002E00040004100420043004400450000530153D8
+:1002F0000253005001000100010001000100010053
+:10030000010001000100AB00AA00A900AE00350009
+:100310001E001F00200021002200230024002500D1
+:10032000260027002A0035001E001F0020002100A3
+:100330002200230024002500260027002A000100B7
+:100340003A003B003C003D003E003F002D002E00E7
+:100350002F00300031000100400041004200430006
+:1003600044004500005301530253005001000100B6
+:100370000100010001000100010001000100AB00CB
+:10038000AA00A900AE002A035400680065002000FE
+:100390005000720065006F006E006900630020006D
+:1003A0004B006500790062006F006100720064001C
+:1003B00000002C034F007200740068006F006C0096
+:1003C00069006E0065006100720020004B0065004E
+:1003D000790062006F006100720064007300000029
+:1003E000040309040902D000060100A0FA09040070
+:1003F000000103010100092111010001223F000752
+:1004000005810308000A0904010001030102000933
+:100410002111010001224D000705820308000A098D
+:10042000040200010300000009211101000122362D
+:10043000000705830308000A090403000203000003
+:10044000000921110100012220000705840320007A
+:100450000107050403200001090404000001010054
+:100460000009240100010900010509040500020139
+:1004700003000007240100014100062402010100DD
+:1004800006240202020009240301030102010009FB
+:1004900024030204010101000905060240000500D1
+:1004A0000005250101010905850240000500000540
+:1004B000250101031201100100000008EDFE61603A
+:1004C0000100010200010631FF0974A1010975153F
+:1004D0000025FF9520750881020976150025FF95F6
+:1004E0002075089102C005010980A101850216014D
+:1004F0000026B7001A01002AB70075109501810087
+:10050000C0050C0901A1018503160100269C021AF1
+:1005100001002A9C02751095018100C005010902A5
+:10052000A1010901A10005091901290515002501ED
+:100530009505750181029501750381010501093059
+:1005400009311581257F95027508810609381581C5
+:10055000257F950175088106050C0A38021581254D
+:100560007F950175088106C0C005010906A1010536
+:100570000719E029E7150025019508750181029505
+:100580000175088101050819012905950575019175
+:10059000029501750391010507190029FF15002532
+:1005A000FF950675088100C011241FBECFEFDAE069
+:1005B000DEBFCDBF04B603FE24C080910404909139
+:1005C0000504A0910604B09107048730904BA74022
+:1005D000B04BB9F410920404109205041092060472
+:1005E0001092070414BE84B7877F84BF88E10FB6DA
+:1005F000F89480936000109260000FBEE0E0F8E392
+:10060000099512E0A0E0B1E0EEE1F9E602C0059044
+:100610000D92A832B107D9F714E0A8E2B2E001C008
+:100620001D92A430B107E1F70E94A0130C948D3401
+:100630000C94000061110DC0FC018281882331F00F
+:1006400085EE0E94671E0E94683003C085EE0E94FE
+:100650002F1F80E090E008950E940F0E40E050E0D0
+:1006600069E070E080E091E00C94600F08950E94D2
+:1006700049036E9A769A8CE293E0892B11F00C94E0
+:100680002C03089586E393E0892B11F00C94360334
+:100690000895279A2F988FEF9FEF9093870080936C
+:1006A00086008AE08093800089E1809381000C9429
+:1006B000113081110BC080918000877F8093800072
+:1006C00010928D0010928C002F9808952F988330EF
+:1006D00041F4809180008860809380008FEF9FEFCD
+:1006E00012C09091800098609093800023E030E0E9
+:1006F000281B3109220F331F8FEF9FEF02C0969501
+:1007000087952A95E2F790938D0080938C00089549
+:100710008B3B910568F4883A910530F5853A91054F
+:10072000C0F48430910598F4019709F06FC071C04E
+:10073000803E910508F46AC0883E910540F09C0116
+:10074000205F31092031310508F060C05CC09C0198
+:10075000A1C0853A910509F45FC0863A910509F474
+:100760005EC023E830E496C0883A910509F45AC087
+:10077000893A910509F459C08A3A910509F458C09B
+:100780008B3A910509F457C08C3A910509F456C08B
+:100790008D3A910509F455C0803B910509F454C088
+:1007A0008E3A910509F453C08F3A910509F452C06D
+:1007B000813B910509F451C0823B910509F450C079
+:1007C000833B910509F44FC0843B910509F44EC069
+:1007D000853B910509F44DC0863B910509F44CC059
+:1007E000873B910509F44BC0883B910509F44AC049
+:1007F000893B910509F449C08A3B910509F048C03D
+:100800002AE236E447C09C01306544C020E030E075
+:1008100041C021E030E03EC021E830E43BC022E8A6
+:1008200030E438C022EE34E435C029EE34E432C07E
+:100830002AEE34E42FC025EB34E42CC026EB34E45C
+:1008400029C027EB34E426C02CEC34E423C02DEC83
+:1008500034E420C023E835E41DC02AE835E41AC09A
+:1008600022E935E417C024E935E414C021E236E476
+:1008700011C023E236E40EC024E236E40BC025E2C8
+:1008800036E408C026E236E405C027E236E402C0BA
+:1008900020E034E4C90108959CE0799FF00111241F
+:1008A0009CE3899FE00DF11D1124E60FF11DEE0F71
+:1008B000FF1FE25DFE4F25913491C9010895880F15
+:1008C000991F82559040FC0125913491C9010895EA
+:1008D000880F991F825D9E4FFC0125913491C901BB
+:1008E00008950E944C049C019A9581159F4110F433
+:1008F000C9010895C90190528115904128F4C90198
+:100900009F700E9468040895C90190538115904119
+:1009100020F4C9019927906C0895C901905440971B
+:1009200028F4C9018F709927946D0895203180E4CF
+:10093000380719F480E091ED0895213190E43907EA
+:1009400019F480E090ED0895223140E4340719F461
+:1009500080E092ED0895233180E4380719F480E0B7
+:1009600093ED0895211590E5390799F40E945623D7
+:1009700040E065E088E491E00E94600F2FEF44E3DF
+:100980008CE0215040408040E1F700C000000C9412
+:10099000FE29213090E5390731F48091F002816021
+:1009A0008093F0020895C90190558115904108F097
+:1009B00062C0432F55274F70552741305105F9F438
+:1009C000C90174E0880F991F7A95E1F78827937021
+:1009D000B901E3E0660F771FEA95E1F760767727C4
+:1009E000862B972B9C682370332702C0440F551F1A
+:1009F0002A95E2F74F715527842B952B08954230A5
+:100A0000510529F4922F8827816F906A0895433009
+:100A10005105B9F4C90153E0880F991F5A95E1F7C0
+:100A2000807E97702370332741E050E002C0440F6E
+:100A3000551F2A95E2F74F715527842B952B9C68FB
+:100A400008954430510589F5C90143E0880F991F85
+:100A50004A95E1F7807E97702370332741E050E09C
+:100A600002C0440F551F2A95E2F74F715527842B7A
+:100A7000952B9A680895C90190568115904118F4F4
+:100A8000C901906F0895C90190578115904120F4D4
+:100A9000C9019F7090620895C901905881159041D5
+:100AA00020F4C9019F70906A0895203E3105E0F45A
+:100AB000203C310568F52133310509F475C048F44F
+:100AC0002932310509F46BC02A32310509F07BC0A7
+:100AD00075C02933310501F122383105E9F025339C
+:100AE000310509F070C051C0233E3105B1F140F429
+:100AF000203E3105D1F0223E310509F064C01CC012
+:100B0000263E310579F1273E310509F05CC038C039
+:100B1000C9010E945F0408958091010380FD02C015
+:100B200081FF51C080EE90E04FC08091010380FFB3
+:100B3000F9CF89E390E048C08091010382FF0AC0A9
+:100B40008091010384FF03C080E090E03DC083EE0C
+:100B500090E03AC082EE90E037C08091010382FFBE
+:100B6000EFCFF8CF8091010383FF07C0809101038D
+:100B700084FDEACF87EE90E027C086EE90E024C0A7
+:100B80008091010383FFF2CFF8CF8091010385FFAD
+:100B900003C089E290E018C085E390E015C0809121
+:100BA000010385FDF9CFF5CF8091010386FF03C0D6
+:100BB0008AE290E009C081E390E006C080910103E1
+:100BC00086FDF9CFF5CFC9010E94880308950895E5
+:100BD0005F926F927F928F929F92AF92BF92CF92CD
+:100BE000DF92EF92FF920F931F93CF93DF93CDB7D6
+:100BF000DEB72A970FB6F894DEBF0FBECDBF9E01B9
+:100C00002F5F3F4F4E018BE0880E911C60E070E03B
+:100C100000E010E0E12CF12CC12CD12CA12CB12C46
+:100C20008AE0782E622E532E41E050E0E3E9F1E0B5
+:100C3000A62DB52D872D01900D928A95E1F7F9012A
+:100C4000819191919F01FC01E07FFF27E032F10546
+:100C500059F48F709927FA0102C0EE0FFF1F8A9591
+:100C6000E2F7AE2ABF2A37C0E033F10559F48F709E
+:100C70009927FA0102C0EE0FFF1F8A95E2F7CE2AEC
+:100C8000DF2A29C0E034F10559F48F709927FA0161
+:100C900002C0EE0FFF1F8A95E2F7EE2AFF2A1BC063
+:100CA000E035F10559F48F709927FA0102C0EE0F73
+:100CB000FF1F8A95E2F70E2B1F2B0DC0E036F105C2
+:100CC00051F48F709927FA0102C0EE0FFF1F8A9529
+:100CD000E2F76E2B7F2B2815390509F0A7CF94B1C9
+:100CE0008A2D8095892384B985B18A2985B997B1E0
+:100CF0008C2D8095892387B988B18C2988B99AB1C0
+:100D00008E2D809589238AB98BB18E298BB99DB19F
+:100D1000802F809589238DB98EB1802B8EB990B3A9
+:100D2000862F8095892380BB81B3862B81BB2A9631
+:100D30000FB6F894DEBF0FBECDBFDF91CF911F91EC
+:100D40000F91FF90EF90DF90CF90BF90AF909F906A
+:100D50008F907F906F905F9008955F926F927F92D7
+:100D60008F929F92AF92BF92CF92DF92EF92FF92BB
+:100D70000F931F93CF93DF93CDB7DEB768970FB66E
+:100D8000F894DEBF0FBECDBF85B7806885BF85B73D
+:100D9000806885BF0E94E8059E012F5F3F4F4E018E
+:100DA00089E1880E911C60E070E000E010E0E12C29
+:100DB000F12CC12CD12CA12CB12C98E1792E622ED2
+:100DC000532E41E050E0EDE9F1E0A62DB52D872D41
+:100DD00001900D928A95E1F7F901819191919F011E
+:100DE000FC01E07FFF27E032F10559F48F7099276D
+:100DF000FA0102C0EE0FFF1F8A95E2F7AE2ABF2A62
+:100E000037C0E033F10559F48F709927FA0102C019
+:100E1000EE0FFF1F8A95E2F7CE2ADF2A29C0E034C1
+:100E2000F10559F48F709927FA0102C0EE0FFF1FE8
+:100E30008A95E2F7EE2AFF2A1BC0E035F10559F446
+:100E40008F709927FA0102C0EE0FFF1F8A95E2F713
+:100E50000E2B1F2B0DC0E036F10551F48F70992732
+:100E6000FA0102C0EE0FFF1F8A95E2F76E2B7F2B6F
+:100E70002815390509F0A7CF94B18A2D80958923CB
+:100E800084B985B18A2985B997B18C2D809589233C
+:100E900087B988B18C2988B99AB18E2D809589231C
+:100EA0008AB98BB18E298BB99DB1802F809589230A
+:100EB0008DB98EB1802B8EB990B3862F8095892302
+:100EC00080BB81B3862B81BB10922902109228022D
+:100ED000109233021092320210922B0210922A02C8
+:100EE000109235021092340210922D0210922C02B0
+:100EF000109237021092360210922F0210922E0298
+:100F0000109239021092380210923102109230027F
+:100F100010923B0210923A0287E393E0892BB9F0DA
+:100F200068960FB6F894DEBF0FBECDBFDF91CF91AC
+:100F30001F910F91FF90EF90DF90CF90BF90AF90F7
+:100F40009F908F907F906F905F900C94370368967E
+:100F50000FB6F894DEBF0FBECDBFDF91CF911F91CA
+:100F60000F91FF90EF90DF90CF90BF90AF909F9048
+:100F70008F907F906F905F9008955F926F927F92B5
+:100F80008F929F92AF92BF92CF92DF92EF92FF9299
+:100F90000F931F93CF93DF93CDB7DEB7A2970FB612
+:100FA000F894DEBF0FBECDBF7E0149E1E40EF11C17
+:100FB00022E3C22E22E0D22E5E0153E2A50EB11C26
+:100FC0003AE0532E470101E010E048E1642E55E07D
+:100FD000752EE3E9F1E0D401852D01900D928A95FB
+:100FE000E1F7F701819191917F019C01207F3327E7
+:100FF0002032310589F424B18F709927A80102C0ED
+:10100000440F551F8A95E2F7CA01242B24B995B1E4
+:101010008095892385B94FC02033310589F427B1E4
+:101020008F709927F80102C0EE0FFF1F8A95E2F733
+:10103000CF012E2B27B998B18095892388B93BC061
+:101040002034310589F42AB18F709927A80102C094
+:10105000440F551F8A95E2F7CA01242B2AB99BB188
+:10106000809589238BB927C02035310589F42DB1AE
+:101070008F709927F80102C0EE0FFF1F8A95E2F7E3
+:10108000CF012E2B2DB99EB1809589238EB913C027
+:101090002036310581F420B38F709927A80102C052
+:1010A000440F551F8A95E2F7CA01242B20BB91B348
+:1010B0008095892381BB50EA5A95F1F7BE016F5F95
+:1010C0007F4F80E090E020E030E0EDE9F1E0DE01EC
+:1010D0001196462D01900D924A95E1F7FB01419141
+:1010E0005191BF01FA01E07FFF27E032F10511F4D1
+:1010F000E3B113C0E033F10511F4E6B10EC0E03402
+:10110000F10511F4E9B109C0E035F10511F4ECB1D4
+:1011100004C0E036F105B9F4EFB1F0E04F705527A7
+:1011200002C0F595E7954A95E2F7E0FD08C0A801F1
+:10113000022E02C0440F551F0A94E2F702C040E09D
+:1011400050E0842B952B2F5F3F4F2C30310509F059
+:10115000BCCFF601208131812817390721F0918316
+:101160008083709270010E94E805F2E0CF0ED11CDE
+:10117000EA14FB0409F02DCF809170018823A1F1BE
+:10118000815080937001882339F08FE99FE00197A7
+:10119000F1F700C0000028C0809132029091330224
+:1011A0009093290280932802809134029091350215
+:1011B00090932B0280932A028091360290913702FD
+:1011C00090932D0280932C028091380290913902E5
+:1011D00090932F0280932E0280913A0290913B02CD
+:1011E000909331028093300282E493E0892B11F0D6
+:1011F0000E94420381E0A2960FB6F894DEBF0FBEB4
+:10120000CDBFDF91CF911F910F91FF90EF90DF90B5
+:10121000CF90BF90AF909F908F907F906F905F9096
+:101220000895E82FF0E0EE0FFF1FE85DFD4F80818D
+:10123000918108950895CF92DF92EF92FF920F93DC
+:101240001F93CF93DF93CDB7DEB7CC5BD2400FB601
+:10125000F894DEBF0FBECDBF8C01862F642F88238C
+:1012600079F0F80192812FE7482F992329F083E044
+:1012700093E00E94C41904C083E093E00E94D41953
+:10128000F80180818B3091F59181943009F0A8C2EA
+:101290009281809173019923B1F08F5F80937301E4
+:1012A00096E4E5EBF1E0DE01A958BD4F01900D9207
+:1012B0009A95E1F7E0917101F0917201EE0FFF1F35
+:1012C00027E732E036C096E4E5EBF1E0DE01AF5C03
+:1012D000BD4F01900D929A95E1F7E0917101F09167
+:1012E0007201EE0FFF1F21E332E093C08A3009F054
+:1012F000CBC0F8019181943009F072C29281809143
+:101300007301992309F473C081508093730196E4AB
+:10131000E5EBF1E0DE01A551BE4F01900D929A95EB
+:10132000E1F7E0917101F0917201EE0FFF1F2BEEDA
+:1013300031E02C0F3D1FE20FF31F60817181680FB8
+:10134000711D882777FD8095982F0E94AC3120E091
+:1013500030E040E451E40E94113120E030E040E808
+:1013600050E40E94A9309B01AC0160E070E080E095
+:1013700090E40E94C33221E230ED42E053E40E9447
+:1013800060324CE050E00E94BB0F20E04BE760E091
+:1013900083E093E00E94B41920E04BE761E083E032
+:1013A00093E00E94B41920E04BE762E083E093E011
+:1013B0000E94B41920E04BE763E083E093E00E94D1
+:1013C000B41920E04BE764E083E093E0C454DD4FC0
+:1013D0000FB6F894DEBF0FBECDBFDF91CF911F9146
+:1013E0000F91FF90EF90DF90CF900C94B41996E49A
+:1013F000E5EBF1E0DE01AB55BE4F01900D929A9501
+:10140000E1F7E0917101F0917201EE0FFF1F25EA03
+:1014100031E02C0F3D1FE20FF31F60817181680FD7
+:10142000711D882777FD8095982F0E94AC3120E0B0
+:1014300030E040E451E40E94113120E030E040E827
+:1014400050E40E94A9309B01AC0160E070E080E0B4
+:1014500090E40E94C33221E230ED42E053E40E9466
+:1014600060320E94EB0CC454DD4F0FB6F894DEBF1F
+:101470000FBECDBFDF91CF911F910F91FF90EF90E5
+:10148000DF90CF900C94BE0C893009F0D3C0F801E6
+:101490009181943009F0A4C19281992309F4A0C1EB
+:1014A00080917101909172010196909372018093E5
+:1014B000710120E04BE760E083E093E00E94B41903
+:1014C00020E04BE761E083E093E00E94B41920E064
+:1014D0004BE762E083E093E00E94B41920E04BE721
+:1014E00063E083E093E00E94B41920E04BE764E0FE
+:1014F00083E093E00E94B4190E94BE0C00E010E06B
+:10150000E6E4FE2E80917301E5EBF1E0DE01A15AE5
+:10151000BE4F9F2D01900D929A95E1F7E0917101D8
+:10152000F0917201E00FF11FEE0FFF1F2FE531E088
+:101530002C0F3D1FE20FF31F60817181680F711D39
+:10154000882777FD8095982F0E94AC3120E030E00D
+:1015500040E451E40E94113120E030E040E850E4E2
+:101560000E94A9309B01AC0160E070E080E090E453
+:101570000E94C33221E230ED42E053E40E94603227
+:101580004CE050E00E94BB0F3FEF87EE93E03150FC
+:1015900080409040E1F700C0000080917301E5EBCE
+:1015A000F1E0DE01A75EBE4F9F2D01900D929A954E
+:1015B000E1F7E0917101F0917201E00FF11FEE0F80
+:1015C000FF1F29E131E02C0F3D1FE20FF31F608167
+:1015D0007181680F711D882777FD8095982F0E9473
+:1015E000AC3120E030E040E451E40E94113120E0D1
+:1015F00030E040E850E40E94A9309B01AC0160E07B
+:1016000070E080E090E40E94C33221E230ED42E0DD
+:1016100053E40E9460320E94EB0C8FEF9CE701972D
+:10162000F1F700C000000F5F1F4F0830110509F0EF
+:1016300069CF94C1883009F0D3C0F801918194300A
+:1016400009F0CEC09281992309F4CAC0809171013A
+:10165000909172010197909372018093710120E043
+:101660004BE760E083E093E00E94B41920E04BE791
+:1016700061E083E093E00E94B41920E04BE762E070
+:1016800083E093E00E94B41920E04BE763E083E03D
+:1016900093E00E94B41920E04BE764E083E093E01C
+:1016A0000E94B4190E94BE0C00E010E056E4F52E32
+:1016B00080917301E5EBF1E0DE01AD52BF4F9F2D4C
+:1016C00001900D929A95E1F7E0917101F09172010C
+:1016D000E00FF11FEE0FFF1F23ED30E02C0F3D1F39
+:1016E000E20FF31F60817181680F711D882777FDFC
+:1016F0008095982F0E94AC3120E030E040E451E426
+:101700000E94113120E030E040E850E40E94A9300E
+:101710009B01AC0160E070E080E090E40E94C33285
+:1017200021E230ED42E053E40E9460324CE050E0B0
+:101730000E94BB0F3FEF87EE93E031508040904016
+:10174000E1F700C0000080917301E5EBF1E0DE01FC
+:10175000A357BF4F9F2D01900D929A95E1F7E0910D
+:101760007101F0917201E00FF11FEE0FFF1F2DE8E4
+:1017700030E02C0F3D1FE20FF31F60817181680F75
+:10178000711D882777FD8095982F0E94AC3120E04D
+:1017900030E040E451E40E94113120E030E040E8C4
+:1017A00050E40E94A9309B01AC0160E070E080E051
+:1017B00090E40E94C33221E230ED42E053E40E9403
+:1017C00060320E94EB0C8FEF9CE70197F1F700C0AD
+:1017D00000000F5F1F4F0830110509F069CFBEC030
+:1017E000F801228190917301222309F45DC026E45F
+:1017F000E5EBF1E0DE01A95BBF4F01900D922A9568
+:10180000E1F7E0917101F0917201E80FF11DEE0F27
+:10181000FF1F27E430E02C0F3D1FE20FF31F608114
+:101820007181690F711D882777FD8095982F0E941F
+:10183000AC3120E030E040E451E40E9411316B0112
+:101840007C01F801818165E070E0681B71098827DF
+:1018500077FD8095982F0E94AC319B01AC01C701A8
+:10186000B6010E94A9309B01AC0160E070E080E00D
+:1018700090E40E94C33221E230ED42E053E40E9442
+:1018800060324FE050E0C454DD4F0FB6F894DEBF35
+:101890000FBECDBFDF91CF911F910F91FF90EF90C1
+:1018A000DF90CF900C94BB0F26E4E5EBF1E0DE0176
+:1018B000119601900D922A95E1F7E0917101F09156
+:1018C0007201E80FF11DEE0FFF1F21E030E02C0F39
+:1018D0003D1FE20FF31F60817181690F711D882721
+:1018E00077FD8095982F0E94AC3120E030E040E4F5
+:1018F00051E40E9411316B017C01F801818165E0A6
+:1019000070E0681B7109882777FD8095982F0E94E9
+:10191000AC319B01AC01C701B6010E94A9309B010B
+:10192000AC0160E070E080E090E40E94C33221E20C
+:1019300030ED42E053E40E946032C454DD4F0FB6F4
+:10194000F894DEBF0FBECDBFDF91CF911F910F91F5
+:10195000FF90EF90DF90CF900C94EB0CC454DD4FD0
+:101960000FB6F894DEBF0FBECDBFDF91CF911F91B0
+:101970000F91FF90EF90DF90CF9008951092870223
+:1019800010928602809171008D7F8093710080910A
+:1019900090008F7780939000109248021092470237
+:1019A00010928002109281021092820210928302A1
+:1019B00010927F0210927E02EEE5F2E0AEE4B2E019
+:1019C00011921192119211921D921D9282E0EE37A6
+:1019D000F807B1F708956F927F928F929F92AF921E
+:1019E000BF92CF92DF92EF92FF920F931F93CF930C
+:1019F000DF936B017C010EE712E04CE5A42E42E080
+:101A0000B42EC7E0D0E0A7019601F801929182912F
+:101A1000729162918F010E940D31882349F02197C4
+:101A2000F2E0AF1AB108CF3F8FEFD80761F734C0AB
+:101A3000F8011082118212821382F5011182108244
+:101A4000FE01EE0FFF1FEE0FFF1FE25AFD4FDE01FA
+:101A5000AA0FBB1FA25BBD4FCE011AC001964481E5
+:101A600055816681778140835183628373831482B9
+:101A700015821682178212962D913C91139711961A
+:101A80003C932E9313961C921E92129734961296A4
+:101A90008730910519F7C3CF809186029091870214
+:101AA000019797FD05C0909387028093860204C03A
+:101AB0001092870210928602E0918602F0918702CE
+:101AC0003097C9F4809171008D7F8093710080916F
+:101AD00090008F7780939000109280021092810284
+:101AE000109282021092830210927F0210927E0264
+:101AF0001092470285C03197DF01AA0FBB1FAA0FC2
+:101B0000BB1FA25ABD4FCD90DD90ED90FC90EE0F23
+:101B1000FF1FE25BFD4FC081D18160908002709019
+:101B200081028090820290908302A7019601662D27
+:101B3000772D882D992D0E940D3187FF25C0262DE8
+:101B4000372D482D592DC701B6010E94A83020E03D
+:101B500030E04AEF54E40E9411315B018C012A2DE0
+:101B60003B2D402F512F662D772D882D992D0E94CA
+:101B7000A9303B014C01A7019601772D992D0E94B8
+:101B80000D31181664F72EC0A7019601662D772D2A
+:101B9000882D992D0E945C32181634F5A701960104
+:101BA000662D772D882D992D0E94A83020E030E0F9
+:101BB0004AEF54E40E9411315B018C012A2D3B2D28
+:101BC000402F512F662D772D882D992D0E94A830FA
+:101BD0003B014C01A7019601772D992D0E945C32A3
+:101BE00087FFECCF10924D02C0928002D09281020A
+:101BF000E0928202F0928302D0937F02C0937E0231
+:101C0000DF91CF911F910F91FF90EF90DF90CF90D8
+:101C1000BF90AF909F908F907F906F9008953E9A65
+:101C2000E1E7F0E080818D7F808382E08093900007
+:101C30008AE18093910008951F920F920FB60F9240
+:101C40001124CF92DF92EF92FF922F933F934F9305
+:101C50005F936F937F938F939F93AF93BF93CF9334
+:101C6000DF93EF93FF9380914702882309F479C0B3
+:101C700020E030E0A90160918002709181028091A2
+:101C80008202909183020E945C3218160CF069C0A7
+:101C900020E030E040E251E46091490270914A0254
+:101CA00080914B0290914C020E945C321816BCF459
+:101CB00080918402909185020196609186027091D4
+:101CC00087020E9448349093850280938402109288
+:101CD000490210924A0210924B0210924C02C0919B
+:101CE0008402D0918502CC0FDD1FCC0FDD1FC25ABC
+:101CF000DD4F288139814A815B8160E074E284E7AD
+:101D00009BE40E9411310E94793170939700609397
+:101D10009600288139814A815B8160E074E284E722
+:101D20009BE40E9411310E947931759567957093FB
+:101D300099006093980020E030E040E85FE3609114
+:101D4000490270914A0280914B0290914C020E948C
+:101D5000A9306093490270934A0280934B0290939A
+:101D60004C0280914802882309F493C0C09043023A
+:101D7000D0904402E0904502F090460220E030E02E
+:101D8000A901C701B6010E945C321816F4F4A7013C
+:101D9000960160E074E284E79BE40E9411310E94A6
+:101DA00079317093970060939600A701960160E0E7
+:101DB00074E284E79BE40E9411310E9479317595A9
+:101DC0006795709399006093980060913D027091BF
+:101DD0003E026F5F7F4F70933E0260933D0280E052
+:101DE00090E00E94AA3120913F0230914002409140
+:101DF0004102509142020E945C3287FD4AC08091AC
+:101E00003C028F5F80933C029091F0038917A0F011
+:101E10008091F503882319F010923C020DC0809147
+:101E200071008D7F80937100809190008F778093F7
+:101E30009000109248022DC0E091F103F091F2035E
+:101E400080913C0298E0899FE00DF11D1124808172
+:101E50009181A281B3818093430290934402A09325
+:101E60004502B093460220E030E040E85EE3648142
+:101E70007581868197810E94603260933F027093E2
+:101E80004002809341029093420210923E021092CF
+:101E90003D02FF91EF91DF91CF91BF91AF919F9163
+:101EA0008F917F916F915F914F913F912F91FF9013
+:101EB000EF90DF90CF900F900FBE0F901F9018956E
+:101EC0000F931F93CF93DF9300D0CDB7DEB78C0174
+:101ED00080914702882331F04A8369830E94BE0CB7
+:101EE00069814A8181E0809348021093F203009354
+:101EF000F1036093F0034093F503109249021092AE
+:101F00004A0210924B0210924C0210923C02F801CD
+:101F10004081518162817381409343025093440216
+:101F2000609345027093460220E030E040E85EE3B3
+:101F300064817581868197810E94603260933F023F
+:101F400070934002809341029093420210923E02AD
+:101F500010923D02809171008260809371008091A7
+:101F600090008068809390000F900F90DF91CF9148
+:101F70001F910F9108956F927F928F929F92AF92CF
+:101F8000BF92CF92DF92EF92FF920F931F93CF9366
+:101F9000DF936B017C01EA018091480281110E946C
+:101FA000BE0C81E08093470220E030E0A901C70128
+:101FB000B6010E945C3218160CF09AC06090800244
+:101FC00070908102809082029090830220E030E045
+:101FD000A901662D772D882D992D0E940D31811133
+:101FE00028C0C0928002D0928102E0928202F092D8
+:101FF0008302D0937F02C0937E02809186029091EB
+:102000008702FC01EE0FFF1FEE0FFF1FE25AFD4F8C
+:10201000C082D182E282F382FC01EE0FFF1FE25BFD
+:10202000FD4FD183C08301969093870280938602EF
+:102030005FC0A7019601662D772D882D992D0E94EE
+:102040000D3187FF25C0262D372D482D592DC7016D
+:10205000B6010E94A83020E030E04AEF54E40E942C
+:1020600011315B018C012A2D3B2D402F512F662D04
+:10207000772D882D992D0E94A9303B014C01A70195
+:102080009601772D992D0E940D31181664F7A9CF6E
+:10209000A7019601662D772D882D992D0E945C321F
+:1020A00018160CF09ECFA7019601662D772D882D6E
+:1020B000992D0E94A83020E030E04AEF54E40E94BD
+:1020C00011315B018C012A2D3B2D402F512F662DA4
+:1020D000772D882D992D0E94A8303B014C01A70136
+:1020E0009601772D992D0E945C3287FFECCF79CF36
+:1020F000809171008260809371008091900080686F
+:1021000080939000DF91CF911F910F91FF90EF90FE
+:10211000DF90CF90BF90AF909F908F907F906F9007
+:102120000895809191020895CF93DF9300D01F927C
+:10213000CDB7DEB72091FA03243021F523E02983BF
+:102140009B838A832093E9008FEF06C095ED9A95D3
+:10215000F1F70000882329F09091E800815095FF65
+:10216000F5CF8091E80085FF0DC040E050E063E0CE
+:1021700070E0CE0101960E947E148091E8008E7777
+:102180008093E8000F900F900F90DF91CF9108950A
+:10219000CF93DF9300D01F92CDB7DEB72091FA0323
+:1021A000243029F522E029839B838A8383E080936E
+:1021B000E9008FEF06C095ED9A95F1F700008823AE
+:1021C00029F09091E800815095FFF5CF8091E800CB
+:1021D00085FF0DC040E050E063E070E0CE01019665
+:1021E0000E947E148091E8008E778093E8000F9023
+:1021F0000F900F90DF91CF9108952091FA03243032
+:10220000F9F422E02093E9002FEF06C035ED3A956E
+:10221000F1F70000222329F03091E800215035FF2A
+:10222000F5CF2091E80025FF0BC040E050E065E0CD
+:1022300070E00E947E148091E8008E778093E80021
+:102240000895CF93DF93EC018091FA03843041F538
+:1022500081E08093E9008FEF06C095ED9A95F1F744
+:102260000000882329F09091E800815095FFF5CF78
+:102270008091E80085FF14C040E050E068E070E025
+:10228000CE010E947E148091E8008E778093E80052
+:1022900088E0FE01A9E8B2E001900D928A95E1F78D
+:1022A000DF91CF910895BF92CF92DF92EF92FF928C
+:1022B0000F931F93CF93DF937C01B62EE90100E0CB
+:1022C00010E0C42ED12C0BC04991202F2B0D2F775D
+:1022D0004F776FE0C7010E94B4190F5F1F4F0C15B5
+:1022E0001D0594F3DF91CF911F910F91FF90EF9017
+:1022F000DF90CF90BF90089570E06F5F7F4F6F7059
+:1023000077270C94B4190F931F93CF93C42F633086
+:10231000710509F04AC0842F807F803849F18039E7
+:1023200009F043C0622F6F7770E080E090E00E9478
+:10233000AC3120E030E040E451E40E9411319B01D7
+:10234000AC0160E070E080E090E40E94C3320F775F
+:1023500010E023E0159507952A95E1F72DEC3CEC6C
+:1023600042E053E40E946032A8010E94BB0F1DC0EE
+:10237000622F6F7770E080E090E00E94AC3120E047
+:1023800030E040E451E40E9411319B01AC0160E077
+:1023900070E080E090E40E94C3322DEC3CEC42E01F
+:1023A00053E40E9460320E94EB0CCC3F29F4CF91A1
+:1023B0001F910F910C94BE0CCF911F910F91089516
+:1023C0000F931F93CF93DF93CDB7DEB727970FB649
+:1023D000F894DEBF0FBECDBF8C0114C08A810E946D
+:1023E0008E199A819D839B819E839C819F838111FD
+:1023F0001EC089818430B1F08730A1F08630A1F011
+:102400008530A1F0BE016F5F7F4F84E791E00E94AD
+:10241000FB1C8111E3CF84E791E00E94EC1C0E9439
+:1024200067190DC083E003C082E001C081E0AE0106
+:102430004B5F5F4F682FC8010E94211AE3CF279698
+:102440000FB6F894DEBF0FBECDBFDF91CF911F91C5
+:102450000F910895EF92FF920F93CF93DF9300D0E7
+:1024600000D000D0CDB7DEB77B014A832B830C832D
+:10247000842F2E834D830E948E192E814D818111D0
+:102480001BC082E0E816F10479F083E0E816F1045D
+:1024900021F0EA94EF2821F50BC0073F11F487E003
+:1024A00001C084E089830BC0273FD9F786E0FACFCB
+:1024B000473FB9F785E0F6CF42954F704983BE019B
+:1024C0006F5F7F4F84E791E00E94B11C84E791E049
+:1024D0000E94CF1C84E791E00E94EC1C0E946719C7
+:1024E00026960FB6F894DEBF0FBECDBFDF91CF9119
+:1024F0000F91FF90EF9008958091F903811109C029
+:102500000E946D160E94CA168091E200846080933A
+:10251000E20008951092F9030895089508950C9427
+:102520006129809192028F5F8093920262E30E9400
+:102530002834911135C01092920280919302882321
+:1025400079F18091FA03843049F58091E9008F7028
+:102550009091EC0090FF02C090E801C090E0982BB1
+:1025600084E08093E9008091EB0080FF14C08091AB
+:10257000EE0087FD03C00FC01092F1008091E800CB
+:1025800085FDFACF8091E80080FF05C08091E800CA
+:102590008E778093E8009F709093E90010929302E9
+:1025A000089542E061EC81E00E94E31542E061ECB5
+:1025B00082E00E94E31542E061EC83E00E94E315B3
+:1025C00042E261EC84E00E94E31542E361E885E0C9
+:1025D0000E94E31542E360E886E00C94E3158091E5
+:1025E000FC03833009F454C030F4813071F0823040
+:1025F00009F0A5C08CC08A3009F479C08B3009F489
+:102600005FC0893009F09BC020C08091FB03813AF4
+:1026100009F095C08091E800877F8093E800809161
+:10262000FF0390910004892B21F060E080E090E0AE
+:1026300003C068E089E892E070E00E941C15809178
+:10264000E8008B778093E80008958091FB03813246
+:1026500009F075C08091FF0390910004892B09F067
+:102660006EC08091E800877F8093E80005C080916C
+:10267000FA03882309F463C08091E80082FFF7CF52
+:102680008091F100809391028091E8008B7753C094
+:102690008091FB03813A09F052C08091FF03909131
+:1026A0000004892B09F04BC08091E800877F80935C
+:1026B000E8008091E80080FFFCCF80918A0136C05D
+:1026C0008091FB038132D9F58091FF039091000442
+:1026D000892BA9F58091E800877F8093E8000E940C
+:1026E0001A168091FD0380938A010C9456238091E1
+:1026F000FB03813221F58091E800877F8093E80019
+:102700000E941A168091FE0380938802089580919A
+:10271000FB03813AA1F48091E800877F8093E80071
+:102720008091E80080FFFCCF809188028093F100C7
+:102730008091E8008E778093E8000C941A16089533
+:1027400083E093E00E94F0196AE272E183E093E093
+:102750000E94461A60EE71E183E093E00E944A1AFB
+:1027600084B7877F84BF88E10FB6F89480936000B8
+:10277000109260000FBE90E080E80FB6F89480934E
+:102780006100909361000FBE0E94741D0E946D163F
+:102790000E94CA168091E20084608093E2007894DF
+:1027A00063E871E183E093E00E94EC196CE771E16A
+:1027B00083E093E00E94E41963E571E183E093E034
+:1027C0000E94E8190E940F0E0E9467190E94761D50
+:1027D00080E891E00E94201D0BC00E941E2980917C
+:1027E000F803882329F00E94492981110E94681466
+:1027F0008091FA03853089F383E093E00E94F91B0E
+:102800000E94801DF5CF292F332723303105B1F0E9
+:102810004CF42130310509F44DC02230310509F066
+:102820004EC007C02132310541F12232310591F10C
+:1028300046C0E0EDF0E084EE93E045C0992781309A
+:10284000910569F08230910589F0892B09F037C034
+:10285000E0EEF3E0E491F0E080EE93E034C0E2EBF0
+:10286000F3E0E491F0E082EB93E02DC0E6E8F3E0E2
+:10287000E491F0E086E893E026C0643000F5E62FAE
+:10288000F0E0EE0FFF1FE550FE4F80819181E9E0FF
+:10289000F0E019C0643098F4E62FF0E0DF01AA0FF1
+:1028A000BB1FAD5FBD4F8D919C91E55FFD4FE081FA
+:1028B000F0E009C0E2E1F0E084EB94E004C0E0E085
+:1028C000F0E080E090E0DA018D939C93CF010895D1
+:1028D00080E189BD82E189BD09B400FEFDCF809110
+:1028E000D8008F7D8093D8008091E0008260809333
+:1028F000E0008091E00081FDFCCF0895BF92CF926F
+:10290000DF92EF92FF920F931F93CF93DF937C019F
+:102910008B01EA010E943B16B82E811133C020972B
+:1029200031F028813981021B130BE20EF31EC12CFA
+:10293000D12C23C08091E80085FD15C08091E8006E
+:102940008E778093E800209749F0888199818C0DDB
+:102950009D1D9983888325E0B22E14C00E943B16EA
+:10296000882359F00EC0F70181917F018093F10017
+:1029700001501109FFEFCF1ADF0A01151105D1F639
+:1029800001C0B82E8B2DDF91CF911F910F91FF9039
+:10299000EF90DF90CF90BF900895BF92CF92DF92DB
+:1029A000EF92FF920F931F93CF93DF937C018B01E4
+:1029B000EA010E943B16B82E811133C0209731F0F6
+:1029C00028813981021B130BE20EF31EC12CD12C7E
+:1029D00023C08091E80085FD15C08091E8008B77C9
+:1029E0008093E800209749F0888199818C0D9D1D86
+:1029F0009983888345E0B42E14C00E943B16882337
+:102A000059F00EC08091F100F70181937F010150D0
+:102A10001109FFEFCF1ADF0A01151105D1F601C028
+:102A2000B82E8B2DDF91CF911F910F91FF90EF90DA
+:102A3000DF90CF90BF90089540910104509102041F
+:102A40004617570748F06115710539F44091E800C1
+:102A50004E774093E80001C0BA01FC0140E033C06A
+:102A60008091FA03882309F444C0853009F443C0F7
+:102A70008091E80083FD41C08091E80082FD33C071
+:102A80008091E80080FF1FC09091F3008091F200D8
+:102A9000392F20E0A901482BCA0106C0419140937B
+:102AA000F1006150710901966115710519F08830C6
+:102AB0009105A0F341E0089709F040E08091E8001B
+:102AC0008E778093E8006115710551F64111C8CFEA
+:102AD0000AC08091FA03882361F0853061F080910B
+:102AE000E80083FD0AC08091E80082FFF2CF80E019
+:102AF000089582E0089583E0089581E0089540916B
+:102B00000104509102044617570748F061157105FA
+:102B100039F44091E8004E774093E80001C0BA01D3
+:102B2000FC0140E034C08091FA03882309F445C0D9
+:102B3000853009F444C08091E80083FD42C0809153
+:102B4000E80082FD34C08091E80080FF20C09091B1
+:102B5000F3008091F200392F20E0A901482BCA012F
+:102B600007C044914093F10031966150710901967C
+:102B70006115710519F08830910598F341E00897C7
+:102B800009F040E08091E8008E778093E8006115BD
+:102B9000710549F64111C7CF0AC08091FA03882315
+:102BA00061F0853061F08091E80083FD0AC080917A
+:102BB000E80082FFF2CF80E0089582E0089583E08C
+:102BC000089581E00895982F2CC09093E9009817FC
+:102BD00039F07091EC002091ED005091F00003C0AD
+:102BE000242F762F50E021FD02C09F5F1AC0309144
+:102BF000EB003E7F3093EB003091ED003D7F309352
+:102C0000ED003091EB0031603093EB007093EC00FD
+:102C10002093ED005093F0002091EE0027FDE5CFCA
+:102C200007C0973090F28F708093E90081E008959B
+:102C300080E008958091FB0387FD05C08091E80046
+:102C400080FF0EC012C08091E80082FD05C0809117
+:102C5000FA038111F8CF08958091E8008B7708C0BE
+:102C60008091FA038111EACF08958091E8008E7770
+:102C70008093E80008958091E4009091E50045E696
+:102C80002091EC0020FD1FC023C02091FA032223D5
+:102C900091F0253091F02091EB0025FD10C020919E
+:102CA000E4003091E5002817390751F34150C9017C
+:102CB00039F784E0089582E0089583E0089581E083
+:102CC000089580E008952091E80020FFDECFF9CF3D
+:102CD0002091E80022FFD9CFF4CF0E94DB160E949A
+:102CE000E316E0EEF0E0808181608083E8EDF0E0C3
+:102CF00080818F77808319BCA7EDB0E08C918E7FA7
+:102D00008C9380818F7E80831092F90308950F93B6
+:102D10001F93CF93DF930E94DB160E94E316C8ED4A
+:102D2000D0E088818F7788838881806888838881D4
+:102D30008F7D888319BC1092FA031092F6031092CB
+:102D4000F8031092F70300EE10E0F80180818B7F0A
+:102D5000808388818160888342E060E080E00E9417
+:102D6000E315E1EEF0E080818E7F8083E2EEF0E01B
+:102D7000808181608083808188608083F801808188
+:102D80008E7F8083888180618883DF91CF911F91BE
+:102D90000F910895E8EDF0E080818F7E8083E7ED6C
+:102DA000F0E080818160808384E082BF81E0809355
+:102DB000F9030C948716E8EDF0E080818E7F808324
+:102DC0001092E20008951092DA001092E100089546
+:102DD0001F920F920FB60F9211242F933F934F9390
+:102DE0005F936F937F938F939F93AF93BF93EF9373
+:102DF000FF938091E10082FF0BC08091E20082FF8F
+:102E000007C08091E1008B7F8093E1000E949112C6
+:102E10008091DA0080FF1FC08091D80080FF1BC026
+:102E20008091DA008E7F8093DA008091D90080FF54
+:102E30000DC080E189BD82E189BD09B400FEFDCFEE
+:102E400081E08093FA030E947C1205C019BC1092A5
+:102E5000FA030E948A128091E10080FF19C08091DC
+:102E6000E20080FF15C08091E2008E7F8093E20037
+:102E70008091E20080618093E2008091D8008062BE
+:102E80008093D80019BC85E08093FA030E948E12CB
+:102E90008091E10084FF30C08091E20084FF2CC06B
+:102EA00080E189BD82E189BD09B400FEFDCF80913A
+:102EB000D8008F7D8093D8008091E1008F7E809331
+:102EC000E1008091E2008F7E8093E2008091E20039
+:102ED00081608093E2008091F603882311F084E002
+:102EE00007C08091E30087FF02C083E001C081E05A
+:102EF0008093FA030E948F128091E10083FF29C022
+:102F00008091E20083FF25C08091E100877F80935C
+:102F1000E10082E08093FA031092F6038091E100D1
+:102F20008E7F8093E1008091E2008E7F8093E200AB
+:102F30008091E20080618093E20042E060E080E006
+:102F40000E94E3158091F00088608093F0000E9459
+:102F50008D12FF91EF91BF91AF919F918F917F91D2
+:102F60006F915F914F913F912F910F900FBE0F90F6
+:102F70001F9018951F920F920FB60F9211242F9346
+:102F80003F934F935F936F937F938F939F93AF93F1
+:102F9000BF93CF93EF93FF938091E9008F7090914F
+:102FA000EC0090FF02C090E801C090E0C92FC82B50
+:102FB0001092E9008091F000877F8093F000789470
+:102FC0000E94FE171092E9008091F00088608093C3
+:102FD000F000CF70C093E900FF91EF91CF91BF91C6
+:102FE000AF919F918F917F916F915F914F913F91A1
+:102FF0002F910F900FBE0F901F9018951F93CF9396
+:10300000DF93CDB7DEB7AC970FB6F894DEBF0FBE37
+:10301000CDBFEBEFF3E08091F100819324E0E3304A
+:10302000F207C9F70E94EF128091E80083FF37C1D1
+:103030008091FB039091FC03953009F488C038F42B
+:103040009130B1F170F0933009F029C131C098305E
+:1030500009F4F8C0993009F404C1963009F01FC191
+:103060009DC0803821F0823809F019C108C08091D4
+:10307000F7039091F803992389F082600FC0809143
+:10308000FF03909100048F7099278093E90080914D
+:10309000EB0085FB882780F91092E9009091E80009
+:1030A000977F9093E8008093F1001092F100D5C0D3
+:1030B000882319F0823009F0F2C08F7121F082303C
+:1030C00009F0EDC00BC08091FD03813009F0E7C02D
+:1030D000933009F080E08093F8032FC08091FD03C6
+:1030E00081112BC08091FF03909100048F7099276C
+:1030F000009709F4D4C08093E9002091EB0020FFF1
+:103100001CC02091FC03233021F48091EB008062ED
+:1031100012C09091EB0090619093EB0021E030E0C1
+:1031200001C0220F8A95EAF72093EA001092EA0084
+:103130008091EB0088608093EB001092E900809111
+:10314000E800877F8093E8000E941A16A8C08111CA
+:10315000A6C08091FD039091FE038F779927182FC9
+:103160009091E3009078982B9093E3008091E80091
+:10317000877F8093E8000E941A168091E80080FF04
+:10318000FCCF8091E30080688093E300112311F06D
+:1031900083E001C082E08093FA0381C080588230CE
+:1031A00008F07DC08091FD039091FE038C3D23E0EB
+:1031B000920779F583E08A838AE289834FB7F8948E
+:1031C000DE01139620E03EE051E2E32FF0E0509361
+:1031D0005700E49120FF03C0E295EF703F5FEF706E
+:1031E0008E2F90E0EA3010F0C79601C0C0968D9304
+:1031F0009D932F5F243149F74FBF8091E800877F6F
+:103200008093E8006AE270E0CE0101960E941C15EE
+:1032100013C0AE01455D5F4F6091FF030E94031430
+:103220000097E9F12091E800277F2093E800BC0196
+:103230008BA59CA50E947F158091E8008B778093D9
+:10324000E8002DC0803859F58091E800877F809391
+:10325000E8008091F6038093F1008091E8008E777A
+:1032600071CF81111CC09091FD039230C0F4809108
+:10327000E800877F8093E8009093F6030E941A1677
+:103280008091F603811104C08091E30087FF02C0A2
+:1032900084E001C081E08093FA030E94D112809102
+:1032A000E80083FF0AC08091E800877F8093E800F0
+:1032B0008091EB0080628093EB00AC960FB6F8949F
+:1032C000DEBF0FBECDBFDF91CF911F910895CF9389
+:1032D0008091FA038823B1F08091E9008F7090917A
+:1032E000EC0090FF02C090E801C090E0C92FC82B0D
+:1032F0001092E9008091E80083FD0E94FE17CF70D4
+:10330000C093E900CF910895881F8827881F0895EA
+:1033100091E0883F08F490E0892F0895982F907FDE
+:10332000903B99F038F4903981F0903A71F09038F0
+:10333000C9F40BC0903DA1F018F4903C99F410C072
+:10334000903E19F0903F71F402C083E00895E82F99
+:10335000E15FEF3038F4F0E0E15FFD4F80810895E8
+:1033600082E0089580E008950F932F774F776F7074
+:10337000606BDC01ED91FC91022F242F462F63E05E
+:1033800070E009950F9108950F932F774F776F7025
+:103390006069DC01ED91FC91022F242F462F63E040
+:1033A00070E009950F9108950F932F774F776F7005
+:1033B0006068DC01ED91FC91022F242F462F63E021
+:1033C00070E009950F910895FC017383628308955D
+:1033D000FC01738F628F0895FC01758F648F0895CF
+:1033E000CF93DF93EC011DA21FA21EA2BC01685D5A
+:1033F0007F4F40EC88519F4F0E942D1C1B821A82E8
+:103400001D821C821F821E82198618861B861A86C0
+:103410001D861C861F861E86198A188A1B8A1A8A90
+:103420001D8A1C8A1F8A1E8A198E188E1B8E1A8E60
+:103430001D8E1C8E1F8E1E8E19A218A2DF91CF9199
+:103440000895CF92DF92FF920F931F93CF93DF9354
+:103450001F92CDB7DEB7F62E6A018C0108511F4FBF
+:1034600008C0F60161916F01C80149830E94341CB4
+:1034700049818C2D841B8F15A0F30F90DF91CF9184
+:103480001F910F91FF90DF90CF900895FC01718301
+:1034900060830895FC0171A360A30895AF92BF9269
+:1034A000CF92DF92EF92FF920F931F93CF93DF9310
+:1034B00000D01F92CDB7DEB77C016B01142FB22E66
+:1034C000A02EDC0195968C9195978430F1F45A9654
+:1034D000ED91FC915B97309709F4D8C0CB0101972F
+:1034E00063E070E00E943434DB01AA0FBB1FA60F1B
+:1034F000B71F49832A830B834C2D4A1B9E012F5FE4
+:103500003F4FBD01C7010995B1C06230710509F493
+:1035100053C06330710529F06130710509F09CC01A
+:1035200083C0842F807F803A01F130F48038B9F075
+:10353000803909F0ABC00DC0803EE9F0803F09F151
+:10354000803B09F0A3C0D7011296ED91FC9113972F
+:1035500023C0D7011496ED91FC9115971DC0D7019A
+:103560001696ED91FC91179717C0D7011896ED911B
+:10357000FC91199711C0D7011A96ED91FC911B97F8
+:103580000BC0423F09F082C0D7011C96ED91FC911F
+:103590001D97309731F47AC0309709F477C0123F05
+:1035A00021F42A2D4B2D62EF04C0612F6F702A2D5C
+:1035B0004B2DC70109955AC0842F807F803D59F05B
+:1035C000803F79F0803C09F061C0D7011E96ED91F3
+:1035D000FC911F9719C0D7015096ED91FC9151971E
+:1035E00013C0433F31F4D7015296ED91FC915397AC
+:1035F00008C0413F09F04AC0D7015496ED91FC91B3
+:103600005597309741F442C0309709F43FC0133FBB
+:1036100011F0113F19F44B2D612F03C0612F6F7012
+:103620004B2DC701099522C0842F0E948819882339
+:1036300031F0D7015696ED91FC91579707C0163F90
+:1036400029F5D7015896ED91FC9159973097F1F0F3
+:10365000612FC70109950AC064307105A8F416C02E
+:103660000A2D2B2D412FB601C7010995D7015E9672
+:10367000ED91FC915F97309789F00A2D2B2D412F0A
+:10368000B601C70109950AC0C12CD12CD7015C969F
+:10369000ED91FC915D97309719F7E8CF0F900F905F
+:1036A0000F90DF91CF911F910F91FF90EF90DF90DE
+:1036B000CF90BF90AF900895EF92FF920F931F931A
+:1036C000CF93DF93EC01162F862F0E948819882351
+:1036D00069F0FDA081E08DA300E020E0412F61E0D2
+:1036E00070E0CE010E944E1AFDA27CC0812F0E9484
+:1036F00084194DA1882309F440C0443029F01AA34D
+:1037000021E030E03FA32EA3812F0E948E1981304B
+:1037100031F070F0823051F0833059F507C08DA33D
+:1037200000E020E0412F61E070E01EC08DA35AC090
+:10373000103F19F0173FE9F404C084E08DA31AA3E9
+:103740003FC02EA13FA1C90163E070E00E94343464
+:103750008C0F9D1FFC0112A3B9016F5F7F4F7FA3E8
+:103760006EA30CA12BA14AA1CE010E944E1A1DA24C
+:1037700039C01DA21FA21EA235C0442399F12EA15B
+:103780003FA1C90163E070E00E9434347C01FE0176
+:10379000E80FF91F12A3B9016F5F7F4F7FA36EA3DC
+:1037A0008130910591F082E0E816F104D9F40CA182
+:1037B0002BA14AA1CE010E944E1A8DA1843091F016
+:1037C00081E090E09FA38EA30DC0423059F400E049
+:1037D0002BA14AA1CE010E944E1A8DA1843011F076
+:1037E000FFA2EEA2DF91CF911F910F91FF90EF907A
+:1037F0000895CF92DF92EF92FF920F931F93CF9392
+:10380000DF93EC01E8A1F9A1309709F009958E0149
+:1038100008511F4FC8010E94661CE12CF12CC82ED4
+:10382000D12C0FC060E0C8010E947A1C682FCE0125
+:103830000E945C1B61E0C8010E948B1C8FEFE81A9C
+:10384000F80AEC14FD0470F3DF91CF911F910F91F2
+:10385000FF90EF90DF90CF900895FC014283748336
+:1038600063831182108208950F931F93CF93DF9388
+:10387000EC01062F0E94AC1C182F298130E0C901F1
+:1038800001966A8170E00E944834488150E08417B4
+:10389000950729F4812F0E94AF1C80E012C0EB81B4
+:1038A000FC81E20FF31F00832981822F90E00196B3
+:1038B0006A8170E00E9448348983812F0E94AF1C86
+:1038C00081E0DF91CF911F910F910895CF93DF9306
+:1038D000EC010E94AC1C29819881291710F0C22F9D
+:1038E00002C0CA81C20FC91B0E94AF1C8C2FDF917E
+:1038F000CF910895FC012081862F90E0820F911DC9
+:10390000628170E00E9448340380F481E02DE80F6A
+:10391000F91F808108950F931F93CF93DF931F9218
+:10392000CDB7DEB78C0169830E94AC1C482FF8012B
+:1039300080816981262F30E0280F311D6281C90105
+:1039400070E00E9448348083842F0F90DF91CF91E4
+:103950001F910F910C94AF1C8FB7F89408958FBFEF
+:103960000895FC01CB012091FA032430B1F42181A8
+:103970002F702093E90040E050E064E070E00E9486
+:103980007E1481110BC09091E80095FD07C09091C5
+:10399000E8009E779093E800089582E008952091D2
+:1039A000FA032430A9F4FC0181818F708093E9002F
+:1039B0003091F3002091F200932F80E0822B892B2D
+:1039C00049F08091E8008E778093E8000C943B16D4
+:1039D00082E0089580E008952091FA03243051F4A4
+:1039E000FC0121812F702093E9002091E80020FD47
+:1039F0000C94CF1C0895FC01CB012091FA032430D4
+:103A000011F080E0089526812F702093E900209125
+:103A1000E80022FFF6CF2091E80025FFF2CF40E03A
+:103A200050E064E070E00E94CD148091E80085FDD4
+:103A300005C08091E8008B778093E80081E00895CD
+:103A400090939502809394020895E0919402F091EE
+:103A50009502309721F00190F081E02D099480E0EB
+:103A60000895E0919402F0919502309721F0028040
+:103A7000F381E02D09940895E0919402F09195026C
+:103A8000309721F00480F581E02D0994089520916C
+:103A90009602309197028217930771F090939702E4
+:103AA00080939602E0919402F0919502309721F074
+:103AB0000680F781E02D09940895209198023091B5
+:103AC00099028217930771F090939902809398025C
+:103AD000E0919402F0919502309721F00084F185F5
+:103AE000E02D0994089508950C94731D0E94952962
+:103AF0000E94AD060E94692A0C9411300C94E705CF
+:103B00005F926F927F928F929F92AF92BF92CF926D
+:103B1000DF92EF92FF920F931F93CF93DF93CDB776
+:103B2000DEB72A970FB6F894DEBF0FBECDBF0E9456
+:103B3000BD079AE9C92E92E0D92E00E010E0AA2430
+:103B4000A394B12C502E802F0E9411093C01F60144
+:103B5000E190F1906F01E826F926E114F10431F4C7
+:103B60000F5F1F4F0530110569F73AC08091F002D1
+:103B700081FD0E941A0920E030E04501022E02C0BA
+:103B8000880C991C0A94E2F7C4018E219F21892B8D
+:103B900009F12E835F826820792081E0672809F48B
+:103BA00080E088870E949E298160782F9A87898784
+:103BB0004E815F8168858A850E94391EF801EE0F6B
+:103BC000FF1FE656FD4F80819181882599259183BD
+:103BD000808316C02F5F3F4F2C30310571F6C0CF68
+:103BE0008FEF89838A831B820E949E298160782FB0
+:103BF0009D838C8349815A816B818D810E94391EFE
+:103C00000E94562D1091A4020E94251D1817D9F06C
+:103C10000E94251D8093A4022A960FB6F894DEBF59
+:103C20000FBECDBFDF91CF911F910F91FF90EF900D
+:103C3000DF90CF90BF90AF909F908F907F906F90CC
+:103C40005F900C947E1D2A960FB6F894DEBF0FBECF
+:103C5000CDBFDF91CF911F910F91FF90EF90DF903B
+:103C6000CF90BF90AF909F908F907F906F905F901C
+:103C70000895CF93DF93CDB7DEB72B970FB6F894A7
+:103C8000DEBF0FBECDBF4F83588769877A878B878A
+:103C9000DE01119686E0FD0111928A95E9F785E033
+:103CA000FE01379601900D928A95E1F749815A817C
+:103CB0006B817C818D819E810E9415262B960FB68B
+:103CC000F894DEBF0FBECDBFDF91CF910895CF93A3
+:103CD000C82F882309F4C1C0823859F40E94251DD9
+:103CE00081FDBBC089E30E947C280E94F82889E3FB
+:103CF0000CC0833879F40E94251D80FDAEC083E599
+:103D00000E947C280E94F82883E50E949E28CF917B
+:103D10000C94F828843859F40E94251D82FD9DC01A
+:103D200087E40E947C280E94F82887E4EECF845024
+:103D3000813A48F48C2F0E94732F81118EC08C2FF2
+:103D40000E947C28E4CF8C2F805E883050F4C770AE
+:103D500081E090E001C0880FCA95EAF70E94BF2871
+:103D6000D6CF8C2F855A833078F4C53A29F0C63ADD
+:103D700031F482E890E005C081E890E002C083E879
+:103D800090E0CF910C94471D8C2F885A833108F016
+:103D900064C0C83A39F1C93A41F1CA3A49F1CB3A5B
+:103DA00051F1CC3A59F1CD3A61F1C03B69F1CE3ACB
+:103DB00071F1CF3A79F1C13B81F1C23B89F1C33B4B
+:103DC00091F1C43B99F1C53BA1F1C63BA9F1C73BB9
+:103DD000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2AF
+:103DE00092E038C082EE90E035C089EE90E032C0BB
+:103DF0008AEE90E02FC085EB90E02CC086EB90E03F
+:103E000029C087EB90E026C08CEC90E023C08DECBD
+:103E100090E020C083E891E01DC08AE891E01AC0DC
+:103E200082E991E017C084E991E014C081E292E058
+:103E300011C083E292E00EC084E292E00BC085E202
+:103E400092E008C086E292E005C087E292E002C0FC
+:103E500080E090E0CF910C945D1DCF910895882370
+:103E600009F44DC0823859F40E94251D81FF47C0D6
+:103E700089E30E947C280E94F82889E30CC08338DB
+:103E800071F40E94251D80FF3AC083E50E947C28C2
+:103E90000E94F82883E50E949E280C94F828843814
+:103EA00059F40E94251D82FF2AC087E40E947C28C5
+:103EB0000E94F82887E4EFCF982F9450913A08F4A5
+:103EC000EACF982F905E983058F4282F277081E021
+:103ED00090E001C0880F2A95EAF70E94C528DDCF3F
+:103EE000982F955A933020F480E090E00C94471D71
+:103EF000885A833120F480E090E00C945D1D089591
+:103F0000882321F00E94BF280C94F8280895882364
+:103F100021F00E94C5280C94F8280895BF92CF92F2
+:103F2000DF92EF92FF920F931F93CF93DF93CDB762
+:103F3000DEB727970FB6F894DEBF0FBECDBF8C015A
+:103F400085E0F801DE01119601900D928A95E1F766
+:103F5000F80130812181F280558152955F70838113
+:103F60009481892B39F02F3F41F481E090E03F3F6D
+:103F700031F003C081E090E002C080E090E080FD7D
+:103F800073C339832A8389819A815E830E94392889
+:103F9000B92E8F830E9438280E9460272B2D2295EE
+:103FA0002F7030E05E816F812530310509F4E6C065
+:103FB0006CF4243031050CF0A2C04B2D407F8B2DCA
+:103FC0008F70223031050CF045C017C02C30310500
+:103FD0004CF42A3031050CF0E7C12830310509F0E6
+:103FE00043C3E5C02D30310509F4BAC20CF4A2C2B6
+:103FF0002F30310509F038C323C3182F411101C0F8
+:1040000002C01295107FFF2059F0112309F46BC2F2
+:10401000812F6F830E94CF280E94F8286F8163C28E
+:10402000862F0E942F1F112309F41EC3812F0E9487
+:10403000D52827960FB6F894DEBF0FBECDBFDF910F
+:10404000CF911F910F91FF90EF90DF90CF90BF9095
+:104050000C94F828403211F08295807F662319F085
+:10406000613071F523C0FF20B1F0511101C032C0A1
+:10407000513081F527960FB6F894DEBF0FBECDBF45
+:10408000DF91CF911F910F91FF90EF90DF90CF9034
+:10409000BF900C94DF28511101C003C0513009F4C6
+:1040A000E3C28E830E94E2288E819AC1FF2021F014
+:1040B000563008F0D9C20EC0553008F0D5C290C1B4
+:1040C000FF20C9F0552331F0F801958190FF0BC214
+:1040D0009F70958327960FB6F894DEBF0FBECDBFB5
+:1040E000DF91CF911F910F91FF90EF90DF90CF90D4
+:1040F000BF900C94801F552309F472C109C22B2D67
+:1041000026952695237030E02115310529F02130C0
+:10411000310509F0A9C219C0FF2021F0862F9B2D7F
+:10412000937002C080E090E027960FB6F894DEBF4F
+:104130000FBECDBFDF91CF911F910F91FF90EF90F8
+:10414000DF90CF90BF900C94471DFF2021F0862F69
+:104150009B2D937002C080E090E027960FB6F894F4
+:10416000DEBF0FBECDBFDF91CF911F910F91FF90AA
+:10417000EF90DF90CF90BF900C945D1D862FFF20B5
+:1041800019F00E945C2C02C00E94C42C27960FB626
+:10419000F894DEBF0FBECDBFDF91CF911F910F917D
+:1041A000FF90EF90DF90CF90BF900C944B2D8B2D14
+:1041B000837009F079C0F11057C2262F22952695F9
+:1041C0002770220F220F862F8F70C82ED12CE12C42
+:1041D000F12C022E04C0CC0CDD1CEE1CFF1C0A943A
+:1041E000D2F764FF10C06FE070E080E090E004C0A0
+:1041F000660F771F881F991F2A95D2F760957095D3
+:104200008095909503C060E070E0CB012B2D269542
+:1042100026952370422F50E042305105D9F04330AB
+:10422000510569F16C297D298E299F29413051055D
+:1042300051F127960FB6F894DEBF0FBECDBFDF91C8
+:10424000CF911F910F91FF90EF90DF90CF90BF9093
+:104250000C9475276C297D298E299F2927960FB6E6
+:10426000F894DEBF0FBECDBFDF91CF911F910F91AC
+:10427000FF90EF90DF90CF90BF900C9487270E9423
+:104280007527C701B60127960FB6F894DEBF0FBE9B
+:10429000CDBFDF91CF911F910F91FF90EF90DF90F5
+:1042A000CF90BF900C946327FF2019F08B2D817065
+:1042B00001C08695882309F4D7C1262F229526951B
+:1042C0002770220F220F862F8F70C82ED12CE12C41
+:1042D000F12C022E04C0CC0CDD1CEE1CFF1C0A9439
+:1042E000D2F764FF10C06FE070E080E090E004C09F
+:1042F000660F771F881F991F2A95D2F760957095D2
+:104300008095909503C060E070E0CB012B2D269541
+:1043100026952370422F50E042305105D9F04330AA
+:10432000510569F16C297D298E299F29413051055C
+:1043300051F127960FB6F894DEBF0FBECDBFDF91C7
+:10434000CF911F910F91FF90EF90DF90CF90BF9092
+:104350000C9414286C297D298E299F2927960FB645
+:10436000F894DEBF0FBECDBFDF91CF911F910F91AB
+:10437000FF90EF90DF90CF90BF900C9426280E9482
+:104380001428C701B60127960FB6F894DEBF0FBEFA
+:10439000CDBFDF91CF911F910F91FF90EF90DF90F4
+:1043A000CF90BF900C940228603F59F120F4603EFA
+:1043B00008F494C008C0623F09F467C0F0F1633F9D
+:1043C00009F08CC065C0162F1F708B2D8F71FF20D8
+:1043D00021F00E94AD27812F7DCE0E94C827812F1A
+:1043E00027960FB6F894DEBF0FBECDBFDF91CF91F9
+:1043F0001F910F91FF90EF90DF90CF90BF900C94A2
+:10440000871FFF20B1F0553008F02EC18B2D8F7122
+:1044100027960FB6F894DEBF0FBECDBFDF91CF91C8
+:104420001F910F91FF90EF90DF90CF90BF900C9471
+:10443000E727563008F018C1E9CFFF2099F08B2DFF
+:104440008F7127960FB6F894DEBF0FBECDBFDF91F8
+:10445000CF911F910F91FF90EF90DF90CF90BF9081
+:104460000C94AD278B2D8F7127960FB6F894DEBF75
+:104470000FBECDBFDF91CF911F910F91FF90EF90B5
+:10448000DF90CF90BF900C94C827F110EBCFD7CF1F
+:10449000FF2099F08B2D8F7127960FB6F894DEBF11
+:1044A0000FBECDBFDF91CF911F910F91FF90EF9085
+:1044B000DF90CF90BF900C949E2727960FB6F8946C
+:1044C000DEBF0FBECDBFDF91CF911F910F91FF9047
+:1044D000EF90DF90CF90BF900C949927FF20A9F028
+:1044E000552309F4ACCF862F27960FB6F894DEBF7C
+:1044F0000FBECDBFDF91CF911F910F91FF90EF9035
+:10450000DF90CF90BF900C94671E552309F4AACF7B
+:10451000862F27960FB6F894DEBF0FBECDBFDF9172
+:10452000CF911F910F91FF90EF90DF90CF90BF90B0
+:104530000C942F1F4B2D4F70C8010E941A03279611
+:104540000FB6F894DEBF0FBECDBFDF91CF911F91A4
+:104550000F91FF90EF90DF90CF90BF900C94CB26FF
+:10456000F11082C09B2D9F70492F50E042305105C1
+:1045700099F144F44115510569F04130510509F0B4
+:1045800073C019C043305105C1F14430510509F0E1
+:104590006BC044C027960FB6F894DEBF0FBECDBFE8
+:1045A000DF91CF911F910F91FF90EF90DF90CF900F
+:1045B000BF900C94223027960FB6F894DEBF0FBE42
+:1045C000CDBFDF91CF911F910F91FF90EF90DF90C2
+:1045D000CF90BF900C94393027960FB6F894DEBF79
+:1045E0000FBECDBFDF91CF911F910F91FF90EF9044
+:1045F000DF90CF90BF900C94553027960FB6F8946B
+:10460000DEBF0FBECDBFDF91CF911F910F91FF9005
+:10461000EF90DF90CF90BF900C946830862F279654
+:104620000FB6F894DEBF0FBECDBFDF91CF911F91C3
+:104630000F91FF90EF90DF90CF90BF900C948C3053
+:104640004B2D4F70C80127960FB6F894DEBF0FBEF2
+:10465000CDBFDF91CF911F910F91FF90EF90DF9031
+:10466000CF90BF900C941B0927960FB6F894DEBF2D
+:104670000FBECDBFDF91CF911F910F91FF90EF90B3
+:10468000DF90CF90BF9008950E94DC280E94B1284F
+:104690000E94F8280E94F72D0E944B2D80E090E0A8
+:1046A0000E94471D80E090E00C945D1D0E94CC2884
+:1046B0000C9444230E943928292F22952F7030E032
+:1046C0002C3031054CF42A3031056CF4225031097C
+:1046D0002230310590F407C02C30310551F02F30D5
+:1046E000310559F406C0803E10F0803F31F481E07E
+:1046F000089593FB882780F9089580E00895CF936B
+:10470000DF9300D000D01F92CDB7DEB70F900F908F
+:104710000F900F900F90DF91CF910895CF93DF937B
+:1047200000D000D000D0CDB7DEB726960FB6F894F3
+:10473000DEBF0FBECDBFDF91CF9108951F93CF9302
+:10474000DF93C091DB0216E012C0D0E01C9FF001A5
+:104750001D9FF00D1124E555FD4F4081518162816F
+:104760007381848195810E948E232196C7708091E8
+:10477000DC02C813EACFDF91CF911F9108954091D9
+:10478000A5025091A6026091A7027091A8028091A3
+:10479000A9029091AA020C948E230F931F93CF939A
+:1047A000DF938091AA0282958F7009F069C0809191
+:1047B000A702882309F464C0A091DB02D091DC0237
+:1047C000B091A502C091A6028091A8029091A90281
+:1047D00021E030E0BF3F11F020E030E0122FBC01BB
+:1047E0006095709506E04AC0009721F0CF3F29F40C
+:1047F000212F05C021E030E002C020E030E020FDA4
+:104800003BC04A2F50E0049FF001059FF00D11249A
+:10481000E555FD4F2181C2132FC02081B2132CC05A
+:104820002281211129C0238134812817390718F0EA
+:10483000281B390B02C0260F371F283C3105E0F436
+:104840008091AA028F7080618093AA0286E0849F83
+:10485000F001859FF00D1124E055FD4F80818F7090
+:104860008061808385EA92E00E948E1FDF91CF9164
+:104870001F910F910C949E23AF5FA770AD13B4CF1F
+:10488000DF91CF911F910F910895EF92FF920F93B7
+:104890001F93CF93DF93CDB7DEB762970FB6F8942F
+:1048A000DEBF0FBECDBF8C0185E0F801DE011D9695
+:1048B00001900D928A95E1F7D8014C9111965C9187
+:1048C000119712966C9112971396ED90FC90149795
+:1048D0007091A502E091A6028091A8029091A90290
+:1048E000009739F0EF3F41F421E030E07F3F31F0B5
+:1048F00003C021E030E002C020E030E020FD5CC1D8
+:104900002091A702222309F4F1C0E816F90628F045
+:104910009701281B390BC90104C0809590958E0D15
+:104920009F1D883C910508F098C08091AA02982F9D
+:10493000907F09F064C0E51314C0741312C06111B4
+:1049400010C08F7080618093AA020E94BF2385EA05
+:1049500092E00E948E1F8091AA02D80115968C9336
+:1049600043C1EF2839F05F3F41F481E090E04F3FD1
+:1049700031F003C081E090E002C080E090E080FD73
+:1049800003C081E0862702C080E090E080FF2EC057
+:104990008091DB022091DC0236E013C090E0389F6A
+:1049A000F001399FF00D1124E555FD4F718157132A
+:1049B00006C07081471303C07281671317C0019648
+:1049C00087708213EBCF12C19F7059F0882309F4CE
+:1049D0000BC107C09F7029F0F8019581907F09F401
+:1049E00003C1805E883008F4FFC0D2C0662309F49A
+:1049F000FBC08091AA0281608093AA02F5C0E513F2
+:104A000008C0741306C0611104C0D80115968C93B8
+:104A10009DC04D875E878D859E856A8B0E945A2337
+:104A20006A89882309F4B4C0662309F4B1C02091CF
+:104A3000AA02822F82958F7090E002970CF4C6C074
+:104A40008091A5029091A60298878F831986FB8694
+:104A5000EA862C87CE01079646C08091AA02982F3D
+:104A6000907F59F47E2DF98AE88A89890E947F23F4
+:104A700085EA92E00E948E1F95C0E51311C0741361
+:104A80000FC061110DC0F8018583C8010E948E1FFF
+:104A9000E5EAF2E086E0DF011D928A95E9F7A2C01F
+:104AA0004D875E878D859E856A8B0E945A236A8911
+:104AB000882309F46DC0662309F46AC02091AA0214
+:104AC000822F82958F7090E002970CF47FC08091C6
+:104AD000A5029091A6029A8389831B82FD82EC82B3
+:104AE0002E83CE0101960E948E1F70C0E816F90633
+:104AF00028F09701281B390BC90104C080959095B7
+:104B00008E0D9F1D883C910508F046C0662309F470
+:104B10003FC0E51330C074132EC02091AA0220FDBF
+:104B200021C0322F32953F70832F90E00097D1F053
+:104B3000D80115962C9315970F9741F0832F8F5F0F
+:104B40008295807F2F70282B15962C93C8010E9488
+:104B50008E1F86E0F801A5EAB2E001900D928A95D9
+:104B6000E1F73EC086E0F801A5EAB2E001900D92BF
+:104B70008A95E1F737C04D875E878D859E850E94B7
+:104B80005A23811123C08091AA0281608093AA02D6
+:104B9000C8010E948E1F26C07E2DF98AE88A898965
+:104BA0000E947F23E5EAF2E086E0DF011D928A950C
+:104BB000E9F70E94BF2318C0662351F34D875E8733
+:104BC0008D859E850E945A23882311F386E0F80183
+:104BD000A5EAB2E001900D928A95E1F70E94CD23FB
+:104BE0000E94BF2381E014C080E012C04D875E8721
+:104BF0008D859E850E943928292F22952F7030E0BF
+:104C0000223031050CF4E0CE243031050CF6E2CE32
+:104C100062960FB6F894DEBF0FBECDBFDF91CF9185
+:104C20001F910F91FF90EF9008951F93CF93DF9303
+:104C3000CDB7DEB72C970FB6F894DEBF0FBECDBF51
+:104C40004F83588769877A878B879C87CE01079621
+:104C50000E9445248823D9F02F8138858A859B8539
+:104C6000892B39F03F3F19F080E090E004C02F3FDE
+:104C7000D9F781E090E0892B09F06DC04F8158850C
+:104C800069857A858B859C850E948E2364C086E029
+:104C9000FE013796DE01119601900D928A95E1F79B
+:104CA000FF81E8854A855B854115510539F0EF3F65
+:104CB00041F481E090E0FF3F31F003C081E090E0FB
+:104CC00002C080E090E080FD46C02091DC0230E030
+:104CD000C9010196877099276091DB0270E0861701
+:104CE000970709F440C0F983EA835D834C8396E01B
+:104CF000929FD001939FB00D1124A555BD4FFE0189
+:104D0000319601900D929A95E1F78093DC020E9412
+:104D10009E2321C0189FC001112485559D4F0E94DC
+:104D20004524882371F1E091DB021E9FF0011124DC
+:104D3000E555FD4F40815181628173818481958168
+:104D40000E948E238091DB0290E001968770992764
+:104D50008093DB0201C016E08091DB029091DC02BF
+:104D60008913D8CF0EC00E9456231092DC021092F5
+:104D7000DB02E5EAF2E086E0DF011D928A95E9F7C1
+:104D8000EACF2C960FB6F894DEBF0FBECDBFDF91F1
+:104D9000CF911F910895DF92EF92FF920F931F938F
+:104DA000CF93DF93EC01009709F46EC0D12CEE2471
+:104DB000E394F12C8E010F5F1F4FFE018491843725
+:104DC00048F4843008F04CC0813071F0823009F032
+:104DD0005BC01EC0853709F43FC080F1982F9458FE
+:104DE000903708F051C03FC02296F8018491982F67
+:104DF000905E983050F48770FE2D01C0FF0F8A95A9
+:104E0000EAF78F2F0E94CF2813C00E94671E2FC081
+:104E10002296F8018491982F905E983060F4877004
+:104E2000FE2D01C0FF0F8A95EAF78F2F0E94D5282B
+:104E30000E94F8281CC00E942F1F19C02296F8015A
+:104E4000049107C08FE99FE00197F1F700C00000CF
+:104E500001500111F7CF0BC02296F801D49007C082
+:104E60000E94671E03C08F770E942F1FE8018D2DBF
+:104E700007C08150EFE9FFE03197F1F700C0000073
+:104E8000882309F497CFF5CFDF91CF911F910F9130
+:104E9000FF90EF90DF9008956093E1027093E2023B
+:104EA0008093E3029093E4020C9444236093DD0228
+:104EB0007093DE028093DF029093E0020C9444230F
+:104EC00008950C944C270F931F930091E1021091C9
+:104ED000E2022091E3023091E402602B712B822BDD
+:104EE000932B1F910F910C944C270F931F930091BC
+:104EF000E1021091E2022091E3023091E40260238A
+:104F00007123822393231F910F910C944C270F93AD
+:104F10001F930091E1021091E2022091E30230918F
+:104F2000E40260277127822793271F910F910C9429
+:104F30004C2760E070E0CB010C94562741E050E034
+:104F400060E070E004C0440F551F661F771F8A950C
+:104F5000D2F7CB01BA010C94562741E050E060E053
+:104F600070E004C0440F551F661F771F8A95D2F763
+:104F70008091DD029091DE02A091DF02B091E0020B
+:104F8000482B592B6A2B7B2BCB01BA010C9456274B
+:104F900041E050E060E070E004C0440F551F661F20
+:104FA000771F8A95D2F740955095609570958091BE
+:104FB000DD029091DE02A091DF02B091E002482371
+:104FC00059236A237B23CB01BA010C94562741E075
+:104FD00050E060E070E004C0440F551F661F771F6B
+:104FE0008A95D2F78091DD029091DE02A091DF02D6
+:104FF000B091E002482759276A277B27CB01BA01E5
+:105000000C9456270F931F930091DD021091DE023E
+:105010002091DF023091E002602B712B822B932BC9
+:105020001F910F910C9456270F931F930091DD024F
+:105030001091DE022091DF023091E00260237123A3
+:10504000822393231F910F910C9456270F931F9344
+:105050000091DD021091DE022091DF023091E0022A
+:1050600060277127822793271F910F910C94562751
+:105070000895CF92DF92EF92FF920F931F93CF93F9
+:10508000DF93EC01C090E102D090E202E090E302F5
+:10509000F090E4028091DD029091DE02A091DF02A7
+:1050A000B091E002C82AD92AEA2AFB2A0FE110E0CF
+:1050B000B701A601002E04C07695679557954795D0
+:1050C0000A94D2F740FF08C0BE01802F0E947104ED
+:1050D0008130910509F007C00150110948F7BE0160
+:1050E00080E00E947104DF91CF911F910F91FF909A
+:1050F000EF90DF90CF90089540918B0150918C01FB
+:1051000020E030E09FEFFA01E20FF31F62816817A1
+:10511000A1F09F3F19F4611101C0922F2F5F3F4F03
+:105120002630310581F707C0FA01E90FF11D97FD1F
+:10513000FA95828308959F3FB9F7089540918B01B6
+:1051400050918C0120E030E0FA01E20FF31F9281D0
+:10515000981301C012822F5F3F4F26303105A1F70F
+:10516000089581E090E0E0918B01F0918C01E80FCF
+:10517000F91F1082019688309105A9F70895909142
+:10518000E502982B9093E502089580959091E502B1
+:1051900098239093E50208951092E5020895909166
+:1051A000E602982B9093E602089580959091E6028E
+:1051B00098239093E60208951092E6020895809352
+:1051C000E70208951092E702089540918B015091F3
+:1051D0008C0120E030E080E0FA01E20FF31F9181C2
+:1051E00091118F5F2F5F3F4F27303105A9F7089549
+:1051F000E0918B01F0918C018091E5028083E09138
+:105200008B01F0918C0180819091E602892B808343
+:105210009091E702992361F0E0918B01F0918C016C
+:105220008081892B80830E94E52881110E94E228D9
+:1052300080918B0190918C010C94311D8091FA0327
+:10524000843021F11092F10220E488E190E00FB661
+:10525000F894A895809360000FBE2093600080E0D2
+:105260000E94590383B7817F846083BF83B78160C5
+:1052700083BF7894889583B78E7F83BF88E10FB60C
+:10528000F89480936000109260000FBE0895089516
+:105290000895CF9380E00E9459030E9447290E94FD
+:1052A000BD070E944829C0E08C2F0E941109892B5C
+:1052B00029F4CF5FC530C1F780E001C081E0CF9114
+:1052C00008950E94562380E00E9459030E941130E5
+:1052D0000E94251D0C94E7051F920F920FB60F92A6
+:1052E00011248F939F93AF93BF938091F10281110B
+:1052F00013C08091F2029091F302A091F402B09158
+:10530000F5024196A11DB11D8093F2029093F30224
+:10531000A093F402B093F502BF91AF919F918F914A
+:105320000F900FBE0F901F90189582E084BD93E000
+:1053300095BD9AEF97BD80936E0008958FB7F8944E
+:105340004091F2025091F3026091F4027091F502E3
+:105350008FBFCA010895CF92DF92EF92FF920F9311
+:105360001F932FB7F8944091F2025091F30260918D
+:10537000F4027091F5022FBF6A017B01EE24FF2435
+:105380008C0120E030E0C016D106E206F30620F0E2
+:105390009A01281B390B05C09C0120953095240FDC
+:1053A000351FC9011F910F91FF90EF90DF90CF90B3
+:1053B00008951F920F920FB60F9211248F939F930F
+:1053C000AF93BF938091F2029091F302A091F40207
+:1053D000B091F5020196A11DB11D8093F202909348
+:1053E000F302A093F402B093F502BF91AF919F91A5
+:1053F0008F910F900FBE0F901F9018950E946D1601
+:10540000F8942FEF87EA91E6215080409040E1F731
+:1054100000C0000087E090EBDC01809304049093CF
+:105420000504A0930604B09307042CE088E190E003
+:105430000FB6F894A895809360000FBE209360008B
+:10544000FFCFCF92DF92EF92FF920F931F93CF93F4
+:10545000DF93C82ED12C01E010E08D2D0E941109A0
+:105460007C01C0E0D0E098010C2E02C0220F331F57
+:105470000A94E2F72E213F21232B29F42196CC30E8
+:10548000D10589F708C06C2F7D2D80E00E944C0467
+:10549000C812F4CF06C0D39485E0D812DECF80E0E6
+:1054A00001C081E0DF91CF911F910F91FF90EF90AC
+:1054B000DF90CF900895CF93C82F8CE20E94212ACD
+:1054C000882321F08C2FCF910C94212A80E0CF915A
+:1054D0000895CF930E94AC2B811102C00E948D2BA6
+:1054E000C5E608C00E94BD078FE39CE90197F1F76C
+:1054F00000C00000C150B1F789E20E945B2A81110F
+:105500000AC18AE20E945B2A81110E948D2B85E0EC
+:105510000E945B2A81110E94FE290E94B72B809372
+:10552000F00287E00E945B2A882399F18BE10E94B8
+:105530005B2A882351F09091F00291FB882780F933
+:1055400021E0822780FB91F922C08EE00E945B2A35
+:10555000882351F09091F00292FB882780F921E096
+:10556000822780FB92F913C080E10E945B2A909110
+:10557000F002882341F093FB882780F921E08227FD
+:1055800080FB93F904C0892F809580FB90F990935C
+:10559000F0028091F0020E94BB2B0E94C92B8093E5
+:1055A000010380EE0E945B2A882341F08091010371
+:1055B000982F909590FB80F98093010389E30E94D6
+:1055C0005B2A882359F09091010391FB882780F989
+:1055D00021E0822780FB91F99093010382EE0E94E3
+:1055E0005B2A882359F09091010392FB882780F968
+:1055F00021E0822780FB92F99093010386EE0E94BE
+:105600005B2A882359F09091010393FB882780F946
+:1056100021E0822780FB93F99093010383EE0E949F
+:105620005B2A882359F09091010394FB882780F925
+:1056300021E0822780FB94F99093010385E30E9487
+:105640005B2A882359F09091010395FB882780F904
+:1056500021E0822780FB95F99093010381E30E946A
+:105660005B2A882359F09091010396FB882780F9E3
+:1056700021E0822780FB96F99093010381E10E944B
+:105680005B2A882359F09091010397FB882780F9C2
+:1056900021E0822780FB97F9909301038091010319
+:1056A0000E94CD2B87E20E945B2AC82F8EE10E94C8
+:1056B0005B2A8111C2608FE10E945B2A8111C46064
+:1056C00080E20E945B2A8111C86081E20E945B2A0D
+:1056D0008111C06182E20E945B2A8111C06283E273
+:1056E0000E945B2A8111C06484E20E945B2A8823A5
+:1056F00011F0C06802C0CC2329F08C2F0E94C42B6B
+:105700006C2F03C00E94C02B682F70E080E090E0F7
+:10571000CF910C946127CF9108956DEE7EEF80E0DC
+:1057200090E00E94783460E082E090E00E946A3469
+:1057300060E083E090E00E946A3460E084E090E002
+:105740000E946A3460E085E090E00E946A3460E084
+:1057500086E090E00C946A3480E090E00E9464342B
+:1057600021E08D3E9E4F09F020E0822F089582E0D7
+:1057700090E00C945C34682F82E090E00C946A34E2
+:1057800083E090E00C945C34682F83E090E00C940C
+:105790006A3484E090E00C945C34682F84E090E0FC
+:1057A0000C946A3486E090E00C945C34682F86E0B8
+:1057B00090E00C946A348091FE0280FF0BC06091EF
+:1057C000900185E0689FB0011124759567957595E6
+:1057D00067952AC081FF09C06091900185E0689FAC
+:1057E000B0011124759567951FC082FF07C06091B5
+:1057F000900185E0689FB001112416C04091F80225
+:105800004423C9F060918F01461788F720919001D9
+:1058100085E0289F90011124429FC001439F900D75
+:10582000112470E00E9448346038710540F461151D
+:10583000710539F002C065E070E0862F08958FE7AA
+:10584000089581E008958091FE0280FF08C0609174
+:105850008E0170E0759567957595679521C081FFFC
+:1058600006C060918E0170E07595679519C082FF42
+:1058700004C060918E0170E010C08091F80288230E
+:10588000C1F060918D018617A0F790918E01989FCD
+:10589000C001112470E00E9448346038710528F47A
+:1058A0006115710521F0862F08958FE7089581E035
+:1058B000089561E070E0F4CF803F21F40E94DB2B7B
+:1058C000819504C0813F29F40E94DB2B8093FB0269
+:1058D0000895823F21F40E94DB2B819504C0833F11
+:1058E00029F40E94DB2B8093FA020895893F19F472
+:1058F0000E94232C05C08A3F31F40E94232C8195FD
+:105900008093FC0208958B3F21F40E94232C819503
+:1059100004C08C3F29F40E94232C8093FD0208953B
+:10592000843F21F48091F902816017C0853F21F402
+:105930008091F902826011C0863F21F48091F902C2
+:1059400084600BC0873F21F48091F902886005C014
+:10595000883F31F48091F90280618093F9020895C3
+:105960008D3F21F48091FE0281600BC08E3F21F4B7
+:105970008091FE02826005C08F3F29F48091FE0273
+:1059800084608093FE020895803F29F48091FB0299
+:1059900087FF6EC007C0813F41F48091FB0218165B
+:1059A0000CF066C01092FB0263C09091FA02823F35
+:1059B00019F497FF5DC005C0833F31F419160CF050
+:1059C00057C01092FA0254C0893F31F48091FC0212
+:1059D00018160CF04DC006C08A3F39F48091FC02C5
+:1059E00087FF46C01092FC0243C08B3F29F4809190
+:1059F000FD0287FF3DC006C08C3F39F48091FD0257
+:105A00001816B4F51092FD0233C0843F21F4809142
+:105A1000F9028E7F05C0853F31F48091F9028D7FB8
+:105A20008093F90225C0863F21F48091F9028B7F93
+:105A3000F7CF873F21F48091F902877FF1CF883F2C
+:105A400021F48091F9028F7EEBCF8D3F21F480917C
+:105A5000FE028E7F0BC08E3F21F48091FE028D7F6F
+:105A600005C08F3F29F48091FE028B7F8093FE0258
+:105A70008091FA0281110EC08091FB0281110AC04F
+:105A80008091FC02811106C08091FD02811102C04B
+:105A90001092F802089589EF92E00E943C1D0E9446
+:105AA0009E299093F7028093F6020895CF938091F8
+:105AB000F6029091F7020E94AB294091F80244232C
+:105AC00021F02091910130E006C0209192015AE02E
+:105AD000259F900111248217930708F486C08091B6
+:105AE000FA0281110DC09091FB02911109C09091B1
+:105AF000FC02911105C09091FD02992309F475C033
+:105B00004F3F19F04F5F4093F802181624F40E949B
+:105B1000DB2B8093FA028091FA0287FF05C00E9476
+:105B2000DB2B81958093FA028091FB02181624F4F6
+:105B30000E94DB2B8093FB028091FB0287FF05C054
+:105B40000E94DB2B81958093FB026091FA02662311
+:105B500039F1C091FB02CC2319F1772767FD7095CD
+:105B6000872F972F0E94AC3123E333E343E35FE3B6
+:105B70000E9460320E9479316093FA026C2F77277D
+:105B800067FD7095872F972F0E94AC3123E333E395
+:105B900043E35FE30E9460320E9479316093FB022D
+:105BA0008091FC02181624F40E94232C8093FC029E
+:105BB0008091FC0287FF05C00E94232C8195809371
+:105BC000FC028091FD02181624F40E94232C80937D
+:105BD000FD028091FD0287FF05C00E94232C819564
+:105BE0008093FD02CF910C944B2DCF910895E9EF56
+:105BF000F2E085E0DF011D928A95E9F71092F80244
+:105C00001092FE020895833089F130F4813061F002
+:105C1000823009F06EC019C0853009F449C0B8F16E
+:105C2000863009F066C055C020919201862F90E021
+:105C3000820F911D8F3F910520F4620F60939201B6
+:105C400008958FEF80939201089520919101862FFE
+:105C500090E0820F911D8F3F910520F4620F6093B9
+:105C6000910108958FEF8093910108952091900103
+:105C7000862F90E0820F911D8F3F910520F4620FD7
+:105C80006093900108958FEF809390010895209183
+:105C90008F01862F90E0820F911D8F3F910520F498
+:105CA000620F60938F0108958FEF80938F010895A5
+:105CB00020918E01862F90E0820F911D8F3F9105DC
+:105CC00020F4620F60938E0108958FEF80938E0110
+:105CD000089520918D01862F90E0820F911D8F3FB6
+:105CE000910520F4620F60938D0108958FEF8093EA
+:105CF0008D010895833021F130F4813059F08230E4
+:105D000009F049C012C0853089F128F1863009F0C8
+:105D100042C037C080919201681720F4861B80939F
+:105D2000920108951092920108958091910168174F
+:105D300020F4861B8093910108951092910108959B
+:105D400080919001681720F4861B8093900108953C
+:105D500010929001089580918F01681720F4861B9E
+:105D600080938F01089510928F01089580918E0184
+:105D7000681720F4861B80938E01089510928E017F
+:105D8000089580918D01681720F4861B80938D0102
+:105D9000089510928D01089541E050E060E070E0B8
+:105DA00004C0440F551F661F771F8A95D2F7CB0199
+:105DB000BA010E9461270C945623873200F58E3178
+:105DC00008F086C08E3009F466C060F4873009F4AC
+:105DD0004DC018F4863049F531C0883041F18B3020
+:105DE00021F57BC0863109F478C018F48031E9F4DC
+:105DF0005CC0893109F471C08B31B9F442C0883379
+:105E000009F46BC048F4893209F460C0853309F4A1
+:105E10005DC0873251F45AC0833409F457C018F476
+:105E20008A3318F057C0883499F080E008950E94B2
+:105E3000B72B0E94C92B0E94D22B4FC08091F00239
+:105E4000817F8E7F8093F00281E08093FF0208952E
+:105E50000E9456232FEF83ED90E321508040904025
+:105E6000E1F700C000000E94FE2937C08091F002D7
+:105E700080FF03C0817F8E7F01C081608093F0022C
+:105E80002CC09091F00291FB882780F921E08227B5
+:105E900080FB91F913C09091F00292FB882780F962
+:105EA00021E0822780FB92F909C09091F00293FBD8
+:105EB000882780F921E0822780FB93F99093F002F4
+:105EC000882359F091609093F00207C080E003C0EE
+:105ED0008D5101C089530E94CC2E81E0089580E04D
+:105EE000089580E00895CF93C82F8091FF028130FC
+:105EF00071F020F0823009F089C037C0A0918B0189
+:105F0000B0918C018C91823209F082C007C0A091BF
+:105F10008B01B0918C018C91823249F48C2F0E94BC
+:105F20006F2F81111EC08C2F0E94DD2E1CC08C2F64
+:105F30000E94712F811115C0C43169F030F4CB304B
+:105F400081F0C03109F068C009C0C93221F0C833FE
+:105F500009F062C006C01092FF025EC082E080932A
+:105F6000FF0281E090E081705AC0C932C9F060F44C
+:105F7000C431B1F020F4C73009F04CC034C0CE5168
+:105F8000C63008F047C017C0CE3439F120F4CB3406
+:105F900009F040C01CC0C135C1F0C235D9F513C0ED
+:105FA00080910003882319F01092000333C081E030
+:105FB0008093FF0234C0EC2FF0E0E25EFD4F808161
+:105FC0008093000327C061E003C061E007C06AE07E
+:105FD000809100030E94032E1DC06AE0809100039F
+:105FE0000E947A2E17C08EE18093920182E3809303
+:105FF00091018AE08093900184E180938F0188E091
+:1060000080938E0188E280938D0104C01092FF027C
+:1060100080E005C081E003C080E090E0A4CFCF9194
+:1060200008950E94AC2B811102C00E948D2B0E940A
+:10603000D22B8093030480FF02C0869501C080E0CC
+:106040000C94590380910304982F9695292F30E0E2
+:10605000233031054CF49F5F990F8170892B81604B
+:10606000809303040E94D62B8091030486950C94A0
+:10607000590380910304982F969591F09158990FA8
+:106080008170892B809303048E7F91E009F490E066
+:106090008091030490FB80F9809303040E94D62B27
+:1060A0008091030486950C94590380910304982FE2
+:1060B000909590FB80F9809303040E94D62B8091E9
+:1060C000030480FF02C0869501C080E00C94590350
+:1060D00030910304232F26952F5F2F77822F90E096
+:1060E000317004972CF4220F232B2093030402C059
+:1060F0003093030480910304282F2E7F91E009F44C
+:1061000090E090FB80F9809303040E94D62B80914D
+:10611000030486950C94590320910304922F9695BD
+:106120009827990F822F8170892B809303048E7F8B
+:1061300091E009F490E08091030490FB80F9809352
+:1061400003040E94D62B8091030486950C94590376
+:106150005058BB27AA270ED075C166D130F06BD13D
+:1061600020F031F49F3F11F41EF45BC10EF4E09572
+:10617000E7FB51C1E92F77D180F3BA1762077307A4
+:106180008407950718F071F49EF58FC10EF4E09521
+:106190000B2EBA2FA02D0B01B90190010C01CA01E1
+:1061A000A0011124FF27591B99F0593F50F4503E8C
+:1061B00068F11A16F040A22F232F342F4427585F7E
+:1061C000F3CF469537952795A795F0405395C9F796
+:1061D0007EF41F16BA0B620B730B840BBAF091504E
+:1061E000A1F0FF0FBB1F661F771F881FC2F70EC0ED
+:1061F000BA0F621F731F841F48F4879577956795C0
+:10620000B795F7959E3F08F0B3CF9395880F08F0A8
+:106210009927EE0F979587950895D9D008F481E0D6
+:1062200008950CD00FC107D140F0FED030F021F41A
+:106230005F3F19F0F0C0511139C1F3C014D198F388
+:106240009923C9F35523B1F3951B550BBB27AA27F7
+:1062500062177307840738F09F5F5F4F220F331F69
+:10626000441FAA1FA9F333D00E2E3AF0E0E830D035
+:1062700091505040E695001CCAF729D0FE2F27D038
+:10628000660F771F881FBB1F261737074807AB0706
+:10629000B0E809F0BB0B802DBF01FF2793585F4F7B
+:1062A0002AF09E3F510568F0B6C000C15F3FECF395
+:1062B000983EDCF3869577956795B795F7959F5F40
+:1062C000C9F7880F911D9695879597F90895E1E094
+:1062D000660F771F881FBB1F621773078407BA07F3
+:1062E00020F0621B730B840BBA0BEE1F88F7E0954E
+:1062F000089504D06894B111D9C00895BCD088F035
+:106300009F5790F0B92F9927B751A0F0D1F0660FA1
+:10631000771F881F991F1AF0BA95C9F712C0B130BC
+:1063200081F0C3D0B1E00895C0C0672F782F8827CF
+:10633000B85F39F0B93FCCF3869577956795B395FB
+:10634000D9F73EF490958095709561957F4F8F4F6A
+:106350009F4F0895E89409C097FB3EF4909580956F
+:10636000709561957F4F8F4F9F4F9923A9F0F92F1B
+:1063700096E9BB279395F695879577956795B79599
+:10638000F111F8CFFAF4BB0F11F460FF1BC06F5F7F
+:106390007F4F8F4F9F4F16C0882311F096E911C091
+:1063A000772321F09EE8872F762F05C0662371F0B2
+:1063B00096E8862F70E060E02AF09A95660F771FC6
+:1063C000881FDAF7880F9695879597F90895990FA2
+:1063D0000008550FAA0BE0E8FEEF16161706E807AF
+:1063E000F907C0F012161306E407F50798F0621BD0
+:1063F000730B840B950B39F40A2661F0232B242BA5
+:10640000252B21F408950A2609F4A140A6958FEFC3
+:10641000811D811D089597F99F6780E870E060E015
+:1064200008959FEF80EC089500240A94161617062D
+:1064300018060906089500240A9412161306140675
+:1064400005060895092E0394000C11F4882352F0D8
+:10645000BB0F40F4BF2B11F460FF04C06F5F7F4F90
+:106460008F4F9F4F089557FD9058440F551F59F077
+:106470005F3F71F04795880F97FB991F61F09F3F31
+:1064800079F087950895121613061406551FF2CF5A
+:106490004695F1DF08C0161617061806991FF1CFAA
+:1064A00086957105610508940895E894BB276627D1
+:1064B0007727CB0197F908958ADF08F48FEF0895C5
+:1064C0000BD0C0CFB1DF28F0B6DF18F0952309F06C
+:1064D000A2CFA7CF1124EACFC6DFA0F3959FD1F3B7
+:1064E000950F50E0551F629FF001729FBB27F00D82
+:1064F000B11D639FAA27F00DB11DAA1F649F6627D7
+:10650000B00DA11D661F829F2227B00DA11D621F25
+:10651000739FB00DA11D621F839FA00D611D221FDF
+:10652000749F3327A00D611D231F849F600D211DC3
+:10653000822F762F6A2F11249F5750408AF0E1F066
+:1065400088234AF0EE0FFF1FBB1F661F771F881FAF
+:1065500091505040A9F79E3F510570F05CCFA6CFF7
+:106560005F3FECF3983EDCF3869577956795B7959A
+:10657000F795E7959F5FC1F7FE2B880F911D9695C4
+:10658000879597F90895FA01EE0FFF1F30962105C0
+:10659000310599F16115710561F48038BFE39B07FE
+:1065A00049F168949038810561F08038BFEF9B070E
+:1065B00041F0992342F5FF3FE1053105210511F135
+:1065C000E8940894E795D901AA2329F4AB2FBE2FAC
+:1065D000F85FD0F310C0FF5F70F4A695E0F7F739CD
+:1065E00050F019F0FF3A38F49F779F930CD00F903A
+:1065F00007FC905808953EF014CF60E070E080E80A
+:106600009FE308954FE79F775F934F933F932F93B7
+:106610009ED02F913F914F915F9152DF05C019F4A9
+:106620000EF0F9CE42CFFDCE26DFC8F39638C0F784
+:1066300007F80F92E8942BE33AEA48EB5FE74EDF66
+:106640000F920F920F924DB75EB70F92C0D0ECEA47
+:10665000F0E016D04F915F91EF91FF91E595EE1F1D
+:10666000FF1F49F0FE57E0684427EE0F441FFA95DC
+:10667000E1F74195550B32D00F9007FE26C00895E3
+:10668000DF93CF931F930F93FF92EF92DF927B01E3
+:106690008C01689405C0DA2EEF011EDFFE01E8943C
+:1066A000A5912591359145915591AEF3EF0162DDAC
+:1066B000FE019701A801DA9479F7DF90EF90FF903F
+:1066C0000F911F91CF91DF9108959B01AC0160E084
+:1066D00070E080E89FE3A5CD9ECEACC0CCDEE8F3B1
+:1066E0009923D9F3940F511DBBF39150504094F06E
+:1066F00059F0882332F0660F771F881F9150504061
+:10670000C1F79E3F510544F7880F911D96958795D7
+:1067100097F908955F3FACF0983E9CF0BB278695B3
+:1067200077956795B79508F4B1609395C1F7BB0F5E
+:1067300058F711F460FFE8CF6F5F7F4F8F4F9F4F87
+:10674000E3CFB4CE0EF076C06CCE689464CE93DE08
+:10675000C8F39923D1F3C6F3DF93CF931F930F931D
+:10676000FF92C92FDD2788232AF02197660F771F14
+:10677000881FDAF720E030E040E85FEB9FE38839DC
+:1067800020F0803E30F021968F77E3DCE4EDF0E0FE
+:1067900003C0DFDCE1E0F1E073DF8B01BE01EC015F
+:1067A000FB2E6F5771097595771F880B990BD4DDF8
+:1067B00028E132E741E35FE38FDEAF2D9801AE01C0
+:1067C000FF900F911F91CF91DF91D4DC3BCEFA0166
+:1067D000DC01AA0FBB1F9B01AC01BF5728F4222785
+:1067E0003327442750781FC0B75188F4AB2F0024BB
+:1067F000469537952795011CA395D2F3002069F0A3
+:10680000220F331F441FB395DAF30DD0A1CC6130B2
+:106810007105A0E88A07B94630F49B01AC016627F0
+:10682000772788279078309621F020833183428320
+:10683000538308959F3F31F0915020F487957795C9
+:106840006795B795880F911D9695879597F9089547
+:10685000991B79E004C0991F961708F0961B881FB2
+:106860007A95C9F780950895AA1BBB1B51E107C013
+:10687000AA1FBB1FA617B70710F0A61BB70B881FD0
+:10688000991F5A95A9F780959095BC01CD0108955F
+:1068900097FB072E16F4009407D077FD09D00E94CD
+:1068A000343407FC05D03EF4909581959F4F0895B0
+:1068B000709561957F4F0895F999FECF92BD81BD86
+:1068C000F89A992780B50895A8E1B0E042E050E039
+:1068D0000C947F34262FF999FECF1FBA92BD81BD4B
+:1068E00020BD0FB6F894FA9AF99A0FBE0196089552
+:1068F0000E946A34272F0C946B34DC01CB01FC011D
+:10690000F999FECF06C0F2BDE1BDF89A319600B408
+:0E6910000D9241505040B8F70895F894FFCF13
+:10691E0055D0A44600001644000000000000484276
+:10692E0061978A460000C8430000000000004842FC
+:10693E0055D024460000C843000000000000484225
+:10694E0000005C460000C843000000000000484202
+:10695E0061978A4600007A4455D0A4460000C84389
+:10696E00000000000000484200005C460000C843E2
+:10697E00000000000000484255D024460000164496
+:10698E000507000C058540000001064000000100CF
+:10699E0091102111FD10C810941001E8022808145E
+:1069AE000A321E42004500250026004300610060A9
+:1069BE000020003700640065006600670044004652
+:1069CE000024004700000002000400050007000933
+:1069DE00000B000C000E0010001100130015001724
+:1069EE000018001A001C001D001F002100230024A7
+:1069FE00002600280029002B002D002F0030003229
+:106A0E000034003500370039003B00F6030F042830
+:106A1E0004410469051C05E604C6043F4D362002F8
+:106A2E000302000001000101010101000101010248
+:086A3E00030405060708090026
+:00000001FF
diff --git a/keyboard/preonic/preonic_pcb_silent.hex b/keyboard/preonic/preonic_pcb_silent.hex new file mode 100644 index 000000000..cc59d3fe8 --- /dev/null +++ b/keyboard/preonic/preonic_pcb_silent.hex @@ -0,0 +1,1189 @@ +:100000000C9465020C94A9020C94A9020C94A90208
+:100010000C94A9020C94A9020C94A9020C94A902B4
+:100020000C94A9020C94A9020C94430D0C94150E87
+:100030000C942B1C0C94A9020C94A9020C94A902F8
+:100040000C94A9020C94A9020C94A9020C94A90284
+:100050000C94A9020C94981C0C94A9020C94A9026B
+:100060000C94A9020C94A9020C94A9020C94A90264
+:100070000C94A9020C94A9020C94A9020C94A90254
+:100080000C94A9020C94A9020C94A9020C94A90244
+:100090000C94A9020C94A9020C94A9020C94A90234
+:1000A0000C94A9020C94A9020C94A90235001E001C
+:1000B0001F0020002100220023002400250026002C
+:1000C00027002A002B0014001A0008001500170052
+:1000D0001C0018000C00120013002A002900040064
+:1000E0001600070009000A000B000D000E000F00AB
+:1000F00033003400E1001D001B000600190005005C
+:100100001100100036003700380028000030E000F1
+:10011000E200E30003522C002C0004525000510076
+:1001200052004F0035001E001F0020002100220059
+:10013000230024002500260027002A002B0014009D
+:100140001A00090013000A000D000F0018001C001F
+:1001500033002A00290004001500160017000700CC
+:100160000B00110008000C0012003400E1001D001B
+:100170001B000600190005000E00100036003700B5
+:10018000380028000030E000E200E30003522C00B9
+:100190002C0004525000510052004F0035001E0048
+:1001A0001F0020002100220023002400250026003B
+:1001B00027002A002B0034003600370013001C00F3
+:1001C00009000A00060015000F002A00290004009B
+:1001D0001200080018000C0007000B0017001100A7
+:1001E00016003800E100330014000D000E001B0063
+:1001F000050010001A0019001D0028000030E00062
+:10020000E200E30003522C002C0004525000510085
+:1002100052004F0035001E001F0020002100220068
+:10022000230024002500260027002A0035021E0294
+:100230001F0220022102220223022402250226029A
+:1002400027022A0001003A003B003C003D003E002E
+:100250003F002D022E022F02300231020100400029
+:100260004100420043004400450000530153025343
+:100270000050010001000100010001000100010027
+:1002800001000100AB00AA00A900AE0035001E006D
+:100290001F0020002100220023002400250026004A
+:1002A00027002A0035001E001F0020002100220028
+:1002B000230024002500260027002A0001003A0020
+:1002C0003B003C003D003E003F002D002E002F0073
+:1002D0003000310001004000410042004300440072
+:1002E000450000530153025300500100010001007A
+:1002F000010001000100010001000100AB00AA00A3
+:10030000A900AE002A0354006800650020005000D8
+:10031000720065006F006E006900630020004B00F2
+:100320006500790062006F006100720064000000E7
+:100330002C034F007200740068006F006C006900AD
+:100340006E0065006100720020004B0065007900BE
+:1003500062006F006100720064007300000004031B
+:10036000090409027400040100A0FA090400000154
+:1003700003010100092111010001223F000705814D
+:100380000308000A09040100010301020009211108
+:10039000010001224D000705820308000A0904023A
+:1003A00000010300000009211101000122360007AD
+:1003B00005830308000A0904030002030000000982
+:1003C00021110100012220000705840320000107FC
+:1003D0000504032000011201100100000008EDFED9
+:1003E00061600100010200010631FF0974A10109E9
+:1003F00075150025FF9520750881020976150025E1
+:10040000FF952075089102C005010980A1018502B0
+:1004100016010026B7001A01002AB70075109501D1
+:100420008100C0050C0901A1018503160100269C6D
+:10043000021A01002A9C02751095018100C0050175
+:100440000902A1010901A1000509190129051500E9
+:10045000250195057501810295017503810105014D
+:10046000093009311581257F950275088106093803
+:100470001581257F950175088106050C0A3802153E
+:1004800081257F950175088106C0C005010906A177
+:1004900001050719E029E715002501950875018177
+:1004A0000295017508810105081901290595057551
+:1004B0000191029501750391010507190029FF15A6
+:1004C0000025FF950675088100C011241FBECFEFDF
+:1004D000DAE0DEBFCDBF04B603FE24C08091F10197
+:1004E0009091F201A091F301B091F4018730904B0B
+:1004F000A740B04BB9F41092F1011092F2011092A2
+:10050000F3011092F40114BE84B7877F84BF88E1A1
+:100510000FB6F89480936000109260000FBEE0E088
+:10052000F8E3099511E0A0E0B1E0E0EEF9E402C0E3
+:1005300005900D92A435B107D9F711E0A4E5B1E01B
+:1005400001C01D92A13FB107E1F70E94720A0C940D
+:10055000EE240C94000061110DC0FC0182818823FF
+:1005600031F085EE0E9426110E94272303C085EEFC
+:100570000E94EE1180E090E00895089508950E9491
+:10058000D1026E9A769A8DEB92E0892B11F00C9441
+:10059000BD0208958EEB92E0892B11F00C94BE02FF
+:1005A0000895279A2F988FEF9FEF9093870080935D
+:1005B00086008AE08093800089E1809381000C941A
+:1005C000D02281110BC080918000877F80938000B2
+:1005D00010928D0010928C002F9808952F988330E0
+:1005E00041F4809180008860809380008FEF9FEFBE
+:1005F00012C09091800098609093800023E030E0DA
+:10060000281B3109220F331F8FEF9FEF02C09695F1
+:1006100087952A95E2F790938D0080938C0008953A
+:100620008B3B910568F4883A910530F5853A910540
+:10063000C0F48430910598F4019709F06FC071C03F
+:10064000803E910508F46AC0883E910540F09C0107
+:10065000205F31092031310508F060C05CC09C0189
+:10066000A1C0853A910509F45FC0863A910509F465
+:100670005EC023E830E496C0883A910509F45AC078
+:10068000893A910509F459C08A3A910509F458C08C
+:100690008B3A910509F457C08C3A910509F456C07C
+:1006A0008D3A910509F455C0803B910509F454C079
+:1006B0008E3A910509F453C08F3A910509F452C05E
+:1006C000813B910509F451C0823B910509F450C06A
+:1006D000833B910509F44FC0843B910509F44EC05A
+:1006E000853B910509F44DC0863B910509F44CC04A
+:1006F000873B910509F44BC0883B910509F44AC03A
+:10070000893B910509F449C08A3B910509F048C02D
+:100710002AE236E447C09C01306544C020E030E066
+:1007200041C021E030E03EC021E830E43BC022E897
+:1007300030E438C022EE34E435C029EE34E432C06F
+:100740002AEE34E42FC025EB34E42CC026EB34E44D
+:1007500029C027EB34E426C02CEC34E423C02DEC74
+:1007600034E420C023E835E41DC02AE835E41AC08B
+:1007700022E935E417C024E935E414C021E236E467
+:1007800011C023E236E40EC024E236E40BC025E2B9
+:1007900036E408C026E236E405C027E236E402C0AB
+:1007A00020E034E4C901089508959CE0799FF001A8
+:1007B00011249CE3899FE00DF11D1124E60FF11D2A
+:1007C000EE0FFF1FE455FF4F25913491C9010895A5
+:1007D000880F991F845D9040FC0125913491C901D7
+:1007E0000895880F991F84559F4FFC0125913491DE
+:1007F000C90108950E94D5039C019A9581159F41D6
+:1008000010F4C9010895C90190528115904128F44E
+:10081000C9019F700E94F1030895C9019053811589
+:10082000904120F4C9019927906C0895C901905412
+:10083000409728F4C9018F709927946D089520314D
+:1008400080E4380719F480E091ED0895213190E4B7
+:10085000390719F480E090ED0895223140E434071F
+:1008600019F480E092ED0895233180E4380719F4FB
+:1008700080E093ED0895211590E5390769F40E9411
+:1008800015162FEF44E38CE0215040408040E1F703
+:1008900000C000000C94BD1C213090E5390731F4F4
+:1008A0008091D00181608093D0010895C901905555
+:1008B0008115904108F062C0432F55274F7055278E
+:1008C00041305105F9F4C90174E0880F991F7A95F8
+:1008D000E1F788279370B901E3E0660F771FEA9587
+:1008E000E1F760767727862B972B9C682370332758
+:1008F00002C0440F551F2A95E2F74F715527842BEC
+:10090000952B08954230510529F4922F8827816F45
+:10091000906A089543305105B9F4C90153E0880F36
+:10092000991F5A95E1F7807E97702370332741E035
+:1009300050E002C0440F551F2A95E2F74F7155272A
+:10094000842B952B9C6808954430510549F5C901C5
+:1009500043E0880F991F4A95E1F7807E97702370D6
+:10096000332741E050E002C0440F551F2A95E2F7BB
+:100970004F715527842B952B9A680895C90190577C
+:100980008115904120F4C9019F7090620895C901BA
+:1009900090588115904120F4C9019F70906A089584
+:1009A000203E3105E0F4203C310568F52133310566
+:1009B00009F475C048F42932310509F46BC02A32B4
+:1009C000310509F07BC075C02933310501F12238AA
+:1009D0003105E9F02533310509F070C051C0233EDF
+:1009E0003105B1F140F4203E3105D1F0223E310510
+:1009F00009F064C01CC0263E310579F1273E31055F
+:100A000009F05CC038C0C9010E94E80308958091D4
+:100A1000E10180FD02C081FF51C080EE90E04FC037
+:100A20008091E10180FFF9CF89E390E048C0809197
+:100A3000E10182FF0AC08091E10184FF03C080E0F0
+:100A400090E03DC083EE90E03AC082EE90E037C087
+:100A50008091E10182FFEFCFF8CF8091E10183FF28
+:100A600007C08091E10184FDEACF87EE90E027C0C6
+:100A700086EE90E024C08091E10183FFF2CFF8CFB1
+:100A80008091E10185FF03C089E290E018C085E311
+:100A900090E015C08091E10185FDF9CFF5CF8091FF
+:100AA000E10186FF03C08AE290E009C081E390E0A3
+:100AB00006C08091E10186FDF9CFF5CFC9010E9402
+:100AC0001003089508955F926F927F928F929F9284
+:100AD000AF92BF92CF92DF92EF92FF920F931F934C
+:100AE000CF93DF93CDB7DEB72A970FB6F894DEBF6A
+:100AF0000FBECDBF9E012F5F3F4F4E018BE0880E92
+:100B0000911C60E070E000E010E0E12CF12CC12CC1
+:100B1000D12CA12CB12C8AE0782E622E532E41E0EC
+:100B200050E0E4E1F1E0A62DB52D872D01900D9266
+:100B30008A95E1F7F901819191919F01FC01E07F94
+:100B4000FF27E032F10559F48F709927FA0102C0AE
+:100B5000EE0FFF1F8A95E2F7AE2ABF2A37C0E033B7
+:100B6000F10559F48F709927FA0102C0EE0FFF1FAB
+:100B70008A95E2F7CE2ADF2A29C0E034F10559F43C
+:100B80008F709927FA0102C0EE0FFF1F8A95E2F7D6
+:100B9000EE2AFF2A1BC0E035F10559F48F70992722
+:100BA000FA0102C0EE0FFF1F8A95E2F70E2B1F2BF2
+:100BB0000DC0E036F10551F48F709927FA0102C09B
+:100BC000EE0FFF1F8A95E2F76E2B7F2B2815390554
+:100BD00009F0A7CF94B18A2D8095892384B985B176
+:100BE0008A2985B997B18C2D8095892387B988B1D9
+:100BF0008C2988B99AB18E2D809589238AB98BB1B9
+:100C00008E298BB99DB1802F809589238DB98EB1A6
+:100C1000802B8EB990B3862F8095892380BB81B3BA
+:100C2000862B81BB2A960FB6F894DEBF0FBECDBFD0
+:100C3000DF91CF911F910F91FF90EF90DF90CF90B8
+:100C4000BF90AF909F908F907F906F905F9008952E
+:100C50005F926F927F928F929F92AF92BF92CF924C
+:100C6000DF92EF92FF920F931F93CF93DF93CDB755
+:100C7000DEB768970FB6F894DEBF0FBECDBF85B75D
+:100C8000806885BF85B7806885BF0E9463059E0127
+:100C90002F5F3F4F4E0189E1880E911C60E070E0AC
+:100CA00000E010E0E12CF12CC12CD12CA12CB12CB6
+:100CB00098E1792E622E532E41E050E0EEE1F1E012
+:100CC000A62DB52D872D01900D928A95E1F7F9019A
+:100CD000819191919F01FC01E07FFF27E032F105B6
+:100CE00059F48F709927FA0102C0EE0FFF1F8A9501
+:100CF000E2F7AE2ABF2A37C0E033F10559F48F700E
+:100D00009927FA0102C0EE0FFF1F8A95E2F7CE2A5B
+:100D1000DF2A29C0E034F10559F48F709927FA01D0
+:100D200002C0EE0FFF1F8A95E2F7EE2AFF2A1BC0D2
+:100D3000E035F10559F48F709927FA0102C0EE0FE2
+:100D4000FF1F8A95E2F70E2B1F2B0DC0E036F10531
+:100D500051F48F709927FA0102C0EE0FFF1F8A9598
+:100D6000E2F76E2B7F2B2815390509F0A7CF94B138
+:100D70008A2D8095892384B985B18A2985B997B14F
+:100D80008C2D8095892387B988B18C2988B99AB12F
+:100D90008E2D809589238AB98BB18E298BB99DB10F
+:100DA000802F809589238DB98EB1802B8EB990B319
+:100DB000862F8095892380BB81B3862B81BB1092BF
+:100DC00055011092540110925F0110925E01109231
+:100DD0005701109256011092610110926001109219
+:100DE0005901109258011092630110926201109201
+:100DF0005B0110925A0110926501109264011092E9
+:100E00005D0110925C0110926701109266018FEBF8
+:100E100092E0892BB9F068960FB6F894DEBF0FBE4A
+:100E2000CDBFDF91CF911F910F91FF90EF90DF9099
+:100E3000CF90BF90AF909F908F907F906F905F907A
+:100E40000C94BF0268960FB6F894DEBF0FBECDBFFC
+:100E5000DF91CF911F910F91FF90EF90DF90CF9096
+:100E6000BF90AF909F908F907F906F905F9008950C
+:100E70005F926F927F928F929F92AF92BF92CF922A
+:100E8000DF92EF92FF920F931F93CF93DF93CDB733
+:100E9000DEB7A2970FB6F894DEBF0FBECDBF7E01BE
+:100EA00049E1E40EF11C2EE5C22E21E0D22E5E01B6
+:100EB00053E2A50EB11C3AE0532E470101E010E0C9
+:100EC00048E1642E55E0752EE4E1F1E0D401852D72
+:100ED00001900D928A95E1F7F701819191917F013F
+:100EE0009C01207F33272032310589F424B18F7093
+:100EF0009927A80102C0440F551F8A95E2F7CA013D
+:100F0000242B24B995B18095892385B94FC020330E
+:100F1000310589F427B18F709927F80102C0EE0FCF
+:100F2000FF1F8A95E2F7CF012E2B27B998B1809544
+:100F3000892388B93BC02034310589F42AB18F70E8
+:100F40009927A80102C0440F551F8A95E2F7CA01EC
+:100F5000242B2AB99BB1809589238BB927C02035D2
+:100F6000310589F42DB18F709927F80102C0EE0F79
+:100F7000FF1F8A95E2F7CF012E2B2DB99EB18095E8
+:100F800089238EB913C02036310581F420B38F70C8
+:100F90009927A80102C0440F551F8A95E2F7CA019C
+:100FA000242B20BB91B38095892381BB50EA5A95AD
+:100FB000F1F7BE016F5F7F4F80E090E020E030E00E
+:100FC000EEE1F1E0DE011196462D01900D924A9579
+:100FD000E1F7FB0141915191BF01FA01E07FFF2749
+:100FE000E032F10511F4E3B113C0E033F10511F47F
+:100FF000E6B10EC0E034F10511F4E9B109C0E03505
+:10100000F10511F4ECB104C0E036F105B9F4EFB12B
+:10101000F0E04F70552702C0F595E7954A95E2F745
+:10102000E0FD08C0A801022E02C0440F551F0A941B
+:10103000E2F702C040E050E0842B952B2F5F3F4F3A
+:101040002C30310509F0BCCFF60120813181281701
+:10105000390721F091838083709200010E9463051B
+:10106000F2E0CF0ED11CEA14FB0409F02DCF8091E1
+:1010700000018823A1F1815080930001882339F079
+:101080008FE99FE00197F1F700C0000028C0809130
+:101090005E0190915F01909355018093540180917E
+:1010A0006001909161019093570180935601809166
+:1010B000620190916301909359018093580180914E
+:1010C00064019091650190935B0180935A01809136
+:1010D00066019091670190935D0180935C018AECB9
+:1010E00092E0892B11F00E94CA0281E0A2960FB60D
+:1010F000F894DEBF0FBECDBFDF91CF911F910F914E
+:10110000FF90EF90DF90CF90BF90AF909F908F9027
+:101110007F906F905F900895E82FF0E0EE0FFF1F33
+:10112000EC5AFE4F8081918108950895809171015C
+:101130000895CF93DF9300D01F92CDB7DEB72091F3
+:10114000E701243021F523E029839B838A832093C0
+:10115000E9008FEF06C095ED9A95F1F7000088231E
+:1011600029F09091E800815095FFF5CF8091E8003B
+:1011700085FF0DC040E050E063E070E0CE010196D5
+:101180000E94280B8091E8008E778093E8000F90F2
+:101190000F900F90DF91CF910895CF93DF9300D000
+:1011A0001F92CDB7DEB72091E701243029F522E068
+:1011B00029839B838A8383E08093E9008FEF06C0B5
+:1011C00095ED9A95F1F70000882329F09091E800B9
+:1011D000815095FFF5CF8091E80085FF0DC040E07C
+:1011E00050E063E070E0CE0101960E94280B8091F0
+:1011F000E8008E778093E8000F900F900F90DF91BA
+:10120000CF9108952091E7012430F9F422E0209352
+:10121000E9002FEF06C035ED3A95F1F700002223E3
+:1012200029F03091E800215035FFF5CF2091E800FA
+:1012300025FF0BC040E050E065E070E00E94280B05
+:101240008091E8008E778093E8000895CF93DF9334
+:10125000EC018091E701843041F581E08093E90061
+:101260008FEF06C095ED9A95F1F70000882329F0DD
+:101270009091E800815095FFF5CF8091E80085FFBF
+:1012800014C040E050E068E070E0CE010E94280BFE
+:101290008091E8008E778093E80088E0FE01A9E65F
+:1012A000B1E001900D928A95E1F7DF91CF91089519
+:1012B0008091E601811109C00E94C80C0E94250D91
+:1012C0008091E20084608093E20008951092E6012C
+:1012D0000895089508950C94201C809172018F5FE9
+:1012E0008093720162E30E948924911135C01092AB
+:1012F000720180917301882379F18091E701843034
+:1013000049F58091E9008F709091EC0090FF02C048
+:1013100090E801C090E0982B84E08093E9008091F0
+:10132000EB0080FF14C08091EE0087FD03C00FC06A
+:101330001092F1008091E80085FDFACF8091E800DD
+:1013400080FF05C08091E8008E778093E8009F7051
+:101350009093E90010927301089542E061EC81E0FE
+:101360000E943E0C42E061EC82E00E943E0C42E0B2
+:1013700061EC83E00E943E0C42E261EC84E00C945C
+:101380003E0C8091E901833009F454C030F481307F
+:1013900071F0823009F0A5C08CC08A3009F479C0A0
+:1013A0008B3009F45FC0893009F09BC020C0809168
+:1013B000E801813A09F095C08091E800877F809329
+:1013C000E8008091EC019091ED01892B21F060E023
+:1013D00080E090E003C068E089E691E070E00E9460
+:1013E000770B8091E8008B778093E80008958091D7
+:1013F000E801813209F075C08091EC019091ED0116
+:10140000892B09F06EC08091E800877F8093E80007
+:1014100005C08091E701882309F463C08091E8004A
+:1014200082FFF7CF8091F100809371018091E800F5
+:101430008B7753C08091E801813A09F052C08091C6
+:10144000EC019091ED01892B09F04BC08091E800EF
+:10145000877F8093E8008091E80080FFFCCF809137
+:101460000B0136C08091E8018132D9F58091EC0101
+:101470009091ED01892BA9F58091E800877F8093F9
+:10148000E8000E94750C8091EA0180930B010C9496
+:1014900015168091E801813221F58091E800877F5F
+:1014A0008093E8000E94750C8091EB0180936801A5
+:1014B00008958091E801813AA1F48091E800877F46
+:1014C0008093E8008091E80080FFFCCF8091680164
+:1014D0008093F1008091E8008E778093E8000C946F
+:1014E000750C089584B7877F84BF88E10FB6F894A0
+:1014F00080936000109260000FBE90E080E80FB60D
+:10150000F89480936100909361000FBE0E943310A5
+:101510000E94C80C0E94250D8091E2008460809397
+:10152000E20078940E94C20F0E94351081E091E0A1
+:101530000E94DF0F0BC00E94DD1B8091E501882314
+:1015400029F00E94081C81110E94120B8091E70172
+:10155000853089F30E943F10F9CF292F332723309C
+:101560003105B1F04CF42130310509F44DC0223081
+:10157000310509F04EC007C02132310541F1223258
+:10158000310591F146C0E4E7F0E082E693E045C022
+:1015900099278130910569F08230910589F0892B76
+:1015A00009F037C0EEE5F3E0E491F0E08EE593E07A
+:1015B00034C0E0E3F3E0E491F0E080E393E02DC099
+:1015C000E4E0F3E0E491F0E084E093E026C06430EE
+:1015D00000F5E62FF0E0EE0FFF1FEA5CFE4F808182
+:1015E0009181E9E0F0E019C0643098F4E62FF0E072
+:1015F000DF01AA0FBB1FA25CBE4F8D919C91EA5BDD
+:10160000FE4FE081F0E009C0E2E1F0E086ED93E01A
+:1016100004C0E0E0F0E080E090E0DA018D939C937C
+:10162000CF01089580E189BD82E189BD09B400FE42
+:10163000FDCF8091D8008F7D8093D8008091E0000D
+:1016400082608093E0008091E00081FDFCCF0895EE
+:10165000BF92CF92DF92EF92FF920F931F93CF939F
+:10166000DF937C018B01EA010E94960CB82E811158
+:1016700033C0209731F028813981021B130BE20E11
+:10168000F31EC12CD12C23C08091E80085FD15C02C
+:101690008091E8008E778093E800209749F0888158
+:1016A00099818C0D9D1D9983888325E0B22E14C0ED
+:1016B0000E94960C882359F00EC0F70181917F019A
+:1016C0008093F10001501109FFEFCF1ADF0A0115D5
+:1016D0001105D1F601C0B82E8B2DDF91CF911F914E
+:1016E0000F91FF90EF90DF90CF90BF9008954091C1
+:1016F000EE015091EF014617570748F0611571054B
+:1017000039F44091E8004E774093E80001C0BA01F7
+:10171000FC0140E033C08091E701882309F444C014
+:10172000853009F443C08091E80083FD41C0809179
+:10173000E80082FD33C08091E80080FF1FC09091D7
+:10174000F3008091F200392F20E0A901482BCA0153
+:1017500006C041914093F1006150710901966115F5
+:10176000710519F088309105A0F341E0089709F060
+:1017700040E08091E8008E778093E8006115710564
+:1017800051F64111C8CF0AC08091E701882361F06A
+:10179000853061F08091E80083FD0AC08091E80007
+:1017A00082FFF2CF80E0089582E0089583E00895FB
+:1017B00081E008954091EE015091EF0146175707DF
+:1017C00048F06115710539F44091E8004E77409377
+:1017D000E80001C0BA01FC0140E034C08091E7019B
+:1017E000882309F445C0853009F444C08091E8009D
+:1017F00083FD42C08091E80082FD34C08091E80002
+:1018000080FF20C09091F3008091F200392F20E0FA
+:10181000A901482BCA0107C044914093F1003196B9
+:101820006150710901966115710519F088309105B3
+:1018300098F341E0089709F040E08091E8008E7746
+:101840008093E8006115710549F64111C7CF0AC0C0
+:101850008091E701882361F0853061F08091E80094
+:1018600083FD0AC08091E80082FFF2CF80E00895F6
+:1018700082E0089583E0089581E00895982F2CC0B8
+:101880009093E900981739F07091EC002091ED00E9
+:101890005091F00003C0242F762F50E021FD02C0AC
+:1018A0009F5F1AC03091EB003E7F3093EB00309188
+:1018B000ED003D7F3093ED003091EB0031603093CF
+:1018C000EB007093EC002093ED005093F00020911A
+:1018D000EE0027FDE5CF07C0973090F28F70809320
+:1018E000E90081E0089580E008958091E80187FD96
+:1018F00005C08091E80080FF0EC012C08091E80012
+:1019000082FD05C08091E7018111F8CF0895809193
+:10191000E8008B7708C08091E7018111EACF089534
+:101920008091E8008E778093E80008958091E4002C
+:101930009091E50045E62091EC0020FD1FC023C0FA
+:101940002091E701222391F0253091F02091EB00C6
+:1019500025FD10C02091E4003091E50028173907DB
+:1019600051F34150C90139F784E0089582E00895A8
+:1019700083E0089581E0089580E008952091E800D3
+:1019800020FFDECFF9CF2091E80022FFD9CFF4CF9E
+:101990000E94360D0E943E0DE0EEF0E080818160F5
+:1019A0008083E8EDF0E080818F77808319BCA7ED1C
+:1019B000B0E08C918E7F8C9380818F7E808310929B
+:1019C000E60108950F931F93CF93DF930E94360D86
+:1019D0000E943E0DC8EDD0E088818F778883888192
+:1019E0008068888388818F7D888319BC1092E70185
+:1019F0001092E3011092E5011092E40100EE10E074
+:101A0000F80180818B7F808388818160888342E0B8
+:101A100060E080E00E943E0CE1EEF0E080818E7F8D
+:101A20008083E2EEF0E08081816080838081886045
+:101A30008083F80180818E7F8083888180618883A4
+:101A4000DF91CF911F910F910895E8EDF0E0808133
+:101A50008F7E8083E7EDF0E080818160808384E089
+:101A600082BF81E08093E6010C94E20CE8EDF0E0A7
+:101A700080818E7F80831092E20008951092DA00B8
+:101A80001092E10008951F920F920FB60F92112449
+:101A90002F933F934F935F936F937F938F939F9376
+:101AA000AF93BF93EF93FF938091E10082FF0BC050
+:101AB0008091E20082FF07C08091E1008B7F8093DC
+:101AC000E1000E946D098091DA0080FF1FC08091C3
+:101AD000D80080FF1BC08091DA008E7F8093DA00EF
+:101AE0008091D90080FF0DC080E189BD82E189BD70
+:101AF00009B400FEFDCF81E08093E7010E94580900
+:101B000005C019BC1092E7010E9466098091E100AE
+:101B100080FF19C08091E20080FF15C08091E20033
+:101B20008E7F8093E2008091E20080618093E200EA
+:101B30008091D80080628093D80019BC85E08093A2
+:101B4000E7010E946A098091E10084FF30C0809122
+:101B5000E20084FF2CC080E189BD82E189BD09B427
+:101B600000FEFDCF8091D8008F7D8093D8008091BA
+:101B7000E1008F7E8093E1008091E2008F7E809370
+:101B8000E2008091E20081608093E2008091E301B5
+:101B9000882311F084E007C08091E30087FF02C032
+:101BA00083E001C081E08093E7010E946B0980918E
+:101BB000E10083FF29C08091E20083FF25C080916E
+:101BC000E100877F8093E10082E08093E70110923B
+:101BD000E3018091E1008E7F8093E1008091E2003B
+:101BE0008E7F8093E2008091E20080618093E2002A
+:101BF00042E060E080E00E943E0C8091F00088604E
+:101C00008093F0000E946909FF91EF91BF91AF911D
+:101C10009F918F917F916F915F914F913F912F9104
+:101C20000F900FBE0F901F9018951F920F920FB636
+:101C30000F9211242F933F934F935F936F937F9352
+:101C40008F939F93AF93BF93CF93EF93FF93809125
+:101C5000E9008F709091EC0090FF02C090E801C005
+:101C600090E0C92FC82B1092E9008091F000877F87
+:101C70008093F00078940E94590E1092E9008091B0
+:101C8000F00088608093F000CF70C093E900FF916E
+:101C9000EF91CF91BF91AF919F918F917F916F9174
+:101CA0005F914F913F912F910F900FBE0F901F901A
+:101CB00018951F93CF93DF93CDB7DEB7AC970FB6D0
+:101CC000F894DEBF0FBECDBFE8EEF1E08091F100E9
+:101CD000819321E0E03FF207C9F70E94C10980919A
+:101CE000E80083FF37C18091E8019091E9019530C8
+:101CF00009F488C038F49130B1F170F0933009F0F4
+:101D000029C131C0983009F4F8C0993009F404C1F0
+:101D1000963009F01FC19DC0803821F0823809F04B
+:101D200019C108C08091E4019091E501992389F0DF
+:101D300082600FC08091EC019091ED018F70992726
+:101D40008093E9008091EB0085FB882780F9109251
+:101D5000E9009091E800977F9093E8008093F1006C
+:101D60001092F100D5C0882319F0823009F0F2C03A
+:101D70008F7121F0823009F0EDC00BC08091EA0133
+:101D8000813009F0E7C0933009F080E08093E501ED
+:101D90002FC08091EA0181112BC08091EC019091BC
+:101DA000ED018F709927009709F4D4C08093E90062
+:101DB0002091EB0020FF1CC02091E901233021F489
+:101DC0008091EB00806212C09091EB009061909343
+:101DD000EB0021E030E001C0220F8A95EAF7209362
+:101DE000EA001092EA008091EB0088608093EB009B
+:101DF0001092E9008091E800877F8093E8000E94BC
+:101E0000750CA8C08111A6C08091EA019091EB01E8
+:101E10008F779927182F9091E3009078982B9093C3
+:101E2000E3008091E800877F8093E8000E94750CB2
+:101E30008091E80080FFFCCF8091E3008068809370
+:101E4000E300112311F083E001C082E08093E701F9
+:101E500081C08058823008F07DC08091EA01909165
+:101E6000EB018C3D23E0920779F583E08A838AE2D7
+:101E700089834FB7F894DE01139620E03EE051E2EB
+:101E8000E32FF0E050935700E49120FF03C0E29568
+:101E9000EF703F5FEF708E2F90E0EA3010F0C79642
+:101EA00001C0C0968D939D932F5F243149F74FBF9A
+:101EB0008091E800877F8093E8006AE270E0CE01BD
+:101EC00001960E94770B13C0AE01455D5F4F609194
+:101ED000EC010E94AD0A0097E9F12091E800277F0C
+:101EE0002093E800BC018BA59CA50E94DA0B809191
+:101EF000E8008B778093E8002DC0803859F58091F9
+:101F0000E800877F8093E8008091E3018093F100EF
+:101F10008091E8008E7771CF81111CC09091EA0109
+:101F20009230C0F48091E800877F8093E80090931E
+:101F3000E3010E94750C8091E301811104C080913E
+:101F4000E30087FF02C084E001C081E08093E701E5
+:101F50000E94AD098091E80083FF0AC08091E800EB
+:101F6000877F8093E8008091EB0080628093EB0094
+:101F7000AC960FB6F894DEBF0FBECDBFDF91CF9108
+:101F80001F910895CF938091E7018823B1F080914C
+:101F9000E9008F709091EC0090FF02C090E801C0C2
+:101FA00090E0C92FC82B1092E9008091E80083FDD2
+:101FB0000E94590ECF70C093E900CF91089590937D
+:101FC0007501809374010895E0917401F091750199
+:101FD000309721F00190F081E02D099480E0089580
+:101FE000E0917401F0917501309721F00280F38146
+:101FF000E02D09940895E0917401F09175013097F6
+:1020000021F00480F581E02D099408952091760156
+:10201000309177018217930771F090937701809345
+:102020007601E0917401F0917501309721F00680FE
+:10203000F781E02D0994089520917801309179017C
+:102040008217930771F09093790180937801E09162
+:102050007401F0917501309721F00084F185E02D35
+:102060000994089508950C9432100E94541C0E9403
+:1020700028060E94281D0C94D0220C9462055F92C1
+:102080006F927F928F929F92AF92BF92CF92DF9288
+:10209000EF92FF920F931F93CF93DF93CDB7DEB7ED
+:1020A0002A970FB6F894DEBF0FBECDBF0E94380747
+:1020B0009AE7C92E91E0D92E00E010E0AA24A3945B
+:1020C000B12C502E802F0E948C083C01F601E1902B
+:1020D000F1906F01E826F926E114F10431F40F5F65
+:1020E0001F4F0530110569F73AC08091D00181FD7D
+:1020F0000E94950820E030E04501022E02C0880CC5
+:10210000991C0A94E2F7C4018E219F21892B09F1C1
+:102110002E835F826820792081E0672809F480E0BF
+:1021200088870E945D1C8160782F9A8789874E81FD
+:102130005F8168858A850E94F810F801EE0FFF1F05
+:10214000E658FE4F8081918188259925918380836F
+:1021500016C02F5F3F4F2C30310571F6C0CF8FEF87
+:1021600089838A831B820E945D1C8160782F9D83F6
+:102170008C8349815A816B818D810E94F8100E9465
+:102180001520109184010E94E40F1817D9F00E94C5
+:10219000E40F809384012A960FB6F894DEBF0FBE39
+:1021A000CDBFDF91CF911F910F91FF90EF90DF9006
+:1021B000CF90BF90AF909F908F907F906F905F90E7
+:1021C0000C943D102A960FB6F894DEBF0FBECDBF1B
+:1021D000DF91CF911F910F91FF90EF90DF90CF9003
+:1021E000BF90AF909F908F907F906F905F90089579
+:1021F000CF93DF93CDB7DEB72B970FB6F894DEBF42
+:102200000FBECDBF4F83588769877A878B87DE01E2
+:10221000119686E0FD0111928A95E9F785E0FE01AD
+:10222000379601900D928A95E1F749815A816B8129
+:102230007C818D819E810E94D4182B960FB6F894D4
+:10224000DEBF0FBECDBFDF91CF910895CF93C82FD2
+:10225000882309F4C1C0823859F40E94E40F81FD3B
+:10226000BBC089E30E943B1B0E94B71B89E30CC0E3
+:10227000833879F40E94E40F80FDAEC083E50E94AC
+:102280003B1B0E94B71B83E50E945D1BCF910C9402
+:10229000B71B843859F40E94E40F82FD9DC087E487
+:1022A0000E943B1B0E94B71B87E4EECF8450813A0B
+:1022B00048F48C2F0E94322281118EC08C2F0E94F4
+:1022C0003B1BE4CF8C2F805E883050F4C77081E0D8
+:1022D00090E001C0880FCA95EAF70E947E1BD6CF16
+:1022E0008C2F855A833078F4C53A29F0C63A31F4F8
+:1022F00082E890E005C081E890E002C083E890E0C9
+:10230000CF910C9406108C2F885A833108F064C04A
+:10231000C83A39F1C93A41F1CA3A49F1CB3A51F1D7
+:10232000CC3A59F1CD3A61F1C03B69F1CE3A71F145
+:10233000CF3A79F1C13B81F1C23B89F1C33B91F1C5
+:10234000C43B99F1C53BA1F1C63BA9F1C73BB1F133
+:10235000C83BB9F1C93BC1F1CA3BC9F58AE292E079
+:1023600038C082EE90E035C089EE90E032C08AEE4F
+:1023700090E02FC085EB90E02CC086EB90E029C068
+:1023800087EB90E026C08CEC90E023C08DEC90E0D1
+:1023900020C083E891E01DC08AE891E01AC082E97C
+:1023A00091E017C084E991E014C081E292E011C08D
+:1023B00083E292E00EC084E292E00BC085E292E0FC
+:1023C00008C086E292E005C087E292E002C080E0A9
+:1023D00090E0CF910C941C10CF910895882309F4BC
+:1023E0004DC0823859F40E94E40F81FF47C089E351
+:1023F0000E943B1B0E94B71B89E30CC0833871F419
+:102400000E94E40F80FF3AC083E50E943B1B0E94BC
+:10241000B71B83E50E945D1B0C94B71B843859F4ED
+:102420000E94E40F82FF2AC087E40E943B1B0E94A7
+:10243000B71B87E4EFCF982F9450913A08F4EACF76
+:10244000982F905E983058F4282F277081E090E004
+:1024500001C0880F2A95EAF70E94841BDDCF982FD0
+:10246000955A933020F480E090E00C940610885A3E
+:10247000833120F480E090E00C941C1008958823B0
+:1024800021F00E947E1B0C94B71B0895882321F035
+:102490000E94841B0C94B71B0895BF92CF92DF92C9
+:1024A000EF92FF920F931F93CF93DF93CDB7DEB7D9
+:1024B00027970FB6F894DEBF0FBECDBF8C0185E025
+:1024C000F801DE01119601900D928A95E1F7F8016D
+:1024D00030812181F280558152955F708381948192
+:1024E000892B39F02F3F41F481E090E03F3F31F0FC
+:1024F00003C081E090E002C080E090E080FD73C303
+:1025000039832A8389819A815E830E94F81AB92EC1
+:102510008F830E94F71A0E941F1A2B2D22952F706D
+:1025200030E05E816F812530310509F4E6C06CF43E
+:10253000243031050CF0A2C04B2D407F8B2D8F70C5
+:10254000223031050CF045C017C02C3031054CF459
+:102550002A3031050CF0E7C12830310509F043C3BA
+:10256000E5C02D30310509F4BAC20CF4A2C22F30F7
+:10257000310509F038C323C3182F411101C002C02F
+:102580001295107FFF2059F0112309F46BC2812F9F
+:102590006F830E948E1B0E94B71B6F8163C2862FC0
+:1025A0000E94EE11112309F41EC3812F0E94941B77
+:1025B00027960FB6F894DEBF0FBECDBFDF91CF9147
+:1025C0001F910F91FF90EF90DF90CF90BF900C94F0
+:1025D000B71B403211F08295807F662319F061307D
+:1025E00071F523C0FF20B1F0511101C032C051304C
+:1025F00081F527960FB6F894DEBF0FBECDBFDF91F1
+:10260000CF911F910F91FF90EF90DF90CF90BF90EF
+:102610000C949E1B511101C003C0513009F4E3C258
+:102620008E830E94A11B8E819AC1FF2021F056301B
+:1026300008F0D9C20EC0553008F0D5C290C1FF20B5
+:10264000C9F0552331F0F801958190FF0BC29F70BE
+:10265000958327960FB6F894DEBF0FBECDBFDF91EE
+:10266000CF911F910F91FF90EF90DF90CF90BF908F
+:102670000C943F12552309F472C109C22B2D2695E3
+:102680002695237030E02115310529F021303105E0
+:1026900009F0A9C219C0FF2021F0862F9B2D93704D
+:1026A00002C080E090E027960FB6F894DEBF0FBE20
+:1026B000CDBFDF91CF911F910F91FF90EF90DF90F1
+:1026C000CF90BF900C940610FF2021F0862F9B2DF9
+:1026D000937002C080E090E027960FB6F894DEBFBA
+:1026E0000FBECDBFDF91CF911F910F91FF90EF9063
+:1026F000DF90CF90BF900C941C10862FFF2019F014
+:102700000E941B1F02C00E94831F27960FB6F894D9
+:10271000DEBF0FBECDBFDF91CF911F910F91FF9014
+:10272000EF90DF90CF90BF900C940A208B2D837098
+:1027300009F079C0F11057C2262F229526952770EF
+:10274000220F220F862F8F70C82ED12CE12CF12C56
+:10275000022E04C0CC0CDD1CEE1CFF1C0A94D2F728
+:1027600064FF10C06FE070E080E090E004C0660F8E
+:10277000771F881F991F2A95D2F7609570958095CD
+:10278000909503C060E070E0CB012B2D2695269537
+:102790002370422F50E042305105D9F043305105AB
+:1027A00069F16C297D298E299F294130510551F10C
+:1027B00027960FB6F894DEBF0FBECDBFDF91CF9145
+:1027C0001F910F91FF90EF90DF90CF90BF900C94EE
+:1027D000341A6C297D298E299F2927960FB6F894E3
+:1027E000DEBF0FBECDBFDF91CF911F910F91FF9044
+:1027F000EF90DF90CF90BF900C94461A0E94341A4D
+:10280000C701B60127960FB6F894DEBF0FBECDBF45
+:10281000DF91CF911F910F91FF90EF90DF90CF90BC
+:10282000BF900C94221AFF2019F08B2D817001C0EB
+:102830008695882309F4D7C1262F229526952770DF
+:10284000220F220F862F8F70C82ED12CE12CF12C55
+:10285000022E04C0CC0CDD1CEE1CFF1C0A94D2F727
+:1028600064FF10C06FE070E080E090E004C0660F8D
+:10287000771F881F991F2A95D2F7609570958095CC
+:10288000909503C060E070E0CB012B2D2695269536
+:102890002370422F50E042305105D9F043305105AA
+:1028A00069F16C297D298E299F294130510551F10B
+:1028B00027960FB6F894DEBF0FBECDBFDF91CF9144
+:1028C0001F910F91FF90EF90DF90CF90BF900C94ED
+:1028D000D31A6C297D298E299F2927960FB6F89443
+:1028E000DEBF0FBECDBFDF91CF911F910F91FF9043
+:1028F000EF90DF90CF90BF900C94E51A0E94D31A0E
+:10290000C701B60127960FB6F894DEBF0FBECDBF44
+:10291000DF91CF911F910F91FF90EF90DF90CF90BB
+:10292000BF900C94C11A603F59F120F4603E08F446
+:1029300094C008C0623F09F467C0F0F1633F09F03A
+:102940008CC065C0162F1F708B2D8F71FF2021F05A
+:102950000E946C1A812F7DCE0E94871A812F2796A4
+:102960000FB6F894DEBF0FBECDBFDF91CF911F91A0
+:102970000F91FF90EF90DF90CF90BF900C94461294
+:10298000FF20B1F0553008F02EC18B2D8F712796A6
+:102990000FB6F894DEBF0FBECDBFDF91CF911F9170
+:1029A0000F91FF90EF90DF90CF90BF900C94A61AFC
+:1029B000563008F018C1E9CFFF2099F08B2D8F71A8
+:1029C00027960FB6F894DEBF0FBECDBFDF91CF9133
+:1029D0001F910F91FF90EF90DF90CF90BF900C94DC
+:1029E0006C1A8B2D8F7127960FB6F894DEBF0FBE31
+:1029F000CDBFDF91CF911F910F91FF90EF90DF90AE
+:102A0000CF90BF900C94871AF110EBCFD7CFFF2057
+:102A100099F08B2D8F7127960FB6F894DEBF0FBEFD
+:102A2000CDBFDF91CF911F910F91FF90EF90DF907D
+:102A3000CF90BF900C945D1A27960FB6F894DEBF26
+:102A40000FBECDBFDF91CF911F910F91FF90EF90FF
+:102A5000DF90CF90BF900C94581AFF20A9F0552317
+:102A600009F4ACCF862F27960FB6F894DEBF0FBEC1
+:102A7000CDBFDF91CF911F910F91FF90EF90DF902D
+:102A8000CF90BF900C942611552309F4AACF862F1E
+:102A900027960FB6F894DEBF0FBECDBFDF91CF9162
+:102AA0001F910F91FF90EF90DF90CF90BF900C940B
+:102AB000EE114B2D4F70C8010E94AB0227960FB646
+:102AC000F894DEBF0FBECDBFDF91CF911F910F9164
+:102AD000FF90EF90DF90CF90BF900C948A19F11087
+:102AE00082C09B2D9F70492F50E04230510599F1D3
+:102AF00044F44115510569F04130510509F073C0A6
+:102B000019C043305105C1F14430510509F06BC083
+:102B100044C027960FB6F894DEBF0FBECDBFDF913D
+:102B2000CF911F910F91FF90EF90DF90CF90BF90CA
+:102B30000C94E12227960FB6F894DEBF0FBECDBFEE
+:102B4000DF91CF911F910F91FF90EF90DF90CF9089
+:102B5000BF900C94F82227960FB6F894DEBF0FBEF4
+:102B6000CDBFDF91CF911F910F91FF90EF90DF903C
+:102B7000CF90BF900C94142327960FB6F894DEBF25
+:102B80000FBECDBFDF91CF911F910F91FF90EF90BE
+:102B9000DF90CF90BF900C942723862F27960FB6F7
+:102BA000F894DEBF0FBECDBFDF91CF911F910F9183
+:102BB000FF90EF90DF90CF90BF900C944B234B2D64
+:102BC0004F70C80127960FB6F894DEBF0FBECDBF79
+:102BD000DF91CF911F910F91FF90EF90DF90CF90F9
+:102BE000BF900C94D40327960FB6F894DEBF0FBEA7
+:102BF000CDBFDF91CF911F910F91FF90EF90DF90AC
+:102C0000CF90BF9008950E949B1B0E94701B0E9452
+:102C1000B71B0E94B6200E940A2080E090E00E942C
+:102C2000061080E090E00C941C100E948B1B0C940A
+:102C300003160E94F81A292F22952F7030E02C30AD
+:102C400031054CF42A3031056CF422503109223020
+:102C5000310590F407C02C30310551F02F3031058B
+:102C600059F406C0803E10F0803F31F481E00895B1
+:102C700093FB882780F9089580E00895CF93DF9330
+:102C800000D000D01F92CDB7DEB70F900F900F90FD
+:102C90000F900F90DF91CF910895CF93DF9300D0E5
+:102CA00000D000D0CDB7DEB726960FB6F894DEBFC1
+:102CB0000FBECDBFDF91CF9108951F93CF93DF93C8
+:102CC000C091BB0116E012C0D0E01C9FF0011D9F17
+:102CD000F00D1124E557FE4F4081518162817381CF
+:102CE000848195810E944D162196C7708091BC0108
+:102CF000C813EACFDF91CF911F91089540918501CC
+:102D000050918601609187017091880180918901BD
+:102D100090918A010C944D160F931F93CF93DF93DC
+:102D200080918A0182958F7009F069C08091870136
+:102D3000882309F464C0A091BB01D091BC01B0917B
+:102D40008501C0918601809188019091890121E0DF
+:102D500030E0BF3F11F020E030E0122FBC01609561
+:102D6000709506E04AC0009721F0CF3F29F4212F4B
+:102D700005C021E030E002C020E030E020FD3BC093
+:102D80004A2F50E0049FF001059FF00D1124E557F4
+:102D9000FE4F2181C2132FC02081B2132CC022818B
+:102DA000211129C0238134812817390718F0281BE5
+:102DB000390B02C0260F371F283C3105E0F4809103
+:102DC0008A018F70806180938A0186E0849FF00180
+:102DD000859FF00D1124E057FE4F80818F70806138
+:102DE000808385E891E00E944D12DF91CF911F9181
+:102DF0000F910C945D16AF5FA770AD13B4CFDF9148
+:102E0000CF911F910F910895EF92FF920F931F930F
+:102E1000CF93DF93CDB7DEB762970FB6F894DEBFDE
+:102E20000FBECDBF8C0185E0F801DE011D9601903B
+:102E30000D928A95E1F7D8014C9111965C9111970A
+:102E400012966C9112971396ED90FC9014977091D6
+:102E50008501E09186018091880190918901009718
+:102E600039F0EF3F41F421E030E07F3F31F003C023
+:102E700021E030E002C020E030E020FD5CC1209184
+:102E80008701222309F4F1C0E816F90628F097011A
+:102E9000281B390BC90104C0809590958E0D9F1D8C
+:102EA000883C910508F098C080918A01982F907F06
+:102EB00009F064C0E51314C0741312C0611110C08E
+:102EC0008F70806180938A010E947E1685E891E070
+:102ED0000E944D1280918A01D80115968C9343C1AE
+:102EE000EF2839F05F3F41F481E090E04F3F31F04F
+:102EF00003C081E090E002C080E090E080FD03C06C
+:102F000081E0862702C080E090E080FF2EC08091A3
+:102F1000BB012091BC0136E013C090E0389FF00166
+:102F2000399FF00D1124E557FE4F7181571306C0EC
+:102F30007081471303C07281671317C001968770B1
+:102F40008213EBCF12C19F7059F0882309F40BC193
+:102F500007C09F7029F0F8019581907F09F403C1A3
+:102F6000805E883008F4FFC0D2C0662309F4FBC03D
+:102F700080918A01816080938A01F5C0E51308C0C1
+:102F8000741306C0611104C0D80115968C939DC0BE
+:102F90004D875E878D859E856A8B0E9419166A898A
+:102FA000882309F4B4C0662309F4B1C020918A01D2
+:102FB000822F82958F7090E002970CF4C6C08091AA
+:102FC00085019091860198878F831986FB86EA8612
+:102FD0002C87CE01079646C080918A01982F907F5A
+:102FE00059F47E2DF98AE88A89890E943E1685E87F
+:102FF00091E00E944D1295C0E51311C074130FC0EB
+:1030000061110DC0F8018583C8010E944D12E5E8E9
+:10301000F1E086E0DF011D928A95E9F7A2C04D87B5
+:103020005E878D859E856A8B0E9419166A89882322
+:1030300009F46DC0662309F46AC020918A01822FC9
+:1030400082958F7090E002970CF47FC0809185018B
+:10305000909186019A8389831B82FD82EC822E8364
+:10306000CE0101960E944D1270C0E816F90628F0B4
+:103070009701281B390BC90104C0809590958E0DCE
+:103080009F1D883C910508F046C0662309F43FC0A7
+:10309000E51330C074132EC020918A0120FD21C099
+:1030A000322F32953F70832F90E00097D1F0D801F6
+:1030B00015962C9315970F9741F0832F8F5F82956C
+:1030C000807F2F70282B15962C93C8010E944D12DB
+:1030D00086E0F801A5E8B1E001900D928A95E1F74C
+:1030E0003EC086E0F801A5E8B1E001900D928A9516
+:1030F000E1F737C04D875E878D859E850E94191642
+:10310000811123C080918A01816080938A01C80166
+:103110000E944D1226C07E2DF98AE88A89890E9474
+:103120003E16E5E8F1E086E0DF011D928A95E9F7B9
+:103130000E947E1618C0662351F34D875E878D85E9
+:103140009E850E941916882311F386E0F801A5E8F0
+:10315000B1E001900D928A95E1F70E948C160E94D1
+:103160007E1681E014C080E012C04D875E878D8599
+:103170009E850E94F81A292F22952F7030E0223068
+:1031800031050CF4E0CE243031050CF6E2CE629627
+:103190000FB6F894DEBF0FBECDBFDF91CF911F9168
+:1031A0000F91FF90EF9008951F93CF93DF93CDB7CA
+:1031B000DEB72C970FB6F894DEBF0FBECDBF4F839E
+:1031C000588769877A878B879C87CE0107960E94EC
+:1031D00004178823D9F02F8138858A859B85892B10
+:1031E00039F03F3F19F080E090E004C02F3FD9F75D
+:1031F00081E090E0892B09F06DC04F815885698589
+:103200007A858B859C850E944D1664C086E0FE0100
+:103210003796DE01119601900D928A95E1F7FF81B4
+:10322000E8854A855B854115510539F0EF3F41F44A
+:1032300081E090E0FF3F31F003C081E090E002C008
+:1032400080E090E080FD46C02091BC0130E0C901E3
+:103250000196877099276091BB0170E086179707E8
+:1032600009F440C0F983EA835D834C8396E0929F22
+:10327000D001939FB00D1124A557BE4FFE0131968A
+:1032800001900D929A95E1F78093BC010E945D1622
+:1032900021C0189FC001112485579E4F0E9404171A
+:1032A000882371F1E091BB011E9FF0011124E557C5
+:1032B000FE4F4081518162817381848195810E949A
+:1032C0004D168091BB0190E00196877099278093FD
+:1032D000BB0101C016E08091BB019091BC01891334
+:1032E000D8CF0EC00E9415161092BC011092BB01DF
+:1032F000E5E8F1E086E0DF011D928A95E9F7EACF83
+:103300002C960FB6F894DEBF0FBECDBFDF91CF91E4
+:103310001F910895DF92EF92FF920F931F93CF9327
+:10332000DF93EC01009709F46EC0D12CEE24E394F6
+:10333000F12C8E010F5F1F4FFE018491843748F4FA
+:10334000843008F04CC0813071F0823009F05BC0ED
+:103350001EC0853709F43FC080F1982F94589037EC
+:1033600008F051C03FC02296F8018491982F905EDA
+:10337000983050F48770FE2D01C0FF0F8A95EAF750
+:103380008F2F0E948E1B13C00E9426112FC02296E1
+:10339000F8018491982F905E983060F48770FE2D2C
+:1033A00001C0FF0F8A95EAF78F2F0E94941B0E949D
+:1033B000B71B1CC00E94EE1119C02296F80104919F
+:1033C00007C08FE99FE00197F1F700C000000150AE
+:1033D0000111F7CF0BC02296F801D49007C00E94CC
+:1033E000261103C08F770E94EE11E8018D2D07C0D2
+:1033F0008150EFE9FFE03197F1F700C0000088232A
+:1034000009F497CFF5CFDF91CF911F910F91FF90E6
+:10341000EF90DF9008956093C1017093C201809393
+:10342000C3019093C4010C9403166093BD01709383
+:10343000BE018093BF019093C0010C9403160895C0
+:103440000C940B1A0F931F930091C1011091C201AC
+:103450002091C3013091C401602B712B822B932BDF
+:103460001F910F910C940B1A0F931F930091C101A0
+:103470001091C2012091C3013091C40160237123D6
+:10348000822393231F910F910C940B1A0F931F9378
+:103490000091C1011091C2012091C3013091C4017A
+:1034A00060277127822793271F910F910C940B1A85
+:1034B00060E070E0CB010C94151A41E050E060E050
+:1034C00070E004C0440F551F661F771F8A95D2F71E
+:1034D000CB01BA010C94151A41E050E060E070E0B5
+:1034E00004C0440F551F661F771F8A95D2F780913D
+:1034F000BD019091BE01A091BF01B091C001482BC8
+:10350000592B6A2B7B2BCB01BA010C94151A41E085
+:1035100050E060E070E004C0440F551F661F771F45
+:103520008A95D2F740955095609570958091BD0130
+:103530009091BE01A091BF01B091C00148235923D1
+:103540006A237B23CB01BA010C94151A41E050E0A9
+:1035500060E070E004C0440F551F661F771F8A9516
+:10356000D2F78091BD019091BE01A091BF01B091B1
+:10357000C001482759276A277B27CB01BA010C9441
+:10358000151A0F931F930091BD011091BE01209158
+:10359000BF013091C001602B712B822B932B1F91A7
+:1035A0000F910C94151A0F931F930091BD01109168
+:1035B000BE012091BF013091C0016023712382239D
+:1035C00093231F910F910C94151A0F931F93009141
+:1035D000BD011091BE012091BF013091C001602753
+:1035E0007127822793271F910F910C94151A089524
+:1035F000CF92DF92EF92FF920F931F93CF93DF93BF
+:10360000EC01C090C101D090C201E090C301F090E4
+:10361000C4018091BD019091BE01A091BF01B09104
+:10362000C001C82AD92AEA2AFB2A0FE110E0B70113
+:10363000A601002E04C076956795579547950A9484
+:10364000D2F740FF08C0BE01802F0E94FA038130EC
+:10365000910509F007C00150110948F7BE0180E04B
+:103660000E94FA03DF91CF911F910F91FF90EF908D
+:10367000DF90CF90089540910C0150910D0120E012
+:1036800030E09FEFFA01E20FF31F62816817A1F0AB
+:103690009F3F19F4611101C0922F2F5F3F4F2630D9
+:1036A000310581F707C0FA01E90FF11D97FDFA9581
+:1036B000828308959F3FB9F7089540910C0150917E
+:1036C0000D0120E030E0FA01E20FF31F9281981320
+:1036D00001C012822F5F3F4F26303105A1F70895B8
+:1036E00081E090E0E0910C01F0910D01E80FF91FED
+:1036F0001082019688309105A9F708959091C5012F
+:10370000982B9093C501089580959091C5019823B9
+:103710009093C50108951092C50108959091C60136
+:10372000982B9093C601089580959091C601982397
+:103730009093C60108951092C60108958093C70121
+:1037400008951092C701089540910C0150910D0108
+:1037500020E030E080E0FA01E20FF31F9181911147
+:103760008F5F2F5F3F4F27303105A9F70895E09114
+:103770000C01F0910D018091C5018083E0910C0155
+:10378000F0910D0180819091C601892B80839091E9
+:10379000C701992361F0E0910C01F0910D01808146
+:1037A000892B80830E94A41B81110E94A11B809100
+:1037B0000C0190910D010C94F00F8091E701843081
+:1037C00021F11092D10120E488E190E00FB6F89445
+:1037D000A895809360000FBE2093600080E00E9457
+:1037E000E10283B7817F846083BF83B7816083BF39
+:1037F0007894889583B78E7F83BF88E10FB6F8945D
+:1038000080936000109260000FBE0895089508959F
+:10381000CF9380E00E94E1020E94061C0E943807BC
+:103820000E94071CC0E08C2F0E948C08892B29F471
+:10383000CF5FC530C1F780E001C081E0CF9108952E
+:103840000E94151680E00E94E1020E94D0220E9490
+:10385000E40F0C9462051F920F920FB60F92112481
+:103860008F939F93AF93BF938091D101811113C028
+:103870008091D2019091D301A091D401B091D50152
+:103880004196A11DB11D8093D2019093D301A093C5
+:10389000D401B093D501BF91AF919F918F910F90BB
+:1038A0000FBE0F901F90189582E084BD93E095BDE8
+:1038B0009AEF97BD80936E0008958FB7F89440916A
+:1038C000D2015091D3016091D4017091D5018FBF85
+:1038D000CA010895CF92DF92EF92FF920F931F9348
+:1038E0002FB7F8944091D2015091D3016091D40147
+:1038F0007091D5012FBF6A017B01EE24FF248C015A
+:1039000020E030E0C016D106E206F30620F09A016E
+:10391000281B390B05C09C0120953095240F351FBD
+:10392000C9011F910F91FF90EF90DF90CF90089504
+:103930001F920F920FB60F9211248F939F93AF9304
+:10394000BF938091D2019091D301A091D401B09105
+:10395000D5010196A11DB11D8093D2019093D30191
+:10396000A093D401B093D501BF91AF919F918F9156
+:103970000F900FBE0F901F9018950E94C80CF894DE
+:103980002FEF87EA91E6215080409040E1F700C098
+:10399000000087E090EBDC018093F1019093F2014D
+:1039A000A093F301B093F4012CE088E190E00FB60E
+:1039B000F894A895809360000FBE20936000FFCF1D
+:1039C000CF92DF92EF92FF920F931F93CF93DF93EB
+:1039D000C82ED12C01E010E08D2D0E948C087C01B6
+:1039E000C0E0D0E098010C2E02C0220F331F0A94D1
+:1039F000E2F72E213F21232B29F42196CC30D1054B
+:103A000089F708C06C2F7D2D80E00E94D503C81275
+:103A1000F4CF06C0D39485E0D812DECF80E001C099
+:103A200081E0DF91CF911F910F91FF90EF90DF9098
+:103A3000CF900895CF93C82F8CE20E94E01C88237A
+:103A400021F08C2FCF910C94E01C80E0CF91089551
+:103A5000CF930E946B1E811102C00E944C1EC5E6CE
+:103A600008C00E9438078FE39CE90197F1F700C076
+:103A70000000C150B1F789E20E941A1D81110AC1EC
+:103A80008AE20E941A1D81110E944C1E85E00E944C
+:103A90001A1D81110E94BD1C0E94761E8093D001C8
+:103AA00087E00E941A1D882399F18BE10E941A1D5C
+:103AB000882351F09091D00191FB882780F921E073
+:103AC000822780FB91F922C08EE00E941A1D882374
+:103AD00051F09091D00192FB882780F921E0822754
+:103AE00080FB92F913C080E10E941A1D9091D001D1
+:103AF000882341F093FB882780F921E0822780FB0F
+:103B000093F904C0892F809580FB90F99093D001A0
+:103B10008091D0010E947A1E0E94881E8093E1014C
+:103B200080EE0E941A1D882341F08091E101982FB8
+:103B3000909590FB80F98093E10189E30E941A1D22
+:103B4000882359F09091E10191FB882780F921E0C9
+:103B5000822780FB91F99093E10182EE0E941A1D69
+:103B6000882359F09091E10192FB882780F921E0A8
+:103B7000822780FB92F99093E10186EE0E941A1D44
+:103B8000882359F09091E10193FB882780F921E087
+:103B9000822780FB93F99093E10183EE0E941A1D26
+:103BA000882359F09091E10194FB882780F921E066
+:103BB000822780FB94F99093E10185E30E941A1D0E
+:103BC000882359F09091E10195FB882780F921E045
+:103BD000822780FB95F99093E10181E30E941A1DF1
+:103BE000882359F09091E10196FB882780F921E024
+:103BF000822780FB96F99093E10181E10E941A1DD2
+:103C0000882359F09091E10197FB882780F921E002
+:103C1000822780FB97F99093E1018091E1010E9456
+:103C20008C1E87E20E941A1DC82F8EE10E941A1D69
+:103C30008111C2608FE10E941A1D8111C46080E26F
+:103C40000E941A1D8111C86081E20E941A1D811113
+:103C5000C06182E20E941A1D8111C06283E20E944B
+:103C60001A1D8111C06484E20E941A1D882311F07C
+:103C7000C06802C0CC2329F08C2F0E94831E6C2FB9
+:103C800003C00E947F1E682F70E080E090E0CF911B
+:103C90000C94201ACF9108956DEE7EEF80E090E0B5
+:103CA0000E94D92460E082E090E00E94CB2460E092
+:103CB00083E090E00E94CB2460E084E090E00E94EA
+:103CC000CB2460E085E090E00E94CB2460E086E0B9
+:103CD00090E00C94CB2480E090E00E94C52421E089
+:103CE0008D3E9E4F09F020E0822F089582E090E003
+:103CF0000C94BD24682F82E090E00C94CB2483E0E8
+:103D000090E00C94BD24682F83E090E00C94CB24C9
+:103D100084E090E00C94BD24682F84E090E00C9443
+:103D2000CB2486E090E00C94BD24682F86E090E0E0
+:103D30000C94CB248091DE0180FF0BC060911101B7
+:103D400085E0689FB0011124759567957595679515
+:103D50002AC081FF09C06091110185E0689FB00110
+:103D60001124759567951FC082FF07C060911101EE
+:103D700085E0689FB001112416C04091D80144230A
+:103D8000C9F060911001461788F72091110185E074
+:103D9000289F90011124429FC001439F900D112440
+:103DA00070E00E9495246038710540F4611571053A
+:103DB00039F002C065E070E0862F08958FE708951E
+:103DC00081E008958091DE0180FF08C060910F01BD
+:103DD00070E0759567957595679521C081FF06C060
+:103DE00060910F0170E07595679519C082FF04C05E
+:103DF00060910F0170E010C08091D8018823C1F05C
+:103E000060910E018617A0F790910F01989FC00155
+:103E1000112470E00E9495246038710528F4611522
+:103E2000710521F0862F08958FE7089581E00895A8
+:103E300061E070E0F4CF803F21F40E949A1E8195EA
+:103E400004C0813F29F40E949A1E8093DB010895EB
+:103E5000823F21F40E949A1E819504C0833F29F479
+:103E60000E949A1E8093DA010895893F19F40E94F6
+:103E7000E21E05C08A3F31F40E94E21E81958093C4
+:103E8000DC0108958B3F21F40E94E21E819504C05D
+:103E90008C3F29F40E94E21E8093DD010895843F47
+:103EA00021F48091D901816017C0853F21F4809170
+:103EB000D901826011C0863F21F48091D9018460CC
+:103EC0000BC0873F21F48091D901886005C0883FED
+:103ED00031F48091D90180618093D90108958D3F9B
+:103EE00021F48091DE0181600BC08E3F21F480912E
+:103EF000DE01826005C08F3F29F48091DE0184607D
+:103F00008093DE010895803F29F48091DB0187FFD3
+:103F10006EC007C0813F41F48091DB0118160CF0A0
+:103F200066C01092DB0163C09091DA01823F19F400
+:103F300097FF5DC005C0833F31F419160CF057C0E0
+:103F40001092DA0154C0893F31F48091DC011816D7
+:103F50000CF04DC006C08A3F39F48091DC0187FF28
+:103F600046C01092DC0143C08B3F29F48091DD01F3
+:103F700087FF3DC006C08C3F39F48091DD011816E3
+:103F8000B4F51092DD0133C0843F21F48091D90152
+:103F90008E7F05C0853F31F48091D9018D7F80935C
+:103FA000D90125C0863F21F48091D9018B7FF7CFBD
+:103FB000873F21F48091D901877FF1CF883F21F499
+:103FC0008091D9018F7EEBCF8D3F21F48091DE016E
+:103FD0008E7F0BC08E3F21F48091DE018D7F05C066
+:103FE0008F3F29F48091DE018B7F8093DE018091E9
+:103FF000DA0181110EC08091DB0181110AC080912C
+:10400000DC01811106C08091DD01811102C0109296
+:10401000D801089589ED91E00E94FB0F0E945D1C7C
+:104020009093D7018093D6010895CF938091D601C4
+:104030009091D7010E946A1C4091D801442321F03D
+:104040002091120130E006C0209113015AE0259F13
+:10405000900111248217930708F486C08091DA0139
+:1040600081110DC09091DB01911109C09091DC018B
+:10407000911105C09091DD01992309F475C04F3F5E
+:1040800019F04F5F4093D801181624F40E949A1E2D
+:104090008093DA018091DA0187FF05C00E949A1EA1
+:1040A00081958093DA018091DB01181624F40E9437
+:1040B0009A1E8093DB018091DB0187FF05C00E947F
+:1040C0009A1E81958093DB016091DA01662339F1B4
+:1040D000C091DB01CC2319F1772767FD7095872FFD
+:1040E000972F0E949A2323E333E343E35FE30E9485
+:1040F000FE230E9467236093DA016C2F772767FD08
+:104100007095872F972F0E949A2323E333E343E38D
+:104110005FE30E94FE230E9467236093DB0180918E
+:10412000DC01181624F40E94E21E8093DC018091C9
+:10413000DC0187FF05C00E94E21E81958093DC01AF
+:104140008091DD01181624F40E94E21E8093DD01A7
+:104150008091DD0187FF05C00E94E21E819580935A
+:10416000DD01CF910C940A20CF910895E9EDF1E0A3
+:1041700085E0DF011D928A95E9F71092D80110922F
+:10418000DE010895833089F130F4813061F08230AE
+:1041900009F06EC019C0853009F449C0B8F1863005
+:1041A00009F066C055C020911301862F90E0820F60
+:1041B000911D8F3F910520F4620F609313010895C4
+:1041C0008FEF80931301089520911201862F90E0C4
+:1041D000820F911D8F3F910520F4620F60931201B1
+:1041E00008958FEF80931201089520911101862F79
+:1041F00090E0820F911D8F3F910520F4620F609334
+:10420000110108958FEF80931101089520911001FD
+:10421000862F90E0820F911D8F3F910520F4620F51
+:104220006093100108958FEF8093100108952091FD
+:104230000F01862F90E0820F911D8F3F910520F492
+:10424000620F60930F0108958FEF80930F0108951F
+:1042500020910E01862F90E0820F911D8F3F9105D6
+:1042600020F4620F60930E0108958FEF80930E018A
+:104270000895833021F130F4813059F0823009F013
+:1042800049C012C0853089F128F1863009F042C05A
+:1042900037C080911301681720F4861B80931301A7
+:1042A000089510921301089580911201681720F467
+:1042B000861B809312010895109212010895809137
+:1042C0001101681720F4861B809311010895109244
+:1042D0001101089580911001681720F4861B8093C6
+:1042E0001001089510921001089580910F01681730
+:1042F00020F4861B80930F01089510920F010895FA
+:1043000080910E01681720F4861B80930E0108959A
+:1043100010920E01089541E050E060E070E004C0AA
+:10432000440F551F661F771F8A95D2F7CB01BA013C
+:104330000E94201A0C941516873200F58E3108F071
+:1043400086C08E3009F466C060F4873009F44DC031
+:1043500018F4863049F531C0883041F18B3021F5B1
+:104360007BC0863109F478C018F48031E9F45CC070
+:10437000893109F471C08B31B9F442C0883309F432
+:104380006BC048F4893209F460C0853309F45DC01C
+:10439000873251F45AC0833409F457C018F48A3371
+:1043A00018F057C0883499F080E008950E94761E76
+:1043B0000E94881E0E94911E4FC08091D001817F73
+:1043C0008E7F8093D00181E08093DF0108950E9469
+:1043D00015162FEF83ED90E3215080409040E1F7D8
+:1043E00000C000000E94BD1C37C08091D00180FF3A
+:1043F00003C0817F8E7F01C081608093D0012CC07B
+:104400009091D00191FB882780F921E0822780FBE1
+:1044100091F913C09091D00192FB882780F921E097
+:10442000822780FB92F909C09091D00193FB8827E5
+:1044300080F921E0822780FB93F99093D0018823B3
+:1044400059F091609093D00107C080E003C08D5176
+:1044500001C089530E948B2181E0089580E0089576
+:1044600080E00895CF93C82F8091DF01813071F0F3
+:1044700020F0823009F089C037C0A0910C01B091C2
+:104480000D018C91823209F082C007C0A0910C010D
+:10449000B0910D018C91823249F48C2F0E942E2212
+:1044A00081111EC08C2F0E949C211CC08C2F0E9449
+:1044B0003022811115C0C43169F030F4CB3081F065
+:1044C000C03109F068C009C0C93221F0C83309F011
+:1044D00062C006C01092DF015EC082E08093DF01FF
+:1044E00081E090E081705AC0C932C9F060F4C431F3
+:1044F000B1F020F4C73009F04CC034C0CE51C63002
+:1045000008F047C017C0CE3439F120F4CB3409F09D
+:1045100040C01CC0C135C1F0C235D9F513C080916F
+:10452000E001882319F01092E00133C081E080930C
+:10453000DF0134C0EC2FF0E0E65BFE4F808180931A
+:10454000E00127C061E003C061E007C06AE080913C
+:10455000E0010E94C2201DC06AE08091E0010E943B
+:10456000392117C08EE18093130182E380931201F9
+:104570008AE08093110184E18093100188E08093A8
+:104580000F0188E280930E0104C01092DF0180E0E9
+:1045900005C081E003C080E090E0A4CFCF910895F2
+:1045A0000E946B1E811102C00E944C1E0E94911E2F
+:1045B0008093F00180FF02C0869501C080E00C94DA
+:1045C000E1028091F001982F9695292F30E0233059
+:1045D00031054CF49F5F990F8170892B8160809326
+:1045E000F0010E94951E8091F00186950C94E102E5
+:1045F0008091F001982F969591F09158990F8170C4
+:10460000892B8093F0018E7F91E009F490E08091F6
+:10461000F00190FB80F98093F0010E94951E80913B
+:10462000F00186950C94E1028091F001982F90950D
+:1046300090FB80F98093F0010E94951E8091F0011B
+:1046400080FF02C0869501C080E00C94E1023091A9
+:10465000F001232F26952F5F2F77822F90E0317066
+:1046600004972CF4220F232B2093F00102C03093E7
+:10467000F0018091F001282F2E7F91E009F490E065
+:1046800090FB80F98093F0010E94951E8091F001CB
+:1046900086950C94E1022091F001922F969598272F
+:1046A000990F822F8170892B8093F0018E7F91E08A
+:1046B00009F490E08091F00190FB80F98093F00183
+:1046C0000E94951E8091F00186950C94E10204D021
+:1046D0006894B1118DC0089570D088F09F5790F004
+:1046E000B92F9927B751A0F0D1F0660F771F881F17
+:1046F000991F1AF0BA95C9F712C0B13081F077D07E
+:10470000B1E0089574C0672F782F8827B85F39F01B
+:10471000B93FCCF3869577956795B395D9F73EF475
+:1047200090958095709561957F4F8F4F9F4F08951D
+:10473000E89409C097FB3EF490958095709561953B
+:104740007F4F8F4F9F4F9923A9F0F92F96E9BB27F1
+:104750009395F695879577956795B795F111F8CF6D
+:10476000FAF4BB0F11F460FF1BC06F5F7F4F8F4FD8
+:104770009F4F16C0882311F096E911C0772321F0CE
+:104780009EE8872F762F05C0662371F096E8862F66
+:1047900070E060E02AF09A95660F771F881FDAF7BD
+:1047A000880F9695879597F9089557FD9058440F6F
+:1047B000551F59F05F3F71F04795880F97FB991F80
+:1047C00061F09F3F79F0879508951216130614063D
+:1047D000551FF2CF4695F1DF08C0161617061806CA
+:1047E000991FF1CF86957105610508940895E894A5
+:1047F000BB2766277727CB0197F908950BD078C0A0
+:1048000069D028F06ED018F0952309F05AC05FC027
+:104810001124EECFCADFA0F3959FD1F3950F50E09E
+:10482000551F629FF001729FBB27F00DB11D639F62
+:10483000AA27F00DB11DAA1F649F6627B00DA11D08
+:10484000661F829F2227B00DA11D621F739FB00DAE
+:10485000A11D621F839FA00D611D221F749F33271E
+:10486000A00D611D231F849F600D211D822F762FB7
+:104870006A2F11249F5750408AF0E1F088234AF0B4
+:10488000EE0FFF1FBB1F661F771F881F9150504000
+:10489000A9F79E3F510570F014C0AACF5F3FECF31B
+:1048A000983EDCF3869577956795B795F795E795EC
+:1048B0009F5FC1F7FE2B880F911D9695879597F9FD
+:1048C000089597F99F6780E870E060E008959FEF92
+:1048D00080EC089500240A94161617061806090697
+:1048E000089500240A941216130614060506089566
+:1048F000092E0394000C11F4882352F0BB0F40F4EE
+:10490000BF2B11F460FF04C06F5F7F4F8F4F9F4F2D
+:104910000895991B79E004C0991F961708F0961B1B
+:10492000881F7A95C9F78095089597FB072E16F48E
+:10493000009407D077FD09D00E94A92407FC05D078
+:104940003EF4909581959F4F0895709561957F4FA6
+:104950000895AA1BBB1B51E107C0AA1FBB1FA617C6
+:10496000B70710F0A61BB70B881F991F5A95A9F718
+:1049700080959095BC01CD010895F999FECF92BD27
+:1049800081BDF89A992780B50895A8E1B0E042E08A
+:1049900050E00C94E024262FF999FECF1FBA92BD67
+:1049A00081BD20BD0FB6F894FA9AF99A0FBE019610
+:1049B00008950E94CB24272F0C94CC24DC01CB013A
+:1049C000FC01F999FECF06C0F2BDE1BDF89A31961F
+:1049D00000B40D9241505040B8F70895F894FFCFBD
+:1049E00005960826090209CD08990801C80128087A
+:1049F000140A321E420045002500260043006100D3
+:104A00006000200037006400650066006700440015
+:104A100046002400470074038D03A603BF038B04E4
+:104A20003E040804E8033F4D362001020304050656
+:044A3000070809006A
+:00000001FF
|