summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.hex1161
-rw-r--r--keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.pngbin0 -> 558660 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.pngbin0 -> 576661 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/csharp_dev/keymap.c282
-rw-r--r--keyboard/ergodox_ez/keymaps/csharp_dev/readme.md46
5 files changed, 1489 insertions, 0 deletions
diff --git a/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.hex b/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.hex
new file mode 100644
index 0000000000..e29c17860a
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.hex
@@ -0,0 +1,1161 @@
+:100000000C94E9020C942D030C942D030C942D03F5
+:100010000C942D030C942D030C942D030C942D03A0
+:100020000C942D030C942D030C94720D0C94360D2E
+:100030000C94911B0C942D030C942D030C942D0304
+:100040000C942D030C942D030C942D030C942D0370
+:100050000C942D030C94171C0C942D030C942D035D
+:100060000C942D030C942D030C942D030C942D0350
+:100070000C942D030C942D030C942D030C942D0340
+:100080000C942D030C942D030C942D030C942D0330
+:100090000C942D030C942D030C942D030C942D0320
+:1000A0000C942D030C942D030C942D03260227028F
+:1000B0002F0230022B7100001E00140004001D747A
+:1000C000360219011F001A0016001B0037022C7897
+:1000D00020000800070006003102287221001500E8
+:1000E0000900190024020601220017000A00050079
+:1000F0000000378134022A000000380000003682F8
+:1001000016014C000000330000004A8223001C004E
+:100110000B00110000004D81240018000D0010009C
+:100120002E00520025000C000E0034002E02287212
+:10013000260012000F001E022D002C78270013004D
+:100140002D023802250251002F0030001C011D0134
+:100150000154000035002B002900E100E000000000
+:100160001E00140004001D00E30001001F001A001F
+:1001700016001B00E2000100200008000700060036
+:10018000E600010021001500090019002900010006
+:10019000220017000A000500000001002D000100E8
+:1001A00000002B0000001B012E00010000002900B0
+:1001B0000000010023001C000B00110000000100E2
+:1001C000240018000D0010004B00010025000C0059
+:1001D0000E0001004E004F00260012000F003700F5
+:1001E000490050002700130033003800460001008A
+:1001F0000100010034006400010000000100010062
+:1002000001000100010000003A000A300B3001003B
+:10021000E20001003B000C300D3001000100010044
+:100220003C0010300F300E30010001003D00113055
+:1002300012301330010001003E001430153016302A
+:1002400000000100010001000000010000000100A9
+:10025000B200010000000100000001003F00173063
+:1002600018301930000001004000010001000100B9
+:100270000100010041000100010001000100010036
+:1002800042000100010001000100010043000100E3
+:1002900001000100010001004400450001000100CF
+:1002A000010000000000F0A201E101260226012762
+:1002B000022702E101330233000111021101080299
+:1002C00008011A021A012C022C00013802380138E8
+:1002D000023801E101170217011202120107020799
+:1002E0000112021202E1012C022C0001050205019B
+:1002F0001502150108020801040204010E020E0194
+:10030000330233000111021101180218010F020F0C
+:10031000010F020F00011502150108020801170262
+:100320001701180218011502150111021100010927
+:100330000209010F020F0112021201040204011747
+:100340000217012C022C00010C020C0111021101F8
+:10035000170217012C022C000105020501120212DE
+:1003600001120212010F020F012C022C00011602D1
+:10037000160117021701150215010C020C011102DA
+:1003800011010A020A012C022C00011902190104B0
+:10039000020401150215012C022C00011902190199
+:1003A000120212010C020C01070207012C022C00A0
+:1003B00001060206011202120111021101160216B3
+:1003C00001170217012C022C000116021601170258
+:1003D000170104020401170217010C020C010602A6
+:1003E00006012C022C000113021301150215010C49
+:1003F000020C011902190104020401170217010875
+:100400000208012C022C000113021301180218012A
+:10041000050205010F020F010C020C010602060184
+:100420002C022C0005010906A101050719E029E7A6
+:100430001500250195087501810295017508810156
+:1004400005081901290595057501910295017503A6
+:1004500091010507190029FF150025FF950675086C
+:100460008100C005010902A1010901A100050919C6
+:100470000129051500250195057501810295017574
+:100480000381010501093009311581257F95027528
+:1004900008810609381581257F95017508810605B3
+:1004A0000C0A38021581257F950175088106C0C0A8
+:1004B00005010980A101850216010026B7001A0175
+:1004C000002AB700751095018100C0050C0901A133
+:1004D000018503160100269C021A01002A9C027560
+:1004E0001095018100C005010906A101050719E069
+:1004F00029E71500250195087501810205081901F4
+:10050000290595057501910295017503910105076E
+:100510001900297715002501957875018102C0120F
+:1005200001100100000008EDFE07130100010200A8
+:100530000109026D00040100A0FA09040000010392
+:10054000010100092111010001223F00070581037B
+:1005500008000A0904010001030102000921110138
+:100560000001224D000705820308000A0904020069
+:1005700001030000000921110100012236000705D6
+:10058000830308000A090403000103000000092195
+:100590001101000122390007058403100001040342
+:1005A000090416034500720067006F0044006F00E5
+:1005B0007800200045005A00000016034500720034
+:1005C00067006F0044006F007800200045005A006B
+:1005D000000011241FBECFEFDAE0DEBFCDBF04B6AE
+:1005E00003FE24C08091CE019091CF01A091D00153
+:1005F000B091D1018750904BA740B04BB9F4109205
+:10060000CE011092CF011092D0011092D10114BEF0
+:1006100084B7877F84BF88E10FB6F8948093600029
+:10062000109260000FBEE0E0FFE3099511E0A0E04A
+:10063000B1E0E2E5F8E402C005900D92A631B10701
+:10064000D9F711E0A6E1B1E001C01D92AE3CB107BF
+:10065000E1F70E945F090C9427240C940000FC0130
+:10066000613109F464C06231A8F46D3009F441C00D
+:100670006E3040F46B3079F16C30A0F56A3009F0DF
+:1006800084C022C06F3009F441C08281603108F01B
+:1006900043C036C0653109F45AC0663140F4633155
+:1006A00009F43FC08281643108F04CC046C0673114
+:1006B00009F459C0673108F450C0683109F459C0D1
+:1006C000693109F062C05BC08281882309F45DC092
+:1006D00027E034E05CC08281882309F456C026EE0E
+:1006E00033E055C08281882309F44FC029EC33E000
+:1006F0004EC08281882309F448C020EB33E047C014
+:10070000882309F442C02BE933E041C08281882369
+:10071000E1F12AE833E03BC08823B9F12DE633E06C
+:1007200036C08281882389F128E533E030C0828198
+:10073000882359F127E433E02AC0882331F12EE2DF
+:1007400033E025C0882309F125E133E020C0828110
+:10075000882319F024E033E01AC082818823A9F0AD
+:100760002BEE32E014C08281882379F02AEC32E04B
+:100770000EC08281882349F029EB32E008C08281D3
+:10078000882319F028EA32E002C020E030E0C901F5
+:100790000895089560919701709198018091990151
+:1007A00090919A010E94201B56985E9825982D984A
+:1007B00026982E9827982F98813019F0823031F49E
+:1007C00003C0259A2D9A0895269A2E9A08958AECA8
+:1007D00093E0009711F0FC01099580E090E0089506
+:1007E00056985E9825982D9826982E9827982F9899
+:1007F0008FEF90E0909389008093880090938B0016
+:1008000080938A0090938D0080938C00259A2D9A76
+:1008100084EF91E020E931E0F9013197F1F7019798
+:10082000D9F7269A2E9A84EF91E020E931E0F90178
+:100830003197F1F70197D9F7279A2F9A84EF91E032
+:1008400020E931E0F9013197F1F70197D9F72598BF
+:100850002D9884EF91E020E931E0F9013197F1F72B
+:100860000197D9F726982E9884EF91E020E931E09E
+:10087000F9013197F1F70197D9F727982F985698F2
+:100880005E9825982D9826982E9827982F98089549
+:1008900089EA8093800089E08093810024982C98D5
+:1008A0003F988AB18F748AB96E98479A8BB1806BE2
+:1008B0008BB9769A0E94F00389EC93E0009711F0CF
+:1008C000FC01099580E090E0089580E280930001AA
+:1008D00080911601882371F40E94B40481E0809312
+:1008E000160180E197E220E931E0F9013197F1F753
+:1008F0000197D9F780E40E94BA048093000188230D
+:1009000071F50E94E80480930001882341F50E945C
+:10091000E80480930001882311F58FE30E94E80426
+:10092000809300018823D9F40E94E00480E40E94AF
+:10093000BA0480930001882391F48CE00E94E804BB
+:1009400080930001882359F40E94E80480930001F9
+:10095000882329F48FE30E94E804809300010E9419
+:10096000E0048091000108951092B9008AE080931C
+:10097000B8000895982F84EA8093BC008091BC0051
+:1009800087FFFCCF8091B900887F883021F08031CB
+:1009900011F081E008959093BB0084E88093BC003F
+:1009A0008091BC0087FFFCCF9091B900987F98316F
+:1009B00011F480E0089580E0903409F081E008951A
+:1009C00084E98093BC008091BC0084FDFCCF089535
+:1009D0008093BB0084E88093BC008091BC0087FFBB
+:1009E000FCCF8091B90090E0887F883209F091E0D7
+:1009F000892F089584E88093BC008091BC0087FF14
+:100A0000FCCF8091BB000895E7E1F1E0E80FF11D14
+:100A1000808108950895809100018823A9F480E4DD
+:100A20000E94BA0480930001882361F482E10E944D
+:100A3000E80480930001882329F48FEF0E94E804E2
+:100A4000809300010E94E00484B1807F84B985B165
+:100A5000807F85B98AB1837F8AB98BB1837F8BB957
+:100A60003E98469808950E946504809300010E9474
+:100A70000B0580B38C7080BB81B3836F81BB80E03A
+:100A800090E0FC01E95EFE4F1082FC01EB5DFE4F41
+:100A9000108201968E309105A1F788E494E00097CA
+:100AA00011F0FC0109950895BF92CF92DF92EF9269
+:100AB000FF920F931F93CF93DF93809100018823C0
+:100AC00079F0809133018F5F80933301882341F463
+:100AD0000E94650480930001882311F40E94F003B2
+:100AE00025E2E22E21E0F22EC0E0D0E090EAB92E1D
+:100AF00081E0C82ED12C02E0C73010F580910001B2
+:100B0000882309F045C080E40E94BA048093000164
+:100B1000882399F482E10E94E804809300018823ED
+:100B200061F4C6010C2E02C0880F991F0A94E2F7E7
+:100B300080950E94E804809300010E94E00428C090
+:100B4000CA30D9F0CB3040F4C83089F0C93090F4C5
+:100B5000C73009F0A0C008C0CC30A1F0CC3080F084
+:100B6000CD3009F098C011C0209A289894C0219ADD
+:100B7000299891C0229A2A988EC0239A2B988BC0CC
+:100B8000529A01C0539A5B9886C03E9A469883C099
+:100B900080910001882311F010E03EC080E40E94A3
+:100BA000BA0480930001882399F483E10E94E80449
+:100BB00080930001882361F481E40E94BA04809349
+:100BC0000001882329F40E94FA04182F109501C00F
+:100BD00010E00E94E00420C042E07C9902C034E0B2
+:100BE00001C030E07D9902C028E001C020E07E997C
+:100BF00002C090E101C090E08FB18095881F8827E6
+:100C0000881F8295880F807E152F1C251170142B4C
+:100C1000132B122B192B182BF7018081811719F038
+:100C20001083009301010E940B0521960894E11C9A
+:100C3000F11CCE30D10509F05FCF809101018823EE
+:100C4000C9F0815080930101882329F080EA9FE058
+:100C50000197F1F70FC020E030E0F901E95EFE4FA7
+:100C6000D901AB5DBE4F8C9180832F5F3F4F2E30FB
+:100C7000310599F787EE93E0009711F0FC01099593
+:100C800081E0DF91CF911F910F91FF90EF90DF9066
+:100C9000CF90BF9008958B2D8A95F1F75FB1799B26
+:100CA0009BCF40E09ACF08959C018B3B910578F44F
+:100CB000883A910548F5853A9105B8F48430910554
+:100CC00008F09FC08130910509F099C095C0803E21
+:100CD000910508F494C0883E910508F492C0805FA5
+:100CE0009040409708F08BC085C0853A910519F473
+:100CF00081E890E47DC0863A910519F083E890E49C
+:100D000077C082E890E474C0883A910519F482EEC5
+:100D100094E46EC0893A910519F489EE94E468C0B0
+:100D20008A3A910519F48AEE94E462C08B3A9105EF
+:100D300019F485EB94E45CC08C3A910519F486EBC8
+:100D400094E456C08D3A910519F487EB94E450C0B1
+:100D5000803B910519F48CEC94E44AC08E3A9105DD
+:100D600019F48DEC94E444C08F3A910519F483E8AA
+:100D700095E43EC0813B910519F48AE895E438C0BA
+:100D8000823B910519F482E995E432C0833B9105D9
+:100D900019F484E995E42CC0843B910519F481E2AF
+:100DA00096E426C0853B910519F483E296E420C0C1
+:100DB000863B910519F484E296E41AC0873B9105BD
+:100DC00019F485E296E414C0883B910519F486E293
+:100DD00096E40EC0893B910519F487E296E408C0B9
+:100DE0008A3B910519F080E094E402C08AE296E41F
+:100DF0009C0107C0306505C021E030E002C020E062
+:100E000030E0C9010895E62FF0E0EE0FFF1F9CE0EF
+:100E1000799F90011124E20FF31F98EA899FC00186
+:100E20001124E80FF91FE455FF4F25913491C901B2
+:100E30000895FC01EE0FFF1FEC5DFE4F25913491EC
+:100E4000C9010895FC01EE0FFF1FEC55FD4F2591E0
+:100E50003491C90108950E940307AC01805091406C
+:100E600080509F4118F4CA019F710895CA018050B3
+:100E700090428050904128F4CA019F700E9422073E
+:100E80000895CA01805090438050904120F4CA01D7
+:100E90009070906C089580E54030580771F40E947E
+:100EA000261184EC99E020E931E0F9013197F1F75E
+:100EB0000197D9F70E943C1C0EC120E54130520732
+:100EC00031F48091AE0181608093AE0104C1CA010A
+:100ED000805090458050904108F056C0652F77278C
+:100EE0006F70707061307105F9F49A01A4E0220FFF
+:100EF000331FAA95E1F720703370CA01F3E0880F21
+:100F0000991FFA95E1F780769070282B392B3C6871
+:100F10004370507002C0660F771F4A95E2F76F71F9
+:100F20007070262B372B2EC06230710529F4942F58
+:100F30008827816F906A08956330710551F49A0192
+:100F400073E0220F331F7A95E1F7207E37703C68FB
+:100F50000CC06430710561F59A0163E0220F331F04
+:100F60006A95E1F7207E37703A684370507081E0EF
+:100F700090E002C0880F991F4A95E2F78F71907038
+:100F8000282B392BC9010895CA0180509047805001
+:100F9000904120F4CA019F7090620895CA01805068
+:100FA00090488050904120F4CA019F70906A089543
+:100FB000403E5105F0F4403C510588F54133510560
+:100FC00009F476C04233510548F44932510509F419
+:100FD00065C04A32510509F07AC06FC049335105E6
+:100FE00011F142385105F9F04533510509F06FC050
+:100FF00050C0433E510569F1443E510540F4403E26
+:101000005105C1F0423E510509F061C01DC0463E88
+:10101000510559F1473E510509F059C02BC0CA018D
+:101020000E94190708958091BF0180FD0AC081FDCB
+:1010300008C04DC08091BF0180FF03C089E390E0EC
+:1010400047C080EE90E044C08091BF0182FD08C09F
+:1010500004C08091BF0182FF03C082EE90E038C0DF
+:1010600084FD11C083EE90E033C08091BF0183FD09
+:1010700008C004C08091BF0183FF03C086EE90E0EA
+:1010800027C084FF03C080E090E022C087EE90E09C
+:101090001FC08091BF0185FF05C007C08091BF01BF
+:1010A00085FF03C085E390E013C089E290E010C0A3
+:1010B0008091BF0186FF05C007C08091BF0186FFF8
+:1010C00003C081E390E004C08AE290E001C0CA015D
+:1010D0000E9454060895089508951092C401089539
+:1010E00008950895809135010895DF93CF9300D03E
+:1010F0000F92CDB7DEB7AC018091C501843029F5E0
+:1011000083E08093E9002FEF95ED05C0892F8A9544
+:10111000F1F7222329F08091E800215085FFF6CFD6
+:101120008091E80085FF11C05B834A8383E0898357
+:10113000CE01019663E070E040E050E00E94D80BE1
+:101140008091E8008E778093E8000F900F900F90C9
+:10115000CF91DF910895DF93CF9300D00F92CDB759
+:10116000DEB7AC018091C501843029F583E080931E
+:10117000E9002FEF95ED05C0892F8A95F1F722231D
+:1011800029F08091E800215085FFF6CF8091E8009A
+:1011900085FF11C05B834A8382E08983CE0101967B
+:1011A00063E070E040E050E00E94D80B8091E800DE
+:1011B0008E778093E8000F900F900F90CF91DF9182
+:1011C0000895AC018091C501843001F582E08093DF
+:1011D000E9002FEF95ED05C0892F8A95F1F72223BD
+:1011E00029F08091E800215085FFF6CF8091E8003A
+:1011F00085FF0CC0CA0165E070E040E050E00E944D
+:10120000D80B8091E8008E778093E80008950F93C3
+:101210001F93182F092F9091C501943009F04CC0ED
+:10122000809102018823E1F080910D018823C1F0B3
+:101230009093E9009FEF25E105C0822F8A95F1F791
+:10124000992329F08091E800915085FFF6CF809195
+:10125000E80085FF31C0812F902F60E170E018C059
+:1012600081E08093E9009FEF25ED05C0822F8A95EC
+:10127000F1F7992329F08091E800915085FFF6CF8E
+:101280008091E80085FF18C0812F902F68E070E002
+:1012900040E050E00E94D80B8091E8008E77809368
+:1012A000E800A6E3B1E0212F302FC901FC0180E165
+:1012B00001900D928150E1F71F910F91089584B72D
+:1012C000877F84BF88E10FB6F89480936000109206
+:1012D00060000FBE80E090E020E80FB6F894209305
+:1012E0006100809361000FBE0E9424100E94B60C22
+:1012F0000E94170D8091E20084608093E200789450
+:101300000E94B50F0E94C01083E091E00E94CB0FB5
+:101310000CC00E94691B8091C301882331F00E9498
+:10132000C11B882311F00E94ED0A8091C501853010
+:1013300081F30E942A10F9CF8091C401882349F4D7
+:101340000E94B60C0E94170D8091E2008460809389
+:10135000E20008958091C701833009F457C08430BA
+:1013600030F4813071F0823009F0B1C098C08A3019
+:1013700009F485C08B3009F46AC0893009F0A7C030
+:1013800020C08091C601813A09F0A1C08091E80097
+:10139000877F8093E8008091CA019091CB01892BCF
+:1013A00021F486E391E060E103C080E090E060E03A
+:1013B00070E00E94030B8091E8008B778093E80037
+:1013C00008958091C601813209F081C08091CA01DF
+:1013D0009091CB01009719F0039709F078C08091A4
+:1013E000E800877F8093E80005C08091C5018823CD
+:1013F00009F46DC08091E80082FFF7CF8091F10081
+:10140000809335018091E8008B771CC08091C601E4
+:10141000813A09F05CC08091CA019091CB01892B7F
+:1014200009F055C08091E800877F8093E8008091A3
+:10143000E80080FFFCCF809102018093F100809151
+:10144000E8008E778093E8000E94630C08958091F5
+:10145000C6018132E1F58091CA019091CB01892BBF
+:10146000B1F58091E800877F8093E8000E94630CCB
+:101470008091C801809302010E94261108958091F5
+:10148000C601813221F58091E800877F8093E800D2
+:101490000E94630C8091C90180933401089580916A
+:1014A000C601813AA1F48091E800877F8093E8002B
+:1014B0008091E80080FFFCCF809134018093F1009F
+:1014C0008091E8008E778093E8000E94630C089575
+:1014D00081E061EC42E00E942B0C82E061EC42E092
+:1014E0000E942B0C83E061EC42E00E942B0C84E014
+:1014F00061EC42E10E942B0C08950E94BA1B0895F2
+:10150000DA019330C1F0943030F4913051F09230E0
+:1015100009F05BC00BC0913221F1923209F055C045
+:1015200037C0EFE1F5E022E130E053C0E1E3F5E060
+:101530002DE630E04EC0813051F0813020F0823015
+:1015400009F043C008C0EEE9F5E0849107C0E2EA83
+:10155000F5E0849103C0EAEBF5E08491282F30E0B8
+:1015600038C0613051F0613028F0623059F063309A
+:1015700061F50BC0E3E4F5E002C0ECE5F5E029E03D
+:1015800030E027C0E5E7F5E0FACFEEE8F5E0F7CF89
+:10159000613061F0613028F0623069F06330A9F4A5
+:1015A0000FC0E4E2F4E02FE330E013C0E3E6F4E040
+:1015B0002DE430E00EC0E0EBF4E026E330E009C0BB
+:1015C000E6EEF4E029E330E004C0E0E0F0E020E003
+:1015D00030E0ED93FC93C901089580E189BD82E17B
+:1015E00089BD09B400FEFDCF8091D8008F7D809326
+:1015F000D8008091E00082608093E0008091E0005C
+:1016000081FDFCCF08959C014091CC015091CD010A
+:101610004617570718F4F90190E043C061157105AA
+:1016200011F0AB01F8CF8091E8008E778093E8004D
+:1016300040E050E0F0CF8091C501882309F447C015
+:10164000853009F446C08091E80083FD44C0809154
+:10165000E80082FD36C08091E80080FF22C08091C2
+:10166000F3009091F200782F60E0292F30E0262BD4
+:10167000372B07C081918093F100415050402F5F7C
+:101680003F4F4115510519F02830310598F390E08E
+:101690002830310509F491E08091E8008E7780933D
+:1016A000E8004115510539F6992329F60AC08091C1
+:1016B000C501882361F0853061F08091E80083FDE9
+:1016C0000AC08091E80082FFF2CF80E0089582E0B6
+:1016D000089583E0089581E008959C014091CC0134
+:1016E0005091CD014617570718F4F90190E044C016
+:1016F0006115710511F0AB01F8CF8091E8008E778C
+:101700008093E80040E050E0F0CF8091C50188234D
+:1017100009F448C0853009F447C08091E80083FD92
+:1017200045C08091E80082FD37C08091E80080FFCD
+:1017300023C08091F3009091F200782F60E0292F70
+:1017400030E0262B372B08C084918093F10031962E
+:10175000415050402F5F3F4F4115510519F028303F
+:10176000310590F390E02830310509F491E0809143
+:10177000E8008E778093E8004115510531F69923F2
+:1017800021F60AC08091C501882361F0853061F09F
+:101790008091E80083FD0AC08091E80082FFF2CFCB
+:1017A00080E0089582E0089583E0089581E008953F
+:1017B000BF92CF92DF92EF92FF920F931F93CF933E
+:1017C000DF93182F092F7B016A010E94840CB82E29
+:1017D0008823B1F5812F902F9C01E901C114D10418
+:1017E00039F0F60180819181E81AF90AC80FD91FF2
+:1017F00000E010E022C08091E80085FD16C08091D5
+:10180000E8008E778093E800C114D10449F0F60116
+:1018100080819181800F911F9183808385E011C029
+:101820000E94840C882349F00CC089918093F100B8
+:101830000894E108F1080F5F1F4FE114F104D9F695
+:101840008B2DDF91CF911F910F91FF90EF90DF9043
+:10185000CF90BF900895382F282F2EC0822F8F70E1
+:101860008093E900231721F4762F942F50E006C0CF
+:101870007091EC009091ED005091F00091FF1BC031
+:101880008091EB008E7F8093EB008091ED008D7F47
+:101890008093ED008091EB0081608093EB0070936A
+:1018A000EC009093ED005093F0008091EE0087FDE6
+:1018B00002C080E008952F5F273080F23F703093A0
+:1018C000E90081E008958091C60188239CF404C05A
+:1018D0008091C5018823B9F08091E80082FFF8CF9C
+:1018E0008091E8008B778093E80008958091C5018E
+:1018F000882349F08091E80080FFF8CF8091E800CC
+:101900008E778093E80008954091E4005091E500BF
+:1019100024E68091EC0080FF24C08091E80080FDE7
+:101920001EC08091C501882311F482E0089585309E
+:1019300011F483E008958091EB0085FF02C081E0FF
+:1019400008958091E4009091E5008417950709F3CC
+:10195000222311F484E008952150AC01DACF80E015
+:1019600008958091E80082FFDCCFF9CF0E94290D15
+:101970000E94310DE0EEF0E0808181608083A8ED6F
+:10198000B0E08C918F778C9319BCE7EDF0E080810B
+:101990008E7F80838C918F7E8C931092C4010895EA
+:1019A000EF92FF920F931F930E94290D0E94310D19
+:1019B00008ED10E0F80180818F7780838081806856
+:1019C000808380818F7D808319BC1092C501109225
+:1019D000C1011092C3011092C20180EEE82EF12CD9
+:1019E000F70180818B7F8083F80180818160808313
+:1019F00080E060E042E00E942B0CE1EEF0E08081AC
+:101A00008E7F8083E2EEF0E0808181608083808140
+:101A100088608083F70180818E7F8083F8018081D8
+:101A2000806180831F910F91FF90EF900895E8ED02
+:101A3000F0E080818F7E8083E7EDF0E0808181603F
+:101A4000808384E082BF81E08093C4010E94D00C37
+:101A50000895E8EDF0E080818E7F80831092E200AF
+:101A600008951092DA001092E10008951F920F92EB
+:101A70000FB60F9211241F932F933F934F935F93B1
+:101A80006F937F938F939F93AF93BF93EF93FF9346
+:101A90001091E9008091EC001092E9008091F00033
+:101AA000877F8093F00078940E94440E1092E900A2
+:101AB0008091F00088608093F0001F701093E9001F
+:101AC000FF91EF91BF91AF919F918F917F916F9116
+:101AD0005F914F913F912F911F910F900FBE0F90EB
+:101AE0001F9018951F920F920FB60F9211242F93EB
+:101AF0003F934F935F936F937F938F939F93AF9396
+:101B0000BF93EF93FF938091E10082FF0BC0809120
+:101B1000E20082FF07C08091E1008B7F8093E100AB
+:101B20000E94B40F8091DA0080FF1FC08091D8001E
+:101B300080FF1BC08091DA008E7F8093DA00809155
+:101B4000D90080FF0DC080E189BD82E189BD09B463
+:101B500000FEFDCF81E08093C5010E949C0905C075
+:101B600019BC1092C5010E946D088091E10080FFB0
+:101B700019C08091E20080FF15C08091E2008E7F45
+:101B80008093E2008091E20080618093E200809186
+:101B9000D80080628093D80019BC85E08093C5018D
+:101BA0000E9471088091E10084FF30C08091E200C2
+:101BB00084FF2CC080E189BD82E189BD09B400FEAB
+:101BC000FDCF8091D8008F7D8093D8008091E10077
+:101BD0008F7E8093E1008091E2008F7E8093E2000F
+:101BE0008091E20081608093E2008091C1018823AE
+:101BF00011F084E007C08091E30087FD02C081E01E
+:101C000001C083E08093C5010E947D0A8091E100BC
+:101C100083FF29C08091E20083FF25C08091E1000D
+:101C2000877F8093E10082E08093C5011092C1011B
+:101C30008091E1008E7F8093E1008091E2008E7FB1
+:101C40008093E2008091E20080618093E20080E076
+:101C500060E042E00E942B0C8091F000886080934D
+:101C6000F0000E947008FF91EF91BF91AF919F919A
+:101C70008F917F916F915F914F913F912F910F9035
+:101C80000FBE0F901F9018951F93DF93CF93CDB782
+:101C9000DEB7AC970FB6F894DEBF0FBECDBFE6EC53
+:101CA000F1E08091F100819321E0EE3CF207C9F769
+:101CB0000E94AA098091E80083FF3EC18091C6017D
+:101CC0003091C701353009F487C0363040F43130E7
+:101CD000C9F1313070F0333009F02EC133C03830E3
+:101CE00009F4F9C0393009F409C1363009F024C1CA
+:101CF00097C0803821F0823809F01EC108C0909149
+:101D0000C2018091C301882399F0926011C0809133
+:101D1000CA018F708093E9008091EB0090E025E08C
+:101D2000969587952A95E1F7982F91701092E90082
+:101D30008091E800877F8093E8009093F1001092F3
+:101D4000F100D4C0882319F0823009F0F5C090E08A
+:101D50008F719070009721F0029709F0EDC00CC0D0
+:101D60008091C801813009F0E7C01092C30133307F
+:101D700069F58093C3012AC08091C801882331F599
+:101D80002091CA012F7009F4D7C02093E9008091F7
+:101D9000EB0080FF1BC0333021F48091EB008062A8
+:101DA00013C08091EB0080618093EB0081E090E0B4
+:101DB00002C0880F991F2A95E2F78093EA001092DB
+:101DC000EA008091EB0088608093EB001092E900BC
+:101DD0008091E800877F8DC0882309F0ADC0109105
+:101DE000C8011F778091E3008078812B8093E30006
+:101DF0008091E800877F8093E8000E94630C8091C7
+:101E0000E80080FFFCCF8091E30080688093E300CE
+:101E1000112311F482E001C083E08093C5018CC0DE
+:101E20008058823008F088C08091C8019091C90123
+:101E300023E08C3D920709F034C083E08C838AE272
+:101E40008B837FB7F894DE0115966EE040E050E09A
+:101E500011E2E62FF0E010935700849140FF03C099
+:101E600082958F706F5F8F70282F30E08A3018F066
+:101E7000C901C79602C0C901C0968D939D934F5F5B
+:101E80005F4F4431510529F77FBF8091E800877F7C
+:101E90008093E800CE0103966AE270E00E94030B93
+:101EA00014C06091CA01AE014F5F5F4F0E94800A6B
+:101EB000BC01009709F440C08091E800877F8093BF
+:101EC000E80089819A810E946D0B8091E8008B77F0
+:101ED0008093E80031C0803879F58091E800877FF1
+:101EE0008093E8008091C1018093F1008091E80027
+:101EF0008E778093E8000E94630C1EC08823E1F473
+:101F00009091C8019230C0F48091E800877F80935F
+:101F1000E8009093C1010E94630C8091C101882365
+:101F200031F48091E30087FD02C081E001C084E0CC
+:101F30008093C5010E94680A8091E80083FF0AC06F
+:101F40008091E800877F8093E8008091EB008062B9
+:101F50008093EB00AC960FB6F894DEBF0FBECDBFFA
+:101F6000CF91DF911F91089508951F938091C5012E
+:101F7000882379F01091E9008091EC001092E9003B
+:101F80008091E80083FF02C00E94440E1F701093EE
+:101F9000E9001F91089590934B0180934A010895A1
+:101FA000E0914A01F0914B01309711F480E00895DF
+:101FB0000190F081E02D09950895E0914A01F0919A
+:101FC0004B01309721F00280F381E02D09950895AF
+:101FD000E0914A01F0914B01309721F00480F581A6
+:101FE000E02D099508959C01809148019091490147
+:101FF0002817390779F03093490120934801E0917F
+:102000004A01F0914B01309729F00680F781E02DCD
+:10201000C901099508959C0180914601909147015D
+:102020002817390779F03093470120934601E09152
+:102030004A01F0914B01309729F00084F185E02DA1
+:10204000C9010995089508950E94231008950E94DA
+:102050006C080895BF92CF92DF92EF92FF920F9398
+:102060001F93DF93CF93CDB7DEB72A970FB6F894BF
+:10207000DEBF0FBECDBF0E945405EE24FF24BE2C50
+:102080008E2D0E940405C82EF701E35BFE4FD08021
+:10209000D82609F43FC08091AE0181FF02C00E94A2
+:1020A0000A0500E010E0ED2DF0E0CF01002E02C0A7
+:1020B000959587950A94E2F780FF27C00E94DF1B61
+:1020C0000983BA826C2D70E0002E02C07595679569
+:1020D0000A94E2F7617070706B8381609D838C83DA
+:1020E000402F5B2D782F8D810E949514F701E35BC3
+:1020F000FE4F81E090E0002E02C0880F991F0A94E5
+:10210000E2F72081282720831DC00F5F1F4F063074
+:10211000110559F60894E11CF11C8EE0E816F10453
+:1021200009F0ADCF0E94DF1B2FEF2E832F8318867F
+:102130008160782F9A8789874FEF5FEF60E08A850B
+:102140000E9495140E94B41F10914C010E94D00F60
+:10215000181731F00E94D00F80934C010E94271075
+:102160002A960FB6F894DEBF0FBECDBFCF91DF9198
+:102170001F910F91FF90EF90DF90CF90BF90089547
+:102180000E94D61B0E9433050E949C1C0895DF9379
+:10219000CF9300D000D00F92CDB7DEB70F900F9045
+:1021A0000F900F900F90CF91DF910895DF93CF9311
+:1021B00000D000D000D0CDB7DEB726960FB6F89489
+:1021C000DEBF0FBECDBFCF91DF9108950E940C19E5
+:1021D000482F892F82958F70282F30E02C303105C1
+:1021E0004CF42A3031056CF4225030402230310555
+:1021F000C0F407C02C30310551F02F30310589F47F
+:1022000006C0403E10F0403F61F481E008959F70A9
+:10221000892F90E023E0969587952A95E1F78170C4
+:10222000089580E008950E94E01A0E94B51A0E9465
+:10223000F81A0E949D1F0E94A91F80E090E00E9452
+:10224000F30F80E090E00E940B1008950E94D01AD6
+:102250000E9413110895882321F00E94C91A0E9438
+:10226000F81A0895882321F00E94C31A0E94F81AD0
+:102270000895282F882309F44EC0823859F40E940B
+:10228000D00F81FF48C089E30E94431A0E94F81AC8
+:1022900089E30CC0833869F40E94D00F80FF3BC0F3
+:1022A00083E50E94431A0E94F81A83E50E94811A6E
+:1022B0001FC0843859F40E94D00F82FF2CC087E4DD
+:1022C0000E94431A0E94F81A87E4F0CF8450813AA2
+:1022D00010F4822FEBCF822F805E883060F427705D
+:1022E00081E090E001C0880F2A95EAF70E94C91AA0
+:1022F0000E94F81A0895822F855A833028F480E0CE
+:1023000090E00E94F30F0895285A233120F480E0D2
+:1023100090E00E940B1008951F93182F882309F452
+:10232000D0C0823859F40E94D00F81FDCAC089E321
+:102330000E94431A0E94F81A89E30CC0833879F48A
+:102340000E94D00F80FDBDC083E50E94431A0E9409
+:10235000F81A83E50E94811A0E94F81AB2C08438E4
+:1023600059F40E94D00F82FDACC087E40E94431A4A
+:102370000E94F81A87E4EECF8450813A50F4812FFE
+:102380000E94DE21882309F09CC0812F0E94431AFD
+:10239000E3CF812F805E883050F4177081E090E0A9
+:1023A00001C0880F1A95EAF70E94C31AD5CF812F72
+:1023B000855A8330A0F4153A19F481E890E00CC0F6
+:1023C000163A19F482E890E007C0173A19F080E055
+:1023D00090E002C083E890E00E94F30F72C0812F6A
+:1023E000885A833108F06DC0183A19F482EE90E0F3
+:1023F00066C0193A19F489EE90E061C01A3A19F4EE
+:102400008AEE90E05CC01B3A19F485EB90E057C06F
+:102410001C3A19F486EB90E052C01B3B19F483EB95
+:1024200090E04DC01C3B19F484EB90E048C01D3A8D
+:1024300019F487EB90E043C0103B19F48CEC90E06A
+:102440003EC01E3A19F48DEC90E039C01F3A19F4E1
+:1024500083E891E034C0113B19F48AE891E02FC081
+:10246000123B19F482E991E02AC0133B19F484E984
+:1024700091E025C0143B19F481E292E020C0153BA5
+:1024800019F483E292E01BC0163B19F484E292E057
+:1024900016C0173B19F485E292E011C0183B19F4FD
+:1024A00086E292E00CC0193B19F487E292E007C083
+:1024B0001A3B19F080E090E002C08AE292E00E94AC
+:1024C0000B101F910895AF92BF92CF92DF92EF92BF
+:1024D000FF920F931F93DF93CF93CDB7DEB72A9769
+:1024E0000FB6F894DEBF0FBECDBF5C01DE011196C2
+:1024F000FC0185E001900D928150E1F70B81F5011F
+:10250000F580F2944FE0F422DE011696FE0131963A
+:1025100085E001900D928150E1F73E812F81898500
+:102520009A85892B09F4F0C12F3F09F0C0C13F3FC4
+:1025300009F0BDC1E9C18D2D8F70222311F4182F30
+:1025400003C0182F1295107F002349F0112309F4BE
+:1025500088C1812F0E94D31A0E94F81A82C18C2D43
+:102560000E943911112309F4CFC1812F0E94D91A79
+:102570000E94F81AC9C18D2D8F70203211F4182FC6
+:1025800003C0182F1295107FCC2021F0F1E0CF1658
+:1025900011F516C0002359F0FF2009F431C121E0E4
+:1025A000F21609F02DC1812F0E94E31AADC1FF2060
+:1025B00021F081E0F81609F4A7C10E94E61A26C1AD
+:1025C000002329F0E1E0EF1508F49EC119C1FF20B6
+:1025D00009F09AC11BC1002321F0FF2009F410C1AA
+:1025E00040C1FF2009F412C147C18D2D8695869503
+:1025F000837090E0009721F0019709F085C10AC02F
+:10260000002319F0C601937002C080E090E00E94A0
+:10261000F30F7AC1002319F0C601937002C080E065
+:1026200090E00E940B1070C1002321F08C2D0E94BD
+:10263000AB1E03C08C2D0E94151F0E94A91F64C1F0
+:102640008D2D837009F05EC0002309F05DC12C2D33
+:10265000229526952770220F220F8C2D8F70E82E41
+:10266000FF2400E010E0022E04C0EE0CFF1C001F4F
+:10267000111F0A94D2F7C4FC05C060E070E080E04E
+:1026800090E00FC06FE070E080E090E004C0660F63
+:10269000771F881F991F2A95D2F7609570958095AE
+:1026A0009095D694D694F3E0DF224D2D50E0413042
+:1026B0005105A9F0423051051CF4452B49F024C1C5
+:1026C0004230510589F04330510509F01DC113C056
+:1026D0006E297F29802B912B0E941E1A15C16E290D
+:1026E0007F29802B912B0BC06E297F29802B912B6A
+:1026F0000E940D1A09C10E941E1AC801B7010E944A
+:102700002F1A02C190E0002311F4969587958170ED
+:1027100009F4FAC02C2D229526952770220F220F3E
+:102720008C2D8F70E82EFF2400E010E0022E04C0F4
+:10273000EE0CFF1C001F111F0A94D2F7C4FC05C049
+:1027400060E070E080E090E00FC06FE070E080E05B
+:1027500090E004C0660F771F881F991F2A95D2F753
+:102760006095709580959095D694D69423E0D2226A
+:102770004D2D50E041305105A9F0423051051CF477
+:10278000452B49F0C1C04230510589F04330510515
+:1027900009F0BAC013C06E297F29802B912B0E94AB
+:1027A0007119B2C06E297F29802B912B0BC06E2925
+:1027B0007F29802B912B0E946019A6C00E9471195D
+:1027C000C801B7010E9482199FC080EFC81611F19D
+:1027D0008C1528F0E0EECE1608F43FC009C0F2EFE9
+:1027E000CF1661F1CF1628F123EFC216B1F52BC039
+:1027F0001C2D1F708D2D8F71002331F00E94CF1979
+:10280000812F0E94321180C00E94AF19812F0E9437
+:102810002B117AC0002321F0FF2009F075C004C0FD
+:1028200081E08F1508F470C08D2D8F710E9493196F
+:102830006BC08D2D8F71002329F119C08D2D8F71E3
+:102840000023A9F01FC0002329F08D2D8F710E9455
+:10285000EB195AC00E94FB1957C0002359F0FF2002
+:1028600021F08C2D0E948C114FC08D2D8F710E94F4
+:10287000CF194AC0FF2021F08C2D0E94391144C08D
+:102880008D2D8F710E94AF193FC0EFE0DE22C50190
+:102890006C2D4D2D0E942F030E94911835C0FFE032
+:1028A000DF22C5016C2D4D2D0E9453062DC089815C
+:1028B0009A810E940C196C010E940B190E940A193E
+:1028C0008D2D82958F7090E08530910509F4ACCE06
+:1028D0008630910554F4843091050CF086CE2D2D70
+:1028E000207F02970CF047CE26CE8C3091053CF429
+:1028F0008A3091050CF069CF089731F4A1CE8C3065
+:10290000910519F20F9759F22A960FB6F894DEBF87
+:102910000FBECDBFCF91DF911F910F91FF90EF9030
+:10292000DF90CF90BF90AF900895DF93CF93CDB756
+:10293000DEB72B970FB6F894DEBF0FBECDBF342F96
+:102940004F83252F588769877A878B87472F582F82
+:10295000FE01319686E0DF011D928A95E9F76B83CF
+:1029600039832A834C835D83432F522F8D819E812F
+:102970000E94D2172B960FB6F894DEBF0FBECDBFC4
+:10298000CF91DF9108950F931F930091620115C0BD
+:1029900010E0F801EE0FFF1FE00FF11FEE0FFF1F19
+:1029A000ED59FE4F4081518162817381848195810F
+:1029B0000E94D6100F5F1F4F0770809161010817AA
+:1029C00039F71F910F91089540915B0150915C017F
+:1029D00060915D0170915E0180915F019091600155
+:1029E0000E94D61008950F931F93CF93DF93809189
+:1029F000600182958F7009F06DC080915D01882320
+:102A000009F468C0609162010091610140915E012A
+:102A100050915F0110915C0170915B01EA01C095DA
+:102A2000D09555C04115510509F44FC01F3F49F4D9
+:102A300080E090E07F3F11F481E090E0882309F08E
+:102A400044C0262F30E0F901EE0FFF1FE20FF31F05
+:102A5000DF01AA0FBB1FAD59BE4F11968C91119784
+:102A6000181799F58C91781781F5EE0FFF1FEB5928
+:102A7000FE4F8081882349F513968D919C91149780
+:102A80008417950718F0841B950B02C08C0F9D1FAF
+:102A9000883C9105D0F4809160018F7080618093B3
+:102AA0006001F901EE0FFF1FE20FF31FEE0FFF1F92
+:102AB000E859FE4F80818F70806180838BE591E0C3
+:102AC0000E9463120E94C31405C06F5F6770601795
+:102AD00009F0A8CFDF91CF911F910F910895DF9258
+:102AE000EF92FF920F931F93DF93CF93CDB7DEB793
+:102AF0006B970FB6F894DEBF0FBECDBF8C01DC0123
+:102B00001296DC9012974C9111965C911197139646
+:102B1000ED90FC90149720915E0130915F016091DF
+:102B20005C0170915B012115310509F4DBC16F3F38
+:102B300009F003C27F3F09F000C2D4C1E216F306D8
+:102B400040F0C701821B930B883C910508F0EEC052
+:102B500008C0209530952E0D3F1D283C310508F00A
+:102B6000E5C080916001807F09F095C06F3F09F05A
+:102B7000EAC17F3F09F0E7C115C0741799F4DD2061
+:102B800089F4809160018F708061809360010E9460
+:102B9000E4148BE591E00E94631280916001F801DA
+:102BA0008583BCC1FD82EC825A834983DB82DE01CE
+:102BB0001696FE01319685E001900D928150E1F765
+:102BC0006885DE011B96FE01369685E001900D9228
+:102BD0008150E1F72C853B858E859F85892B09F4F3
+:102BE00051C02F3F09F0B3C13F3F09F0B0C14AC007
+:102BF000FD82EC825A834983DB82DE011B96FE0153
+:102C0000319685E001900D928150E1F7FC847B853F
+:102C10006D8580916201909161011FC0282F30E085
+:102C2000F901EE0FFF1FE20FF31FDF01AA0FBB1F19
+:102C3000AD59BE4F11968C911197F81651F48C91A5
+:102C4000781739F4EE0FFF1FEB59FE4F808168179C
+:102C5000C9F42F5F3F4F822F87708917F9F68DC116
+:102C60009F7059F0442349F459C19F7031F0D80145
+:102C700015968C91807F09F451C1405E483008F46C
+:102C80004DC148C1DD2009F449C1809160018160D6
+:102C90008093600143C16F3F09F05DC17F3F09F040
+:102CA0005AC114C0741791F4DD2081F48091600141
+:102CB000F8018583C8010E946312ABE5B1E0F80119
+:102CC00086E001900D928150E1F720C15A8349833B
+:102CD00089819A810E94E610882309F41BC1DD20B6
+:102CE00009F418C130916001832F82958F7090E0B4
+:102CF00002979CF090915C0120915B01FE0170961F
+:102D000086E0DF011D928A95E9F7998B288BFC8A72
+:102D1000EB8A3D8BCF010E946312ABE5B1E0F80175
+:102D200086E001900D928150E1F7EEC08091600144
+:102D3000807FA9F47E2DFD82EC825A834983DB8259
+:102D40006D2D8D810E94C7100BE511E0C8010E9416
+:102D5000631286E0F80111928A95E9F7C0C06F3FCF
+:102D600009F0FDC07F3F09F0FAC014C0741791F458
+:102D7000DD2081F480916001D80115968C93C80103
+:102D80000E946312EBE5F1E086E0DF011D928A9577
+:102D9000E9F7BEC05A83498389819A810E94E6106F
+:102DA000882309F4B7C0DD2009F4B4C03091600174
+:102DB000832F82958F7090E002979CF090915C0138
+:102DC00020915B01FE01769686E0DF011D928A95D7
+:102DD000E9F79F8B2E8BFA8EE98E3B8FCF010E94F5
+:102DE0006312ABE5B1E0F80186E001900D928150ED
+:102DF000E1F78AC06F3F09F0B6C07F3F09F0B3C06A
+:102E000071C0E216F30640F0C701821B930B883CA9
+:102E1000910508F053C008C0209530952E0D3F1D38
+:102E2000283C310508F04AC0DD2009F473C06F3F2B
+:102E300009F09FC07F3F09F09CC029C0741739F585
+:102E40009091600190FD1AC0892F82958F70B1F02A
+:102E5000F80195838F3031F08F5F8295807F9F706E
+:102E6000982B9583C8010E946312ABE5B1E0F8018D
+:102E700086E001900D928150E1F748C0ABE5B1E0EA
+:102E8000F80186E001900D928150E1F741C05A832C
+:102E9000498389819A810E94E610882349F0ABE535
+:102EA000B1E0F80186E001900D928150E1F72CC06D
+:102EB000809160018160809360012CC07E2DFD8235
+:102EC000EC825A834983DB826D2D8D810E94C7106D
+:102ED000EBE5F1E086E0DF011D928A95E9F70E94BB
+:102EE000E4141CC0DD20B1F05A83498389819A81A2
+:102EF0000E94E610882371F0ABE5B1E0F80186E0AE
+:102F000001900D928150E1F70E94F3140E94E414A5
+:102F100081E005C0C8010E946312FACF80E06B9681
+:102F20000FB6F894DEBF0FBECDBFCF91DF911F91DA
+:102F30000F91FF90EF90DF90089580915D018823BD
+:102F400009F458CFFBCD651709F02CCE16CE6130B1
+:102F500009F498CE4DCE651709F0B8CEA3CE65170B
+:102F600009F018CF03CF80915D01882309F0BACF13
+:102F700048CF651709F08BCF61CF5A834983898188
+:102F80009A810E940C19482F892F82958F70282FC3
+:102F900030E0223031050CF463CE243031050CF0E2
+:102FA000B9CF63CE0F931F93DF93CF93CDB7DEB727
+:102FB0002C970FB6F894DEBF0FBECDBF4F83588756
+:102FC00069877A878B879C878E01095F1F4FC801AD
+:102FD0000E946F158823D9F028853F818A859B85BB
+:102FE000892B09F46BC02F3F49F480E090E03F3F0C
+:102FF00011F481E090E0882309F060C04F8158858A
+:1030000069857A858B859C850E94D61057C0DE0124
+:103010001196F80186E001900D928150E1F7F98157
+:10302000EA814C815D814115510509F447C0EF3FAC
+:1030300009F04CC0FF3F09F049C040C0F983EA8362
+:103040005D834C83F901EE0FFF1FE20FF31FEE0FBC
+:10305000FF1FED59FE4FDE01119686E00D900192A3
+:103060008150E1F7609361010E94C31427C0919FD2
+:10307000C00111248D599E4F0E946F15882309F4B9
+:1030800045C08091620190E0FC01EE0FFF1FE80F48
+:10309000F91FEE0FFF1FED59FE4F408151816281F4
+:1030A0007381848195810E94D6108091620190E0A5
+:1030B0000196877090708093620101C016E0909134
+:1030C000620180916101981791F620C080916101A1
+:1030D000282F30E02F5F3F4FB9016770707021508B
+:1030E00030408091620190E06817790709F0A6CF1F
+:1030F0000E9426111092610110926201EBE5F1E04D
+:1031000086E0DF011D928A95E9F7D8CF2C960FB69D
+:10311000F894DEBF0FBECDBFCF91DF911F910F910D
+:103120000895CF92DF92EF92FF921F93CF93DF9398
+:10313000EC01009709F466C010E090EAC92E9FE008
+:10314000D92E81E0E82EF12CFE012196949194373E
+:1031500048F4943008F044C0913079F0923009F08E
+:1031600051C01BC0953709F437C0953750F1892FEE
+:103170008458803708F046C037C0FE0121969491EC
+:10318000892F805E883060F597708E2D01C0880F82
+:103190009A95EAF70E94D31A0FC0FE0121969491E6
+:1031A000892F805E883058F497708E2D01C0880F6B
+:1031B0009A95EAF70E94D91A0E94F81A19C0892F25
+:1031C00015C0FE01249104C0C6010197F1F72150FA
+:1031D0002223D1F721960CC0FE012196149108C03C
+:1031E000892F0E948C1104C0892F8F770E9439117A
+:1031F000212F04C0C6010197F1F72150222309F4C1
+:10320000A3CFF8CFDF91CF911F91FF90EF90DF9088
+:10321000CF90089508950895CF92DF92EF92FF9294
+:103220000F931F93CF93DF936C01E0909301F09085
+:1032300094010091950110919601809197019091D0
+:103240009801A0919901B0919A01E82AF92A0A2BD4
+:103250001B2BCFE1D0E0D801C7010C2E04C0B695DE
+:10326000A795979587950A94D2F781709070892BCE
+:1032700041F08C2FB6010E942B079C0181309105F3
+:1032800051F421978FEFCF3FD80729F780E0B6019F
+:103290000E942B079C01822FDF91CF911F910F91EC
+:1032A000FF90EF90DF90CF90089560939701709317
+:1032B00098018093990190939A010E9413110895A7
+:1032C0009B01AC01609197017091980180919901E7
+:1032D00090919A0162277327842795270E94551998
+:1032E00008959B01AC0160919701709198018091C4
+:1032F000990190919A0162237323842395230E945C
+:10330000551908959B01AC01609197017091980146
+:103310008091990190919A01622B732B842B952BAC
+:103320000E945519089521E030E040E050E004C0CB
+:10333000220F331F441F551F8A95D2F780919701A2
+:1033400090919801A0919901B0919A01282739276D
+:103350004A275B27CA01B9010E945519089521E047
+:1033600030E040E050E004C0220F331F441F551FDF
+:103370008A95D2F720953095409550958091970188
+:1033800090919801A0919901B0919A012823392335
+:103390004A235B23CA01B9010E945519089521E00F
+:1033A00030E040E050E004C0220F331F441F551F9F
+:1033B0008A95D2F78091970190919801A0919901F7
+:1033C000B0919A01282B392B4A2B5B2BCA01B901EA
+:1033D0000E945519089521E030E040E050E004C01B
+:1033E000220F331F441F551F8A95D2F7CA01B90116
+:1033F0000E945519089560E070E080E090E00E941E
+:1034000055190895609393017093940180939501E9
+:10341000909396010E94131108959B01AC01609155
+:10342000930170919401809195019091960162278A
+:103430007327842795270E94021A08959B01AC01E7
+:103440006091930170919401809195019091960102
+:1034500062237323842395230E94021A08959B01FB
+:10346000AC016091930170919401809195019091CC
+:103470009601622B732B842B952B0E94021A0895C0
+:103480000E94021A0895382F809102018823E1F0EA
+:1034900080910D018823C1F0832F869586958695AE
+:1034A0008F3070F5E0910E01F0910F01E80FF11DE2
+:1034B000377081E090E002C0880F991F3A95E2F7DB
+:1034C0002181282B21830895A0910E01B0910F0135
+:1034D000FD0120E08FEF9281931791F08F3F19F457
+:1034E000992309F4822F2F5F31962E30A1F78F3F59
+:1034F00039F0992787FD9095A80FB91F12963C9334
+:103500000895482F809102018823E9F080910D01F0
+:103510008823C9F0842F8695869586958F3020F56F
+:10352000E0910E01F0910F01E80FF11D477081E06D
+:1035300090E002C0880F991F4A95E2F7809521819B
+:1035400082238183089520E030E0E0910E01F09124
+:103550000F01E20FF31F8281841709F412822F5F9B
+:103560003F4F2E30310589F7089581E090E0E091DA
+:103570000E01F0910F01E80FF91F108201968031C2
+:103580009105A9F708959091AB01982B9093AB0109
+:10359000089580959091AB0198239093AB01089585
+:1035A0001092AB0108959091AD01982B9093AD01CD
+:1035B000089580959091AD0198239093AD01089561
+:1035C0001092AD0108958093AC0108951092AC0162
+:1035D0000895E0910E01F0910F0120E091E08181CA
+:1035E00081112F5F9F5F31969031C9F7822F089527
+:1035F000E0910E01F0910F018091AB018083E09189
+:103600000E01F0910F0180819091AD01892B808393
+:103610009091AC01992369F0E0910E01F0910F01B6
+:103620008081892B80830E94E91A882311F00E94EF
+:10363000E61A80910E0190910F010E94DD0F08950E
+:103640009B01AC01AA27BB270097A105B10521F476
+:10365000DA01C90160E001C060E1292F3A2F4B2F48
+:103660005527211531054105510519F49C01AD017E
+:1036700001C0685FDA01C90174E0B695A795979516
+:1036800087957A95D1F70097A105B10519F4DA016C
+:10369000C90101C06C5F9C01AD01F2E056954795F0
+:1036A00037952795FA95D1F7211531054105510533
+:1036B00019F49C01AD0101C06E5F56954795379591
+:1036C0002795211531054105510509F06F5F862FBA
+:1036D00008958091C501843009F11092AF0120E472
+:1036E00088E190E00FB6F894A895809360000FBE33
+:1036F0002093600083B7817F846083BF83B781603C
+:1037000083BF7894889583B78E7F83BF88E10FB697
+:10371000F89480936000109260000FBE08950895A1
+:1037200008951F920F920FB60F9211248F939F93BB
+:10373000AF93BF938091AF01882399F48091B0013A
+:103740009091B101A091B201B091B3014196A11D38
+:10375000B11D8093B0019093B101A093B201B093D9
+:10376000B301BF91AF919F918F910F900FBE0F90BA
+:103770001F9018950E9426110E94D00F0E946C087D
+:1037800008951F930E948F1B0E9454050E94901B56
+:1037900010E0812F0E940405882311F081E004C00D
+:1037A0001F5F1E30B1F780E01F91089582E084BD55
+:1037B00093E095BD9AEF97BD80936E0008958FB703
+:1037C000F8942091B0013091B1014091B201509133
+:1037D000B3018FBFC9010895EF92FF920F931F931A
+:1037E000BC018FB7F894E090B001F090B101009166
+:1037F000B2011091B3018FBFA801970140705070C2
+:10380000CB01A0E0B0E0281739074A075B0720F09A
+:103810009701261B370B05C09B01209530952E0D77
+:103820003F1DC9011F910F91FF90EF9008951F92C6
+:103830000F920FB60F9211248F939F93AF93BF9364
+:103840008091B0019091B101A091B201B091B3010A
+:103850000196A11DB11D8093B0019093B101A09379
+:10386000B201B093B301BF91AF919F918F910F902F
+:103870000FBE0F901F9018950E94B60CF89480E22E
+:103880009EE420E931E0F9013197F1F70197D9F78A
+:1038900087E090EBA7E0B0EB8093CE019093CF014F
+:1038A000A093D001B093D1012CE088E190E00FB655
+:1038B000F894A895809360000FBE20936000FFCF1E
+:1038C000EF92FF920F931F93CF93DF93082F10E097
+:1038D000812F0E940405C0E0D0E0E82EFF24C7013C
+:1038E0000C2E02C0959587950A94E2F780FF09C0D7
+:1038F00080E06C2F712F0E940307081711F481E0FC
+:1039000008C02196C630D10551F71F5F1E3001F760
+:1039100080E0DF91CF911F910F91FF90EF9008957C
+:103920001F93182F8CE20E94601C882319F0812FAE
+:103930000E94601C1F9108951F93CF93DF930E94F4
+:103940000A1E882311F40E94151E14E6C0E4DCE967
+:1039500005C00E945405CE010197F1F71150C8F738
+:1039600089E20E94901C882309F02FC18AE20E94FC
+:10397000901C882311F00E94151E85E00E94901C67
+:10398000882311F00E943C1C0E94051E8093AE010A
+:1039900087E00E94901C8823B9F18BE10E94901C63
+:1039A000882349F09091AE01892F8695809581708A
+:1039B000880F9D7F26C08EE00E94901C882359F0BE
+:1039C0009091AE01892F8695869580958170880F9C
+:1039D000880F9B7F16C080E10E94901C9091AE01E1
+:1039E000882359F0892F86958695869580958170D4
+:1039F000880F880F880F977F04C0892F809581706A
+:103A00009E7F982B9093AE018091AE010E94F51D90
+:103A10000E94FB1D8093BF0180EE0E94901C8823B2
+:103A200049F08091BF01982F909591708E7F892BDE
+:103A30008093BF0189E30E94901C882359F09091E4
+:103A4000BF01892F869580958170880F9D7F982B67
+:103A50009093BF0182EE0E94901C882369F09091A0
+:103A6000BF01892F8695869580958170880F880F74
+:103A70009B7F982B9093BF0186EE0E94901C882319
+:103A800079F09091BF01892F8695869586958095CE
+:103A90008170880F880F880F977F982B9093BF01B4
+:103AA00083EE0E94901C882369F09091BF01892FBA
+:103AB00082958F70809581708295807F9F7E982BF4
+:103AC0009093BF0185E30E94901C882379F0909128
+:103AD000BF01892F82958695877080958170829528
+:103AE000880F807E9F7D982B9093BF0181E30E9479
+:103AF000901C882389F09091BF01892F829586952B
+:103B000086958370809581708295880F880F807C60
+:103B10009F7B982B9093BF0181E10E94901C88238A
+:103B200079F08091BF01982F991F9927991F21E063
+:103B300092279795992797958F77892B8093BF0127
+:103B40008091BF010E94E91D8091BF01881F8827D5
+:103B5000881F80930D0187E20E94901C182F8EE130
+:103B60000E94901C811112608FE10E94901C8111B3
+:103B7000146080E20E94901C8111186081E20E9412
+:103B8000901C8111106182E20E94901C81111062D0
+:103B900083E20E94901C8111106484E20E94901CB8
+:103BA00081111068112341F0812F0E94EF1D612FB8
+:103BB00070E080E090E007C00E94001E90E0A0E06E
+:103BC000B0E0BC01CD010E94401ADF91CF911F915E
+:103BD0000895682F84E090E00E9404240895682FDF
+:103BE00083E090E00E9404240895682F82E090E032
+:103BF0000E940424089584E090E00E94F623089532
+:103C000083E090E00E94F623089582E090E00E9415
+:103C1000F623089580E090E00E94FE2320E08D5E70
+:103C20009E4F09F421E0822F089580E090E06DEE30
+:103C30007EEF0E94122482E090E060E00E94042463
+:103C400083E090E060E00E94042484E090E060E083
+:103C50000E94042485E090E060E00E94042408951E
+:103C60008091BA0180FF0BC09091120185E0989F6E
+:103C7000C0011124959587959595879530C081FF52
+:103C800009C09091120185E0989FC001112495957B
+:103C9000879525C082FF03C0909112010DC08091CD
+:103CA000B901882319F485E090E00895609113012B
+:103CB00090911201861728F085E0989FC001112489
+:103CC0000EC0899F90011124C901880F991F880F88
+:103CD000991F820F931F70E00E94CF23CB01803881
+:103CE000910510F08FE70895009709F481E0089599
+:103CF0008091BA0180FF05C0809114018695869558
+:103D000018C081FF04C080911401869512C082FF03
+:103D100003C0809114010DC02091B901222319F430
+:103D200081E090E0089560911501809114012617BB
+:103D300010F090E007C0289FC001112470E00E949D
+:103D4000CF23CB018038910510F08FE708950097BD
+:103D500009F481E00895803F21F40E94301E81958E
+:103D600004C0813F29F40E94301E8093B60108955B
+:103D7000823F21F40E94301E819504C0833F29F4C4
+:103D80000E94301E8093B5010895893F19F40E9466
+:103D9000781E05C08A3F31F40E94781E8195809379
+:103DA000B70108958B3F21F40E94781E819504C0CD
+:103DB0008C3F29F40E94781E8093B8010895843FB7
+:103DC00021F48091B401816017C0853F21F4809176
+:103DD000B401826011C0863F21F48091B4018460F7
+:103DE0000BC0873F21F48091B401886005C0883FF3
+:103DF00031F48091B40180618093B40108958D3FC6
+:103E000021F48091BA01816005C08E3F31F4809128
+:103E1000BA0182608093BA0108958F3F29F480919E
+:103E2000BA0184608093BA010895803F29F480919B
+:103E3000B60187FF6FC007C0813F41F48091B60192
+:103E400018160CF067C01092B60164C0823F29F4C6
+:103E50008091B50187FF5EC007C0833F41F4809128
+:103E6000B50118160CF056C01092B50153C0893F29
+:103E700029F48091B70118163CF04CC08A3F39F400
+:103E80008091B70187FF46C01092B70143C08B3FB6
+:103E900029F48091B80187FF3DC006C08C3F39F4FA
+:103EA0008091B8011816B4F51092B80133C0843F60
+:103EB00021F48091B4018E7F05C0853F31F480915B
+:103EC000B4018D7F8093B40125C0863F21F4809199
+:103ED000B4018B7FF7CF873F21F48091B401877FB6
+:103EE000F1CF883F21F48091B4018F7EEBCF8D3FDD
+:103EF00021F48091BA018E7F0BC08E3F21F4809116
+:103F0000BA018D7F05C08F3F29F48091BA018B7F64
+:103F10008093BA018091B501882371F48091B60134
+:103F2000882351F48091B701882331F48091B8013E
+:103F3000882311F41092B9010895E4EBF1E085E0D3
+:103F4000DF011D928A95E9F71092B9011092BA012A
+:103F5000089584EB91E00E94E80F0E94DF1B90938C
+:103F6000BC018093BB0108951F938091BB01909188
+:103F7000BC010E94EC1BAC012091B901222321F06D
+:103F80008091110190E006C0909110018AE0989F05
+:103F9000C00111244817590708F485C09091B50154
+:103FA000992369F48091B601882349F48091B7017F
+:103FB000882329F48091B801882309F474C02F3F25
+:103FC00019F02F5F2093B901191624F40E94301EB6
+:103FD0008093B5018091B50187FF05C00E94301E16
+:103FE00081958093B5018091B601181624F40E9442
+:103FF000301E8093B6018091B60187FF05C00E94F4
+:10400000301E81958093B6016091B501662339F128
+:104010001091B601112319F1772767FD7095872F4D
+:10402000972F0E94E02223E333E343E35FE30E9400
+:1040300044230E94AD226093B501612F772767FD6D
+:104040007095872F972F0E94E02223E333E343E309
+:104050005FE30E9444230E94AD226093B6018091E9
+:10406000B701181624F40E94781E8093B70180913E
+:10407000B70187FF05C00E94781E81958093B70124
+:104080008091B801181624F40E94781E8093B8011C
+:104090008091B80187FF05C00E94781E81958093AA
+:1040A000B8010E94A91F1F91089580E0089580E043
+:1040B0000895833099F1843030F4813069F0823092
+:1040C00009F06FC01AC0853009F44AC08530B8F1D4
+:1040D000863009F066C055C020911001822F90E013
+:1040E000860F911D8F3F910520F4260F209310011C
+:1040F00008958FEF80931001089520911101822F70
+:1041000090E0860F911D8F3F910520F4260F20939C
+:10411000110108958FEF80931101089520911201EC
+:10412000822F90E0860F911D8F3F910520F4260F7E
+:104130002093120108958FEF80931201089520912A
+:104140001301822F90E0860F911D8F3F910520F47F
+:10415000260F2093130108958FEF80931301089584
+:1041600020911401822F90E0860F911D8F3F9105C1
+:1041700020F4260F2093140108958FEF80931401EB
+:10418000089520911501822F90E0860F911D8F3F99
+:10419000910520F4260F2093150108958FEF809349
+:1041A00015010895833031F1843030F4813061F0AD
+:1041B000823009F04AC013C0853091F1853028F172
+:1041C000863009F042C037C080911001681720F492
+:1041D000861B80931001089510921001089580911C
+:1041E0001101681720F4861B809311010895109225
+:1041F0001101089580911201681720F4861B8093A5
+:104200001201089510921201089580911301681708
+:1042100020F4861B809313010895109213010895D2
+:1042200080911401681720F4861B8093140108956F
+:1042300010921401089580911501681720F4861BCF
+:1042400080931501089510921501089521E030E042
+:1042500040E050E004C0220F331F441F551F8A95D1
+:10426000D2F7CA01B9010E94401A0E94261108958E
+:104270008B3109F463C08C3100F58E3009F468C0CD
+:104280008F3068F4873009F453C0883018F48630D2
+:1042900089F537C0883081F18B3061F58DC081316F
+:1042A00009F478C0823118F4803121F55DC086317F
+:1042B00009F482C08931F1F47FC0853309F473C0F9
+:1042C000863358F4873209F46EC0883218F48E3180
+:1042D00088F06BC0893271F466C0833430F48A335D
+:1042E00008F065C0883331F467C0833409F45BC0DB
+:1042F000883481F080E008950E94051E0E94FB1D15
+:1043000059C08091AE01807F8093AE0181E080939F
+:10431000BD0108950E94261180E197E220E931E075
+:10432000F9013197F1F70197D9F70E943C1C42C07F
+:104330008091AE0180FF2AC0807F29C08091AE01AC
+:10434000982F969590959170292F220F8D7F19C0E7
+:104350008091AE01982F9695969590959170292F02
+:10436000220F220F8B7F0DC08091AE01982F969562
+:104370009695969590959170292F220F220F220FD6
+:10438000877F822B8093AE019923B1F08160809367
+:10439000AE0110C00E94261180910D0191E0892785
+:1043A00080930D0107C080E003C08D5101C0895387
+:1043B0000E94262181E0089581E008951F93182F1F
+:1043C0008091BD01813089F0813020F0823009F088
+:1043D000BFC03BC0E0910E01F0910F01E081E131DF
+:1043E00069F0E23209F0B6C009C0E0910E01F09127
+:1043F0000F01E081E13111F0E23249F4812F0E9496
+:1044000055208823F9F4812F0E943821A4C0812FE0
+:104410000E9457208823B1F4143161F0153128F43B
+:104420001B3081F0103141F40AC0193219F01833F1
+:1044300019F408C01092BD0180E090E08CC082E0C9
+:104440008093BD0181E090E086C0193201F11A32FB
+:1044500070F41431E1F0153120F4173009F064C024
+:1044600065C0812F8E51863008F05EC01BC01E349F
+:1044700009F455C01F3420F41B3409F055C049C05D
+:10448000113509F442C0123509F04EC03AC080918E
+:10449000BE01882319F01092BE0146C081E08093CE
+:1044A000BD0159C01232F9F0133260F41F3199F096
+:1044B000103218F41E3109F510C0103281F011329B
+:1044C000E1F40FC0143299F0143278F0153289F00B
+:1044D000163299F410C082E011C081E00FC083E071
+:1044E0000DC084E00BC085E009C086E007C087E00E
+:1044F00005C088E003C089E001C080E08093BE0170
+:1045000013C08091BE0161E007C08091BE0161E0EF
+:1045100009C08091BE016AE00E94592005C08091C7
+:10452000BE016AE00E94D22081E015C09AE090931B
+:10453000100184E18093110183E080931201909334
+:10454000130188E08093140188E280931501ECCF79
+:104550001092BD0180E01F91089504D06894B111BC
+:104560008DC0089570D088F09F5790F0B92F99278B
+:10457000B751A0F0D1F0660F771F881F991F1AF06E
+:10458000BA95C9F712C0B13081F077D0B1E0089583
+:1045900074C0672F782F8827B85F39F0B93FCCF304
+:1045A000869577956795B395D9F73EF49095809564
+:1045B000709561957F4F8F4F9F4F0895E89409C084
+:1045C00097FB3EF490958095709561957F4F8F4F46
+:1045D0009F4F9923A9F0F92F96E9BB279395F6955C
+:1045E000879577956795B795F111F8CFFAF4BB0FDA
+:1045F00011F460FF1BC06F5F7F4F8F4F9F4F16C03E
+:10460000882311F096E911C0772321F09EE8872FC7
+:10461000762F05C0662371F096E8862F70E060E083
+:104620002AF09A95660F771F881FDAF7880F9695FC
+:10463000879597F9089557FD9058440F551F59F0E5
+:104640005F3F71F04795880F97FB991F61F09F3F7F
+:1046500079F087950895121613061406551FF2CFA8
+:104660004695F1DF08C0161617061806991FF1CFF8
+:1046700086957105610508940895E894BB2766271F
+:104680007727CB0197F908950BD078C069D028F02F
+:104690006ED018F0952309F05AC05FC01124EECFF8
+:1046A000CADFA0F3959FD1F3950F50E0551F629F8D
+:1046B000F001729FBB27F00DB11D639FAA27F00D7B
+:1046C000B11DAA1F649F6627B00DA11D661F829FA2
+:1046D0002227B00DA11D621F739FB00DA11D621F87
+:1046E000839FA00D611D221F749F3327A00D611DA4
+:1046F000231F849F600D211D822F762F6A2F112486
+:104700009F5750408AF0E1F088234AF0EE0FFF1FD8
+:10471000BB1F661F771F881F91505040A9F79E3F0F
+:10472000510570F014C0AACF5F3FECF3983EDCF364
+:10473000869577956795B795F795E7959F5FC1F74C
+:10474000FE2B880F911D9695879597F9089597F9F7
+:104750009F6780E870E060E008959FEF80EC089527
+:1047600000240A9416161706180609060895002450
+:104770000A9412161306140605060895092E0394CA
+:10478000000C11F4882352F0BB0F40F4BF2B11F43E
+:1047900060FF04C06F5F7F4F8F4F9F4F089597FB5F
+:1047A000092E07260AD077FD04D00CD006D00020B1
+:1047B0001AF4709561957F4F0895F6F7909581955D
+:1047C0009F4F0895AA1BBB1B51E107C0AA1FBB1F27
+:1047D000A617B70710F0A61BB70B881F991F5A958D
+:1047E000A9F780959095BC01CD010895F999FECF68
+:1047F00092BD81BDF89A992780B50895A8E1B0E0EF
+:1048000042E050E00C941924262FF999FECF1FBAEC
+:1048100092BD81BD20BD0FB6F894FA9AF99A0FBEE9
+:10482000019608950E940424272F0C940524DC018E
+:10483000CB01FC01F999FECF06C0F2BDE1BDF89AAB
+:10484000319600B40D9241505040B8F70895F89455
+:02485000FFCF98
+:1048520020020172080709E108AB087508019B01F3
+:064862000A14030A0828F5
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.png b/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.png
new file mode 100644
index 0000000000..5c4c7c7c1b
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.png b/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.png
new file mode 100644
index 0000000000..dbc51b79b3
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/csharp_dev/keymap.c b/keyboard/ergodox_ez/keymaps/csharp_dev/keymap.c
new file mode 100644
index 0000000000..537b15eeac
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/csharp_dev/keymap.c
@@ -0,0 +1,282 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define QWERTY 1 // qwerty keys
+#define FKEYS 2 // 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 | , ~L2| |Home~L1| End~L2|
+ * ,------|------|------| |------+--------+------.
+ * | | | Copy | | UP | | |
+ * | Enter| Space|------| |------| Space |Enter |
+ * | ~LSFT| ~WIN | Past | | DOWN | ~WIN | ~LSFT|
+ * `--------------------' `----------------------'
+ */
+// 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), LT(2,KC_COMM),
+ LCTL(KC_C),
+ SFT_T(KC_ENTER),GUI_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),
+ LT(2,KC_HOME), LT(1,KC_END),
+ KC_UP,
+ KC_DOWN,GUI_T(KC_SPACE), SFT_T(KC_ENTER)
+ ),
+/* Keymap 1: QWERTY layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
+ * |--------+------+------+------+------+------| Tab | | Esc |------+------+------+------+------+--------|
+ * | LSHFT | Z | X | C | V | B | | | | N | M | , | . | / | \ |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | CTRL | WIN | ALT |ALT GR| Esc | | PgUp | PgDw | Ins | PtSc | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | Cut | | | |
+ * ,------|------|------| |------+--------+------.
+ * | | | | | | | |
+ * | | |------| |------| Left | Right|
+ * | | | | | | | |
+ * `--------------------' `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[QWERTY] = KEYMAP( // layer 2 : QWERTY
+ // left hand
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS,
+ KC_ESCAPE, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TAB,
+ KC_LCTRL, KC_LGUI,KC_LALT, KC_RALT, KC_ESCAPE,
+ KC_TRNS, LCTL(KC_X),
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_EQUAL , KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE,
+ KC_ESCAPE,KC_N, KC_M, KC_TRNS,KC_DOT , KC_SLASH, KC_NONUS_BSLASH,
+ KC_PGUP , KC_PGDOWN,KC_INSERT ,KC_PSCREEN, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_LEFT, KC_RIGHT
+ ),
+/* Keymap 2: F keys + macros
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | Calc | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | |Public|Static|string|int |return| | | |//TODO| | | | | F12 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | |Privat|Const |var |float |null |------| |------|new | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | |void |bool |break;| | | |(); | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | Alt | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | Cut | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// FKEYS + MACROS
+[FKEYS] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,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_TRNS,
+ KC_TRNS,KC_LALT,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,
+ 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_TRNS, M(MACRO_PARENTHESE), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(QWERTY) // 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(LPRN), T(RPRN),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/keyboard/ergodox_ez/keymaps/csharp_dev/readme.md b/keyboard/ergodox_ez/keymaps/csharp_dev/readme.md
new file mode 100644
index 0000000000..efff2ee720
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/csharp_dev/readme.md
@@ -0,0 +1,46 @@
+# ErgoDox EZ C# Developer configuration
+
+## Changelog
+
+* Feb 12, 2016 (V1):
+ * First version commit
+
+## 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#
+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
+-Layout 1 is mainly here for safety, most of its unique keys could be transfered to Layout 2 and it could then be removed
+
+## 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 )
+
+