Added WS2812 support for KC60 (#419)

* Added WS2812 support for KC60

* Reorganized WS2812 support into its own keymap

* Fixed relative link in README

* Moved WS2812 mention in README to the bottom

* Fixed titling in WS2812 README

* Reverted KC60 Makefile and default keymap back

* Moved RGB specific config.h to ws2812 keymap folder
pull/425/head
Stanley Lai 9 years ago committed by Jack Humbert
parent 3f6fac4721
commit 3302258abd

@ -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.
@ -111,4 +111,3 @@ AUDIO_ENABLE ?= no # Audio output on port C6
ifndef QUANTUM_DIR
include ../../Makefile
endif

@ -2,12 +2,10 @@ KC60 (version 2.0) keyboard firmware
======================
## Quantum MK Firmware
For the full Quantum feature list, see [the parent README.md](/README.md).
## Building
Download or clone the whole firmware and navigate to the keyboard/kc60 folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
Download or clone the whole firmware and navigate to the keyboard/kc60 folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
Depending on which keymap you would like to use, you will have to compile slightly differently.
@ -22,3 +20,8 @@ To build the firmware binary hex file with a keymap just do `make` with `KEYMAP`
$ make KEYMAP=[default|jack|<name>]
```
Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
## WS2812 Support
![Image of KC60 with RGB Underglow](keymaps/ws2812/ws2812_example.jpg)
Build with WS2812 Support by running `make KEYMAP=ws2812`.

@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Possible pins for columns include: F1 F0 E6 D7 D6 D4 C7 C6 B7 B5 B4 B3 B1 B0
// Pins for rows include: D0 D1 F6 F7 D5
// KC60 Version 2
// KC60 Version 2
#define MATRIX_ROW_PINS { D0, D1, F6, F7, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }
#define UNUSED_PINS

@ -62,7 +62,7 @@ void backlight_init_ports()
DDRB |= (1<<6);
PORTB &= ~(1<<6);
// Use full 16-bit resolution.
// Use full 16-bit resolution.
ICR1 = 0xFFFF;
// I could write a wall of text here to explain... but TL;DW
@ -99,7 +99,7 @@ void backlight_set(uint8_t level)
// Set the brightness
CHANNEL = 0xFFFF;
}
else
else
{
// Turn on PWM control of PB6
TCCR1A |= _BV(COM1B1);

File diff suppressed because it is too large Load Diff

@ -0,0 +1,63 @@
#----------------------------------------------------------------------------
# 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".
#----------------------------------------------------------------------------
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
CONSOLE_ENABLE ?= yes # Console for debug(+400)
COMMAND_ENABLE ?= yes # Commands for debug and configuration
KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE ?= yes # Enable WS2812 underglow RGB strip
MIDI_ENABLE ?= no # MIDI controls
UNICODE_ENABLE ?= no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE ?= no # Audio output on port C6
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE ?= no # USB Nkey Rollover
ifndef QUANTUM_DIR
include ../../Makefile
endif

@ -0,0 +1,21 @@
KC60 with WS2812 RGB Underglow
======================
![Image of KC60 with RGB Underglow](ws2812_example.jpg)
## Quantum MK Firmware
For the full Quantum feature list, see [the parent README.md](/README.md).
## WS2812 Support
By default, it is now setup for 16 LEDs on the PF5 breakout pin. See [included image](ws2812_wiring.jpg) for wiring reference.
### Build
To build this keymap with WS2812 enabled, simply run `make KEYMAP=ws2812`.
### Reference Images
![Wiring Reference](ws2812_wiring.jpg)
![RGB Strip turned on](ws2812_underside-lit.jpg)
![RGB Strip turned off](ws2812_underside.jpg)
### Additional Credits
Keymap based on work by [TerryMatthews](https://github.com/TerryMathews) for GH60 Satan.

@ -0,0 +1,1764 @@
:100000000C94C2080C9409090C9409090C94090970
:100010000C9409090C9409090C9409090C94090918
:100020000C9409090C9409090C947F1B0C94511C25
:100030000C94E7290C9409090C9409090C940909FA
:100040000C9409090C9409090C9409090C940909E8
:100050000C9409090C944F2A0C9409090C94090971
:100060000C9409090C9409090C9409090C940909C8
:100070000C9409090C9409090C9409090C940909B8
:100080000C941E160C9409090C9409090C94090986
:100090000C9409090C9409090C9409090C94090998
:1000A0000C9409090C9409090C940909130A300AE3
:1000B000610A370A3E0A450A4C0A530A5A0ABE1C0C
:1000C000E01CD31DE01CD31D251D481DD31D9D1D07
:1000D000B01D02210221312131216D218B21CD2240
:1000E000CD229621CD223B223B22A122A922CD2244
:1000F000C822482248224822482248224822482230
:10010000482248224822482248224822482248229F
:100110004822582266226D2274227E2200F001F0CD
:1001200002F003F004F005F006F007F008F00020FC
:100130001E001F00200021002200230024002500B3
:10014000260027002D002E002A002B0014001A0084
:100150000800150017001C0018000C001200130006
:100160002F0030003100390004001600070009009C
:100170000A000B000D000E000F00330034000000D9
:100180002800E10000001D001B000600190005000A
:10019000110010003600370038000000E500E000D4
:1001A000E300E200000000002C000000000000005E
:1001B0000000E600E7000151E40035003A003B0092
:1001C0003C003D003E003F00400041004200430033
:1001D000440045004C0001000100520001000100F4
:1001E0000100010001000100010001002F703070CA
:1001F00031700100500051004F000100010001006A
:1002000001000100010001000100010001000100E6
:1002100001000120022003200420052006200720E1
:10022000082001000100010001000100010001009F
:1002300000000000010000000000000000000100BC
:100240000100010000700A44454255473A20656E9E
:1002500061626C65642E0A005374617465206F6678
:1002600020726F772025583A2025303136620A00F7
:1002700048756D616E2D7265616461626C65206D9B
:1002800061747269782073746174653A0D0A004470
:1002900065626F756E63696E672064656C61792055
:1002A00072656D61696E696E673A2025580A00545F
:1002B000494D4552332064697361626C65642E0A4E
:1002C0000054494D45523320656E61626C65642E61
:1002D0000A007267626C69676874207365742068CD
:1002E0007376205B454550524F4D5D3A2025752C65
:1002F00025752C25750A007267626C696768742021
:10030000746F67676C653A207267626C69676874BE
:100310005F636F6E6669672E656E61626C65203D16
:100320002025750A007267626C69676874206D6FBA
:1003300064653A2025750A007267626C69676874A3
:100340005F696E6974207267626C696768745F6365
:100350006F6E6669672E6D6F6465203D20302E20BC
:1003600057726974652064656661756C7420766186
:100370006C75657320746F20454550524F4D2E0AA1
:10038000007267626C696768745F696E6974206582
:1003900065636F6E666967206973206E6F74206590
:1003A0006E61626C65642E0A007267626C696768D0
:1003B000745F696E6974207374617274210A0072CB
:1003C00067626C696768745F696E69742063616CE9
:1003D0006C65642E0A007267626C696768745F639B
:1003E0006F6E6669672E76616C203D2025640A0079
:1003F0007267626C696768745F636F6E6669672EA7
:10040000736174203D2025640A007267626C69671D
:1004100068745F636F6E6669672E687565203D203E
:1004200025640A007267686C696768745F636F6E41
:100430006669672E6D6F6465203D2025640A007231
:1004400067626C696768745F636F6E6669672E6563
:100450006E61626C65203D2025640A007267626CE3
:10046000696768745F636F6E666967206570726F35
:100470006D0A006565636F6E6669675F75706461BC
:1004800074655F7267626C696768745F64656661F2
:10049000756C740A00643214643214783C1E1E14A5
:1004A0000A0500000000010101020203040505061F
:1004B00007090A0B0C0E0F1112141517191B1D1F1B
:1004C000212325282A2C2F313436393B3E414346FF
:1004D000494C4F5255585A5D6164676A6D70737626
:1004E000797C7F8386898C8F9295989B9EA2A5A705
:1004F000AAADB0B3B6B9BCBEC1C4C6C9CBCED0D309
:10050000D5D7DADCDEE0E2E4E6E8EAEBEDEEF0F1A6
:10051000F3F4F5F6F8F9FAFAFBFCFDFDFEFEFEFF3A
:10052000FFFFFFFFFFFFFEFEFEFDFDFCFBFAFAF9F9
:10053000F8F6F5F4F3F1F0EEEDEBEAE8E6E4E2E0EC
:10054000DEDCDAD7D5D3D0CECBC9C6C4C1BEBCB9E8
:10055000B6B3B0ADAAA7A5A29E9B9895928F8C89A1
:100560008683807C797673706D6A6764615D5A58A2
:1005700055524F4C494643413E3B393634312F2C7E
:100580002A282523211F1D1B1917151412110F0EC0
:100590000C0B0A090706050504030202010101000C
:1005A000000000010102020202020203030303032E
:1005B0000303030303030303030404040404040404
:1005C00004040404040505050505050505050506DF
:1005D00006060606060606070707070707070808B0
:1005E000080808080909090909090A0A0A0A0A0B78
:1005F0000B0B0B0B0C0C0C0C0C0D0D0D0D0E0E0E35
:100600000E0F0F0F101010101111111212121313E0
:100610001314141415151616161717181819191976
:100620001A1A1B1B1C1C1D1D1E1E1F2020212122EF
:1006300023232424252626272828292A2B2B2C2D42
:100640002E2F30303132333435363738393A3B3C5F
:100650003D3E3F40414244454647494A4B4C4E4F40
:100660005152535556585A5B5D5E606263656769C7
:100670006B6D6E70727476797B7D7F818486888BDA
:100680008D909295979A9D9FA2A5A8ABAEB1B4B755
:10069000BABEC1C4C8CBCFD3D6DADEE2E6EAEEF208
:1006A000F8FF5B735D004B6579626F617264207364
:1006B000746172742E0A005B575D005B535D005BD2
:1006C000525D005B445D005B435D000E036B0063A5
:1006D0000036003000760032000000080359006F39
:1006E00000750000000403090409027400040100FD
:1006F000A0FA090400000103010100092111010011
:10070000012240000705810308000A0904010001D5
:1007100003010200092111010001224D0007058299
:100720000308000A09040200010300000009211166
:100730000100012236000705830308000A090403AB
:10074000000203000000092111010001222000071E
:100750000584032000010705040320000112011095
:100760000100000008EDFE606001000102000106CA
:1007700031FF0974A1010975150025FF9520750841
:1007800081020976150025FF952075089102C005A4
:10079000010980A101850216010026B7001A010097
:1007A0002AB700751095018100C0050C0901A1014F
:1007B0008503160100269C021A01002A9C0275106E
:1007C00095018100C005010902A1010901A10005EF
:1007D0000919012905150025019505750181029565
:1007E00001750381010501093009311581257F95C6
:1007F000027508810609381581257F9501750881E4
:1008000006050C0A38021581257F950175088106B9
:10081000C0C005010906A101050719E029E7150077
:10082000250195087501810295017508810105086A
:10083000190129059505750191029501750391012D
:100840000507190029FF150026FF00950675088188
:1008500000C00A002530325820006B6579626F6154
:1008600072645F7265706F72743A20004B657962D2
:100870006F617264204C4544732073746174653AEF
:100880002025780A00646F6E652E0A00626F6F671C
:100890006D61676963207363616E3A202E2E2E208E
:1008A00000290A002575002F002575005D28002508
:1008B00064002000256400200025640020002564D9
:1008C000007C0025303258006D6F7573656B65795B
:1008D000205B62746E7C782079207620685D2872B7
:1008E00065702F61636C293A205B006D6B5F7768E0
:1008F00065656C5F74696D655F746F5F6D617820AD
:100900003D2025640A006D6B5F776865656C5F6DDF
:1009100061785F7370656564203D2025640A006D11
:100920006B5F74696D655F746F5F6D6178203D20EA
:1009300025640A006D6B5F6D61785F737065656437
:10094000203D2025640A006D6B5F696E74657276C8
:10095000616C203D2025640A006D6B5F64656C61ED
:1009600079203D2025640A006D6B5F776865656CB2
:100970005F74696D655F746F5F6D6178203D2025E0
:10098000640A006D6B5F776865656C5F6D61785FA9
:100990007370656564203D2025640A006D6B5F748B
:1009A000696D655F746F5F6D6178203D2025640A15
:1009B000006D6B5F6D61785F7370656564203D20CD
:1009C00025640A006D6B5F696E74657276616C20D8
:1009D0003D2025640A006D6B5F64656C6179203D84
:1009E0002025640A000A00257500363A20776865DC
:1009F000656C5F74696D655F746F5F6D61783A20D7
:100A0000000A00257500353A20776865656C5F6DD2
:100A100061785F73706565643A20000A002575008F
:100A2000343A2074696D655F746F5F6D61783A2048
:100A3000000A00257500333A206D61785F73706598
:100A400065643A20000A00257500323A20696E7408
:100A5000657276616C286D73293A20000A0025754D
:100A600000313A2064656C6179282A31306D732930
:100A70003A20000A092D2056616C756573202D0AF5
:100A8000004D3E004D25643E20003F0073657420FC
:100A900064656661756C740A00433E200077686582
:100AA00072652064656C74613A20637572736F724D
:100AB0003D25642C20776865656C3D25640A536587
:100AC0006520687474703A2F2F656E2E77696B6994
:100AD00070656469612E6F72672F77696B692F4D3E
:100AE0006F7573655F6B6579730A000A092D204D78
:100AF0006F7573656B6579202D0A4553432F713AE5
:100B000009717569740A313A0964656C6179282A3A
:100B100031306D73290A323A09696E7465727661F3
:100B20006C286D73290A333A096D61785F737065BB
:100B300065640A343A0974696D655F746F5F6D614D
:100B4000780A353A09776865656C5F6D61785F731F
:100B5000706565640A363A09776865656C5F746923
:100B60006D655F746F5F6D61780A0A703A09707223
:100B7000696E742076616C7565730A643A097365F1
:100B8000742064656661756C74730A75703A092B1C
:100B9000310A646F776E3A092D310A706775703AC1
:100BA000092B31300A7067646F776E3A092D313046
:100BB0000A0A7370656564203D2064656C74612069
:100BC0002A206D61785F7370656564202A20287221
:100BD0006570656174202F2074696D655F746F5F47
:100BE0006D6178290A003F004D3E2000433E200001
:100BF0004C25640A0074696D65725F636F756E746D
:100C00003A202530346C580A006B6579626F617246
:100C1000645F69646C653A2025580A006B657962E7
:100C20006F6172645F70726F746F636F6C3A2025CE
:100C3000580A00686F73745F6B6579626F617264E4
:100C40005F6C65647328293A2025580A000A092D2B
:100C500020537461747573202D0A004743433A2072
:100C6000352E332E30204156522D4C4942433A20E6
:100C7000322E302E30204156525F415243483A20A6
:100C8000617672350A004F5054494F4E533A204C0A
:100C900055464120424F4F544D41474943204D4F07
:100CA0005553454B45592045585452414B455920C1
:100CB000434F4E534F4C4520434F4D4D414E4420E2
:100CC000343039360A004255494C443A20756E6B2F
:100CD0006E6F776E202830323A30363A3039204AFB
:100CE000756E2032302032303136290A00564944A0
:100CF0003A2030784645454428596F752920504997
:100D0000443A20307836303630286B6336307632CD
:100D100029205645523A203078303030310A00448C
:100D20004553433A204120637573746F6D206B65A2
:100D300079626F6172640A000A092D205665727328
:100D4000696F6E202D0A000A092D20436F6E736FA4
:100D50006C65202D0A4553432F713A0971756974EA
:100D60000A6D3A096D6F7573656B65790A000A093A
:100D70002D204D61676963202D0A443A094465625C
:100D80007567204D65737361676520546F67676C85
:100D9000650A583A094D6174726978204465627534
:100DA00067204D6F646520546F67676C65202D2048
:100DB00053686F77206B6579707265737365732004
:100DC000696E206D617472697820677269640A4B7C
:100DD0003A094B6579626F61726420446562756798
:100DE00020546F67676C65202D2053686F77206BE8
:100DF00065797072657373207265706F72740A4DD5
:100E00003A094465627567204D6F75736520546FAC
:100E100067676C650A563A0956657273696F6E0AA0
:100E2000533A095374617475730A433A0941637400
:100E3000697661746520436F6E736F6C65204D6FCA
:100E400064650A46312D4631303A09537769746337
:100E50006820746F204C6179657220302D3920280C
:100E6000463130203D204C30290A302D393A095383
:100E7000776974636820746F204C617965722030E3
:100E80002D390A4553433A095377697463682074CE
:100E90006F204C6179657220302028616C74657216
:100EA0006E617465206B65792031290A475241567D
:100EB000453A0953776974636820746F204C6179EF
:100EC000657220302028616C7465726E61746520D3
:100ED0006B65792032290A50415553453A094A75C4
:100EE0006D7020746F20426F6F746C6F61646572F7
:100EF00020285265736574290A453A095072696E53
:100F00007420454550524F4D2053657474696E6787
:100F1000730A000A002575002E6C6576656C3A2010
:100F2000000A002575002E656E61626C653A20002E
:100F30000A0025303258006261636B6C696768741F
:100F40005F636F6E6669672E7261773A20000A00F0
:100F50002575002E6E6B726F3A20000A0025750011
:100F60002E737761705F6261636B736C6173685F2E
:100F70006261636B73706163653A20000A002575D6
:100F8000002E737761705F67726176655F6573636A
:100F90003A20000A002575002E6E6F5F6775693A6A
:100FA00020000A002575002E737761705F72616CF6
:100FB000745F726775693A20000A002575002E7308
:100FC0007761705F6C616C745F6C6775693A200063
:100FD0000A002575002E636170736C6F636B5F741C
:100FE0006F5F636F6E74726F6C3A20000A00257534
:100FF000002E737761705F636F6E74726F6C5F63E6
:101000006170736C6F636B3A20000A0025303258B0
:10101000006B65796D61705F636F6E6669672E72D4
:1010200061773A20000A002575002E6D6F75736593
:101030003A20000A002575002E6B6579626F617297
:10104000643A20000A002575002E6D61747269787B
:101050003A20000A002575002E656E61626C653AC3
:1010600020000A00253032580064656275675F63AE
:101070006F6E6669672E7261773A20000A002575E7
:101080000064656661756C745F6C617965723A20A5
:10109000003F000A6D6F7573653A206F66660A003F
:1010A0000A6D6F7573653A206F6E0A000A6B657979
:1010B000626F6172643A206F66660A000A6B657936
:1010C000626F6172643A206F6E0A000A6D61747219
:1010D00069783A206F66660A000A6D6174726978F1
:1010E0003A206F6E0A000A64656275673A206F667F
:1010F000660A000A64656275673A206F6E0A000A24
:101100000A4A756D70696E6720746F20626F6F7424
:101110006C6F616465722E2E2E2000433E200065A8
:1011200065636F6E6669673A0A006261636B6C693A
:1011300067687420737465703A2025750A006261CF
:10114000636B6C6967687420746F67676C653A20BD
:1011500025750A006261636B6C6967687420646559
:101160006372656173653A2025750A006261636B7D
:101170006C6967687420696E6372656173653A2093
:1011800025750A0011241FBECFEFDAE0DEBFCDBF08
:1011900004B603FE27C080913F0290914002A091C7
:1011A0004102B09142028730904BA740B04BD1F43E
:1011B00010923F021092400210924102109242029D
:1011C00014BE84B7877F84BF0FB6F894A89580912A
:1011D0006000886180936000109260000FBEE0E0C4
:1011E000F8E3099511E0A0E0B1E0EEEDFDE602C004
:1011F00005900D92A634B107D9F722E0A6E4B1E03C
:1012000001C01D92AF33B207E1F70E94C0180C94E1
:10121000ED360C940000FF93EF93E0914601F091BE
:101220004701309709F00995EF91FF910895FC016E
:101230008591803011F0EFDFFBCF0895FF27E0E2CA
:1012400030E247FF0CC0419597FF09C0EDE2609581
:10125000709580959095611D711D811D911D27FFD1
:1012600002C0219530E350E2AA27660F771F881F3E
:10127000991FAA1FA41710F0A41B63955A95A9F7EC
:10128000AA3008F0A95FA05DAF93F39561157105D1
:101290008105910541F7ED3211F4EF93F395F217C3
:1012A00018F43F93F395FBCF8F91B5DFFA95E1F7F3
:1012B0000895E991F9918591803021F0853219F0F6
:1012C000AADFF9CF089520E0E89455915532C1F393
:1012D000503311F4689455915A3348F4505390F3B5
:1012E000220F022E220F220F200D250FF4CF0EF415
:1012F000219589919991533619F3533729F1533533
:1013000059F1BC0188279927E8945C3621F489912A
:10131000999168945591543639F446EF7EF077FFF1
:101320000DC08FEF9FEF0AC055374AE039F05835AE
:1013300040E121F0523642E009F00895FF93EF9327
:101340007DDFEF91FF91B7CFFF93EF93FC01819188
:101350008030B9F360DFFBCFFF93EF9368DFF1CF0D
:10136000DF93CF93CDB7DEB72596A3DFCF91DF9183
:10137000089508950C94B90981E0089508950C9496
:10138000B9090C94BC090C94BE09269A2E988FEFCB
:101390009FEF909387008093860082E28093800085
:1013A00089E1809381000C9457340E94C5090E9402
:1013B0005E130C94BA09282F2E9880918000211179
:1013C00008C08F7D8093800010928B0010928A005D
:1013D0000895806280938000233019F48FEF9FEF8F
:1013E0000FC083E090E0821B9109880F991F2FEFB7
:1013F0003FEFA90102C0569547958A95E2F7CA01C9
:1014000090938B0080938A000895CF93DF93EC0133
:10141000862F90E08930910508F05AC0FC01EA5A05
:10142000FF4F0C949F360E94E52882729A8199237F
:1014300069F0882319F085E390E002C089E290E02A
:101440000E94A928DF91CF910C942F29882319F0AD
:1014500085E390E002C089E290E00E94C628F2CFC6
:101460008A818823A9F1DF91CF910C94C9138A81D5
:10147000882371F1DF91CF910C9435128A818823F2
:1014800039F1DF91CF910C944D128A81882301F1BB
:10149000DF91CF910C946C128A818823C9F0DF917F
:1014A000CF910C9487128A81882391F0DF91CF919C
:1014B0000C94A1128A81882359F0DF91CF910C946A
:1014C000BC128A81882321F0DF91CF910C94BF1345
:1014D000DF91CF91089581E008950C946B0A0895EF
:1014E0000F931F93CF93DF938C01FC01C081D181B7
:1014F000CE010E942A28BE010E94A90DEC01B8016C
:101500000E946D0A882309F474C1F801828188233E
:1015100009F45BC08091530181111FC0C431F0E711
:10152000DF0709F00AC10E946F0A81E0809353012E
:101530000E94192A909352018093510110924A01FE
:1015400010924C0110924B0110924E0110924D01DD
:101550001092500110924F014CC180915101909115
:1015600052010E94252A883C910570F480914A011D
:10157000E82FF0E0EE0FFF1FE55BFE4FD183C08345
:101580008F5F80934A0135C1C43120E7D20708F04C
:1015900028C1C23080E7D80710F5C11590E7D907F8
:1015A00009F0DAC0F8018281882309F4BFC00E94E3
:1015B0003623FFEF24E38CE0F15020408040E1F738
:1015C00000C000000E94742A14C1C431F0E7DF0794
:1015D00008F0D3C0C23020E7D20708F49BC0F8015E
:1015E0008281882309F4A2C00E942E2C811102C09E
:1015F0000E940F2C0E944B2C90E09093F801809356
:10160000F701C230F0E7DF0721F48091F701816034
:101610007AC0C33020E7D20721F48091F7018260BD
:1016200072C0C43080E7D80721F48091F70184604C
:101630006AC0C53090E7D90719F48091F70127C037
:10164000C630E0E7DE0721F48091F70180615BC0DE
:10165000C730F0E7DF0721F48091F701806253C0C3
:10166000C83020E7D20721F48091F70180644BC095
:10167000C93080E7D80721F48091F701806843C022
:10168000CA3090E7D90729F48091F7018460886017
:101690003AC0CB30E0E7DE0721F48091F7018E7F7E
:1016A00032C0CC30F0E7DF0721F48091F7018D7F65
:1016B0002AC0CD3020E7D20721F48091F7018B7F3B
:1016C00022C0CE3080E7D80719F48091F7011AC004
:1016D0008091F701CF3090E7D90711F48F7E13C0C6
:1016E000C031E0E7DE0711F48F7D0DC0C131F0E7B6
:1016F000DF0711F48F7B07C0C231D04711F48F7719
:1017000002C08B7F877F8093F7018091F7010E9451
:101710004F2C6FC0C11580E7D80741F0C130D047CA
:10172000F1F081E08093480180934901C801DF9185
:10173000CF911F910F910C94C109C43120E7D207BA
:1017400008F04FC0C23080E7D80708F048CFC11575
:1017500090E7D90709F42BCFC130D04711F7F80132
:101760008281882319F386E492E00E941709809110
:10177000E60181608093E6013CC0C333E0E7DE0709
:10178000A1F4F8018281882321F01092480182E0BF
:1017900017C080914801811106C086E20E949F1FF8
:1017A00086E20E94672082E019C0C433D04709F066
:1017B000B8CFF8018281882331F01092490182E18B
:1017C0000E94B62016C080914901811106C087E2AF
:1017D0000E949F1F87E20E94672082E10E94BD2035
:1017E00008C0C333F0E7DF0761F2C433D04709F321
:1017F00098CF80E0DF91CF911F910F9108950C94C5
:10180000D5090C94BF0926E4829FC0011124FC0174
:101810003EE0739FE00DF11D1124E60FF11DEE0F68
:10182000FF1FE25DFE4F859194910E94BC0D8115D2
:1018300040E5940708F047C0811520E4920708F0BE
:1018400014C1883E910520F5803E910508F07DC1C8
:10185000883A910578F4853A910508F0A6C0813060
:10186000910509F472C108F42FC18430910508F084
:101870006CC12AC18B3B910508F4A2C0803C910544
:1018800008F422C1FC01EE0FFF1FE456F040E7C050
:10189000811530E2930758F4811541E0940708F070
:1018A00054C1803F910508F40FC1906508958115DA
:1018B00020E3920708F0D6C0FC01FF70EE0FFF1F77
:1018C000E45EFE4FCCC0811535E5930708F044C0B7
:1018D000811544E5940708F0DFC0811522E59207E1
:1018E00010F5811531E5930708F0C2C09C0154E062
:1018F000369527955A95E1F7922F9370482F4370AC
:1019000021E030E002C0220F331F4A95E2F73C6825
:10191000392B8F708695869540E2849FC0011124F3
:10192000822B932B0895AC0143705527282F2695C1
:1019300026958115934508F0A0C081E090E002C093
:10194000880F991F4A95E2F740E2249F90011124E5
:10195000822B932B9C6808958F3240E7940790F474
:101960008F3120E7920708F0A2C0811536E5930772
:1019700008F497C09C0130562115304108F0A4C0EE
:101980009F7093C0803320E7920709F497C008F452
:1019900092C0813340E7940709F493C082339047A3
:1019A00009F092C080E093ED0895853A910509F41D
:1019B0008EC0863A910509F08DC082E890E40895C2
:1019C000883A910509F489C0893A910509F488C0DB
:1019D0008A3A910509F487C08B3A910509F486C0CB
:1019E0008C3A910509F485C08D3A910509F484C0BB
:1019F000803B910509F483C08E3A910509F482C0B9
:101A00008F3A910509F481C0813B910509F480C0AA
:101A1000823B910509F47FC0833B910509F47EC0A8
:101A2000843B910509F47DC0853B910509F47CC098
:101A3000863B910509F47BC0873B910509F47AC088
:101A4000883B910509F479C0893B910509F478C078
:101A50008A3B910509F477C080E094E4089585916C
:101A6000949108959927906C08959F70906A0895B5
:101A7000982F8827816F906A089581E090E002C0D6
:101A8000880F991F4A95E2F740E2249F90011124A4
:101A9000822B932B9A680895982F8827846F906AD9
:101AA00008958F719927982F8827906208958F51F4
:101AB0009047946D089580E091ED089580E090ED59
:101AC000089580E092ED089580E090E0089581E827
:101AD00090E4089583E890E4089582EE94E40895F4
:101AE00089EE94E408958AEE94E4089585EB94E4F5
:101AF000089586EB94E4089587EB94E408958CECC4
:101B000094E408958DEC94E4089583E895E40895B1
:101B10008AE895E4089582E995E4089584E995E4D6
:101B2000089581E296E4089583E296E4089584E2BC
:101B300096E4089585E296E4089586E296E4089591
:101B400087E296E408958AE296E4089580E090E0C2
:101B5000089526E4829FC0011124FC012EE0729FAB
:101B6000E00DF11D1124E60FF11DEE0FFF1FE25DE8
:101B7000FE4F8591949108958238910549F1B0F412
:101B80008133910509F459C048F48932910509F46B
:101B90004FC08A32910509F455C0089585339105E7
:101BA00009F441C08933910599F00895833E910568
:101BB00031F138F4803E910591F0823E9105A9F013
:101BC0000895863E910501F1873E910539F108950A
:101BD0002091F70120FD3BC021FD39C0089580917F
:101BE000F70180FF34C089E341C08091F70182FF93
:101BF00030C08091F70184FD2EC083EE37C0809104
:101C0000F70182FD26C0F5CF8091F70183FF25C043
:101C10008091F70184FD1FC087EE28C08091F701F5
:101C200083FD1BC0F5CF8091F70185FD18C019C059
:101C30008091F70185FD15C012C08091F70186FDE6
:101C400012C013C08091F70186FD0FC00CC080EE5A
:101C50000DC082EE0BC080E009C086EE07C089E2AD
:101C600005C085E303C08AE201C081E390E00895E6
:101C70000C94C309E82FF0E0ED5DFE4F8081E82F62
:101C8000EF70F0E082958F7021E030E0A90102C092
:101C9000440F551F8A95E2F740A308950F931F93B1
:101CA000CF93DF93C4E0D0E001E010E0FE01ED5DF2
:101CB000FE4F8081E82FEF70F0E021A182958F70B8
:101CC000A80102C0440F551F8A95E2F7CA01822B72
:101CD00081A38C2F0E943A0E219740F78DE090E06F
:101CE00061E070E0FC01EB5EFE4F2081E22FEF70BF
:101CF000F0E042A122952F70DB0102C0AA0FBB1FAA
:101D00002A95E2F79D01242B22A3019758F7DF9132
:101D1000CF911F910F9108950F931F93CF93DF934E
:101D200085B7806885BF85B7806885BFC4E0D0E08F
:101D300001E010E0FE01ED5DFE4F8081E82FEF70C5
:101D4000F0E021A182958F70A80102C0440F551FB9
:101D50008A95E2F7CA01822B81A38C2F0E943A0E4A
:101D6000219740F78DE090E061E070E0FC01EB5ED0
:101D7000FE4F2081E22FEF70F0E042A122952F70FC
:101D8000DB0102C0AA0FBB1F2A95E2F79D01242B9D
:101D900022A3019758F7DF91CF911F910F910C94D7
:101DA000FF0BCF92DF92EF92FF920F931F93CF938F
:101DB000DF930EE511E07801C4E0CC24C394D12C6C
:101DC000D5E08C2F0E943A0E8DE090E040E050E08C
:101DD000FC01EB5EFE4F6081E62FEF70F0E020A18A
:101DE00030E062956F7002C0359527956A95E2F7ED
:101DF00020FD09C09601082E02C0220F331F0A944D
:101E0000E2F7422B532B019718F7D7019E918E9141
:101E10007D018417950721F04D935C93D0930001C9
:101E20008C2F0E943A0EC15060F68091000187FD10
:101E30002FC09091E60190FF10C0282F082E000CB3
:101E4000330B3F938F938FE892E09F938F930E9481
:101E5000B0090F900F900F900F908091000181506A
:101E60008093000187FD07C0EFE9FFE03197F1F7AC
:101E700000C000000DC0E8E6F1E084E591E0D80183
:101E80003E912E918D01329322938A179B07B9F7C9
:101E90000E94010C81E0DF91CF911F910F91FF9083
:101EA000EF90DF90CF900895E82FF0E0EE0FFF1F46
:101EB000E25AFE4F808191810895EF92FF920F9335
:101EC0001F93CF93DF938091E60180FF04C080E7EA
:101ED00092E00E9417090EE511E0C0E0D0E088E52D
:101EE000E82E82E0F82E8091E60180FF13C0F80111
:101EF000808191810E9481299F938F93DF93CF935B
:101F0000FF92EF920E94B0090F900F900F900F90E8
:101F10000F900F9021960E5F1F4FC530D10519F716
:101F2000DF91CF911F910F91FF90EF9008950F9344
:101F30001F93CF9308E611E0C0E0F80192918291DF
:101F40008F010E946329C80FF1E00E351F07A9F722
:101F50008C2FCF911F910F91089521B3342F30957D
:101F6000232331B3432B3FB7F894FC01680F791F4B
:101F7000E617F70789F0819198E041BB000000C0A7
:101F800087FF21BB880F000000C000C000C021BB3C
:101F900000C09A9591F7ECCF3FBF089520B3242B52
:101FA00020BB9B01220F331F620F731F0E94AD0FD6
:101FB00087EC90E00197F1F700C00000089540E23F
:101FC0000C94CE0FAF92BF92CF92DF92EF92FF921E
:101FD0000F931F93CF93DF936C01790150E0FA01C7
:101FE000EE55FA4F44918FEF90E0FC01E61BF109AA
:101FF000EE55FA4FE491E09509F495C0C42FD0E076
:102000008E1B91098C9F90018D9F300D9C9F300DF0
:102010001124E32F8CE3A82EB12CC601B5010E9438
:102020007736DC016230710509F446C0D0F46115E1
:10203000710599F16130710509F079C0C31BD109AF
:10204000B501681B790BC69FC001C79F900DD69F35
:10205000900D1124B5010E947736032F060F142F1F
:1020600067C06430710509F44BC0B8F16530710583
:1020700009F05DC0C31BD109B501681B790BC69F70
:10208000C001C79F900DD69F900D1124B5010E94ED
:102090007736132FE32FE60F44C0C31BD109CC9D25
:1020A000C001CD9D900DDC9D900D1124B5010E94C5
:1020B0007736132F160F35C0C31BD109CA9FC00135
:1020C000CB9F900DDA9F900D1124B5010E947736B9
:1020D000142F032FE32FE60F2BC0C31BD109B5012B
:1020E000681B790BC69FC001C79F900DD69F900DAE
:1020F0001124B5010E947736132F160F032F0FC03E
:10210000C31BD109CA9FC001CB9F900DDA9F900DD0
:102110001124B5010E947736032F060F132FE42FE9
:1021200007C0042F05C0E42F142F042F01C0E0E0E6
:10213000D70111960C9311971C931296EC93DF9193
:10214000CF911F910F91FF90EF90DF90CF90BF90B4
:10215000AF90089587E090E00C94AD36AB01BC01E0
:1021600087E090E00C94CB368091E60180FF08C0B8
:1021700083E794E09F938F930E94B0090F900F9094
:1021800083E08093F9018091FA01807884668F77EB
:102190008093FA018CEC8093FB018093FC016091A9
:1021A000F9017091FA018091FB019091FC010C946E
:1021B000AE108091E60180FF08C08CE594E09F930B
:1021C0008F930E94B0090F900F908091E60180FFDD
:1021D0000FC08091F90181701F928F938FE394E07B
:1021E0009F938F930E94B0090F900F900F900F90C4
:1021F0008091E60180FF10C08091F90186958F7370
:102200001F928F9384E294E09F938F930E94B00972
:102210000F900F900F900F908091E60180FF19C0F2
:102220008091F901881F8827881F9091FA01292F32
:10223000220F822B97FB992790F99F938F938AE027
:1022400094E09F938F930E94B0090F900F900F908E
:102250000F908091E60180FF0EC08091FB011F92DC
:102260008F9380EF93E09F938F930E94B0090F901C
:102270000F900F900F908091E60180FF0EC080912B
:10228000FC011F928F9386ED93E09F938F930E94A2
:10229000B0090F900F900F900F9008958091F90161
:1022A00080FF06C060E170E081E092E00C94DF0FF7
:1022B000E3E0F2E0DF0111971C9211971C9210826B
:1022C000339682E0E333F807A9F7ECCFE3E0F2E0DE
:1022D000DF0111978C9311976C934083339692E0B2
:1022E000E333F907A9F70C944E11EF92FF920F9385
:1022F0001F93CF93DF9300D01F92CDB7DEB7182F77
:10230000E92EF62E042F8091F9019091FA01A09107
:10231000FB01B091FC018093FD019093FE01A0931D
:10232000FF01B09300028091F90180FF1FC09E0160
:102330002F5F3F4F812F9E2D0E94E20F8091FD0164
:1023400010FB87F98093FD0116958091FE0180783E
:10235000182BE0FA17F91093FE01F092FF01009399
:1023600000024B8169818A810E9466110F900F9053
:102370000F90DF91CF911F910F91FF90EF900895F3
:102380000F931F93CF93DF93EC01062F142F90919F
:10239000F90190FF65C0892F8E77823021F4CE013C
:1023A0000E9475111BC0892F86958F732EE3280F0D
:1023B0002F73243018F41091FC0110C0865C8F73C9
:1023C000893060F4C92FCC1FCC27CC1FD091FA01E3
:1023D0008D2F880FC82BD7FBDD27D0F98091F9010D
:1023E000C0FB87F98093F901C6958091FA01807846
:1023F000C82BD0FBC7F9C093FA010093FB011093DF
:10240000FC016091F9017091FA018091FB019091BA
:10241000FC010E94AE108091FC011F928F9380916D
:10242000FB011F928F938091F901881F8827881FD5
:102430009091FA01292F220F822B97FB992790F96F
:102440009F938F9382ED92E09F938F930E94B009A8
:102450008DB79EB708960FB6F8949EBF0FBE8DBF7E
:10246000DF91CF911F910F910895E9EFF1E0208165
:10247000221F2227221F3091FA01432F440F842F5D
:10248000822B37FB992790F9089668E671E00E9445
:102490008B36438162810C94C0112091F901221F77
:1024A0002227221F3091FA01432F440F842F822BC1
:1024B00037FB992790F9883091051CF4805A9E4F7C
:1024C00005C0089768E671E00E948B364091FC01D8
:1024D0006091FB010C94C0116091FB01862F90E08C
:1024E000883F910514F4685F01C06FEF8091F90196
:1024F000881F8827881F9091FA01292F220F97FBA8
:10250000992790F94091FC01822B0C94C0116091A5
:10251000FB01862F90E0089714F0685001C060E03E
:102520008091F901881F8827881F9091FA01292F2F
:10253000220F97FB992790F94091FC01822B0C9474
:10254000C0114091FC01842F90E0883F910514F464
:10255000485F01C04FEF8091F901881F8827881FCD
:102560009091FA01292F220F97FB992790F96091FA
:10257000FB01822B0C94C0114091FC01842F90E050
:10258000089714F0485001C040E08091F901881F7D
:102590008827881F9091FA01292F220F97FB9927EE
:1025A00090F96091FB01822B0C94C011809179010C
:1025B00081110FC081E08093790189E080939100BF
:1025C0008FB7F89493E09093990090ED90939800D2
:1025D0008FBF089580917100826080937100809117
:1025E000E60180FF08C081EC92E09F938F930E94E8
:1025F000B0090F900F900895809171008D7F8093A6
:1026000071008091E60180FF08C08FEA92E09F93FD
:102610008F930E94B0090F900F9008959091F90147
:1026200090FF4BC09178811102C0926007C0883141
:1026300010F09E6203C08F73880F982B9093F9015E
:102640006091F9017091FA018091FB019091FC0178
:102650000E94AE108091F90186958F731F928F931F
:1026600085E293E09F938F930E94B0098091F901D6
:10267000982F9E770F900F900F900F90923019F433
:102680000E94FC1207C08695825C8F73863110F41D
:102690000E94EA128091F901881F8827881F909173
:1026A000FA01292F220F97FB992790F94091FC01FD
:1026B0006091FB01822B0C94C01108958091E6017A
:1026C00081608093E6018FEB93E09F938F930E944C
:1026D000B00981E080937A018091E6010F900F901C
:1026E00080FF08C089EA93E09F938F930E94B0090E
:1026F0000F900F900E942E2C811110C08091E60146
:1027000080FF08C081E893E09F938F930E94B009F7
:102710000F900F900E940F2C0E94B4100E94AA10DC
:102720006093F9017093FA018093FB019093FC018F
:102730006E77C1F48091E60180FF08C088E393E0E2
:102740009F938F930E94B0090F900F900E94B41036
:102750000E94AA106093F9017093FA018093FB0123
:102760009093FC010E94D9100E94D6128091F90129
:1027700080FF04C086958F730C940E13089580918A
:10278000F90186958F738F5F883108F081E00C9492
:102790000E138091F901982F909590FB80F980930A
:1027A000F9016091F9017091FA018091FB0190911A
:1027B000FC010E94AE108091F90181701F928F93ED
:1027C00087EF92E09F938F930E94B0098091F90167
:1027D0000F900F900F900F9080FF04C086958F731D
:1027E0000C940E130E94FC122FEF80E792E0215010
:1027F00080409040E1F700C000000C944E11CF9350
:10280000C82F80917701909178010E94252AEC2FA2
:10281000F0E0E256FB4FE491F0E08E179F0718F1CD
:102820000E94192A9093780180937701E0917601B4
:10283000F0E0EE55FB4F44918091F901881F882705
:10284000881F9091FA01292F220F97FB992790F961
:102850006091FB01822B0E9475118091760190E0BE
:10286000019680937601CF910895CF93C82F8091E0
:102870007401909175010E94252AEC2FF0E0E55635
:10288000FB4FE491F0E08E179F07E8F00E94192AB1
:1028900090937501809374014091FC016091FB015C
:1028A00080917201909173010E9475118091720163
:1028B00090917301019668E671E00E9477369093DB
:1028C000730180937201CF910895CF92DF92FF92AE
:1028D0000F931F93CF93DF93F82E80917001909107
:1028E00071010E94252AEF2DE695F0E0E556FB4F99
:1028F000E491F0E08E179F07C0F10E94192A90938F
:1029000071018093700101E012E0C0E0D0E088E640
:10291000C82EDD24D39480916E0190916F018C0FAD
:102920009D1FB6010E94773698014091FC0160918D
:10293000FB010E94E20F66960D5F1F4FC03681E0DB
:10294000D80749F70E944E1180916E0190916F0156
:10295000F0FE06C0019668E671E00E94773601C07D
:10296000019790936F0180936E01DF91CF911F913A
:102970000F91FF90DF90CF9008958F929F92AF922A
:10298000BF92CF92DF92EF92FF920F931F93CF935C
:10299000DF93C82F80FF03C0DD24DA9402C0DD245A
:1029A000D39480916C0190916D010E94252AC69567
:1029B000EC2FF0E0E856FB4FE491F0E08E179F0714
:1029C00008F466C00E94192A90936D0180936C01EF
:1029D00091E0E92E92E0F92E03E012E0C0E0D0E0B1
:1029E00027E0822E912CF80131971082F701108296
:1029F000F801108287E0A82EB12CC12C80916B01C8
:102A00008C0D87FD805F082E000C990BC817D90725
:102A1000E9F42091FC012A9DC0012B9D900D112409
:102A2000B4010E948B36462F8091F901881F8827B8
:102A3000881F9091FA01592F550F97FB992790F90C
:102A400097016091FB01852B0E94E20FCD0CF1E014
:102A5000AF1AB10899F6219683E0E80EF11C0D5FDC
:102A60001F4FC031D10509F0BECF0E944E11809199
:102A70006B0191E0D91206C0811102C08FE006C03F
:102A8000815004C090E001968F70992780936B016C
:102A9000DF91CF911F910F91FF90EF90DF90CF903A
:102AA000BF90AF909F908F9008959F92AF92BF92EA
:102AB000CF92DF92EF92FF920F931F93CF93DF930A
:102AC000CDB7DEB7E0970FB6F894DEBF0FBECDBF2F
:102AD000182F8091690190916A010E94252AE12FA7
:102AE000F0E0EB56FB4FE491F0E08E179F0708F4FF
:102AF00093C00E94192A90936A0180936901CE01C4
:102B000001967C015E0193E0A90EB11CC12CD12C71
:102B10008701F50131971082F7011082F5011082CB
:102B2000912C9091010180916801999E800D112452
:102B300087FD04C080311CF08FE001C080E0082ECA
:102B4000000C990BC816D906A1F48091F901881FD1
:102B50008827881F9091FA01592F550F97FB9927C5
:102B600090F997014091FC016091FB01852B0E9437
:102B7000E20F9394F7E09F12D4CF8FEFC81AD80AD0
:102B800093E0E90EF11CE3E0AE0EB11CF0E1CF16CC
:102B9000D10409F0BECFA3E0B2E089E090E0FC01EF
:102BA000EF70FF279D0121503109AF01440F551FE0
:102BB000E40FF51FBF01600F711FFB014181F90197
:102BC000408321503109FB014081F9014083FB0121
:102BD00022812C93019613968931910501F70E9469
:102BE0004E119091010180916801913049F48A3F22
:102BF0002CF489EF809368018FEF08C081500AC0E0
:102C000087313CF086E18093680181E08093010187
:102C100003C08F5F80936801E0960FB6F894DEBF23
:102C20000FBECDBFDF91CF911F910F91FF90EF901D
:102C3000DF90CF90BF90AF909F9008951F920F921A
:102C40000FB60F9211242F933F934F935F936F937F
:102C50007F938F939F93AF93BF93EF93FF93809155
:102C6000F90186958F739EE3980F9F73943020F43B
:102C700082500E94FF1323C09AE3980F9F739330F2
:102C800020F486500E9435141AC097E3980F9F7362
:102C9000963020F489500E94651411C091E3980F7A
:102CA0009F73963020F48F500E94BD1408C09BE2A1
:102CB000980F9F73933018F485510E945515FF911A
:102CC000EF91BF91AF919F918F917F916F915F91A4
:102CD0004F913F912F910F900FBE0F901F9018951D
:102CE0008091860108959FB7F89410927D019FBF4F
:102CF00090913502943009F057C09091E9009F708F
:102D00003091EC00232F217030FD20E8922B24E03D
:102D10002093E9002091EB0020FF43C02091EE00BA
:102D200027FF3FC020917B01222321F02091E80062
:102D300025FF37C010927B0126E03091E80035FD79
:102D400015C030913502343061F53091EB0035FD1E
:102D500028C0215021F481E080937B0122C0EFE95B
:102D6000FFE03197F1F700C00000E7CF8093F1005A
:102D70008091E80085FD0AC08091E80080FFFCCFCB
:102D80008091E8008E778093E80006C08FB7F894B2
:102D900021E020937D018FBF9F709093E90080E038
:102DA00008959F709093E9008FEF0895CF93DF937C
:102DB00000D01F92CDB7DEB79C01809135028430E0
:102DC00019F593E099833B832A839093E9008FEF71
:102DD0009091E800815095FD06C095ED9A95F1F728
:102DE00000008111F5CF8091E80085FF0DC040E023
:102DF00050E063E070E0CE0101960E94731980916B
:102E0000E8008E778093E8000F900F900F90DF918D
:102E1000CF910895CF93DF9300D01F92CDB7DEB747
:102E200020913502243021F522E029839B838A8377
:102E300083E08093E9008FEF9091E800815095FD49
:102E400006C095ED9A95F1F700008111F5CF8091BC
:102E5000E80085FF0DC040E050E063E070E0CE0187
:102E600001960E9473198091E8008E778093E800A4
:102E70000F900F900F90DF91CF9108959C0180915A
:102E800035028430F9F482E08093E9009FEF80916D
:102E9000E800915085FD06C085ED8A95F1F70000A8
:102EA0009111F5CF8091E80085FF0CC040E050E023
:102EB00065E070E0C9010E9473198091E8008E7787
:102EC0008093E8000895CF93DF93EC018091350261
:102ED000843039F581E08093E9008FEF9091E8002C
:102EE000815095FD06C095ED9A95F1F7000081118E
:102EF000F5CF8091E80085FF14C040E050E068E025
:102F000070E0CE010E9473198091E8008E77809363
:102F1000E80088E0FE01AEE7B1E001900D928A95ED
:102F2000E1F7DF91CF91089587EC96E00E941709B1
:102F300080913402811109C00E94041B0E94611B10
:102F40008091E20084608093E200089583EC96E033
:102F50000E9417091092340208958FEB96E00C94AA
:102F600017098BEB96E00C94170987EB96E00E940B
:102F700017090C94DC2920917C012F5F822F62E3DA
:102F80000E946B36992319F020937C0108951092CA
:102F90007C0180917D01882371F18091350284301C
:102FA00041F58091E9008F702091EC00922F917093
:102FB00020FD90E8892B94E09093E9009091EB003C
:102FC00090FF14C09091EE0097FF10C09091E80020
:102FD00095FF03C01092F100F9CF9091E80090FFA7
:102FE00005C09091E8009E779093E8008F708093E1
:102FF000E90010927D01089542E061EC81E00E94B9
:103000007D1A42E061EC82E00E947D1A42E061ECB0
:1030100083E00E947D1A42E261EC84E00C947D1A08
:1030200080913702833009F453C030F4813071F05D
:10303000823009F48CC008958A3009F478C08B304E
:1030400009F45EC0893009F09AC020C08091360230
:10305000813A09F094C08091E800877F8093E8006E
:1030600080913A0290913B02892B21F468E08EE72F
:1030700091E003C060E080E090E070E00E94BE1943
:103080008091E8008B778093E80008958091360264
:10309000813209F074C080913A0290913B02892BF1
:1030A00009F06DC08091E800877F8093E8008091EF
:1030B000E80082FD05C0809135028111F8CF5FC024
:1030C0008091F100809386018091E8008B7753C056
:1030D00080913602813A09F052C080913A02909173
:1030E0003B02892B09F04BC08091E800877F8093D9
:1030F000E8008091E80080FFFCCF80910C0136C091
:10310000809136028132D9F580913A0290913B024A
:10311000892BA9F58091E800877F8093E8000E94C1
:10312000B21A8091380280930C010C94362380915E
:103130003602813221F58091E800877F8093E80094
:103140000E94B21A8091390280938701089580917C
:103150003602813AA1F48091E800877F8093E800ED
:103160008091E80080FFFCCF809187018093F1007F
:103170008091E8008E778093E8000C94B21A08954D
:1031800084B7877F84BF0FB6F894A89580916000BC
:10319000886180936000109260000FBE80E8809389
:1031A0006100109261000E94971E0E94041B0E9401
:1031B000611B8091E20084608093E20083E796E1E6
:1031C0000E945E2978940E94EB1D0E94991E82E065
:1031D00091E00E94061E86EA96E00E9417098091FF
:1031E0003502853089F482EA96E00E9417090E9430
:1031F0009B2980913302882391F30E94CB29882355
:1032000071F30E945D19EBCF0E94C11EE8CF292FF8
:10321000332723303105C9F060F42130310581F0C6
:103220002230310509F041C084E790E029EE36E014
:1032300040C021323105E1F02232310531F135C093
:1032400082E190E02DE537E034C099278130910587
:1032500049F028F0029749F5EBECF6E005C0E5EE01
:10326000F6E002C0EBEDF6E0849190E09F0121C012
:103270006430D8F4E62FF0E0EE0FFF1FEC5CFE4F59
:103280002081318189E090E014C0643070F470E0F6
:10329000FB01EE0FFF1FE45DFE4F20813181FB013A
:1032A000E85DFE4F808190E004C080E090E020E087
:1032B00030E0FA0131832083089580E189BD82E105
:1032C00089BD09B400FEFDCF8091D8008F7D809329
:1032D000D8008091E00082608093E0008091E0005F
:1032E00081FDFCCF0895CF92DF92EF92FF920F9372
:1032F0001F93CF93DF93EC018B016A010E94D11AD7
:10330000811133C0C114D10439F0F601808191815B
:10331000081B190BC80FD91FE12CF12C0115110541
:1033200019F18091E80085FD16C08091E8008E7744
:103330008093E800C114D10449F0F60180819181A5
:10334000E80EF91EF182E08285E00FC00E94D11ADA
:10335000882321F30AC089918093F100015011095B
:10336000FFEFEF1AFF0ADACF80E0DF91CF911F91D4
:103370000F91FF90EF90DF90CF90089520913C0245
:1033800030913D022617370748F06115710539F471
:103390002091E8002E772093E80001C0B901FC01DC
:1033A00020E06115710579F1809135028823F1F1F2
:1033B0008530F1F18091E80083FD3CC08091E80008
:1033C00082FD2EC08091E80080FFEBCF2091F300BA
:1033D0008091F20090E0922B6115710551F08830D8
:1033E000910538F421912093F10061507109019603
:1033F000F3CF21E0089709F020E08091E8008E7774
:103400008093E800CECF2111CFCF0AC08091350242
:10341000882361F0853061F08091E80083FD0AC067
:103420008091E80082FFF2CF80E0089582E0089565
:1034300083E0089581E0089520913C0230913D029F
:103440002617370748F06115710539F42091E80017
:103450002E772093E80001C0B901FC0120E061153E
:10346000710591F180913502882309F440C08530BF
:1034700009F43FC08091E80083FD3DC08091E800E1
:1034800082FD2FC08091E80080FFE9CF2091F300FA
:103490008091F20090E0922B6115710559F088300F
:1034A000910540F424912093F10031966150710907
:1034B0000196F2CF21E0089709F020E08091E80022
:1034C0008E778093E800CBCF2111CCCF0AC08091BA
:1034D0003502882361F0853061F08091E80083FD3A
:1034E0000AC08091E80082FFF2CF80E0089582E078
:1034F000089583E0089581E00895982F973068F546
:103500009093E900981739F07091EC002091ED004C
:103510005091F00003C0242F762F50E021FD02C00F
:103520009F5FECCF3091EB003E7F3093EB0030910A
:10353000ED003D7F3093ED003091EB003160309332
:10354000EB007093EC002093ED005093F00020917D
:10355000EE0027FDE5CF80E008958F708093E900AD
:1035600081E008958091360287FF11C08091E800C4
:1035700082FD05C0809135028111F8CF11C0809184
:10358000E8008B770BC080913502882349F0809149
:10359000E80080FFF8CF8091E8008E778093E80004
:1035A00008952091E4003091E50095E64091EC000B
:1035B000842F817040FF23C08091E80080FD1DC0F2
:1035C00080913502882399F0853099F08091EB0045
:1035D00085FD11C04091E4005091E50024173507A6
:1035E00029F3915011F09A01E1CF84E0089582E02F
:1035F000089583E0089581E0089580E00895409162
:10360000E80042FFDDCF08950E94721B0E947A1BE2
:10361000E0EEF0E0808181608083E8EDF0E0808181
:103620008F77808319BCA7EDB0E08C918E7F8C934F
:1036300080818F7E80831092340208950F931F93B0
:10364000CF93DF930E94721B0E947A1BC8EDD0E0DB
:1036500088818F77888388818068888388818F7D3F
:10366000888319BC109235021092310210923302F5
:103670001092320200EE10E0F80180818B7F80838F
:1036800088818160888342E060E080E00E947D1A4A
:10369000E1EEF0E080818E7F8083E2EEF0E08081D9
:1036A00081608083808188608083F80180818E7F43
:1036B0008083888180618883DF91CF911F910F91F2
:1036C0000895E8EDF0E080818F7E8083E7EDF0E003
:1036D00080818160808384E082BF81E080933402B6
:1036E0000C941E1BE8EDF0E080818E7F80831092A9
:1036F000E20008951092DA001092E10008951F92FE
:103700000F920FB60F9211242F933F934F935F9315
:103710006F937F938F939F93AF93BF93EF93FF9399
:103720008091E10082FF0BC08091E20082FF07C020
:103730008091E1008B7F8093E1000E94BB17809114
:10374000DA0080FF1FC08091D80080FF1BC08091ED
:10375000DA008E7F8093DA008091D90080FF0DC05F
:1037600080E189BD82E189BD09B400FEFDCF81E021
:10377000809335020E94941705C019BC109235023F
:103780000E94A6178091E10080FF19C08091E2009D
:1037900080FF15C08091E2008E7F8093E2008091CF
:1037A000E20080618093E2008091D8008062809383
:1037B000D80019BC85E0809335020E94B117809132
:1037C000E10084FF30C08091E20084FF2CC080E1E2
:1037D00089BD82E189BD09B400FEFDCF8091D8008A
:1037E0008F7D8093D8008091E1008F7E8093E100EF
:1037F0008091E2008F7E8093E2008091E200816000
:103800008093E20080913102882311F084E007C0A8
:103810008091E30087FD02C081E001C083E08093D6
:1038200035020E94B5178091E10083FF29C0809185
:10383000E20083FF25C08091E100877F8093E10053
:1038400082E080933502109231028091E1008E7FF8
:103850008093E1008091E2008E7F8093E20080916E
:10386000E20080618093E20042E060E080E00E943C
:103870007D1A8091F00088608093F0000E94AD175F
:10388000FF91EF91BF91AF919F918F917F916F9138
:103890005F914F913F912F910F900FBE0F901F900E
:1038A00018951F920F920FB60F9211242F933F93EA
:1038B0004F935F936F937F938F939F93AF93BF9338
:1038C000CF93DF93EF93FF93C091E900CF70809186
:1038D000EC00D82FD17080FDD0E81092E9008091E3
:1038E000F000877F8093F00078940E94951C1092DE
:1038F000E9008091F00088608093F000CD2BCF70BC
:10390000C093E900FF91EF91DF91CF91BF91AF910B
:103910009F918F917F916F915F914F913F912F91E7
:103920000F900FBE0F901F9018951F93CF93DF93AA
:10393000CDB7DEB7AA970FB6F894DEBF0FBECDBFE6
:10394000E6E3F2E08091F100819322E0EE33F207AA
:10395000C9F70E9410188091E80083FF24C180916C
:10396000360290913702492F50E04A30510508F055
:103970001AC1FA01E15AFF4F0C949F36803881F04A
:10398000823809F010C180913A028F708093E9006B
:103990008091EB0085FB882780F91092E90006C032
:1039A0008091320290913302911182609091E800EF
:1039B000977F9093E8008093F1001092F100C8C0C7
:1039C000282F2D7F09F0EFC0882319F0823061F095
:1039D000EAC080913802813009F0E5C0933009F0E7
:1039E00080E0809333022BC080913802811127C080
:1039F00080913A028F7009F4D6C08093E90020913B
:103A0000EB0020FF1CC0933021F48091EB0080621A
:103A100014C09091EB0090619093EB0021E030E0B6
:103A2000A90102C0440F551F8A95E2F74093EA00AE
:103A30001092EA008091EB0088608093EB00109276
:103A4000E9008091E800877F86C08111ACC01091A9
:103A500038021F778091E3008078812B8093E30008
:103A60008091E800877F8093E8000E94B21A8091DD
:103A7000E80080FFFCCF8091E30080688093E30042
:103A8000111102C082E001C083E0809335028BC037
:103A90008058823008F087C08091380290913902B6
:103AA0008C3D53E0950779F583E08A838AE2898328
:103AB0004FB7F894DE01139620E03EE051E2E32F89
:103AC000F0E050935700E49120FF03C0E295EF70BF
:103AD0003F5FEF708E2F90E0EA3010F0C79601C084
:103AE000C0968D939D932F5F243149F74FBF8091EE
:103AF000E800877F8093E8006AE270E0CE010196DB
:103B00000E94BE1914C0AE014F5F5F4F60913A0230
:103B10000E940719BC01892B09F445C09091E80067
:103B2000977F9093E80089819A810E941C1A809166
:103B3000E8008B778093E80036C08038A1F580914B
:103B4000E800877F8093E800809131028093F10044
:103B50008091E8008E778093E8000E94B21A23C01B
:103B6000811121C0809138029091390299270297E2
:103B7000D4F48091E800877F8093E8008091380238
:103B8000809331020E94B21A80913102811106C0E5
:103B90008091E30087FD02C081E001C084E0809352
:103BA00035020E94FC178091E80083FF0AC08091D3
:103BB000E800877F8093E8008091EB00806280932B
:103BC000EB00AA960FB6F894DEBF0FBECDBFDF9113
:103BD000CF911F910895CF93809135028823A1F052
:103BE000C091E900CF709091EC00892F817090FD19
:103BF00080E8C82B1092E9008091E80083FD0E94C4
:103C0000951CCF70C093E900CF91089590938D01DA
:103C100080938C010895E0918C01F0918D01309793
:103C200021F00190F081E02D099480E00895EF9259
:103C3000FF921F93CF93DF93F82E192FE0918C0101
:103C4000F0918D013097A9F10280F381E02D099563
:103C50008091E60182FF2DC080FF04C08AE598E0D4
:103C60000E941709CF2DD12F18E084E5E82E88E0B7
:103C7000F82E8091E60180FF0BC088811F928F9300
:103C8000FF92EF920E94B0090F900F900F900F904B
:103C9000115021961111EDCF8091E60180FF09C0EE
:103CA00082E598E0DF91CF911F91FF90EF900C9407
:103CB0001709DF91CF911F91FF90EF900895E09148
:103CC0008C01F0918D01309721F00480F581E02D79
:103CD0000994089520918A0130918B0128173907A2
:103CE00071F090938B0180938A01E0918C01F091A7
:103CF0008D01309721F00680F781E02D0994089519
:103D000020918801309189012817390771F090932B
:103D1000890180938801E0918C01F0918D013097A9
:103D200021F00084F185E02D0994089508950C9404
:103D3000961E0E94102A0E948C0E0E94DE2A0E946B
:103D400057340C945E13CF93DF931F92CDB7DEB739
:103D50009091E60192FF10C090FF0EC01F928F93CA
:103D60002CE638E03F932F9389830E94B0090F908F
:103D70000F900F900F9089810F90DF91CF910C944D
:103D8000380E4F925F927F928F929F92AF92BF9226
:103D9000CF92DF92EF92FF920F931F93CF93DF9317
:103DA00000D000D01F92CDB7DEB70E94D10E99E9A6
:103DB000C92E91E0D92E04E010E0AA24A394B12CDE
:103DC000702E802F0E94540F4C01F60152904290A9
:103DD0006F014826592641145104A1F401501109DC
:103DE00078F78FEF89838A831B820E94192A81606A
:103DF000782F9D838C8349815A816B818D810E94AC
:103E0000711F38C08091E60181FD0E945D0F2DE099
:103E100030E07501022E02C0EE0CFF1C0A94E2F79E
:103E2000C2018E219F21892B09F129837A828E205C
:103E30009F2091E0892809F490E09B830E94192A31
:103E40008160782F9D838C8349815A816B818D811C
:103E50000E94711F000F111FF801E157FE4F808172
:103E60009181E826F926F182E08204C021503109CF
:103E700080F6B4CF0E94592E0E940B1E90918E01A5
:103E80008917D1F00E940B1E80938E010F900F9026
:103E90000F900F900F90DF91CF911F910F91FF9096
:103EA000EF90DF90CF90BF90AF909F908F907F90DA
:103EB0005F904F900C94A31E0F900F900F900F9057
:103EC0000F90DF91CF911F910F91FF90EF90DF90B6
:103ED000CF90BF90AF909F908F907F905F904F90CA
:103EE0000895CF93DF93CDB7DEB72B970FB6F89435
:103EF000DEBF0FBECDBF4F83588769877A878B8718
:103F0000DE01119686E0FD0111928A95E9F785E0C0
:103F1000FE01379601900D928A95E1F749815A8109
:103F20006B817C818D819E810E94CE252B960FB660
:103F3000F894DEBF0FBECDBFDF91CF910895CF9330
:103F4000C82F882309F4C1C0823859F40E940B1E7F
:103F500081FDBBC089E30E94A9280E942F2989E323
:103F60000CC0833879F40E940B1E80FDAEC083E53F
:103F70000E94A9280E942F2983E50E94C628CF917C
:103F80000C942F29843859F40E940B1E82FD9DC089
:103F900087E40E94A9280E942F2987E4EECF8CEFA6
:103FA0008C0F813A48F48C2F0E94023381118DC00E
:103FB0008C2F0E94A928E3CF80E28C0F883048F430
:103FC000C77081E001C0880FCA95EAF70E94E8280F
:103FD000D6CF8BE58C0F833078F4C53A29F0C63AFA
:103FE00031F083E890E005C081E890E002C082E80B
:103FF00090E0CF910C946A1E88E58C0F833108F015
:1040000064C0C83A39F1C93A41F1CA3A49F1CB3AE8
:1040100051F1CC3A59F1CD3A61F1C03B69F1CE3A58
:1040200071F1CF3A79F1C13B81F1C23B89F1C33BD8
:1040300091F1C43B99F1C53BA1F1C63BA9F1C73B46
:10404000B1F1C83BB9F1C93BC1F1CA3BC9F180E04C
:1040500090E038C082EE90E035C089EE90E032C04A
:104060008AEE90E02FC085EB90E02CC086EB90E0CC
:1040700029C087EB90E026C08CEC90E023C08DEC4B
:1040800090E020C083E891E01DC08AE891E01AC06A
:1040900082E991E017C084E991E014C081E292E0E6
:1040A00011C083E292E00EC084E292E00BC085E290
:1040B00092E008C086E292E005C087E292E002C08A
:1040C0008AE292E0CF910C94801ECF9108958823CC
:1040D00009F44BC0823859F40E940B1E81FF45C081
:1040E00089E30E94A9280E942F2989E30CC0833804
:1040F00071F40E940B1E80FF38C083E50E94A9283E
:104100000E942F2983E50E94C6280C942F29843809
:1041100059F40E940B1E82FF28C087E40E94A92840
:104120000E942F2987E4EFCF9CEF980F913A58F324
:1041300090E2980F983050F4877091E001C0990F89
:104140008A95EAF7892F0E94EE28DFCF9BE5980F2A
:10415000933020F480E090E00C946A1E885A8331FA
:1041600020F480E090E00C94801E0895882321F0D4
:104170000E94E8280C942F290895882321F00E949A
:10418000EE280C942F2908958F929F92AF92BF92A0
:10419000CF92DF92EF92FF920F931F93CF93DF9313
:1041A0001F92CDB7DEB77C01C62E472FFC010581DB
:1041B00002950F701281112321F079830E94052945
:1041C000498149830E94A2284981882381F01123D3
:1041D00071F080E28C0D883050F082E00E948B28D4
:1041E0000E94A22891E0D82ED926498101C0D12C65
:1041F000E42FE295EF708E2F90E0FC01E759FF4F1E
:104200000C949F36842F807F042F0F70882311F029
:104210000295007F112389F0002309F488C180E210
:104220008C0D883020F4802F0E94E82803C0802F56
:104230000E94F8280E942F297AC18C2D0E946720A5
:10424000002309F4AAC180E28C0D883020F4802F6D
:104250000E94EE2803C0802F0E94FE280E942F2972
:104260009CC1942F907F842F8F70903211F0829593
:10427000807FCC2021F0F1E0CF16A1F01DC01123EA
:1042800039F0002319F1013009F50E94182985C180
:10429000002319F0013009F480C189830E941B2991
:1042A000898103C1112321F0063008F076C10EC0C8
:1042B000053008F072C1F9C0112359F0002331F024
:1042C000F701958190FF33C19F7095830E94B620BE
:1042D00064C1002309F4E9C030C1842F8695869516
:1042E000837019F0813061F058C1112321F08C2DB9
:1042F000942F937002C080E090E00E946A1E4DC12E
:10430000112321F08C2D942F937002C080E090E057
:104310000E94801E42C18C2D112319F00E94DF2CB7
:1043200002C00E94472D0E94CC2D37C1842F83707C
:1043300009F04DC0111131C12C2D22952695277001
:10434000220F220F6C2D6F70862F90E0A0E0B0E05E
:104350004C015D01022E04C0880C991CAA1CBB1CD8
:104360000A94D2F7C4FE12C08FE090E0A0E0B0E063
:1043700004C0880F991FAA1FBB1F2A95D2F7BC0142
:10438000CD01609570958095909503C060E070E0D8
:10439000CB01242F269526952370223051F080F4EE
:1043A000682979298A299B29213071F00E941727D1
:1043B000F4C0682979298A299B290E943327EDC0F6
:1043C0000E941727C501B4010E94FB26E6C01123F5
:1043D00019F0842F817001C08695882309F4DDC00F
:1043E0002C2D229526952770220F220F6C2D6F7091
:1043F000862F90E0A0E0B0E04C015D01022E04C0E9
:10440000880C991CAA1CBB1C0A94D2F7C4FE12C0CB
:104410008FE090E0A0E0B0E004C0880F991FAA1FD1
:10442000BB1F2A95D2F7BC01CD0160957095809590
:10443000909503C060E070E0CB01242F269526956F
:104440002370223051F080F4682979298A299B2928
:10445000213071F00E94F127A0C0682979298A29AA
:104460009B290E940D2899C00E94F127C501B40123
:104470000E94D52792C08C2D90E0FC01E05EF109EE
:10448000E531F10508F04FC0E758FF4F0C949F3617
:104490000C2D0F70842F8F71112321F00E946E2735
:1044A000802F14CF0E948F27802F0E94BD2075C0BF
:1044B000112341F0053008F070C0842F8F710E94E5
:1044C000B4276BC0063008F068C0F7CF112339F06D
:1044D000842F8F710E946E2760C01123C9F3842F2F
:1044E0008F710E948F2759C0112329F0842F8F715B
:1044F0000E94592752C00E944F274FC0112351F0EC
:10450000142F1F71812F0E946E2763E0812F0E945C
:10451000822843C081E00E948B280230F0F182E0C3
:104520000E948B283AC0112331F0002389F28C2D90
:104530000E949F1F32C0002391F28C2D0E946720A1
:104540002CC04F706C2DC7010E94A60D0E947326CF
:1045500024C0111122C0842F8F70823099F038F45A
:10456000882369F08130C9F40E94923416C08330E8
:1045700061F0843091F48C2D0E941D350EC00E9494
:1045800068340BC00E94C13408C00E94E73405C0E3
:104590004F706C2DC7010E94050ADD20F1F00E94CA
:1045A0007E2880FD1AC0F70112820E9478280E949E
:1045B0006E27C7010E94FB220E9478280F90DF918E
:1045C000CF911F910F91FF90EF90DF90CF90BF9010
:1045D000AF909F908F900C948F270F90DF91CF9189
:1045E0001F910F91FF90EF90DF90CF90BF90AF9011
:1045F0009F908F9008950F931F93CF93DF93EC01BB
:104600008B819C81892BC9F089818F3F19F4888126
:104610008F3F99F0CE010E94700A882371F0688163
:1046200079818A810E9474288C010E9429280E9425
:10463000F026B801CE010E94C420DF91CF911F91D6
:104640000F9108950E9405290E9415290E94D728DC
:104650000E942F290E94FE2E0E94CC2D80E090E027
:104660000E946A1E80E090E00C94801E0E94F52853
:104670000C9422230E946928292F22952F702C3018
:1046800030F42A3048F42250223098F405C02C30FF
:1046900061F02F3051F00DC0803F69F018F4803E7A
:1046A00040F409C0843F29F406C093FB882780F9B1
:1046B000089580E0089581E00895CF93DF9300D0BE
:1046C00000D01F92CDB7DEB70F900F900F900F90D4
:1046D0000F90DF91CF910895CF93DF9300D000D05A
:1046E00000D0CDB7DEB726960FB6F894DEBF0FBE6A
:1046F000CDBFDF91CF9108951F93CF93DF93C091EA
:10470000990116E080919A01C81799F0D0E01C9F9A
:10471000F0011D9FF00D1124E556FE4F408151819F
:1047200062817381848195810E946C232196C77078
:10473000E9CFDF91CF911F9108954091CB01509126
:10474000CC016091CD017091CE018091CF0190910B
:10475000D0010C946C238091D00182958F7009F068
:1047600054C08091CD01882309F44FC080919901F4
:10477000A0919A014091CE015091CF016091CB015F
:104780007091CC01B6E08A1709F43FC090E0411562
:104790005105C1F17F3F11F46F3FA1F1B89FF001C6
:1047A000B99FF00D1124E556FE4F218127132AC031
:1047B0002081261327C02281211124C02381348126
:1047C0002417350710F421503109241B350B283CE0
:1047D0003105C0F42091D0012F7020612093D001C9
:1047E00026E0289FF001299FF00D1124E056FE4F8E
:1047F00080818F70806180838BEC91E00E94FB222E
:104800000C947C2301968770BECF0895CF92DF92DF
:10481000EF92FF920F931F93CF93DF93CDB7DEB745
:1048200062970FB6F894DEBF0FBECDBF8C0185E056
:10483000F801DE011D9601900D928A95E1F7D801ED
:104840004C9111965C91119712966C918091CE01CA
:104850009091CF01009709F475C13091CB0170910F
:10486000CC017F3F19F43F3F09F46CC1F801C380CC
:10487000D480E090CD01EE2009F4BEC02091D0019B
:10488000C816D90628F0D601A81BB90BCD0104C063
:10489000809590958C0D9D1DFF24F394883C910587
:1048A00078F0F12C207F09F0C4C07C2DD98AC88A09
:1048B00089890E945D238BEC91E00E94FB22AFC0AE
:1048C000822F807F09F045C0571313C0431311C0D6
:1048D00061110FC02F7020612093D0010E949D2391
:1048E0008BEC91E00E94FB228091D001F80185833E
:1048F0002EC0CD2819F15F3F11F44F3FF9F0F62E8D
:1049000061111CC08091990120919A0136E08217B3
:1049100009F45BC090E0389FF001399FF00D11243D
:10492000E556FE4F7181571306C07081471303C0CF
:104930007281711103C001968770E9CFF62E66234C
:1049400009F41CC18091D00181608093D001F12CC9
:1049500015C1571309C0431307C0611105C08091E9
:10496000D001F8018583C8C04D875E878D859E85FF
:104970006A8B0E943A236A898823D1F16623C1F1A8
:104980002091D001822F82958F7090E0029774F071
:104990008091CB019091CC0198878F831986DB861B
:1049A000CA862C87CE0107960E94FB2286E0F8017A
:1049B000ABECB1E001900D928A95E1F70E94AB2338
:1049C0000E949D23FF24F394D9C04D875E878D8577
:1049D0009E850E946928292F22952F70223008F089
:1049E000C1C09F7009F0BBC0805E883008F4C6C0AB
:1049F000C8010E94FB22E6CFC816D90608F453C0AE
:104A0000F601E81BF90BCF01883C910508F450C072
:104A1000F12C7C2DD98AC88A89890E945D23EBEC10
:104A2000F1E086E0DF011D928A95E9F70E949D235F
:104A3000A5C0571314C0431312C0611110C0809158
:104A4000D001F8018583C8010E94FB2286E0EBECCF
:104A5000F1E0DF011D928A95E9F7FE2C8FC04D87AA
:104A60005E878D859E856A8B0E943A236A8988239A
:104A700009F4BECF662309F4BBCF2091D001822F69
:104A800082958F7090E002970CF490CF8091CB01CB
:104A90009091CC019A8389831B82DD82CC822E8304
:104AA000CE01019681CF809590958C0D9D1DACCF48
:104AB000F62E662309F49CCF571333C0431331C03D
:104AC0002091D00120FD24C0822F82958F70482F25
:104AD00050E041155105E1F0D80115962C9315973A
:104AE0004F30510549F08F5F982F9295907F822F1C
:104AF0008F70892B15968C93C8010E94FB2286E04B
:104B0000F801ABECB1E001900D928A95E1F78ECF00
:104B100086E0F801ABECB1E001900D928A95E1F7E7
:104B20002DC04D875E878D859E850E943A23811119
:104B30003DCF8091D00181608093D001C8010E9457
:104B4000FB221CC0662309F453CF4D875E878D85F9
:104B50009E850E943A23882309F44ACF27CF8111EA
:104B600043CF0CC0243008F043CF9F7009F43CCFF2
:104B7000D80115969C91907F09F036CF8F2D6296C3
:104B80000FB6F894DEBF0FBECDBFDF91CF911F915E
:104B90000F91FF90EF90DF90CF9008951F93CF93E8
:104BA000DF93CDB7DEB72C970FB6F894DEBF0FBEFC
:104BB000CDBF4F83588769877A878B879C87CE01C3
:104BC00007960E940624882371F08A859B85892B8D
:104BD00009F441C088858F3F09F065C08F818F3F00
:104BE00009F061C038C086E0FE013796DE011196FB
:104BF00001900D928A95E1F76A857B8561157105B3
:104C000051F1FF81E885EF3F11F4FF3F21F1209141
:104C10009A0130E0C9010196877099274091990166
:104C200050E08417950709F447C0F983EA837D8330
:104C30006C8396E0929FD001939FB00D1124A556EE
:104C4000BE4FFE01319601900D929A95E1F7809347
:104C50009A010E947C2316E08091990190919A011B
:104C60008917B9F1189FC001112485569E4F0E94E3
:104C70000624882371F1E09199011E9FF00111240F
:104C8000E556FE4F40815181628173818481958117
:104C90000E946C238091990190E00196877099277A
:104CA00080939901D9CF4F81588569857A858B8505
:104CB0009C850E946C23CFCF0E94362310929A01CC
:104CC00010929901EBECF1E086E0DF011D928A95EC
:104CD000E9F72C960FB6F894DEBF0FBECDBFDF917B
:104CE000CF911F910895EF92FF920F931F93CF934F
:104CF000DF938C01892B09F46CC0F12CEE24E39432
:104D0000E8012196F8018491843740F4843008F05A
:104D100051C0813081F0823019F15BC0853709F4D0
:104D200044C0A8F19CE7980F903708F052C08F77E5
:104D30000E94672041C00E5F1F4FFE01849190E2E8
:104D4000980F983050F48770FE2D01C0FF0F8A95A0
:104D5000EAF78F2F0E94082914C00E949F1F2DC0C0
:104D60000E5F1F4FFE01849190E2980F983060F41F
:104D70008770FE2D01C0FF0F8A95EAF78F2F0E94E2
:104D80000E290E942F2919C00E94672016C00E5FAD
:104D90001F4FFE01C491CC2381F08FE99FE0019762
:104DA000F1F700C00000C150F6CF0E5F1F4FFE01AB
:104DB000F49003C00E949F1F8E018F2D882309F459
:104DC0009FCFEFE9FFE03197F1F700C0000081507D
:104DD000F5CFDF91CF911F910F91FF90EF90089544
:104DE00008956093D5017093D6018093D701909375
:104DF000D8010C9422230F931F930091D501109199
:104E0000D6012091D7013091D801DC01CB01802B54
:104E1000912BA22BB32B8093D5019093D601A09315
:104E2000D701B093D8011F910F910C9422230F93B7
:104E30001F930091D5011091D6012091D701309197
:104E4000D801DC01CB0180239123A223B3238093DB
:104E5000D5019093D601A093D701B093D8011F91AB
:104E60000F910C9422230F931F930091D501109161
:104E7000D6012091D7013091D801DC01CB018027E8
:104E80009127A227B3278093D5019093D601A093B1
:104E9000D701B093D8011F910F910C942223109247
:104EA000D1011092D2011092D3011092D4010C942E
:104EB000222341E050E060E070E004C0440F551F41
:104EC000661F771F8A95D2F74093D1015093D20184
:104ED0006093D3017093D4010C94222341E050E0FD
:104EE00060E070E004C0440F551F661F771F8A956D
:104EF000D2F78091D1019091D201A091D301B091CC
:104F0000D401482B592B6A2B7B2B4093D101509312
:104F1000D2016093D3017093D4010C94222341E019
:104F200050E060E070E004C0440F551F661F771F1B
:104F30008A95D2F740955095609570958091D101F2
:104F40009091D201A091D301B091D401482359236B
:104F50006A237B234093D1015093D2016093D30104
:104F60007093D4010C94222341E050E060E070E0A3
:104F700004C0440F551F661F771F8A95D2F7809192
:104F8000D1019091D201A091D301B091D4014827D1
:104F900059276A277B274093D1015093D201609310
:104FA000D3017093D4010C9422230F931F9300918B
:104FB000D1011091D2012091D3013091D401DC01B3
:104FC000CB01802B912BA22BB32B8093D1019093FB
:104FD000D201A093D301B093D4011F910F910C94EF
:104FE00022230F931F930091D1011091D2012091A0
:104FF000D3013091D401DC01CB0180239123A22382
:10500000B3238093D1019093D201A093D301B093A5
:10501000D4011F910F910C9422230F931F930091A1
:10502000D1011091D2012091D3013091D401DC0142
:10503000CB0180279127A227B3278093D10190939A
:10504000D201A093D301B093D4011F910F910C947E
:1050500022230895CF92DF92EF92FF920F931F9336
:10506000CF93DF938C01C090D101D090D201E0901A
:10507000D301F090D4018091D5019091D601A091F7
:10508000D701B091D801C82AD92AEA2AFB2ACFE150
:10509000D0E0D701C6010C2E04C0B695A795979510
:1050A00087950A94D2F780FD04C0219790F780E09D
:1050B00007C0B8018C2F0E94030C0197B1F38C2F0D
:1050C000DF91CF911F910F91FF90EF90DF90CF90E4
:1050D0000895CF93DF93EC010E942A28BE010E941D
:1050E000030CDF91CF910895CB010E9469280895A8
:1050F0008091D90185958595859508958091D901EF
:105100008770089598E0899F90011124262B2093A1
:10511000D9010C946E272091D90180958223809328
:10512000D901982F977069F430E0482F082E000CB1
:10513000550B2417350729F08595859585950C9491
:105140008F2708959091D901977081E009F480E04C
:10515000089520910D0130910E01F90132969FEFD3
:1051600040E05191851789F09F3F19F4511101C01A
:10517000942F4F5F4630A9F79F3F39F0F901E90FAF
:10518000F11D97FDFA9582830895089520910D01F0
:1051900030910E01F9013296285F3F4F90818913BB
:1051A00001C010823196E217F307C1F7089581E03C
:1051B00090E0E0910D01F0910E01E80FF91F1082CF
:1051C000019688309105A9F708958091E501089529
:1051D0009091E501892B8093E50108958095909148
:1051E000E50189238093E50108951092E501089572
:1051F0009091E401892B8093E4010895809590912A
:10520000E40189238093E40108951092E401089554
:105210009091E301892B8093E3010895809590910B
:10522000E30189238093E30108951092E301089537
:105230008093DA0108951092DA01089580910D01AA
:1052400090910E01FC0131969C01285F3F4F80E058
:10525000919191118F5FE217F307D1F70895E091D3
:105260000D01F0910E018091E5018083E0910D0127
:10527000F0910E0190818091E401892B8083E0916F
:105280000D01F0910E0190818091E301892B8083C3
:105290008091DA01882361F0E0910D01F0910E0117
:1052A0009081892B80830E941E2981111092DA013E
:1052B00080910D0190910E010C94171E909347015F
:1052C00080934601089520E0009739F0AC014150E9
:1052D0005109842395232F5FF7CF822F089582955C
:1052E000982F937344E0949F900111248C7C8695B1
:1052F0008695282B822F8575880F2A7A2695822BF2
:1053000008951F93CF93DF931F92CDB7DEB7998394
:105310000E946F29182F9981892F0E946F29212FB0
:1053200030E0322F2227A901482BCA010F90DF91CC
:10533000CF911F91089580913502843051F11092E0
:10534000E70120E488E190E00FB6F894A8958093F7
:1053500060000FBE2093600080E00E94DB0980E0C7
:105360000E94380E83B7817F846083BF83B78160DA
:1053700083BF7894889583B78E7F83BF0FB6F894E8
:10538000A895809160008861809360001092600011
:105390000FBE0895089580E00E94DB090E944E0E22
:1053A0000E94D10E0E94CA290E94970F91E081119C
:1053B00001C090E0892F08950E94362380E00E946A
:1053C000DB090E9457340E940B1E0C94380E1F926A
:1053D0000F920FB60F9211248F939F93AF93BF93A9
:1053E0008091E701811113C08091E8019091E9015A
:1053F000A091EA01B091EB014196A11DB11D8093EE
:10540000E8019093E901A093EA01B093EB01BF9109
:10541000AF919F918F910F900FBE0F901F90189595
:1054200082E084BD93E095BD9AEF97BD80936E00B6
:1054300008952FB7F8948091E8019091E901A09127
:10544000EA01B091EB012FBF0895CF92DF92EF9266
:10545000FF920F931F932FB7F8944091E80150915A
:10546000E9016091EA017091EB012FBF6A017B01B4
:10547000EE24FF248C0120E030E0C016D106E206C5
:10548000F30610F4415051099A01281B390BC90148
:105490001F910F91FF90EF90DF90CF9008951F9292
:1054A0000F920FB60F9211248F939F93AF93BF93D8
:1054B0008091E8019091E901A091EA01B091EB019E
:1054C0000196A11DB11D8093E8019093E901A0937D
:1054D000EA01B093EB01BF91AF919F918F910F9033
:1054E0000FBE0F901F9018950E94041BF8942FEF89
:1054F00087EA91E6215080409040E1F700C000002B
:1055000087E090EBDC0180933F0290934002A093F0
:105510004102B09342029CE088E10FB6F894A8954E
:10552000809360000FBE90936000FFCFAF92BF9258
:10553000CF92DF92EF92FF920F931F93CF93C4E02D
:10554000CC24C394D12CE82EF12C8C2F0E94540F24
:105550005C010DE010E0C601002E02C0880F991F0B
:105560000A94E2F78A219B21892B51F0602F7C2F2E
:1055700080E00E94A90DE816F90611F481E006C04A
:105580000150110940F7C15000F780E0CF911F9101
:105590000F91FF90EF90DF90CF90BF90AF90089564
:1055A000CF93C82F8CE20E94962A882321F08C2F5B
:1055B000CF910C94962A80E0CF910895CF930E94CA
:1055C0002E2C811102C00E940F2C8CE898E00E94C2
:1055D0001709C5E6C15049F00E94D10E8FE39CE93E
:1055E0000197F1F700C00000F5CF85E898E00E9430
:1055F000170989E20E94D02A81110FC18AE20E9414
:10560000D02A81110E940F2C85E00E94D02A81119E
:105610000E94742A0E94392C8093E60187E00E9440
:10562000D02A8823A9F18BE10E94D02A882351F047
:105630008091E60181FB222720F991E0922790FBDF
:1056400081F90EC08EE00E94D02A882361F08091FB
:10565000E60182FB222720F991E0922790FB82F954
:105660008093E60115C080E10E94D02A9091E60166
:10567000882341F093FB222720F981E0822780FBD9
:1056800093F904C0892F809580FB90F99093E601EF
:105690008091E6010E943D2C0E944B2C90E090935B
:1056A000F8018093F70180EE0E94D02A882341F010
:1056B0008091F701982F909590FB80F98093F701E6
:1056C00089E30E94D02A882359F08091F70181FB59
:1056D000222720F991E0922790FB81F98093F7012E
:1056E00082EE0E94D02A882359F08091F70182FB34
:1056F000222720F991E0922790FB82F98093F7010D
:1057000086EE0E94D02A882359F08091F70183FB0E
:10571000222720F991E0922790FB83F98093F701EB
:1057200083EE0E94D02A882359F08091F70184FBF0
:10573000222720F991E0922790FB84F98093F701CA
:1057400085E30E94D02A882359F08091F70185FBD8
:10575000222720F991E0922790FB85F98093F701A9
:1057600081E30E94D02A882359F08091F70186FBBB
:10577000222720F991E0922790FB86F98093F70188
:1057800081E10E94D02A882359F08091F70187FB9C
:10579000222720F991E0922790FB87F98093F70167
:1057A0008091F7010E944F2C87E20E94D02AC82FD7
:1057B0008EE10E94D02A8111C2608FE10E94D02A1E
:1057C0008111C46080E20E94D02A8111C86081E208
:1057D0000E94D02A8111C06182E20E94D02A8111E8
:1057E000C06283E20E94D02A8111C06484E20E94D8
:1057F000D02A882311F0C06802C0CC2329F08C2F56
:105800000E94462C6C2F03C00E94422C682F70E02F
:1058100080E090E0CF910C94F126CF9108956DEE49
:105820007EEF80E090E00E94D73660E082E090E07A
:105830000E94B93660E083E090E00E94B93660E0F3
:1058400084E090E00E94B93660E085E090E00E943C
:10585000B93660E086E090E00C94B93680E090E0E4
:105860000E94B33621E08D3E9E4F09F020E0822F4A
:10587000089582E090E00C94A536682F82E090E0D5
:105880000C94B93683E090E00C94A536682F83E041
:1058900090E00C94B93684E090E00C94A536682F23
:1058A00084E090E00C94B93686E090E00C94A53644
:1058B000682F86E090E00C94B9368091EE0180FF6D
:1058C0000BC06091120185E0689FB00111247595AD
:1058D0006795759567952BC081FF09C0609112018E
:1058E00085E0689FB00111247595679520C082FFFF
:1058F00007C06091120185E0689FB001112417C0B4
:105900009091EF019923D1F060911101961788F7DA
:105910002091120185E0289F90011124929FA001FF
:10592000939F500D112470E0CA010E948B3660389D
:10593000710540F46115710519F406C065E070E069
:10594000862F08958FE7089581E008958091EE01F4
:1059500080FF08C06091100170E07595679575959E
:10596000679521C081FF06C06091100170E07595B8
:10597000679519C082FF04C06091100170E010C0EB
:105980009091EF01992399F060910F019617A0F77C
:1059900080911001899FC001112470E00E948B3614
:1059A0006038710540F46115710519F406C061E0B5
:1059B00070E0862F08958FE7089581E00895803F75
:1059C00021F40E945D2C819504C0813F29F40E943E
:1059D0005D2C8093F2010895823F21F40E945D2C9A
:1059E000819504C0833F29F40E945D2C8093F101CE
:1059F0000895893F19F40E94A62C05C08A3F31F40E
:105A00000E94A62C81958093F30108958B3F21F489
:105A10000E94A62C819504C08C3F29F40E94A62CDC
:105A20008093F4010895843F21F48091F001816016
:105A300017C0853F21F48091F001826011C0863F3C
:105A400021F48091F00184600BC0873F21F48091A4
:105A5000F001886005C0883F31F48091F0018061D9
:105A60008093F00108958D3F21F48091EE018160D3
:105A70000BC08E3F21F48091EE01826005C08F3F04
:105A800029F48091EE0184608093EE010895803FB7
:105A900039F48091F20187FF6CC01092F20169C065
:105AA000813F29F48091F2011816BCF362C09091F5
:105AB000F101823F29F497FF5CC01092F10159C0B7
:105AC000833F19F41916CCF354C0893F41F48091F7
:105AD000F30118160CF04DC01092F3014AC08A3F32
:105AE00029F48091F30187FF44C0F6CF8B3F39F44E
:105AF0008091F40187FF3DC01092F4013AC08C3FC1
:105B000029F48091F4011816BCF333C0843F21F4CA
:105B10008091F0018E7F17C0853F21F48091F001C4
:105B20008D7F11C0863F21F48091F0018B7F0BC0E7
:105B3000873F21F48091F001877F05C0883F31F4D1
:105B40008091F0018F7E8093F00113C08D3F21F48E
:105B50008091EE018E7F0BC08E3F21F48091EE018B
:105B60008D7F05C08F3F29F48091EE018B7F80935C
:105B7000EE018091F10181110EC08091F20181113D
:105B80000AC08091F301811106C08091F401811156
:105B900002C01092EF0108958091E60183FF7EC05C
:105BA00088EC98E00E9417098091F0011F928F9372
:105BB00083EC98E09F938F930E94B00981EC98E06A
:105BC0000E9417098091F101282F082E000C330B39
:105BD0003F938F938EEB98E09F938F930E94B00931
:105BE0008CEB98E00E9417098091F201282F082E73
:105BF000000C330B3F938F9389EB98E09F938F9327
:105C00000E94B00987EB98E00E9417098091F30188
:105C1000282F082E000C330B3F938F9384EB98E0D2
:105C20009F938F930E94B00982EB98E00E9417091E
:105C30008091F401282F082E000C330B3F938F9393
:105C40008FEA98E09F938F930E94B0098CEA98E0C6
:105C50000E9417098091EF011F928F9389EA98E0C3
:105C60009F938F930E94B00987EA98E00E941709DA
:105C70008091EE011F928F9384EA98E09F938F9317
:105C80000E94B00981EA98E00E9417098DB79EB77B
:105C90004C960FB6F8949EBF0FBE8DBF80EF91E07B
:105CA0000E945F1E0E94192A9093ED018093EC01DF
:105CB00008951F93CF93DF938091EC019091ED01B4
:105CC0000E94252AAC019091EF01992321F02091A7
:105CD000130130E006C0209114018AE0289F900152
:105CE00011244217530708F485C08091F101C09137
:105CF000F201D091F3011091F401811107C0C1119B
:105D000075C0D11173C0111171C074C09F3F19F0DB
:105D10009F5F9093EF01181624F40E945D2C8093EE
:105D2000F1018091F10187FF05C00E945D2C8195F2
:105D30008093F1011C1624F40E945D2C8093F201E3
:105D40008091F20187FF05C00E945D2C81958093B0
:105D5000F2016091F101662331F1C091F201CC238F
:105D600011F1062E000C770B880B990B0E947235EF
:105D700023E333E343E35FE30E94D6350E943A35E1
:105D80006093F1016C2FCC0F770B880B990B0E945D
:105D9000723523E333E343E35FE30E94D6350E9489
:105DA0003A356093F2011D1624F40E94A62C8093CC
:105DB000F3018091F30187FF05C00E94A62C819515
:105DC0008093F301111624F40E94A62C8093F40111
:105DD0008091F40187FF05C00E94A62C81958093D5
:105DE000F401DF91CF911F910C94CC2D9F3F09F0CE
:105DF0008FCFA0CFDF91CF911F910895E0EFF1E019
:105E000085E0DF011D928A95E9F71092EF0110926B
:105E1000EE0108958BEE9AE00E9417091F9281E02F
:105E20008F931F9285E08F938DE99AE09F938F93D4
:105E30000E94B0090F900F900F900F900F900F904D
:105E400008958330E9F128F4813061F0823009F15E
:105E50000895853009F462C008F449C0863009F419
:105E600074C0089580911401262F30E0280F311D51
:105E70002F3F310524F4680F6093140103C08FEFA6
:105E800080931401809114011F928F9386ED99E005
:105E900072C080911301262F30E0280F311D2F3F53
:105EA000310524F4680F6093130103C08FEF8093D2
:105EB0001301809113011F928F9384EC99E05BC0D2
:105EC00080911201262F30E0280F311D2F3F310520
:105ED00024F4680F6093120103C08FEF80931201C6
:105EE000809112011F928F9381EB99E044C08091C1
:105EF0001101262F30E0280F311D2F3F310524F4EA
:105F0000680F6093110103C08FEF8093110180919E
:105F100011011F928F938CE999E02DC0809110019F
:105F2000262F30E0280F311D2F3F310524F4680F54
:105F30006093100103C08FEF8093100180911001D6
:105F40001F928F9383E899E016C080910F01262F4E
:105F500030E0280F311D2F3F310524F4680F609386
:105F60000F0103C08FEF80930F0180910F011F92EB
:105F70008F9388E699E09F938F930E94B0090F90CA
:105F80000F900F900F900895833081F128F48130A5
:105F900059F08230D1F00895853009F449C0B8F144
:105FA000863009F456C0089580911401681720F4D2
:105FB000861B8093140102C0109214018091140179
:105FC0001F928F9389E599E054C08091130168175F
:105FD00020F4861B8093130102C01092130180915C
:105FE00013011F928F9387E499E043C080911201BF
:105FF000681720F4861B8093120102C010921201D0
:10600000809112011F928F9384E399E032C08091B6
:106010001101681720F4861B8093110102C01092B1
:106020001101809111011F928F938FE199E021C09E
:1060300080911001681720F4861B8093100102C024
:1060400010921001809110011F928F9386E099E0C9
:1060500010C080910F01681720F4861B80930F01F8
:1060600002C010920F0180910F011F928F938BEE4F
:1060700098E09F938F930E94B0090F900F900F901C
:106080000F900895CF93C82F1F928F9380EF9BE0BE
:106090009F938F930E94B00981E090E0A0E0B0E070
:1060A000BC01CD0104C0660F771F881F991FCA95D8
:1060B000D2F70E94F1260F900F900F900F90CF9182
:1060C0000C943623CF938732B0F58E3108F088C216
:1060D0008E3009F402C200F5873009F4CBC1A8F470
:1060E000863009F083C28091E601817F8E7F8093A4
:1060F000E60187E49DE00E9417098BE191E10E948F
:10610000170981E08093F601B3C1883009F43FC0DC
:106110008B3009F4A9C16AC2863109F424C220F483
:10612000803109F4EEC162C2893109F405C28B31B4
:1061300009F4BFC15BC2883309F496C150F48932B7
:1061400009F450C2853309F44DC2873209F44AC2BA
:106150004DC2833409F446C228F48A3308F446C297
:10616000895341C2883409F041C20E9436238FEF1F
:1061700090E10E9417099FEF23ED80E391502040AA
:106180008040E1F700C000000E94742A71C18FE1D5
:1061900091E10E94170981E890E10E9417090E948D
:1061A000422C1F928F938EE790E19F938F930E94D2
:1061B000B0098CE790E10E9417090E94392CC82F82
:1061C00089E690E10E9417091F92CF9384E690E13F
:1061D0009F938F930E94B00982E690E10E94170975
:1061E00088E590E10E9417098C2F81701F928F9390
:1061F00085E590E19F938F930E94B00983E590E13C
:106200000E94170989E490E10E941709C1FB8827C1
:1062100080F91F928F9386E490E19F938F930E9461
:10622000B00984E490E10E94170988E390E10E949C
:106230001709C2FB882780F91F928F9385E390E1AD
:106240009F938F930E94B00983E390E10E94170906
:106250008AE290E10E941709C3FBCC27C0F91F9284
:10626000CF9387E290E19F938F930E94B00985E2DC
:1062700090E10E9417090E944B2CC82F81E190E108
:106280000E9417091F92CF938CE090E19F938F9308
:106290000E94B0098AE090E10E94170981EF9FE017
:1062A0000E9417098C2F81701F928F938EEE9FE0B2
:1062B0009F938F930E94B0098DB79EB780960FB6BB
:1062C000F8949EBF0FBE8DBF8CEE9FE00E94170911
:1062D00085ED9FE00E941709C1FB882780F91F9276
:1062E0008F9382ED9FE09F938F930E94B00980ED82
:1062F0009FE00E9417098EEB9FE00E941709C2FBE6
:10630000882780F91F928F938BEB9FE09F938F9349
:106310000E94B00989EB9FE00E94170987EA9FE07D
:106320000E941709C3FB882780F91F928F9384EA84
:106330009FE09F938F930E94B00982EA9FE00E94A2
:10634000170988E99FE00E941709C4FB882780F994
:106350001F928F9385E99FE09F938F930E94B009CE
:1063600083E99FE00E94170981E89FE00E941709D6
:10637000C5FB882780F91F928F938EE79FE09F933C
:106380008F930E94B0098CE79FE00E94170980E676
:106390009FE00E941709C6FB882780F91F928F9300
:1063A0008DE59FE09F938F930E94B0098BE59FE05E
:1063B0000E94170983E59FE00E941709C7FBCC27BD
:1063C000C0F91F92CF9380E59FE09F938F930E9427
:1063D000B0098EE49FE00E9417090E94542CC82F38
:1063E00087E39FE00E9417091F92CF9382E39FE00B
:1063F0009F938F930E94B0098DB79EB780960FB67A
:10640000F8949EBF0FBE8DBF80E39FE00E941709E6
:1064100086E29FE00E9417098C2F81701F928F9354
:1064200083E29FE09F938F930E94B00981E29FE0F7
:106430000E94170988E19FE00E941709C6951F92E4
:10644000CF9385E19FE09F938F930E94B00983E1F2
:106450009FE00E9417098DB79EB708960FB6F89473
:106460009EBF0FBE8DBF04C08EE69DE00E9417093F
:10647000C1E0C1C08091E601C82FC095C170C0FBCA
:1064800080F98093E601CC2349F083EF90E10E94EC
:1064900017098091E6018660886048C086EE90E129
:1064A0000E9417098091E601897F877F8093E6012A
:1064B000DFCF9091E60191FBCC27C0F981E0C8279E
:1064C000892FC0FB81F98093E601CC2319F089ED77
:1064D00090E127C08BEC90E1C9CF9091E60192FB4F
:1064E000CC27C0F981E0C827892FC0FB82F98093AF
:1064F000E601CC2319F08CEB90E113C08CEA90E11B
:10650000B5CF9091E60193FBCC27C0F981E0C82775
:10651000892FC0FB83F98093E601CC2351F080EAF8
:1065200090E10E9417098091E60181608093E60165
:1065300062C083E990E19ACF88E39DE00E94170949
:106540008FE19DE00E9417098DEE9CE00E941709E3
:1065500086EC9CE00E94170986E89CE00E941709DF
:106560008BE59CE083CF8DE49CE00E9417090E949C
:106570000B1E1F928F9383E39CE09F938F930E9447
:10658000B00980910C011F928F938CE19CE09F9346
:106590008F930E94B009809187011F928F9389E0A9
:1065A0009CE09F938F930E94B0098091E8019091A5
:1065B000E901A091EA01B091EB01BF93AF939F93E2
:1065C0008F9385EF9BE09F938F930E94B0098DB7C7
:1065D0009EB742960FB6F8949EBF0FBE8DBF48CFB0
:1065E0008D5101C080E00E94423042CF81E990E1AC
:1065F0000E941709C0E08C2FCF91089580E0089584
:106600000C94FE32CF93C82F8091F601813071F047
:1066100020F0823009F44BC042C1E0910D01F091AD
:106620000E018081823209F03CC107C0E0910D016A
:10663000F0910E018081823261F48C2F0E94003330
:10664000811104C08C2F0E9462302FC081E090E045
:106650002CC08C2F0E94FE32811126C0C431E1F083
:1066600070F4CB3081F0C031D1F40E940A2F88EE53
:106670009BE00E94170982E08093F60115C0C932A1
:1066800059F0C83361F487E49DE00E9417098CEE4D
:106690009BE00E94170908C01092F60104C186EE23
:1066A0009BE00E941709FFC081E08170FEC0C432E8
:1066B00028F5CE3108F0C1C0CB30A1F1D0F4C730FD
:1066C00009F0D3C08EE18093140182E3809313011B
:1066D0008AE08093120184E18093110188E0809325
:1066E000100188E280930F018CE89AE00E9417095C
:1066F000BFC0C33149F1C431C1F0B7C0CB3409F4D4
:10670000A9C028F4C93289F0C83361F0AEC0C135E0
:1067100009F49EC0C23509F499C0CE3409F0A5C071
:106720006AE09EC00E940A2FA3C08091F5018823D1
:1067300019F01092F5019CC089E99AE00E941709AE
:1067400081E08093F601B1C083E79AE00E941709C7
:1067500081E69AE00E941709809114011F928F939D
:106760008EE59AE09F938F930E94B0098CE59AE0A2
:106770000E9417098AE49AE00E9417098091130188
:106780001F928F9387E49AE09F938F930E94B009A2
:1067900085E49AE00E94170986E39AE00E941709AF
:1067A000809112011F928F9383E39AE09F938F93BE
:1067B0000E94B00981E39AE00E94170980E29AE002
:1067C0000E941709809111011F928F938DE19AE029
:1067D0009F938F930E94B0098BE19AE00E94170962
:1067E00086E09AE00E941709809110011F928F9312
:1067F00083E09AE09F938F930E94B00981E09AE032
:106800000E9417098AEE99E00E94170980910F01F2
:106810001F928F9387EE99E09F938F930E94B00908
:1068200085EE99E00E9417098DB79EB748960FB67E
:10683000F8949EBF0FBE8DBF1BC0CE51EC2FF0E071
:10684000E45CFE4F80818093F50112C061E003C0DB
:1068500061E006C06AE08091F5010E94212F08C026
:106860008091F5010E94C42F03C08AE89AE013C00A
:106870008091F501882369F01F928F9384E89AE054
:106880009F938F930E94B0090F900F900F900F90DD
:1068900004C081E89AE00E94170981E006C01092C6
:1068A000F60180E002C080E000CFCF9108950E9401
:1068B0002E2C811102C00E940F2C0E94542C809318
:1068C0003E0280FF02C0869501C080E00C94DB0987
:1068D00080913E02982F9695292F30E02330310584
:1068E0004CF49F5F990F8170892B816080933E02E9
:1068F0000E94582C8091E60180FF0FC080913E02DB
:1069000086951F928F938CE691E19F938F930E94BF
:10691000B0090F900F900F900F9080913E028695D6
:106920000C94DB0980913E02982F969591F0915836
:10693000990F8170892B80933E028E7F91E009F43C
:1069400090E080913E0290FB80F980933E020E948D
:10695000582C8091E60180FF0FC080913E02869501
:106960001F928F9384E591E19F938F930E94B009CA
:106970000F900F900F900F9080913E0286950C948F
:10698000DB0980913E02982F909590FB80F98093CF
:106990003E020E94582C8091E60180FF0FC080913A
:1069A0003E0281701F928F938EE391E19F938F93AC
:1069B0000E94B0090F900F900F900F9080913E02AF
:1069C00080FF02C0869501C080E00C94DB099091A5
:1069D0003E02892F86958F5F8F779170843028F4DF
:1069E000880F892B80933E0202C090933E028091D3
:1069F0003E028E7F91E009F490E080913E0290FB90
:106A000080F980933E020E94582C8091E60180FF1D
:106A10000FC080913E0286951F928F938AE291E18A
:106A20009F938F930E94B0090F900F900F900F903B
:106A300080913E0286950C94DB0920913E02922FB4
:106A400096958927982F990F822F8170892B809393
:106A50003E028E7F91E009F490E080913E0290FB2F
:106A600080F980933E020E94582C80913E028695C8
:106A70000C94DB090E9441356894B1110C94D03517
:106A800008950E94B53588F09F5798F0B92F99273F
:106A9000B751B0F0E1F0660F771F881F991F1AF009
:106AA000BA95C9F714C0B13091F00E94CF35B1E06A
:106AB00008950C94CF35672F782F8827B85F39F069
:106AC000B93FCCF3869577956795B395D9F73EF4A2
:106AD00090958095709561957F4F8F4F9F4F08954A
:106AE000E89409C097FB3EF4909580957095619568
:106AF0007F4F8F4F9F4F9923A9F0F92F96E9BB271E
:106B00009395F695879577956795B795F111F8CF99
:106B1000FAF4BB0F11F460FF1BC06F5F7F4F8F4F04
:106B20009F4F16C0882311F096E911C0772321F0FA
:106B30009EE8872F762F05C0662371F096E8862F92
:106B400070E060E02AF09A95660F771F881FDAF7E9
:106B5000880F9695879597F9089557FD9058440F9B
:106B6000551F59F05F3F71F04795880F97FB991FAC
:106B700061F09F3F79F08795089512161306140669
:106B8000551FF2CF4695F1DF08C0161617061806F6
:106B9000991FF1CF86957105610508940895E894D1
:106BA000BB2766277727CB0197F908950E94E9351F
:106BB0000C945A360E944C3638F00E94533620F01E
:106BC000952311F00C9443360C94493611240C94FF
:106BD000D0350E94AD3570F3959FC1F3950F50E00D
:106BE000551F629FF001729FBB27F00DB11D639F7F
:106BF000AA27F00DB11DAA1F649F6627B00DA11D25
:106C0000661F829F2227B00DA11D621F739FB00DCA
:106C1000A11D621F839FA00D611D221F749F33273A
:106C2000A00D611D231F849F600D211D822F762FD3
:106C30006A2F11249F5750409AF0F1F088234AF0B0
:106C4000EE0FFF1FBB1F661F771F881F915050401C
:106C5000A9F79E3F510580F00C9443360C94D03533
:106C60005F3FE4F3983ED4F3869577956795B795A3
:106C7000F795E7959F5FC1F7FE2B880F911D9695BD
:106C8000879597F9089597F99F6780E870E060E02D
:106C900008959FEF80EC089500240A9416161706B5
:106CA00018060906089500240A94121613061406FD
:106CB00005060895092E0394000C11F4882352F060
:106CC000BB0F40F4BF2B11F460FF04C06F5F7F4F18
:106CD0008F4F9F4F0895991B79E004C0991F961715
:106CE00008F0961B881F7A95C9F780950895AA1B0E
:106CF000BB1B51E107C0AA1FBB1FA617B70710F0A7
:106D0000A61BB70B881F991F5A95A9F780959095D8
:106D1000BC01CD01089597FB072E16F4009407D00F
:106D200077FD09D00E94773607FC05D03EF4909598
:106D300081959F4F0895709561957F4F0895EE0F4F
:106D4000FF1F0590F491E02D0994F999FECF92BDB3
:106D500081BDF89A992780B50895A6E1B0E044E096
:106D600050E00C94DF36A8E1B0E042E050E00C9433
:106D7000DF36262FF999FECF92BD81BDF89A019793
:106D800000B4021639F01FBA20BD0FB6F894FA9A73
:106D9000F99A0FBE08950396272F0E94BA360E94D3
:106DA000B936252F0E94BA36242F0C94BA36019694
:106DB000272F0E94BA360C94B936DC01CB01FC01B6
:106DC000F999FECF06C0F2BDE1BDF89A319600B444
:0E6DD0000D9241505040B8F70895F894FFCF4F
:106DDE00FFFF701663173E170A17D61601DB012840
:106DEE0008140A321E0F1F6C766673491303534341
:106DFE0079693309196F7F59404D36201208C5073E
:106E0E008F076F07FB0614072D07460701020304C1
:066E1E000506070809004B
:00000001FF

@ -0,0 +1,10 @@
#include "../../config.h"
/* WS2812B RGB Underglow LED */
#define ws2812_PORTREG PORTF
#define ws2812_DDRREG DDRF
#define ws2812_pin PF5 // Based on wiring depicted in ws2812_wiring.jpg
#define RGBLED_NUM 16 // Number of LEDs. Change this to match your use case.
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8

@ -0,0 +1,161 @@
// 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 "kc60.h"
// Used for SHIFT_ESC
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _BL 0
#define _FL 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: (Base Layer) Default Layer
* ,-----------------------------------------------------------.
* |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
* |-----------------------------------------------------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |
* |-----------------------------------------------------------|
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
* |-----------------------------------------------------------|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |
* |-----------------------------------------------------------|
* |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl |
* `-----------------------------------------------------------'
*/
[_BL] = KEYMAP(
F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NO, KC_ENT, \
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_NO, KC_RSFT, \
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT,KC_RGUI, MO(_FL), KC_RCTL),
/* Keymap _FL: Function Layer
* ,-----------------------------------------------------------.
* |~ |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| DEL |
* |-----------------------------------------------------------|
* | | |UP | | | | | | | | |BL-|BL+|BL |
* |-----------------------------------------------------------|
* | |LFT|DWN|RGT| | | | | | | | |
* |-----------------------------------------------------------|
* | |FN1|FN2|FN3|FN4|FN5|FN6|FN7|FN8| | | |
* |-----------------------------------------------------------|
* | | | | | | | |RSET|
* `-----------------------------------------------------------'
*/
[_FL] = KEYMAP(
#ifdef RGBLIGHT_ENABLE
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET),
#else
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET),
#endif
};
enum function_id {
SHIFT_ESC,
#ifdef RGBLIGHT_ENABLE
RGBLED_TOGGLE,
RGBLED_STEP_MODE,
RGBLED_INCREASE_HUE,
RGBLED_DECREASE_HUE,
RGBLED_INCREASE_SAT,
RGBLED_DECREASE_SAT,
RGBLED_INCREASE_VAL,
RGBLED_DECREASE_VAL
#endif
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_FUNCTION(SHIFT_ESC),
#ifdef RGBLIGHT_ENABLE
[1] = ACTION_FUNCTION(RGBLED_TOGGLE),
[2] = ACTION_FUNCTION(RGBLED_STEP_MODE),
[3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
[4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
[5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
[6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
[7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
[8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
#endif
};
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
static uint8_t shift_esc_shift_mask;
switch (id) {
case SHIFT_ESC:
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
if (record->event.pressed) {
if (shift_esc_shift_mask) {
add_key(KC_GRV);
send_keyboard_report();
} else {
add_key(KC_ESC);
send_keyboard_report();
}
} else {
if (shift_esc_shift_mask) {
del_key(KC_GRV);
send_keyboard_report();
} else {
del_key(KC_ESC);
send_keyboard_report();
}
}
break;
//led operations
#ifdef RGBLIGHT_ENABLE
case RGBLED_TOGGLE:
if (record->event.pressed) {
rgblight_toggle();
}
break;
case RGBLED_INCREASE_HUE:
if (record->event.pressed) {
rgblight_increase_hue();
}
break;
case RGBLED_DECREASE_HUE:
if (record->event.pressed) {
rgblight_decrease_hue();
}
break;
case RGBLED_INCREASE_SAT:
if (record->event.pressed) {
rgblight_increase_sat();
}
break;
case RGBLED_DECREASE_SAT:
if (record->event.pressed) {
rgblight_decrease_sat();
}
break;
case RGBLED_INCREASE_VAL:
if (record->event.pressed) {
rgblight_increase_val();
}
break;
case RGBLED_DECREASE_VAL:
if (record->event.pressed) {
rgblight_decrease_val();
}
break;
case RGBLED_STEP_MODE:
if (record->event.pressed) {
rgblight_step();
}
break;
#endif
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Loading…
Cancel
Save