diff options
author | Jack Humbert <jack.humb@gmail.com> | 2016-06-21 22:39:54 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-21 22:39:54 -0400 |
commit | 649b33d7783cf3021928534b7ae127e0a89e8807 (patch) | |
tree | c2b5e0cf8ff4aa2918e3b88ab75dbdb071cc0a1d /keyboards/ergodox_ez/keymaps/csharp_dev | |
parent | 464c8e274f993d3571fe5ea5e836fe55a3912ffe (diff) |
Renames keyboard folder to keyboards, adds couple of tmk's fixes (#432)
* fixes from tmk's repo
* rename keyboard to keyboards
Diffstat (limited to 'keyboards/ergodox_ez/keymaps/csharp_dev')
-rw-r--r-- | keyboards/ergodox_ez/keymaps/csharp_dev/compiled.hex | 1159 | ||||
-rw-r--r-- | keyboards/ergodox_ez/keymaps/csharp_dev/csharp_dev.png | bin | 0 -> 97642 bytes | |||
-rw-r--r-- | keyboards/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.png | bin | 0 -> 387797 bytes | |||
-rw-r--r-- | keyboards/ergodox_ez/keymaps/csharp_dev/keymap.c | 239 | ||||
-rw-r--r-- | keyboards/ergodox_ez/keymaps/csharp_dev/readme.md | 47 |
5 files changed, 1445 insertions, 0 deletions
diff --git a/keyboards/ergodox_ez/keymaps/csharp_dev/compiled.hex b/keyboards/ergodox_ez/keymaps/csharp_dev/compiled.hex new file mode 100644 index 0000000000..3f42f6272e --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/csharp_dev/compiled.hex @@ -0,0 +1,1159 @@ +:100000000C94F5020C9439030C9439030C943903C5
+:100010000C9439030C9439030C9439030C94390370
+:100020000C9439030C9439030C94B90E0C948B0F77
+:100030000C9439030C9439030C9439030C94390350
+:100040000C9439030C9445220C9439030C94390315
+:100050000C9439030C94271D0C9439030C94390328
+:100060000C9439030C9439030C9439030C94390320
+:100070000C9439030C9439030C9439030C94390310
+:100080000C9439030C9439030C9439030C94390300
+:100090000C9439030C9439030C9439030C943903F0
+:1000A0000C9439030C9439030C943903B505BB0542
+:1000B000C105C705CD05D205D705E105E605DC0577
+:1000C000EB05F005F505FA05FF050406F80F1A1013
+:1000D00008111A1008115F1082100811D710EA10C9
+:1000E000B913B913E813E8131E143E146F156F15F6
+:1000F00049146F15F914F91460156F156F1569150A
+:100100000615061506150615061506150615061517
+:100110000615061506150615061506150615061507
+:10012000181525152C1533153D1501E1012602265C
+:100130000127022702E101330233000111021101FC
+:10014000080208011A021A012C022C000138023898
+:100150000138023801E101170217011202120107EA
+:1001600002070112021202E1012C022C0001050219
+:1001700005011502150108020801040204010E021E
+:100180000E01330233000111021101180218010F90
+:10019000020F010F020F00011502150108020801EC
+:1001A000170217011802180115021501110211009A
+:1001B00001090209010F020F0112021201040204D7
+:1001C00001170217012C022C00010C020C01110274
+:1001D0001101170217012C022C0001050205011262
+:1001E000021201120212010F020F012C022C000157
+:1001F0001602160117021701150215010C020C0157
+:10020000110211010A020A012C022C000119021923
+:100210000104020401150215012C022C000119022F
+:100220001901120212010C020C01070207012C0233
+:100230002C00010602060112021201110211011620
+:10024000021601170217012C022C000116021601DA
+:100250001702170104020401170217010C020C0116
+:10026000060206012C022C000113021301150215CF
+:10027000010C020C011902190104020401170217F2
+:1002800001080208012C022C0001130213011802BC
+:100290001801050205010F020F010C020C010602F4
+:1002A00006012C022C000000F0A1260227022F02DA
+:1002B00030022B6100001E00140004001D64360291
+:1002C00019011F001A0016001B0037022C622000C3
+:1002D0000800070006003102286821001500090007
+:1002E000190024020601220017000A000500000080
+:1002F000374134022A0000003800000036001601A1
+:100300004C000000330000004A0023001C000B00DA
+:10031000110000004D41240018000D0010002E00B7
+:10032000520025000C000E0034002E022868260022
+:1003300012000F001E022D002C62270013002D0258
+:100340003802250251002F0030001C011D0101530D
+:10035000000029002B0001000100010000003A000C
+:100360000A300B300100E30001003B000C300D307F
+:100370000100E20001003C0010300F300E3001009F
+:1003800001003D00113012301330010001003E0029
+:100390001430153016300000010035000100000057
+:1003A000310000001B01B200010000003502000016
+:1003B00001003F00173018301930000001004000E4
+:1003C0000100010001004B0001004100010001009B
+:1003D00001004E004F0042000100010001004900F1
+:1003E00050004300010001000100460001004400EC
+:1003F00045000100010001000000160345007200E5
+:1004000067006F0044006F007800200045005A002C
+:10041000000016034500720067006F0044006F0083
+:100420007800200045005A00000004030904090276
+:100430006D00040100A0FA0904000001030101009D
+:100440000921110100012240000705810308000A6B
+:100450000904010001030102000921110100012228
+:100460004D000705820308000A0904020001030089
+:10047000000009211101000122360007058303084D
+:10048000000A090403000103000000092111010012
+:100490000122390007058403100001120110010038
+:1004A000000008EDFE07130100010200010501092B
+:1004B00006A101050719E029E71500250195087532
+:1004C000018102050819012905950575019102951B
+:1004D000017503910105071900297715002501957C
+:1004E0007875018102C005010980A101850216010C
+:1004F0000026B7001A01002AB70075109501810087
+:10050000C0050C0901A1018503160100269C021AF1
+:1005100001002A9C02751095018100C005010902A5
+:10052000A1010901A10005091901290515002501ED
+:100530009505750181029501750381010501093059
+:1005400009311581257F95027508810609381581C5
+:10055000257F950175088106050C0A38021581254D
+:100560007F950175088106C0C005010906A1010536
+:100570000719E029E7150025019508750181029505
+:100580000175088101050819012905950575019175
+:10059000029501750391010507190029FF15002631
+:1005A000FF00950675088100C000000000000000F3
+:1005B00000000000010204060A0F17202C3A4A5DD1
+:1005C00071879DB3C7DAE9F5FCFFFCF5E9DAC7B33B
+:1005D0009D87715D4A3A2C20170F0A06040201001C
+:1005E0000000000000000000000011241FBECFEF3B
+:1005F000DAE0DEBFCDBF04B603FE24C08091FD016A
+:100600009091FE01A091FF01B09100028730904BC4
+:10061000A740B04BB9F41092FD011092FE01109268
+:10062000FF011092000214BE84B7877F84BF88E167
+:100630000FB6F89480936000109260000FBEE0E067
+:10064000FFE3099511E0A0E0B1E0E8E1F8E402C0C1
+:1006500005900D92A433B107D9F711E0A4E3B1E0FE
+:1006600001C01D92AD3FB107E1F70E94010C0C944F
+:100670000A240C9400001092B9008AE08093B8001C
+:10068000089594EA9093BC009091BC0097FFFCCF32
+:100690009091B900987F983021F0903111F081E06D
+:1006A00008958093BB0084E88093BC008091BC00D7
+:1006B00087FFFCCF8091B900887F883111F08034AA
+:1006C00071F780E0089584E98093BC008091BC00BC
+:1006D00084FDFCCF08958093BB0084E88093BC0028
+:1006E0008091BC0087FFFCCF9091B900987F81E09A
+:1006F000983209F480E0089584E88093BC008091EA
+:10070000BC0087FFFCCF8091BB00089580B38C7044
+:1007100080BB81B3836F81BB0895809101018111FA
+:1007200015C080E40E9441038093010181110CC037
+:1007300082E10E946B0380930101811105C08FEF5C
+:100740000E946B03809301010E94630384B1807F48
+:1007500084B985B1807F85B98AB1837F8AB98BB12D
+:10076000837F8BB93E98469808950E9457058093E1
+:1007700001010E948D030E948603A5E3B1E0E3E43A
+:10078000F1E08EE08E0F11921D928E13FCCF0C942F
+:1007900041050E945705809301010E948D030E942C
+:1007A0008603A5E3B1E0E3E4F1E08EE08E0F119261
+:1007B0001D928E13FCCF0895BF92CF92DF92EF92DD
+:1007C000FF920F931F93CF93DF93809101018823B2
+:1007D00079F0809134018F5F80933401811108C0DA
+:1007E0000E94570580930101811102C00E94E90413
+:1007F00005E311E0C0E0D0E0DD24D39482E0C82E10
+:10080000EE24E394F12CC730D10500F5809101016D
+:10081000811164C080E40E94410380930101811131
+:1008200012C082E10E946B038093010181110BC011
+:10083000C7010C2E01C0880F0A94EAF780950E9428
+:100840006B03809301010E94630348C0CA30A1F08A
+:1008500028F4C83059F0C93061F005C0CC3089F0B7
+:1008600070F0CD3089F0209A289810C0219A2998EC
+:100870000DC0229A2A980AC0239A2B9807C0529A30
+:1008800001C0539A5B9802C03E9A469890EA9A95A6
+:10089000F1F79FB1799902C082E001C080E09170C8
+:1008A0009D25982B7C9902C084E001C080E0892BB3
+:1008B0007D9902C038E001C030E0832B7E9902C0F0
+:1008C00020E101C020E0822B9FB19095991F9927CC
+:1008D000991F9295990F907E892B0FC080910101ED
+:1008E000811149C080E40E94410380930101882363
+:1008F00079F1B12C0E9463038B2DF8019081981738
+:1009000019F08083C09200010E948D0321960F5F31
+:100910001F4FCE30D10509F076CF8091000188239A
+:1009200061F1815080930001882339F08FE99FE0C5
+:100930000197F1F700C0000020C0A3E4B1E0E5E3B7
+:10094000F1E0CF01825F91919D938E13FCCF15C092
+:1009500083E10E946B03809301018111CACF81E47E
+:100960000E944103809301018111C3CF0E947C0347
+:10097000B82EB094BFCF80E0C0CF0E94E70481E0E2
+:10098000DF91CF911F910F91FF90EF90DF90CF906B
+:10099000BF900895E82FF0E0ED5BFE4F8081089551
+:1009A00008950F931F93CF93DF93C3E4D1E010E03A
+:1009B0000C2F025F899190E00E944E1C180F0C13BF
+:1009C000F9CF812FDF91CF911F910F9108950C9452
+:1009D0000D0656985E9825982D9826982E9827985B
+:1009E0002F988FEF90E090938900809388009093E8
+:1009F0008B0080938A0090938D0080938C00259AC1
+:100A00002D9A2FEF80E792E0215080409040E1F74F
+:100A100000C00000269A2E9A2FEF80E792E0215026
+:100A200080409040E1F700C00000279A2F9A2FEFF6
+:100A300080E792E0215080409040E1F700C0000044
+:100A400025982D982FEF80E792E02150804090402C
+:100A5000E1F700C0000026982E982FEF80E792E083
+:100A6000215080409040E1F700C0000027982F9867
+:100A700056985E9825982D9826982E9827982F9806
+:100A8000089589EA8093800089E08093810024980A
+:100A90002C983F988AB18F748AB96E98479A8BB117
+:100AA000806B8BB9769A0E94E9040C940C0680E264
+:100AB000809301018091510181110EC00E943B037E
+:100AC00081E0809351012FEF83ED90E3215080402E
+:100AD0009040E1F700C0000080E40E944103809351
+:100AE000010181112EC00E946B03809301018111CD
+:100AF00028C00E946B0380930101811122C08FE303
+:100B00000E946B038093010181111BC00E9463034B
+:100B100080E40E94410380930101811112C08CE0A6
+:100B20000E946B038093010181110BC00E946B0333
+:100B300080930101811105C08FE30E946B038093B4
+:100B400001010E946303809101010895462F50E046
+:100B5000FA013A97E031F10508F05BC0EA5AFF4F1D
+:100B6000DC0112968C910C94BA23882309F451C0AD
+:100B700089E892E00895882309F44BC088E692E062
+:100B80000895882309F445C08BE492E008958823F2
+:100B900009F43FC082E392E008958823D1F18DE10A
+:100BA00092E008958823A9F18CE092E008958823CB
+:100BB00081F18FEE91E00895882359F18AED91E05B
+:100BC0000895882331F189EC91E00895882309F193
+:100BD00080EB91E008958823E1F087E991E00895A2
+:100BE0008823B9F086E891E00895882391F08DE696
+:100BF00091E00895882369F08CE491E008958823BA
+:100C000041F08BE391E00895882319F08AE291E0A6
+:100C1000089580E090E0089508956091BE0170917C
+:100C2000BF018091C0019091C1010E945A1C569849
+:100C30005E9825982D9826982E9827982F98813081
+:100C400019F0823021F00895259A2D9A0895269A58
+:100C50002E9A089581E0089581E008950C942C0661
+:100C60000895282F882339F090E02A3010F44D960B
+:100C700008950697089587E290E00895AF92BF9295
+:100C8000DF92EF92FF920F931F93CF93DF938C012C
+:100C9000FC01C081D181CE010E94D31ABE010E9405
+:100CA000AE09EC01B8010E942E06882309F4C9C1DF
+:100CB000F8018281882309F4BEC080915E01811110
+:100CC0001FC0C431F0E7DF0709F0B5C10E9430064C
+:100CD00081E080935E010E94F11C90935D018093FE
+:100CE0005C0110925501109257011092560110921A
+:100CF00059011092580110925B0110925A01A1C142
+:100D000080915C0190915D010E94FD1C883C9105E1
+:100D100070F480915501E82FF0E0EE0FFF1FEA5AC2
+:100D2000FE4FD183C0838F5F809355018AC1C1304C
+:100D300020E8D20708F451C0F8018281882309F421
+:100D40007EC05E01E894B7F880915401813079F05B
+:100D500050F08230C1F482EE0E945D1287E50E945D
+:100D60005D1287E50EC082EE0E945D120CC080EE1F
+:100D70000E945D1281EE0E945D1288E10E945D1268
+:100D800088E10E9425138CE0E82EF12CC5010E2C81
+:100D900002C0969587950A94E2F78F700E943106FB
+:100DA000D82E0E945D128D2D0E942513F4E0EF1ABB
+:100DB000F1082CEFE2162FEFF20641F78091540173
+:100DC000813029F010F0823041F482EE04C080EED0
+:100DD0000E94251381EE0E942513C43180E7D807B5
+:100DE00068F4C23090E7D90708F046C0C115E0E7C3
+:100DF000DE0771F0C130D047A1F10CC1C33320E749
+:100E0000D20709F4D8C0C433D04709F4EBC002C1FB
+:100E1000F8018281882309F402C10E94DA15FFEFEC
+:100E200024E38CE0F15020408040E1F700C0000056
+:100E30000E944C1D06C1C13080E8D80770F2C43151
+:100E400020E7D20708F0B3C0C23080E7D807A0F48B
+:100E5000C11590E7D90709F4E2C0C130D04709F0C5
+:100E6000D9C0F8018281882309F4D9C08091DB01BF
+:100E700081608093DB01E5C0F8018281882309F459
+:100E8000CEC00E94A61D811102C00E948C1D0E942E
+:100E9000B91D90E09093EF018093EE01C230F0E72E
+:100EA000DF0721F48091EE0181607AC0C33020E732
+:100EB000D20721F48091EE01826072C0C43080E7D5
+:100EC000D80721F48091EE0184606AC0C53090E7B4
+:100ED000D90719F48091EE0127C0C630E0E7DE079C
+:100EE00021F48091EE0180615BC0C730F0E7DF073D
+:100EF00021F48091EE01806253C0C83020E7D20710
+:100F000021F48091EE0180644BC0C93080E7D8079E
+:100F100021F48091EE01806843C0CA3090E7D90780
+:100F200029F48091EE01846088603AC0CB30E0E71C
+:100F3000DE0721F48091EE018E7F32C0CC30F0E7E5
+:100F4000DF0721F48091EE018D7F2AC0CD3020E7AC
+:100F5000D20721F48091EE018B7F22C0CE3080E752
+:100F6000D80719F48091EE011AC08091EE01CF30BC
+:100F700090E7D90711F48F7E13C0C031E0E7DE0798
+:100F800011F48F7D0DC0C131F0E7DF0711F48F7BC5
+:100F900007C0C231D04711F48F7702C08B7F877FA3
+:100FA0008093EE018091EE010E94BD1D4AC0C333C3
+:100FB000F0E7DF07A1F4F8018281882321F0109285
+:100FC000520182E016C080915201811106C086E272
+:100FD0000E945D1286E20E94251382E018C0C4338D
+:100FE000D047C1F4F8018281882331F01092530177
+:100FF00080E20E94741325C080915301811106C0C4
+:1010000087E20E945D1287E20E94251380E20E941F
+:101010007B1317C081E08093520180935301C80174
+:10102000DF91CF911F910F91FF90EF90DF90BF90D4
+:10103000AF900C942A06C130F0E8DF0708F081CEAB
+:10104000CCCE80E0DF91CF911F910F91FF90EF9078
+:10105000DF90BF90AF90089526E0729FF0011124B9
+:1010600044E5849FE00DF11D1124E60FF11DEE0F04
+:10107000FF1FE655FD4F859194910E94C00981158F
+:1010800060E49607B0F5811570E3970708F0DEC0BD
+:10109000803E9105D8F4803C910508F06CC0883AF8
+:1010A000910578F4853A910508F06BC0813091057F
+:1010B00009F452C108F40FC18430910508F04CC105
+:1010C0000AC18B3B910508F467C005C18F3F9105AC
+:1010D00009F048F4803F910508F0ADC0883E9105C5
+:1010E00008F43AC1F8C0811520E2920708F0A5C0C3
+:1010F0000895811543E5940790F4811562E59607FC
+:1011000008F0C8C0811571E5970708F0BEC08115C9
+:1011100020E5920708F09DC09F70906A08958115A0
+:1011200045E59407D8F4811564E5960708F0C8C032
+:10113000482F4695469570E2479FA0011124837081
+:10114000992721E030E0B90102C0660F771F8A9528
+:10115000E2F7CB01842B952B9A680895811576E5EB
+:10116000970708F4B2C09C0130562115304108F0B1
+:10117000B2C09F70AEC0FC01EE0FFF1FEA5DFE4FD4
+:1011800062C0853A910509F4A9C0863A910509F033
+:10119000A8C082E890E40895883A910509F4A4C0B3
+:1011A000893A910509F4A3C08A3A910509F4A2C0CD
+:1011B0008B3A910509F4A1C08C3A910509F4A0C0BD
+:1011C0008D3A910509F49FC0803B910509F49EC0BA
+:1011D0008E3A910509F49DC08F3A910509F49CC09F
+:1011E000813B910509F49BC0823B910509F49AC0AB
+:1011F000833B910509F499C0843B910509F498C09B
+:10120000853B910509F497C0863B910509F496C08A
+:10121000873B910509F495C0883B910509F494C07A
+:10122000893B910509F493C08A3B910509F492C06A
+:1012300080E094E4089590650895FC01FF70EE0F3E
+:10124000FF1FEA55FD4F8591949108959927906C61
+:101250000895482F437021E030E002C0220F331F71
+:101260004A95E2F73C68AC0164E0569547956A956B
+:10127000E1F74370342B8F708695869560E2869FE8
+:10128000C0011124822B932B0895982F8827816FFA
+:10129000906A0895482F4695469570E2479FA001B1
+:1012A00011248370992721E030E0B90102C0660F54
+:1012B000771F8A95E2F7CB01842B952B9C680895C4
+:1012C000982F8827846F906A08958F719927982F97
+:1012D00088279062089580E090E0089581E890E486
+:1012E000089583E890E4089582EE94E4089589EEE9
+:1012F00094E408958AEE94E4089585EB94E40895C7
+:1013000086EB94E4089587EB94E408958CEC94E4E0
+:1013100008958DEC94E4089583E895E408958AE8AF
+:1013200095E4089582E995E4089584E995E40895A3
+:1013300081E296E4089583E296E4089584E296E4D7
+:10134000089585E296E4089586E296E4089587E29A
+:1013500096E408958AE296E40895089596E0799FC8
+:10136000F001112494E5899FE00DF11D1124E60F91
+:10137000F11DEE0FFF1FE655FD4F859194910895E5
+:101380008238910549F1B0F48133910509F458C0D0
+:1013900048F48932910509F44EC08A32910509F466
+:1013A00054C008958533910509F440C089339105EF
+:1013B00099F00895833E910529F138F4803E910516
+:1013C00091F0823E9105A1F00895863E9105F9F0D5
+:1013D000873E910531F108952091EE0120FD3AC03C
+:1013E00021FD38C008958091EE0180FD35C032C0E6
+:1013F0008091EE0182FF32C08091EE0184FD30C009
+:1014000083EE39C08091EE0182FD28C0F5CF809136
+:10141000EE0183FF27C08091EE0184FD21C087EE9D
+:101420002AC08091EE0183FD1DC0F5CF8091EE01B1
+:1014300085FD1AC01BC08091EE0185FD17C014C048
+:101440008091EE0186FD14C015C08091EE0186FDED
+:1014500011C00EC080EE0FC089E30DC082EE0BC03C
+:1014600080E009C086EE07C089E205C085E303C0BD
+:101470008AE201C081E390E0089508950C943D0A4A
+:1014800080916F010895CF93DF9300D01F92CDB765
+:10149000DEB79C018091F401843019F593E09983C3
+:1014A0003B832A839093E9008FEF9091E80081506D
+:1014B00095FD06C095ED9A95F1F700008111F5CFE5
+:1014C0008091E80085FF0DC040E050E063E070E0EF
+:1014D000CE0101960E94A90C8091E8008E7780933E
+:1014E000E8000F900F900F90DF91CF910895CF9368
+:1014F000DF9300D01F92CDB7DEB72091F4012430E6
+:1015000021F522E029839B838A8383E08093E9008D
+:101510008FEF9091E800815095FD06C095ED9A956A
+:10152000F1F700008111F5CF8091E80085FF0DC033
+:1015300040E050E063E070E0CE0101960E94A90C0B
+:101540008091E8008E778093E8000F900F900F90C5
+:10155000DF91CF9108952091F4012430F1F422E03D
+:101560002093E9002FEF3091E800215035FD06C0AF
+:1015700035ED3A95F1F700002111F5CF2091E80003
+:1015800025FF0BC040E050E065E070E00E94A90C30
+:101590008091E8008E778093E8000895CF93DF93E1
+:1015A000EC019091F401943009F046C080910C0157
+:1015B0008823D9F080910D018823B9F09093E90038
+:1015C0008FEF9091E800815095FD06C095E19A95C6
+:1015D000F1F700008111F5CF8091E80085FF2CC064
+:1015E00040E050E060E170E017C081E08093E900E6
+:1015F0008FEF9091E800815095FD06C095ED9A958A
+:10160000F1F700008111F5CF8091E80085FF14C04B
+:1016100040E050E068E070E0CE010E94A90C8091AB
+:10162000E8008E778093E80080E1FE01AFE5B1E04D
+:1016300001900D928A95E1F7DF91CF910895809105
+:10164000F301811109C00E943E0E0E949B0E809101
+:10165000E20084608093E20008951092F3010895FF
+:1016600008950C9432220E94E21C0E9438220E94AB
+:1016700041110C943E0A42E061EC81E00E94B80DF9
+:1016800042E061EC82E00E94B80D42E061EC83E050
+:101690000E94B80D42E161EC84E00C94B80D809199
+:1016A000F601833009F455C030F4813071F0823096
+:1016B00009F48EC008958A3009F47AC08B3009F499
+:1016C00060C0893009F09CC020C08091F501813A4A
+:1016D00009F096C08091E800877F8093E8008091B0
+:1016E000F9019091FA01892B21F460E18FE591E0F5
+:1016F00003C060E080E090E070E00E94F40C809114
+:10170000E8008B778093E80008958091F50181329D
+:1017100009F076C08091F9019091FA01009719F0D3
+:10172000039709F06DC08091E800877F8093E800FF
+:101730008091E80082FD05C08091F4018111F8CF0D
+:101740005FC08091F10080936F018091E8008B77FA
+:1017500053C08091F501813A09F052C08091F9019E
+:101760009091FA01892B09F04BC08091E800877FA6
+:101770008093E8008091E80080FFFCCF80910C010D
+:1017800036C08091F5018132D9F58091F9019091AF
+:10179000FA01892BA9F58091E800877F8093E80002
+:1017A0000E94ED0D8091F70180930C010C94DA15E5
+:1017B0008091F501813221F58091E800877F809347
+:1017C000E8000E94ED0D8091F8018093700108956A
+:1017D0008091F501813AA1F48091E800877F8093A0
+:1017E000E8008091E80080FFFCCF80917001809339
+:1017F000F1008091E8008E778093E8000C94ED0D65
+:10180000089584B7877F84BF88E10FB6F8948093EA
+:101810006000109260000FBE80E88093610010921B
+:1018200061000E9490110E943E0E0E949B0E8091CA
+:10183000E20084608093E20078940E9421110E946B
+:10184000921182E091E00E943C110E94202280913E
+:10185000F401853069F40E94AA1C8091F20188236A
+:10186000B1F30E94D41C882391F30E94930CEFCF14
+:101870000E949811ECCF292F332723303105C9F06E
+:1018800064F42130310581F02230310509F043C084
+:101890008DE690E02EE234E042C021323105F1F0D5
+:1018A0002232310541F137C082E190E02BE934E08A
+:1018B00036C099278130910541F08230910541F081
+:1018C000892B49F5EAE2F4E005C0E2E1F4E002C068
+:1018D000EAEFF3E0849190E09F0121C06430D8F4F6
+:1018E000E62FF0E0EE0FFF1FEE5DFE4F208131810D
+:1018F00089E090E014C0643070F470E0FB01EE0FFA
+:10190000FF1FE65EFE4F20813181FB01EA5EFE4F44
+:10191000808190E004C080E090E020E030E0FA01B7
+:1019200031832083089580E189BD82E189BD09B4B6
+:1019300000FEFDCF8091D8008F7D8093D8008091EC
+:10194000E00082608093E0008091E00081FDFCCFA8
+:101950000895CF92DF92EF92FF920F931F93CF9350
+:10196000DF93EC018B016A010E940C0E811133C0E0
+:10197000C114D10439F0F60180819181081B190B43
+:10198000C80FD91FE12CF12C0115110519F1809117
+:10199000E80085FD16C08091E8008E778093E8000E
+:1019A000C114D10449F0F60180819181E80EF91E3D
+:1019B000F182E08285E00FC00E940C0E882321F3A3
+:1019C0000AC089918093F10001501109FFEFEF1ACD
+:1019D000FF0ADACF80E0DF91CF911F910F91FF9046
+:1019E000EF90DF90CF9008952091FB013091FC01A2
+:1019F0002617370748F06115710539F42091E80082
+:101A00002E772093E80001C0B90140E0611571050F
+:101A1000A9F12091F401222309F443C0253009F4EF
+:101A200042C02091E80023FD40C02091E80022FD43
+:101A300032C02091E80020FFE9CF4091F3002091CF
+:101A4000F20030E0342BFC01CF016115710559F033
+:101A50002830310540F481918093F1006150710983
+:101A60002F5F3F4FF1CF41E02830310509F040E0D2
+:101A70002091E8002E772093E800C8CF4111C9CF0C
+:101A80000AC08091F401882361F0853061F0809173
+:101A9000E80083FD0AC08091E80082FFF2CF80E079
+:101AA000089582E0089583E0089581E008952091EB
+:101AB000FB013091FC012617370748F061157105CD
+:101AC00039F42091E8002E772093E80001C0B90195
+:101AD000FC0120E06115710591F18091F4018823EA
+:101AE00009F440C0853009F43FC08091E80083FDCF
+:101AF0003DC08091E80082FD2FC08091E80080FF0A
+:101B0000E9CF2091F3008091F20090E0922B6115D3
+:101B1000710559F08830910540F424912093F1002B
+:101B20003196615071090196F2CF21E0089709F0D2
+:101B300020E08091E8008E778093E800CBCF2111E0
+:101B4000CCCF0AC08091F401882361F0853061F028
+:101B50008091E80083FD0AC08091E80082FFF2CF07
+:101B600080E0089582E0089583E0089581E008957B
+:101B7000982F973058F59093E900981739F07091A5
+:101B8000EC002091ED005091F00003C0242F762F3F
+:101B900050E021FF19C03091EB003E7F3093EB0005
+:101BA0003091ED003D7F3093ED003091EB003160DE
+:101BB0003093EB007093EC002093ED005093F00015
+:101BC0002091EE0027FF07C09F5FD3CF8F708093D7
+:101BD000E90081E0089580E008958091F50187FF94
+:101BE00011C08091E80082FD05C08091F40181114F
+:101BF000F8CF11C08091E8008B770BC08091F40181
+:101C0000882349F08091E80080FFF8CF8091E800B8
+:101C10008E778093E80008952091E4003091E500EC
+:101C200095E64091EC00842F817040FF22C08091A6
+:101C3000E80080FD1CC08091F401882391F085307C
+:101C400091F08091EB0085FD10C04091E40050912F
+:101C5000E5004217530729F39A01915011F784E0E8
+:101C6000089582E0089583E0089581E0089580E07A
+:101C700008954091E80042FFDECF08950E94AC0E27
+:101C80000E94B40EE0EEF0E0808181608083E8ED98
+:101C9000F0E080818F77808319BCA7EDB0E08C9154
+:101CA0008E7F8C9380818F7E80831092F3010895C4
+:101CB0000F931F93CF93DF930E94AC0E0E94B40E3C
+:101CC000C8EDD0E088818F77888388818068888399
+:101CD00088818F7D888319BC1092F4011092F001E5
+:101CE0001092F2011092F10100EE10E0F8018081F3
+:101CF0008B7F808388818160888342E060E080E020
+:101D00000E94B80DE1EEF0E080818E7F8083E2EEEC
+:101D1000F0E0808181608083808188608083F80129
+:101D200080818E7F8083888180618883DF91CF91DD
+:101D30001F910F910895E8EDF0E080818F7E808300
+:101D4000E7EDF0E080818160808384E082BF81E004
+:101D50008093F3010C94580EE8EDF0E080818E7FC3
+:101D600080831092E20008951092DA001092E10050
+:101D700008951F920F920FB60F9211242F933F9345
+:101D80004F935F936F937F938F939F93AF93BF9383
+:101D9000EF93FF938091E10082FF0BC08091E200FE
+:101DA00082FF07C08091E1008B7F8093E1000E9459
+:101DB00020118091DA0080FF1FC08091D80080FF41
+:101DC0001BC08091DA008E7F8093DA008091D90069
+:101DD00080FF0DC080E189BD82E189BD09B400FEAC
+:101DE000FDCF81E08093F4010E941F0B05C019BC58
+:101DF0001092F4010E942D0B8091E10080FF19C028
+:101E00008091E20080FF15C08091E2008E7F809378
+:101E1000E2008091E20080618093E2008091D8002E
+:101E200080628093D80019BC85E08093F4010E9401
+:101E3000310B8091E10084FF30C08091E20084FF8B
+:101E40002CC080E189BD82E189BD09B400FEFDCFCF
+:101E50008091D8008F7D8093D8008091E1008F7EA3
+:101E60008093E1008091E2008F7E8093E200809178
+:101E7000E20081608093E2008091F001882311F0FC
+:101E800084E007C08091E30087FD02C081E001C0CB
+:101E900083E08093F4010E94330B8091E10083FF83
+:101EA00029C08091E20083FF25C08091E100877FF7
+:101EB0008093E10082E08093F4011092F001809120
+:101EC000E1008E7F8093E1008091E2008E7F80931D
+:101ED000E2008091E20080618093E20042E060E0F5
+:101EE00080E00E94B80D8091F00088608093F0003F
+:101EF0000E94300BFF91EF91BF91AF919F918F9115
+:101F00007F916F915F914F913F912F910F900FBEF5
+:101F10000F901F9018951F920F920FB60F921124D9
+:101F20002F933F934F935F936F937F938F939F93E1
+:101F3000AF93BF93CF93DF93EF93FF93C091E900EB
+:101F4000CF708091EC00D82FD17080FDD0E8109236
+:101F5000E9008091F000877F8093F00078940E94E0
+:101F6000CF0F1092E9008091F00088608093F0001C
+:101F7000CD2BCF70C093E900FF91EF91DF91CF910E
+:101F8000BF91AF919F918F917F916F915F914F9191
+:101F90003F912F910F900FBE0F901F9018951F9398
+:101FA000CF93DF93CDB7DEB7AA970FB6F894DEBF15
+:101FB0000FBECDBFE5EFF1E088E08E0F9091F1000C
+:101FC00091938E13FBCF0E944F0B8091E80083FF0B
+:101FD0001FC18091F5019091F601492F50E04A30E0
+:101FE000510508F015C1FA01EA59FF4F0C94BA23C4
+:101FF000803881F0823809F00BC18091F9018F702F
+:102000008093E9008091EB0085FB882780F910928E
+:10201000E90006C08091F1019091F2019111826076
+:102020009091E800977F9093E8008093F1001092E0
+:10203000F100C8C0282F2D7F09F0EAC0882319F0CD
+:10204000823061F0E5C08091F701813009F0E0C095
+:10205000933009F080E08093F2012BC08091F7016A
+:10206000811127C08091F9018F7009F4D1C080934C
+:10207000E9002091EB0020FF1CC0933021F48091F7
+:10208000EB00806214C09091EB0090619093EB00A4
+:1020900021E030E0A90102C0440F551F8A95E2F704
+:1020A0004093EA001092EA008091EB0088608093F0
+:1020B000EB001092E9008091E800877F86C08111D3
+:1020C000A7C01091F7011F778091E3008078812BE2
+:1020D0008093E3008091E800877F8093E8000E946E
+:1020E000ED0D8091E80080FFFCCF8091E3008068D7
+:1020F0008093E300111102C082E001C083E080936D
+:10210000F40186C08058823008F082C08091F701C7
+:102110009091F8018C3D53E0950779F583E08A832F
+:102120008AE289834FB7F894DE01139620E03EE0FF
+:1021300051E2E32FF0E050935700E49120FF03C0F9
+:10214000E295EF703F5FEF708E2F90E0EA3010F075
+:10215000C79601C0C0968D939D932F5F243149F798
+:102160004FBF8091E800877F8093E8006AE270E0CB
+:10217000CE0101960E94F40C14C0AE014F5F5F4F78
+:102180006091F9010E943B0CBC01009709F440C02A
+:102190009091E800977F9093E80089819A810E944E
+:1021A000570D8091E8008B778093E80031C080382C
+:1021B00079F58091E800877F8093E8008091F001B5
+:1021C0008093F1008091E8008E778093E8000E9470
+:1021D000ED0D1EC081111CC09091F7019230C0F42A
+:1021E0008091E800877F8093E8009093F0010E943F
+:1021F000ED0D8091F001811106C08091E30087FD13
+:1022000002C081E001C084E08093F4010E943B0B96
+:102210008091E80083FF0AC08091E800877F809367
+:10222000E8008091EB0080628093EB00AA960FB6E5
+:10223000F894DEBF0FBECDBFDF91CF911F910895FF
+:102240000895CF938091F4018823A1F0C091E90013
+:10225000CF709091EC00892F817090FD80E8C82BA1
+:102260001092E9008091E80083FD0E94CF0FCF70AB
+:10227000C093E900CF910895909376018093750102
+:102280000895E0917501F0917601309721F0019069
+:10229000F081E02D099480E00895E0917501F091BE
+:1022A0007601309721F00280F381E02D09940895A2
+:1022B000E0917501F0917601309721F00480F5816D
+:1022C000E02D0994089520917301309174018217D3
+:1022D000930771F09093740180937301E0917501FD
+:1022E000F0917601309721F00680F781E02D099476
+:1022F000089520917101309172018217930771F056
+:102300009093720180937101E0917501F0917601D3
+:10231000309721F00084F185E02D09940895089507
+:102320000C948F110E94E81C0E94B5030C946E1D42
+:102330009F92AF92BF92CF92DF92EF92FF920F9354
+:102340001F93CF93DF9300D000D000D0CDB7DEB77E
+:102350000E94DC030DE010E0AA24A394B12C902E7F
+:10236000802F0E94CA04980128583E4F6901F90144
+:10237000F080F826A1F40150110988F78FEF8983C6
+:102380008A831B820E94F11C8160782F9D838C833D
+:1023900049815A816B818D810E942F122FC09091AB
+:1023A000DB0191FF04C08E830E94D0048E8125E062
+:1023B00030E0A501022E01C0440F0A94EAF7E42E92
+:1023C0004F21C1F029839A828E2191E009F490E097
+:1023D0009B830E94F11C8160782F9D838C834981AF
+:1023E0005A816B818D810E942F12F6018081E8262F
+:1023F000E08204C021503109E0F6BDCF0E943C1FAD
+:10240000109177010E9441111817B9F00E944111F3
+:102410008093770126960FB6F894DEBF0FBECDBF2E
+:10242000DF91CF911F910F91FF90EF90DF90CF90B0
+:10243000BF90AF909F900C943E0A26960FB6F894EA
+:10244000DEBF0FBECDBFDF91CF911F910F91FF90E7
+:10245000EF90DF90CF90BF90AF909F900895CF9373
+:10246000DF93CDB7DEB72B970FB6F894DEBF0FBE64
+:10247000CDBF4F83588769877A878B87DE01119696
+:1024800086E0FD0111928A95E9F785E0FE01379615
+:1024900001900D928A95E1F749815A816B817C8187
+:1024A0008D819E810E9478182B960FB6F894DEBF1E
+:1024B0000FBECDBFDF91CF910895CF93882309F44C
+:1024C000C2C0C82F823859F40E94411181FDBBC09F
+:1024D00089E30E94521B0E941F1C89E30CC08338B1
+:1024E00079F40E94411180FDAEC083E50E94521B29
+:1024F0000E941F1C83E50E94941BCF910C941F1C0B
+:10250000843859F40E94411182FD9DC087E40E94E5
+:10251000521B0E941F1C87E4EECF8CEF8C0F813A78
+:1025200048F48C2F0E94862181118DC08C2F0E942F
+:10253000521BE3CF80E28C0F883048F4C77081E0F3
+:1025400001C0880FCA95EAF70E94D81BD6CF8BE549
+:102550008C0F833078F4C53A29F0C63A31F083E81D
+:1025600090E005C081E890E002C082E890E0CF9161
+:102570000C94631188E58C0F833108F064C0C83A6D
+:1025800039F1C93A41F1CA3A49F1CB3A51F1CC3A61
+:1025900059F1CD3A61F1C03B69F1CE3A71F1CF3AD0
+:1025A00079F1C13B81F1C23B89F1C33B91F1C43B5D
+:1025B00099F1C53BA1F1C63BA9F1C73BB1F1C83BBD
+:1025C000B9F1C93BC1F1CA3BC9F180E090E038C024
+:1025D00082EE90E035C089EE90E032C08AEE90E065
+:1025E0002FC085EB90E02CC086EB90E029C087EBF4
+:1025F00090E026C08CEC90E023C08DEC90E020C0F1
+:1026000083E891E01DC08AE891E01AC082E991E078
+:1026100017C084E991E014C081E292E011C083E226
+:1026200092E00EC084E292E00BC085E292E008C026
+:1026300086E292E005C087E292E002C08AE292E080
+:10264000CF910C947911CF910895882309F44BC050
+:10265000823859F40E94411181FF45C089E30E94EC
+:10266000521B0E941F1C89E30CC0833871F40E9426
+:10267000411180FF38C083E50E94521B0E941F1C3D
+:1026800083E50E94941B0C941F1C843859F40E940B
+:10269000411182FF28C087E40E94521B0E941F1C28
+:1026A00087E4EFCF9CEF980F913A58F390E2980FA0
+:1026B000983050F4877091E001C0990F8A95EAF73D
+:1026C000892F0E94DE1BDFCF9BE5980F933020F40B
+:1026D00080E090E00C946311885A833120F480E00C
+:1026E00090E00C9479110895882321F00E94D81B62
+:1026F0000C941F1C0895882321F00E94DE1B0C946B
+:102700001F1C08957F928F929F92AF92BF92CF929B
+:10271000DF92EF92FF920F931F93CF93DF931F925D
+:10272000CDB7DEB77C01C62E772EFC010581029560
+:102730000F70128111110E94F51B0E944B1B882300
+:1027400079F0112369F080E28C0D883048F082E046
+:102750000E94341B0E944B1B91E0D82ED92601C049
+:10276000D12CE72DE295EF70F0E0E059FF4F0C948B
+:10277000BA23872D807F072D0F70882311F00295D3
+:10278000007F112389F0002309F490C180E28C0DB1
+:10279000883020F4802F0E94D81B03C0802F0E9415
+:1027A000E81B0E941F1C82C18C2D0E942513002350
+:1027B00009F495C180E28C0D883020F4802F0E94AE
+:1027C000DE1B03C0802F0E94EE1B0E941F1C87C1CE
+:1027D000972D907F872D8F70903211F08295807F9A
+:1027E000CC2021F0F1E0CF16B1F01EC0112349F04A
+:1027F000002309F414C1013009F011C10E94081C22
+:102800006EC1002319F0013009F469C189830E9467
+:102810000B1C89810AC1112321F0023008F05FC12D
+:10282000FEC001115CC101C1112321F0002309F494
+:10283000F6C03CC1002309F4F8C03EC1872D86953F
+:102840008695837090E0009719F0019761F047C179
+:10285000112321F08C2D972D937002C080E090E021
+:102860000E9463113CC1112321F08C2D972D937090
+:1028700002C080E090E00E94791131C18C2D1123BB
+:1028800019F00E94441E02C00E94AC1E0E94311F1B
+:1028900026C1872D837009F052C0111120C18C2DE3
+:1028A000829586958770880F880F9C2D9F70892E42
+:1028B000912CA12CB12C082E04C0880C991CAA1CA8
+:1028C000BB1C0A94D2F7C4FE14C00FE010E020E055
+:1028D00030E0B901A80104C0440F551F661F771FDF
+:1028E0008A95D2F7CB01BA01609570958095909545
+:1028F00003C060E070E0CB01272D2695269523705C
+:1029000030E02230310569F02330310589F0682943
+:1029100079298A299B292130310571F00E94C0193B
+:10292000DEC0682979298A299B290E94DC19D7C031
+:102930000E94C019C501B4010E94A419D0C011237E
+:1029400019F0872D817001C08695882309F4C7C0CE
+:102950008C2D829586958770880F880F9C2D9F708F
+:10296000892E912CA12CB12C082E04C0880C991C06
+:10297000AA1CBB1C0A94D2F7C4FE14C00FE010E0DE
+:1029800020E030E0B901A80104C0440F551F661FC4
+:10299000771F8A95D2F7CB01BA0160957095809523
+:1029A000909503C060E070E0CB01272D2695269519
+:1029B0002370422F50E04230510569F043305105F9
+:1029C00089F0682979298A299B294130510571F0BC
+:1029D0000E949A1A84C0682979298A299B290E9411
+:1029E000B61A7DC00E949A1AC501B4010E947E1ACF
+:1029F00076C08C2D90E0FC01E05EF109E531F10537
+:102A000008F050C0E058FF4F0C94BA230C2D0F7003
+:102A1000872D8F71112331F00E94171A802F0E9489
+:102A200074135DC00E94381A802F0E947B1357C018
+:102A3000112339F0011153C0872D8F710E945D1A47
+:102A40004EC0023008F04BC0F7CF112339F0872D6C
+:102A50008F710E94171A43C01123C9F3872D8F71FC
+:102A60000E94381A3CC0112329F0872D8F710E94D3
+:102A7000021A35C00E94F81932C0112351F0172DE7
+:102A80001F71812F0E94171A63E0812F0E942B1B58
+:102A900026C081E00E94341B023008F182E00E94CF
+:102AA000341B1DC0112331F0002389F28C2D0E94AC
+:102AB0005D1215C0002391F28C2D0E9425130FC0CA
+:102AC000472D4F706C2DC7010E94A6050E941C194E
+:102AD00006C0472D4F706C2DC7010E94AD09DD2047
+:102AE000F9F00E94271B80FD1BC0F70112820E9493
+:102AF000211B0E94171AC7010E949F150E94211BCB
+:102B00000F90DF91CF911F910F91FF90EF90DF9089
+:102B1000CF90BF90AF909F908F907F900C94381A79
+:102B20000F90DF91CF911F910F91FF90EF90DF9069
+:102B3000CF90BF90AF909F908F907F9008950F930C
+:102B40001F93CF93DF93EC01888199812B813C8186
+:102B5000232BB9F09F3F11F48F3F99F0CE010E94D3
+:102B60003E06882371F0688179818A810E941D1B4D
+:102B70008C010E94D21A0E949919B801CE010E94BC
+:102B80008213DF91CF911F910F9108950E94F51B41
+:102B90000E94051C0E94CA1B0E941F1C0E94E21F6B
+:102BA0000E94311F80E090E00E94631180E090E07D
+:102BB0000C9479110E94E51B0C94C6150E94121BFF
+:102BC000292F22952F7030E02C3031054CF42A301B
+:102BD00031056CF42250310922303105A8F407C0C8
+:102BE0002C30310569F02F30310551F00DC0803F98
+:102BF00069F018F4803E40F409C0843F29F406C00F
+:102C000093FB882780F9089580E0089581E0089576
+:102C1000CF93DF9300D000D01F92CDB7DEB70F90D7
+:102C20000F900F900F900F90DF91CF910895CF9359
+:102C3000DF9300D000D000D0CDB7DEB726960FB618
+:102C4000F894DEBF0FBECDBFDF91CF9108951F93E3
+:102C5000CF93DF93C091860116E080918701C8175A
+:102C600099F0D0E01C9FF0011D9FF00D1124E85752
+:102C7000FE4F4081518162817381848195810E94E0
+:102C800017162196C770E9CFDF91CF911F91089554
+:102C90004091B8015091B9016091BA017091BB01A6
+:102CA0008091BC019091BD010C9417168091BD01DB
+:102CB00082958F7009F054C08091BA01882309F47D
+:102CC0004FC080918601A09187016091B8017091F9
+:102CD000B9014091BB015091BC01B6E08A1709F4DB
+:102CE0003FC090E041155105C1F17F3F11F46F3FA6
+:102CF000A1F1B89FF001B99FF00D1124E857FE4FE4
+:102D0000218172132AC02081621327C022812111E0
+:102D100024C0238134812417350710F42150310950
+:102D2000241B350B283C3105C0F42091BD012F70C8
+:102D300020612093BD0126E0289FF001299FF00D1E
+:102D40001124E357FE4F80818F708061808388EB70
+:102D500091E00E949F150C94271601968770BECFB4
+:102D60000895CF92DF92EF92FF920F931F93CF932C
+:102D7000DF93CDB7DEB762970FB6F894DEBF0FBE14
+:102D8000CDBF8C0185E0F801DE011D9601900D920A
+:102D90008A95E1F7D8014C9111965C9111971296A2
+:102DA0006C9112971396CD90DC9014973091B801E6
+:102DB0007091B9018091BB019091BC01009709F419
+:102DC0006BC17F3F19F43F3F09F466C1E090BA013F
+:102DD000EE2009F4C0C02091BD01C816D90628F024
+:102DE000F601E81BF90BCF0104C0809590958C0D7E
+:102DF0009D1DFF24F394883C910578F0F12C207FF1
+:102E000009F0C6C07C2DD98AC88A89890E94081613
+:102E100088EB91E00E949F15B1C0822F807F09F05E
+:102E200046C0751314C0341312C0611110C02F7046
+:102E300020612093BD010E94481688EB91E00E941A
+:102E40009F158091BD01D80115968C932EC0CD2879
+:102E500019F15F3F11F44F3FF9F0F62E61111CC0DC
+:102E6000809186012091870136E0821709F45AC0CB
+:102E700090E0389FF001399FF00D1124E857FE4F84
+:102E80007181571306C07081471303C0728171119D
+:102E900003C001968770E9CFF62E662309F418C1A6
+:102EA0008091BD0181608093BD01F12C11C175132A
+:102EB00008C0341306C0611104C08091BD01D8015F
+:102EC000C3C04D875E878D859E856A8B0E94DE1507
+:102ED0006A898823E1F16623D1F12091BD01822F17
+:102EE00082958F7090E0029774F08091B801909174
+:102EF000B90198878F831986DB86CA862C87CE0115
+:102F000007960E949F1586E0F801A8EBB1E00190BA
+:102F10000D928A95E1F70E9456160E944816FF24EA
+:102F2000F394D6C04D875E878D859E850E94121BC7
+:102F3000292F22952F7030E0223031050CF0BCC0D3
+:102F40009F7009F0B6C0805E883008F4C1C0C80127
+:102F50000E949F15E4CFC816D90608F453C0F601A5
+:102F6000E81BF90BCF01883C910508F450C0F12C07
+:102F70007C2DD98AC88A89890E940816E8EBF1E07D
+:102F800086E0DF011D928A95E9F70E944816A0C0ED
+:102F9000751314C0341312C0611110C08091BD01AB
+:102FA000F8018583C8010E949F1586E0E8EBF1E0F7
+:102FB000DF011D928A95E9F7FE2C8AC04D875E8756
+:102FC0008D859E856A8B0E94DE156A89882309F4A7
+:102FD000BECF662309F4BBCF2091BD01822F82951D
+:102FE0008F7090E002970CF48ECF8091B801909191
+:102FF000B9019A8389831B82DD82CC822E83CE0124
+:1030000001967FCF809590958C0D9D1DACCFF62EAF
+:10301000662309F49CCF75132EC034132CC0209165
+:10302000BD0120FD1FC0822F82958F70D9F0D8017D
+:1030300015962C9315978F3049F08F5F982F9295A6
+:10304000907F822F8F70892B15968C93C8010E94D8
+:103050009F1586E0F801A8EBB1E001900D928A95EA
+:10306000E1F793CF86E0F801A8EBB1E001900D9273
+:103070008A95E1F72DC04D875E878D859E850E94DC
+:10308000DE15811140CF8091BD0181608093BD012B
+:10309000C8010E949F151CC0662309F458CF4D87B4
+:1030A0005E878D859E850E94DE15882309F44FCFAB
+:1030B0002ACF811148CF0CC0243031050CF047CF06
+:1030C0009F7009F440CFF8019581907F09F03BCFC4
+:1030D0008F2D62960FB6F894DEBF0FBECDBFDF9185
+:1030E000CF911F910F91FF90EF90DF90CF900895B7
+:1030F0001F93CF93DF93CDB7DEB72C970FB6F8941D
+:10310000DEBF0FBECDBF4F83588769877A878B8715
+:103110009C87CE0107960E94B116882369F08F81A3
+:1031200098852A853B85232BF1F19F3F09F063C0E9
+:103130008F3F09F060C037C086E0FE013796DE01A0
+:10314000119601900D928A95E1F76F817885EA8555
+:10315000FB85309741F17F3F11F46F3F21F12091C2
+:10316000870130E0C9010196877099274091860157
+:1031700050E08417950709F447C069837A83FD837B
+:10318000EC8396E0929FD001939FB00D1124A85735
+:10319000BE4FFE01319601900D929A95E1F7809312
+:1031A00087010E94271616E0809186019091870181
+:1031B0008917C1F1189FC001112488579E4F0E94A2
+:1031C000B116882379F1E09186011E9FF001112448
+:1031D000E857FE4F408151816281738184819581DE
+:1031E0000E9417168091860190E0019687709927BA
+:1031F00080938601D9CF4F81588569857A858B85E3
+:103200009C850E941716CFCF0E94DA151092870175
+:1032100010928601E8EBF1E086E0DF011D928A95CD
+:10322000E9F7C1CF2C960FB6F894DEBF0FBECDBF25
+:10323000DF91CF911F910895EF92FF920F931F930B
+:10324000CF93DF938C01009709F46CC0F12CEE242E
+:10325000E394E8012196F8018491843740F48430A6
+:1032600008F051C0813081F0823019F15BC08537A0
+:1032700009F444C0A8F19CE7980F903708F052C0B9
+:103280008F770E94251341C00E5F1F4FFE01C4912E
+:1032900080E28C0F883048F4C7708E2D01C0880FF3
+:1032A000CA95EAF70E94F81B14C08C2F0E945D1289
+:1032B0002DC00E5F1F4FFE01C49180E28C0F88303D
+:1032C00058F4C7708E2D01C0880FCA95EAF70E9486
+:1032D000FE1B0E941F1C1AC08C2F0E94251316C0B3
+:1032E0000E5F1F4FFE01C491CC2381F08FE99FE058
+:1032F0000197F1F700C00000C150F6CF0E5F1F4FDD
+:10330000FE01F49003C00E945D128E018F2D882370
+:1033100009F49FCFEFE9FFE03197F1F700C000001B
+:103320008150F5CFDF91CF911F910F91FF90EF90DA
+:10333000089508956093C2017093C3018093C401FE
+:103340009093C5010C94C6150F931F930091C20171
+:103350001091C3012091C4013091C501DC01CB0162
+:10336000802B912BA22BB32B8093C2019093C3018E
+:10337000A093C401B093C5011F910F910C94C61581
+:103380000F931F930091C2011091C3012091C401BA
+:103390003091C501DC01CB0180239123A223B3230B
+:1033A0008093C2019093C301A093C401B093C5015F
+:1033B0001F910F910C94C6150F931F930091C2019A
+:1033C0001091C3012091C4013091C501DC01CB01F2
+:1033D00080279127A227B3278093C2019093C3012E
+:1033E000A093C401B093C5011F910F910C94C61511
+:1033F0001092BE011092BF011092C0011092C10143
+:103400000C94C61541E050E060E070E004C0440F49
+:10341000551F661F771F8A95D2F74093BE015093C0
+:10342000BF016093C0017093C1010C94C61541E0C7
+:1034300050E060E070E004C0440F551F661F771F26
+:103440008A95D2F78091BE019091BF01A091C001F1
+:10345000B091C101482B592B6A2B7B2B4093BE01A5
+:103460005093BF016093C0017093C1010C94C615C5
+:1034700041E050E060E070E004C0440F551F661F5B
+:10348000771F8A95D2F740955095609570958091F9
+:10349000BE019091BF01A091C001B091C10148232C
+:1034A00059236A237B234093BE015093BF0160934D
+:1034B000C0017093C1010C94C61541E050E060E07A
+:1034C00070E004C0440F551F661F771F8A95D2F71E
+:1034D0008091BE019091BF01A091C001B091C10146
+:1034E000482759276A277B274093BE015093BF0185
+:1034F0006093C0017093C1010C94C6150F931F9384
+:103500000091BE011091BF012091C0013091C10115
+:10351000DC01CB01802B912BA22BB32B8093BE011E
+:103520009093BF01A093C001B093C1011F910F916F
+:103530000C94C6150F931F930091BE011091BF010B
+:103540002091C0013091C101DC01CB018023912386
+:10355000A223B3238093BE019093BF01A093C00127
+:10356000B093C1011F910F910C94C6150F931F9337
+:103570000091BE011091BF012091C0013091C101A5
+:10358000DC01CB0180279127A227B3278093BE01BE
+:103590009093BF01A093C001B093C1011F910F91FF
+:1035A0000C94C6150895CF92DF92EF92FF920F937D
+:1035B0001F93CF93DF938C01C090C201D090C301C1
+:1035C000E090C401F090C5018091BE019091BF01CF
+:1035D000A091C001B091C101C82AD92AEA2AFB2AC8
+:1035E000CFE1D0E0D701C6010C2E04C0B695A79557
+:1035F000979587950A94D2F780FF06C0B8018C2F63
+:103600000E942C08019721F4219760F780E001C007
+:103610008C2FDF91CF911F910F91FF90EF90DF9052
+:10362000CF900895CF93DF93EC010E94D31ABE018F
+:103630000E942C08DF91CF910895CB010E94121BAC
+:1036400008958091C6018595859585950895809109
+:10365000C6018770089598E0899F90011124262B58
+:103660002093C6010C94171A2091C60180958223DD
+:103670008093C601982F977069F430E0482F552742
+:1036800047FD50952417350729F085958595859533
+:103690000C94381A08959091C601977081E009F44E
+:1036A00080E0089590910C01992321F090910D01F3
+:1036B000911109C020910E0130910F01F90132964C
+:1036C0009FEF40E01FC0982F9695969596959F3056
+:1036D00050F5E0910E01F0910F01E90FF11D877097
+:1036E00021E030E0A90102C0440F551F8A95E2F79E
+:1036F000CA019181892B818308959F3F39F04F5FE3
+:103700004E3041F051915813F8CF0DC05111F7CF01
+:10371000942FF5CF9F3F39F0F901E90FF11D97FD87
+:10372000FA9582830895089590910C01992321F0D0
+:1037300090910D01911109C020910E0130910F015E
+:10374000F9013296205F3F4F1FC0982F96959695AE
+:1037500096959F30F0F4E0910E01F0910F01E90F82
+:10376000F11D877021E030E0A90102C0440F551F10
+:103770008A95E2F7CA018095918189238183089512
+:103780003196E217F30729F090819813F9CF108250
+:10379000F7CF089581E090E0E0910E01F0910F01E4
+:1037A000E80FF91F1082019680319105A9F708955D
+:1037B0009091DA01892B8093DA0108958095909198
+:1037C000DA0189238093DA0108951092DA010895CD
+:1037D0009091D901892B8093D9010895809590917A
+:1037E000D90189238093D90108951092D9010895B0
+:1037F0009091D801892B8093D8010895809590915C
+:10380000D80189238093D80108951092D801089592
+:103810008093C70108951092C701089580910E0109
+:1038200090910F01FC0131969C01205F3F4F80E099
+:10383000919191118F5FE217F307D1F70895E0910D
+:103840000E01F0910F018091DA018083E0910E0169
+:10385000F0910F0190818091D901892B8083E091B3
+:103860000E01F0910F0190818091D801892B808306
+:103870008091C701882361F0E0910E01F0910F0162
+:103880009081892B80830E940E1C81111092C701A8
+:1038900080910E0190910F010C944D1120E0009742
+:1038A00039F0AC0141505109842395232F5FF7CFA4
+:1038B000822F0895CF92DF92EF92FF926C01EE2457
+:1038C000FF24C114D104E104F10421F0C701B601C1
+:1038D00020E101C020E0C72ED82EE92EFF24C1141C
+:1038E000D104E104F10419F0285FC701B6016B01AE
+:1038F0007C0154E0F694E794D794C7945A95D1F795
+:10390000C114D104E104F10419F02C5FC701B60120
+:103910006B017C0142E0F694E794D794C7944A95F2
+:10392000D1F7C114D104E104F10419F02E5FC701ED
+:10393000B601DC01CB01B695A79597958795892BA4
+:103940008A2B8B2B09F02F5F822FFF90EF90DF9057
+:10395000CF9008958091F401843021F11092DC0120
+:1039600020E488E190E00FB6F894A8958093600079
+:103970000FBE2093600080E00E943E0A83B7817FE3
+:10398000846083BF83B7816083BF7894889583B751
+:103990008E7F83BF88E10FB6F89480936000109209
+:1039A00060000FBE089508950E94C9030E94DC03C1
+:1039B0000E94D31C0E94D10491E0811101C090E0CB
+:1039C000892F08950E94DA150E9441110C943E0A35
+:1039D00082E084BD93E095BD9AEF97BD80936E0021
+:1039E00008952FB7F8948091DD019091DE01A091A8
+:1039F000DF01B091E0012FBF0895CF92DF92EF92E7
+:103A0000FF920F931F932FB7F8944091DD015091CF
+:103A1000DE016091DF017091E0012FBF6A017B013F
+:103A2000EE24FF248C0120E030E0C016D106E2062F
+:103A3000F30610F4415051099A01281B390BC901B2
+:103A40001F910F91FF90EF90DF90CF9008951F92FC
+:103A50000F920FB60F9211248F939F93AF93BF9342
+:103A60008091DD019091DE01A091DF01B091E00134
+:103A70000196A11DB11D8093DD019093DE01A093FD
+:103A8000DF01B093E001BF91AF919F918F910F90B3
+:103A90000FBE0F901F9018950E943E0EF8942FEFC6
+:103AA00087EA91E6215080409040E1F700C0000095
+:103AB00087E090EBDC018093FD019093FE01A093E1
+:103AC000FF01B09300029CE088E10FB6F894A8953E
+:103AD000809360000FBE90936000FFCF0E94A61DF0
+:103AE000811102C00E948C1D0E94B11D8093DB01D8
+:103AF0000E94B91D90E09093EF018093EE0187FB47
+:103B0000882780F980930D010E94B51D682F70E011
+:103B100080E090E00C949A196DEE7EEF80E090E0EA
+:103B20000E94F42360E082E090E00E94E22360E0E3
+:103B300083E090E00E94E22360E084E090E00E9455
+:103B4000E22360E085E090E00C94E22380E090E0E6
+:103B50000E94DC2321E08D3E9E4F09F020E0822F61
+:103B6000089582E090E00C94D42383E090E00C94DC
+:103B7000D42384E090E00C94D423682F84E090E078
+:103B80000C94E2238091E30180FF0BC0609113014C
+:103B900085E0689FB00111247595679575956795C7
+:103BA0002BC081FF09C06091130185E0689FB001BF
+:103BB00011247595679520C082FF07C0609113019D
+:103BC00085E0689FB001112417C09091E40199230A
+:103BD000D1F060911201961788F72091130185E0CA
+:103BE000289F90011124929FA001939F500D1124B2
+:103BF00070E0CA010E94A6236038710540F4611587
+:103C0000710539F002C065E070E0862F08958FE7F6
+:103C1000089581E008958091E30180FF08C06091DC
+:103C2000110170E0759567957595679521C081FFC5
+:103C300006C06091110170E07595679519C082FF0B
+:103C400004C06091110170E010C09091E4019923CB
+:103C5000C1F0609110019617A0F780911101899F22
+:103C6000C001112470E00E94A6236038710528F479
+:103C70006115710521F0862F08958FE7089581E081
+:103C8000089561E070E0F4CF803F21F40E94C21DEE
+:103C9000819504C0813F29F40E94C21D8093E701F1
+:103CA0000895823F21F40E94C21D819504C0833F84
+:103CB00029F40E94C21D8093E6010895893F19F4FA
+:103CC0000E940B1E05C08A3F31F40E940B1E819595
+:103CD0008093E80108958B3F21F40E940B1E81958B
+:103CE00004C08C3F29F40E940B1E8093E9010895C3
+:103CF000843F21F48091E501816017C0853F21F464
+:103D00008091E501826011C0863F21F48091E50138
+:103D100084600BC0873F21F48091E501886005C075
+:103D2000883F31F48091E50180618093E501089539
+:103D30008D3F21F48091E30181600BC08E3F21F41F
+:103D40008091E301826005C08F3F29F48091E301F7
+:103D500084608093E3010895803F39F48091E70106
+:103D600087FF6CC01092E70169C0813F29F4809100
+:103D7000E7011816BCF362C09091E601823F29F476
+:103D800097FF5CC01092E60159C0833F19F41916E1
+:103D9000CCF354C0893F41F48091E80118160CF02F
+:103DA0004DC01092E8014AC08A3F29F48091E80191
+:103DB00087FF44C0F6CF8B3F39F48091E90187FF3C
+:103DC0003DC01092E9013AC08C3F29F48091E9018D
+:103DD0001816BCF333C0843F21F48091E5018E7F37
+:103DE00017C0853F21F48091E5018D7F11C0863F8A
+:103DF00021F48091E5018B7F0BC0873F21F48091F6
+:103E0000E501877F05C0883F31F48091E5018F7E11
+:103E10008093E50113C08D3F21F48091E3018E7FF3
+:103E20000BC08E3F21F48091E3018D7F05C08F3F51
+:103E300029F48091E3018B7F8093E3018091E60177
+:103E400081110EC08091E70181110AC08091E801C3
+:103E5000811106C08091E901811102C01092E40134
+:103E6000089585EE91E00E9458110E94F11C9093F4
+:103E7000E2018093E10108951F93CF93DF93809136
+:103E8000E1019091E2010E94FD1CAC019091E401DE
+:103E9000992321F02091140130E006C020911501F2
+:103EA0008AE0289F900111244217530708F486C026
+:103EB0008091E601C091E701D091E8011091E901FC
+:103EC000811107C0C11176C0D11174C0111172C027
+:103ED00075C09F3F19F09F5F9093E401181624F47A
+:103EE0000E94C21D8093E6018091E60187FF05C014
+:103EF0000E94C21D81958093E6011C1624F40E9445
+:103F0000C21D8093E7018091E70187FF05C00E94F1
+:103F1000C21D81958093E7016091E601662339F126
+:103F2000C091E701CC2319F1772767FD7095872FA2
+:103F3000972F0E94B72223E333E343E35FE30E941A
+:103F40001B230E9484226093E6016C2F772767FD74
+:103F50007095872F972F0E94B72223E333E343E323
+:103F60005FE30E941B230E9484226093E7011D16D9
+:103F700024F40E940B1E8093E8018091E80187FFE2
+:103F800005C00E940B1E81958093E801111624F450
+:103F90000E940B1E8093E9018091E90187FF05C013
+:103FA0000E940B1E81958093E901DF91CF911F91B3
+:103FB0000C94311F9F3F09F08ECF96CFDF91CF91A8
+:103FC0001F910895E5EEF1E085E0DF011D928A95ED
+:103FD000E9F71092E4011092E3010895833081F132
+:103FE00028F4813059F08230D1F00895853009F4F9
+:103FF00049C0B8F1863009F456C008958091150182
+:10400000262F30E0280F311D2F3F310524F4680F93
+:104010006093150108958FEF8093150108958091A5
+:104020001401262F30E0280F311D2F3F310524F4D5
+:10403000680F6093140108958FEF80931401089521
+:1040400080911301262F30E0280F311D2F3F3105BD
+:1040500024F4680F6093130108958FEF8093130188
+:10406000089580911201262F30E0280F311D2F3F37
+:10407000310524F4680F6093120108958FEF809347
+:104080001201089580911101262F30E0280F311D73
+:104090002F3F310524F4680F6093110108958FEFCD
+:1040A00080931101089580911001262F30E0280F90
+:1040B000311D2F3F310524F4680F609310010895DE
+:1040C0008FEF809310010895833011F128F481302F
+:1040D00049F0823091F00895853081F120F18630E9
+:1040E000C1F1089580911501681720F4861B809313
+:1040F0001501089510921501089580911401681713
+:1041000020F4861B809314010895109214010895E1
+:1041100080911301681720F4861B80931301089582
+:1041200010921301089580911201681720F4861BE4
+:104130008093120108951092120108958091110147
+:10414000681720F4861B80931101089510921101C5
+:10415000089580911001681720F4861B8093100148
+:1041600008951092100108950F931F938D3109F453
+:1041700071C008F045C0803109F485C008F587306A
+:1041800009F46FC068F4863009F0ADC08091DB019E
+:10419000817F8E7F8093DB0181E08093EB01A4C05F
+:1041A0008B3009F49EC08E3009F09DC08091DB01F8
+:1041B00082FB222720F991E0922790FB82F96CC0C4
+:1041C000863109F48EC060F4813109F08CC00E9400
+:1041D000DA1590910D0181E0892780930D0181C04E
+:1041E000893109F47EC08B3109F07DC08091DB01FB
+:1041F00081FB222720F991E0922790FB81F94CC0A6
+:10420000853309F466C048F4873209F462C008F4C3
+:104210004FC0893209F45DC066C0833438F48A33F4
+:1042200008F044C0883309F45CC05DC0833409F4ED
+:1042300050C0883409F057C00E94DA150FEF13ED13
+:1042400020E3015010402040E1F700C000000E9430
+:104250004C1D47C00E943E220E9441110E943E0A0E
+:1042600040C09091DB01892F8095817080FB90F98F
+:1042700029F0966098609093DB0136C0997F977F14
+:104280009093DB012EC08091DB0183FB222720F974
+:1042900091E0922790FB83F98093DB01992309F148
+:1042A0008091DB0181608093DB011BC0895301C0D9
+:1042B0008D5141E050E060E070E08A019B0104C054
+:1042C000000F111F221F331F8A95D2F7C901B801B1
+:1042D00004C061E070E080E090E00E949A190E94C2
+:1042E000DA1581E001C080E01F910F91089580E010
+:1042F000089580E008958E518A3030F4E82FF0E080
+:10430000E65DFE4F8081089580E00895CF93C82F29
+:104310008091EB01813079F018F08230E9F186C0AC
+:10432000E0910E01F0910F018081813169F08232BC
+:1043300009F07EC009C0E0910E01F0910F0180816B
+:10434000813111F0823261F48C2F0E94772181112A
+:1043500004C08C2F0E94B4201DC081E090E01AC0E0
+:104360008C2F0E947921811114C0C43179F048F456
+:10437000CB3079F0C03109F05FC082E08093EB016F
+:1043800008C0C93219F0C83321F056C01092EB01B1
+:1043900053C081E0817052C0C93281F110F5C4313F
+:1043A00069F1A8F4C73009F045C08AE0809315018F
+:1043B00094E19093140193E0909313018093120180
+:1043C00088E08093110188E28093100133C082EE6F
+:1043D0008C0F863078F58C2F0E947B218093EA0128
+:1043E00029C0CE34E9F020F4CB3421F56AE013C0C3
+:1043F000C13579F0C235F1F461E00DC08091EA0178
+:10440000882319F01092EA0115C081E08093EB0136
+:1044100015C061E006C08091EA010E94EE1F0AC04B
+:104420006AE08091EA010E94642004C01092EB01CE
+:1044300080E004C081E002C080E0ACCFCF9108955D
+:10444000E1E8F0E080818860808380818160808302
+:104450008FB7F89493E09093890090ED9093880043
+:104460008FBF0895EFE6F0E0808182608083089539
+:10447000EFE6F0E080818D7F80830895EFE6F0E045
+:10448000908182E08927808308951F920F920FB652
+:104490000F9211242F933F934F935F936F937F93CA
+:1044A0008F939F93AF93BF93EF93FF938091EC0112
+:1044B0009091ED0101969093ED018093EC018111B3
+:1044C00003C082E00E943E0AE091ED01E695E69588
+:1044D000F0E0E755FA4FE4918091EC018E1303C0B0
+:1044E00080E00E943E0AFF91EF91BF91AF919F91B2
+:1044F0008F917F916F915F914F913F912F910F908D
+:104500000FBE0F901F90189504D06894B1118DC004
+:10451000089570D088F09F5790F0B92F9927B75120
+:10452000A0F0D1F0660F771F881F991F1AF0BA9577
+:10453000C9F712C0B13081F077D0B1E0089574C0EE
+:10454000672F782F8827B85F39F0B93FCCF386956D
+:1045500077956795B395D9F73EF4909580957095CA
+:1045600061957F4F8F4F9F4F0895E89409C097FB47
+:104570003EF490958095709561957F4F8F4F9F4F3A
+:104580009923A9F0F92F96E9BB279395F69587957E
+:1045900077956795B795F111F8CFFAF4BB0F11F441
+:1045A00060FF1BC06F5F7F4F8F4F9F4F16C08823E8
+:1045B00011F096E911C0772321F09EE8872F762F1E
+:1045C00005C0662371F096E8862F70E060E02AF05F
+:1045D0009A95660F771F881FDAF7880F969587954B
+:1045E00097F9089557FD9058440F551F59F05F3FB4
+:1045F00071F04795880F97FB991F61F09F3F79F005
+:1046000087950895121613061406551FF2CF469586
+:10461000F1DF08C0161617061806991FF1CF869508
+:104620007105610508940895E894BB2766277727EC
+:10463000CB0197F908950BD078C069D028F06ED0DF
+:1046400018F0952309F05AC05FC01124EECFCADFDD
+:10465000A0F3959FD1F3950F50E0551F629FF00195
+:10466000729FBB27F00DB11D639FAA27F00DB11DEE
+:10467000AA1F649F6627B00DA11D661F829F222777
+:10468000B00DA11D621F739FB00DA11D621F839FFE
+:10469000A00D611D221F749F3327A00D611D231FD4
+:1046A000849F600D211D822F762F6A2F11249F5722
+:1046B00050408AF0E1F088234AF0EE0FFF1FBB1F45
+:1046C000661F771F881F91505040A9F79E3F5105E4
+:1046D00070F014C0AACF5F3FECF3983EDCF38695F0
+:1046E00077956795B795F795E7959F5FC1F7FE2B8F
+:1046F000880F911D9695879597F9089597F99F676B
+:1047000080E870E060E008959FEF80EC0895002459
+:104710000A941616170618060906089500240A9426
+:1047200012161306140605060895092E0394000CAC
+:1047300011F4882352F0BB0F40F4BF2B11F460FF3B
+:1047400004C06F5F7F4F8F4F9F4F089597FB072ED9
+:1047500016F4009407D077FD09D00E94C02307FC0F
+:1047600005D03EF4909581959F4F08957095619581
+:104770007F4F0895EE0FFF1F0590F491E02D0994EF
+:10478000AA1BBB1B51E107C0AA1FBB1FA617B70777
+:1047900010F0A61BB70B881F991F5A95A9F7809593
+:1047A0009095BC01CD010895F999FECF92BD81BDD0
+:1047B000F89A992780B50895A8E1B0E042E050E06A
+:1047C0000C94FC23262FF999FECF92BD81BDF89A57
+:1047D000019700B4021639F01FBA20BD0FB6F89445
+:1047E000FA9AF99A0FBE08950196272F0E94E323A3
+:1047F0000C94E223DC01CB01FC01F999FECF06C049
+:10480000F2BDE1BDF89A319600B40D92415050408E
+:08481000B8F70895F894FFCFFA
+:104818000220400ACE0AAB0A770A430A0101C801FE
+:1048280028080A03140A404D363969051C05E604B0
+:10483800AD044004590472048B0401020304050604
+:044848000708090054
+:00000001FF
diff --git a/keyboards/ergodox_ez/keymaps/csharp_dev/csharp_dev.png b/keyboards/ergodox_ez/keymaps/csharp_dev/csharp_dev.png Binary files differnew file mode 100644 index 0000000000..6fba568fc3 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/csharp_dev/csharp_dev.png diff --git a/keyboards/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.png b/keyboards/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.png Binary files differnew file mode 100644 index 0000000000..b0a1c513cd --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.png diff --git a/keyboards/ergodox_ez/keymaps/csharp_dev/keymap.c b/keyboards/ergodox_ez/keymaps/csharp_dev/keymap.c new file mode 100644 index 0000000000..e9648ede7d --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/csharp_dev/keymap.c @@ -0,0 +1,239 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define FKEYS 1 // F keys + macros + +#define MACRO_PUBLIC 10 +#define MACRO_PRIVATE 11 + +#define MACRO_STATIC 12 +#define MACRO_CONST 13 + +#define MACRO_VOID 14 +#define MACRO_VAR 15 +#define MACRO_STRING 16 + +#define MACRO_INT 17 +#define MACRO_FLOAT 18 +#define MACRO_BOOL 19 + +#define MACRO_RETURN 20 +#define MACRO_NULL 21 +#define MACRO_BREAK 22 + +#define MACRO_TODO 23 +#define MACRO_NEW 24 +#define MACRO_PARENTHESE 25 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ( | 1 | 2 | 3 | 4 | 5 | " | | Save | 6 | 7 | 8 | 9 | 0 | [ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | ) | Q | W | E | R | T |Bkspa | | Del | Y | U | I | O | P | ] | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | { | A | S | D | F | G |------| |------| H | J | K | L | _ | Redo | + * |--------+------+------+------+------+------| / | | ; |------+------+------+------+------+--------| + * | } |Z~Alt | X | C | V | B | | | | N | M | ' | ! | ? | Undo | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Tab~CL| < | > | | | & | | = | + | - | * | L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |. ~L1 | , | |Home |End~L1| + * ,------|------|------| |------+------+------. + * | | | Copy | | UP | | | + * | Enter| Space|------| |------| Space|Enter | + * | ~WIN | ~LSFT| Past | | DOWN | ~LSFT| ~WIN | + * `--------------------' `--------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_LPRN, KC_1, KC_2, KC_3, KC_4, KC_5, LSFT(KC_QUOTE), + KC_RPRN, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPACE, + KC_LCBR, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_RCBR, ALT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_SLASH, + CTL_T(KC_TAB), LSFT(KC_COMMA),LSFT(KC_DOT),KC_PIPE,KC_AMPR, + LT(1,KC_DOT), KC_COMM, + LCTL(KC_C), + GUI_T(KC_ENTER),SFT_T(KC_SPACE),LCTL(KC_V), + // right hand + LCTL(KC_S) , KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRACKET, + KC_DELETE, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRACKET, + KC_H, KC_J, KC_K, KC_L, KC_UNDS,LCTL(KC_Y), + KC_SCOLON,KC_N, KC_M, KC_QUOTE ,KC_EXLM , LSFT(KC_SLASH), LCTL(KC_Z), + KC_EQUAL,KC_PLUS , KC_MINUS,KC_ASTR , TG(1), + KC_HOME, LT(1,KC_END), + KC_UP, + KC_DOWN,SFT_T(KC_SPACE), GUI_T(KC_ENTER) + ), + +/* Keymap 1: F keys + macros + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ESC | F1 | F2 | F3 | F4 | F5 | ` | | Calc | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab |Public|Static|string|int |return| | | |//TODO| | | | | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | |Privat|Const |var |float |null |------| |------|new | | | | | | + * |--------+------+------+------+------+------| \ | | ~ |------+------+------+------+------+--------| + * | | | |void |bool |break;| | | |(); | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | WIN | Alt | | | | PgUp | PgDw | Ins | PtSc | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | Cut | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| Left | Right| + * | | | | | | | | + * `--------------------' `--------------------' + */ +// FKEYS + MACROS +[FKEYS] = KEYMAP( + // left hand + KC_ESCAPE,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_GRAVE, + KC_TAB,M(MACRO_PUBLIC),M(MACRO_STATIC), M(MACRO_STRING),M(MACRO_INT),M(MACRO_RETURN),KC_TRNS, + KC_TRNS,M(MACRO_PRIVATE),M(MACRO_CONST), M(MACRO_VAR),M(MACRO_FLOAT),M(MACRO_NULL), + KC_TRNS,KC_TRNS,KC_TRNS,M(MACRO_VOID),M(MACRO_BOOL),M(MACRO_BREAK),KC_BSLASH, + KC_TRNS,KC_LGUI,KC_LALT,KC_TRNS,KC_TRNS, + KC_TRNS,LCTL(KC_X), + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_CALCULATOR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, M(MACRO_TODO), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, + M(MACRO_NEW), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TILD, M(MACRO_PARENTHESE), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_PGUP,KC_PGDOWN, KC_INSERT, KC_PSCREEN, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_LEFT, KC_RIGHT +), + + +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(FKEYS) // FN1 - Momentary Layer 1 +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case MACRO_PUBLIC: + if (record->event.pressed) { + return MACRO( T(P), T(U), T(B), T(L), T(I), T(C), T(SPACE),END); + } + break; + case MACRO_PRIVATE: + if (record->event.pressed) { + return MACRO( T(P), T(R), T(I), T(V), T(A), T(T), T(E), T(SPACE),END); + } + break; + case MACRO_STATIC: + if (record->event.pressed) { + return MACRO( T(S), T(T), T(A), T(T), T(I), T(C), T(SPACE), END); + } + break; + case MACRO_CONST: + if (record->event.pressed) { + return MACRO( T(C), T(O), T(N), T(S), T(T), T(SPACE), END); + } + break; + case MACRO_VOID: + if (record->event.pressed) { + return MACRO( T(V), T(O), T(I), T(D), T(SPACE), END); + } + break; + case MACRO_VAR: + if (record->event.pressed) { + return MACRO( T(V), T(A), T(R), T(SPACE), END); + } + break; + case MACRO_STRING: + if (record->event.pressed) { + return MACRO( T(S), T(T), T(R), T(I), T(N), T(G), T(SPACE), END); + } + break; + case MACRO_BOOL: + if (record->event.pressed) { + return MACRO( T(B), T(O), T(O), T(L), T(SPACE), END); + } + break; + case MACRO_INT: + if (record->event.pressed) { + return MACRO( T(I), T(N), T(T), T(SPACE), END); + } + break; + case MACRO_FLOAT: + if (record->event.pressed) { + return MACRO( T(F), T(L), T(O), T(A),T(T),T(SPACE), END); + } + break; + case MACRO_RETURN: + if (record->event.pressed) { + return MACRO( T(R), T(E), T(T), T(U),T(R),T(N), END); + } + break; + case MACRO_NULL: + if (record->event.pressed) { + return MACRO( T(N), T(U), T(L), T(L), END); + } + case MACRO_BREAK: + if (record->event.pressed) { + return MACRO( T(B), T(R), T(E), T(A), T(K), T(SCOLON), END); + } + break; + case MACRO_TODO: + if (record->event.pressed) { + return MACRO( T(SLASH), T(SLASH), D(LSHIFT) ,T(T), T(O), T(D), T(O),U(LSHIFT), T(SPACE),END); + } + break; + case MACRO_NEW: + if (record->event.pressed) { + return MACRO( T(N), T(E), T(W), T(SPACE), END); + } + break; + case MACRO_PARENTHESE: + if (record->event.pressed) { + return MACRO( D(LSHIFT),T(9), T(0),U(LSHIFT), T(SCOLON), END); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboards/ergodox_ez/keymaps/csharp_dev/readme.md b/keyboards/ergodox_ez/keymaps/csharp_dev/readme.md new file mode 100644 index 0000000000..96af077ade --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/csharp_dev/readme.md @@ -0,0 +1,47 @@ +# ErgoDox EZ C# Developer configuration + +## Changelog + +* Feb 12, 2016 (V1): + * First version commit +* Mar 20, 2016 (V2): + * Removed "Classic QWERTY" layer, inverted GUI and SHIFT on Hold for Space and Enter + +## About +This layout was conceived in an attempt to optimise keyboard layout for developers (C# more specifically, but it can work with most of other languages), and limit the keys required to perform the most frequent actions. + +I came to the realization that my main tool as a developer, the qwerty keyboard was something that did not evolved at its core in almost 150 years. +There are a lot of reasons to this, and it would be a massive entreprise to change a standard so strongly anchored, but I wanted to give it a try and see how would look an input device dedicated to developers, more specifically a C# developer in my case. +The biggest flaw in standard QWERTY keyboards was that I always needed to perform key combination to access commonly used characters or actions. Think about it a minute, how many times a day do you press a modifier key such as Ctrl or Shift, it's insane and could be so easily optimized to require only one key press. + +Then I came across the ErgoDox EZ project, that allowed a full customization of its firmware, and a unique 2 parts design. + +![CSharpDev](csharp_dev_legend.png) + +## Layout design principles +* No key combination required for the most common input characters ( (),[],{},<> ... ) +* No key combination required for the most common actions (copy/paste/undo/save) +* Regroup characters by usage ( + - * = ...) +* Easy access to the most commonly used characters: ; / " . , +* Preregistered macro for the most common C# langage instructions: public / private / string / int / float ... + +## Why is it specific to C Sharp +I defined the characters priority based on their usage in C# language, most of this characters are also used in other coding languages but it may require some tweaking. +For example there is no direct access to ~ or $ keys which can be very common in some languages. +Note it is also specific to Windows environement as the shortcut used in action keys would not work on Mac Os + +## In usage +It was relatively easy to get used to the layout, but it's hard for me to define how easy it was as I was getting used to a blank Ergodox keyboard at the same time. +Still it's extremely satisfying to Save your file with just one easily accessible key or to have one big key to end your code line ( ; ) + +## Improvements +This layout was shared after a bunch of iterations and only once I was happy with it. +Still there are many way to improve or iterate on this: +* Make it language agnostic +* Check and compile language's keyboard's heatmaps to statistically define keys priority (e.g. https://dzone.com/articles/most-pressed-keys-various ) +* QWERTY is still not the most efficient typing layout, I would like to create a Dvorak based similar layout in a near futur + +## Issues +One of the issues encountered while creating this layout was that I did not find a way to have a key to send a modifier on hold, and a key combination while pressed (e.g. I can't set a Key to do Save (Ctrl + S) when pressed and Shift modifier when hold ) + + |