From b0573ba80e2a11724c7490ef5cdb528583178108 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 8 May 2017 15:11:31 +0900 Subject: [PATCH] x68k_usb: Add unimap --- converter/x68k_usb/Makefile | 116 +- converter/x68k_usb/Makefile.unimap | 5 + converter/x68k_usb/binary/x68k_usb_unimap.hex | 1166 +++++++++++++++++ converter/x68k_usb/unimap.c | 45 + converter/x68k_usb/unimap_trans.h | 75 ++ 5 files changed, 1342 insertions(+), 65 deletions(-) create mode 100644 converter/x68k_usb/Makefile.unimap create mode 100644 converter/x68k_usb/binary/x68k_usb_unimap.hex create mode 100644 converter/x68k_usb/unimap.c create mode 100644 converter/x68k_usb/unimap_trans.h diff --git a/converter/x68k_usb/Makefile b/converter/x68k_usb/Makefile index 19901bee..41e32b18 100644 --- a/converter/x68k_usb/Makefile +++ b/converter/x68k_usb/Makefile @@ -1,48 +1,45 @@ -# -# Makefile for PJRC Teensy -# - - # Target file name (without extension). -TARGET = x68k_usb +TARGET ?= x68k_usb # Directory common source filess exist -TMK_DIR = ../../tmk_core +TMK_DIR ?= ../../tmk_core # Directory keyboard dependent files exist -TARGET_DIR = . +TARGET_DIR ?= . -# keyboard dependent files -SRC = keymap.c \ - matrix.c \ +# project specific files +SRC ?= matrix.c \ led.c \ protocol/serial_uart.c 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 = at90usb162 # Teensy 1.0 -#MCU = atmega32u4 # Teensy 2.0 -#MCU = at90usb646 # Teensy++ 1.0 -#MCU = at90usb1286 # Teensy++ 2.0 -MCU = atmega32u2 # Teensy 2.0 - +# MCU name +# atmega32u4 Teensy2.0 +# atemga32u4 TMK Converter rev.1 +# atemga32u2 TMK Converter rev.2 +MCU ?= atmega32u2 # 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 +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU ?= 16000000 # # LUFA specific # # Target architecture (see library "Board Types" documentation). -ARCH = AVR8 +ARCH ?= AVR8 # Input clock frequency. # This will define a symbol, F_USB, in all source code files equal to the @@ -55,69 +52,58 @@ ARCH = AVR8 # # If no clock division is performed on the input clock inside the AVR (via the # CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) +F_USB ?= $(F_CPU) # Interrupt driven control endpoint task(+60) -#OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT -# Boot Section Size in bytes +# Boot Section Size in *bytes* # Teensy halfKay 512 -# Atmel DFU loader 4096 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 for TMK Converter rev.1/rev.2 # LUFA bootloader 4096 +# USBaspLoader 2048 OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options -# *Comment out* to disable the options. +# comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +#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 -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover - - - -#---------------- Programming Options -------------------------- -AVRDUDE = avrdude -# Type: avrdude -c ? to get a full listing. -AVRDUDE_PROGRAMMER = avr109 -AVRDUDE_PORT = /dev/ttyACM0 -AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex -#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep +#UNIMAP_ENABLE = yes +#ACTIONMAP_ENABLE = yes # Use 16bit actionmap instead of 8bit keymap +#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor -# Uncomment the following if you want avrdude's erase cycle counter. -# Note that this counter needs to be initialized first using -Yn, -# see avrdude manual. -#AVRDUDE_ERASE_COUNTER = -y -# Uncomment the following if you do /not/ wish a verification to be -# performed after programming the device. -#AVRDUDE_NO_VERIFY = -V - -# Increase verbosity level. Please use this when submitting bug -# reports about avrdude. See -# to submit bug reports. -#AVRDUDE_VERBOSE = -v -v - -AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -#AVRDUDE_FLAGS = -p $(MCU) -c $(AVRDUDE_PROGRAMMER) -AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY) -AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE) -AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER) - -PROGRAM_CMD = $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) +# +# Keymap file +# +ifeq (yes,$(strip $(UNIMAP_ENABLE))) + KEYMAP_FILE = unimap +else + ifeq (yes,$(strip $(ACTIONMAP_ENABLE))) + KEYMAP_FILE = actionmap + else + KEYMAP_FILE = keymap + endif +endif +ifdef KEYMAP + SRC := $(KEYMAP_FILE)_$(KEYMAP).c $(SRC) +else + SRC := $(KEYMAP_FILE).c $(SRC) +endif # Search Path VPATH += $(TARGET_DIR) VPATH += $(TMK_DIR) - -include $(TMK_DIR)/protocol.mk include $(TMK_DIR)/protocol/lufa.mk +include $(TMK_DIR)/protocol.mk include $(TMK_DIR)/common.mk include $(TMK_DIR)/rules.mk diff --git a/converter/x68k_usb/Makefile.unimap b/converter/x68k_usb/Makefile.unimap new file mode 100644 index 00000000..369d1154 --- /dev/null +++ b/converter/x68k_usb/Makefile.unimap @@ -0,0 +1,5 @@ +TARGET = x68k_usb_unimap +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +include Makefile + diff --git a/converter/x68k_usb/binary/x68k_usb_unimap.hex b/converter/x68k_usb/binary/x68k_usb_unimap.hex new file mode 100644 index 00000000..57e78074 --- /dev/null +++ b/converter/x68k_usb/binary/x68k_usb_unimap.hex @@ -0,0 +1,1166 @@ +:100000000C94D1040C9418050C9418050C94180544 +:100010000C9418050C9418050C9418050C941805EC +:100020000C9418050C9418050C9418050C94910B5D +:100030000C94400C0C94371A0C9418050C94180569 +:100040000C9418050C9418050C9418050C94AB1A14 +:100050000C9418050C9418050C9418050C946F0654 +:100060000C9418050C9418050C9418050C9418059C +:100070000C941805AD0CCF0CBD0DCF0CBD0D140D9F +:10008000370DBD0D8C0D9F0DDF10DF100D110D1103 +:100090006A11A811C113C113C111C113C212C21236 +:1000A0009513C113C113AC1380291E1F20212223D5 +:1000B000242526272D2E312A2B141A0815171C1833 +:1000C0000C12132F3028041607090A0B0D0E0F33DC +:1000D00034351D1B0619051110363738752C494B60 +:1000E0004C4D4E50524F51535455565F6061575CC2 +:1000F0005D5E67595A5B586266636B6C6D7B7A7E96 +:100100007F654647486A4A397C44453A3B3C3D3E18 +:100110003F40414243808080797868698080808058 +:100120008080808080808080253032580A004B6536 +:1001300079626F6172642073746172742E0A005563 +:10014000534220636F6E666967757265642E0A009C +:100150000D0A696E69740A004003530048004100AB +:1001600052005000200058003600380030003000A7 +:10017000300020006B006500790062006F006100B4 +:1001800072006400200063006F006E00760065005E +:10019000720074006500720000000E0374002E00EF +:1001A0006D002E006B002E000000040309040902FC +:1001B0007400040100A032090400000103010100E1 +:1001C0000921110100012240000705810308000AEE +:1001D00009040100010301020009211101000122AB +:1001E0004D000705820308000A090402000103000C +:1001F00000000921110100012236000705830308D0 +:10020000000A090403000203000000092111010093 +:1002100001222200070584032000010705040320B2 +:1002200000011201100100000008EDFE006801004D +:10023000010200010631FF0974A1010975150026AC +:10024000FF009520750881020976150026FF0095AC +:100250002075089102C005010980A101850216815F +:100260000026B7001A81002AB70075109501810099 +:10027000C0050C0901A1018503160100269C021A84 +:1002800001002A9C02751095018100C00501090238 +:10029000A1010901A1000509190129051500250180 +:1002A00095057501810295017503810105010930EC +:1002B00009311581257F9502750881060938158158 +:1002C000257F950175088106050C0A3802158125E0 +:1002D0007F950175088106C0C005010906A10105C9 +:1002E0000719E029E7150025019508750181029598 +:1002F0000175088101050819012905950575019108 +:10030000029501750391010507190029FF150026C3 +:10031000FF00950675088100C0636F6E73756D658B +:10032000723A20253034580A0073797374656D3A37 +:1003300020253034580A000A002530325820006B3E +:100340006579626F6172643A20004C45443A202519 +:100350003032580A00253032583A2025303862258C +:10036000730A00722F632030313233343536370A46 +:1003700000290A002575002F002575005D2800253D +:10038000640020002564002000256400200025640E +:10039000007C0025303258006D6F7573656B657990 +:1003A000205B62746E7C782079207620685D2872EC +:1003B00065702F61636C293A205B006D6B5F776815 +:1003C00065656C5F74696D655F746F5F6D617820E2 +:1003D0003D2025640A006D6B5F776865656C5F6D15 +:1003E00061785F7370656564203D2025640A006D47 +:1003F0006B5F74696D655F746F5F6D6178203D2020 +:1004000025640A006D6B5F6D61785F73706565646C +:10041000203D2025640A006D6B5F696E74657276FD +:10042000616C203D2025640A006D6B5F64656C6122 +:1004300079203D2025640A006D6B5F776865656CE7 +:100440005F74696D655F746F5F6D6178203D202515 +:10045000640A006D6B5F776865656C5F6D61785FDE +:100460007370656564203D2025640A006D6B5F74C0 +:10047000696D655F746F5F6D6178203D2025640A4A +:10048000006D6B5F6D61785F7370656564203D2002 +:1004900025640A006D6B5F696E74657276616C200D +:1004A0003D2025640A006D6B5F64656C6179203DB9 +:1004B0002025640A000A00257500363A2077686511 +:1004C000656C5F74696D655F746F5F6D61783A200C +:1004D000000A00257500353A20776865656C5F6D08 +:1004E00061785F73706565643A20000A00257500C5 +:1004F000343A2074696D655F746F5F6D61783A207E +:10050000000A00257500333A206D61785F737065CD +:1005100065643A20000A00257500323A20696E743D +:10052000657276616C286D73293A20000A00257582 +:1005300000313A2064656C6179282A31306D732965 +:100540003A20000A092D2056616C756573202D0A2A +:10055000004D3E004D25643E20003F007365742031 +:1005600064656661756C740A00433E2000776865B7 +:1005700072652064656C74613A20637572736F7282 +:100580003D25642C20776865656C3D25640A5365BC +:100590006520687474703A2F2F656E2E77696B69C9 +:1005A00070656469612E6F72672F77696B692F4D73 +:1005B0006F7573655F6B6579730A000A092D204DAD +:1005C0006F7573656B6579202D0A4553432F713A1A +:1005D00009717569740A313A0964656C6179282A70 +:1005E00031306D73290A323A09696E746572766129 +:1005F0006C286D73290A333A096D61785F737065F1 +:1006000065640A343A0974696D655F746F5F6D6182 +:10061000780A353A09776865656C5F6D61785F7354 +:10062000706565640A363A09776865656C5F746958 +:100630006D655F746F5F6D61780A0A703A09707258 +:10064000696E742076616C7565730A643A09736526 +:10065000742064656661756C74730A75703A092B51 +:10066000310A646F776E3A092D310A706775703AF6 +:10067000092B31300A7067646F776E3A092D31307B +:100680000A0A7370656564203D2064656C7461209E +:100690002A206D61785F7370656564202A20287256 +:1006A0006570656174202F2074696D655F746F5F7C +:1006B0006D6178290A003F004D3E2000433E200036 +:1006C0004C25640A000A092D20436F6E736F6C6518 +:1006D000202D0A4553432F713A09717569740A6DCB +:1006E0003A096D6F7573656B65790A000A092D20EB +:1006F0004D61676963202D0A643A09646562756714 +:100700000A783A096465627567206D617472697868 +:100710000A6B3A096465627567206B6579626F617F +:1007200072640A6D3A096465627567206D6F75734E +:10073000650A763A0976657273696F6E0A733A09CB +:100740007374617475730A633A09636F6E736F6CC7 +:1007500065206D6F64650A302D343A096C617965E6 +:1007600072302D34284631302D4634290A506175B7 +:10077000733A09626F6F746C6F616465720A003F4F +:100780000074696D65725F72656164333228293A5D +:10079000202530346C580A006B6579626F61726491 +:1007A0005F69646C653A2025580A006B6579626F51 +:1007B0006172645F70726F746F636F6C3A2025585A +:1007C0000A00686F73745F6B6579626F6172645F52 +:1007D0006C65647328293A2025580A000A092D20DF +:1007E000537461747573202D0A004743433A2034D3 +:1007F0002E392E32204156522D4C4942433A203157 +:100800002E382E3073766E204156525F4152434847 +:100810003A2061767233350A004F5054494F4E5397 +:100820003A204C554641204D4F5553454B45592094 +:1008300045585452414B455920434F4E534F4C4518 +:1008400020434F4D4D414E44204B45594D41505F43 +:1008500053454354494F4E20343039360A004255EF +:10086000494C443A20313937636138322D6469721A +:100870007479202831343A35353A3237204D617950 +:100880002020382032303137290A005649443A2096 +:1008900030784645454428742E6D2E6B2E29205005 +:1008A00049443A2030783638303028534841525045 +:1008B00020583638303030206B6579626F61726451 +:1008C00020636F6E76657274657229205645523AC0 +:1008D000203078303030310A00444553433A2063A9 +:1008E0006F6E7665727473205348415250205836AB +:1008F00038303030206B6579626F617264207072BD +:100900006F746F636F6C20696E746F205553420A69 +:10091000000A092D2056657273696F6E202D0A003A +:100920000A6D6F7573653A206F66660A000A6D6F0F +:100930007573653A206F6E0A000A6B6579626F61A4 +:1009400072643A206F66660A000A6B6579626F61AD +:1009500072643A206F6E0A000A6D61747269783AA7 +:10096000206F66660A000A6D61747269783A206FBA +:100970006E0A000A64656275673A206F6E0A000AA3 +:1009800064656275673A206F66660A000A0A626FDC +:100990006F746C6F616465722E2E2E2000433E20B2 +:1009A000000011241FBECFEFD4E0DEBFCDBF04B6E0 +:1009B00003FE27C08091D5029091D602A091D70264 +:1009C000B091D8028730904BA740B04BD1F4109231 +:1009D000D5021092D6021092D7021092D80214BEFD +:1009E00084B7877F84BF0FB6F894A8958091600084 +:1009F000886180936000109260000FBEE0E0F8E331 +:100A0000099511E0A0E0B1E0EAE8F6E402C0059043 +:100A10000D92A233B107D9F722E0A2E3B1E001C001 +:100A20001D92A53DB207E1F70E94DD080C94432317 +:100A30000C940000FF93EF93E0913201F0913301A9 +:100A4000309709F00995EF91FF910895FC01859188 +:100A5000803011F0EFDFFBCF0895FF27E0E230E2B6 +:100A600047FF0CC0419597FF09C0EDE26095709576 +:100A700080959095611D711D811D911D27FF02C0FC +:100A8000219530E350E2AA27660F771F881F991F30 +:100A9000AA1FA41710F0A41B63955A95A9F7AA30B2 +:100AA00008F0A95FA05DAF93F3956115710581050D +:100AB000910541F7ED3211F4EF93F395F21718F425 +:100AC0003F93F395FBCF8F91B5DFFA95E1F708954A +:100AD000E991F9918591803021F0853219F0AADFF2 +:100AE000F9CF089520E0E89455915532C1F3503381 +:100AF00011F4689455915A3348F4505390F3220FEF +:100B0000022E220F220F200D250FF4CF0EF4219577 +:100B100089919991533619F3533729F1533559F186 +:100B2000BC0188279927E8945C3621F48991999132 +:100B300068945591543639F446EF7EF077FF0DC036 +:100B40008FEF9FEF0AC055374AE039F0583540E142 +:100B500021F0523642E009F00895FF93EF937DDFD4 +:100B6000EF91FF91B7CFFF93EF93FC01819180301C +:100B7000B9F360DFFBCFFF93EF9368DFF1CFDF9333 +:100B8000CF93CDB7DEB72596A3DFCF91DF91089540 +:100B90000E944606E5E3F1E080E18E0F11928E138C +:100BA000FDCF08950F931F93CF93DF9310923401DD +:100BB0000E9454068C010F3F8FEF180709F44AC0BA +:100BC0008091B70280FF0CC01F930F9388E291E0E1 +:100BD0009F938F930E94BF050F900F900F900F90DF +:100BE000E80183E0D695C7958A95E1F7602F677095 +:100BF0008C2F8F7007FF15C00E946B0F882341F167 +:100C0000CF70DD27CB5CDE4F98012770332781E062 +:100C100090E001C0880F2A95EAF780959881892392 +:100C200013C00E946B0F811113C0CF70DD27CB5C06 +:100C3000DE4F98012770332781E090E001C0880FD4 +:100C40002A95EAF79881892B888381E08093340183 +:100C5000802F01C080E0DF91CF911F910F91089507 +:100C6000E82FF0E0EB5CFE4F80810895982F80FF25 +:100C700002C08BEF01C08FEF91FD877F92FD8D7FCA +:100C800093FD8F7E94FD8E7F0C9468068FE9809390 +:100C9000CC0081E08093CD0088E98093C90086E094 +:100CA0008093CA007894089520914501809146016F +:100CB000821759F030E0F901E95BFE4F80812F5F28 +:100CC0003F4F2093450190E008958FEF9FEF0895E7 +:100CD0009091C80095FFFCCF8093CE0008951F929D +:100CE0000F920FB60F9211242F933F934F938F9330 +:100CF0009F93EF93FF938091460190E09C012F5FBB +:100D00003F4F40914501421741F03091CE00FC0128 +:100D1000E95BFE4F308320934601FF91EF919F9155 +:100D20008F914F913F912F910F900FBE0F901F9079 +:100D300018958091530208959FB7F89410924A0233 +:100D40009FBF9091CC02943009F057C09091E90078 +:100D50009F703091EC00232F217030FD20E8922B02 +:100D600024E02093E9002091EB0020FF43C0209174 +:100D7000EE0027FF3FC020914702222321F020915F +:100D8000E80025FF37C01092470226E03091E800C6 +:100D900035FD15C03091CC02343061F53091EB0057 +:100DA00035FD28C0215021F481E08093470222C004 +:100DB000EFE9FFE03197F1F700C00000E7CF809343 +:100DC000F1008091E80085FD0AC08091E80080FF75 +:100DD000FCCF8091E8008E778093E80006C08FB743 +:100DE000F89421E020934A028FBF9F709093E9000E +:100DF00080E008959F709093E9008FEF0895CF935E +:100E0000DF9300D01F92CDB7DEB79C018091CC025A +:100E1000843019F593E099833B832A839093E9000A +:100E20008FEF9091E800815095FD06C095ED9A9561 +:100E3000F1F700008111F5CF8091E80085FF0DC02A +:100E400040E050E063E070E0CE0101960E949F090F +:100E50008091E8008E778093E8000F900F900F90BC +:100E6000DF91CF910895CF93DF9300D01F92CDB73C +:100E7000DEB72091CC02243021F522E029839B8328 +:100E80008A8383E08093E9008FEF9091E80081509E +:100E900095FD06C095ED9A95F1F700008111F5CF0B +:100EA0008091E80085FF0DC040E050E063E070E015 +:100EB000CE0101960E949F098091E8008E77809371 +:100EC000E8000F900F900F90DF91CF91089520913F +:100ED000CC022430F1F422E02093E9002FEF30918E +:100EE000E800215035FD06C035ED3A95F1F70000D8 +:100EF0002111F5CF2091E80025FF0BC040E050E024 +:100F000065E070E00E949F098091E8008E778093F1 +:100F1000E8000895CF93DF932091CC02243039F577 +:100F200021E02093E9002FEF3091E800215035FDBA +:100F300006C035ED3A95F1F700002111F5CF20916B +:100F4000E80025FF14C0EC0140E050E068E070E0EC +:100F50000E949F098091E8008E778093E80088E0E6 +:100F6000FE01ABE4B2E001900D928A95E1F7DF91CA +:100F7000CF9108950895209148022F5F822F62E358 +:100F80000E940923992319F0209348020895109292 +:100F9000480280914A02882371F18091CC0284300A +:100FA00041F58091E9008F702091EC00922F9170B3 +:100FB00020FD90E8892B94E09093E9009091EB005C +:100FC00090FF14C09091EE0097FF10C09091E80040 +:100FD00095FF03C01092F100F9CF9091E80090FFC7 +:100FE00005C09091E8009E779093E8008F70809301 +:100FF000E90010924A02089542E061EC81E00E940B +:10100000A80A42E061EC82E00E94A80A42E061EC9A +:1010100083E00E94A80A42E261EC84E00C94A80AF2 +:101020008091CE02833009F453C030F4813071F0E6 +:10103000823009F48CC008958A3009F478C08B306E +:1010400009F45EC0893009F09AC020C08091CD02B9 +:10105000813A09F094C08091E800877F8093E8008E +:101060008091D1029091D202892B21F468E08BE427 +:1010700092E003C060E080E090E070E00E94EA0946 +:101080008091E8008B778093E80008958091CD02ED +:10109000813209F074C08091D1029091D202892BE3 +:1010A00009F06DC08091E800877F8093E80080910F +:1010B000E80082FD05C08091CC028111F8CF5FC0AD +:1010C0008091F100809353028091E8008B7753C0A8 +:1010D0008091CD02813A09F052C08091D102909165 +:1010E000D202892B09F04BC08091E800877F809362 +:1010F000E8008091E80080FFFCCF80910A0136C0B3 +:101100008091CD028132D9F58091D1029091D202A5 +:10111000892BA9F58091E800877F8093E8000E94E1 +:10112000DD0A8091CF0280930A010C94E313809131 +:10113000CD02813221F58091E800877F8093E8001D +:101140000E94DD0A8091D00280935402089580911C +:10115000CD02813AA1F48091E800877F8093E80076 +:101160008091E80080FFFCCF809154028093F100D1 +:101170008091E8008E778093E8000C94DD0A089552 +:10118000089508958091530280934902109253026A +:1011900080E00E9436060E94690F0C94E3130C94C1 +:1011A000C2080E94F6198091CA02882329F00E9481 +:1011B0001F1A81110C948909089584B7877F84BF11 +:1011C0000FB6F894A89580916000886180936000C4 +:1011D000109260000FBE90E080E80FB6F894809304 +:1011E0006100909361000FBE8CE996E00E94CB19DC +:1011F00080E591E00E9426050E94C0080E94960E9C +:101200000E942E0B0E94810B8091E20084608093EB +:10121000E20078948091CC028430E1F78FE391E092 +:101220000E9426050E94980E80E091E00E94D50D54 +:101230008EE291E00E9426050E94C1088091CC02B6 +:10124000853019F40E94D108F9CF0E949C0EF6CF88 +:101250000E94331A809149028093530208950C949E +:101260002809292F332723303105C9F064F42130B0 +:10127000310581F02230310509F043C084E790E068 +:101280002EEA31E042C021323105F1F0223231053F +:1012900041F137C082E190E022E232E036C0992786 +:1012A0008130910541F08230910541F0892B49F55B +:1012B000EAEAF1E005C0EAE9F1E002C0E8E5F1E0C0 +:1012C000849190E09F0121C06430D8F4E62FF0E0D3 +:1012D000EE0FFF1FE15EFE4F2081318189E090E03B +:1012E00014C0643070F470E0FB01EE0FFF1FE95E84 +:1012F000FE4F20813181FB01ED5EFE4F808190E049 +:1013000004C080E090E020E030E0FA0131832083E7 +:10131000089584E089BD86E089BD09B400FEFDCF53 +:101320008091D8008F7D8093D8008091E00082600A +:101330008093E0008091E00081FDFCCF0895CF9282 +:10134000DF92EF92FF920F931F93CF93DF93EC0105 +:101350008B016A010E94FC0A811133C0C114D104BF +:1013600039F0F60180819181081B190BC80FD91F34 +:10137000E12CF12C0115110519F18091E80085FD92 +:1013800016C08091E8008E778093E800C114D104E4 +:1013900049F0F60180819181E80EF91EF182E08228 +:1013A00085E00FC00E94FC0A882321F30AC08991BE +:1013B0008093F10001501109FFEFEF1AFF0ADACF15 +:1013C00080E0DF91CF911F910F91FF90EF90DF9020 +:1013D000CF9008952091D3023091D4022617370779 +:1013E00048F06115710539F42091E8002E772093BB +:1013F000E80001C0B90140E06115710591F120914B +:10140000CC02222309F440C0253009F43FC02091CA +:10141000E80023FD3DC02091E80022FD2FC020916F +:10142000E80020FFE9CF2091F20030E0FC01CF017D +:101430006115710559F02830310540F48191809390 +:10144000F100615071092F5F3F4FF1CF41E028302B +:10145000310509F040E02091E8002E772093E80064 +:10146000CBCF4111CCCF0AC08091CC02882361F050 +:10147000853061F08091E80083FD0AC08091E8002A +:1014800082FFF2CF80E0089582E0089583E008951E +:1014900081E008952091D3023091D40226173707B6 +:1014A00048F06115710539F42091E8002E772093FA +:1014B000E80001C0B901FC0120E06115710579F176 +:1014C0008091CC02882309F43DC0853009F43CC0EA +:1014D0008091E80083FD3AC08091E80082FD2CC035 +:1014E0008091E80080FFE9CF8091F20090E06115E3 +:1014F000710559F08830910540F424912093F10052 +:101500003196615071090196F2CF21E0089709F0F8 +:1015100020E08091E8008E778093E800CECF211103 +:10152000CFCF0AC08091CC02882361F0853061F072 +:101530008091E80083FD0AC08091E80082FFF2CF2D +:1015400080E0089582E0089583E0089581E00895A1 +:10155000982F953058F59093E900981739F07091CD +:10156000EC002091ED005091F00003C0242F762F65 +:1015700050E021FF19C03091EB003E7F3093EB002B +:101580003091ED003D7F3093ED003091EB00316004 +:101590003093EB007093EC002093ED005093F0003B +:1015A0002091EE0027FF07C09F5FD3CF8F708093FD +:1015B000E90081E0089580E008958091CD0287FFE1 +:1015C00011C08091E80082FD05C08091CC0281119C +:1015D000F8CF11C08091E8008B770BC08091CC02CE +:1015E000882349F08091E80080FFF8CF8091E800DF +:1015F0008E778093E80008952091E4003091E50013 +:1016000095E64091EC00842F817040FF22C08091CC +:10161000E80080FD1CC08091CC02882391F08530C9 +:1016200091F08091EB0085FD10C04091E400509155 +:10163000E5004217530729F39A01915011F784E00E +:10164000089582E0089583E0089581E0089580E0A0 +:1016500008954091E80042FFDECF08950E948B0B71 +:101660000E948E0BE0EEF0E0808181608083E8EDE7 +:10167000F0E080818F77808319BCE3E6F0E0808121 +:10168000816080831092CB0208950E948B0B0E9490 +:101690008E0B8091D8008F778093D8008091D800EE +:1016A00080688093D8008091D8008F7D8093D80087 +:1016B00084E089BD86E089BD09B400FEFDCF1092AB +:1016C000CC021092C8021092CA021092C90242E0E3 +:1016D00060E080E00E94A80A8091E1008E7F809304 +:1016E000E1008091E20081608093E2008091E2005D +:1016F00088608093E2008091E0008E7F8093E0001C +:101700000895E3E6F0E080818E7F808381E080931E +:10171000CB020C94450B1092E20008951092E10068 +:1017200008951F920F920FB60F9211242F933F939B +:101730004F935F936F937F938F939F93AF93BF93D9 +:10174000EF93FF938091E10082FF0BC08091E20054 +:1017500082FF07C08091E1008B7F8093E1000E94AF +:10176000BB078091E10080FF19C08091E20080FFFB +:1017700015C08091E2008E7F8093E2008091E200AC +:1017800080618093E2008091D80080628093D800CD +:1017900019BC85E08093CC020E94CF088091E100C3 +:1017A00084FF30C08091E20084FF2CC084E089BDBA +:1017B00086E089BD09B400FEFDCF8091D8008F7D01 +:1017C0008093D8008091E1008F7E8093E10080912A +:1017D000E2008F7E8093E2008091E200816080933E +:1017E000E2008091C802882311F084E007C0809154 +:1017F000E30087FD02C081E001C083E08093CC025A +:101800000E942F098091E10083FF29C08091E200AE +:1018100083FF25C08091E100877F8093E10082E013 +:101820008093CC021092C8028091E1008E7F809359 +:10183000E1008091E2008E7F8093E2008091E200DF +:1018400080618093E20042E060E080E00E94A80AAC +:101850008091F00088608093F0000E94BA07FF91A9 +:10186000EF91BF91AF919F918F917F916F915F9118 +:101870004F913F912F910F900FBE0F901F90189591 +:101880001F920F920FB60F9211242F933F934F93F5 +:101890005F936F937F938F939F93AF93BF93CF93F8 +:1018A000DF93EF93FF93C091E900CF708091EC003C +:1018B000D82FD17080FDD0E81092E9008091F0001F +:1018C000877F8093F00078940E94840C1092E90046 +:1018D0008091F00088608093F000CD2BCF70C09392 +:1018E000E900FF91EF91DF91CF91BF91AF919F916F +:1018F0008F917F916F915F914F913F912F910F90B9 +:101900000FBE0F901F9018951F93CF93DF93CDB705 +:10191000DEB7AA970FB6F894DEBF0FBECDBFEDECD1 +:10192000F2E088E08E0F9091F10091938E13FBCF3F +:101930000E9410088091E80083FF1FC18091CD02B2 +:101940009091CE02492F50E04A30510508F015C160 +:10195000FA01E65CFF4F0C942923803881F082382D +:1019600009F00BC18091D1028F708093E9008091C2 +:10197000EB0085FB882780F91092E90006C0809172 +:10198000C9029091CA02911182609091E800977FFC +:101990009093E8008093F1001092F100C8C0282FC6 +:1019A0002D7F09F0EAC0882319F0823061F0E5C08C +:1019B0008091CF02813009F0E0C0933009F080E0DF +:1019C0008093CA022BC08091CF02811127C08091E1 +:1019D000D1028F7009F4D1C08093E9002091EB000F +:1019E00020FF1CC0933021F48091EB00806214C072 +:1019F0009091EB0090619093EB0021E030E0A90121 +:101A000002C0440F551F8A95E2F74093EA001092F6 +:101A1000EA008091EB0088608093EB001092E9006F +:101A20008091E800877F86C08111A7C01091CF0206 +:101A30001F778091E3008078812B8093E300809171 +:101A4000E800877F8093E8000E94DD0A8091E8002B +:101A500080FFFCCF8091E30080688093E300111148 +:101A600002C082E001C083E08093CC0286C080582F +:101A7000823008F082C08091CF029091D0028C3DDC +:101A800053E0950779F583E08A838AE289834FB72B +:101A9000F894DE01139620E03EE051E2E32FF0E0FF +:101AA00050935700E49120FF03C0E295EF703F5F31 +:101AB000EF708E2F90E0EA3010F0C79601C0C0960C +:101AC0008D939D932F5F243149F74FBF8091E8009C +:101AD000877F8093E8006AE270E0CE0101960E9461 +:101AE000EA0914C0AE014F5F5F4F6091D1020E94BE +:101AF0003109BC01892B09F440C09091E800977F1F +:101B00009093E80089819A810E944A0A8091E800B6 +:101B10008B778093E80031C0803879F58091E800B8 +:101B2000877F8093E8008091C8028093F1008091C4 +:101B3000E8008E778093E8000E94DD0A1EC08111C4 +:101B40001CC09091CF029230C0F48091E800877F52 +:101B50008093E8009093C8020E94DD0A8091C80239 +:101B6000811106C08091E30087FD02C081E001C0C1 +:101B700084E08093CC020E94FC078091E80083FF00 +:101B80000AC08091E800877F8093E8008091EB0095 +:101B900080628093EB00AA960FB6F894DEBF0FBE6A +:101BA000CDBFDF91CF911F91089590935A028093FA +:101BB00059020895E0915902F0915A02309721F0AC +:101BC0000190F081E02D099480E00895EF92FF925A +:101BD0000F931F93CF93DF93E0915902F0915A0234 +:101BE0003097B1F18C010280F381E02D099580914D +:101BF000B70282FF2DC080FF04C08FE393E00E94F4 +:101C00002605E80118E089E3E82E83E0F82E8091AC +:101C1000B70280FF0BC088811F928F93FF92EF92D3 +:101C20000E94BF050F900F900F900F9011502196BA +:101C30001111EDCF8091B70280FF0AC087E393E0D6 +:101C4000DF91CF911F910F91FF90EF900C9426059B +:101C5000DF91CF911F910F91FF90EF900895E09148 +:101C60005902F0915A02309721F00480F581E02D5D +:101C700009940895CF93DF93EC01809157029091DE +:101C80005802C817D90709F1D0935802C0935702D8 +:101C9000E0915902F0915A023097B9F00680F7812D +:101CA000E02DCE0109958091B70282FF0EC080FF22 +:101CB0000CC0DF93CF9389E293E09F938F930E94B0 +:101CC000BF050F900F900F900F90DF91CF91089567 +:101CD000CF93DF93EC018091550290915602C81783 +:101CE000D90709F1D0935602C0935502E0915902E9 +:101CF000F0915A023097B9F00084F185E02DCE01C1 +:101D000009958091B70282FF0EC080FF0CC0DF935F +:101D1000CF9389E193E09F938F930E94BF050F902B +:101D20000F900F900F90DF91CF9108950C946A0F50 +:101D30000E94601A0C94C8055F926F927F928F92F6 +:101D40009F92AF92BF92CF92DF92EF92FF920F934A +:101D50001F93CF93DF9300D000D01F92CDB7DEB793 +:101D60000E94D2058CE5C82E82E0D82E512C882402 +:101D70008394912C852D0E943006A82EF601E080D8 +:101D8000E82641F45394FFEFCF1ADF0A80E158129E +:101D9000F1CF40C08091B70281FD0E94860F00E024 +:101DA00010E0F12CB12CC701002E02C0959587954B +:101DB0000A94E2F780FF28C009835A823401002E7A +:101DC00002C0660C771C0A94E2F793012A213B219A +:101DD00081E0232B09F480E08B830E94691A8160E3 +:101DE000782F9D838C8349815A816B818D810E94DC +:101DF000BC0F49815A816B817C818D810E94E319DE +:101E0000F6018081682660820F5F1F4F0830110540 +:101E100051F6B8CF8FEF89838A831B820E94691A9B +:101E20008160782F9D838C8349815A816B818D815C +:101E30000E94BC0F0E94E2190E94361D10915B02A5 +:101E40000E94DA0D181771F10E94DA0D80935B027F +:101E50009091B70292FF0EC090FF0CC01F928F931B +:101E60008AE493E09F938F930E94BF050F900F9099 +:101E70000F900F9080915B020F900F900F900F903A +:101E80000F90DF91CF911F910F91FF90EF90DF9016 +:101E9000CF90BF90AF909F908F907F906F905F900A +:101EA0000C94F4190F900F900F900F900F90DF91FA +:101EB000CF911F910F91FF90EF90DF90CF90BF9047 +:101EC000AF909F908F907F906F905F9008950C944B +:101ED000360608950895CF93DF931F92CDB7DEB7EE +:101EE00069830E94300690E021E030E0698102C001 +:101EF000220F331F6A95E2F72823392381E0232B31 +:101F000009F480E00F90DF91CF910895EF92FF9256 +:101F10000F931F93CF93DF9383E693E00E942605F0 +:101F2000C0E0D0E087E2E82E81E0F82E05E513E07E +:101F30008C2F0E9430060E94D019FF92EF921F92C0 +:101F40008F93DF93CF931F930F930E94BF0521962A +:101F50008DB79EB708960FB6F8949EBF0FBE8DBF83 +:101F6000C031D10529F7DF91CF911F910F91FF90DB +:101F7000EF90089508950895CF93DF93CDB7DEB71E +:101F80002B970FB6F894DEBF0FBECDBF942F4F83B3 +:101F9000252F588769877A878B874A855B85452BEC +:101FA00021F02F3F09F59F3FF9F4DE01119686E0FD +:101FB000FD0111928A95E9F785E0FE0137960190BF +:101FC0000D928A95E1F749815A816B817C818D81DF +:101FD0009E810E949D162B960FB6F894DEBF0FBE11 +:101FE000CDBFDF91CF9108954F81588569857A855E +:101FF0008B850E94E319D9CFCF93882309F465C05C +:10200000C82F8CEF8C0F813A20F080E58C0F8E3238 +:1020100048F48C2F0E946220811157C08C2F0E949F +:102020002C190CC080E28C0F883058F4C77081E006 +:1020300001C0880FCA95EAF70E946B19CF910C94E2 +:10204000A5198BE58C0F833078F4C53A29F0C63A90 +:1020500031F083E890E005C081E890E002C082E8BA +:1020600090E0CF910C943A0E88E58C0F853168F59D +:10207000C83A89F0C93A91F0CA3A99F0CB3AA1F03E +:10208000CC3AA9F0CD3AB1F0CE3AB9F0CF3AC1F09E +:1020900080E090E017C082EE90E014C089EE90E0FE +:1020A00011C08AEE90E00EC085EB90E00BC086EB8D +:1020B00090E008C083EB90E005C084EB90E002C0A4 +:1020C00087EB90E0CF910C94680ECF910895882310 +:1020D00049F19CEF980F913A20F090E5980F9E32CD +:1020E00018F40E9449190DC090E2980F983058F4E6 +:1020F000877091E001C0990F8A95EAF7892F0E94B5 +:1021000071190C94A5199BE5980F933020F480E089 +:1021100090E00C943A0E885A853120F480E090E0EB +:102120000C94680E0895882321F00E946B190C947A +:10213000A5190895882321F00E9471190C94A519FE +:102140000895BF92CF92DF92EF92FF920F931F9369 +:10215000CF93DF9300D000D000D0CDB7DEB725E01D +:10216000FC01DE01119601900D922A95E1F7FC0128 +:1021700040813181F280258122952F7063817481A5 +:10218000672B09F4FEC23F3F19F44F3F09F4F9C22F +:102190006C0149833A8389819A812E830E94EB18CE +:1021A000182FB92E0E94EA180E94FA17EB2DE2951B +:1021B000EF70F0E0EC5BFF4F2E810C9429238B2D08 +:1021C000807F9B2D9F70092F882311F00295007F3F +:1021D000FF2049F0002309F481C2802F0E947E195C +:1021E0000E94A5197BC2812F0E946710002309F469 +:1021F000C8C2802F0E94841926960FB6F894DEBFBD +:102200000FBECDBFDF91CF911F910F91FF90EF9047 +:10221000DF90CF90BF900C94A5198B2D807F9B2DC4 +:102220009F70092F803211F00295007F112319F061 +:10223000113009F12AC0FF20B1F0802F222351F183 +:10224000213041F526960FB6F894DEBF0FBECDBF04 +:10225000DF91CF911F910F91FF90EF90DF90CF9082 +:10226000BF900C948E19222319F0213009F489C2F1 +:102270000E9491192DC0FF20F1F0263008F081C294 +:102280000E946819802329F023C0FF20F9F0211152 +:1022900016C0802F26960FB6F894DEBF0FBECDBFB6 +:1022A000DF91CF911F910F91FF90EF90DF90CF9032 +:1022B000BF900C949310253008F063C209C0F6015A +:1022C000858180FF0BC28F708583E3CF21111BC2F4 +:1022D000802F82C12B2D26952695237030E0211565 +:1022E000310521F021303105D1F04BC2FF2021F022 +:1022F000812F9B2D937002C080E090E026960FB650 +:10230000F894DEBF0FBECDBFDF91CF911F910F912B +:10231000FF90EF90DF90CF90BF900C943A0EFF208B +:1023200021F0812F9B2D937002C080E090E02696D3 +:102330000FB6F894DEBF0FBECDBFDF91CF911F91D6 +:102340000F91FF90EF90DF90CF90BF900C94680EAC +:10235000812FFF2019F00E94BC1B02C00E94241C88 +:1023600026960FB6F894DEBF0FBECDBFDF91CF919A +:102370001F910F91FF90EF90DF90CF90BF900C9442 +:10238000A91C8B2D837009F07BC0F110FAC1812F3D +:10239000829586958770880F880F912F9F70C92E20 +:1023A000D12CE12CF12C082E04C0CC0CDD1CEE1C31 +:1023B000FF1C0A94D2F714FF12C04FE050E060E017 +:1023C00070E004C0440F551F661F771F8A95D2F72F +:1023D000CB01BA01609570958095909503C060E03F +:1023E00070E0CB012B2D269526952370422F50E0CF +:1023F00042305105D9F04330510569F16C297D29EE +:102400008E299F294130510551F126960FB6F89437 +:10241000DEBF0FBECDBFDF91CF911F910F91FF9017 +:10242000EF90DF90CF90BF900C940F186C297D290E +:102430008E299F2926960FB6F894DEBF0FBECDBF1A +:10244000DF91CF911F910F91FF90EF90DF90CF9090 +:10245000BF900C9421180E940F18C701B601269650 +:102460000FB6F894DEBF0FBECDBFDF91CF911F91A5 +:102470000F91FF90EF90DF90CF90BF900C94FD17DD +:10248000FF2019F08B2D817001C08695882309F4F7 +:1024900078C1812F829586958770880F880F912F3C +:1024A0009F70C92ED12CE12CF12C082E04C0CC0C2D +:1024B000DD1CEE1CFF1C0A94D2F714FF12C04FE083 +:1024C00050E060E070E004C0440F551F661F771FA6 +:1024D0008A95D2F7CB01BA01609570958095909559 +:1024E00003C060E070E0CB012B2D2695269523706C +:1024F000422F50E042305105D9F04330510569F187 +:102500006C297D298E299F294130510551F126964C +:102510000FB6F894DEBF0FBECDBFDF91CF911F91F4 +:102520000F91FF90EF90DF90CF90BF900C94C61862 +:102530006C297D298E299F2926960FB6F894DEBF37 +:102540000FBECDBFDF91CF911F910F91FF90EF9004 +:10255000DF90CF90BF900C94D8180E94C618C70186 +:10256000B60126960FB6F894DEBF0FBECDBFDF9141 +:10257000CF911F910F91FF90EF90DF90CF90BF9080 +:102580000C94B418103FC9F128F480E4810F803214 +:1025900050F09FC0123F09F461C008F44AC0133FD5 +:1025A00009F471C096C0012F00718B2D8F71FF202F +:1025B00051F00E944D18812F002319F08295807FE1 +:1025C00069CE8F7067CE0E946E18812F002319F09C +:1025D0008295807F01C08F7026960FB6F894DEBF7B +:1025E0000FBECDBFDF91CF911F910F91FF90EF9064 +:1025F000DF90CF90BF900C949A10FF20B1F025305F +:1026000008F0BFC08B2D8F7126960FB6F894DEBFF1 +:102610000FBECDBFDF91CF911F910F91FF90EF9033 +:10262000DF90CF90BF900C949318263008F0A9C08B +:10263000E9CFFF20A9F08B2D8F7126960FB6F89465 +:10264000DEBF0FBECDBFDF91CF911F910F91FF90E5 +:10265000EF90DF90CF90BF900C944D18FF2059F36E +:102660008B2D8F7126960FB6F894DEBF0FBECDBFAF +:10267000DF91CF911F910F91FF90EF90DF90CF905E +:10268000BF900C946E18FF2099F08B2D8F712696B9 +:102690000FB6F894DEBF0FBECDBFDF91CF911F9173 +:1026A0000F91FF90EF90DF90CF90BF900C9438186F +:1026B00026960FB6F894DEBF0FBECDBFDF91CF9147 +:1026C0001F910F91FF90EF90DF90CF90BF900C94EF +:1026D0003318FF20A9F0222309F4ADCF812F2696CD +:1026E0000FB6F894DEBF0FBECDBFDF91CF911F9123 +:1026F0000F91FF90EF90DF90CF90BF900C94FC0F64 +:10270000222309F4ADCF812F26960FB6F894DEBFB1 +:102710000FBECDBFDF91CF911F910F91FF90EF9032 +:10272000DF90CF90BF900C9467104B2D4F70612FAE +:10273000C6010E94321B26960FB6F894DEBF0FBE6C +:10274000CDBFDF91CF911F910F91FF90EF90DF9060 +:10275000CF90BF900C9445174B2D4F70612FC60141 +:1027600026960FB6F894DEBF0FBECDBFDF91CF9196 +:102770001F910F91FF90EF90DF90CF90BF900C943E +:10278000351B26960FB6F894DEBF0FBECDBFDF9186 +:10279000CF911F910F91FF90EF90DF90CF90BF905E +:1027A00008950E948B190E945A190E94A5190E942F +:1027B000DD1D0E94A91C80E090E00E943A0E80E09E +:1027C00090E00C94680E0E947B190C94D1130E9427 +:1027D000EB18292F22952F7030E02C3031054CF466 +:1027E0002A303105C4F4225031092230310540F03D +:1027F00023C02C303105D1F02F303105B9F01CC089 +:10280000853A28F48430B0F4823028F413C090E282 +:10281000980F983078F0883E30F4803E58F4845019 +:10282000813A50F407C0803F39F404C093FB8827F5 +:1028300080F9089581E0089580E00895CF93DF93B3 +:1028400000D000D01F92CDB7DEB70F900F900F9041 +:102850000F900F90DF91CF910895CF93DF9300D029 +:1028600000D000D0CDB7DEB726960FB6F894DEBF05 +:102870000FBECDBFDF91CF910895CF93DF93C0916D +:102880006C0280916D02C817A1F0D0E0CE0166E025 +:1028900070E00E94F822FC01E259FD4F4081518115 +:1028A00062817381848195810E942D142196C77065 +:1028B000E8CFDF91CF91089540919E0250919F0201 +:1028C0006091A0027091A1028091A2029091A30256 +:1028D0000C942D14CF93DF938091A30282958F7077 +:1028E00009F05CC08091A002882309F457C02091B0 +:1028F0006C02D0916D0240919E02C0919F02E091C6 +:10290000A102F091A2022D1709F448C030E03097DF +:1029100009F440C0CF3F11F44F3FE1F1C90166E037 +:1029200070E00E94F822DC01A259BD4F11968C91F3 +:102930001197C8132FC08C9148132CC012968C91FC +:102940001297811127C013968D919C9114978E1721 +:102950009F0708F401978E1B9F0B883C9105D0F4CC +:102960008091A3028F7080618093A302C90166E009 +:1029700070E00E94F822FC01ED58FD4F90819F709D +:10298000906190838EE992E00E94A110DF91CF9137 +:102990000C943D142F5F3F4F2770B5CFDF91CF913F +:1029A0000895BF92CF92DF92EF92FF920F931F9301 +:1029B000CF93DF93CDB7DEB761970FB6F894DEBF44 +:1029C0000FBECDBF8C0185E0F801DE011D960190A0 +:1029D0000D928A95E1F7D8014C9111962C9111979F +:1029E0001296EC9012971396CD90DC90149750911C +:1029F0009E0260919F028091A1029091A202009795 +:102A000009F46EC16F3F19F45F3F09F469C1B090DA +:102A1000A002BB2009F4C3C03091A302C816D90696 +:102A200028F0F601E81BF90BCF0104C080959095C2 +:102A30008C0D9D1DFF24F394883C910588F0F12CAA +:102A4000307F09F0CBC07C2DD98AC88A522F6E2DD9 +:102A500089890E941E148EE992E00E94A110B4C0E0 +:102A6000832F807F09F049C0621314C0541312C031 +:102A7000E11010C03F7030613093A3020E945C14DB +:102A80008EE992E00E94A1108091A302D8011596D0 +:102A90008C9331C0CD2831F12F3F11F44F3F11F10C +:102AA000FE2CE1101FC0E0916C0230916D02E31723 +:102AB00009F45CC0F0E0CF0166E070E00E94F8220B +:102AC000DC01A259BD4F11968C911197281307C0B4 +:102AD0008C91481304C012968C91811103C03196D9 +:102AE000E770E5CFFE2CEE2009F416C18091A30219 +:102AF00081608093A302F12C0FC1621308C05413AC +:102B000006C0E11004C08091A302D801C1C04D8766 +:102B10002E878D859E850E94E7138823E1F1EE20A4 +:102B2000D1F12091A302822F82958F7090E00297BD +:102B300074F080919E0290919F0298878F831986EE +:102B4000DB86CA862C87CE0107960E94A11086E0FC +:102B5000F801AEE9B2E001900D928A95E1F70E948A +:102B60006A140E945C14FF24F394D6C04D872E870C +:102B70008D859E850E94EB18292F22952F7030E0BD +:102B8000223031050CF0BCC09F7009F0B6C0805EE9 +:102B9000883008F4C1C0C8010E94A110E4CFC81653 +:102BA000D90608F453C0F601E81BF90BCF01883CA5 +:102BB000910508F450C0F12C7C2DD98AC88A522F77 +:102BC0006E2D89890E941E14EEE9F2E086E0DF0195 +:102BD0001D928A95E9F70E945C149EC0621314C08E +:102BE000541312C0E11010C08091A302F801858334 +:102BF000C8010E94A11086E0EEE9F2E0DF011D921B +:102C00008A95E9F7FB2C88C04D872E878D859E8598 +:102C10000E94E713882309F4BECFEE2009F4BBCF4E +:102C20002091A302822F82958F7090E002970CF47E +:102C30008ECF80919E0290919F029A8389831B82FE +:102C4000DD82CC822E83CE0101967FCF8095909538 +:102C50008C0D9D1DACCFFE2CEE2009F49CCF621391 +:102C60002EC054132CC02091A30220FD1FC0822F20 +:102C700082958F70D9F0D80115962C9315978F30C7 +:102C800049F08F5F982F9295907F822F8F70892BBC +:102C900015968C93C8010E94A11086E0F801AEE958 +:102CA000B2E001900D928A95E1F795CF86E0F801A8 +:102CB000AEE9B2E001900D928A95E1F72DC04D8703 +:102CC0002E878D859E850E94E713811140CF8091CC +:102CD000A30281608093A302C8010E94A1101CC0BE +:102CE000EE2009F458CF4D872E878D859E850E9452 +:102CF000E713882309F44FCF2ACF811148CF0CC0A6 +:102D0000243031050CF047CF9F7009F440CFF80113 +:102D10009581907F09F03BCF8F2D61960FB6F89487 +:102D2000DEBF0FBECDBFDF91CF911F910F91FF90FE +:102D3000EF90DF90CF90BF900895CF93DF93CDB702 +:102D4000DEB72C970FB6F894DEBF0FBECDBF4F8312 +:102D5000588769877A878B879C87CE0107960E9460 +:102D6000D114882371F08F8198852A853B85232B88 +:102D700009F43FC09F3F09F068C08F3F09F065C06C +:102D800038C086E0FE013796DE01119601900D9263 +:102D90008A95E1F76F817885EA85FB85309749F15F +:102DA0007F3F11F46F3F29F180916D0290E09C010B +:102DB0002F5F3F4F2770332740916C0250E024175C +:102DC000350709F44BC069837A83FD83EC8366E0A1 +:102DD00070E00E94F822DC01A259BD4F96E0FE018E +:102DE000319601900D929A95E1F720936D020E9421 +:102DF0003D1480916C0290916D028917E9F190E089 +:102E000066E070E00E94F82282599D4F0E94D11422 +:102E1000882391F180916C0290E066E070E00E945E +:102E2000F822FC01E259FD4F40815181628173819A +:102E3000848195810E942D1480916C0290E001960E +:102E40008770992780936C02D4CF4F81588569850C +:102E50007A858B859C850E942D14CBCF0E94E3132D +:102E600010926D0210926C02EEE9F2E086E0DF0152 +:102E70001D928A95E9F7BDCF2C960FB6F894DEBF68 +:102E80000FBECDBFDF91CF910895DF92EF92FF92F9 +:102E90000F931F93CF93DF93FC01892B09F48AC012 +:102EA000E12CF12CDD24D394EF0121968491853718 +:102EB00009F461C058F4843708F04EC0843008F03B +:102EC0006AC08130D1F0823071F174C0883709F462 +:102ED0005DC050F4863709F455C0873709F06AC0E1 +:102EE0008E2D0E94781954C09CE7980F903708F0F7 +:102EF00061C08F770E94671050C08F010E5F1F4F17 +:102F0000FE01849190E2980F983050F48770FD2D67 +:102F100001C0FF0F8A95EAF78F2F0E947E1914C017 +:102F20000E94FC0F13C08F010E5F1F4FFE01C49162 +:102F300080E28C0F883060F4C7708D2D01C0880F3F +:102F4000CA95EAF70E9484190E94A519E80125C0D4 +:102F50008C2F0E946710FACF9F012E5F3F4FFE011A +:102F6000C491CC2369F08FE99FE00197F1F700C08D +:102F70000000C150F6CF9F012E5F3F4FFE01F4903D +:102F8000E9010BC00E946819E82E07C00E947B1956 +:102F90000E94A51902C00E94FC0F8F2D882341F0CA +:102FA000EFE9FFE03197F1F700C000008150F6CF64 +:102FB000FE017ACFDF91CF911F910F91FF90EF909B +:102FC000DF9008956093A8027093A9028093AA02EB +:102FD0009093AB020E94F2190C94D1136093A40257 +:102FE0007093A5028093A6029093A7020E94F31902 +:102FF0000C94D11308950C94E2170F931F93009132 +:10300000A8021091A9022091AA023091AB02602B74 +:10301000712B822B932B1F910F910C94E2170F931E +:103020001F930091A8021091A9022091AA02309149 +:10303000AB0260237123822393231F910F910C9481 +:10304000E2170F931F930091A8021091A9022091FB +:10305000AA023091AB0260277127822793271F9124 +:103060000F910C94E21760E070E0CB010C94EE1726 +:103070000F931F9341E050E060E070E08A019B01F4 +:1030800004C0000F111F221F331F8A95D2F7C901F8 +:10309000B8011F910F910C94EE170F931F9341E00D +:1030A00050E060E070E004C0440F551F661F771FBA +:1030B0008A95D2F78091A4029091A502A091A602D0 +:1030C000B091A7028A019B01082B192B2A2B3B2BBD +:1030D000C901B8011F910F910C94EE170F931F9324 +:1030E00041E050E060E070E004C0440F551F661FEF +:1030F000771F8A95D2F7409550956095709580918D +:10310000A4029091A502A091A602B091A7028A0103 +:103110009B01082319232A233B23C901B8011F91CE +:103120000F910C94EE170F931F9341E050E060E075 +:1031300070E004C0440F551F661F771F8A95D2F7B1 +:103140008091A4029091A502A091A602B091A7023D +:103150008A019B01082719272A273B27C901B801A3 +:103160001F910F910C94EE170F931F930091A402DF +:103170001091A5022091A6023091A702602B712B1D +:10318000822B932B1F910F910C94EE170F931F938B +:103190000091A4021091A5022091A6023091A702ED +:1031A00060237123822393231F910F910C94EE17B8 +:1031B0000F931F930091A4021091A5022091A602E3 +:1031C0003091A70260277127822793271F910F91C3 +:1031D0000C94EE170895CF92DF92EF92FF920F9327 +:1031E0001F93CF93DF938C01C090A802D090A902C7 +:1031F000E090AA02F090AB024091A4025091A50287 +:103200006091A6027091A702C42AD52AE62AF72A5D +:10321000CFE1D0E0D701C6010C2E04C0B695A7952A +:10322000979587950A94D2F780FF07C0B8018C2F35 +:103230000E94031B8130910531F4219758F7B801A2 +:1032400080E00E94031BDF91CF911F910F91FF90AF +:10325000EF90DF90CF90089520910B0130910C01F9 +:10326000F90132969FEF40E05191581789F09F3F46 +:1032700019F4511101C0942F4F5F4630A9F79F3FB9 +:1032800039F0F901E90FF11D97FDFA958283089550 +:10329000089520910B0130910C01F9013296285FBD +:1032A0003F4F9081981301C010823196E217F307C7 +:1032B000C1F7089581E090E0E0910B01F0910C01DD +:1032C000E80FF91F1082019688309105A9F708953B +:1032D0008091B60208959091B602892B8093B60230 +:1032E000089580959091B60289238093B60208953F +:1032F0008093B60208951092B60208959091B50297 +:10330000892B8093B502089580959091B502892309 +:103310008093B50208951092B50208958093AC028F +:1033200008951092AC02089580910B0190910C01C8 +:10333000FC0131969C01285F3F4F80E091919111F3 +:103340008F5FE217F307D1F70895E0910B01F09139 +:103350000C018091B6028083E0910B01F0910C0189 +:1033600090818091B502892B80838091AC02882363 +:1033700061F0E0910B01F0910C019081892B808329 +:103380000E94941981111092AC0280910B019091CE +:103390000C010C94E60D9093330180933201089553 +:1033A0008295982F9C7C292F26952695982F93738C +:1033B000990F990F922B892F8A7A86959575990F77 +:1033C000892B08950895CF93DF9300D000D01F92EA +:1033D000CDB7DEB70F900F900F900F900F90DF9149 +:1033E000CF910895089508950C94670F8091CC02B1 +:1033F000843021F11092B80220E488E190E00FB609 +:10340000F894A895809360000FBE2093600083B766 +:10341000817F846083BF83B7816083BF7894889500 +:1034200083B78E7F83BF0FB6F894A8958091600014 +:10343000886180936000109260000FBE0895CF9362 +:103440000E94BA0F0E94D2050E94BB0FC0E08C2FD1 +:103450000E943006811104C0CF5FC031C1F701C0A6 +:1034600081E0CF9108950E94690F0C94E3131F929D +:103470000F920FB60F9211248F939F93AF93BF9328 +:103480008091B802811113C08091B9029091BA0263 +:10349000A091BB02B091BC024196A11DB11D8093C9 +:1034A000B9029093BA02A093BB02B093BC02BF9141 +:1034B000AF919F918F910F900FBE0F901F90189515 +:1034C00082E084BD93E095BD9AEF97BD80936E0036 +:1034D00008952FB7F8948091B9029091BA02A09103 +:1034E000BB02B091BC022FBF08952FB7F894609132 +:1034F000B9027091BA028091BB029091BC022FBFB9 +:103500000895CF92DF92EF92FF920F931F932FB700 +:10351000F8944091B9025091BA026091BB02709147 +:10352000BC022FBF6A017B01EE24FF248C0120E046 +:1035300030E0C016D106E206F30610F441505109FE +:103540009A01281B390BC9011F910F91FF90EF9031 +:10355000DF90CF9008951F920F920FB60F92112413 +:103560008F939F93AF93BF938091B9029091BA02CA +:10357000A091BB02B091BC020196A11DB11D809328 +:10358000B9029093BA02A093BB02B093BC02BF9160 +:10359000AF919F918F910F900FBE0F901F90189534 +:1035A0000E942E0BF8942FEF87EA91E6215080407D +:1035B0009040E1F700C0000087E090EBDC018093D1 +:1035C000D5029093D602A093D702B093D8029CE084 +:1035D00088E10FB6F894A895809360000FBE909391 +:1035E0006000FFCFE92FF0E093E0EE0FFF1F9A9508 +:1035F000E1F7E80FF11DE855FF4F9491892F8F7087 +:1036000092959F700895CF93C82FCB010E94F21A14 +:10361000492F90E0242F30E054E0220F331F5A95B9 +:10362000E1F7282B392B2038310519F480E090E0A0 +:1036300017C0EC2FF0E023E0EE0FFF1F2A95E1F713 +:103640004770E40FF11D34E0EE0FFF1F3A95E1F7EC +:10365000E80FF91FEE0FFF1FE050F8498591949194 +:10366000CF91089580E090E0089508958091BF0281 +:1036700080FF0CC08091100190E065E070E00E9436 +:10368000F82295958795959587952EC081FF0AC05C +:103690008091100190E065E070E00E94F82295951D +:1036A000879522C082FF08C08091100190E065E0FC +:1036B00070E00E94F82218C02091C0022223D1F0AD +:1036C00030910F01231780F78091100190E065E0A1 +:1036D00070E00E94F822622F70E00E94F822632FAF +:1036E00070E00E941523CB018038910530F40097DB +:1036F00031F0089585E090E008958FE7089581E026 +:1037000008958091BF0280FF08C060910E0170E0B3 +:10371000759567957595679523C081FF06C0609183 +:103720000E0170E0759567951BC082FF04C0609123 +:103730000E0170E012C06091C0026623D1F02091AA +:103740000D016217A0F780910E0170E090E00E94D9 +:10375000F822622F70E00E9415236038710528F46A +:103760006115710521F0862F08958FE7089581E096 +:10377000089561E070E0F4CF803F21F40E94361B91 +:10378000819504C0813F29F40E94361B8093C302B7 +:103790000895823F21F40E94361B819504C0833F27 +:1037A00029F40E94361B8093C2020895893F19F4C0 +:1037B0000E94811B05C08A3F31F40E94811B8195C4 +:1037C0008093C40208958B3F21F40E94811B819550 +:1037D00004C08C3F29F40E94811B8093C502089588 +:1037E000843F21F48091C102816017C0853F21F49C +:1037F0008091C102826011C0863F21F48091C10294 +:1038000084600BC0873F21F48091C102886005C0AD +:10381000883F31F48091C10280618093C102089594 +:103820008D3F21F48091BF0281600BC08E3F21F457 +:103830008091BF02826005C08F3F29F48091BF0252 +:1038400084608093BF020895803F39F48091C30261 +:1038500087FF6CC01092C30269C0813F29F4809138 +:10386000C3021816BCF362C09091C202823F29F4D1 +:1038700097FF5CC01092C20259C0833F19F4191619 +:10388000CCF354C0893F41F48091C40218160CF067 +:103890004DC01092C4024AC08A3F29F48091C402EC +:1038A00087FF44C0F6CF8B3F39F48091C50287FF74 +:1038B0003DC01092C5023AC08C3F29F48091C502E8 +:1038C0001816BCF333C0843F21F48091C1028E7F6F +:1038D00017C0853F21F48091C1028D7F11C0863FC2 +:1038E00021F48091C1028B7F0BC0873F21F480912E +:1038F000C102877F05C0883F31F48091C1028F7E6D +:103900008093C10213C08D3F21F48091BF028E7F4E +:103910000BC08E3F21F48091BF028D7F05C08F3F89 +:1039200029F48091BF028B7F8093BF028091C202F5 +:1039300081110EC08091C30281110AC08091C4021E +:10394000811106C08091C502811102C01092C0028F +:1039500008958091B70283FF7EC088E993E00E94BA +:1039600026058091C1021F928F9383E993E09F9374 +:103970008F930E94BF0581E993E00E942605809104 +:10398000C202282F082E000C330B3F938F938EE832 +:1039900093E09F938F930E94BF058CE893E00E9471 +:1039A00026058091C302282F082E000C330B3F936D +:1039B0008F9389E893E09F938F930E94BF0587E8D8 +:1039C00093E00E9426058091C402282F082E000C47 +:1039D000330B3F938F9384E893E09F938F930E94E0 +:1039E000BF0582E893E00E9426058091C502282F3A +:1039F000082E000C330B3F938F938FE793E09F9338 +:103A00008F930E94BF058CE793E00E94260580916A +:103A1000C0021F928F9389E793E09F938F930E9438 +:103A2000BF0587E793E00E9426058091BF021F92A1 +:103A30008F9384E793E09F938F930E94BF0581E764 +:103A400093E00E9426058DB79EB74C960FB6F8946A +:103A50009EBF0FBE8DBF81EC92E00E942F0E0E9490 +:103A6000691A9093BE028093BD0208951F93CF936D +:103A7000DF938091BD029091BE020E94811AFC01E9 +:103A80002091C002222329F090911101892F90E00A +:103A900007C08091120190E06AE070E00E94F82275 +:103AA000E817F90708F485C08091C202C091C302EB +:103AB000D091C4021091C502811107C0C11175C017 +:103AC000D11173C0111171C074C02F3F19F02F5F55 +:103AD0002093C002181624F40E94361B8093C20261 +:103AE0008091C20287FF05C00E94361B819580939A +:103AF000C2021C1624F40E94361B8093C3028091DC +:103B0000C30287FF05C00E94361B81958093C302C4 +:103B10006091C202662331F1C091C302CC2311F13E +:103B2000062E000C770B880B990B0E94F72123E3DC +:103B300033E343E35FE30E945B220E94BF21609373 +:103B4000C2026C2FCC0F770B880B990B0E94F721C8 +:103B500023E333E343E35FE30E945B220E94BF2140 +:103B60006093C3021D1624F40E94811B8093C4023B +:103B70008091C40287FF05C00E94811B81958093BC +:103B8000C402111624F40E94811B8093C502809107 +:103B9000C50287FF05C00E94811B81958093C502E5 +:103BA000DF91CF911F910C94A91C2F3F09F08FCF6B +:103BB00097CFDF91CF911F910895E1ECF2E085E07E +:103BC000DF011D928A95E9F71092C0021092BF02A0 +:103BD00008958BEB95E00E9426051F9281E08F935C +:103BE0001F9285E08F938DE695E09F938F930E94BF +:103BF000BF050F900F900F900F900F900F900895AA +:103C00008330E9F128F4813061F0823009F10895C0 +:103C1000853009F462C008F449C0863009F474C0E4 +:103C2000089580911201262F30E0280F311D2F3F7B +:103C3000310524F4680F6093120103C08FEF809365 +:103C40001201809112011F928F9386EA94E072C054 +:103C500080911101262F30E0280F311D2F3F3105B3 +:103C600024F4680F6093110103C08FEF809311015A +:103C7000809111011F928F9384E994E05BC0809141 +:103C80001001262F30E0280F311D2F3F310524F47D +:103C9000680F6093100103C08FEF80931001809133 +:103CA00010011F928F9381E894E044C080910F012E +:103CB000262F30E0280F311D2F3F310524F4680FE7 +:103CC00060930F0103C08FEF80930F0180910F016C +:103CD0001F928F938CE694E02DC080910E01262FC9 +:103CE00030E0280F311D2F3F310524F4680F609319 +:103CF0000E0103C08FEF80930E0180910E011F9281 +:103D00008F9383E594E016C080910D01262F30E05B +:103D1000280F311D2F3F310524F4680F60930D01EA +:103D200003C08FEF80930D0180910D011F928F933F +:103D300088E394E09F938F930E94BF050F900F90AC +:103D40000F900F900895833081F128F4813059F05D +:103D50008230D1F00895853009F449C0B8F1863039 +:103D600009F456C0089580911201681720F4861B4B +:103D70008093120102C010921201809112011F92D1 +:103D80008F9389E294E054C080911101681720F468 +:103D9000861B8093110102C01092110180911101C4 +:103DA0001F928F9387E194E043C0809110016817C0 +:103DB00020F4861B8093100102C0109210018091A4 +:103DC00010011F928F9384E094E032C080910F0124 +:103DD000681720F4861B80930F0102C010920F0118 +:103DE00080910F011F928F938FEE93E021C08091FD +:103DF0000E01681720F4861B80930E0102C01092FA +:103E00000E0180910E011F928F9386ED93E010C0FA +:103E100080910D01681720F4861B80930D0102C06C +:103E200010920D0180910D011F928F938BEB93E007 +:103E30009F938F930E94BF050F900F900F900F904C +:103E40000895CF93C82F1F928F9380EC96E09F9395 +:103E50008F930E94BF0581E090E0A0E0B0E0BC013C +:103E6000CD0104C0660F771F881F991FCA95D2F72E +:103E70000E94FB170F900F900F900F90CF910C9412 +:103E8000E313CF93873288F58E3108F00BC18E3063 +:103E900009F487C0D8F4873009F460C08B3009F486 +:103EA0004FC0863009F002C18091B702817F8E7FBA +:103EB0008093B70285EC96E00E9426058DE999E093 +:103EC0000E94260581E08093C70246C0863109F42E +:103ED000B0C020F4803109F47AC0E8C0893109F417 +:103EE00091C08B3109F449C0E1C0883349F150F4E5 +:103EF000893209F4D5C0853309F4D2C0873209F07C +:103F0000D5C0CEC0833409F4CBC028F48A3308F47A +:103F1000CDC08953C8C0883409F0C8C00E94E313DB +:103F20008CE899E00E9426052FEF83ED90E3215065 +:103F300080409040E1F700C000000E94D01A0CC001 +:103F40008CEE96E041C083E799E00E9426058091BF +:103F5000B70281608093B702C1E0ADC08091B70223 +:103F6000C82FC17080FFEFCF8FE799E00E94260530 +:103F70008091B702817F8E7F3FC09091B70291FB05 +:103F8000CC27C0F981E0C827892FC0FB81F9809335 +:103F9000B702CC2319F086E699E029C088E599E0BC +:103FA00013C09091B70292FBCC27C0F981E0C827DB +:103FB000892FC0FB82F98093B702CC2319F089E4E2 +:103FC00099E015C089E399E00E942605C5CF90913C +:103FD000B70293FBCC27C0F981E0C827892FC0FB2B +:103FE00083F98093B702CC2351F08DE299E00E94CF +:103FF00026058091B70281608093B7025CC080E2A1 +:1040000099E0E2CF81E199E00E94260589ED98E0F0 +:104010000E9426058BE898E00E9426058EE598E030 +:104020000E94260589E198E00E9426058AEE97E025 +:10403000CBCF8CED97E00E9426050E94DA0D1F92EF +:104040008F9382EC97E09F938F930E94BF0580919E +:104050000A011F928F938BEA97E09F938F930E94A0 +:10406000BF05809154021F928F9388E997E09F9338 +:104070008F930E94BF050E94751A9F938F937F9321 +:104080006F9381E897E09F938F930E94BF058DB750 +:104090009EB742960FB6F8949EBF0FBE8DBF5CCF01 +:1040A00080E001C08D510E94211F56CF8FE797E01D +:1040B0000E942605C0E08C2FCF91089580E00895DE +:1040C00080E00895CF93C82F8091C702813091F08E +:1040D00020F0823009F453C04AC1E0910B01F09105 +:1040E0000C018081843489F0883879F0813109F0BD +:1040F00040C10BC0E0910B01F0910C018081843430 +:1041000021F0883811F0813161F48C2F0E945E20FB +:10411000811104C08C2F0E94411F2FC081E090E0CC +:104120002CC08C2F0E946020811126C0C431E1F088 +:1041300070F4CB3081F0C031D1F40E94E91D88EBDE +:1041400096E00E94260582E08093C70215C0C9321E +:1041500059F0C83361F485EC96E00E9426058CEB9B +:1041600096E00E94260508C01092C70204C186EBA3 +:1041700096E00E942605FFC081E08170FEC0C43237 +:1041800028F5CE3108F0C1C0CB30A1F1D0F4C73052 +:1041900009F0D3C08EE18093120182E38093110174 +:1041A0008AE08093100184E180930F0188E080937E +:1041B0000E0188E280930D018CE595E00E942605B2 +:1041C000BFC0C33149F1C431C1F0B7C0CB3409F429 +:1041D000A9C028F4C93289F0C83361F0AEC0C13536 +:1041E00009F49EC0C23509F499C0CE3409F0A5C0C7 +:1041F0006AE09EC00E94E91DA3C08091C602882388 +:1042000019F01092C6029CC089E695E00E9426052E +:1042100081E08093C702B1C083E495E00E94260547 +:1042200081E395E00E942605809112011F928F93F1 +:104230008EE295E09F938F930E94BF058CE295E0FC +:104240000E9426058AE195E00E94260580911101D1 +:104250001F928F9387E195E09F938F930E94BF05F4 +:1042600085E195E00E94260586E095E00E942605FE +:10427000809110011F928F9383E095E09F938F931D +:104280000E94BF0581E095E00E94260580EF94E042 +:104290000E94260580910F011F928F938DEE94E06E +:1042A0009F938F930E94BF058BEE94E00E9426059A +:1042B00086ED94E00E94260580910E011F928F9357 +:1042C00083ED94E09F938F930E94BF0581ED94E06E +:1042D0000E9426058AEB94E00E94260580910D013C +:1042E0001F928F9387EB94E09F938F930E94BF055B +:1042F00085EB94E00E9426058DB79EB748960FB6D1 +:10430000F8949EBF0FBE8DBF1BC0CE51EC2FF0E0C6 +:10431000E85DFE4F80818093C60212C061E003C059 +:1043200061E006C06AE08091C6020E94001E08C0DB +:104330008091C6020E94A31E03C08AE595E013C0C7 +:104340008091C602882369F01F928F9384E595E0DF +:104350009F938F930E94BF050F900F900F900F9027 +:1043600004C081E595E00E94260581E006C0109218 +:10437000C70280E002C080E000CFCF9108950E9484 +:10438000C6216894B1110C94552208950E943A22D6 +:1043900088F09F5798F0B92F9927B751B0F0E1F006 +:1043A000660F771F881F991F1AF0BA95C9F714C0B6 +:1043B000B13091F00E945422B1E008950C9454223F +:1043C000672F782F8827B85F39F0B93FCCF38695EF +:1043D00077956795B395D9F73EF49095809570954C +:1043E00061957F4F8F4F9F4F0895E89409C097FBC9 +:1043F0003EF490958095709561957F4F8F4F9F4FBC +:104400009923A9F0F92F96E9BB279395F6958795FF +:1044100077956795B795F111F8CFFAF4BB0F11F4C2 +:1044200060FF1BC06F5F7F4F8F4F9F4F16C0882369 +:1044300011F096E911C0772321F09EE8872F762F9F +:1044400005C0662371F096E8862F70E060E02AF0E0 +:104450009A95660F771F881FDAF7880F96958795CC +:1044600097F9089557FD9058440F551F59F05F3F35 +:1044700071F04795880F97FB991F61F09F3F79F086 +:1044800087950895121613061406551FF2CF469508 +:10449000F1DF08C0161617061806991FF1CF86958A +:1044A0007105610508940895E894BB27662777276E +:1044B000CB0197F908950E946D220C94E7220E9487 +:1044C000D92238F00E94E02220F0952311F00C94BC +:1044D000D0220C94D6220C9455220E94322278F3DA +:1044E0009923C9F35523B9F3950F50E0551FAA2717 +:1044F000EE27FF27BB2700240894679520F4E20FDE +:10450000F31FB41F0A1E220F331F441FAA1F6695F4 +:10451000A9F7779530F4F30FB41F0A1E121E08F4A2 +:104520006395330F441FAA1F221F769599F787952D +:1045300020F4B40F0A1E121E631F440FAA1F221F6D +:10454000331F8695A9F7862F712D602D11249F5753 +:1045500050409AF0F1F088234AF0EE0FFF1FBB1F86 +:10456000661F771F881F91505040A9F79E3F510545 +:1045700080F00C94D0220C9455225F3FE4F3983ED7 +:10458000D4F3869577956795B795F795E7959F5FEF +:10459000C1F7FE2B880F911D9695879597F9089581 +:1045A00097F99F6780E870E060E008959FEF80ECE6 +:1045B000089500240A941616170618060906089589 +:1045C00000240A9412161306140605060895092EEF +:1045D0000394000C11F4882352F0BB0F40F4BF2B5E +:1045E00011F460FF04C06F5F7F4F8F4F9F4F08959E +:1045F0000024552704C0080E591F880F991F0097E3 +:1046000029F076956795B8F37105B9F7802D952F48 +:104610000895991B79E004C0991F961708F0961B1E +:10462000881F7A95C9F78095089597FB072E16F491 +:10463000009407D077FD09D00E942F2307FC05D0F6 +:104640003EF4909581959F4F0895709561957F4FA9 +:104650000895EE0FFF1F0590F491E02D0994AA1B19 +:10466000BB1B51E107C0AA1FBB1FA617B70710F05D +:10467000A61BB70B881F991F5A95A9F7809590958F +:0A468000BC01CD010895F894FFCFAE +:10468A0099068A0767073307FF0601AD022808144F +:10469A000A321E404D3622D9028C0256023402C01A +:1046AA0001D901F2010B0200010203040506070801 +:0246BA000900F5 +:106800008800EA44E944E244040005000600070069 +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:10685000280029002A002B002C002D002E002F00DC +:10686000300031003200330034003500360037008C +:10687000380039003A003B003C003D003E003F003C +:1068800040004100420043004400450046004700EC +:10689000480049004A004B004C004D004E004F009C +:1068A000500051005200530054005500560057004C +:1068B000580059005A005B005C005D005E005F00FC +:1068C00060006100620037006400F1A136006700DB +:1068D000680069006A006B006C006D006E006F005C +:1068E0007000710072007300890087008A008B00BD +:1068F000E000E100E200E300E400E500E600E7007C +:106900000100010001000100EA4401000100E2442D +:106910000100010001000100460001004A004B0097 +:10692000010001004700480001000100E9440100A6 +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000010035004C0001000100440045005200D8 +:1069600049000100010050004F0029004D004E0079 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001004D00A3 +:1069A0004A004E004B0001000100010001000100FF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E0000100010001000100490001000100010057 +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/converter/x68k_usb/unimap.c b/converter/x68k_usb/unimap.c new file mode 100644 index 00000000..4c2aaae9 --- /dev/null +++ b/converter/x68k_usb/unimap.c @@ -0,0 +1,45 @@ +/* +Copyright 2017 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "unimap_trans.h" + + +#define AC_FN0 ACTION_LAYER_MOMENTARY(1) + +#ifdef KEYMAP_SECTION_ENABLE +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = { +#else +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { +#endif + UNIMAP( + F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,PAUS, VOLD,VOLU,MUTE, + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, DEL, END, PGDN, P7, P8, P9, PPLS, + CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, P4, P5, P6, COMM, + LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, UP, P1, P2, P3, PENT, + LCTL,LGUI,LALT,MHEN, SPC, HENK,KANA,RALT,RGUI,FN0, RCTL, LEFT,DOWN,RGHT, P0, DOT, PEQL + ), + UNIMAP( + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, + GRV, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, INS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,TRNS,TRNS,HOME,PGUP,LEFT,RGHT, TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,END, PGDN,DOWN, TRNS,TRNS, PGUP, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, HOME,PGDN,END, TRNS, TRNS,TRNS + ), +}; diff --git a/converter/x68k_usb/unimap_trans.h b/converter/x68k_usb/unimap_trans.h new file mode 100644 index 00000000..576d53d1 --- /dev/null +++ b/converter/x68k_usb/unimap_trans.h @@ -0,0 +1,75 @@ +/* +Copyright 2017 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#ifndef UNIMAP_TRANS_H +#define UNIMAP_TRANS_H + +#include +#include +#include "unimap.h" + + +/* X68000 Keyboard Scan codes to Unimap + ,---. ,---. ,-------------------, ,-------------------. ,-----------. ,---------------. + | 61| | 62| | 63| 64| 65| 66| 67| | 68| 69| 6A| 6B| 6C| | 5A| 5B| 5C| | 5D| 52| 53| 54| + `---' `---' `-------------------' `-------------------' `-----------' `---------------' + ,-----------------------------------------------------------. ,-----------. ,---------------. + | 01| 02| 03| 04| 05| 06| 07| 08| 09| 0A| 0B| 0C| 0D| 0E| 0F| | 36| 5E| 37| | 3F| 40| 41| 42| + |-----------------------------------------------------------| |------------ |---------------| + | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1A| 1B| 1C| | | 38| 39| 3A| | 43| 44| 45| 46| + |------------------------------------------------------. 1D | `---=====---' |---------------| + | 71 | 1E| 1F| 20| 21| 2l| 23| 24| 25| 26| 27| 28| 29| | ___| 3C|___ | 47| 48| 49| 4A| + |-----------------------------------------------------------| | 3B|---| 3D| |-----------|---| + | 70 | 2A| 2B| 2C| 2D| 2E| 2F| 30| 31| 32| 33| 34| 70 | `---| 3E|---' | 4B| 4C| 4D| | + `-----------------------------------------------------------' .---=====---. |-----------| 4E| + | 5F| 55 | 56 | 35 | 57 | 58 | 59 | 60| | 72 | 73 | | 4F| 50| 51| | + `---------------------------------------------' `-----------' `---------------' + + ,---. ,---. ,-------------------, ,-------------------. ,-----------. ,---------------. + |F11| |F12| | F1| F2| F3| F4| F5| | F6| F7| F8| F9|F10| |PrS|ScL|Pau| |F15|F16|F17|F18| + `---' `---' `-------------------' `-------------------' `-----------' `---------------' + ,-----------------------------------------------------------. ,-----------. ,---------------. + |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| + |-----------------------------------------------------------| |------------ |---------------| + | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | |Del|End|PgD| | 7| 8| 9| +| + |------------------------------------------------------. Ent| `---=====---' |---------------| + | Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | ___|Up |___ | 4| 5| 6| =| + |-----------------------------------------------------------| |Lef|---|Rig| |-----------|---| + | Shift | Z| X| C| V| B| N| M| ,| .| /| RO| Shift| `---|Dow|---' | 1| 2| 3| | + `-----------------------------------------------------------' .---=====---. |-----------|Ent| + |Cap| Gui| Alt| Space | Alt| Gui| App|Ctl| | F13 | F14 | | 0| ,| .| | + `---------------------------------------------' `-----------' `---------------' +*/ +const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = { + { UNIMAP_NO, UNIMAP_ESC, UNIMAP_1, UNIMAP_2, UNIMAP_3, UNIMAP_4, UNIMAP_5, UNIMAP_6 }, \ + { UNIMAP_7, UNIMAP_8, UNIMAP_9, UNIMAP_0, UNIMAP_MINUS, UNIMAP_EQUAL, UNIMAP_BSLS, UNIMAP_BSPC }, \ + { UNIMAP_TAB, UNIMAP_Q, UNIMAP_W, UNIMAP_E, UNIMAP_R, UNIMAP_T, UNIMAP_Y, UNIMAP_U }, \ + { UNIMAP_I, UNIMAP_O, UNIMAP_P, UNIMAP_LBRC, UNIMAP_RBRC, UNIMAP_ENTER, UNIMAP_A, UNIMAP_S }, \ + { UNIMAP_D, UNIMAP_F, UNIMAP_G, UNIMAP_H, UNIMAP_J, UNIMAP_K, UNIMAP_L, UNIMAP_SCLN }, \ + { UNIMAP_QUOTE, UNIMAP_GRAVE, UNIMAP_Z, UNIMAP_X, UNIMAP_C, UNIMAP_V, UNIMAP_B, UNIMAP_N }, \ + { UNIMAP_M, UNIMAP_COMMA, UNIMAP_DOT, UNIMAP_SLASH, UNIMAP_RO, UNIMAP_SPACE, UNIMAP_INSERT,UNIMAP_PGUP }, \ + { UNIMAP_DELETE,UNIMAP_END, UNIMAP_PGDOWN,UNIMAP_LEFT, UNIMAP_UP, UNIMAP_RIGHT, UNIMAP_DOWN, UNIMAP_NLCK }, \ + { UNIMAP_PSLS, UNIMAP_PAST, UNIMAP_PMNS, UNIMAP_P7, UNIMAP_P8, UNIMAP_P9, UNIMAP_PPLS, UNIMAP_P4 }, \ + { UNIMAP_P5, UNIMAP_P6, UNIMAP_PEQL, UNIMAP_P1, UNIMAP_P2, UNIMAP_P3, UNIMAP_PENT, UNIMAP_P0 }, \ + { UNIMAP_PCMM, UNIMAP_PDOT, UNIMAP_F16, UNIMAP_F17, UNIMAP_F18, UNIMAP_LGUI, UNIMAP_LALT, UNIMAP_RALT }, \ + { UNIMAP_RGUI, UNIMAP_APP, UNIMAP_PSCR, UNIMAP_SLCK, UNIMAP_PAUSE, UNIMAP_F15, UNIMAP_HOME, UNIMAP_CAPS }, \ + { UNIMAP_RCTRL, UNIMAP_F11, UNIMAP_F12, UNIMAP_F1, UNIMAP_F2, UNIMAP_F3, UNIMAP_F4, UNIMAP_F5, }, \ + { UNIMAP_F6, UNIMAP_F7, UNIMAP_F8, UNIMAP_F9, UNIMAP_F10, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }, \ + { UNIMAP_LSHIFT,UNIMAP_LCTRL, UNIMAP_F13, UNIMAP_F14, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, }, \ + { UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO } \ +}; + +#endif -- 2.39.3