diff --git a/software/binaries/1.7t4/T12.ino.standard.hex b/software/binaries/1.7t4/T12.ino.standard.hex new file mode 100644 index 0000000..bc9514b --- /dev/null +++ b/software/binaries/1.7t4/T12.ino.standard.hex @@ -0,0 +1,1788 @@ +:100000000C94EE110C9416120C9416120C944727B3 +:100010000C9416120C9416120C9416120C941612C0 +:100020000C9416120C9416120C9416120C941612B0 +:100030000C9416120C9416120C9416120C941612A0 +:100040000C94FD260C9416120C94CB260C94A52629 +:100050000C9416120C941E280C9416120C94161262 +:100060000C9416120C94161207634236B79BD8A74D +:100070001A39685618AEBAAB558C1D3CB7CC5763CD +:10008000BD6DEDFD753EF6177231BF000000803F7B +:1000900008000000BE922449123EABAAAA2ABECD97 +:1000A000CCCC4C3E00000080BEABAAAAAA3E000009 +:1000B0000000BF000000803F000000000008417801 +:1000C000D3BB4387D1133D190E3CC3BD4282AD2B38 +:1000D0003E68EC8276BED98FE1A93E4C80EFFFBE30 +:1000E00001C4FF7F3F0000000000536176650046B9 +:1000F0006C6970004D61696E2053637265656E00B6 +:100100004A5000454E00434E00594553004E4F00A3 +:100110004F4E004F464600496E666F730042696756 +:100120000050494400446972656374005361766508 +:1001300000426F6F7374004F666600536C656570A4 +:10014000005361766500426F6F737400536C656590 +:10015000700044656661756C74005361766500419A +:1001600064640044656C6574650052656E616D651C +:100170000043616C696272617465004368616E6717 +:10018000650052657475726E0041626F7574004C43 +:10019000616E67004C4F5720566F6C0042757A7A3B +:1001A00065720053637265656E00436F6E74726FA3 +:1001B0006C0054696D65720054656D70005469700F +:1001C00000F21415F0CADFB8CCF0D699E8AEA4DF7F +:1001D000EEE8F21D1E08F21C08F21A1B08F0714628 +:1001E00001F046464A01F219F051F218F05A8DF02A +:1001F000C0DAEEAEF0C8B8A5F1302924F0B599E127 +:10020000A4BDF21415F0CBEEAEBDF218F05A8DF28B +:100210001617F21415F0CBEEAEBDF21617F0BCCAED +:100220009EE0BDF21415F21213F21011F20C0DF053 +:1002300094F20E0FF0A2D8DFCBE1EEACDCE8F20ACC +:10024000F08CF20BF04A8DF209F08DF097C59BBD52 +:10025000F20708F2040506F097DEEED5F0CBABEE20 +:10026000F0AEA4DFEEE8F0A8E8BDE2EEE0F0B4996D +:10027000D3EEF200010203F0CCDFB0B8BD00000005 +:1002800000000F1DC20800054442080003845FBF40 +:10029000000FE44410000115451000054CC97F8093 +:1002A00009244F900007C4C11000054D413F0005CF +:1002B0005443810007C44D02000544411400055514 +:1002C00041080007C8810400000000000000000091 +:1002D000000001083FFE001FFF81000000400200F7 +:1002E0000007FE0FF8000402080800040208880056 +:1002F00007FE088800040208880004020888000736 +:10030000FE0888000402094800040202300007FECB +:10031000040C0004021804000000000000000000AB +:10032000000007FE13FE000402084000040208401B +:1003300000040201FC000402388400040208840066 +:1003400007FE0FFF000402080000040209FE00047B +:100350000209020004020B020004020D020007FE63 +:1003600009FE00040201020000000000000000007D +:10037000000001100080001FFF80800001103FFF7F +:1003800000004004080007FC0408000444041000B6 +:10039000044402100004440220001FFF81200000DA +:1003A0004000C00000A00130000110020800060C4F +:1003B0000C07001803B0020000000000000000005D +:1003C0000000004000800000400080000FFF3FFF61 +:1003D0000008410408000841040800084104100016 +:1003E00008410210000FFF02200008410120000018 +:1003F0004000C00000400130000040020800004002 +:100400000C07000040300200000000000000000067 +:1004100000001FDF10200002120C20000224042024 +:1004200000047F8020000424B820000FA48850001E +:1004300014BF88500004A488500004A48848000415 +:10044000BF88880004A48A880007A48C8400044420 +:100450008907000081860200000000000000000003 +:1004600000000FF00491000440025200047F9054F9 +:1004700000045088FF0007D08481000451008100EF +:10048000044901FF0007CA028100044404810004FA +:100490004A1CFF0007EA0481000C5104810000613E +:1004A000C4850000408082000000000000000000C1 +:1004B000000007FF802000008407FF000084040183 +:1004C00000008404010000840401000FFFC7FF0046 +:1004D00000840400000084040000008405FF000084 +:1004E000840501000104090100010409010002045E +:1004F00011FF0004040101000000000000000000E2 +:100500000000008204FF00004402010007FF902168 +:10051000000010102100001017FD00001010210035 +:100520000FFFD06100001010A10000281121000071 +:10053000281221000044142100008210A1000301B0 +:10054000D045000C009002000000000000000000F8 +:100550000000084410FE00042810920005FF2292BB +:100560000000103C920000100892001CFE10920047 +:10057000041020FE0004103E920005FF809200044B +:100580001000920005100E92000610309200041028 +:1005900000FE0000100082000000000000000000CB +:1005A000000007DF8840000A24104000114210FEBE +:1005B00000040022820002FF3D020008010A4200FE +:1005C00009F9103200090920120009F93E02000958 +:1005D0000900020009090E020009F930220008058D +:1005E00000140008020008000000000000000000E5 +:1005F00000000FC3F1E0000FE3F1F8000C70C19EA2 +:10060000000C30C186000C30C183000C30C1830067 +:100610000C60C183000C60C183000FC0C183000F58 +:10062000C0C186000C00C186000C00C198000C03FC +:10063000F1F8000C03F1E0000000000000000000F1 +:10064000000000200820000FFF09FC000020080027 +:100650000000203E880003FE08500002020BFE004E +:1006600003FE0C4000020218400003FE2BFE0002B5 +:100670000208480003FE0888000202085000020237 +:100680002830001FFF91CC0000000000000104048E +:100690007C0000880444000FFF3F44000020044415 +:1006A0000000200C440000200E44001FFF95440071 +:1006B0000020144400005024440000500444000072 +:1006C0008804450001040485000603850300180121 +:1006D0000400000000000000000000000000000016 +:1006E0000000047E21FC0004421104001F7E090466 +:1006F00000044221FC000542110400067E110400A2 +:100700000C0005FC0015FF880000040813FE00041F +:1007100048325200044F125200044812520014A8EA +:10072000125200091F97FF000000000000000000A7 +:10073000000002103DFC00021025040004102504F6 +:100740000005FFBDFC000C102520000C3825200002 +:10075000143825FE0004543D2000045425100004E4 +:10076000922510000511A5090006113D4500041051 +:1007700025830004100101000000000000000000BB +:1007800000001FC8102000124A0C20001AC90420C3 +:100790000017480020001FFFB82000020808500082 +:1007A0001FC8085000020808500003C80848001E6F +:1007B0001408880001540A880015220C8400144390 +:1007C0008907000081060200000000000002FE010F +:1007D000000002823FFF00048202000004FE0200CB +:1007E000000C1004FC00141004080005FF8C10001D +:1007F0000410141000043825FF0004340410000411 +:1008000052041000049184100005100450000410DC +:1008100004200000000000000000000000000000B4 +:10082000000002030010001FDC3EFE0008900212D0 +:1008300000051004FF001FDF84120002120CFE00EE +:100840001FD2021000021222FE000A921410000AA7 +:100850005214100012220DFF0002220810000A425A +:10086000141000040223FF0000000000000000003C +:1008700000000F78BC20000948A45000094AA85085 +:1008800000094AA88800094AB104001FFEAAFB001B +:10089000094AA42000094AA42000094AA7FE000929 +:1008A0004AB420000948A924000B48A22200088A63 +:1008B000A4A2001119204000000000000000000068 +:1008C00000000020008000005001FC0000880104AE +:1008D00000010403080006FB0490000800C060004B +:1008E00007DF018000045106000004511BFE0004D4 +:1008F0005102020007D90202000456020200001051 +:1009000003FE0000100202000000000000000000D2 +:1009100000000208209000027F9890001F8009FFCD +:1009200000022201100006218B100007628DFE00DC +:100930000AA20910000A14111000121431FE00025C +:1009400008111000021411100002221110000243BD +:1009500091FF000281110000000000000000000073 +:100960000000100700000008F83FFE00048020028D +:1009700000008020020000BE23E2001C8222220030 +:1009800004A42222000494222200048822220004CB +:100990009423E200052220020005422002000A0002 +:1009A0003FFE0011FFA00200000000000000000058 +:1009B000000000820FFE00004400400007FF80405E +:1009C000000010004000001000400000101FFF80D9 +:1009D0000FFFC04000001000400000280040000051 +:1009E0002800400000440040000082004000030155 +:1009F000C140000C00808000000000000009FF00E2 +:100A0000400004203FFF00042000000000FE000022 +:100A1000001C420FFC00044200000007FF800000A1 +:100A200004000FFC0004FF0000000481000000052A +:100A3000810FFC00068108040004FF080400008107 +:100A40000FFC00000000000000000000000000009B +:100A5000000001000FFE00010008200003FF082035 +:100A6000000201082000042208200008200BFE00DC +:100A70001020082000005008280000500824000022 +:100A800088082200008810200001041020000203C2 +:100A9000A7FF000C010000000000000000000000A3 +:100AA000000000400080001FFF9FFC000040041079 +:100AB000000FFF02200000003FFF000FFE000000BB +:100AC00008420FF80008420808000FFE0808000856 +:100AD000020FF800080008080008000808000800D5 +:100AE0000FF80010000808000000000000000000DF +:100AF000000007FE0FF800040200000004020000DE +:100B00000007FE00000004023FFE00040200800017 +:100B100007FE008000009004900008910C880006F9 +:100B200093108600029420820000900080000090C4 +:100B30000280001FFF810000000000000000000094 +:100B40000000041012020005FF9FD200050092125F +:100B5000001E28A2120004443FF200048202120088 +:100B600006000212000CFE1FD200141012520004E4 +:100B7000101242000410134200041012820015FFEC +:100B8000820A0008000204000000000000000000CB +:100B90000000002000000000203E04001FFFA2040F +:100BA000001000A2FF0000012204000FFE2204003A +:100BB00000403E440000402224000440222400045F +:100BC0007C22040004402204000A403E0400094044 +:100BD00022240010FF801400000000080000000024 +:100BE000000010FE08200008820BFF0004820A01AA +:100BF0000010FE3C510008820888000882090400A9 +:100C000002FE0C0000040019FC0009FF2820001956 +:100C1000290820000929082000092908200009299D +:100C20002BFF000BFF900000000000000000000000 +:100C300000001F7F90F80001080888000A1008884B +:100C400000047F0107001FC13A0000054909FC00AC +:100C5000044908840004490888000449084800043D +:100C60004908500004490A200004160C58001421B9 +:100C700089870008C0860200000000000080040090 +:100C8000003FF0383033103F9038103390279026D3 +:100C90001030903FF000008004800400003FF03DE1 +:100CA000F020103BF03B7030302B502AD031B03F59 +:100CB000F000008004800400003FF03870303023E2 +:100CC00010279020102010279027903FF0000080E0 +:100CD00004800400003FF03CF03CF02010249024FD +:100CE0009020103CF03CF03FF000008004800400B5 +:100CF000003FF037B0231030303870387030302378 +:100D00001037B03FF000008004FCF4F860E044C00D +:100D10008CC11CC22CC44CC88CD10CA204C4048F3E +:100D2000FC187CBCFC8000BFF81FF8B0281FF8B48A +:100D3000081FF8B1081FF8B048BFF8B288BFF880A4 +:100D4000008000BFF81FF8B0081808B9E819B8B853 +:100D5000381838B9B8B9F8B0F8BFF8800015543F62 +:100D6000F815503FF01550387010203104138C22C4 +:100D7000A817FC2AA80000000015543FFC15543F9A +:100D8000FC15543C0414043CFC14543CFC0054007A +:100D9000A800000000800400003FF03CF034B024C4 +:100DA00090249027902310303038703FF00000805E +:100DB00004FF7CFE7CFCECE8DCC84C984C882408E2 +:100DC0002000000000000000008004E01CF3FCE7AD +:100DD000FCCE0C8E1C9F9C1F3C1F0C0E0C0FFC8726 +:100DE000F881E4C00CE01CF87C000458085808584E +:100DF0000840087FF860185FE85B685FE85B681C84 +:100E0000E85FE80000800400003FF03CF03CF03C6C +:100E1000F0201020103CF03CF03CF03FF00000804F +:100E200004F87CF7BC00007FF80000BFF4AB54ABC3 +:100E300054AB54AB54AB54AB54BFF4C00CF03CCEE9 +:100E40000CBF04B30473007F007E007C007C007C38 +:100E500060BC64BE04CF0CF03C81DC559C29045579 +:100E600000299055D003FCFF002E0026700250820E +:100E700070E600EE04800C001C3FF43FE03FC437F6 +:100E80008C2318303038703CF03FF03FF000008089 +:100E900004058074B857A876B80580F97C4694AAF2 +:100EA000A8F97C068874A8578C75740698F03CCE17 +:100EB0004CBC34B814188010804230607860F8441C +:100EC000C08004B884CFCCF03CF87CE01CC00CCFD0 +:100ED000CCCFCCCFCCCFCCCFCCCFCCCFCCC84CCFC1 +:100EE000CCC00CE01CFCFCF87CE01CC00CC00CC0AE +:100EF0000CC00CC00CC00C80048004FFFCF87CFC0F +:100F0000FC800400002000100008001000270000F2 +:100F100000000000000000000000008004C3FC1876 +:100F2000001800C3FCFFFCFF0C00600060FF0CFF1A +:100F3000FCF0FC06000600F0FC8FC4102020104CD2 +:100F4000C89FE43DF03DF01DE03EF03F709FE48C13 +:100F5000C400003030F87CF33CF4BCF6BCF4BCF6C2 +:100F6000BCF4BCE49CC84CD02CD02CC84CE79CF002 +:100F70003C88240820383038303830383038303821 +:100F80003039303BB03FF03FF0000080041FE03FBD +:100F9000F07038601860186018FFFCFCFCFCFCFC6A +:100FA000FCF87CF87CFCFC7FF81E1033382D7C2587 +:100FB000382D3825382D386D80DEC0BF40BF40DE6B +:100FC000C061803F007FF0FFE0C008C01CC038C88F +:100FD00070DCE4CFCCC78CC30CC00CC00CFFFC7F12 +:100FE000F8000006000C0018F838F030307060701F +:100FF0007878F878003C023F0C1FF80FF003C0002F +:10100000007FF8FFFCC00CC30CCB4CDB6CDB6CD856 +:101010006CDCECCFCCC78CC00CFFFC7FF803000766 +:10102000800FC00CC01CE01CE03CF03CF07FF87F5F +:10103000F8FCFCFCFCFFFC7FF81140820021208FB3 +:10104000E023FC82004A23E200FE209FF013F88098 +:10105000802220C0804221BFF0FBFA8880022084D9 +:1010600080022084801A208080E3FE8280020101B9 +:10107000000F421FC0784110400840904008421FB6 +:10108000C008411040FFFD104008405FC00840808C +:101090000008413FE008432520104125201041254C +:1010A000202041252040417FF07FF8488002004900 +:1010B000000201FFF00201001002027F2022004125 +:1010C0000023F07F00220008002200FF8022008819 +:1010D000802200888022008A8022008900FFFC088C +:1010E0000023F21FC022111040FBF0904022121F7B +:1010F000C02A11104033F1104060005FC0AFFC8087 +:101100000020413FE022432520227925202241254D +:1011100020A541252048FD7FF01083DFC0108250BC +:1011200040208250402FFFDFC06082520061C252D7 +:1011300000A1C25FE022A3D20022A251002492515A +:1011400000288E5090308BD4502082583020801050 +:1011500010104047C017FC44402003F44023F844DB +:10116000406208C440A3F8E440200154402FFD44ED +:10117000402806444023F844402040445020404842 +:1011800050214050302080400020921FC03DF990F7 +:10119000402090904040901FC07BFF0000A0013F86 +:1011A000E021F90200FD09020021097FF021F90583 +:1011B00000210945002909888031F9107021082093 +:1011C0002025004300202070F87540775575774042 +:1011D000403E4A5E2B5E4A6B627F352F357F7C5BDB +:1011E0005E247B0E3A047E017E4A5E69063A2F3FFA +:1011F0006B7E46403F41497F494102626B6B6B62A7 +:10120000026A6B147D577D10413F55553D57512162 +:101210003F2D7F2A122E0A775A505A770A2024131C +:101220007D5553707A2A7B021A437A4A525E2B5EAE +:10123000424A415F353F555F417D14577D0E407FE7 +:101240007F1B54167D1654493A407E575676423FCE +:10125000427E7E427E047E51377D3750127A17528D +:10126000761E127F557F145D7F557F557F7F553DDC +:10127000577F55377817457F7F2B7B287B2B7F1E29 +:1012800012127F12121E7F416B7F6B517F525A5791 +:101290003A575A52007F494949497F22122A7F2AE8 +:1012A000122200000000002F000300033F123F162F +:1012B0003F1A120824323D2A020100003E41413EFD +:1012C000000A070A083E084020000808080020001D +:1012D0001008041C2A1C243E20322A24222A141816 +:1012E000143E2E2A121C2A12023A06142A14242A08 +:1012F0001C00240040240008142214141422140892 +:1013000002290612291E3E093E3F251A1E21213FB1 +:10131000211E3F25213F05011E21393F083F213F66 +:101320002110201F3F043B3F20203F063F3F013E4E +:101330001E211E3F09061E215E3F09362225190186 +:101340003F013F203F3F100F3F183F330C33033C1A +:1013500003312D23007F41153E15417F000201021C +:1013600040404000010218243C3F2418182424184F +:10137000243F182C2C043F0548543C3F0438003DC2 +:1013800000403D003F0834013F003C1C383C04381D +:101390001824187C241818247C3C0804283C1404C5 +:1013A0003E243C203C3C100C3C303C2418244C5047 +:1013B0003C24342C083641007F00413608010101ED +:1013C0001028101F010120203E10200000080025D9 +:1013D000150F241C0C103804180C3828382828182D +:1013E0003C083C18283820242C3C2C2C1C040808D1 +:1013F000211D07083C0306231E223E22120A3F320B +:101400000F3E0A3F0A24130E271E0222223E2712F5 +:101410000F2525102119273F222E21160F241B0EE0 +:10142000251F0526261E251D053F0408241F042010 +:101430002222251927123B1620100F3C013E1F24A3 +:101440002421110F0C031C1A3F1A091927222A2ADA +:10145000382730320C13053F25023F0E213F20254F +:10146000253F25251D07201F3C3F203F20103E2201 +:101470003E23110F21211801000102050200000086 +:10148000000000000020400000000000002050206C +:10149000000000000050300000000000006060000C +:1014A00000000000000000181800000000000036D6 +:1014B0003600000000000056360000000000020167 +:1014C00051090906000000005F0000000000000054 +:1014D000007F41410041417F00000000000000000A +:1014E0003F010101004040407E0000000000003F3D +:1014F000213D05070070505E427E000000000000A4 +:10150000007F63410041637F00000000000808087D +:101510007F08080800080808080808080044444430 +:101520005F44444400412214081422410008080882 +:101530002A08080800141414141414140014341481 +:101540001C14161400080814141422220022221459 +:1015500014140808000205023C42422400002B2C0F +:10156000782C2B000000242A7A2F2A1200001C62FB +:10157000322E23140020545E2541422000422512C1 +:10158000082452210020623E633E23020020564977 +:1015900055225840000022147F142200001C2259BA +:1015A000554D120C0000004A555529000004643CBA +:1015B000173C64040004643C1F3C6404001C22418A +:1015C0004141221C001C3E7F7F7F3E1C001C225D8F +:1015D000555D221C000814224122140800081C3EFC +:1015E0007F3E1C08007F41414141417F007F7F7F5A +:1015F0007F7F7F7F0040704C434C70400040707C88 +:101600007F7C704000010719611907010001071F65 +:101610007F1F0701004922144914224900050505CE +:101620007D05050500080808082A1C0800081C2A72 +:1016300008080808000004027F02040000001020CF +:101640007F20100000003E414141413E0000004229 +:101650007F4000000000625151494946000022418C +:10166000494949360000302824227F2000002F45B8 +:101670004545453900003E494949493200000101CC +:1016800061190503000036494949493600002649D9 +:101690004949493E000020547E3414600020527FA6 +:1016A0002A1A4A3000003C4020041800001E204046 +:1016B000200204180000104A4A2A100000000845C1 +:1016C000454525180000482A3A4A400000004425B4 +:1016D000153D45400000247E145024000022527F16 +:1016E0000A484A340044344F443804180044344F04 +:1016F0004439041900002A5A4B4E5A0800002A5A4D +:101700004B4E5B080000081414224100000008142E +:1017100014224504003F0004443F0404003F000439 +:10172000443F040500002052424242400000205243 +:10173000424342410000245444475C0400002454C6 +:1017400044475C050000003F404040200000003F4F +:10175000404140210002020A563F02020002020AF2 +:10176000563F02030004043F44545F440004043F16 +:1017700044545F45000008093D4B49080000080932 +:101780003D4B490A00423A072254444400423A077A +:1017900022554445000002124E4B4A32000002120C +:1017A0004E4B4A3300001010484830000004040239 +:1017B0002222221C000404022223221D0000020215 +:1017C0001A254341000002021A2543450000205714 +:1017D00048484444000020574849444500120A271D +:1017E00052503A24007F00205242424000304E388E +:1017F000540F64780024147F0422523C00182412F1 +:101800004E422418007F002454543F44007F00249B +:1018100054543F45007F002454563D4600023A4749 +:1018200040413E0400023A4740413E0500023A472B +:1018300040433D06004030404D3210600040304093 +:101840004D321161004030404D32156200080402F3 +:101850000408101000080402040910110008040212 +:10186000040A1512007F006A6A7E2A4A007F006A15 +:101870006A7F2A4B007F006A6A7E2D4A00006A6AEE +:101880006A7F2A4A0030291D4B483C1000122A7FEB +:101890004240422400304E38540F443800000A3E83 +:1018A0004B4A4A300000080E384614080004071C52 +:1018B00062030A0400001C483E241800001E045263 +:1018C0003F12120C00002050503E480000002050F3 +:1018D000503F244400001C51494A483000000F4248 +:1018E00041211E00000010696D4B49300024147F17 +:1018F00004023E40000010494D4B493000002818BA +:101900007E0844380024147F0442423C00304925BC +:101910001F245438004028255735284000100A2E2F +:101920005B724A480040300C3340402000000444C1 +:101930003C140C00000001413D090503000020207B +:101940001078040000001010087C02010000184804 +:101950004C281800000006424322120E00004048A6 +:1019600078484000002022223E2222200000282821 +:10197000587C0800002222124A7F02020000422204 +:101980001F02427E000042221F02427F000012120C +:101990001F721210000012121F7213100000084470 +:1019A0004322120E000008444322120F000807428F +:1019B000221E020200080742221F020300004242C8 +:1019C0004242427E000042424243427F0002024FB6 +:1019D00042221F020002024F42231E030000454A1A +:1019E0004020100C0000454A4021100D00404222CA +:1019F000221A264000404222221B26410004043FB6 +:101A00004444544C0004043F4445544D00000146F6 +:101A10004020100F000001464020110F0000084434 +:101A20004B2A120E000008444B2A120F00080A4AE3 +:101A30003E09090800080A4A3E0908090000184042 +:101A40005820180000020C424C20100E00020C42DC +:101A50004C21100D000405453D0505040004054515 +:101A60003D0504050000007F080810000000007F0D +:101A700008091001000444241F0404040020222249 +:101A80002222222000404125151927000020221281 +:101A90007B06122000404020100807000040300E56 +:101AA00000020C700040300E00020D710040300E3C +:101AB00000020D7200003F484848444400003F487F +:101AC0004849444500003F48484A45460000024214 +:101AD0004222120E000002424223120F0000024274 +:101AE0004222150E00080402040810200008040217 +:101AF0000409102100080402040A152200241444D9 +:101B00007F041424002414447F0514250024144465 +:101B10007F0615220002021222520A060000212529 +:101B2000294A42000040704C435020400040442469 +:101B300014083700000008093F4949480000101CFC +:101B4000680818000004040F74020A0600004048E8 +:101B50004878400000202222223E2020000000443D +:101B600054547C000000424A4A4A4A7E0000044520 +:101B70004525150C00000F4040201F000040201E8E +:101B8000007F20100000007F4020100800007E42EF +:101B90004242427E00000C4444241C0000000642E5 +:101BA0004222120E0010121E12127F120020222258 +:101BB0003A262220000001454525150F000041422C +:101BC0004020100C000006424322120F000048285B +:101BD0001C4878000000100C483808000008040475 +:101BE0000810100800080000080000080004080899 +:101BF00008080808000808080808080808BD01B80F +:101C000001B201AA01A3019C0194018F0189018203 +:101C1000017B0171016A0163015F015A0152014CAC +:101C200001460141013B01370131012C0125012110 +:101C3000011D011701130110010D01090106010326 +:101C4000010001F400EF00EA00060505070604099B +:101C5000030504090A080303030603050303050536 +:101C60000306040405050405040403040905033EF2 +:101C70000053656C656374205469700000000000B7 +:101C8000003E5B4F5B3E3E6B4F6B3E1C3E7C3E1C02 +:101C9000183C7E3C181C577D571C1C5E7F5E1C0048 +:101CA000183C1800FFE7C3E7FF0018241800FFE7FF +:101CB000DBE7FF30483A060E2629792926407F05C2 +:101CC0000507407F05253F5A3CE73C5A7F3E1C1CD8 +:101CD00008081C1C3E7F14227F22145F5F005F5F98 +:101CE00006097F017F006689956A60606060609484 +:101CF000A2FFA29408047E040810207E2010080889 +:101D00002A1C08081C2A08081E101010100C1E0C93 +:101D10001E0C30383E3830060E3E0E060000000025 +:101D20000000005F00000007000700147F147F140C +:101D3000242A7F2A12231308646236495620500051 +:101D400008070300001C2241000041221C002A1C3D +:101D50007F1C2A08083E0808008070300008080828 +:101D60000808000060600020100804023E51494548 +:101D70003E00427F400072494949462141494D3366 +:101D80001814127F1027454545393C4A49493141CD +:101D9000211109073649494936464949291E00009B +:101DA00014000000403400000008142241141414F0 +:101DB0001414004122140802015909063E415D59DC +:101DC0004E7C1211127C7F494949363E41414122E5 +:101DD0007F4141413E7F494949417F090909013E0F +:101DE000414151737F0808087F00417F4100204036 +:101DF000413F017F081422417F404040407F021C48 +:101E0000027F7F0408107F3E4141413E7F0909095E +:101E1000063E4151215E7F0919294626494949322A +:101E200003017F01033F4040403F1F2040201F3FF0 +:101E30004038403F63140814630304780403615975 +:101E4000494D43007F4141410204081020004141B7 +:101E5000417F040201020440404040400003070863 +:101E60000020545478407F2844443838444444285F +:101E7000384444287F385454541800087E09021806 +:101E8000A4A49C787F0804047800447D400020408E +:101E9000403D007F1028440000417F40007C0478D2 +:101EA00004787C080404783844444438FC1824241A +:101EB0001818242418FC7C0804040848545454249A +:101EC00004043F44243C4040207C1C2040201C3C17 +:101ED0004030403C44281028444C9090907C44640E +:101EE000544C4400083641000000770000004136A1 +:101EF000080002010204023C2623263C1EA1A16127 +:101F0000123A4040207A3854545559215555794158 +:101F10002154547841215554784020545579400C2F +:101F20001E52721239555555593954545459395510 +:101F30005454580000457C410002457D4200014553 +:101F40007C40F0292429F0F0282528F07C545545C0 +:101F5000002054547C547C0A097F49324949493253 +:101F60003248484832324A4848303A4141217A3A68 +:101F700042402078009DA0A07D39444444393D4032 +:101F800040403D3C24FF2424487E4943662B2FFCDF +:101F90002F2BFF0929F620C0887E0903205454798D +:101FA000410000447D413048484A32384040227A5E +:101FB000007A0A0A727D0D19317D2629292F2826DB +:101FC0002929292630484D402038080808080808E3 +:101FD0000808382F10C8ACBA2F102834FA00007B3C +:101FE000000008142A142222142A14089500220042 +:101FF00095AA005500AAAA55AA55AA000000FF00FC +:10200000101010FF00141414FF001010FF00FF1038 +:1020100010F010F0141414FC001414F700FF00006A +:10202000FF00FF1414F404FC141417101F10101FE9 +:10203000101F1414141F00101010F0000000001FD7 +:10204000101010101F10101010F010000000FF10E2 +:102050001010101010101010FF10000000FF1400DE +:1020600000FF00FF00001F10170000FC04F4141410 +:102070001710171414F404F40000FF00F7141414DC +:1020800014141414F700F7141414171410101F105C +:102090001F141414F4141010F010F000001F101F7F +:1020A0000000001F14000000FC140000F010F010ED +:1020B00010FF10FF141414FF141010101F00000064 +:1020C00000F010FFFFFFFFFFF0F0F0F0F0FFFFFF68 +:1020D0000000000000FFFF0F0F0F0F0F38444438BF +:1020E000447C2A2A3E147E02020606027E027E02FA +:1020F00063554941633844443C04407E201E200619 +:10210000027E020299A5E7A5991C2A492A1C4C7255 +:1021100001724C304A4D4D303048784830BC625ADC +:10212000463D3E494949007E0101017E2A2A2A2A6C +:102130002A44445F444440514A444040444A514048 +:102140000000FF0103E080FF000008086B6B083609 +:1021500012362436060F090F06000018180000007A +:102160001010003040FF0101001F01011E00191D69 +:102170001712003C3C3C3C00000000000000000046 +:10218000240027002A0000000000250028002B0062 +:1021900000000000230026002900040404040404B5 +:1021A0000404020202020202030303030303010206 +:1021B00004081020408001020408102001020408D5 +:1021C0001020AED5F0A83FD300408D14A1C8DA127C +:1021D00081CFD9F1DB40A4A6AF200021007F2200EF +:1021E00007506C65617365207761697400414443F1 +:1021F0003A200074656D703A2000536574206D6557 +:1022000061737572656400537465703A2000FFFF56 +:10221000FFFFFFFF800386708003800386708003CA +:102220009FF3E1309FF39FF3E1309FF3983301CCAC +:102230009833983301CC9833983387C098339833C8 +:10224000E1C098339833E1C098339FF398C09FF36F +:102250009FF398C09FF3800366CC8003800366CC15 +:102260008003FFFF010CFFFFFFFF01001FFF810044 +:1022700061301F3F873CE6FC8733873CE6FC87F3F1 +:10228000F8039E0F1F03F8039E0F1F03E13CFE0C93 +:1022900007CFE13CFE0C07CF99033E3086C3E6CF63 +:1022A000380F9EF3E6CF380F9EF39E0327CC8103B1 +:1022B0009E0327CC8103E0FFE10CE6CFE0FFE10CB9 +:1022C000E6CF9803060000FF9803060000FFFFFF1B +:1022D0001EF0F8038003663099C38003663099C30B +:1022E0009FF3010CF8FF9FF3010CF8FF9833393C82 +:1022F00001CF9833393C01CF9833FF0C793F9833A5 +:102300003ECCE0F398333ECCE0F39FF33E0098CF11 +:102310009FF33E0098CF80033E30E7C380033E30FA +:10232000E7C3FFFFFFFFFFFFFFFFFFFFFFFF3030AF +:10233000300076312E377434005600560043000FBB +:10234000E01FC01FC03F803FF87FF07FE007C0075D +:10235000800F000E001C001800100014A03FF07F3A +:10236000F8E01C6E18EC1C68186018E01C6058E05F +:102370001C7FF83FF014A04552524F5200484F4C7A +:1023800044004845415400574F524B5900424F4F6B +:10239000535400534C454550004F46460000003B07 +:1023A000EC7BEE63E663E663E663E663E663E663BF +:1023B000666226600660067FFE3FFC0000010204A4 +:1023C0000810204080000000080002010000030403 +:1023D000070000000000000000001F2811241FBE9D +:1023E000CFEFD8E0DEBFCDBF12E0A0E0B1E0EAEE73 +:1023F000FDE602C005900D92A83BB107D9F728E091 +:10240000A8EBB2E001C01D92A130B207E1F711E1E3 +:10241000CEEED1E104C02197FE010E94D436CD3E1C +:10242000D107C9F70E94D4280C94F3360C9400000D +:102430004F925F926F927F928F929F92AF92BF92D4 +:10244000CF92DF92EF92FF920F931F93CF93DF9380 +:1024500000D000D0CDB7DEB74B015C0129013A01B5 +:102460006701780120E030E0A9010E94773287FD02 +:10247000A6C020E030E0A901C301B2010E9477327A +:1024800087FD9DC020E030E0A901C801B6010E948F +:10249000773287FD94C081E02091CB073091CC0743 +:1024A0002130310509F080E08093EC078092B1077C +:1024B0009092B207A092B307B092B4074092B507CA +:1024C0005092B6076092B7077092B807C092B907EA +:1024D000D092BA07E092BB07F092BC076091DF0789 +:1024E0007091E0078091E1079091E2070E947C32B1 +:1024F00020E030E04AE754E40E94793469837A832B +:102500008B839C838092BD079092BE07A092BF07E9 +:10251000B092C0079B01AC01C301B2010E94DD3241 +:102520002B013C014092C1075092C2076092C30741 +:102530007092C40729813A814B815C81C701B60141 +:102540000E9479346B017C01C092C507D092C60706 +:10255000E092C707F092C8078091C9079091CA0717 +:10256000019769F5A501940160E070E0CB010E943C +:102570000C346093BD077093BE078093BF079093A0 +:10258000C007A301920160E070E0CB010E940C340F +:102590006093C1077093C2078093C3079093C407E9 +:1025A000A701960160E070E0CB010E940C346093BB +:1025B000C5077093C6078093C7079093C8070F900D +:1025C0000F900F900F90DF91CF911F910F91FF907F +:1025D000EF90DF90CF90BF90AF909F908F907F90C3 +:1025E0006F905F904F90089580389105B0F46034FB +:1025F000710598F4EDEBF3E290E1969FD001A0789D +:102600001124A80F6770E60FF11D9491A85FBC4FCD +:10261000442321F08C91982B9C93089590958C9154 +:102620009823FACFDF92EF92FF920F931F93CF93ED +:10263000DF937C01D22E8B01040F111DEB0177FF7C +:1026400002C0D0E0C0E0C8010134110514F080E4FC +:1026500090E0C817D9073CF44D2DBE01C7010E9478 +:10266000F4122196F0CFDF91CF911F910F91FF903F +:10267000EF90DF900895CF92DF92EF92FF920F9349 +:102680001F93CF93DF936B01122FEC017C01E40EBB +:10269000F11CCE15DF0544F4202F412FB601CE01E9 +:1026A0000E9412132196F5CFDF91CF911F910F91C8 +:1026B000FF90EF90DF90CF9008952F923F924F922E +:1026C0005F926F927F928F929F92AF92BF92CF92C2 +:1026D000DF92EF92FF920F931F93CF93DF9300D07F +:1026E0001F92CDB7DEB7C22ED12C9601280F391F0D +:1026F00037FD4FC0803891050CF04BC0E9824A018C +:102700007B013C01402E512C160127E0220E311C8A +:1027100093E0359427949A95E1F78B01B12CA12C85 +:102720001B821A82EA81FB8183E0F595E7958A9501 +:10273000E1F7EA0DFB1DE80DF91DE4918A819B810B +:102740008770992720E830E002C0359527958A9553 +:10275000E2F7C901F0E0E223F923EF2B41F04981D0 +:10276000B8018A819B81860D971D0E94F4128A818F +:102770009B8101969B838A838C159D059CF2A20CFC +:10278000B31C0F5F1F4FC8018E199F098415950553 +:102790003CF20F900F900F90DF91CF911F910F910E +:1027A000FF90EF90DF90CF90BF90AF909F908F9071 +:1027B0007F906F905F904F903F902F9008950F9370 +:1027C0001F93CF93DF93EC018B0140E001960E94B1 +:1027D000F41240E0B801CE0101970E94F412B80152 +:1027E0006F5F7F4F40E0CE010E94F412B80161504C +:1027F000710940E0CE010E94F41240E0B801CE0120 +:10280000DF91CF911F910F910C94F41280E0E8E0DA +:10281000F3E081118FEF0024819381938193819361 +:102820000394D1F7EDEEF7E0178616861586148629 +:1028300008956F927F928F929F92AF92BF92CF92A4 +:10284000DF92EF92FF920F931F93CF93DF93803825 +:1028500091050CF057C0603471050CF053C07B013A +:1028600037E0E322FF2433E0759567953A95E1F769 +:10287000DB01B695BA2FAA27B795A7955D01C0E8E9 +:10288000AC0EB11CA80EB91EA80FB91FA85FBC4F93 +:1028900000E810E0081B190B90E080E0E8E0F0E0B1 +:1028A0004F018E189F0830E0FA01E80FF91FC4911C +:1028B0007D906D01D1E0CD1AD1080E2C01C0CC0F56 +:1028C0000A94EAF77C2AE6017882E114F10499F08F +:1028D0006730710581F0E491EC01CA0DDB1DC85F22 +:1028E000DC4FF0E0082C02C0F595E7950A94E2F77A +:1028F000F881EF2BE8830196821793071CF40817E1 +:10290000190791F6DF91CF911F910F91FF90EF90F2 +:10291000DF90CF90BF90AF909F908F907F906F90FF +:102920000895AF92BF92CF92DF92EF92FF920F93F2 +:102930001F93CF93DF936C017B018B01040F151F55 +:10294000EB015E01AE18BF08C017D10759F06991BD +:10295000D601ED91FC910190F081E02DC601099521 +:10296000892B79F7C501DF91CF911F910F91FF90CE +:10297000EF90DF90CF90BF90AF900895FC01538D02 +:10298000448D252F30E0842F90E0821B930B541749 +:1029900010F0CF96089501970895FC01918D828DD6 +:1029A000981761F0A28DAE0FBF2FB11D5D968C916F +:1029B000928D9F5F9F73928F90E008958FEF9FEFAE +:1029C0000895FC01918D828D981731F0828DE80F6A +:1029D000F11D858D90E008958FEF9FEF0895FC0124 +:1029E000918D228D892F90E0805C9F4F821B9109F1 +:1029F0008F739927089588E097E00E94EF1421E0F3 +:102A0000892B09F420E0822F089580E090E0892B43 +:102A100029F00E94FB1481110C9400000895FC0120 +:102A2000A48DA80FB92FB11DA35ABF4F2C91848D2F +:102A300090E001968F739927848FA689B7892C938C +:102A4000A089B1898C91837080648C93938D848DDF +:102A5000981306C00288F389E02D80818F7D8083E2 +:102A60000895EF92FF920F931F93CF93DF93EC01A2 +:102A700081E0888F9B8D8C8D98131AC0E889F98925 +:102A8000808185FF15C09FB7F894EE89FF89608328 +:102A9000E889F98980818370806480839FBF81E0A9 +:102AA00090E0DF91CF911F910F91FF90EF900895EB +:102AB000F62E0B8D10E00F5F1F4F0F731127E02EC6 +:102AC0008C8D8E110CC00FB607FCFACFE889F989FE +:102AD000808185FFF5CFCE010E940F15F1CFEB8DE0 +:102AE000EC0FFD2FF11DE35AFF4FF0829FB7F894D2 +:102AF0000B8FEA89FB8980818062CFCFCF93DF93F0 +:102B0000EC01888D8823B9F0AA89BB89E889F98905 +:102B10008C9185FD03C0808186FD0DC00FB607FC3A +:102B2000F7CF8C9185FFF2CF808185FFEDCFCE016D +:102B30000E940F15E9CFDF91CF910895833081F086 +:102B400028F4813099F08230A9F008958730A9F0F7 +:102B50008830C9F08430B1F4809180008F7D03C04B +:102B6000809180008F7780938000089584B58F775F +:102B700084BD089584B58F7DFBCF8091B0008F77A1 +:102B80008093B00008958091B0008F7DF9CFCF93EE +:102B9000DF93282F30E0F901EB53FC4D8491F901CC +:102BA000E255FE4DD491F901E656FE4DC491CC2379 +:102BB000A1F081110E949E15EC2FF0E0EE0FFF1F97 +:102BC000E057FE4DA591B491EC91ED2381E090E0AA +:102BD00009F480E0DF91CF91089580E090E0FACF92 +:102BE0001F93CF93DF93282F30E0F901EB53FC4D77 +:102BF0008491F901E255FE4DD491F901E656FE4D5E +:102C0000C491CC23A9F0162F81110E949E15EC2FA0 +:102C1000F0E0EE0FFF1FEA57FE4DA591B4918FB77C +:102C2000F894EC91111108C0D095DE23DC938FBF8E +:102C3000DF91CF911F910895DE2BF8CFCF93DF93D3 +:102C400090E0FC01E255FE4D249186569E4DFC011C +:102C500084918823C9F090E0880F991FFC01E45803 +:102C6000FE4DA591B491FC01EA57FE4DC591D4915A +:102C700061110DC09FB7F8948C91209582238C939D +:102C80008881282328839FBFDF91CF9108956230E8 +:102C900051F49FB7F8943C91822F809583238C93B5 +:102CA000E8812E2BEFCF8FB7F894EC912E2B2C933D +:102CB0008FBFEACFCF93DF93EC0161E089E00E9400 +:102CC0001E16209731F460E089E0DF91CF910C94DB +:102CD000F015CF3FD10511F461E0F6CFEEECF3E251 +:102CE000E491E33029F140F4E130B1F0E230D9F081 +:102CF000C038D1058CF7E7CFE73021F1E83051F14A +:102D0000E430B1F780918000806280938000D0939E +:102D10008B00C0938A0004C084B5806884BDC7BDA1 +:102D2000DF91CF91089584B5806284BDC8BDF8CF8E +:102D300080918000806880938000D0938900C09348 +:102D40008800EECF8091B00080688093B000C0937F +:102D5000B300E6CF8091B00080628093B000C09352 +:102D6000B400DECF3FB7F8948091D2029091D302A5 +:102D7000A091D402B091D50226B5A89B05C02F3FE3 +:102D800019F00196A11DB11D3FBFBA2FA92F982F91 +:102D90008827BC01CD01620F711D811D911D42E08C +:102DA000660F771F881F991F4A95D1F708958F9254 +:102DB0009F92AF92BF92CF92DF92EF92FF924B0120 +:102DC0005C010E94B2166B017C010E94B2166C1964 +:102DD0007D098E099F09683E734081059105A8F31E +:102DE00021E0821A9108A108B10888EEC80E83E09C +:102DF000D81EE11CF11C81149104A104B10429F72F +:102E0000FF90EF90DF90CF90BF90AF909F908F900A +:102E100008952FB7F8946091CE027091CF028091FF +:102E2000D0029091D1022FBF089584E98093BC0015 +:102E30008091BC0084FDFCCF08958093BB0084E8A2 +:102E40008093BC008091BC0087FFFCCF089584EA8A +:102E50008093BC008091BC0087FFFCCF88E70C9476 +:102E60001D170E94271780E48093BB0084E880939D +:102E7000BC00E8E0F3E09091BC0097FFFCCF91919B +:102E80009093BB008093BC0097E0E830F90799F776 +:102E90008091BC0087FFFCCF0C941517CF93C82FEF +:102EA0000E94271780E00E941D178C2F0E941D177B +:102EB000CF910C941517480F592F511D41385105CA +:102EC00014F040E850E0481BFB0177FD379633E0F3 +:102ED000F595E7953A95E1F7F695FE2FEE27F795EC +:102EE000E795E80FF91FE85FFC4F6770772781E0EF +:102EF00090E001C0880F6A95EAF7382F213041F43D +:102F0000415078F08191DF011197832B8C93F8CF9A +:102F10008095415030F09191DF01119798239C9357 +:102F2000F8CF0895CF92DF92EF92FF920F93CF9355 +:102F3000DF936C017B01C42FD22F202F0E945B17DF +:102F4000B7016D0F711D61507109603471052CF46A +:102F5000202F4C2FC6010E945B17202F4D2FB70149 +:102F6000C6010E941213C6018C0F911D202F4D2FF8 +:102F7000B7010197DF91CF910F91FF90EF90DF9014 +:102F8000CF900C9412132F923F924F925F926F92B8 +:102F90007F928F929F92AF92BF92CF92DF92EF92E9 +:102FA000FF920F931F93CF93DF93CDB7DEB72A978E +:102FB0000FB6F894DEBF0FBECDBF9A8389836A3007 +:102FC00061F5DC0152968C91B8E08B9F9001112441 +:102FD000E981FA8186859785820F931F9787868777 +:102FE0001586148681E090E02A960FB6F894DEBF2D +:102FF0000FBECDBFDF91CF911F910F91FF90EF904A +:10300000DF90CF90BF90AF909F908F907F906F9008 +:103010005F904F903F902F9008956D3019F3298164 +:103020003A813A872987D9011C96AD90BC90B0E8C7 +:10303000AB16B1040CF07BC0F901C684D784F0E470 +:10304000CF16D1040CF073C0D90152966C905297F0 +:1030500045E09501649E200D311D112412161306C2 +:103060000CF065C0262C312C910153E0220F331F48 +:103070005A95E1F72C0D3D1D121613060CF057C0A2 +:103080005196BC91BB83E985FA85F089FC83649FE6 +:10309000B00111249B012458334E3A832983712CAB +:1030A000E981FA818491F5E07F1201C080E0460158 +:1030B00038E0532E282F30E03E832D834C8080FF54 +:1030C0004B80411004C03B818C813817E1F010E047 +:1030D00000E00615C0F4D501A00FB11FB887AF837B +:1030E000F12CE12CE61460F4B701680D791D442D34 +:1030F0008F8198850E94F412BFEFEB1AFB0AF2CF82 +:103100000F5F1F4FE6CF8D819E81959587955A94CD +:10311000820C931C5110CECF7394E981FA813196C1 +:10312000FA83E983A20CB31CF6E07F12B9CFA9851C +:10313000BA8552962C915297422F50E01C968D9151 +:103140009C91B6E02B9F800D911D1124E985FA8595 +:10315000958784872389222309F444CF6AEF640387 +:103160009001659F300D112420583F4F28173907D3 +:103170000CF038CFDF010190F081E02D0190F0815B +:10318000E02D6AE0CD0109952DCF0F931F93CF93CA +:10319000DF938C01D0E0C0E0F801EC0FFD1F6491DB +:1031A000662341F08DEE97E00E94C317892B11F042 +:1031B0002196F2CFCE01DF91CF911F910F9108950B +:1031C000682F8DEE97E00C94C317089590E080E08F +:1031D000089580917A00806980937A008EE48093CC +:1031E0007C0061E070E080E090E00E94D71683B739 +:1031F000817F826083BF80E130E020E093B79160FF +:1032000093BF889593B79E7F93BF90917A0096FD68 +:10321000FCCF4091780050917900240F351F8150E8 +:1032200069F780917A008F7780937A0084E03695F1 +:1032300027958A95E1F750E040E064EB7BE281E17D +:1032400090E00E94B133C901089588EC80937C001E +:1032500080917A00806880937A0065E070E080E079 +:1032600090E00E94D71680917A00806480937A0063 +:1032700080917A0086FDFCCF609178007091790092 +:103280006A54714090E080E00E947C3226EF38E280 +:103290004CE95FE30E947934089590917A00906937 +:1032A00090937A008E50806480937C0083B7817FF6 +:1032B000826083BF20E290E080E033B7316033BFAB +:1032C000889533B73E7F33BF30917A0036FDFCCF0F +:1032D0004091780050917900840F951F215069F733 +:1032E00020917A002F7720937A0025E09695879594 +:1032F0002A95E1F708958FE00E944D19A091D90217 +:10330000B091DA029C010E94FD330E947E3228E5D2 +:1033100039E743E353E40E9479340E94F234CB014D +:1033200008952091E70230E0E5E6F2E090E080E0E9 +:10333000AF01455652404217530724F44191840F80 +:10334000911DF6CF08958091E002882369F086E010 +:103350000E94C715892B41F06AE070E080E090E0A0 +:103360000E94D7161092E00208950F931F93CF93F7 +:1033700080914801882399F0CFEF0FEE11E061E0D2 +:1033800085E00E94F015C8010197F1F760E085E043 +:103390000E94F015C8010197F1F7C15081F7CF9154 +:1033A0001F910F9108952F923F924F925F926F92CB +:1033B0007F928F929F92AF92BF92CF92DF92EF92C5 +:1033C000FF920F931F93CF93DF9310E000E0D0E0C4 +:1033D000C0E03EE3E32EF12C40ECC42ED12CAA2415 +:1033E000A394B12C60E2662E712C70E4272E312C50 +:1033F0004C2E86E00E94C71521E0892B09F020E0C1 +:103400002093E002F092E602E092E502D092E4021C +:10341000C092E302B092E202A092E10282E890E060 +:103420009093F2028093F1028091F1029091F20266 +:1034300095958795582E9FE1591243C0F092E60268 +:10344000E092E502D092E402C092E302B092E2027E +:10345000A092E102EEEBF0E0F093F202E093F102D1 +:103460009FE5592E0E94061482E08093FF07109377 +:10347000FA070093F907E0E3F0E0F093FC07E0932C +:10348000FB078EE50E94E0181092FA071092F907E8 +:103490007092FC076092FB07912C812C841438F504 +:1034A00080910703F40196E0989FE00DF11D11242F +:1034B000E05BFE4F80810E94E018EFEF8E1A9E0ABB +:1034C000EDCFF0E65F12CECFF092E602E092E50299 +:1034D000D092E402C092E302B092E202A092E10232 +:1034E0003092F2022092F10280E2582EBBCF10936C +:1034F000FA070093F9077092FC076092FB07852D8D +:103500000E94E0180E94A3190E94311786E00E94D1 +:10351000C715892B09F088CF8091E002811184CFF3 +:1035200080900703F6E08F9E40011124C401805B68 +:103530009E4F4C01FC01EC0FFD1F50820E94B519FB +:103540006AE070E080E090E00E94D7162196005F6C +:103550001F4FC530D10509F04BCFF4011582DF9123 +:10356000CF911F910F91FF90EF90DF90CF90BF9080 +:10357000AF909F908F907F906F905F904F903F9013 +:103580002F9008953F924F925F926F927F928F9209 +:103590009F92AF92BF92CF92DF92EF92FF920F93E2 +:1035A0001F93CF93DF93CDB7DEB72E970FB6F89466 +:1035B000DEBF0FBECDBF80910403882309F4A5C1EF +:1035C0001092A5071092A6071092A7071092A807BD +:1035D0008090A5079090A607A090A707B090A80795 +:1035E000C090FA02D090FB02E090FC02F090FD0245 +:1035F000A7019601C501B4010E940C342B013C01C6 +:1036000020E030E0A9010E94213518160CF0A0C17D +:10361000C301B2010E94F23480914901882309F468 +:10362000B8C1C092AD07D092AE07E092AF07F0925A +:10363000B007E12CF12C00EA10E420E030E040E497 +:1036400050E46E31710540F0E12CF12C00E81FE3ED +:1036500020E030E040E05FE360E070E080E391E490 +:103660000E9418128091EB07882309F42AC10E9456 +:1036700009176D837E838F8398878091D3079091FC +:10368000D407A091D507B091D6074D815E816F8197 +:103690007885481B590B6A0B7B0B8091DF07909153 +:1036A000E007A091E107B091E207481759076A07C0 +:1036B0007B0708F406C1E091CD07F091CE07808129 +:1036C0009181A281B38189839A83AB83BC83E0918A +:1036D000D107F091D2079C01AD0160817181828197 +:1036E00093810E940C344B015C012091DB073091E7 +:1036F000DC074091DD075091DE0769817A818B817B +:103700009C810E940C346B017C012091C107309197 +:10371000C2074091C3075091C407C501B4010E947C +:10372000DD322091D7073091D8074091D9075091C9 +:10373000DA070E940D342B013C014092D7075092CA +:10374000D8076092D9077092DA073090EC073110F1 +:103750001AC02091BD073091BE074091BF0750911C +:10376000C007C701B6010E94DD329B01AC01C30155 +:10377000B2010E940C346093D7077093D8078093EE +:10378000D9079093DA074090D7075090D8076090F8 +:10379000D9077090DA071091E7079091E8079E87A4 +:1037A000A091E907AD870091EA07212F392F4A2F11 +:1037B000502FC301B2010E94213518160CF0CCC065 +:1037C000812F9E85AD85B02F8093D7079093D80722 +:1037D000A093D907B093DA07332009F4D6C020911B +:1037E000BD073091BE074091BF075091C007C5018A +:1037F000B4010E94DD324B015C012091C50730917C +:10380000C6074091C7075091C807C701B6010E947B +:10381000DD329B01AC016091D7077091D807809190 +:10382000D9079091DA070E940C34A50194010E94F7 +:103830000D346B017C019B01AC01612F7E858D8570 +:10384000902F0E94773287FD18C01091E307909166 +:10385000E4079E87A091E507AD870091E607212F39 +:10386000392F4A2F502FB601C7010E94773287FDAA +:1038700004C01C2DDE86ED860F2DE091CF07F09160 +:10388000D007812F9E85AD85B02F80839183A28341 +:10389000B38389819A81AB81BC818093DB0790934C +:1038A000DC07A093DD07B093DE078D819E81AF8199 +:1038B000B8858093D3079093D407A093D507B0938E +:1038C000D6076091A9077091AA078091AB079091E4 +:1038D000AC070E94EB34CB012E960FB6F894DEBFF6 +:1038E0000FBECDBFDF91CF911F910F91FF90EF9051 +:1038F000DF90CF90BF90AF909F908F907F906F9010 +:103900005F904F903F900C945A1680910303609102 +:1039100044017091450181110EC08091F80290918F +:10392000F90220910203BC01222329F06091430196 +:10393000680F792F711D90E080E00E947C326093C7 +:10394000A5077093A6078093A7079093A80740CE7A +:10395000C301B20190585ECE8091E3079091E407D5 +:10396000A091E507B091E60789879A87AB87BC8766 +:103970009C01AD01C301B2010E94773287FF2CCFB9 +:1039800089859A85AB85BC851FCF812C912C5401EC +:1039900034CF20E030E040E05FE3C701B6010E9491 +:1039A0000D349B01AC01C501B4010E9421351816EC +:1039B0004CF41092A9071092AA071092AB0710922C +:1039C000AC077FCF80E090E0AFE7B3E48093A90736 +:1039D0009093AA07A093AB07B093AC0772CF4F9216 +:1039E0005F926F927F928F929F92AF92BF92CF928F +:1039F000DF92EF92FF92CF93DF938090DB02909063 +:103A0000DC02A090DD02B090DE02C0910703D0E09E +:103A1000C501B4010E94EB346B017C0120E030E071 +:103A200048E453E4C501B4010E94773293E0CC0F1F +:103A3000DD1F9A95E1F7CE5FDE4F87FF31C0288109 +:103A4000398150E040E02551310941095109C70150 +:103A5000B6010E94B03628EC30E040E050E00E9411 +:103A6000B133CA01B9016B5E7F4F8F4F9F4F0E94E8 +:103A70007E326093FA027093FB028093FC02909373 +:103A8000FD02DF91CF91FF90EF90DF90CF90BF903C +:103A9000AF909F908F907F906F905F904F90089520 +:103AA0004A805B80712C612C20E030E04CE853E4CC +:103AB000C501B4010E94773287FF1FC088809980BA +:103AC000B12CA12CA7019601285C310941095109AB +:103AD000C301B201681979098A099B090E94B036AD +:103AE00020E530E040E050E00E94B133CA01B90166 +:103AF000680D791D8A1D9B1DBACF2C813D8150E038 +:103B000040E02419350946095709C701B601685133 +:103B10007140810991090E94B03620E530E040E013 +:103B200050E00E94B133CA01B901640D751D861DB4 +:103B3000971D9DCFFC0101900020E9F73197AF015F +:103B4000481B590BBC018DEE97E00C9491148F9299 +:103B50009F92AF92BF920F931F93CF93DF93CDB7F6 +:103B6000DEB7A1970FB6F894DEBF0FBECDBF19A286 +:103B7000423008F44AE08E010F5D1F4F842E912CD5 +:103B8000B12CA12CA50194010E94DB33E62FB901D1 +:103B9000CA01EA30F4F4E05DD801EE938D01232BE5 +:103BA000242B252B79F790E080E0109719F0CD01B8 +:103BB0000E949A1DA1960FB6F894DEBF0FBECDBF2E +:103BC000DF91CF911F910F91BF90AF909F908F90F9 +:103BD0000895E95CE1CFCF92DF92EF92FF92CF930D +:103BE000DF9397FF19C06B017C018DE20E94E01802 +:103BF000EC0166277727CB016C197D098E099F0997 +:103C00004AE00E94A71D8C0F9D1FDF91CF91FF906E +:103C1000EF90DF90CF9008954AE0DF91CF91FF9031 +:103C2000EF90DF90CF900C94A71D4F925F926F9210 +:103C30007F928F929F92AF92BF92CF92DF92EF923C +:103C4000FF920F931F93CF936B017C01742EAC01F5 +:103C50009B010E947635882399F089EA92E0CF9102 +:103C60001F910F91FF90EF90DF90CF90BF90AF909A +:103C70009F908F907F906F905F904F900C949A1DC3 +:103C800046015701E894B7F82FEF3FEF4FE75FE7A2 +:103C9000C501B4010E94763581110DC02FEF3FEFB1 +:103CA0004FE75FE7C501B4010E94773218161CF494 +:103CB0008DEA92E0D4CF2FEF3FEF4FE75FE4C701EB +:103CC000B6010E94213518161CF481EB92E0C7CF93 +:103CD0002FEF3FEF4FE75FECC701B6010E9477324D +:103CE00087FDF3CF20E030E0A901C701B6010E94B3 +:103CF000773210E000E087FF08C08DE20E94E018F4 +:103D00008C01F7FAF094F7F8F094C0E060E070E00E +:103D100080E09FE37C1641F020E030E040E251E497 +:103D20000E947934CF5FF6CFA70196010E940D342F +:103D30002B013C010E94F2344B015C014AE00E94DD +:103D4000A71D7C01E00EF11ECC23B1F1C501B40129 +:103D50000E947C329B01AC01C301B2010E940C3471 +:103D60004B015C018EE20E94E018E80EF91EC15082 +:103D700018F120E030E040E251E4C501B4010E94B6 +:103D8000DD322B013C010E94F2344B01B12CA12CFD +:103D90004AE0C501B4010E94A71DE80EF91EC50145 +:103DA000B4010E947C329B01AC01C301B2010E94AC +:103DB0000C344B015C01DBCFC701CF911F910F91F8 +:103DC000FF90EF90DF90CF90BF90AF909F908F903B +:103DD0007F906F905F904F900895CF92DF92EF9217 +:103DE000FF920F931F93CF93DF93C82F81E0DC2FB7 +:103DF000D827D093FE07C093FD078093FF070C2FB1 +:103E00002EE046E661E370E081E090E00E949217C8 +:103E10002091050330910603253F81E03807B8F46F +:103E2000A4E6B0E00E94FD3324EF31E040E050E032 +:103E30000E94B133BA01A9014E5F5F4F6F4F7F4FB0 +:103E40002EE061E370E081E090E00E943B1360911E +:103E5000A5077091A6078091A7079091A8070E94D7 +:103E6000EB349B01AC01A4E6B0E00E94D03334EF08 +:103E7000C32EDD24D394E12CF12CA70196010E94DE +:103E8000B133DA01C9010296A11DB11D02970C2FB1 +:103E90002DE043E062E370E00E943B136091A507D0 +:103EA0007091A6078091A7079091A8070E94EB3414 +:103EB0009B01AC01A4E6B0E00E94D033A7019601BB +:103EC0000E94B133DA01C9010296A11DB11D039709 +:103ED00024E045E06CE370E00E943B136091A5078D +:103EE0007091A6078091A7079091A8070E94EB34D4 +:103EF0009B01AC01A4E6B0E00E94D033A70196017B +:103F00000E94B13389019A010E5F1F4F2F4F3F4F1F +:103F10000150110941E3E42EF12C4D2FB701C801E6 +:103F20000E94F4128FEFE81AF80A8DE3E816F10404 +:103F3000A1F76091A5077091A6078091A7079091BE +:103F4000A8070E94EB349B01AC01A4E6B0E00E94FC +:103F5000D03324EF31E040E050E00E94B133DA0189 +:103F6000C9010296A11DB11D0397ED2E04E025E0C5 +:103F700045EC51E16BE370E00E945D130C2F2EE0E5 +:103F800047E161E370E088E690E00E94921760915B +:103F9000A9077091AA078091AB079091AC070E9486 +:103FA000EB349B01AC012F5F310941095109A7E1B5 +:103FB000B0E00E94D033CC24C394DD24DA94ED2CFD +:103FC000FD2CA70196010E94B133422F2EE061E340 +:103FD00070E088E690E00E943B13C093FE07D09308 +:103FE000FD0782E090E09093FA078093F90707E3DA +:103FF00010E01093FC070093FB076091A5077091F8 +:10400000A6078091A7079091A80740E00E94151E7F +:1040100088EF0E94E01883EC91E10E94C51889E6C0 +:1040200090E09093FA078093F9071093FC070093B0 +:10403000FB076091A9077091AA078091AB07909147 +:10404000AC070E94EB349B01AC012F5F31094109A1 +:104050005109A4E6B0E00E94D033A70196010E9466 +:10406000B133CA01B9010E94EB1D81EC91E10E94BC +:10407000C518D093FE07C093FD07DF91CF911F9124 +:104080000F91FF90EF90DF90CF9008956F927F9205 +:104090008F929F92AF92BF92CF92DF92EF92FF9258 +:1040A0000F931F93CF93DF93B090070377247394FC +:1040B000B11001C0712C809142018150990B109276 +:1040C000E6021092E502880F991F9093E402809314 +:1040D000E30281E090E09093E2028093E1028B2D75 +:1040E00090E0880F991F9093F2028093F10286E08E +:1040F0000E94C71521E0892B09F020E02093E002FF +:10410000FF24F39472E0972EE6E08E2EFCE0CF2E93 +:10411000D12C0E940614C091F102D091F202D595E3 +:10412000C795EC2E8E011127C801870D911D77FCD4 +:104130009A958B199109712C97FD06C083309105D2 +:1041400014F082E090E0782EF092FE071092FD07C6 +:104150009092FF071092FA071092F9071092FC074D +:104160001092FB0781E79CE10E94C5181092FE07A0 +:10417000F092FD071092FA071092F907A72C072C6E +:10418000000CBB08C501019654E0880F991F5A9591 +:10419000E1F79093FC078093FB078FE69CE10E9478 +:1041A000C5186C2E671890E080E098012A193B0929 +:1041B0005901209142018C010F5F1F4F6216D0F40C +:1041C000D092FA07C092F907980144E0220F331FFA +:1041D0004A95E1F73093FC072093FB078A0D9B1D5E +:1041E000889E9001899E300D1124C901805B9E4FED +:1041F0000E949A1DC801639403301105D1F60E94F4 +:10420000A3190E94311786E00E94C715892BB9F4C3 +:104210008091E002811113C00E94B519E09207035A +:10422000DF91CF911F910F91FF90EF90DF90CF9092 +:10423000BF90AF909F908F907F906F900895BC2E0D +:1042400068CF0E94EE361F93CF93DF93EC01162FB9 +:104250000E949B33181739F0612FCE01DF91CF9167 +:104260001F910C94A333DF91CF911F910895AF92CA +:10427000BF92CF92DF92EF92FF920F931F93CF9353 +:10428000DF936091470182E090E00E9423216091DA +:10429000460183E090E00E9423216091450184E083 +:1042A00090E00E9423216091440185E090E00E940B +:1042B00023216091430186E090E00E9423216091D8 +:1042C0004C0187E090E00E94232160914B0188E03F +:1042D00090E00E94232160914A0189E090E00E94D1 +:1042E0002321609180018AE090E00E942321609167 +:1042F00049018BE090E00E942321609148018CE00D +:1043000090E00E942321609107038DE090E00E94DD +:104310002321609142018EE090E00E942321609170 +:104320004E018FE090E00E9423216091DF0280E146 +:1043300090E00E9423216091FF0281E190E00E94C1 +:10434000232182E1E82EF12C10E006E08091420169 +:104350001817B8F5109F60011124D0E0C0E0FE01ED +:10436000EC0DFD1DE05BFE4F6081C7018C0F9D1FB2 +:104370000E9423212196C630D10589F7670186E086 +:10438000C80ED11C88E0189FE0011124CE5FDE4FDB +:104390008EE0E80EF11C69812296C6010E9423215D +:1043A000560182E0A80EB11CFE0132976081C60161 +:1043B00001960E9423216501AE14BF0461F71F5FBF +:1043C000C5CFDF91CF911F910F91FF90EF90DF90BC +:1043D000CF90BF90AF9008958F929F92AF92BF926F +:1043E000CF92DF92EF92FF92CF938FEF90E00E94F7 +:1043F0005A168BEA94E00197F1F78EE00E944D196E +:104400007C018AE00E94C7159091B802981729F0A4 +:1044100091E09093FE028093B802809101019FEF9A +:10442000980F90930101811106C00E947B1990930F +:104430000103809300036091A9077091AA078091FE +:10444000AB079091AC070E94EB34CB010E945A1647 +:104450008090DB029090DC02A090DD02B090DE0242 +:10446000B70190E080E00E947C32A50194010E9497 +:104470000C342DEC3CEC4CE45DE30E94DD32A501F4 +:1044800094010E940D346093DB027093DC028093F0 +:10449000DD029093DE020E94EF1C60910503709193 +:1044A000060390E080E00E947C326B017C01209149 +:1044B000A5073091A6074091A7075091A8070E9431 +:1044C00077328111B5C02091FA023091FB02409100 +:1044D000FC025091FD02C701B6010E940C346B0131 +:1044E0007C0120E030E0A9010E94213518160CF073 +:1044F00095C020E030E040EA50E4C701B6010E94D8 +:10450000213518160CF494C06091F8027091F902EC +:1045100090E080E00E947C322091FA023091FB0210 +:104520004091FC025091FD020E940C346B017C0111 +:1045300020E030E0A9010E94213518160CF087C058 +:10454000C701B6010E94F2346530710508F083C0DE +:1045500080914F01811105C080914D0181110E9410 +:10456000B51981E080934F0110924D0180910503B0 +:1045700090910603853F21E0920710F01092000110 +:1045800020910001211140C0843F9140E8F58FEF58 +:1045900090E00E945A160E94B519C1E0C093000134 +:1045A0000E9446200E943721C093FE028EE00E94A6 +:1045B0004D19BC0190E080E00E947C326093DB02E8 +:1045C0007093DC028093DD029093DE021092F00281 +:1045D0008091F8029091F9022CE231E03093E602EA +:1045E0002093E50220E233E03093E4022093E302DB +:1045F0002AE030E03093E2022093E102880F991F15 +:104600009093F2028093F102CF91FF90EF90DF90B0 +:10461000CF90BF90AF909F908F90089520E030E0B2 +:1046200040EA50ECC701B6010E94773287FF6CCF99 +:104630006091FA027091FB028091FC029091FD0260 +:104640000E94F23470930603609305035DCFC701A7 +:10465000B601905877CF10924F0188CF0C949B33BE +:104660002F923F924F925F926F927F928F929F9282 +:10467000AF92BF92CF92DF92EF92FF920F931F9370 +:10468000CF93DF938C0186E08093FF0781E08093D6 +:10469000FE071092FD076091CB027091CC02072EAD +:1046A000000C880B990B0E947E322B013C0145ECDB +:1046B000C42E42E0D42E7601C2E0D0E05AE0A52E0E +:1046C000B12CBE010D2E000C880B990B0E947E327E +:1046D0009B01AC0160E070E080E291E40E9426352D +:1046E0009B01AC01C301B2010E9479340E94EB34FA +:1046F000CB01B5010E94C036F701819391937F01F0 +:104700002197F8F61093CC020093CB02C9EBD2E0CC +:1047100094E0E92EF12C22E0822E912C3AE0232E17 +:10472000312CB401092C000C880B990B0E947E32AD +:104730009B01AC0160E070E080E291E40E942635CC +:104740002B013C016091CB027091CC02072E000C32 +:10475000880B990B0E947E32A30192010E9479344A +:104760000E94EB34CB01B1010E94C036F6012081DA +:104770003181821B930BF2E3F89FB001F99F700D1A +:104780001124072E000C880B990B0E947E32288181 +:1047900039814A815B810E940D342B013C0120E06C +:1047A00030E0A9010E94773281117CC04882598291 +:1047B0006A827B8201E022E346E270E060E0C701AA +:1047C00004970E943B138EECA82EBB24BA940FEFE3 +:1047D0001FEF288139814A815B8160E070E080E8C9 +:1047E00090E40E940C342B013C01B5010B2C000C11 +:1047F000880B990B0E947E329B01AC01C301B20170 +:104800000E940D340E94EB34F092FA07E092F9070F +:104810007093FC076093FB07F60160817181600F64 +:10482000711F072E000C880B990B0E94EB1D0F5F68 +:104830001F4FF2E3AF0EB11C0230110551F6249662 +:1048400021E0821A910882E0C80ED11CECE2EE0E43 +:10485000F11CF8E8EF16F10409F063CF00E022E064 +:1048600040E870E060E090E080E00E943B132DE0C3 +:1048700040E863E370E090E080E00E943B13DF914A +:10488000CF911F910F91FF90EF90DF90CF90BF904D +:10489000AF909F908F907F906F905F904F903F90E0 +:1048A0002F900895C301B20190582DEC3CEC4CE4DC +:1048B0005FE30E94DD32A30192010E940D34688300 +:1048C00079838A839B8376CF86E00E94C71521E097 +:1048D000892B09F020E02093E0020E9406148091C9 +:1048E000F1029091F202959587950E9430230E94E3 +:1048F00031170E94A31986E00E94C715892B69F71A +:104900008091E0028111E9CF0E94B5198091CB021C +:104910009091CC0208952F923F924F925F926F92A6 +:104920007F928F929F92AF92BF92CF92DF92EF923F +:10493000FF920F931F93CF93DF93CDB7DEB76597A9 +:104940000FB6F894DEBF0FBECDBF182FE091E7027F +:10495000F0E0EB59FD4F80818150990B1092E602F7 +:104960001092E502880F991F9093E4028093E3026E +:1049700081E090E09093E2028093E102812F90E049 +:10498000880F991F9093F2028093F10286E00E94B3 +:10499000C71521E0892B09F020E02093E002109256 +:1049A000FE0781E08093FD078091F1029091F20271 +:1049B0009C01359527953D872C873C853D8B6C84E4 +:1049C0007D8477249301211B310948E3429FC00174 +:1049D000439F900D1124280E391E2114310409F132 +:1049E0006627772762197309072E000C880B990B2D +:1049F0000E947E322AE939E949E15FE30E94DD3213 +:104A00004B015C01B101330C880B990B0E947E3283 +:104A10009B01AC01C501B4010E940D340E94EB342E +:104A20001B010E940614430182E0881A910861016B +:104A300098E4C91AD108F3013396FC8BEB8B97FCF1 +:104A40008AC0E091E702F0E0EB59FD4F80818815C4 +:104A5000190409F00CF47FC001E020E340E370E0AA +:104A600060E0C6010E943B1396012D5F3F4F3A8BD9 +:104A7000298B00E02AE24AE263E070E089899A89A2 +:104A80000E943B1370E060E0C6010E94DF1370E0FB +:104A900060E08601015D1F4FC8010E94DF136FE2D5 +:104AA00070E0C6010E94DF136FE270E0C8010E944F +:104AB000DF130E949119F401E80FF11DEE0FFF1FA3 +:104AC000E75EFD4F80819181988B8F8773E0E72EA1 +:104AD000F12C512C412CB12CA12CF50153E0F59572 +:104AE000E7955A95E1F7E40DF51D2F853889E20F1A +:104AF000F31FE491C5018770992720E830E002C0D8 +:104B0000359527958A95E2F7C901F0E0E223F9236C +:104B1000EF2B79F0C501880F991F8A0D9B1D01E0CD +:104B200023E043E0B701E989FA898E0F9F1F0E94B5 +:104B30003B13FFEFAF1ABF0A2EE0A216B10469F6CD +:104B400032E0430E511C43E0E40EF11C8DE2E81606 +:104B5000F10409F0C0CF9FEF891A990AE8E3CE0E5D +:104B6000D11C2B893C898216930609F068CF80916D +:104B70004E01811140C00E949119F301E80FF11D0F +:104B8000EE0FFF1FE353FE4F40815181EE24E3946B +:104B900000E124E260E370E080E390E00E945D13B6 +:104BA0000E9431170E94A31986E00E94C715892B25 +:104BB00001F58091E00281111CC00E94B5198D8918 +:104BC00065960FB6F894DEBF0FBECDBFDF91CF91D3 +:104BD0001F910F91FF90EF90DF90CF90BF90AF901B +:104BE0009F908F907F906F905F904F903F902F900D +:104BF00008951C85D9CE823009F083C00E94911996 +:104C0000860D972D911DFC01E75BF34EE490880F14 +:104C1000991FFC01EF57FE4F80809180D12CC12C51 +:104C200004E310E3CE1408F0BBCFF401EC0DFD1D3E +:104C3000449180E1840F833008F45EC03E85313FAB +:104C4000E9F0323FD1F1403F08F058C0193710F079 +:104C5000085F10E088E0489FA001112443585B4E94 +:104C6000602F70E028E0812F90E00E941914185FF7 +:104C700090EF9E873FEFC31AD30AD4CF4E39D0F7B7 +:104C80001D3710F0085F10E0A02EB12C612E712CA2 +:104C9000E3E04E9FA00111244D555D4E23E0B50188 +:104CA000C3010E94191421E042EA52E1B501C30197 +:104CB00003960E9419141C5FDDCF4F31D8F61937C7 +:104CC00010F0085F10E0A02EB12C612E712CF7E0DF +:104CD0004F9FA001112447535E4E27E0B501C30149 +:104CE0000E94191421E042EA52E1B501C30107967E +:104CF0000E941914185FBECF4E87BCCF20EF2E87BD +:104D0000B9CF80E390E09093FA078093F907E1E34D +:104D1000F0E0F093FC07E093FB0781E08093FF074E +:104D20000E949119FC858F0FE82FF0E0EE0FFF1F16 +:104D3000E350F44E65917491CE0101960E94703259 +:104D4000CE0101960E949A1D2BCF1F920F920FB693 +:104D50000F9211242F933F934F935F936F937F9301 +:104D60008F939F93AF93BF93EF93FF9388E097E068 +:104D70000E940F15FF91EF91BF91AF919F918F917D +:104D80007F916F915F914F913F912F910F900FBE47 +:104D90000F901F9018951F920F920FB60F9211242B +:104DA0002F938F939F93EF93FF93E0911807F091C8 +:104DB00019078081E0911E07F0911F0782FD1BC03B +:104DC0009081809121078F5F8F7320912207821736 +:104DD00041F0E0912107F0E0E85FF84F958F809374 +:104DE0002107FF91EF919F918F912F910F900FBE0F +:104DF0000F901F9018958081F4CF1F920F920FB6DD +:104E00000F9211242F933F938F939F93AF93BF9350 +:104E10008091CE029091CF02A091D002B091D102A8 +:104E20003091CD0223E0230F2D3758F50196A11DB7 +:104E3000B11D2093CD028093CE029093CF02A09318 +:104E4000D002B093D1028091D2029091D302A0916E +:104E5000D402B091D5020196A11DB11D8093D2025A +:104E60009093D302A093D402B093D502BF91AF9197 +:104E70009F918F913F912F910F900FBE0F901F9098 +:104E8000189526E8230F0296A11DB11DD2CF1F92BF +:104E90000F920FB60F9211242F933F934F935F936E +:104EA0006F937F938F939F93EF93FF9383B1817061 +:104EB00029B19091D802981709F49DC030E0220FD3 +:104EC000232F221F330B922F8093D8024091D702B9 +:104ED000241709F490C02093D7022091E102309169 +:104EE000E202981719F03195219531094091F102AC +:104EF0005091F2026091E5027091E602240F351F95 +:104F0000261737070CF48BC02091E1023091E202A2 +:104F1000981719F03195219531094091F10250917E +:104F2000F2026091E3027091E402240F351F6217D0 +:104F300073070CF46FC04091E1025091E2029817A0 +:104F400019F05195419551092091F1023091F202E9 +:104F5000240F351F3093F2022093F10241E09813A1 +:104F600040E02091D602421709F440C02091E102AE +:104F70003091E202981719F031952195310960912D +:104F8000F1027091F202E091E502F091E602260F43 +:104F9000371F2E173F070CF44CC02091E1023091CF +:104FA000E202981719F03195219531096091F102CB +:104FB0007091F202E091E302F091E402260F371FB4 +:104FC000E217F3078CF12091E1023091E202981789 +:104FD00019F03195219531098091F1029091F202F9 +:104FE000820F931F9093F2028093F1024093D602B6 +:104FF00081E08093FE02FF91EF919F918F917F91CD +:105000006F915F914F913F912F910F900FBE0F9035 +:105010001F9018952091E3023091E4029BCF2091DC +:10502000E5023091E60296CF8091E3029091E4028E +:10503000D9CF8091E5029091E602D4CF18950F93D5 +:105040001F93CF93DF93E8E0F7E01382128288EE9C +:1050500093E0A0E0B0E084839583A683B7838FE8D4 +:1050600092E09183808385EC90E09587848784EC3F +:1050700090E09787868780EC90E0918B808B81EC25 +:1050800090E0938B828B82EC90E0958B848B86EC06 +:1050900090E0978B868B118E128E138E148EEDEE10 +:1050A000F7E0138212821682178280E180871582D0 +:1050B0001482128681EA92E0918380831586148699 +:1050C0001786168681E0808B118A828B138AC1EB4A +:1050D000D7E029EA37E03F8F2E8F2DEA37E03D8F6A +:1050E0002C8F25EA37E039A328A31AAE1AAA1BAAE7 +:1050F0001CAA1DAA40E050E06FE773E44EAB5FAB23 +:1051000068AF79AF44E650E060E070E04EA75FA77B +:1051100068AB79AB21E030E0398F288F3B8F2A8F45 +:105120008BAF80E090E0A0E3B1E488839983AA8309 +:10513000BB8380E090E0A0E0BFE38C839D83AE83DF +:10514000BF8380E090E0A0E8BFE388879987AA87C3 +:10515000BB8780E090E0A0E3B1EC8C879D87AE87B1 +:10516000BF878DEC9CECACE4BDEB888B998BAA8B54 +:10517000BB8B80E090E0A0E2B1EC8C8B9D8BAE8B82 +:10518000BF8B0E9409170EA51FA528A939A9601B6E +:10519000710B820B930B6AA37BA38CA39DA3DF915E +:1051A000CF911F910F910895CF93DF93CDB7DEB7C5 +:1051B0002A970FB6F894DEBF0FBECDBF789484B5A2 +:1051C000826084BD84B5816084BD85B5826085BD03 +:1051D00085B5816085BD80916E00816080936E0091 +:1051E0001092810080918100826080938100809183 +:1051F0008100816080938100809180008160809334 +:1052000080008091B10084608093B1008091B000F3 +:1052100081608093B00080917A00846080937A00EE +:1052200080917A00826080937A0080917A00816018 +:1052300080937A0080917A00806880937A0010923F +:10524000C1001092B90088E48093B8000E9427172B +:1052500080E00E941D1702EC11E2E1EEEE2EE1E289 +:10526000FE2EF80184910E941D170F5F1F4FE0165C +:10527000F106B9F70E94151711E01093B8000E94CB +:10528000311781E28093F50760E08EE00E941E16E0 +:1052900060E08FE00E941E1661E085E00E941E160D +:1052A00061E089E00E941E1662E087E00E941E16FF +:1052B00062E088E00E941E1662E086E00E941E16F0 +:1052C00062E08AE00E941E168FEF90E00E945A165C +:1052D00060E085E00E94F01580917A0087608093FD +:1052E0007A0080917A00886080937A007894109395 +:1052F0006B00109368001BBB90E080E00E942E239F +:10530000182F81E090E00E942E23912F8F3F98402C +:1053100009F0BBC082E090E00E942E23182F83E0AA +:1053200090E00E942E23912F909347018093460195 +:1053300084E090E00E942E23182F85E090E00E94E8 +:105340002E23912F909345018093440186E090E0B5 +:105350000E942E238093430187E090E00E942E2339 +:1053600080934C0188E090E00E942E2380934B01B3 +:1053700089E090E00E942E2380934A018AE090E029 +:105380000E942E23809380018BE090E00E942E23C8 +:1053900091E0811101C090E0909349018CE090E090 +:1053A0000E942E2391E0811101C090E0909348016A +:1053B0008DE090E00E942E23809307038EE090E022 +:1053C0000E942E23282E809342018FE090E00E94BD +:1053D0002E2380934E0180E190E00E942E2391E0E5 +:1053E000811101C090E09093DF0281E190E00E9482 +:1053F0002E238093FF0252E0852E51E0952E60E52A +:10540000A62E61E0B62E72E1E72EF12C312C23148A +:1054100009F447C010E000E0C701800F911F0E940F +:105420002E23F501E00FF11F80830F5F1F4F063021 +:10543000110591F7670126E0C20ED11C3EE0E30E94 +:10544000F11C3401C6010E942E23082F10E0102FFA +:105450000027F301118300832601F2E04F0E511C57 +:10546000C60101960E942E23082BF301019311938C +:105470003F0162014E145F0429F73394F8E08F0E68 +:10548000911C26E0A20EB11CC2CF68E090E080E043 +:105490000E9423216FEF81E090E00E9423210E946F +:1054A00037211091DF0280EC111101C088EC0E94BD +:1054B0004E1780EA111101C081EA0E944E170E9426 +:1054C000E9189093DA028093D9020E947B19909395 +:1054D000010380930003009146011091470110934E +:1054E000F9020093F8028EE00E944D19BC0190E091 +:1054F00080E00E947C326093DB027093DC02809338 +:10550000DD029093DE020E9425190E94EF1C20E02C +:1055100030E040EA51E46091FA027091FB02809120 +:10552000FC029091FD020E940D346B017C01B801D8 +:1055300090E080E00E947C329B01AC01C701B60183 +:105540000E94773287FF04C090E080E00E945A16E4 +:105550001092E3071092E4071092E5071092E60715 +:10556000412C512C3FE7632E33E4732E4092E70722 +:105570005092E8076092E9077092EA07A090CF077F +:10558000B090D0078091EB07F501C080D180E28018 +:10559000F380882309F478C7A3019201C701B601FB +:1055A0000E942135181634F5F5014082518262823D +:1055B00073828090D7079090D807A090D907B090B9 +:1055C000DA07C090E707D090E807E090E907F0908D +:1055D000EA07A7019601C501B4010E9421351816FA +:1055E000C4F4C092D707D092D807E092D907F092BE +:1055F000DA071FC020E030E0A901C701B6010E9410 +:10560000773287FFD6CFF501108211821282138282 +:10561000D0CFC090E307D090E407E090E507F0908A +:10562000E607A7019601C501B4010E94773287FD04 +:10563000D8CF81E08093EB0783B181708093D8024B +:1056400089B190E0880F892F881F990B8093D7022A +:105650002091D8029091D70281E0291380E08093B5 +:10566000D6028CE291E09093E6028093E50280E21C +:1056700093E09093E4028093E3028AE090E09093B9 +:10568000E2028093E102000F111F1093F2020093D7 +:10569000F1020E9409176093F4027093F50280935F +:1056A000F6029093F7020E94B5190E94B519209056 +:1056B000F1023090F2029101359527953A872987BA +:1056C0003093F9022093F80286E00E94C715482E15 +:1056D00081119FC08091F002882309F49AC00E9432 +:1056E000B5190E9409176B017C01C092EC02D0929F +:1056F000ED02E092EE02F092EF0286E00E94C71502 +:10570000892B59F40E9409176C197D098E099F098C +:10571000643F71408105910580F30E9409176C195F +:105720007D098E099F09643F71408105910508F448 +:1057300053C48FEF90E00E945A160E94B519512C65 +:10574000AAE06A2E712C1092E702852D0E948B240C +:10575000582EF8E0F81708F439C0E82FF0E0ED54BF +:10576000F44D0C94D436CE2B762EED2E552F632F80 +:10577000942FA22FC22FCC2F20E030E0A901C70127 +:10578000B6010E94773287FF54CF1092D70710924C +:10579000D8071092D9071092DA074BCFFEE16F2E8F +:1057A000712C81E08093E702852D0E948B24582E76 +:1057B00022E0821709F434C2281708F4E8C08823CD +:1057C00009F410C131E0831709F40FC10E94372199 +:1057D00081E08093FE0229853A853093F902209377 +:1057E000F8028CE291E09093E6028093E50280E279 +:1057F00093E09093E4028093E3028AE090E0909338 +:10580000E2028093E102C1018E7F9093F2028093C5 +:10581000F1024092F00280910203882309F1109175 +:105820004A011123E9F00E940917C090E802D090C4 +:10583000E902E090EA02F090EB026C197D098E0912 +:105840009F0928EE33E040E050E00E94DB3321174F +:1058500038F0109202030E94B51981E080934D0147 +:105860008091FE028823E9F180910303882349F1A6 +:1058700020E030E040EA51E46091FA027091FB02CE +:105880008091FC029091FD020E940D346B017C011D +:105890006091F8027091F90290E080E00E947C3201 +:1058A0009B01AC01C701B6010E94773287FF04C09B +:1058B00090E080E00E945A160E94B51981E0809322 +:1058C0004D011092FE0210920303109204030E94F5 +:1058D00009176093F4027093F5028093F602909397 +:1058E000F7020E9409170091F4021091F50220912D +:1058F000F6023091F702601B710B820B930B20E6CE +:105900003AEE40E050E00E94DB33122F2093F30286 +:105910008091030381110BC080914C01882339F0E1 +:10592000281728F081E0809303030E94B519809125 +:10593000040381110BC080914B01882339F01817A3 +:1059400028F081E0809304030E94B5190E94EC21A5 +:105950000E94C21A0E9409178091F607362F381B41 +:10596000832F9091F707992309F44CC33093F807DC +:105970001092F70780E090E0892B09F498CE0E94FE +:10598000FB14882309F493CE0E94000090CE83E09C +:10599000581609F448C194E0591218CF8091420179 +:1059A000883008F0FECE91E0980F909342018093EA +:1059B00007030E94D319E091070328E0E29FF0015A +:1059C0001124EE5FFE4F88ED90E09183808324E305 +:1059D00031E03383228386E891E095838483778264 +:1059E0006682DFCE0E944620DCCE8E010F5F1F4F05 +:1059F000812C912C5401839478EEE72E73E0F72EDE +:105A0000CC24C394D12CE091070324E0E29FF00161 +:105A10001124C4010197E80FF91FEE0FFF1FEE5F7D +:105A2000FE4F808191819093F9028093F802E8EC17 +:105A3000F0E0F093E602E093E502F092E402E092F7 +:105A4000E302D092E202C092E102880F991F909384 +:105A5000F2028093F102F1E0F0934D0186E00E94A2 +:105A6000C71521E0892B09F020E02093E0020E9475 +:105A7000061422E02093FF070E94EC210E94C21A24 +:105A80001092FA071092F9071092FC071092FB0788 +:105A900087E092E20E94C518C501B4010E94EB1D87 +:105AA00085EB92E00E949A1D80914F011092FA07B7 +:105AB0001092F907882309F48BC080E190E090935D +:105AC000FC078093FB078AEF91E20E94C5181092B1 +:105AD000FA071092F907E0E2F0E0F093FC07E09398 +:105AE000FB0783EF91E20E94C5186091F10270916B +:105AF000F20275956795072E000C880B990B0E9492 +:105B0000EB1D0E94A3190E94311786E00E94C71561 +:105B1000892B09F0ACCF8091E0028111A8CF809150 +:105B2000F1029091F20295958795F80181939193F6 +:105B30008F010E94B5196AE070E080E090E00E9459 +:105B4000D716FFEF8F1A9F0AAF0ABF0A24E082160A +:105B50009104A104B10409F056CF8FEF90E00E94A8 +:105B60005A168BEA94E00197F1F70E9425190E94DA +:105B7000F2344B0178876F83C980DA800B811C81F6 +:105B8000C6014E968017910708F00BCEED80FE807F +:105B9000C8014E968E159F0508F003CE87E08093CE +:105BA000E70280E00E948B24882309F4FACDE0917B +:105BB000070338E0E39FF0011124EE5FFE4FD1822E +:105BC000C08213830283F582E48297828682E9CDC4 +:105BD00020E130E03093FC072093FB078DEE91E24B +:105BE0000E94C5186091DB027091DC028091DD0299 +:105BF0009091DE020E94F23490E080E04AE00E9440 +:105C0000A71D1092FA071092F90780E290E0909396 +:105C1000FC078093FB0781EE91E20E94C51871CFCB +:105C20000E94D319BECD87E08093E70280914201A4 +:105C3000813009F4B6CD80E00E948B24882309F4DA +:105C4000B0CD1091070300914201802F8150990B34 +:105C5000BC011817190639F41150109307030150AD +:105C6000009342019ECD812F90E086179707BCF7E5 +:105C7000E6E01E9FD001112450E040E09C012F5F20 +:105C80003F4FFA01EA0FFB1FE05BFE4FF680F08208 +:105C90004F5F5F4F46305105A1F7A3E0220F331F3E +:105CA000AA95E1F7F901EE5FFE4F20813181B3E063 +:105CB000880F991FBA95E1F7DC01AE5FBE4F1196D0 +:105CC0003C932E938281938113969C938E9312978B +:105CD0008481958115969C938E93149786819781E4 +:105CE00017969C938E9316971F5FBDCF82E080938B +:105CF000E70210E068E2C62ED12C7CE2A72EBB247E +:105D0000B394E0E28E2EE3E09E2EF4E1EF2EF12C30 +:105D1000812F0E948B24182F813021F130F08230A6 +:105D200009F43FC00E9437210ECD80914601909129 +:105D30004701B092E602A092E5029092E4028092BE +:105D4000E3027092E2026092E102880F991F909341 +:105D5000F2028093F1020E946424909347018093A1 +:105D60004601D6CF8091440190914501D092E60240 +:105D7000C092E502E0E9F1E0F093E402E093E3028F +:105D80007092E2026092E102880F991F9093F202F2 +:105D90008093F1020E946424909345018093440112 +:105DA000B7CF8091430190E0F092E602E092E502E5 +:105DB00028EC30E03093E4022093E3027092E20298 +:105DC0006092E102880F991F9093F2028093F10292 +:105DD0000E946424809343019BCF83E08093E70279 +:105DE000F12C01E010E08F2D0E948B24F82E31E081 +:105DF0008317E9F18317F8F082E0F81293CF8091CE +:105E00004A0190E01092E6021092E50228E631E0A5 +:105E10003093E4022093E3027092E2026092E10286 +:105E2000880F991F9093F2028093F1020E946424DC +:105E300080934A01D8CF80914C0190E01092E60205 +:105E40001092E502ECE3F0E0F093E402E093E30269 +:105E50001093E2020093E102880F991F9093F202DF +:105E60008093F1020E94642480934C01BCCF809106 +:105E70004B0190E01092E6021092E50228E730E034 +:105E80003093E4022093E302E5E0F0E0F093E202D5 +:105E9000E093E102880F991F9093F2028093F10240 +:105EA0000E94642480934B019ECF84E08093E7029C +:105EB000809149010E948B2491E0811101C090E002 +:105EC0009093490140CC10E0E9E0EE2EF5E0DF2EA2 +:105ED000E092E702812F0E948B24182F882321F063 +:105EE0008130E1F000E009C0D092E70280918001AA +:105EF0000E948B248093800101E0F090DF0280EC0F +:105F0000F11001C088EC0E944E1780EAF11001C028 +:105F100081EA0E944E170111DBCF04CF8091DF028E +:105F200081278093DF02E8CF86E08093E7028091AB +:105F300048010E948B2491E0811101C090E0909370 +:105F4000480101CC8091FF0290E01092E60210928D +:105F5000E502E4EFF1E0F093E402E093E30221E0F4 +:105F600030E03093E2022093E102880F991F909372 +:105F7000F2028093F1020E9464248093FF020E9447 +:105F8000B519E1CB88E08093E70280914E010E9431 +:105F90008B2480934E01D7CB0E940614EE24E39409 +:105FA00000E320E34EE052E270E060E088E290E03F +:105FB0000E945D130E94311764E670E080E090E07B +:105FC0000E94D71686E00E94C715892BD9F78091C9 +:105FD000E0028111F7CFD3CF8091020391E08927AE +:105FE00080930203882351F00E9409176093E8020E +:105FF0007093E9028093EA029093EB0281E0809330 +:10600000FE0207CC9091F507391748F48F5F891786 +:1060100008F0B0CC81E083BF889513BEABCC11E013 +:106020001093F7076093F6078091F1079091F207BC +:1060300001969093F2078093F10780918001882365 +:1060400009F4BCC10E94061401E020E440E870E0BD +:1060500060E090E080E00E943B131093FF071093F4 +:10606000FE071092FD07E12C00E120E14DE953E22B +:1060700070E060E090E080E00E945D1383E190E0DA +:106080009093FA078093F90784E090E09093FC07DF +:106090008093FB0780910703E6E08E9FC0011124E7 +:1060A000805B9E4F0E949A1D80910503909106038C +:1060B000853F914008F02DC18091040381112BC1CF +:1060C00080910303811129C180910203811127C1AD +:1060D00080914F01811125C120E030E044E353E479 +:1060E0006091A9077091AA078091AB079091AC07C6 +:1060F0000E94773287FF17C185E025E330E03093B7 +:10610000FA072093F90721E030E03093FC07209351 +:10611000FB0792E09093FF07C82ED12C90914E017F +:10612000CC0CDD1C911101C1F601E358FD4F4081FB +:106130005181E12C0EE02CE161E070E080E590E01F +:106140000E945D13F601E159FD4F40815181E12C20 +:106150000EE02EE061E070E081E790E00E945D13C8 +:1061600081E08093FF070E94251920E030E040EA9B +:1061700052E40E94213518160CF0FAC00E9409174B +:1061800052E0660F771F881F991F5A95D1F728EEA6 +:1061900033E040E050E00E94DB3320FFE9C00E9482 +:1061A000B519609100037091010390E080E00E94B6 +:1061B0007C3220E030E048EC52E40E9479346B01FC +:1061C0007C016091FF0270E090E080E00E947E32EE +:1061D0009B01AC01C701B6010E94773287FDD4C094 +:1061E000E12C0EE02EE04FE353E262E270E082E049 +:1061F00090E00E945D1303E110E01093FA07009312 +:10620000F90720E130E03093FC072093FB070E9460 +:10621000251941E00E94151E88EF0E94E0188DE3C9 +:1062200093E20E94C5181093FA070093F90788E1DA +:1062300090E09093FC078093FB070E94E918BC0153 +:1062400090E080E00E947C3220E030E04AE754E4B5 +:106250000E94793442E00E94151E8BE393E20E9473 +:10626000C5181093FA070093F90780E290E0909325 +:10627000FC078093FB07609100037091010390E09D +:1062800080E00E947C3220E030E04AE754E40E9443 +:10629000793441E00E94151E89E393E20E94C518FB +:1062A0001093FA070093F90788E290E09093FC07B7 +:1062B0008093FB0782E393E20E94C51889E390E094 +:1062C0009093FA078093F90782E190E09093FC079E +:1062D0008093FB0784E08093FF0760910503709132 +:1062E0000603653F91E0790708F462C08EE293E20D +:1062F0000E94C51800E020E248E460E170E087E316 +:1063000090E00E94921780E00E94ED1E0E943117DB +:1063100031CB80E0F2CE81E0F0CE82E0EECE83E0C1 +:10632000ECCE84E0EACE86E0E8CE8330C1F038F4EB +:10633000813069F0823081F087E793E20AC08530CE +:10634000A1F080F08630C1F78DE793E202C089E9C1 +:1063500093E20E94C518F6CE83E993E2FACF8DE866 +:1063600093E2F7CF87E893E2F4CF82E893E2F1CFAC +:10637000E12C0EE02EE04BE553E262E170E082E0BA +:1063800090E00E945D130DCF0E94091742E0660F56 +:10639000771F881F991F4A95D1F728EE33E040E018 +:1063A00050E00E94DB3320FF1BCF0E94B51923CFA2 +:1063B00090E080E04AE00E94A71D9CCF0E94061456 +:1063C0000E94251920E030E040EA52E40E94213585 +:1063D000181694F40E94091732E0660F771F881F81 +:1063E000991F3A95D1F728EE33E040E050E00E9443 +:1063F000DB3320FD0E94B519609100037091010309 +:1064000090E080E00E947C3220E030E048EC52E4F2 +:106410000E9479346B017C016091FF0270E090E092 +:1064200080E00E947E329B01AC01C701B6010E9450 +:10643000773287FF12C00E94091722E0660F771F8C +:10644000881F991F2A95D1F728EE33E040E050E0ED +:106450000E94DB3320FD0E94B519809105039091C5 +:106460000603853FE1E09E0710F087EE93E00E946F +:10647000302300E023E040E860E370E090E080E05B +:106480000E943B1381E040CFC092D707D092D8073B +:10649000E092D907F092DA07E091CD07F091CE07AC +:1064A00080819181A281B3818093DB079093DC0787 +:1064B000A093DD07B093DE0720E030E04FE753E420 +:1064C000C701B6010E94213518160CF055C940923B +:1064D000D7075092D8076092D9077092DA07A9C8F7 +:1064E000FB01DC0105900D920020E1F708950E9468 +:1064F000B93208F481E00895E89409C097FB3EF4AE +:1065000090958095709561957F4F8F4F9F4F992300 +:10651000A9F0F92F96E9BB279395F695879577957E +:106520006795B795F111F8CFFAF4BB0F11F460FF3E +:106530001BC06F5F7F4F8F4F9F4F16C0882311F096 +:1065400096E911C0772321F09EE8872F762F05C0AA +:10655000662371F096E8862F70E060E02AF09A9545 +:10656000660F771F881FDAF7880F9695879597F93A +:106570000895990F0008550FAA0BE0E8FEEF1616D4 +:106580001706E807F907C0F012161306E407F50727 +:1065900098F0621B730B840B950B39F40A2661F09B +:1065A000232B242B252B21F408950A2609F4A1403E +:1065B000A6958FEF811D811D08950E94F0320C94E5 +:1065C00061330E94533338F00E945A3320F09523F0 +:1065D00011F00C944A330C94503311240C949533DD +:1065E0000E94723370F3959FC1F3950F50E0551FD1 +:1065F000629FF001729FBB27F00DB11D639FAA2718 +:10660000F00DB11DAA1F649F6627B00DA11D661F66 +:10661000829F2227B00DA11D621F739FB00DA11D87 +:10662000621F839FA00D611D221F749F3327A00D41 +:10663000611D231F849F600D211D822F762F6A2FDD +:1066400011249F5750409AF0F1F088234AF0EE0F42 +:10665000FF1FBB1F661F771F881F91505040A9F76F +:106660009E3F510580F00C944A330C9495335F3F64 +:10667000E4F3983ED4F3869577956795B795F795AB +:10668000E7959F5FC1F7FE2B880F911D9695879523 +:1066900097F9089597F99F6780E870E060E00895A2 +:1066A0009FEF80EC089500240A941616170618062A +:1066B0000906089500240A94121613061406050606 +:1066C0000895092E0394000C11F4882352F0BB0F97 +:1066D00040F4BF2B11F460FF04C06F5F7F4F8F4FFA +:1066E0009F4F089557FD9058440F551F59F05F3F35 +:1066F00071F04795880F97FB991F61F09F3F79F0E4 +:1067000087950895121613061406551FF2CF469565 +:10671000F1DF08C0161617061806991FF1CF8695E7 +:106720007105610508940895E894BB2766277727CB +:10673000CB0197F90895F999FECF92BD81BDF89AE2 +:10674000992780B50895262FF999FECF1FBA92BDDB +:1067500081BD20BD0FB6F894FA9AF99A0FBE019642 +:106760000895052E97FB1EF400940E94C83357FD30 +:1067700007D00E94DB3307FC03D04EF40C94C833DF +:1067800050954095309521953F4F4F4F5F4F08955D +:1067900090958095709561957F4F8F4F9F4F08958D +:1067A0000E94FD33A59F900DB49F900DA49F800D76 +:1067B000911D11240895A1E21A2EAA1BBB1BFD01F5 +:1067C0000DC0AA1FBB1FEE1FFF1FA217B307E407D0 +:1067D000F50720F0A21BB30BE40BF50B661F771F28 +:1067E000881F991F1A9469F7609570958095909508 +:1067F0009B01AC01BD01CF010895A29FB001B39FE1 +:10680000C001A39F700D811D1124911DB29F700DB9 +:10681000811D1124911D08955058BB27AA270E945D +:1068200024340C9461330E94533338F00E945A335D +:1068300020F039F49F3F19F426F40C9450330EF4F1 +:10684000E095E7FB0C944A33E92F0E94723358F32A +:10685000BA17620773078407950720F079F4A6F545 +:106860000C9494330EF4E0950B2EBA2FA02D0B014F +:10687000B90190010C01CA01A0011124FF27591B85 +:1068800099F0593F50F4503E68F11A16F040A22F8B +:10689000232F342F4427585FF3CF469537952795FC +:1068A000A795F0405395C9F77EF41F16BA0B620BFB +:1068B000730B840BBAF09150A1F0FF0FBB1F661F42 +:1068C000771F881FC2F70EC0BA0F621F731F841F85 +:1068D00048F4879577956795B795F7959E3F08F0AB +:1068E000B0CF9395880F08F09927EE0F979587956D +:1068F00008950E948D340C9461330E945A3358F0ED +:106900000E94533340F029F45F3F29F00C944A333E +:1069100051110C9495330C9450330E94723368F3E8 +:106920009923B1F3552391F3951B550BBB27AA2748 +:1069300062177307840738F09F5F5F4F220F331F82 +:10694000441FAA1FA9F335D00E2E3AF0E0E832D04A +:1069500091505040E695001CCAF72BD0FE2F29D04D +:10696000660F771F881FBB1F261737074807AB071F +:10697000B0E809F0BB0B802DBF01FF2793585F4F94 +:106980003AF09E3F510578F00C944A330C949533BD +:106990005F3FE4F3983ED4F3869577956795B79576 +:1069A000F7959F5FC9F7880F911D9695879597F981 +:1069B0000895E1E0660F771F881FBB1F62177307FA +:1069C0008407BA0720F0621B730B840BBA0BEE1F0F +:1069D00088F7E09508950E94F2346894B1110C9400 +:1069E000953308950E947A3388F09F5798F0B92F15 +:1069F0009927B751B0F0E1F0660F771F881F991FF4 +:106A00001AF0BA95C9F714C0B13091F00E949433CE +:106A1000B1E008950C949433672F782F8827B85FDE +:106A200039F0B93FCCF3869577956795B395D9F74B +:106A30003EF490958095709561957F4F8F4F9F4F55 +:106A400008950E94B93208F48FEF0895FA01EE0F0D +:106A5000FF1F309621053105A1F16115710561F423 +:106A60008038BFE39B0749F168949038810561F055 +:106A70008038BFEF9B0741F099234AF5FF3FE105BE +:106A80003105210519F1E8940894E795D901AA2365 +:106A900029F4AB2FBE2FF85FD0F310C0FF5F70F466 +:106AA000A695E0F7F73950F019F0FF3A38F49F77E0 +:106AB0009F930DD00F9007FC9058089546F00C94CA +:106AC000503360E070E080E89FE308954FE79F77E0 +:106AD0005F934F933F932F930E9426362F913F91C0 +:106AE0004F915F910E94DD320C9483350E94B93240 +:106AF000880B990B089529F416F00C944A330C94E2 +:106B000094330C9450330E947A33A8F39638A0F74C +:106B100007F80F92E8942BE33AEA48EB5FE70E940C +:106B2000F3320F920F920F924DB75EB70F920E9401 +:106B30006E36E8E6F0E00E94B5354F915F91EF9137 +:106B4000FF91E595EE1FFF1F49F0FE57E0684427CF +:106B5000EE0F441FFA95E1F74195550B0E94E83579 +:106B60000F9007FE0C94DC350895DF93CF931F93AD +:106B70000F93FF92EF92DF927B018C01689406C025 +:106B8000DA2EEF010E94F032FE01E894A5912591E2 +:106B9000359145915591A6F3EF010E942434FE01F1 +:106BA0009701A801DA9469F7DF90EF90FF900F91B9 +:106BB0001F91CF91DF9108959B01AC0160E070E0DF +:106BC00080E89FE30C9479340C944A330C94A236F9 +:106BD0000E947A33D8F39923C9F3940F511DA3F37C +:106BE0009150504094F059F0882332F0660F771F8F +:106BF000881F91505040C1F79E3F51052CF7880FD8 +:106C0000911D9695879597F908955F3FACF0983E52 +:106C10009CF0BB27869577956795B79508F4B1608A +:106C20009395C1F7BB0F58F711F460FFE8CF6F5F82 +:106C30007F4F8F4F9F4FE3CF0C94953316F00C94FA +:106C4000A2360C94503368940C944A330E947A33E1 +:106C5000A8F39923C1F3AEF3DF93CF931F930F9360 +:106C6000FF92C92FDD2788232AF02197660F771F0F +:106C7000881FDAF720E030E040E85FEB9FE38839D7 +:106C800020F0803E38F021968F770E940D34E0E9A5 +:106C9000F0E004C00E940D34EDEBF0E00E94B53549 +:106CA0008B01BE01EC01FB2E6F5771097595771FA3 +:106CB000880B990B0E947E3228E132E741E35FE3C3 +:106CC0000E94F032AF2D9801AE01FF900F911F91FD +:106CD000CF91DF910E9424340C946133FA01DC01DE +:106CE000AA0FBB1F9B01AC01BF5728F422273327F3 +:106CF0004427507820C0B75190F4AB2F002446951C +:106D000037952795011CA395D2F3002071F0220F2F +:106D1000331F441FB395DAF30ED00C940C3461305A +:106D20007105A0E88A07B94630F49B01AC016627DB +:106D3000772788279078309621F02083318342830B +:106D4000538308959F3F31F0915020F487957795B4 +:106D50006795B795880F911D9695879597F9089532 +:106D6000DB018F939F930E94D033BF91AF91A29F7D +:106D7000800D911DA39F900DB29F900D1124089539 +:106D800097FB072E16F4009407D077FD09D00E94D8 +:106D9000DA3607FC05D03EF4909581959F4F089513 +:106DA000709561957F4F0895EE0FFF1F0590F49148 +:106DB000E02D0994AA1BBB1B51E107C0AA1FBB1FF2 +:106DC000A617B70710F0A61BB70B881F991F5A9577 +:106DD000A9F780959095BC01CD01089581E090E0E0 +:0A6DE000F8940C94F336F894FFCFFA +:106DEA0001FFD800340186011E00000000000000E7 +:106DFA000000000000000000000000000000000089 +:106E0A000000000000000000000000000000000078 +:106E1A000000000000000000000000000000000068 +:106E2A000000013C960040010101280F0501010103 +:106E3A004243312E3500000000000000000000002F +:106E4A000000000000000000000000000000000038 +:106E5A000000000000000000000000000000000028 +:106E6A0001770272026D02660260025C02530250EE +:106E7A00024B0247023E0234022C02290226022356 +:106E8A00021D021A02150212020F020A020502026A +:106E9A0002FC01F801F401EF01EA01E601E101DD7A +:106EAA0001D901D601D201C901C401C1012D0CDDEC +:106EBA000B8D0B3D0BED0A9D0A4D0AFD09AD095DCF +:106ECA00092D0C0D09BD086D081D08CD077D072D7C +:106EDA0007DD06CD072D078D06DD06CD073D06ED3C +:106EEA00059D054D05FD04AD045D040D04BD036D4E +:106EFA00031D03CD027D02CD07710F550F390F1DFA +:106F0A000F010FE50EC90EAD0E910E750E590E3D0D +:106F1A000E710F210E050EE90D710FCD0DB10DE9A0 +:106F2A000DCD0D950DB10DE90D790D5D0D410D25B7 +:106F3A000D090DE50EED0C750ED10CB50C990C0171 +:106F4A000F7D0CE90D0A0604040202020203031D66 +:106F5A00100110E10F3F23C50FA90F8D0F891151A1 +:106F6A00111911E110A91071103910000000003137 +:106F7A00159114BE147E15EF14CD14E1140000000F +:106F8A0000C3179114E618E5186E616E00696E6603 +:086F9A00006F7666002F330042 +:00000001FF diff --git a/software/binaries/1.7t4/T12.ino.with_bootloader.standard.hex b/software/binaries/1.7t4/T12.ino.with_bootloader.standard.hex new file mode 100644 index 0000000..7d46235 --- /dev/null +++ b/software/binaries/1.7t4/T12.ino.with_bootloader.standard.hex @@ -0,0 +1,1822 @@ +:020000040000FA +:100000000C94EE110C9416120C9416120C944727B3 +:100010000C9416120C9416120C9416120C941612C0 +:100020000C9416120C9416120C9416120C941612B0 +:100030000C9416120C9416120C9416120C941612A0 +:100040000C94FD260C9416120C94CB260C94A52629 +:100050000C9416120C941E280C9416120C94161262 +:100060000C9416120C94161207634236B79BD8A74D +:100070001A39685618AEBAAB558C1D3CB7CC5763CD +:10008000BD6DEDFD753EF6177231BF000000803F7B +:1000900008000000BE922449123EABAAAA2ABECD97 +:1000A000CCCC4C3E00000080BEABAAAAAA3E000009 +:1000B0000000BF000000803F000000000008417801 +:1000C000D3BB4387D1133D190E3CC3BD4282AD2B38 +:1000D0003E68EC8276BED98FE1A93E4C80EFFFBE30 +:1000E00001C4FF7F3F0000000000536176650046B9 +:1000F0006C6970004D61696E2053637265656E00B6 +:100100004A5000454E00434E00594553004E4F00A3 +:100110004F4E004F464600496E666F730042696756 +:100120000050494400446972656374005361766508 +:1001300000426F6F7374004F666600536C656570A4 +:10014000005361766500426F6F737400536C656590 +:10015000700044656661756C74005361766500419A +:1001600064640044656C6574650052656E616D651C +:100170000043616C696272617465004368616E6717 +:10018000650052657475726E0041626F7574004C43 +:10019000616E67004C4F5720566F6C0042757A7A3B +:1001A00065720053637265656E00436F6E74726FA3 +:1001B0006C0054696D65720054656D70005469700F +:1001C00000F21415F0CADFB8CCF0D699E8AEA4DF7F +:1001D000EEE8F21D1E08F21C08F21A1B08F0714628 +:1001E00001F046464A01F219F051F218F05A8DF02A +:1001F000C0DAEEAEF0C8B8A5F1302924F0B599E127 +:10020000A4BDF21415F0CBEEAEBDF218F05A8DF28B +:100210001617F21415F0CBEEAEBDF21617F0BCCAED +:100220009EE0BDF21415F21213F21011F20C0DF053 +:1002300094F20E0FF0A2D8DFCBE1EEACDCE8F20ACC +:10024000F08CF20BF04A8DF209F08DF097C59BBD52 +:10025000F20708F2040506F097DEEED5F0CBABEE20 +:10026000F0AEA4DFEEE8F0A8E8BDE2EEE0F0B4996D +:10027000D3EEF200010203F0CCDFB0B8BD00000005 +:1002800000000F1DC20800054442080003845FBF40 +:10029000000FE44410000115451000054CC97F8093 +:1002A00009244F900007C4C11000054D413F0005CF +:1002B0005443810007C44D02000544411400055514 +:1002C00041080007C8810400000000000000000091 +:1002D000000001083FFE001FFF81000000400200F7 +:1002E0000007FE0FF8000402080800040208880056 +:1002F00007FE088800040208880004020888000736 +:10030000FE0888000402094800040202300007FECB +:10031000040C0004021804000000000000000000AB +:10032000000007FE13FE000402084000040208401B +:1003300000040201FC000402388400040208840066 +:1003400007FE0FFF000402080000040209FE00047B +:100350000209020004020B020004020D020007FE63 +:1003600009FE00040201020000000000000000007D +:10037000000001100080001FFF80800001103FFF7F +:1003800000004004080007FC0408000444041000B6 +:10039000044402100004440220001FFF81200000DA +:1003A0004000C00000A00130000110020800060C4F +:1003B0000C07001803B0020000000000000000005D +:1003C0000000004000800000400080000FFF3FFF61 +:1003D0000008410408000841040800084104100016 +:1003E00008410210000FFF02200008410120000018 +:1003F0004000C00000400130000040020800004002 +:100400000C07000040300200000000000000000067 +:1004100000001FDF10200002120C20000224042024 +:1004200000047F8020000424B820000FA48850001E +:1004300014BF88500004A488500004A48848000415 +:10044000BF88880004A48A880007A48C8400044420 +:100450008907000081860200000000000000000003 +:1004600000000FF00491000440025200047F9054F9 +:1004700000045088FF0007D08481000451008100EF +:10048000044901FF0007CA028100044404810004FA +:100490004A1CFF0007EA0481000C5104810000613E +:1004A000C4850000408082000000000000000000C1 +:1004B000000007FF802000008407FF000084040183 +:1004C00000008404010000840401000FFFC7FF0046 +:1004D00000840400000084040000008405FF000084 +:1004E000840501000104090100010409010002045E +:1004F00011FF0004040101000000000000000000E2 +:100500000000008204FF00004402010007FF902168 +:10051000000010102100001017FD00001010210035 +:100520000FFFD06100001010A10000281121000071 +:10053000281221000044142100008210A1000301B0 +:10054000D045000C009002000000000000000000F8 +:100550000000084410FE00042810920005FF2292BB +:100560000000103C920000100892001CFE10920047 +:10057000041020FE0004103E920005FF809200044B +:100580001000920005100E92000610309200041028 +:1005900000FE0000100082000000000000000000CB +:1005A000000007DF8840000A24104000114210FEBE +:1005B00000040022820002FF3D020008010A4200FE +:1005C00009F9103200090920120009F93E02000958 +:1005D0000900020009090E020009F930220008058D +:1005E00000140008020008000000000000000000E5 +:1005F00000000FC3F1E0000FE3F1F8000C70C19EA2 +:10060000000C30C186000C30C183000C30C1830067 +:100610000C60C183000C60C183000FC0C183000F58 +:10062000C0C186000C00C186000C00C198000C03FC +:10063000F1F8000C03F1E0000000000000000000F1 +:10064000000000200820000FFF09FC000020080027 +:100650000000203E880003FE08500002020BFE004E +:1006600003FE0C4000020218400003FE2BFE0002B5 +:100670000208480003FE0888000202085000020237 +:100680002830001FFF91CC0000000000000104048E +:100690007C0000880444000FFF3F44000020044415 +:1006A0000000200C440000200E44001FFF95440071 +:1006B0000020144400005024440000500444000072 +:1006C0008804450001040485000603850300180121 +:1006D0000400000000000000000000000000000016 +:1006E0000000047E21FC0004421104001F7E090466 +:1006F00000044221FC000542110400067E110400A2 +:100700000C0005FC0015FF880000040813FE00041F +:1007100048325200044F125200044812520014A8EA +:10072000125200091F97FF000000000000000000A7 +:10073000000002103DFC00021025040004102504F6 +:100740000005FFBDFC000C102520000C3825200002 +:10075000143825FE0004543D2000045425100004E4 +:10076000922510000511A5090006113D4500041051 +:1007700025830004100101000000000000000000BB +:1007800000001FC8102000124A0C20001AC90420C3 +:100790000017480020001FFFB82000020808500082 +:1007A0001FC8085000020808500003C80848001E6F +:1007B0001408880001540A880015220C8400144390 +:1007C0008907000081060200000000000002FE010F +:1007D000000002823FFF00048202000004FE0200CB +:1007E000000C1004FC00141004080005FF8C10001D +:1007F0000410141000043825FF0004340410000411 +:1008000052041000049184100005100450000410DC +:1008100004200000000000000000000000000000B4 +:10082000000002030010001FDC3EFE0008900212D0 +:1008300000051004FF001FDF84120002120CFE00EE +:100840001FD2021000021222FE000A921410000AA7 +:100850005214100012220DFF0002220810000A425A +:10086000141000040223FF0000000000000000003C +:1008700000000F78BC20000948A45000094AA85085 +:1008800000094AA88800094AB104001FFEAAFB001B +:10089000094AA42000094AA42000094AA7FE000929 +:1008A0004AB420000948A924000B48A22200088A63 +:1008B000A4A2001119204000000000000000000068 +:1008C00000000020008000005001FC0000880104AE +:1008D00000010403080006FB0490000800C060004B +:1008E00007DF018000045106000004511BFE0004D4 +:1008F0005102020007D90202000456020200001051 +:1009000003FE0000100202000000000000000000D2 +:1009100000000208209000027F9890001F8009FFCD +:1009200000022201100006218B100007628DFE00DC +:100930000AA20910000A14111000121431FE00025C +:1009400008111000021411100002221110000243BD +:1009500091FF000281110000000000000000000073 +:100960000000100700000008F83FFE00048020028D +:1009700000008020020000BE23E2001C8222220030 +:1009800004A42222000494222200048822220004CB +:100990009423E200052220020005422002000A0002 +:1009A0003FFE0011FFA00200000000000000000058 +:1009B000000000820FFE00004400400007FF80405E +:1009C000000010004000001000400000101FFF80D9 +:1009D0000FFFC04000001000400000280040000051 +:1009E0002800400000440040000082004000030155 +:1009F000C140000C00808000000000000009FF00E2 +:100A0000400004203FFF00042000000000FE000022 +:100A1000001C420FFC00044200000007FF800000A1 +:100A200004000FFC0004FF0000000481000000052A +:100A3000810FFC00068108040004FF080400008107 +:100A40000FFC00000000000000000000000000009B +:100A5000000001000FFE00010008200003FF082035 +:100A6000000201082000042208200008200BFE00DC +:100A70001020082000005008280000500824000022 +:100A800088082200008810200001041020000203C2 +:100A9000A7FF000C010000000000000000000000A3 +:100AA000000000400080001FFF9FFC000040041079 +:100AB000000FFF02200000003FFF000FFE000000BB +:100AC00008420FF80008420808000FFE0808000856 +:100AD000020FF800080008080008000808000800D5 +:100AE0000FF80010000808000000000000000000DF +:100AF000000007FE0FF800040200000004020000DE +:100B00000007FE00000004023FFE00040200800017 +:100B100007FE008000009004900008910C880006F9 +:100B200093108600029420820000900080000090C4 +:100B30000280001FFF810000000000000000000094 +:100B40000000041012020005FF9FD200050092125F +:100B5000001E28A2120004443FF200048202120088 +:100B600006000212000CFE1FD200141012520004E4 +:100B7000101242000410134200041012820015FFEC +:100B8000820A0008000204000000000000000000CB +:100B90000000002000000000203E04001FFFA2040F +:100BA000001000A2FF0000012204000FFE2204003A +:100BB00000403E440000402224000440222400045F +:100BC0007C22040004402204000A403E0400094044 +:100BD00022240010FF801400000000080000000024 +:100BE000000010FE08200008820BFF0004820A01AA +:100BF0000010FE3C510008820888000882090400A9 +:100C000002FE0C0000040019FC0009FF2820001956 +:100C1000290820000929082000092908200009299D +:100C20002BFF000BFF900000000000000000000000 +:100C300000001F7F90F80001080888000A1008884B +:100C400000047F0107001FC13A0000054909FC00AC +:100C5000044908840004490888000449084800043D +:100C60004908500004490A200004160C58001421B9 +:100C700089870008C0860200000000000080040090 +:100C8000003FF0383033103F9038103390279026D3 +:100C90001030903FF000008004800400003FF03DE1 +:100CA000F020103BF03B7030302B502AD031B03F59 +:100CB000F000008004800400003FF03870303023E2 +:100CC00010279020102010279027903FF0000080E0 +:100CD00004800400003FF03CF03CF02010249024FD +:100CE0009020103CF03CF03FF000008004800400B5 +:100CF000003FF037B0231030303870387030302378 +:100D00001037B03FF000008004FCF4F860E044C00D +:100D10008CC11CC22CC44CC88CD10CA204C4048F3E +:100D2000FC187CBCFC8000BFF81FF8B0281FF8B48A +:100D3000081FF8B1081FF8B048BFF8B288BFF880A4 +:100D4000008000BFF81FF8B0081808B9E819B8B853 +:100D5000381838B9B8B9F8B0F8BFF8800015543F62 +:100D6000F815503FF01550387010203104138C22C4 +:100D7000A817FC2AA80000000015543FFC15543F9A +:100D8000FC15543C0414043CFC14543CFC0054007A +:100D9000A800000000800400003FF03CF034B024C4 +:100DA00090249027902310303038703FF00000805E +:100DB00004FF7CFE7CFCECE8DCC84C984C882408E2 +:100DC0002000000000000000008004E01CF3FCE7AD +:100DD000FCCE0C8E1C9F9C1F3C1F0C0E0C0FFC8726 +:100DE000F881E4C00CE01CF87C000458085808584E +:100DF0000840087FF860185FE85B685FE85B681C84 +:100E0000E85FE80000800400003FF03CF03CF03C6C +:100E1000F0201020103CF03CF03CF03FF00000804F +:100E200004F87CF7BC00007FF80000BFF4AB54ABC3 +:100E300054AB54AB54AB54AB54BFF4C00CF03CCEE9 +:100E40000CBF04B30473007F007E007C007C007C38 +:100E500060BC64BE04CF0CF03C81DC559C29045579 +:100E600000299055D003FCFF002E0026700250820E +:100E700070E600EE04800C001C3FF43FE03FC437F6 +:100E80008C2318303038703CF03FF03FF000008089 +:100E900004058074B857A876B80580F97C4694AAF2 +:100EA000A8F97C068874A8578C75740698F03CCE17 +:100EB0004CBC34B814188010804230607860F8441C +:100EC000C08004B884CFCCF03CF87CE01CC00CCFD0 +:100ED000CCCFCCCFCCCFCCCFCCCFCCCFCCC84CCFC1 +:100EE000CCC00CE01CFCFCF87CE01CC00CC00CC0AE +:100EF0000CC00CC00CC00C80048004FFFCF87CFC0F +:100F0000FC800400002000100008001000270000F2 +:100F100000000000000000000000008004C3FC1876 +:100F2000001800C3FCFFFCFF0C00600060FF0CFF1A +:100F3000FCF0FC06000600F0FC8FC4102020104CD2 +:100F4000C89FE43DF03DF01DE03EF03F709FE48C13 +:100F5000C400003030F87CF33CF4BCF6BCF4BCF6C2 +:100F6000BCF4BCE49CC84CD02CD02CC84CE79CF002 +:100F70003C88240820383038303830383038303821 +:100F80003039303BB03FF03FF0000080041FE03FBD +:100F9000F07038601860186018FFFCFCFCFCFCFC6A +:100FA000FCF87CF87CFCFC7FF81E1033382D7C2587 +:100FB000382D3825382D386D80DEC0BF40BF40DE6B +:100FC000C061803F007FF0FFE0C008C01CC038C88F +:100FD00070DCE4CFCCC78CC30CC00CC00CFFFC7F12 +:100FE000F8000006000C0018F838F030307060701F +:100FF0007878F878003C023F0C1FF80FF003C0002F +:10100000007FF8FFFCC00CC30CCB4CDB6CDB6CD856 +:101010006CDCECCFCCC78CC00CFFFC7FF803000766 +:10102000800FC00CC01CE01CE03CF03CF07FF87F5F +:10103000F8FCFCFCFCFFFC7FF81140820021208FB3 +:10104000E023FC82004A23E200FE209FF013F88098 +:10105000802220C0804221BFF0FBFA8880022084D9 +:1010600080022084801A208080E3FE8280020101B9 +:10107000000F421FC0784110400840904008421FB6 +:10108000C008411040FFFD104008405FC00840808C +:101090000008413FE008432520104125201041254C +:1010A000202041252040417FF07FF8488002004900 +:1010B000000201FFF00201001002027F2022004125 +:1010C0000023F07F00220008002200FF8022008819 +:1010D000802200888022008A8022008900FFFC088C +:1010E0000023F21FC022111040FBF0904022121F7B +:1010F000C02A11104033F1104060005FC0AFFC8087 +:101100000020413FE022432520227925202241254D +:1011100020A541252048FD7FF01083DFC0108250BC +:1011200040208250402FFFDFC06082520061C252D7 +:1011300000A1C25FE022A3D20022A251002492515A +:1011400000288E5090308BD4502082583020801050 +:1011500010104047C017FC44402003F44023F844DB +:10116000406208C440A3F8E440200154402FFD44ED +:10117000402806444023F844402040445020404842 +:1011800050214050302080400020921FC03DF990F7 +:10119000402090904040901FC07BFF0000A0013F86 +:1011A000E021F90200FD09020021097FF021F90583 +:1011B00000210945002909888031F9107021082093 +:1011C0002025004300202070F87540775575774042 +:1011D000403E4A5E2B5E4A6B627F352F357F7C5BDB +:1011E0005E247B0E3A047E017E4A5E69063A2F3FFA +:1011F0006B7E46403F41497F494102626B6B6B62A7 +:10120000026A6B147D577D10413F55553D57512162 +:101210003F2D7F2A122E0A775A505A770A2024131C +:101220007D5553707A2A7B021A437A4A525E2B5EAE +:10123000424A415F353F555F417D14577D0E407FE7 +:101240007F1B54167D1654493A407E575676423FCE +:10125000427E7E427E047E51377D3750127A17528D +:10126000761E127F557F145D7F557F557F7F553DDC +:10127000577F55377817457F7F2B7B287B2B7F1E29 +:1012800012127F12121E7F416B7F6B517F525A5791 +:101290003A575A52007F494949497F22122A7F2AE8 +:1012A000122200000000002F000300033F123F162F +:1012B0003F1A120824323D2A020100003E41413EFD +:1012C000000A070A083E084020000808080020001D +:1012D0001008041C2A1C243E20322A24222A141816 +:1012E000143E2E2A121C2A12023A06142A14242A08 +:1012F0001C00240040240008142214141422140892 +:1013000002290612291E3E093E3F251A1E21213FB1 +:10131000211E3F25213F05011E21393F083F213F66 +:101320002110201F3F043B3F20203F063F3F013E4E +:101330001E211E3F09061E215E3F09362225190186 +:101340003F013F203F3F100F3F183F330C33033C1A +:1013500003312D23007F41153E15417F000201021C +:1013600040404000010218243C3F2418182424184F +:10137000243F182C2C043F0548543C3F0438003DC2 +:1013800000403D003F0834013F003C1C383C04381D +:101390001824187C241818247C3C0804283C1404C5 +:1013A0003E243C203C3C100C3C303C2418244C5047 +:1013B0003C24342C083641007F00413608010101ED +:1013C0001028101F010120203E10200000080025D9 +:1013D000150F241C0C103804180C3828382828182D +:1013E0003C083C18283820242C3C2C2C1C040808D1 +:1013F000211D07083C0306231E223E22120A3F320B +:101400000F3E0A3F0A24130E271E0222223E2712F5 +:101410000F2525102119273F222E21160F241B0EE0 +:10142000251F0526261E251D053F0408241F042010 +:101430002222251927123B1620100F3C013E1F24A3 +:101440002421110F0C031C1A3F1A091927222A2ADA +:10145000382730320C13053F25023F0E213F20254F +:10146000253F25251D07201F3C3F203F20103E2201 +:101470003E23110F21211801000102050200000086 +:10148000000000000020400000000000002050206C +:10149000000000000050300000000000006060000C +:1014A00000000000000000181800000000000036D6 +:1014B0003600000000000056360000000000020167 +:1014C00051090906000000005F0000000000000054 +:1014D000007F41410041417F00000000000000000A +:1014E0003F010101004040407E0000000000003F3D +:1014F000213D05070070505E427E000000000000A4 +:10150000007F63410041637F00000000000808087D +:101510007F08080800080808080808080044444430 +:101520005F44444400412214081422410008080882 +:101530002A08080800141414141414140014341481 +:101540001C14161400080814141422220022221459 +:1015500014140808000205023C42422400002B2C0F +:10156000782C2B000000242A7A2F2A1200001C62FB +:10157000322E23140020545E2541422000422512C1 +:10158000082452210020623E633E23020020564977 +:1015900055225840000022147F142200001C2259BA +:1015A000554D120C0000004A555529000004643CBA +:1015B000173C64040004643C1F3C6404001C22418A +:1015C0004141221C001C3E7F7F7F3E1C001C225D8F +:1015D000555D221C000814224122140800081C3EFC +:1015E0007F3E1C08007F41414141417F007F7F7F5A +:1015F0007F7F7F7F0040704C434C70400040707C88 +:101600007F7C704000010719611907010001071F65 +:101610007F1F0701004922144914224900050505CE +:101620007D05050500080808082A1C0800081C2A72 +:1016300008080808000004027F02040000001020CF +:101640007F20100000003E414141413E0000004229 +:101650007F4000000000625151494946000022418C +:10166000494949360000302824227F2000002F45B8 +:101670004545453900003E494949493200000101CC +:1016800061190503000036494949493600002649D9 +:101690004949493E000020547E3414600020527FA6 +:1016A0002A1A4A3000003C4020041800001E204046 +:1016B000200204180000104A4A2A100000000845C1 +:1016C000454525180000482A3A4A400000004425B4 +:1016D000153D45400000247E145024000022527F16 +:1016E0000A484A340044344F443804180044344F04 +:1016F0004439041900002A5A4B4E5A0800002A5A4D +:101700004B4E5B080000081414224100000008142E +:1017100014224504003F0004443F0404003F000439 +:10172000443F040500002052424242400000205243 +:10173000424342410000245444475C0400002454C6 +:1017400044475C050000003F404040200000003F4F +:10175000404140210002020A563F02020002020AF2 +:10176000563F02030004043F44545F440004043F16 +:1017700044545F45000008093D4B49080000080932 +:101780003D4B490A00423A072254444400423A077A +:1017900022554445000002124E4B4A32000002120C +:1017A0004E4B4A3300001010484830000004040239 +:1017B0002222221C000404022223221D0000020215 +:1017C0001A254341000002021A2543450000205714 +:1017D00048484444000020574849444500120A271D +:1017E00052503A24007F00205242424000304E388E +:1017F000540F64780024147F0422523C00182412F1 +:101800004E422418007F002454543F44007F00249B +:1018100054543F45007F002454563D4600023A4749 +:1018200040413E0400023A4740413E0500023A472B +:1018300040433D06004030404D3210600040304093 +:101840004D321161004030404D32156200080402F3 +:101850000408101000080402040910110008040212 +:10186000040A1512007F006A6A7E2A4A007F006A15 +:101870006A7F2A4B007F006A6A7E2D4A00006A6AEE +:101880006A7F2A4A0030291D4B483C1000122A7FEB +:101890004240422400304E38540F443800000A3E83 +:1018A0004B4A4A300000080E384614080004071C52 +:1018B00062030A0400001C483E241800001E045263 +:1018C0003F12120C00002050503E480000002050F3 +:1018D000503F244400001C51494A483000000F4248 +:1018E00041211E00000010696D4B49300024147F17 +:1018F00004023E40000010494D4B493000002818BA +:101900007E0844380024147F0442423C00304925BC +:101910001F245438004028255735284000100A2E2F +:101920005B724A480040300C3340402000000444C1 +:101930003C140C00000001413D090503000020207B +:101940001078040000001010087C02010000184804 +:101950004C281800000006424322120E00004048A6 +:1019600078484000002022223E2222200000282821 +:10197000587C0800002222124A7F02020000422204 +:101980001F02427E000042221F02427F000012120C +:101990001F721210000012121F7213100000084470 +:1019A0004322120E000008444322120F000807428F +:1019B000221E020200080742221F020300004242C8 +:1019C0004242427E000042424243427F0002024FB6 +:1019D00042221F020002024F42231E030000454A1A +:1019E0004020100C0000454A4021100D00404222CA +:1019F000221A264000404222221B26410004043FB6 +:101A00004444544C0004043F4445544D00000146F6 +:101A10004020100F000001464020110F0000084434 +:101A20004B2A120E000008444B2A120F00080A4AE3 +:101A30003E09090800080A4A3E0908090000184042 +:101A40005820180000020C424C20100E00020C42DC +:101A50004C21100D000405453D0505040004054515 +:101A60003D0504050000007F080810000000007F0D +:101A700008091001000444241F0404040020222249 +:101A80002222222000404125151927000020221281 +:101A90007B06122000404020100807000040300E56 +:101AA00000020C700040300E00020D710040300E3C +:101AB00000020D7200003F484848444400003F487F +:101AC0004849444500003F48484A45460000024214 +:101AD0004222120E000002424223120F0000024274 +:101AE0004222150E00080402040810200008040217 +:101AF0000409102100080402040A152200241444D9 +:101B00007F041424002414447F0514250024144465 +:101B10007F0615220002021222520A060000212529 +:101B2000294A42000040704C435020400040442469 +:101B300014083700000008093F4949480000101CFC +:101B4000680818000004040F74020A0600004048E8 +:101B50004878400000202222223E2020000000443D +:101B600054547C000000424A4A4A4A7E0000044520 +:101B70004525150C00000F4040201F000040201E8E +:101B8000007F20100000007F4020100800007E42EF +:101B90004242427E00000C4444241C0000000642E5 +:101BA0004222120E0010121E12127F120020222258 +:101BB0003A262220000001454525150F000041422C +:101BC0004020100C000006424322120F000048285B +:101BD0001C4878000000100C483808000008040475 +:101BE0000810100800080000080000080004080899 +:101BF00008080808000808080808080808BD01B80F +:101C000001B201AA01A3019C0194018F0189018203 +:101C1000017B0171016A0163015F015A0152014CAC +:101C200001460141013B01370131012C0125012110 +:101C3000011D011701130110010D01090106010326 +:101C4000010001F400EF00EA00060505070604099B +:101C5000030504090A080303030603050303050536 +:101C60000306040405050405040403040905033EF2 +:101C70000053656C656374205469700000000000B7 +:101C8000003E5B4F5B3E3E6B4F6B3E1C3E7C3E1C02 +:101C9000183C7E3C181C577D571C1C5E7F5E1C0048 +:101CA000183C1800FFE7C3E7FF0018241800FFE7FF +:101CB000DBE7FF30483A060E2629792926407F05C2 +:101CC0000507407F05253F5A3CE73C5A7F3E1C1CD8 +:101CD00008081C1C3E7F14227F22145F5F005F5F98 +:101CE00006097F017F006689956A60606060609484 +:101CF000A2FFA29408047E040810207E2010080889 +:101D00002A1C08081C2A08081E101010100C1E0C93 +:101D10001E0C30383E3830060E3E0E060000000025 +:101D20000000005F00000007000700147F147F140C +:101D3000242A7F2A12231308646236495620500051 +:101D400008070300001C2241000041221C002A1C3D +:101D50007F1C2A08083E0808008070300008080828 +:101D60000808000060600020100804023E51494548 +:101D70003E00427F400072494949462141494D3366 +:101D80001814127F1027454545393C4A49493141CD +:101D9000211109073649494936464949291E00009B +:101DA00014000000403400000008142241141414F0 +:101DB0001414004122140802015909063E415D59DC +:101DC0004E7C1211127C7F494949363E41414122E5 +:101DD0007F4141413E7F494949417F090909013E0F +:101DE000414151737F0808087F00417F4100204036 +:101DF000413F017F081422417F404040407F021C48 +:101E0000027F7F0408107F3E4141413E7F0909095E +:101E1000063E4151215E7F0919294626494949322A +:101E200003017F01033F4040403F1F2040201F3FF0 +:101E30004038403F63140814630304780403615975 +:101E4000494D43007F4141410204081020004141B7 +:101E5000417F040201020440404040400003070863 +:101E60000020545478407F2844443838444444285F +:101E7000384444287F385454541800087E09021806 +:101E8000A4A49C787F0804047800447D400020408E +:101E9000403D007F1028440000417F40007C0478D2 +:101EA00004787C080404783844444438FC1824241A +:101EB0001818242418FC7C0804040848545454249A +:101EC00004043F44243C4040207C1C2040201C3C17 +:101ED0004030403C44281028444C9090907C44640E +:101EE000544C4400083641000000770000004136A1 +:101EF000080002010204023C2623263C1EA1A16127 +:101F0000123A4040207A3854545559215555794158 +:101F10002154547841215554784020545579400C2F +:101F20001E52721239555555593954545459395510 +:101F30005454580000457C410002457D4200014553 +:101F40007C40F0292429F0F0282528F07C545545C0 +:101F5000002054547C547C0A097F49324949493253 +:101F60003248484832324A4848303A4141217A3A68 +:101F700042402078009DA0A07D39444444393D4032 +:101F800040403D3C24FF2424487E4943662B2FFCDF +:101F90002F2BFF0929F620C0887E0903205454798D +:101FA000410000447D413048484A32384040227A5E +:101FB000007A0A0A727D0D19317D2629292F2826DB +:101FC0002929292630484D402038080808080808E3 +:101FD0000808382F10C8ACBA2F102834FA00007B3C +:101FE000000008142A142222142A14089500220042 +:101FF00095AA005500AAAA55AA55AA000000FF00FC +:10200000101010FF00141414FF001010FF00FF1038 +:1020100010F010F0141414FC001414F700FF00006A +:10202000FF00FF1414F404FC141417101F10101FE9 +:10203000101F1414141F00101010F0000000001FD7 +:10204000101010101F10101010F010000000FF10E2 +:102050001010101010101010FF10000000FF1400DE +:1020600000FF00FF00001F10170000FC04F4141410 +:102070001710171414F404F40000FF00F7141414DC +:1020800014141414F700F7141414171410101F105C +:102090001F141414F4141010F010F000001F101F7F +:1020A0000000001F14000000FC140000F010F010ED +:1020B00010FF10FF141414FF141010101F00000064 +:1020C00000F010FFFFFFFFFFF0F0F0F0F0FFFFFF68 +:1020D0000000000000FFFF0F0F0F0F0F38444438BF +:1020E000447C2A2A3E147E02020606027E027E02FA +:1020F00063554941633844443C04407E201E200619 +:10210000027E020299A5E7A5991C2A492A1C4C7255 +:1021100001724C304A4D4D303048784830BC625ADC +:10212000463D3E494949007E0101017E2A2A2A2A6C +:102130002A44445F444440514A444040444A514048 +:102140000000FF0103E080FF000008086B6B083609 +:1021500012362436060F090F06000018180000007A +:102160001010003040FF0101001F01011E00191D69 +:102170001712003C3C3C3C00000000000000000046 +:10218000240027002A0000000000250028002B0062 +:1021900000000000230026002900040404040404B5 +:1021A0000404020202020202030303030303010206 +:1021B00004081020408001020408102001020408D5 +:1021C0001020AED5F0A83FD300408D14A1C8DA127C +:1021D00081CFD9F1DB40A4A6AF200021007F2200EF +:1021E00007506C65617365207761697400414443F1 +:1021F0003A200074656D703A2000536574206D6557 +:1022000061737572656400537465703A2000FFFF56 +:10221000FFFFFFFF800386708003800386708003CA +:102220009FF3E1309FF39FF3E1309FF3983301CCAC +:102230009833983301CC9833983387C098339833C8 +:10224000E1C098339833E1C098339FF398C09FF36F +:102250009FF398C09FF3800366CC8003800366CC15 +:102260008003FFFF010CFFFFFFFF01001FFF810044 +:1022700061301F3F873CE6FC8733873CE6FC87F3F1 +:10228000F8039E0F1F03F8039E0F1F03E13CFE0C93 +:1022900007CFE13CFE0C07CF99033E3086C3E6CF63 +:1022A000380F9EF3E6CF380F9EF39E0327CC8103B1 +:1022B0009E0327CC8103E0FFE10CE6CFE0FFE10CB9 +:1022C000E6CF9803060000FF9803060000FFFFFF1B +:1022D0001EF0F8038003663099C38003663099C30B +:1022E0009FF3010CF8FF9FF3010CF8FF9833393C82 +:1022F00001CF9833393C01CF9833FF0C793F9833A5 +:102300003ECCE0F398333ECCE0F39FF33E0098CF11 +:102310009FF33E0098CF80033E30E7C380033E30FA +:10232000E7C3FFFFFFFFFFFFFFFFFFFFFFFF3030AF +:10233000300076312E377434005600560043000FBB +:10234000E01FC01FC03F803FF87FF07FE007C0075D +:10235000800F000E001C001800100014A03FF07F3A +:10236000F8E01C6E18EC1C68186018E01C6058E05F +:102370001C7FF83FF014A04552524F5200484F4C7A +:1023800044004845415400574F524B5900424F4F6B +:10239000535400534C454550004F46460000003B07 +:1023A000EC7BEE63E663E663E663E663E663E663BF +:1023B000666226600660067FFE3FFC0000010204A4 +:1023C0000810204080000000080002010000030403 +:1023D000070000000000000000001F2811241FBE9D +:1023E000CFEFD8E0DEBFCDBF12E0A0E0B1E0EAEE73 +:1023F000FDE602C005900D92A83BB107D9F728E091 +:10240000A8EBB2E001C01D92A130B207E1F711E1E3 +:10241000CEEED1E104C02197FE010E94D436CD3E1C +:10242000D107C9F70E94D4280C94F3360C9400000D +:102430004F925F926F927F928F929F92AF92BF92D4 +:10244000CF92DF92EF92FF920F931F93CF93DF9380 +:1024500000D000D0CDB7DEB74B015C0129013A01B5 +:102460006701780120E030E0A9010E94773287FD02 +:10247000A6C020E030E0A901C301B2010E9477327A +:1024800087FD9DC020E030E0A901C801B6010E948F +:10249000773287FD94C081E02091CB073091CC0743 +:1024A0002130310509F080E08093EC078092B1077C +:1024B0009092B207A092B307B092B4074092B507CA +:1024C0005092B6076092B7077092B807C092B907EA +:1024D000D092BA07E092BB07F092BC076091DF0789 +:1024E0007091E0078091E1079091E2070E947C32B1 +:1024F00020E030E04AE754E40E94793469837A832B +:102500008B839C838092BD079092BE07A092BF07E9 +:10251000B092C0079B01AC01C301B2010E94DD3241 +:102520002B013C014092C1075092C2076092C30741 +:102530007092C40729813A814B815C81C701B60141 +:102540000E9479346B017C01C092C507D092C60706 +:10255000E092C707F092C8078091C9079091CA0717 +:10256000019769F5A501940160E070E0CB010E943C +:102570000C346093BD077093BE078093BF079093A0 +:10258000C007A301920160E070E0CB010E940C340F +:102590006093C1077093C2078093C3079093C407E9 +:1025A000A701960160E070E0CB010E940C346093BB +:1025B000C5077093C6078093C7079093C8070F900D +:1025C0000F900F900F90DF91CF911F910F91FF907F +:1025D000EF90DF90CF90BF90AF909F908F907F90C3 +:1025E0006F905F904F90089580389105B0F46034FB +:1025F000710598F4EDEBF3E290E1969FD001A0789D +:102600001124A80F6770E60FF11D9491A85FBC4FCD +:10261000442321F08C91982B9C93089590958C9154 +:102620009823FACFDF92EF92FF920F931F93CF93ED +:10263000DF937C01D22E8B01040F111DEB0177FF7C +:1026400002C0D0E0C0E0C8010134110514F080E4FC +:1026500090E0C817D9073CF44D2DBE01C7010E9478 +:10266000F4122196F0CFDF91CF911F910F91FF903F +:10267000EF90DF900895CF92DF92EF92FF920F9349 +:102680001F93CF93DF936B01122FEC017C01E40EBB +:10269000F11CCE15DF0544F4202F412FB601CE01E9 +:1026A0000E9412132196F5CFDF91CF911F910F91C8 +:1026B000FF90EF90DF90CF9008952F923F924F922E +:1026C0005F926F927F928F929F92AF92BF92CF92C2 +:1026D000DF92EF92FF920F931F93CF93DF9300D07F +:1026E0001F92CDB7DEB7C22ED12C9601280F391F0D +:1026F00037FD4FC0803891050CF04BC0E9824A018C +:102700007B013C01402E512C160127E0220E311C8A +:1027100093E0359427949A95E1F78B01B12CA12C85 +:102720001B821A82EA81FB8183E0F595E7958A9501 +:10273000E1F7EA0DFB1DE80DF91DE4918A819B810B +:102740008770992720E830E002C0359527958A9553 +:10275000E2F7C901F0E0E223F923EF2B41F04981D0 +:10276000B8018A819B81860D971D0E94F4128A818F +:102770009B8101969B838A838C159D059CF2A20CFC +:10278000B31C0F5F1F4FC8018E199F098415950553 +:102790003CF20F900F900F90DF91CF911F910F910E +:1027A000FF90EF90DF90CF90BF90AF909F908F9071 +:1027B0007F906F905F904F903F902F9008950F9370 +:1027C0001F93CF93DF93EC018B0140E001960E94B1 +:1027D000F41240E0B801CE0101970E94F412B80152 +:1027E0006F5F7F4F40E0CE010E94F412B80161504C +:1027F000710940E0CE010E94F41240E0B801CE0120 +:10280000DF91CF911F910F910C94F41280E0E8E0DA +:10281000F3E081118FEF0024819381938193819361 +:102820000394D1F7EDEEF7E0178616861586148629 +:1028300008956F927F928F929F92AF92BF92CF92A4 +:10284000DF92EF92FF920F931F93CF93DF93803825 +:1028500091050CF057C0603471050CF053C07B013A +:1028600037E0E322FF2433E0759567953A95E1F769 +:10287000DB01B695BA2FAA27B795A7955D01C0E8E9 +:10288000AC0EB11CA80EB91EA80FB91FA85FBC4F93 +:1028900000E810E0081B190B90E080E0E8E0F0E0B1 +:1028A0004F018E189F0830E0FA01E80FF91FC4911C +:1028B0007D906D01D1E0CD1AD1080E2C01C0CC0F56 +:1028C0000A94EAF77C2AE6017882E114F10499F08F +:1028D0006730710581F0E491EC01CA0DDB1DC85F22 +:1028E000DC4FF0E0082C02C0F595E7950A94E2F77A +:1028F000F881EF2BE8830196821793071CF40817E1 +:10290000190791F6DF91CF911F910F91FF90EF90F2 +:10291000DF90CF90BF90AF909F908F907F906F90FF +:102920000895AF92BF92CF92DF92EF92FF920F93F2 +:102930001F93CF93DF936C017B018B01040F151F55 +:10294000EB015E01AE18BF08C017D10759F06991BD +:10295000D601ED91FC910190F081E02DC601099521 +:10296000892B79F7C501DF91CF911F910F91FF90CE +:10297000EF90DF90CF90BF90AF900895FC01538D02 +:10298000448D252F30E0842F90E0821B930B541749 +:1029900010F0CF96089501970895FC01918D828DD6 +:1029A000981761F0A28DAE0FBF2FB11D5D968C916F +:1029B000928D9F5F9F73928F90E008958FEF9FEFAE +:1029C0000895FC01918D828D981731F0828DE80F6A +:1029D000F11D858D90E008958FEF9FEF0895FC0124 +:1029E000918D228D892F90E0805C9F4F821B9109F1 +:1029F0008F739927089588E097E00E94EF1421E0F3 +:102A0000892B09F420E0822F089580E090E0892B43 +:102A100029F00E94FB1481110C9400000895FC0120 +:102A2000A48DA80FB92FB11DA35ABF4F2C91848D2F +:102A300090E001968F739927848FA689B7892C938C +:102A4000A089B1898C91837080648C93938D848DDF +:102A5000981306C00288F389E02D80818F7D8083E2 +:102A60000895EF92FF920F931F93CF93DF93EC01A2 +:102A700081E0888F9B8D8C8D98131AC0E889F98925 +:102A8000808185FF15C09FB7F894EE89FF89608328 +:102A9000E889F98980818370806480839FBF81E0A9 +:102AA00090E0DF91CF911F910F91FF90EF900895EB +:102AB000F62E0B8D10E00F5F1F4F0F731127E02EC6 +:102AC0008C8D8E110CC00FB607FCFACFE889F989FE +:102AD000808185FFF5CFCE010E940F15F1CFEB8DE0 +:102AE000EC0FFD2FF11DE35AFF4FF0829FB7F894D2 +:102AF0000B8FEA89FB8980818062CFCFCF93DF93F0 +:102B0000EC01888D8823B9F0AA89BB89E889F98905 +:102B10008C9185FD03C0808186FD0DC00FB607FC3A +:102B2000F7CF8C9185FFF2CF808185FFEDCFCE016D +:102B30000E940F15E9CFDF91CF910895833081F086 +:102B400028F4813099F08230A9F008958730A9F0F7 +:102B50008830C9F08430B1F4809180008F7D03C04B +:102B6000809180008F7780938000089584B58F775F +:102B700084BD089584B58F7DFBCF8091B0008F77A1 +:102B80008093B00008958091B0008F7DF9CFCF93EE +:102B9000DF93282F30E0F901EB53FC4D8491F901CC +:102BA000E255FE4DD491F901E656FE4DC491CC2379 +:102BB000A1F081110E949E15EC2FF0E0EE0FFF1F97 +:102BC000E057FE4DA591B491EC91ED2381E090E0AA +:102BD00009F480E0DF91CF91089580E090E0FACF92 +:102BE0001F93CF93DF93282F30E0F901EB53FC4D77 +:102BF0008491F901E255FE4DD491F901E656FE4D5E +:102C0000C491CC23A9F0162F81110E949E15EC2FA0 +:102C1000F0E0EE0FFF1FEA57FE4DA591B4918FB77C +:102C2000F894EC91111108C0D095DE23DC938FBF8E +:102C3000DF91CF911F910895DE2BF8CFCF93DF93D3 +:102C400090E0FC01E255FE4D249186569E4DFC011C +:102C500084918823C9F090E0880F991FFC01E45803 +:102C6000FE4DA591B491FC01EA57FE4DC591D4915A +:102C700061110DC09FB7F8948C91209582238C939D +:102C80008881282328839FBFDF91CF9108956230E8 +:102C900051F49FB7F8943C91822F809583238C93B5 +:102CA000E8812E2BEFCF8FB7F894EC912E2B2C933D +:102CB0008FBFEACFCF93DF93EC0161E089E00E9400 +:102CC0001E16209731F460E089E0DF91CF910C94DB +:102CD000F015CF3FD10511F461E0F6CFEEECF3E251 +:102CE000E491E33029F140F4E130B1F0E230D9F081 +:102CF000C038D1058CF7E7CFE73021F1E83051F14A +:102D0000E430B1F780918000806280938000D0939E +:102D10008B00C0938A0004C084B5806884BDC7BDA1 +:102D2000DF91CF91089584B5806284BDC8BDF8CF8E +:102D300080918000806880938000D0938900C09348 +:102D40008800EECF8091B00080688093B000C0937F +:102D5000B300E6CF8091B00080628093B000C09352 +:102D6000B400DECF3FB7F8948091D2029091D302A5 +:102D7000A091D402B091D50226B5A89B05C02F3FE3 +:102D800019F00196A11DB11D3FBFBA2FA92F982F91 +:102D90008827BC01CD01620F711D811D911D42E08C +:102DA000660F771F881F991F4A95D1F708958F9254 +:102DB0009F92AF92BF92CF92DF92EF92FF924B0120 +:102DC0005C010E94B2166B017C010E94B2166C1964 +:102DD0007D098E099F09683E734081059105A8F31E +:102DE00021E0821A9108A108B10888EEC80E83E09C +:102DF000D81EE11CF11C81149104A104B10429F72F +:102E0000FF90EF90DF90CF90BF90AF909F908F900A +:102E100008952FB7F8946091CE027091CF028091FF +:102E2000D0029091D1022FBF089584E98093BC0015 +:102E30008091BC0084FDFCCF08958093BB0084E8A2 +:102E40008093BC008091BC0087FFFCCF089584EA8A +:102E50008093BC008091BC0087FFFCCF88E70C9476 +:102E60001D170E94271780E48093BB0084E880939D +:102E7000BC00E8E0F3E09091BC0097FFFCCF91919B +:102E80009093BB008093BC0097E0E830F90799F776 +:102E90008091BC0087FFFCCF0C941517CF93C82FEF +:102EA0000E94271780E00E941D178C2F0E941D177B +:102EB000CF910C941517480F592F511D41385105CA +:102EC00014F040E850E0481BFB0177FD379633E0F3 +:102ED000F595E7953A95E1F7F695FE2FEE27F795EC +:102EE000E795E80FF91FE85FFC4F6770772781E0EF +:102EF00090E001C0880F6A95EAF7382F213041F43D +:102F0000415078F08191DF011197832B8C93F8CF9A +:102F10008095415030F09191DF01119798239C9357 +:102F2000F8CF0895CF92DF92EF92FF920F93CF9355 +:102F3000DF936C017B01C42FD22F202F0E945B17DF +:102F4000B7016D0F711D61507109603471052CF46A +:102F5000202F4C2FC6010E945B17202F4D2FB70149 +:102F6000C6010E941213C6018C0F911D202F4D2FF8 +:102F7000B7010197DF91CF910F91FF90EF90DF9014 +:102F8000CF900C9412132F923F924F925F926F92B8 +:102F90007F928F929F92AF92BF92CF92DF92EF92E9 +:102FA000FF920F931F93CF93DF93CDB7DEB72A978E +:102FB0000FB6F894DEBF0FBECDBF9A8389836A3007 +:102FC00061F5DC0152968C91B8E08B9F9001112441 +:102FD000E981FA8186859785820F931F9787868777 +:102FE0001586148681E090E02A960FB6F894DEBF2D +:102FF0000FBECDBFDF91CF911F910F91FF90EF904A +:10300000DF90CF90BF90AF909F908F907F906F9008 +:103010005F904F903F902F9008956D3019F3298164 +:103020003A813A872987D9011C96AD90BC90B0E8C7 +:10303000AB16B1040CF07BC0F901C684D784F0E470 +:10304000CF16D1040CF073C0D90152966C905297F0 +:1030500045E09501649E200D311D112412161306C2 +:103060000CF065C0262C312C910153E0220F331F48 +:103070005A95E1F72C0D3D1D121613060CF057C0A2 +:103080005196BC91BB83E985FA85F089FC83649FE6 +:10309000B00111249B012458334E3A832983712CAB +:1030A000E981FA818491F5E07F1201C080E0460158 +:1030B00038E0532E282F30E03E832D834C8080FF54 +:1030C0004B80411004C03B818C813817E1F010E047 +:1030D00000E00615C0F4D501A00FB11FB887AF837B +:1030E000F12CE12CE61460F4B701680D791D442D34 +:1030F0008F8198850E94F412BFEFEB1AFB0AF2CF82 +:103100000F5F1F4FE6CF8D819E81959587955A94CD +:10311000820C931C5110CECF7394E981FA813196C1 +:10312000FA83E983A20CB31CF6E07F12B9CFA9851C +:10313000BA8552962C915297422F50E01C968D9151 +:103140009C91B6E02B9F800D911D1124E985FA8595 +:10315000958784872389222309F444CF6AEF640387 +:103160009001659F300D112420583F4F28173907D3 +:103170000CF038CFDF010190F081E02D0190F0815B +:10318000E02D6AE0CD0109952DCF0F931F93CF93CA +:10319000DF938C01D0E0C0E0F801EC0FFD1F6491DB +:1031A000662341F08DEE97E00E94C317892B11F042 +:1031B0002196F2CFCE01DF91CF911F910F9108950B +:1031C000682F8DEE97E00C94C317089590E080E08F +:1031D000089580917A00806980937A008EE48093CC +:1031E0007C0061E070E080E090E00E94D71683B739 +:1031F000817F826083BF80E130E020E093B79160FF +:1032000093BF889593B79E7F93BF90917A0096FD68 +:10321000FCCF4091780050917900240F351F8150E8 +:1032200069F780917A008F7780937A0084E03695F1 +:1032300027958A95E1F750E040E064EB7BE281E17D +:1032400090E00E94B133C901089588EC80937C001E +:1032500080917A00806880937A0065E070E080E079 +:1032600090E00E94D71680917A00806480937A0063 +:1032700080917A0086FDFCCF609178007091790092 +:103280006A54714090E080E00E947C3226EF38E280 +:103290004CE95FE30E947934089590917A00906937 +:1032A00090937A008E50806480937C0083B7817FF6 +:1032B000826083BF20E290E080E033B7316033BFAB +:1032C000889533B73E7F33BF30917A0036FDFCCF0F +:1032D0004091780050917900840F951F215069F733 +:1032E00020917A002F7720937A0025E09695879594 +:1032F0002A95E1F708958FE00E944D19A091D90217 +:10330000B091DA029C010E94FD330E947E3228E5D2 +:1033100039E743E353E40E9479340E94F234CB014D +:1033200008952091E70230E0E5E6F2E090E080E0E9 +:10333000AF01455652404217530724F44191840F80 +:10334000911DF6CF08958091E002882369F086E010 +:103350000E94C715892B41F06AE070E080E090E0A0 +:103360000E94D7161092E00208950F931F93CF93F7 +:1033700080914801882399F0CFEF0FEE11E061E0D2 +:1033800085E00E94F015C8010197F1F760E085E043 +:103390000E94F015C8010197F1F7C15081F7CF9154 +:1033A0001F910F9108952F923F924F925F926F92CB +:1033B0007F928F929F92AF92BF92CF92DF92EF92C5 +:1033C000FF920F931F93CF93DF9310E000E0D0E0C4 +:1033D000C0E03EE3E32EF12C40ECC42ED12CAA2415 +:1033E000A394B12C60E2662E712C70E4272E312C50 +:1033F0004C2E86E00E94C71521E0892B09F020E0C1 +:103400002093E002F092E602E092E502D092E4021C +:10341000C092E302B092E202A092E10282E890E060 +:103420009093F2028093F1028091F1029091F20266 +:1034300095958795582E9FE1591243C0F092E60268 +:10344000E092E502D092E402C092E302B092E2027E +:10345000A092E102EEEBF0E0F093F202E093F102D1 +:103460009FE5592E0E94061482E08093FF07109377 +:10347000FA070093F907E0E3F0E0F093FC07E0932C +:10348000FB078EE50E94E0181092FA071092F907E8 +:103490007092FC076092FB07912C812C841438F504 +:1034A00080910703F40196E0989FE00DF11D11242F +:1034B000E05BFE4F80810E94E018EFEF8E1A9E0ABB +:1034C000EDCFF0E65F12CECFF092E602E092E50299 +:1034D000D092E402C092E302B092E202A092E10232 +:1034E0003092F2022092F10280E2582EBBCF10936C +:1034F000FA070093F9077092FC076092FB07852D8D +:103500000E94E0180E94A3190E94311786E00E94D1 +:10351000C715892B09F088CF8091E002811184CFF3 +:1035200080900703F6E08F9E40011124C401805B68 +:103530009E4F4C01FC01EC0FFD1F50820E94B519FB +:103540006AE070E080E090E00E94D7162196005F6C +:103550001F4FC530D10509F04BCFF4011582DF9123 +:10356000CF911F910F91FF90EF90DF90CF90BF9080 +:10357000AF909F908F907F906F905F904F903F9013 +:103580002F9008953F924F925F926F927F928F9209 +:103590009F92AF92BF92CF92DF92EF92FF920F93E2 +:1035A0001F93CF93DF93CDB7DEB72E970FB6F89466 +:1035B000DEBF0FBECDBF80910403882309F4A5C1EF +:1035C0001092A5071092A6071092A7071092A807BD +:1035D0008090A5079090A607A090A707B090A80795 +:1035E000C090FA02D090FB02E090FC02F090FD0245 +:1035F000A7019601C501B4010E940C342B013C01C6 +:1036000020E030E0A9010E94213518160CF0A0C17D +:10361000C301B2010E94F23480914901882309F468 +:10362000B8C1C092AD07D092AE07E092AF07F0925A +:10363000B007E12CF12C00EA10E420E030E040E497 +:1036400050E46E31710540F0E12CF12C00E81FE3ED +:1036500020E030E040E05FE360E070E080E391E490 +:103660000E9418128091EB07882309F42AC10E9456 +:1036700009176D837E838F8398878091D3079091FC +:10368000D407A091D507B091D6074D815E816F8197 +:103690007885481B590B6A0B7B0B8091DF07909153 +:1036A000E007A091E107B091E207481759076A07C0 +:1036B0007B0708F406C1E091CD07F091CE07808129 +:1036C0009181A281B38189839A83AB83BC83E0918A +:1036D000D107F091D2079C01AD0160817181828197 +:1036E00093810E940C344B015C012091DB073091E7 +:1036F000DC074091DD075091DE0769817A818B817B +:103700009C810E940C346B017C012091C107309197 +:10371000C2074091C3075091C407C501B4010E947C +:10372000DD322091D7073091D8074091D9075091C9 +:10373000DA070E940D342B013C014092D7075092CA +:10374000D8076092D9077092DA073090EC073110F1 +:103750001AC02091BD073091BE074091BF0750911C +:10376000C007C701B6010E94DD329B01AC01C30155 +:10377000B2010E940C346093D7077093D8078093EE +:10378000D9079093DA074090D7075090D8076090F8 +:10379000D9077090DA071091E7079091E8079E87A4 +:1037A000A091E907AD870091EA07212F392F4A2F11 +:1037B000502FC301B2010E94213518160CF0CCC065 +:1037C000812F9E85AD85B02F8093D7079093D80722 +:1037D000A093D907B093DA07332009F4D6C020911B +:1037E000BD073091BE074091BF075091C007C5018A +:1037F000B4010E94DD324B015C012091C50730917C +:10380000C6074091C7075091C807C701B6010E947B +:10381000DD329B01AC016091D7077091D807809190 +:10382000D9079091DA070E940C34A50194010E94F7 +:103830000D346B017C019B01AC01612F7E858D8570 +:10384000902F0E94773287FD18C01091E307909166 +:10385000E4079E87A091E507AD870091E607212F39 +:10386000392F4A2F502FB601C7010E94773287FDAA +:1038700004C01C2DDE86ED860F2DE091CF07F09160 +:10388000D007812F9E85AD85B02F80839183A28341 +:10389000B38389819A81AB81BC818093DB0790934C +:1038A000DC07A093DD07B093DE078D819E81AF8199 +:1038B000B8858093D3079093D407A093D507B0938E +:1038C000D6076091A9077091AA078091AB079091E4 +:1038D000AC070E94EB34CB012E960FB6F894DEBFF6 +:1038E0000FBECDBFDF91CF911F910F91FF90EF9051 +:1038F000DF90CF90BF90AF909F908F907F906F9010 +:103900005F904F903F900C945A1680910303609102 +:1039100044017091450181110EC08091F80290918F +:10392000F90220910203BC01222329F06091430196 +:10393000680F792F711D90E080E00E947C326093C7 +:10394000A5077093A6078093A7079093A80740CE7A +:10395000C301B20190585ECE8091E3079091E407D5 +:10396000A091E507B091E60789879A87AB87BC8766 +:103970009C01AD01C301B2010E94773287FF2CCFB9 +:1039800089859A85AB85BC851FCF812C912C5401EC +:1039900034CF20E030E040E05FE3C701B6010E9491 +:1039A0000D349B01AC01C501B4010E9421351816EC +:1039B0004CF41092A9071092AA071092AB0710922C +:1039C000AC077FCF80E090E0AFE7B3E48093A90736 +:1039D0009093AA07A093AB07B093AC0772CF4F9216 +:1039E0005F926F927F928F929F92AF92BF92CF928F +:1039F000DF92EF92FF92CF93DF938090DB02909063 +:103A0000DC02A090DD02B090DE02C0910703D0E09E +:103A1000C501B4010E94EB346B017C0120E030E071 +:103A200048E453E4C501B4010E94773293E0CC0F1F +:103A3000DD1F9A95E1F7CE5FDE4F87FF31C0288109 +:103A4000398150E040E02551310941095109C70150 +:103A5000B6010E94B03628EC30E040E050E00E9411 +:103A6000B133CA01B9016B5E7F4F8F4F9F4F0E94E8 +:103A70007E326093FA027093FB028093FC02909373 +:103A8000FD02DF91CF91FF90EF90DF90CF90BF903C +:103A9000AF909F908F907F906F905F904F90089520 +:103AA0004A805B80712C612C20E030E04CE853E4CC +:103AB000C501B4010E94773287FF1FC088809980BA +:103AC000B12CA12CA7019601285C310941095109AB +:103AD000C301B201681979098A099B090E94B036AD +:103AE00020E530E040E050E00E94B133CA01B90166 +:103AF000680D791D8A1D9B1DBACF2C813D8150E038 +:103B000040E02419350946095709C701B601685133 +:103B10007140810991090E94B03620E530E040E013 +:103B200050E00E94B133CA01B901640D751D861DB4 +:103B3000971D9DCFFC0101900020E9F73197AF015F +:103B4000481B590BBC018DEE97E00C9491148F9299 +:103B50009F92AF92BF920F931F93CF93DF93CDB7F6 +:103B6000DEB7A1970FB6F894DEBF0FBECDBF19A286 +:103B7000423008F44AE08E010F5D1F4F842E912CD5 +:103B8000B12CA12CA50194010E94DB33E62FB901D1 +:103B9000CA01EA30F4F4E05DD801EE938D01232BE5 +:103BA000242B252B79F790E080E0109719F0CD01B8 +:103BB0000E949A1DA1960FB6F894DEBF0FBECDBF2E +:103BC000DF91CF911F910F91BF90AF909F908F90F9 +:103BD0000895E95CE1CFCF92DF92EF92FF92CF930D +:103BE000DF9397FF19C06B017C018DE20E94E01802 +:103BF000EC0166277727CB016C197D098E099F0997 +:103C00004AE00E94A71D8C0F9D1FDF91CF91FF906E +:103C1000EF90DF90CF9008954AE0DF91CF91FF9031 +:103C2000EF90DF90CF900C94A71D4F925F926F9210 +:103C30007F928F929F92AF92BF92CF92DF92EF923C +:103C4000FF920F931F93CF936B017C01742EAC01F5 +:103C50009B010E947635882399F089EA92E0CF9102 +:103C60001F910F91FF90EF90DF90CF90BF90AF909A +:103C70009F908F907F906F905F904F900C949A1DC3 +:103C800046015701E894B7F82FEF3FEF4FE75FE7A2 +:103C9000C501B4010E94763581110DC02FEF3FEFB1 +:103CA0004FE75FE7C501B4010E94773218161CF494 +:103CB0008DEA92E0D4CF2FEF3FEF4FE75FE4C701EB +:103CC000B6010E94213518161CF481EB92E0C7CF93 +:103CD0002FEF3FEF4FE75FECC701B6010E9477324D +:103CE00087FDF3CF20E030E0A901C701B6010E94B3 +:103CF000773210E000E087FF08C08DE20E94E018F4 +:103D00008C01F7FAF094F7F8F094C0E060E070E00E +:103D100080E09FE37C1641F020E030E040E251E497 +:103D20000E947934CF5FF6CFA70196010E940D342F +:103D30002B013C010E94F2344B015C014AE00E94DD +:103D4000A71D7C01E00EF11ECC23B1F1C501B40129 +:103D50000E947C329B01AC01C301B2010E940C3471 +:103D60004B015C018EE20E94E018E80EF91EC15082 +:103D700018F120E030E040E251E4C501B4010E94B6 +:103D8000DD322B013C010E94F2344B01B12CA12CFD +:103D90004AE0C501B4010E94A71DE80EF91EC50145 +:103DA000B4010E947C329B01AC01C301B2010E94AC +:103DB0000C344B015C01DBCFC701CF911F910F91F8 +:103DC000FF90EF90DF90CF90BF90AF909F908F903B +:103DD0007F906F905F904F900895CF92DF92EF9217 +:103DE000FF920F931F93CF93DF93C82F81E0DC2FB7 +:103DF000D827D093FE07C093FD078093FF070C2FB1 +:103E00002EE046E661E370E081E090E00E949217C8 +:103E10002091050330910603253F81E03807B8F46F +:103E2000A4E6B0E00E94FD3324EF31E040E050E032 +:103E30000E94B133BA01A9014E5F5F4F6F4F7F4FB0 +:103E40002EE061E370E081E090E00E943B1360911E +:103E5000A5077091A6078091A7079091A8070E94D7 +:103E6000EB349B01AC01A4E6B0E00E94D03334EF08 +:103E7000C32EDD24D394E12CF12CA70196010E94DE +:103E8000B133DA01C9010296A11DB11D02970C2FB1 +:103E90002DE043E062E370E00E943B136091A507D0 +:103EA0007091A6078091A7079091A8070E94EB3414 +:103EB0009B01AC01A4E6B0E00E94D033A7019601BB +:103EC0000E94B133DA01C9010296A11DB11D039709 +:103ED00024E045E06CE370E00E943B136091A5078D +:103EE0007091A6078091A7079091A8070E94EB34D4 +:103EF0009B01AC01A4E6B0E00E94D033A70196017B +:103F00000E94B13389019A010E5F1F4F2F4F3F4F1F +:103F10000150110941E3E42EF12C4D2FB701C801E6 +:103F20000E94F4128FEFE81AF80A8DE3E816F10404 +:103F3000A1F76091A5077091A6078091A7079091BE +:103F4000A8070E94EB349B01AC01A4E6B0E00E94FC +:103F5000D03324EF31E040E050E00E94B133DA0189 +:103F6000C9010296A11DB11D0397ED2E04E025E0C5 +:103F700045EC51E16BE370E00E945D130C2F2EE0E5 +:103F800047E161E370E088E690E00E94921760915B +:103F9000A9077091AA078091AB079091AC070E9486 +:103FA000EB349B01AC012F5F310941095109A7E1B5 +:103FB000B0E00E94D033CC24C394DD24DA94ED2CFD +:103FC000FD2CA70196010E94B133422F2EE061E340 +:103FD00070E088E690E00E943B13C093FE07D09308 +:103FE000FD0782E090E09093FA078093F90707E3DA +:103FF00010E01093FC070093FB076091A5077091F8 +:10400000A6078091A7079091A80740E00E94151E7F +:1040100088EF0E94E01883EC91E10E94C51889E6C0 +:1040200090E09093FA078093F9071093FC070093B0 +:10403000FB076091A9077091AA078091AB07909147 +:10404000AC070E94EB349B01AC012F5F31094109A1 +:104050005109A4E6B0E00E94D033A70196010E9466 +:10406000B133CA01B9010E94EB1D81EC91E10E94BC +:10407000C518D093FE07C093FD07DF91CF911F9124 +:104080000F91FF90EF90DF90CF9008956F927F9205 +:104090008F929F92AF92BF92CF92DF92EF92FF9258 +:1040A0000F931F93CF93DF93B090070377247394FC +:1040B000B11001C0712C809142018150990B109276 +:1040C000E6021092E502880F991F9093E402809314 +:1040D000E30281E090E09093E2028093E1028B2D75 +:1040E00090E0880F991F9093F2028093F10286E08E +:1040F0000E94C71521E0892B09F020E02093E002FF +:10410000FF24F39472E0972EE6E08E2EFCE0CF2E93 +:10411000D12C0E940614C091F102D091F202D595E3 +:10412000C795EC2E8E011127C801870D911D77FCD4 +:104130009A958B199109712C97FD06C083309105D2 +:1041400014F082E090E0782EF092FE071092FD07C6 +:104150009092FF071092FA071092F9071092FC074D +:104160001092FB0781E79CE10E94C5181092FE07A0 +:10417000F092FD071092FA071092F907A72C072C6E +:10418000000CBB08C501019654E0880F991F5A9591 +:10419000E1F79093FC078093FB078FE69CE10E9478 +:1041A000C5186C2E671890E080E098012A193B0929 +:1041B0005901209142018C010F5F1F4F6216D0F40C +:1041C000D092FA07C092F907980144E0220F331FFA +:1041D0004A95E1F73093FC072093FB078A0D9B1D5E +:1041E000889E9001899E300D1124C901805B9E4FED +:1041F0000E949A1DC801639403301105D1F60E94F4 +:10420000A3190E94311786E00E94C715892BB9F4C3 +:104210008091E002811113C00E94B519E09207035A +:10422000DF91CF911F910F91FF90EF90DF90CF9092 +:10423000BF90AF909F908F907F906F900895BC2E0D +:1042400068CF0E94EE361F93CF93DF93EC01162FB9 +:104250000E949B33181739F0612FCE01DF91CF9167 +:104260001F910C94A333DF91CF911F910895AF92CA +:10427000BF92CF92DF92EF92FF920F931F93CF9353 +:10428000DF936091470182E090E00E9423216091DA +:10429000460183E090E00E9423216091450184E083 +:1042A00090E00E9423216091440185E090E00E940B +:1042B00023216091430186E090E00E9423216091D8 +:1042C0004C0187E090E00E94232160914B0188E03F +:1042D00090E00E94232160914A0189E090E00E94D1 +:1042E0002321609180018AE090E00E942321609167 +:1042F00049018BE090E00E942321609148018CE00D +:1043000090E00E942321609107038DE090E00E94DD +:104310002321609142018EE090E00E942321609170 +:104320004E018FE090E00E9423216091DF0280E146 +:1043300090E00E9423216091FF0281E190E00E94C1 +:10434000232182E1E82EF12C10E006E08091420169 +:104350001817B8F5109F60011124D0E0C0E0FE01ED +:10436000EC0DFD1DE05BFE4F6081C7018C0F9D1FB2 +:104370000E9423212196C630D10589F7670186E086 +:10438000C80ED11C88E0189FE0011124CE5FDE4FDB +:104390008EE0E80EF11C69812296C6010E9423215D +:1043A000560182E0A80EB11CFE0132976081C60161 +:1043B00001960E9423216501AE14BF0461F71F5FBF +:1043C000C5CFDF91CF911F910F91FF90EF90DF90BC +:1043D000CF90BF90AF9008958F929F92AF92BF926F +:1043E000CF92DF92EF92FF92CF938FEF90E00E94F7 +:1043F0005A168BEA94E00197F1F78EE00E944D196E +:104400007C018AE00E94C7159091B802981729F0A4 +:1044100091E09093FE028093B802809101019FEF9A +:10442000980F90930101811106C00E947B1990930F +:104430000103809300036091A9077091AA078091FE +:10444000AB079091AC070E94EB34CB010E945A1647 +:104450008090DB029090DC02A090DD02B090DE0242 +:10446000B70190E080E00E947C32A50194010E9497 +:104470000C342DEC3CEC4CE45DE30E94DD32A501F4 +:1044800094010E940D346093DB027093DC028093F0 +:10449000DD029093DE020E94EF1C60910503709193 +:1044A000060390E080E00E947C326B017C01209149 +:1044B000A5073091A6074091A7075091A8070E9431 +:1044C00077328111B5C02091FA023091FB02409100 +:1044D000FC025091FD02C701B6010E940C346B0131 +:1044E0007C0120E030E0A9010E94213518160CF073 +:1044F00095C020E030E040EA50E4C701B6010E94D8 +:10450000213518160CF494C06091F8027091F902EC +:1045100090E080E00E947C322091FA023091FB0210 +:104520004091FC025091FD020E940C346B017C0111 +:1045300020E030E0A9010E94213518160CF087C058 +:10454000C701B6010E94F2346530710508F083C0DE +:1045500080914F01811105C080914D0181110E9410 +:10456000B51981E080934F0110924D0180910503B0 +:1045700090910603853F21E0920710F01092000110 +:1045800020910001211140C0843F9140E8F58FEF58 +:1045900090E00E945A160E94B519C1E0C093000134 +:1045A0000E9446200E943721C093FE028EE00E94A6 +:1045B0004D19BC0190E080E00E947C326093DB02E8 +:1045C0007093DC028093DD029093DE021092F00281 +:1045D0008091F8029091F9022CE231E03093E602EA +:1045E0002093E50220E233E03093E4022093E302DB +:1045F0002AE030E03093E2022093E102880F991F15 +:104600009093F2028093F102CF91FF90EF90DF90B0 +:10461000CF90BF90AF909F908F90089520E030E0B2 +:1046200040EA50ECC701B6010E94773287FF6CCF99 +:104630006091FA027091FB028091FC029091FD0260 +:104640000E94F23470930603609305035DCFC701A7 +:10465000B601905877CF10924F0188CF0C949B33BE +:104660002F923F924F925F926F927F928F929F9282 +:10467000AF92BF92CF92DF92EF92FF920F931F9370 +:10468000CF93DF938C0186E08093FF0781E08093D6 +:10469000FE071092FD076091CB027091CC02072EAD +:1046A000000C880B990B0E947E322B013C0145ECDB +:1046B000C42E42E0D42E7601C2E0D0E05AE0A52E0E +:1046C000B12CBE010D2E000C880B990B0E947E327E +:1046D0009B01AC0160E070E080E291E40E9426352D +:1046E0009B01AC01C301B2010E9479340E94EB34FA +:1046F000CB01B5010E94C036F701819391937F01F0 +:104700002197F8F61093CC020093CB02C9EBD2E0CC +:1047100094E0E92EF12C22E0822E912C3AE0232E17 +:10472000312CB401092C000C880B990B0E947E32AD +:104730009B01AC0160E070E080E291E40E942635CC +:104740002B013C016091CB027091CC02072E000C32 +:10475000880B990B0E947E32A30192010E9479344A +:104760000E94EB34CB01B1010E94C036F6012081DA +:104770003181821B930BF2E3F89FB001F99F700D1A +:104780001124072E000C880B990B0E947E32288181 +:1047900039814A815B810E940D342B013C0120E06C +:1047A00030E0A9010E94773281117CC04882598291 +:1047B0006A827B8201E022E346E270E060E0C701AA +:1047C00004970E943B138EECA82EBB24BA940FEFE3 +:1047D0001FEF288139814A815B8160E070E080E8C9 +:1047E00090E40E940C342B013C01B5010B2C000C11 +:1047F000880B990B0E947E329B01AC01C301B20170 +:104800000E940D340E94EB34F092FA07E092F9070F +:104810007093FC076093FB07F60160817181600F64 +:10482000711F072E000C880B990B0E94EB1D0F5F68 +:104830001F4FF2E3AF0EB11C0230110551F6249662 +:1048400021E0821A910882E0C80ED11CECE2EE0E43 +:10485000F11CF8E8EF16F10409F063CF00E022E064 +:1048600040E870E060E090E080E00E943B132DE0C3 +:1048700040E863E370E090E080E00E943B13DF914A +:10488000CF911F910F91FF90EF90DF90CF90BF904D +:10489000AF909F908F907F906F905F904F903F90E0 +:1048A0002F900895C301B20190582DEC3CEC4CE4DC +:1048B0005FE30E94DD32A30192010E940D34688300 +:1048C00079838A839B8376CF86E00E94C71521E097 +:1048D000892B09F020E02093E0020E9406148091C9 +:1048E000F1029091F202959587950E9430230E94E3 +:1048F00031170E94A31986E00E94C715892B69F71A +:104900008091E0028111E9CF0E94B5198091CB021C +:104910009091CC0208952F923F924F925F926F92A6 +:104920007F928F929F92AF92BF92CF92DF92EF923F +:10493000FF920F931F93CF93DF93CDB7DEB76597A9 +:104940000FB6F894DEBF0FBECDBF182FE091E7027F +:10495000F0E0EB59FD4F80818150990B1092E602F7 +:104960001092E502880F991F9093E4028093E3026E +:1049700081E090E09093E2028093E102812F90E049 +:10498000880F991F9093F2028093F10286E00E94B3 +:10499000C71521E0892B09F020E02093E002109256 +:1049A000FE0781E08093FD078091F1029091F20271 +:1049B0009C01359527953D872C873C853D8B6C84E4 +:1049C0007D8477249301211B310948E3429FC00174 +:1049D000439F900D1124280E391E2114310409F132 +:1049E0006627772762197309072E000C880B990B2D +:1049F0000E947E322AE939E949E15FE30E94DD3213 +:104A00004B015C01B101330C880B990B0E947E3283 +:104A10009B01AC01C501B4010E940D340E94EB342E +:104A20001B010E940614430182E0881A910861016B +:104A300098E4C91AD108F3013396FC8BEB8B97FCF1 +:104A40008AC0E091E702F0E0EB59FD4F80818815C4 +:104A5000190409F00CF47FC001E020E340E370E0AA +:104A600060E0C6010E943B1396012D5F3F4F3A8BD9 +:104A7000298B00E02AE24AE263E070E089899A89A2 +:104A80000E943B1370E060E0C6010E94DF1370E0FB +:104A900060E08601015D1F4FC8010E94DF136FE2D5 +:104AA00070E0C6010E94DF136FE270E0C8010E944F +:104AB000DF130E949119F401E80FF11DEE0FFF1FA3 +:104AC000E75EFD4F80819181988B8F8773E0E72EA1 +:104AD000F12C512C412CB12CA12CF50153E0F59572 +:104AE000E7955A95E1F7E40DF51D2F853889E20F1A +:104AF000F31FE491C5018770992720E830E002C0D8 +:104B0000359527958A95E2F7C901F0E0E223F9236C +:104B1000EF2B79F0C501880F991F8A0D9B1D01E0CD +:104B200023E043E0B701E989FA898E0F9F1F0E94B5 +:104B30003B13FFEFAF1ABF0A2EE0A216B10469F6CD +:104B400032E0430E511C43E0E40EF11C8DE2E81606 +:104B5000F10409F0C0CF9FEF891A990AE8E3CE0E5D +:104B6000D11C2B893C898216930609F068CF80916D +:104B70004E01811140C00E949119F301E80FF11D0F +:104B8000EE0FFF1FE353FE4F40815181EE24E3946B +:104B900000E124E260E370E080E390E00E945D13B6 +:104BA0000E9431170E94A31986E00E94C715892B25 +:104BB00001F58091E00281111CC00E94B5198D8918 +:104BC00065960FB6F894DEBF0FBECDBFDF91CF91D3 +:104BD0001F910F91FF90EF90DF90CF90BF90AF901B +:104BE0009F908F907F906F905F904F903F902F900D +:104BF00008951C85D9CE823009F083C00E94911996 +:104C0000860D972D911DFC01E75BF34EE490880F14 +:104C1000991FFC01EF57FE4F80809180D12CC12C51 +:104C200004E310E3CE1408F0BBCFF401EC0DFD1D3E +:104C3000449180E1840F833008F45EC03E85313FAB +:104C4000E9F0323FD1F1403F08F058C0193710F079 +:104C5000085F10E088E0489FA001112443585B4E94 +:104C6000602F70E028E0812F90E00E941914185FF7 +:104C700090EF9E873FEFC31AD30AD4CF4E39D0F7B7 +:104C80001D3710F0085F10E0A02EB12C612E712CA2 +:104C9000E3E04E9FA00111244D555D4E23E0B50188 +:104CA000C3010E94191421E042EA52E1B501C30197 +:104CB00003960E9419141C5FDDCF4F31D8F61937C7 +:104CC00010F0085F10E0A02EB12C612E712CF7E0DF +:104CD0004F9FA001112447535E4E27E0B501C30149 +:104CE0000E94191421E042EA52E1B501C30107967E +:104CF0000E941914185FBECF4E87BCCF20EF2E87BD +:104D0000B9CF80E390E09093FA078093F907E1E34D +:104D1000F0E0F093FC07E093FB0781E08093FF074E +:104D20000E949119FC858F0FE82FF0E0EE0FFF1F16 +:104D3000E350F44E65917491CE0101960E94703259 +:104D4000CE0101960E949A1D2BCF1F920F920FB693 +:104D50000F9211242F933F934F935F936F937F9301 +:104D60008F939F93AF93BF93EF93FF9388E097E068 +:104D70000E940F15FF91EF91BF91AF919F918F917D +:104D80007F916F915F914F913F912F910F900FBE47 +:104D90000F901F9018951F920F920FB60F9211242B +:104DA0002F938F939F93EF93FF93E0911807F091C8 +:104DB00019078081E0911E07F0911F0782FD1BC03B +:104DC0009081809121078F5F8F7320912207821736 +:104DD00041F0E0912107F0E0E85FF84F958F809374 +:104DE0002107FF91EF919F918F912F910F900FBE0F +:104DF0000F901F9018958081F4CF1F920F920FB6DD +:104E00000F9211242F933F938F939F93AF93BF9350 +:104E10008091CE029091CF02A091D002B091D102A8 +:104E20003091CD0223E0230F2D3758F50196A11DB7 +:104E3000B11D2093CD028093CE029093CF02A09318 +:104E4000D002B093D1028091D2029091D302A0916E +:104E5000D402B091D5020196A11DB11D8093D2025A +:104E60009093D302A093D402B093D502BF91AF9197 +:104E70009F918F913F912F910F900FBE0F901F9098 +:104E8000189526E8230F0296A11DB11DD2CF1F92BF +:104E90000F920FB60F9211242F933F934F935F936E +:104EA0006F937F938F939F93EF93FF9383B1817061 +:104EB00029B19091D802981709F49DC030E0220FD3 +:104EC000232F221F330B922F8093D8024091D702B9 +:104ED000241709F490C02093D7022091E102309169 +:104EE000E202981719F03195219531094091F102AC +:104EF0005091F2026091E5027091E602240F351F95 +:104F0000261737070CF48BC02091E1023091E202A2 +:104F1000981719F03195219531094091F10250917E +:104F2000F2026091E3027091E402240F351F6217D0 +:104F300073070CF46FC04091E1025091E2029817A0 +:104F400019F05195419551092091F1023091F202E9 +:104F5000240F351F3093F2022093F10241E09813A1 +:104F600040E02091D602421709F440C02091E102AE +:104F70003091E202981719F031952195310960912D +:104F8000F1027091F202E091E502F091E602260F43 +:104F9000371F2E173F070CF44CC02091E1023091CF +:104FA000E202981719F03195219531096091F102CB +:104FB0007091F202E091E302F091E402260F371FB4 +:104FC000E217F3078CF12091E1023091E202981789 +:104FD00019F03195219531098091F1029091F202F9 +:104FE000820F931F9093F2028093F1024093D602B6 +:104FF00081E08093FE02FF91EF919F918F917F91CD +:105000006F915F914F913F912F910F900FBE0F9035 +:105010001F9018952091E3023091E4029BCF2091DC +:10502000E5023091E60296CF8091E3029091E4028E +:10503000D9CF8091E5029091E602D4CF18950F93D5 +:105040001F93CF93DF93E8E0F7E01382128288EE9C +:1050500093E0A0E0B0E084839583A683B7838FE8D4 +:1050600092E09183808385EC90E09587848784EC3F +:1050700090E09787868780EC90E0918B808B81EC25 +:1050800090E0938B828B82EC90E0958B848B86EC06 +:1050900090E0978B868B118E128E138E148EEDEE10 +:1050A000F7E0138212821682178280E180871582D0 +:1050B0001482128681EA92E0918380831586148699 +:1050C0001786168681E0808B118A828B138AC1EB4A +:1050D000D7E029EA37E03F8F2E8F2DEA37E03D8F6A +:1050E0002C8F25EA37E039A328A31AAE1AAA1BAAE7 +:1050F0001CAA1DAA40E050E06FE773E44EAB5FAB23 +:1051000068AF79AF44E650E060E070E04EA75FA77B +:1051100068AB79AB21E030E0398F288F3B8F2A8F45 +:105120008BAF80E090E0A0E3B1E488839983AA8309 +:10513000BB8380E090E0A0E0BFE38C839D83AE83DF +:10514000BF8380E090E0A0E8BFE388879987AA87C3 +:10515000BB8780E090E0A0E3B1EC8C879D87AE87B1 +:10516000BF878DEC9CECACE4BDEB888B998BAA8B54 +:10517000BB8B80E090E0A0E2B1EC8C8B9D8BAE8B82 +:10518000BF8B0E9409170EA51FA528A939A9601B6E +:10519000710B820B930B6AA37BA38CA39DA3DF915E +:1051A000CF911F910F910895CF93DF93CDB7DEB7C5 +:1051B0002A970FB6F894DEBF0FBECDBF789484B5A2 +:1051C000826084BD84B5816084BD85B5826085BD03 +:1051D00085B5816085BD80916E00816080936E0091 +:1051E0001092810080918100826080938100809183 +:1051F0008100816080938100809180008160809334 +:1052000080008091B10084608093B1008091B000F3 +:1052100081608093B00080917A00846080937A00EE +:1052200080917A00826080937A0080917A00816018 +:1052300080937A0080917A00806880937A0010923F +:10524000C1001092B90088E48093B8000E9427172B +:1052500080E00E941D1702EC11E2E1EEEE2EE1E289 +:10526000FE2EF80184910E941D170F5F1F4FE0165C +:10527000F106B9F70E94151711E01093B8000E94CB +:10528000311781E28093F50760E08EE00E941E16E0 +:1052900060E08FE00E941E1661E085E00E941E160D +:1052A00061E089E00E941E1662E087E00E941E16FF +:1052B00062E088E00E941E1662E086E00E941E16F0 +:1052C00062E08AE00E941E168FEF90E00E945A165C +:1052D00060E085E00E94F01580917A0087608093FD +:1052E0007A0080917A00886080937A007894109395 +:1052F0006B00109368001BBB90E080E00E942E239F +:10530000182F81E090E00E942E23912F8F3F98402C +:1053100009F0BBC082E090E00E942E23182F83E0AA +:1053200090E00E942E23912F909347018093460195 +:1053300084E090E00E942E23182F85E090E00E94E8 +:105340002E23912F909345018093440186E090E0B5 +:105350000E942E238093430187E090E00E942E2339 +:1053600080934C0188E090E00E942E2380934B01B3 +:1053700089E090E00E942E2380934A018AE090E029 +:105380000E942E23809380018BE090E00E942E23C8 +:1053900091E0811101C090E0909349018CE090E090 +:1053A0000E942E2391E0811101C090E0909348016A +:1053B0008DE090E00E942E23809307038EE090E022 +:1053C0000E942E23282E809342018FE090E00E94BD +:1053D0002E2380934E0180E190E00E942E2391E0E5 +:1053E000811101C090E09093DF0281E190E00E9482 +:1053F0002E238093FF0252E0852E51E0952E60E52A +:10540000A62E61E0B62E72E1E72EF12C312C23148A +:1054100009F447C010E000E0C701800F911F0E940F +:105420002E23F501E00FF11F80830F5F1F4F063021 +:10543000110591F7670126E0C20ED11C3EE0E30E94 +:10544000F11C3401C6010E942E23082F10E0102FFA +:105450000027F301118300832601F2E04F0E511C57 +:10546000C60101960E942E23082BF301019311938C +:105470003F0162014E145F0429F73394F8E08F0E68 +:10548000911C26E0A20EB11CC2CF68E090E080E043 +:105490000E9423216FEF81E090E00E9423210E946F +:1054A00037211091DF0280EC111101C088EC0E94BD +:1054B0004E1780EA111101C081EA0E944E170E9426 +:1054C000E9189093DA028093D9020E947B19909395 +:1054D000010380930003009146011091470110934E +:1054E000F9020093F8028EE00E944D19BC0190E091 +:1054F00080E00E947C326093DB027093DC02809338 +:10550000DD029093DE020E9425190E94EF1C20E02C +:1055100030E040EA51E46091FA027091FB02809120 +:10552000FC029091FD020E940D346B017C01B801D8 +:1055300090E080E00E947C329B01AC01C701B60183 +:105540000E94773287FF04C090E080E00E945A16E4 +:105550001092E3071092E4071092E5071092E60715 +:10556000412C512C3FE7632E33E4732E4092E70722 +:105570005092E8076092E9077092EA07A090CF077F +:10558000B090D0078091EB07F501C080D180E28018 +:10559000F380882309F478C7A3019201C701B601FB +:1055A0000E942135181634F5F5014082518262823D +:1055B00073828090D7079090D807A090D907B090B9 +:1055C000DA07C090E707D090E807E090E907F0908D +:1055D000EA07A7019601C501B4010E9421351816FA +:1055E000C4F4C092D707D092D807E092D907F092BE +:1055F000DA071FC020E030E0A901C701B6010E9410 +:10560000773287FFD6CFF501108211821282138282 +:10561000D0CFC090E307D090E407E090E507F0908A +:10562000E607A7019601C501B4010E94773287FD04 +:10563000D8CF81E08093EB0783B181708093D8024B +:1056400089B190E0880F892F881F990B8093D7022A +:105650002091D8029091D70281E0291380E08093B5 +:10566000D6028CE291E09093E6028093E50280E21C +:1056700093E09093E4028093E3028AE090E09093B9 +:10568000E2028093E102000F111F1093F2020093D7 +:10569000F1020E9409176093F4027093F50280935F +:1056A000F6029093F7020E94B5190E94B519209056 +:1056B000F1023090F2029101359527953A872987BA +:1056C0003093F9022093F80286E00E94C715482E15 +:1056D00081119FC08091F002882309F49AC00E9432 +:1056E000B5190E9409176B017C01C092EC02D0929F +:1056F000ED02E092EE02F092EF0286E00E94C71502 +:10570000892B59F40E9409176C197D098E099F098C +:10571000643F71408105910580F30E9409176C195F +:105720007D098E099F09643F71408105910508F448 +:1057300053C48FEF90E00E945A160E94B519512C65 +:10574000AAE06A2E712C1092E702852D0E948B240C +:10575000582EF8E0F81708F439C0E82FF0E0ED54BF +:10576000F44D0C94D436CE2B762EED2E552F632F80 +:10577000942FA22FC22FCC2F20E030E0A901C70127 +:10578000B6010E94773287FF54CF1092D70710924C +:10579000D8071092D9071092DA074BCFFEE16F2E8F +:1057A000712C81E08093E702852D0E948B24582E76 +:1057B00022E0821709F434C2281708F4E8C08823CD +:1057C00009F410C131E0831709F40FC10E94372199 +:1057D00081E08093FE0229853A853093F902209377 +:1057E000F8028CE291E09093E6028093E50280E279 +:1057F00093E09093E4028093E3028AE090E0909338 +:10580000E2028093E102C1018E7F9093F2028093C5 +:10581000F1024092F00280910203882309F1109175 +:105820004A011123E9F00E940917C090E802D090C4 +:10583000E902E090EA02F090EB026C197D098E0912 +:105840009F0928EE33E040E050E00E94DB3321174F +:1058500038F0109202030E94B51981E080934D0147 +:105860008091FE028823E9F180910303882349F1A6 +:1058700020E030E040EA51E46091FA027091FB02CE +:105880008091FC029091FD020E940D346B017C011D +:105890006091F8027091F90290E080E00E947C3201 +:1058A0009B01AC01C701B6010E94773287FF04C09B +:1058B00090E080E00E945A160E94B51981E0809322 +:1058C0004D011092FE0210920303109204030E94F5 +:1058D00009176093F4027093F5028093F602909397 +:1058E000F7020E9409170091F4021091F50220912D +:1058F000F6023091F702601B710B820B930B20E6CE +:105900003AEE40E050E00E94DB33122F2093F30286 +:105910008091030381110BC080914C01882339F0E1 +:10592000281728F081E0809303030E94B519809125 +:10593000040381110BC080914B01882339F01817A3 +:1059400028F081E0809304030E94B5190E94EC21A5 +:105950000E94C21A0E9409178091F607362F381B41 +:10596000832F9091F707992309F44CC33093F807DC +:105970001092F70780E090E0892B09F498CE0E94FE +:10598000FB14882309F493CE0E94000090CE83E09C +:10599000581609F448C194E0591218CF8091420179 +:1059A000883008F0FECE91E0980F909342018093EA +:1059B00007030E94D319E091070328E0E29FF0015A +:1059C0001124EE5FFE4F88ED90E09183808324E305 +:1059D00031E03383228386E891E095838483778264 +:1059E0006682DFCE0E944620DCCE8E010F5F1F4F05 +:1059F000812C912C5401839478EEE72E73E0F72EDE +:105A0000CC24C394D12CE091070324E0E29FF00161 +:105A10001124C4010197E80FF91FEE0FFF1FEE5F7D +:105A2000FE4F808191819093F9028093F802E8EC17 +:105A3000F0E0F093E602E093E502F092E402E092F7 +:105A4000E302D092E202C092E102880F991F909384 +:105A5000F2028093F102F1E0F0934D0186E00E94A2 +:105A6000C71521E0892B09F020E02093E0020E9475 +:105A7000061422E02093FF070E94EC210E94C21A24 +:105A80001092FA071092F9071092FC071092FB0788 +:105A900087E092E20E94C518C501B4010E94EB1D87 +:105AA00085EB92E00E949A1D80914F011092FA07B7 +:105AB0001092F907882309F48BC080E190E090935D +:105AC000FC078093FB078AEF91E20E94C5181092B1 +:105AD000FA071092F907E0E2F0E0F093FC07E09398 +:105AE000FB0783EF91E20E94C5186091F10270916B +:105AF000F20275956795072E000C880B990B0E9492 +:105B0000EB1D0E94A3190E94311786E00E94C71561 +:105B1000892B09F0ACCF8091E0028111A8CF809150 +:105B2000F1029091F20295958795F80181939193F6 +:105B30008F010E94B5196AE070E080E090E00E9459 +:105B4000D716FFEF8F1A9F0AAF0ABF0A24E082160A +:105B50009104A104B10409F056CF8FEF90E00E94A8 +:105B60005A168BEA94E00197F1F70E9425190E94DA +:105B7000F2344B0178876F83C980DA800B811C81F6 +:105B8000C6014E968017910708F00BCEED80FE807F +:105B9000C8014E968E159F0508F003CE87E08093CE +:105BA000E70280E00E948B24882309F4FACDE0917B +:105BB000070338E0E39FF0011124EE5FFE4FD1822E +:105BC000C08213830283F582E48297828682E9CDC4 +:105BD00020E130E03093FC072093FB078DEE91E24B +:105BE0000E94C5186091DB027091DC028091DD0299 +:105BF0009091DE020E94F23490E080E04AE00E9440 +:105C0000A71D1092FA071092F90780E290E0909396 +:105C1000FC078093FB0781EE91E20E94C51871CFCB +:105C20000E94D319BECD87E08093E70280914201A4 +:105C3000813009F4B6CD80E00E948B24882309F4DA +:105C4000B0CD1091070300914201802F8150990B34 +:105C5000BC011817190639F41150109307030150AD +:105C6000009342019ECD812F90E086179707BCF7E5 +:105C7000E6E01E9FD001112450E040E09C012F5F20 +:105C80003F4FFA01EA0FFB1FE05BFE4FF680F08208 +:105C90004F5F5F4F46305105A1F7A3E0220F331F3E +:105CA000AA95E1F7F901EE5FFE4F20813181B3E063 +:105CB000880F991FBA95E1F7DC01AE5FBE4F1196D0 +:105CC0003C932E938281938113969C938E9312978B +:105CD0008481958115969C938E93149786819781E4 +:105CE00017969C938E9316971F5FBDCF82E080938B +:105CF000E70210E068E2C62ED12C7CE2A72EBB247E +:105D0000B394E0E28E2EE3E09E2EF4E1EF2EF12C30 +:105D1000812F0E948B24182F813021F130F08230A6 +:105D200009F43FC00E9437210ECD80914601909129 +:105D30004701B092E602A092E5029092E4028092BE +:105D4000E3027092E2026092E102880F991F909341 +:105D5000F2028093F1020E946424909347018093A1 +:105D60004601D6CF8091440190914501D092E60240 +:105D7000C092E502E0E9F1E0F093E402E093E3028F +:105D80007092E2026092E102880F991F9093F202F2 +:105D90008093F1020E946424909345018093440112 +:105DA000B7CF8091430190E0F092E602E092E502E5 +:105DB00028EC30E03093E4022093E3027092E20298 +:105DC0006092E102880F991F9093F2028093F10292 +:105DD0000E946424809343019BCF83E08093E70279 +:105DE000F12C01E010E08F2D0E948B24F82E31E081 +:105DF0008317E9F18317F8F082E0F81293CF8091CE +:105E00004A0190E01092E6021092E50228E631E0A5 +:105E10003093E4022093E3027092E2026092E10286 +:105E2000880F991F9093F2028093F1020E946424DC +:105E300080934A01D8CF80914C0190E01092E60205 +:105E40001092E502ECE3F0E0F093E402E093E30269 +:105E50001093E2020093E102880F991F9093F202DF +:105E60008093F1020E94642480934C01BCCF809106 +:105E70004B0190E01092E6021092E50228E730E034 +:105E80003093E4022093E302E5E0F0E0F093E202D5 +:105E9000E093E102880F991F9093F2028093F10240 +:105EA0000E94642480934B019ECF84E08093E7029C +:105EB000809149010E948B2491E0811101C090E002 +:105EC0009093490140CC10E0E9E0EE2EF5E0DF2EA2 +:105ED000E092E702812F0E948B24182F882321F063 +:105EE0008130E1F000E009C0D092E70280918001AA +:105EF0000E948B248093800101E0F090DF0280EC0F +:105F0000F11001C088EC0E944E1780EAF11001C028 +:105F100081EA0E944E170111DBCF04CF8091DF028E +:105F200081278093DF02E8CF86E08093E7028091AB +:105F300048010E948B2491E0811101C090E0909370 +:105F4000480101CC8091FF0290E01092E60210928D +:105F5000E502E4EFF1E0F093E402E093E30221E0F4 +:105F600030E03093E2022093E102880F991F909372 +:105F7000F2028093F1020E9464248093FF020E9447 +:105F8000B519E1CB88E08093E70280914E010E9431 +:105F90008B2480934E01D7CB0E940614EE24E39409 +:105FA00000E320E34EE052E270E060E088E290E03F +:105FB0000E945D130E94311764E670E080E090E07B +:105FC0000E94D71686E00E94C715892BD9F78091C9 +:105FD000E0028111F7CFD3CF8091020391E08927AE +:105FE00080930203882351F00E9409176093E8020E +:105FF0007093E9028093EA029093EB0281E0809330 +:10600000FE0207CC9091F507391748F48F5F891786 +:1060100008F0B0CC81E083BF889513BEABCC11E013 +:106020001093F7076093F6078091F1079091F207BC +:1060300001969093F2078093F10780918001882365 +:1060400009F4BCC10E94061401E020E440E870E0BD +:1060500060E090E080E00E943B131093FF071093F4 +:10606000FE071092FD07E12C00E120E14DE953E22B +:1060700070E060E090E080E00E945D1383E190E0DA +:106080009093FA078093F90784E090E09093FC07DF +:106090008093FB0780910703E6E08E9FC0011124E7 +:1060A000805B9E4F0E949A1D80910503909106038C +:1060B000853F914008F02DC18091040381112BC1CF +:1060C00080910303811129C180910203811127C1AD +:1060D00080914F01811125C120E030E044E353E479 +:1060E0006091A9077091AA078091AB079091AC07C6 +:1060F0000E94773287FF17C185E025E330E03093B7 +:10610000FA072093F90721E030E03093FC07209351 +:10611000FB0792E09093FF07C82ED12C90914E017F +:10612000CC0CDD1C911101C1F601E358FD4F4081FB +:106130005181E12C0EE02CE161E070E080E590E01F +:106140000E945D13F601E159FD4F40815181E12C20 +:106150000EE02EE061E070E081E790E00E945D13C8 +:1061600081E08093FF070E94251920E030E040EA9B +:1061700052E40E94213518160CF0FAC00E9409174B +:1061800052E0660F771F881F991F5A95D1F728EEA6 +:1061900033E040E050E00E94DB3320FFE9C00E9482 +:1061A000B519609100037091010390E080E00E94B6 +:1061B0007C3220E030E048EC52E40E9479346B01FC +:1061C0007C016091FF0270E090E080E00E947E32EE +:1061D0009B01AC01C701B6010E94773287FDD4C094 +:1061E000E12C0EE02EE04FE353E262E270E082E049 +:1061F00090E00E945D1303E110E01093FA07009312 +:10620000F90720E130E03093FC072093FB070E9460 +:10621000251941E00E94151E88EF0E94E0188DE3C9 +:1062200093E20E94C5181093FA070093F90788E1DA +:1062300090E09093FC078093FB070E94E918BC0153 +:1062400090E080E00E947C3220E030E04AE754E4B5 +:106250000E94793442E00E94151E8BE393E20E9473 +:10626000C5181093FA070093F90780E290E0909325 +:10627000FC078093FB07609100037091010390E09D +:1062800080E00E947C3220E030E04AE754E40E9443 +:10629000793441E00E94151E89E393E20E94C518FB +:1062A0001093FA070093F90788E290E09093FC07B7 +:1062B0008093FB0782E393E20E94C51889E390E094 +:1062C0009093FA078093F90782E190E09093FC079E +:1062D0008093FB0784E08093FF0760910503709132 +:1062E0000603653F91E0790708F462C08EE293E20D +:1062F0000E94C51800E020E248E460E170E087E316 +:1063000090E00E94921780E00E94ED1E0E943117DB +:1063100031CB80E0F2CE81E0F0CE82E0EECE83E0C1 +:10632000ECCE84E0EACE86E0E8CE8330C1F038F4EB +:10633000813069F0823081F087E793E20AC08530CE +:10634000A1F080F08630C1F78DE793E202C089E9C1 +:1063500093E20E94C518F6CE83E993E2FACF8DE866 +:1063600093E2F7CF87E893E2F4CF82E893E2F1CFAC +:10637000E12C0EE02EE04BE553E262E170E082E0BA +:1063800090E00E945D130DCF0E94091742E0660F56 +:10639000771F881F991F4A95D1F728EE33E040E018 +:1063A00050E00E94DB3320FF1BCF0E94B51923CFA2 +:1063B00090E080E04AE00E94A71D9CCF0E94061456 +:1063C0000E94251920E030E040EA52E40E94213585 +:1063D000181694F40E94091732E0660F771F881F81 +:1063E000991F3A95D1F728EE33E040E050E00E9443 +:1063F000DB3320FD0E94B519609100037091010309 +:1064000090E080E00E947C3220E030E048EC52E4F2 +:106410000E9479346B017C016091FF0270E090E092 +:1064200080E00E947E329B01AC01C701B6010E9450 +:10643000773287FF12C00E94091722E0660F771F8C +:10644000881F991F2A95D1F728EE33E040E050E0ED +:106450000E94DB3320FD0E94B519809105039091C5 +:106460000603853FE1E09E0710F087EE93E00E946F +:10647000302300E023E040E860E370E090E080E05B +:106480000E943B1381E040CFC092D707D092D8073B +:10649000E092D907F092DA07E091CD07F091CE07AC +:1064A00080819181A281B3818093DB079093DC0787 +:1064B000A093DD07B093DE0720E030E04FE753E420 +:1064C000C701B6010E94213518160CF055C940923B +:1064D000D7075092D8076092D9077092DA07A9C8F7 +:1064E000FB01DC0105900D920020E1F708950E9468 +:1064F000B93208F481E00895E89409C097FB3EF4AE +:1065000090958095709561957F4F8F4F9F4F992300 +:10651000A9F0F92F96E9BB279395F695879577957E +:106520006795B795F111F8CFFAF4BB0F11F460FF3E +:106530001BC06F5F7F4F8F4F9F4F16C0882311F096 +:1065400096E911C0772321F09EE8872F762F05C0AA +:10655000662371F096E8862F70E060E02AF09A9545 +:10656000660F771F881FDAF7880F9695879597F93A +:106570000895990F0008550FAA0BE0E8FEEF1616D4 +:106580001706E807F907C0F012161306E407F50727 +:1065900098F0621B730B840B950B39F40A2661F09B +:1065A000232B242B252B21F408950A2609F4A1403E +:1065B000A6958FEF811D811D08950E94F0320C94E5 +:1065C00061330E94533338F00E945A3320F09523F0 +:1065D00011F00C944A330C94503311240C949533DD +:1065E0000E94723370F3959FC1F3950F50E0551FD1 +:1065F000629FF001729FBB27F00DB11D639FAA2718 +:10660000F00DB11DAA1F649F6627B00DA11D661F66 +:10661000829F2227B00DA11D621F739FB00DA11D87 +:10662000621F839FA00D611D221F749F3327A00D41 +:10663000611D231F849F600D211D822F762F6A2FDD +:1066400011249F5750409AF0F1F088234AF0EE0F42 +:10665000FF1FBB1F661F771F881F91505040A9F76F +:106660009E3F510580F00C944A330C9495335F3F64 +:10667000E4F3983ED4F3869577956795B795F795AB +:10668000E7959F5FC1F7FE2B880F911D9695879523 +:1066900097F9089597F99F6780E870E060E00895A2 +:1066A0009FEF80EC089500240A941616170618062A +:1066B0000906089500240A94121613061406050606 +:1066C0000895092E0394000C11F4882352F0BB0F97 +:1066D00040F4BF2B11F460FF04C06F5F7F4F8F4FFA +:1066E0009F4F089557FD9058440F551F59F05F3F35 +:1066F00071F04795880F97FB991F61F09F3F79F0E4 +:1067000087950895121613061406551FF2CF469565 +:10671000F1DF08C0161617061806991FF1CF8695E7 +:106720007105610508940895E894BB2766277727CB +:10673000CB0197F90895F999FECF92BD81BDF89AE2 +:10674000992780B50895262FF999FECF1FBA92BDDB +:1067500081BD20BD0FB6F894FA9AF99A0FBE019642 +:106760000895052E97FB1EF400940E94C83357FD30 +:1067700007D00E94DB3307FC03D04EF40C94C833DF +:1067800050954095309521953F4F4F4F5F4F08955D +:1067900090958095709561957F4F8F4F9F4F08958D +:1067A0000E94FD33A59F900DB49F900DA49F800D76 +:1067B000911D11240895A1E21A2EAA1BBB1BFD01F5 +:1067C0000DC0AA1FBB1FEE1FFF1FA217B307E407D0 +:1067D000F50720F0A21BB30BE40BF50B661F771F28 +:1067E000881F991F1A9469F7609570958095909508 +:1067F0009B01AC01BD01CF010895A29FB001B39FE1 +:10680000C001A39F700D811D1124911DB29F700DB9 +:10681000811D1124911D08955058BB27AA270E945D +:1068200024340C9461330E94533338F00E945A335D +:1068300020F039F49F3F19F426F40C9450330EF4F1 +:10684000E095E7FB0C944A33E92F0E94723358F32A +:10685000BA17620773078407950720F079F4A6F545 +:106860000C9494330EF4E0950B2EBA2FA02D0B014F +:10687000B90190010C01CA01A0011124FF27591B85 +:1068800099F0593F50F4503E68F11A16F040A22F8B +:10689000232F342F4427585FF3CF469537952795FC +:1068A000A795F0405395C9F77EF41F16BA0B620BFB +:1068B000730B840BBAF09150A1F0FF0FBB1F661F42 +:1068C000771F881FC2F70EC0BA0F621F731F841F85 +:1068D00048F4879577956795B795F7959E3F08F0AB +:1068E000B0CF9395880F08F09927EE0F979587956D +:1068F00008950E948D340C9461330E945A3358F0ED +:106900000E94533340F029F45F3F29F00C944A333E +:1069100051110C9495330C9450330E94723368F3E8 +:106920009923B1F3552391F3951B550BBB27AA2748 +:1069300062177307840738F09F5F5F4F220F331F82 +:10694000441FAA1FA9F335D00E2E3AF0E0E832D04A +:1069500091505040E695001CCAF72BD0FE2F29D04D +:10696000660F771F881FBB1F261737074807AB071F +:10697000B0E809F0BB0B802DBF01FF2793585F4F94 +:106980003AF09E3F510578F00C944A330C949533BD +:106990005F3FE4F3983ED4F3869577956795B79576 +:1069A000F7959F5FC9F7880F911D9695879597F981 +:1069B0000895E1E0660F771F881FBB1F62177307FA +:1069C0008407BA0720F0621B730B840BBA0BEE1F0F +:1069D00088F7E09508950E94F2346894B1110C9400 +:1069E000953308950E947A3388F09F5798F0B92F15 +:1069F0009927B751B0F0E1F0660F771F881F991FF4 +:106A00001AF0BA95C9F714C0B13091F00E949433CE +:106A1000B1E008950C949433672F782F8827B85FDE +:106A200039F0B93FCCF3869577956795B395D9F74B +:106A30003EF490958095709561957F4F8F4F9F4F55 +:106A400008950E94B93208F48FEF0895FA01EE0F0D +:106A5000FF1F309621053105A1F16115710561F423 +:106A60008038BFE39B0749F168949038810561F055 +:106A70008038BFEF9B0741F099234AF5FF3FE105BE +:106A80003105210519F1E8940894E795D901AA2365 +:106A900029F4AB2FBE2FF85FD0F310C0FF5F70F466 +:106AA000A695E0F7F73950F019F0FF3A38F49F77E0 +:106AB0009F930DD00F9007FC9058089546F00C94CA +:106AC000503360E070E080E89FE308954FE79F77E0 +:106AD0005F934F933F932F930E9426362F913F91C0 +:106AE0004F915F910E94DD320C9483350E94B93240 +:106AF000880B990B089529F416F00C944A330C94E2 +:106B000094330C9450330E947A33A8F39638A0F74C +:106B100007F80F92E8942BE33AEA48EB5FE70E940C +:106B2000F3320F920F920F924DB75EB70F920E9401 +:106B30006E36E8E6F0E00E94B5354F915F91EF9137 +:106B4000FF91E595EE1FFF1F49F0FE57E0684427CF +:106B5000EE0F441FFA95E1F74195550B0E94E83579 +:106B60000F9007FE0C94DC350895DF93CF931F93AD +:106B70000F93FF92EF92DF927B018C01689406C025 +:106B8000DA2EEF010E94F032FE01E894A5912591E2 +:106B9000359145915591A6F3EF010E942434FE01F1 +:106BA0009701A801DA9469F7DF90EF90FF900F91B9 +:106BB0001F91CF91DF9108959B01AC0160E070E0DF +:106BC00080E89FE30C9479340C944A330C94A236F9 +:106BD0000E947A33D8F39923C9F3940F511DA3F37C +:106BE0009150504094F059F0882332F0660F771F8F +:106BF000881F91505040C1F79E3F51052CF7880FD8 +:106C0000911D9695879597F908955F3FACF0983E52 +:106C10009CF0BB27869577956795B79508F4B1608A +:106C20009395C1F7BB0F58F711F460FFE8CF6F5F82 +:106C30007F4F8F4F9F4FE3CF0C94953316F00C94FA +:106C4000A2360C94503368940C944A330E947A33E1 +:106C5000A8F39923C1F3AEF3DF93CF931F930F9360 +:106C6000FF92C92FDD2788232AF02197660F771F0F +:106C7000881FDAF720E030E040E85FEB9FE38839D7 +:106C800020F0803E38F021968F770E940D34E0E9A5 +:106C9000F0E004C00E940D34EDEBF0E00E94B53549 +:106CA0008B01BE01EC01FB2E6F5771097595771FA3 +:106CB000880B990B0E947E3228E132E741E35FE3C3 +:106CC0000E94F032AF2D9801AE01FF900F911F91FD +:106CD000CF91DF910E9424340C946133FA01DC01DE +:106CE000AA0FBB1F9B01AC01BF5728F422273327F3 +:106CF0004427507820C0B75190F4AB2F002446951C +:106D000037952795011CA395D2F3002071F0220F2F +:106D1000331F441FB395DAF30ED00C940C3461305A +:106D20007105A0E88A07B94630F49B01AC016627DB +:106D3000772788279078309621F02083318342830B +:106D4000538308959F3F31F0915020F487957795B4 +:106D50006795B795880F911D9695879597F9089532 +:106D6000DB018F939F930E94D033BF91AF91A29F7D +:106D7000800D911DA39F900DB29F900D1124089539 +:106D800097FB072E16F4009407D077FD09D00E94D8 +:106D9000DA3607FC05D03EF4909581959F4F089513 +:106DA000709561957F4F0895EE0FFF1F0590F49148 +:106DB000E02D0994AA1BBB1B51E107C0AA1FBB1FF2 +:106DC000A617B70710F0A61BB70B881F991F5A9577 +:106DD000A9F780959095BC01CD01089581E090E0E0 +:106DE000F8940C94F336F894FFCF01FFD8003401E7 +:106DF00086011E00000000000000000000000000EE +:106E00000000000000000000000000000000000082 +:106E10000000000000000000000000000000000072 +:106E2000000000000000000000000000013C96008F +:106E300040010101280F050101014243312E3500B7 +:106E40000000000000000000000000000000000042 +:106E50000000000000000000000000000000000032 +:106E60000000000000000000000001770272026DC7 +:106E700002660260025C02530250024B0247023E6D +:106E80000234022C022902260223021D021A0215D4 +:106E90000212020F020A0205020202FC01F801F4CA +:106EA00001EF01EA01E601E101DD01D901D601D2DC +:106EB00001C901C401C1012D0CDD0B8D0B3D0BED92 +:106EC0000A9D0A4D0AFD09AD095D092D0C0D09BD8C +:106ED000086D081D08CD077D072D07DD06CD072DA0 +:106EE000078D06DD06CD073D06ED059D054D05FD2B +:106EF00004AD045D040D04BD036D031D03CD027DCF +:106F000002CD07710F550F390F1D0F010FE50EC987 +:106F10000EAD0E910E750E590E3D0E710F210E0520 +:106F20000EE90D710FCD0DB10DE90DCD0D950DB122 +:106F30000DE90D790D5D0D410D250D090DE50EEDE8 +:106F40000C750ED10CB50C990C010F7D0CE90D0AD6 +:106F50000604040202020203031D100110E10F3FA8 +:106F600023C50FA90F8D0F891151111911E110A916 +:106F700010711039100000000031159114BE147EFC +:106F800015EF14CD14E11400000000C3179114E6AE +:106F900018E5186E616E00696E66006F7666002FE8 +:026FA0003300BC +:107E0000112484B714BE81FFF0D085E080938100F7 +:107E100082E08093C00088E18093C10086E0809377 +:107E2000C20080E18093C4008EE0C9D0259A86E02C +:107E300020E33CEF91E0309385002093840096BBD3 +:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4 +:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7 +:107E6000A2D0813461F49FD0082FAFD0023811F036 +:107E7000013811F484E001C083E08DD089C08234E0 +:107E800011F484E103C0853419F485E0A6D080C0E4 +:107E9000853579F488D0E82EFF2485D0082F10E0AE +:107EA000102F00270E291F29000F111F8ED06801E7 +:107EB0006FC0863521F484E090D080E0DECF843638 +:107EC00009F040C070D06FD0082F6DD080E0C81688 +:107ED00080E7D80618F4F601B7BEE895C0E0D1E017 +:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8 +:107EF00018F0F601B7BEE89568D007B600FCFDCFD4 +:107F0000A601A0E0B1E02C9130E011968C91119780 +:107F100090E0982F8827822B932B1296FA010C0160 +:107F200087BEE89511244E5F5F4FF1E0A038BF0790 +:107F300051F7F601A7BEE89507B600FCFDCF97BE46 +:107F4000E89526C08437B1F42ED02DD0F82E2BD052 +:107F50003CD0F601EF2C8F010F5F1F4F84911BD097 +:107F6000EA94F801C1F70894C11CD11CFA94CF0C13 +:107F7000D11C0EC0853739F428D08EE10CD085E9AC +:107F80000AD08FE07ACF813511F488E018D01DD067 +:107F900080E101D065CF982F8091C00085FFFCCF94 +:107FA0009093C60008958091C00087FFFCCF809118 +:107FB000C00084FD01C0A8958091C6000895E0E648 +:107FC000F0E098E1908380830895EDDF803219F02E +:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA +:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6 +:047FF000FF270994CA +:027FFE00040479 +:00000001FF diff --git a/software/sources/SolderingStation2_arduboy_gplib_v1.7t4.ino b/software/sources/SolderingStation2_arduboy_gplib_v1.7t4.ino new file mode 100644 index 0000000..bc25901 --- /dev/null +++ b/software/sources/SolderingStation2_arduboy_gplib_v1.7t4.ino @@ -0,0 +1,2013 @@ +/*License: http://creativecommons.org/licenses/by-sa/3.0/ + 采用CC3.0协议共享此程序 + 您可以自由地:- + -AZ + 共享 — 在任何媒介以任何形式复制、发行本作品 + 演绎 — 修改、转换或以本作品为基础进行创作 + 在任何用途下,甚至商业目的。 + 本许可协议为“自由文化作品(Free Cultural Works)”所接受。 + 只要你遵守许可协议条款,许可人就无法收回你的这些权利。 + + Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) + This is a human-readable summary of (and not a substitute for) the license. Disclaimer. + You are free to: + Share — copy and redistribute the material in any medium or format + Adapt — remix, transform, and build upon the material + for any purpose, even commercially. + This license is acceptable for Free Cultural Works. + The licensor cannot revoke these freedoms as long as you follow the license terms. +*/ +// SolderingStation2 +// +// ATmega328-controlled Soldering Station for Hakko T12 Tips. +// +// This version of the code implements: +// - Temperature measurement of the tip +// - Direct or PID control of the heater +// - Temperature control via rotary encoder +// - Boost mode by short pressing rotary encoder switch +// - Setup menu by long pressing rotary encoder switch +// - Handle movement detection (by checking ball switch) +// - Iron unconnected detection (by idenfying invalid temperature readings) +// - Time driven sleep/power off mode if iron is unused (movement detection) +// - Measurement of input voltage, Vcc and ATmega's internal temperature +// - Information display on OLED +// - Buzzer +// - Calibrating and managing different soldering tips +// - Storing user settings into the EEPROM +// - Tip change detection +// +// Power supply should be in the range of 16V/2A to 24V/3A and well +// stabilized. +// +// For calibration you need a soldering iron tips thermometer. For best results +// wait at least three minutes after switching on the soldering station before +// you start the calibration process. +// +// Controller: ATmega328p +// Core: Barebones ATmega (https://github.com/carlosefr/atmega) +// Clockspeed: 16 MHz external +// +// 2019/2020 by Stefan Wagner with great support from John Glavinos +// 2020-8 UI upgrade by LHW-createskyblue + +// Project Page: https://easyeda.com/wagiminator + +//关于界面-项目页面二维码 ->为了加入欠压报警只能阉割掉关于页面的二维码 +//const unsigned char QRCode[] PROGMEM = { 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x1f, 0xfe, 0x3f, 0xc1, 0x8c, 0x0c, 0x7f, 0xf8, 0x1f, 0xfe, 0x3f, 0xc1, 0x8c, 0x0c, 0x7f, 0xf8, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x3e, 0x0f, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3e, 0x0f, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x1f, 0xfe, 0x3e, 0x30, 0x70, 0x0c, 0x7f, 0xf8, 0x1f, 0xfe, 0x3e, 0x30, 0x70, 0x0c, 0x7f, 0xf8, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x01, 0x83, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x01, 0x83, 0x8f, 0xff, 0xff, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0xf8, 0x00, 0x3e, 0x3e, 0x03, 0xf0, 0x7f, 0x00, 0xf8, 0x00, 0x3e, 0x3e, 0x03, 0xf0, 0x7f, 0x00, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0x18, 0xc0, 0x31, 0xfe, 0x0c, 0x0c, 0x1c, 0xe0, 0x18, 0xc0, 0x31, 0xfe, 0x0c, 0x0c, 0x1c, 0xe0, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0x1f, 0x00, 0x31, 0xcf, 0xf3, 0x8c, 0x03, 0x00, 0x1f, 0x00, 0x31, 0xcf, 0xf3, 0x8c, 0x03, 0x00, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x3e, 0x7c, 0x0f, 0xe0, 0x00, 0xff, 0xff, 0xf0, 0x3e, 0x7c, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x1f, 0xfe, 0x30, 0x01, 0x83, 0x8f, 0xe0, 0xff, 0x1f, 0xfe, 0x30, 0x01, 0x83, 0x8f, 0xe0, 0xff, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x3f, 0xff, 0x83, 0x83, 0xe3, 0x1f, 0x18, 0x06, 0x3f, 0xff, 0x83, 0x83, 0xe3, 0x1f, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x1f, 0xfe, 0x31, 0xfe, 0x00, 0x0c, 0x60, 0xe7, 0x1f, 0xfe, 0x31, 0xfe, 0x00, 0x0c, 0x60, 0xe7, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0 }; +const unsigned char QRCode[] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0x86, 0x70, 0x80, 0x03, 0x80, 0x03, 0x86, 0x70, 0x80, 0x03, 0x9f, 0xf3, 0xe1, 0x30, 0x9f, 0xf3, 0x9f, 0xf3, 0xe1, 0x30, 0x9f, 0xf3, 0x98, 0x33, 0x01, 0xcc, 0x98, 0x33, 0x98, 0x33, 0x01, 0xcc, 0x98, 0x33, 0x98, 0x33, 0x87, 0xc0, 0x98, 0x33, 0x98, 0x33, 0xe1, 0xc0, 0x98, 0x33, 0x98, 0x33, 0xe1, 0xc0, 0x98, 0x33, 0x9f, 0xf3, 0x98, 0xc0, 0x9f, 0xf3, 0x9f, 0xf3, 0x98, 0xc0, 0x9f, 0xf3, 0x80, 0x03, 0x66, 0xcc, 0x80, 0x03, 0x80, 0x03, 0x66, 0xcc, 0x80, 0x03, 0xff, 0xff, 0x01, 0x0c, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x61, 0x30, 0x1f, 0x3f, 0x87, 0x3c, 0xe6, 0xfc, 0x87, 0x33, 0x87, 0x3c, 0xe6, 0xfc, 0x87, 0xf3, 0xf8, 0x03, 0x9e, 0x0f, 0x1f, 0x03, 0xf8, 0x03, 0x9e, 0x0f, 0x1f, 0x03, 0xe1, 0x3c, 0xfe, 0x0c, 0x07, 0xcf, 0xe1, 0x3c, 0xfe, 0x0c, 0x07, 0xcf, 0x99, 0x03, 0x3e, 0x30, 0x86, 0xc3, 0xe6, 0xcf, 0x38, 0x0f, 0x9e, 0xf3, 0xe6, 0xcf, 0x38, 0x0f, 0x9e, 0xf3, 0x9e, 0x03, 0x27, 0xcc, 0x81, 0x03, 0x9e, 0x03, 0x27, 0xcc, 0x81, 0x03, 0xe0, 0xff, 0xe1, 0x0c, 0xe6, 0xcf, 0xe0, 0xff, 0xe1, 0x0c, 0xe6, 0xcf, 0x98, 0x03, 0x06, 0x00, 0x00, 0xff, 0x98, 0x03, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0xf8, 0x03, 0x80, 0x03, 0x66, 0x30, 0x99, 0xc3, 0x80, 0x03, 0x66, 0x30, 0x99, 0xc3, 0x9f, 0xf3, 0x01, 0x0c, 0xf8, 0xff, 0x9f, 0xf3, 0x01, 0x0c, 0xf8, 0xff, 0x98, 0x33, 0x39, 0x3c, 0x01, 0xcf, 0x98, 0x33, 0x39, 0x3c, 0x01, 0xcf, 0x98, 0x33, 0xff, 0x0c, 0x79, 0x3f, 0x98, 0x33, 0x3e, 0xcc, 0xe0, 0xf3, 0x98, 0x33, 0x3e, 0xcc, 0xe0, 0xf3, 0x9f, 0xf3, 0x3e, 0x00, 0x98, 0xcf, 0x9f, 0xf3, 0x3e, 0x00, 0x98, 0xcf, 0x80, 0x03, 0x3e, 0x30, 0xe7, 0xc3, 0x80, 0x03, 0x3e, 0x30, 0xe7, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +//ICO +//width:16,height:16 +const unsigned char Tag[] PROGMEM = { 0x00, 0x00, 0x3b, 0xec, 0x7b, 0xee, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0x66, 0x62, 0x26, 0x60, 0x06, 0x60, 0x06, 0x7f, 0xfe, 0x3f, 0xfc, 0x00, 0x00 }; +const unsigned char Chip[] PROGMEM = { 0x14, 0xa0, 0x3f, 0xf0, 0x7f, 0xf8, 0xe0, 0x1c, 0x6e, 0x18, 0xec, 0x1c, 0x68, 0x18, 0x60, 0x18, 0xe0, 0x1c, 0x60, 0x58, 0xe0, 0x1c, 0x7f, 0xf8, 0x3f, 0xf0, 0x14, 0xa0 }; +//const unsigned char HeatPipe[] PROGMEM = { 0x00, 0x00, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x01, 0x80, 0x00, 0x00 }; +const unsigned char Lightning[] PROGMEM = { 0x0f, 0xe0, 0x1f, 0xc0, 0x1f, 0xc0, 0x3f, 0x80, 0x3f, 0xf8, 0x7f, 0xf0, 0x7f, 0xe0, 0x07, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x10, 0x00 }; +//const unsigned char Thermometer[] PROGMEM = { 0x01, 0x80, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0 }; +const unsigned char Pointer[] PROGMEM = { 0x20, 0x20, 0x70, 0xf8 }; +//状态提示 +//width:14,height:14 图标库 + +const unsigned char c1[] PROGMEM = { 0x03, 0x00, 0x07, 0x80, 0x0f, 0xc0, 0x0c, 0xc0, 0x1c, 0xe0, 0x1c, 0xe0, 0x3c, 0xf0, 0x3c, 0xf0, 0x7f, 0xf8, 0x7f, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c2[] PROGMEM = { 0x7f, 0xf8, 0xff, 0xfc, 0xc0, 0x0c, 0xc3, 0x0c, 0xcb, 0x4c, 0xdb, 0x6c, 0xdb, 0x6c, 0xd8, 0x6c, 0xdc, 0xec, 0xcf, 0xcc, 0xc7, 0x8c, 0xc0, 0x0c, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c3[] PROGMEM = { 0x00, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x18, 0xf8, 0x38, 0xf0, 0x30, 0x30, 0x70, 0x60, 0x70, 0x78, 0x78, 0xf8, 0x78, 0x00, 0x3c, 0x02, 0x3f, 0x0c, 0x1f, 0xf8, 0x0f, 0xf0, 0x03, 0xc0, 0x00, 0x00 }; +const unsigned char c5[] PROGMEM = { 0x7f, 0xf0, 0xff, 0xe0, 0xc0, 0x08, 0xc0, 0x1c, 0xc0, 0x38, 0xc8, 0x70, 0xdc, 0xe4, 0xcf, 0xcc, 0xc7, 0x8c, 0xc3, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c6[] PROGMEM = { 0x1e, 0x10, 0x33, 0x38, 0x2d, 0x7c, 0x25, 0x38, 0x2d, 0x38, 0x25, 0x38, 0x2d, 0x38, 0x6d, 0x80, 0xde, 0xc0, 0xbf, 0x40, 0xbf, 0x40, 0xde, 0xc0, 0x61, 0x80, 0x3f, 0x00 }; +const unsigned char c7[] PROGMEM = { 0x1f, 0xe0, 0x3f, 0xf0, 0x70, 0x38, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, 0x7c, 0xf8, 0x7c, 0xfc, 0xfc, 0x7f, 0xf8 }; +const unsigned char c_NO[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x37, 0xb0, 0x23, 0x10, 0x30, 0x30, 0x38, 0x70, 0x38, 0x70, 0x30, 0x30, 0x23, 0x10, 0x37, 0xb0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char *C_table[] = {c1, c2, c3, Lightning, c5, c6, c7}; + +//设置(陈星汉认为语言是一种低像素的表达方式,容易造成隔阂; 交互界面设计尽可能形象化) +// width: 14, height: 14 +const unsigned char QRC[] PROGMEM = { 0x05, 0x80, 0x74, 0xb8, 0x57, 0xa8, 0x76, 0xb8, 0x05, 0x80, 0xf9, 0x7c, 0x46, 0x94, 0xaa, 0xa8, 0xf9, 0x7c, 0x06, 0x88, 0x74, 0xa8, 0x57, 0x8c, 0x75, 0x74, 0x06, 0x98 }; +const unsigned char Set0[] PROGMEM = { 0x88, 0x24, 0x08, 0x20, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x39, 0x30, 0x3b, 0xb0, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set1[] PROGMEM = { 0xf8, 0x7c, 0xf3, 0x3c, 0xf4, 0xbc, 0xf6, 0xbc, 0xf4, 0xbc, 0xf6, 0xbc, 0xf4, 0xbc, 0xe4, 0x9c, 0xc8, 0x4c, 0xd0, 0x2c, 0xd0, 0x2c, 0xc8, 0x4c, 0xe7, 0x9c, 0xf0, 0x3c }; +const unsigned char Set2[] PROGMEM = { 0x8f, 0xc4, 0x10, 0x20, 0x20, 0x10, 0x4c, 0xc8, 0x9f, 0xe4, 0x3d, 0xf0, 0x3d, 0xf0, 0x1d, 0xe0, 0x3e, 0xf0, 0x3f, 0x70, 0x9f, 0xe4, 0x8c, 0xc4, 0x00, 0x00, 0x30, 0x30 }; +const unsigned char Set3[] PROGMEM = { 0xc3, 0xfc, 0x18, 0x00, 0x18, 0x00, 0xc3, 0xfc, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x60, 0x00, 0x60, 0xff, 0x0c, 0xff, 0xfc, 0xf0, 0xfc, 0x06, 0x00, 0x06, 0x00, 0xf0, 0xfc }; +const unsigned char Set4[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x10, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set4F[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x38, 0x30, 0x33, 0x10, 0x3f, 0x90, 0x38, 0x10, 0x33, 0x90, 0x27, 0x90, 0x26, 0x10, 0x30, 0x90, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set4FF[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x24, 0x30, 0x21, 0x90, 0x27, 0x90, 0x27, 0x30, 0x20, 0x70, 0x27, 0xf0, 0x23, 0x30, 0x30, 0x70, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set5[] PROGMEM = { 0xfc, 0xfc, 0xf8, 0x7c, 0xe0, 0x1c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0x80, 0x04, 0x80, 0x04, 0xff, 0xfc, 0xf8, 0x7c, 0xfc, 0xfc }; +const unsigned char Set5_1[] PROGMEM = { 0xfc, 0xf4, 0xf8, 0x60, 0xe0, 0x44, 0xc0, 0x8c, 0xc1, 0x1c, 0xc2, 0x2c, 0xc4, 0x4c, 0xc8, 0x8c, 0xd1, 0x0c, 0xa2, 0x04, 0xc4, 0x04, 0x8f, 0xfc, 0x18, 0x7c, 0xbc, 0xfc }; +const unsigned char Set6[] PROGMEM = { 0xf8, 0x7c, 0xe0, 0x1c, 0xc0, 0x0c, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xc8, 0x4c, 0xcf, 0xcc, 0xc0, 0x0c, 0xe0, 0x1c }; +const unsigned char Set_LANG[] PROGMEM = { 0xf0, 0x3c, 0xce, 0x4c, 0xbc, 0x34, 0xb8, 0x14, 0x18, 0x80, 0x10, 0x80, 0x42, 0x30, 0x60, 0x78, 0x60, 0xf8, 0x44, 0xc0, 0x80, 0x04, 0xb8, 0x84, 0xcf, 0xcc, 0xf0, 0x3c }; +const unsigned char Set7[] PROGMEM = { 0x80, 0x0c, 0x00, 0x1c, 0x3f, 0xf4, 0x3f, 0xe0, 0x3f, 0xc4, 0x37, 0x8c, 0x23, 0x18, 0x30, 0x30, 0x38, 0x70, 0x3c, 0xf0, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set11[] PROGMEM = { 0xf3, 0xfc, 0xe7, 0xfc, 0xce, 0x0c, 0x8e, 0x1c, 0x9f, 0x9c, 0x1f, 0x3c, 0x1f, 0x0c, 0x0e, 0x0c, 0x0f, 0xfc, 0x87, 0xf8, 0x81, 0xe4, 0xc0, 0x0c, 0xe0, 0x1c, 0xf8, 0x7c }; +const unsigned char Set8[] PROGMEM = { 0x81, 0xdc, 0x55, 0x9c, 0x29, 0x04, 0x55, 0x00, 0x29, 0x90, 0x55, 0xd0, 0x03, 0xfc, 0xff, 0x00, 0x2e, 0x00, 0x26, 0x70, 0x02, 0x50, 0x82, 0x70, 0xe6, 0x00, 0xee, 0x04 }; +const unsigned char Set9[] PROGMEM = { 0xf0, 0x3c, 0xce, 0x0c, 0xbf, 0x04, 0xb3, 0x04, 0x73, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x60, 0xbc, 0x64, 0xbe, 0x04, 0xcf, 0x0c, 0xf0, 0x3c }; +const unsigned char Set10[] PROGMEM = { 0xf8, 0x7c, 0xf7, 0xbc, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0xbf, 0xf4, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xbf, 0xf4, 0xc0, 0x0c }; +const unsigned char Set13[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x34, 0xb0, 0x24, 0x90, 0x24, 0x90, 0x27, 0x90, 0x23, 0x10, 0x30, 0x30, 0x38, 0x70, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set12[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x20, 0x10, 0x20, 0x10, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set14[] PROGMEM = { 0xff, 0x7c, 0xfe, 0x7c, 0xfc, 0xec, 0xe8, 0xdc, 0xc8, 0x4c, 0x98, 0x4c, 0x88, 0x24, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0xe0, 0x1c }; +const unsigned char Set15[] PROGMEM = { 0x15, 0x54, 0x3f, 0xfc, 0x15, 0x54, 0x3f, 0xfc, 0x15, 0x54, 0x3c, 0x04, 0x14, 0x04, 0x3c, 0xfc, 0x14, 0x54, 0x3c, 0xfc, 0x00, 0x54, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Set16[] PROGMEM = { 0x15, 0x54, 0x3f, 0xf8, 0x15, 0x50, 0x3f, 0xf0, 0x15, 0x50, 0x38, 0x70, 0x10, 0x20, 0x31, 0x04, 0x13, 0x8c, 0x22, 0xa8, 0x17, 0xfc, 0x2a, 0xa8, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Set17[] PROGMEM = { 0x80, 0x00, 0xbf, 0xf8, 0x1f, 0xf8, 0xb0, 0x08, 0x18, 0x08, 0xb9, 0xe8, 0x19, 0xb8, 0xb8, 0x38, 0x18, 0x38, 0xb9, 0xb8, 0xb9, 0xf8, 0xb0, 0xf8, 0xbf, 0xf8, 0x80, 0x00 }; +const unsigned char Set18[] PROGMEM = { 0x80, 0x00, 0xbf, 0xf8, 0x1f, 0xf8, 0xb0, 0x28, 0x1f, 0xf8, 0xb4, 0x08, 0x1f, 0xf8, 0xb1, 0x08, 0x1f, 0xf8, 0xb0, 0x48, 0xbf, 0xf8, 0xb2, 0x88, 0xbf, 0xf8, 0x80, 0x00 }; +const unsigned char Lang_CN[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x20, 0x10, 0x24, 0x90, 0x24, 0x90, 0x20, 0x10, 0x3c, 0xf0, 0x3c, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Lang_EN[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x38, 0x70, 0x30, 0x30, 0x23, 0x10, 0x27, 0x90, 0x20, 0x10, 0x20, 0x10, 0x27, 0x90, 0x27, 0x90, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Lang_JP[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3d, 0xf0, 0x20, 0x10, 0x3b, 0xf0, 0x3b, 0x70, 0x30, 0x30, 0x2b, 0x50, 0x2a, 0xd0, 0x31, 0xb0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Save[] PROGMEM = { 0x00, 0x04, 0x58, 0x08, 0x58, 0x08, 0x58, 0x08, 0x40, 0x08, 0x7f, 0xf8, 0x60, 0x18, 0x5f, 0xe8, 0x5b, 0x68, 0x5f, 0xe8, 0x5b, 0x68, 0x1c, 0xe8, 0x5f, 0xe8, 0x00, 0x00 }; + +const unsigned char *Ico_table[] = { + Set0, Set1, Set2, Set3, Set4, Set5, Set6, Set_LANG, QRC, Set7, + Set8, Set9, Set0, Set10, Set12, Save, + Set0, Set11, Set14, Save, + Set11, Set13, Set14, Save, + Set15, Set16, + Set17, Set18, //5 + Set5_1, Set5, + c_NO, Set7, + Lang_CN, Lang_EN, Lang_JP, //8 + Set4, Set4F, Save, +}; +const byte Menu_table[] = {10, 6, 4, 4, 2, 2, 2, 2, 3, 3}; //菜单 标签 温控 定时 控制方式 首页 蜂鸣器 标签删除确认界面 语言菜单 翻转 显示 +byte MenuLevel = 0; //菜单层级 + +/*//////////////////////////////////////////////////////////////////////////////////////////////////// + 多语言支持 + Multilingual support + /////////////////////////////////////////////////////////////////////////////////////////////////// +*/ +/* + 英语库 ENGLISH +*/ +const char EN_0[] PROGMEM = "Tip"; +const char EN_1[] PROGMEM = "Temp"; +const char EN_2[] PROGMEM = "Timer"; +const char EN_3[] PROGMEM = "Control"; +const char EN_4[] PROGMEM = "Screen"; +const char EN_5[] PROGMEM = "Buzzer"; +const char EN_6[] PROGMEM = "LOW Vol"; +const char EN_7[] PROGMEM = "Lang"; +const char EN_8[] PROGMEM = "Return"; +const char EN_9[] PROGMEM = "Change"; +const char EN_10[] PROGMEM = "Calibrate"; +const char EN_11[] PROGMEM = "Rename"; +const char EN_12[] PROGMEM = "Delete"; +const char EN_13[] PROGMEM = "Add"; +const char EN_14[] PROGMEM = "Save"; +const char EN_15[] PROGMEM = "Default"; +const char EN_16[] PROGMEM = "Sleep"; +const char EN_17[] PROGMEM = "Boost"; +const char EN_18[] PROGMEM = "Save"; +const char EN_19[] PROGMEM = "Sleep"; +const char EN_20[] PROGMEM = "Off"; +const char EN_21[] PROGMEM = "Boost"; +const char EN_22[] PROGMEM = "Save"; +const char EN_23[] PROGMEM = "Direct"; +const char EN_24[] PROGMEM = "PID"; +const char EN_25[] PROGMEM = "Big"; +const char EN_26[] PROGMEM = "Infos"; +const char EN_27[] PROGMEM = "OFF"; +const char EN_28[] PROGMEM = "ON"; +const char EN_29[] PROGMEM = "NO"; +const char EN_30[] PROGMEM = "YES"; +const char EN_31[] PROGMEM = "CN"; +const char EN_32[] PROGMEM = "EN"; +const char EN_33[] PROGMEM = "NO"; +const char EN_34[] PROGMEM = "OK"; +const char EN_35[] PROGMEM = "Main Screen"; +const char EN_36[] PROGMEM = "Flip"; +const char EN_37[] PROGMEM = "Save"; +const char EN_38[] PROGMEM = "About"; +const char EN_39[] PROGMEM = "JP"; +const char *const EN_table[] PROGMEM = {EN_0, EN_1, EN_2, EN_3, EN_4, EN_5, EN_6, EN_7, EN_38, EN_8, EN_9, EN_10, EN_11, EN_12, EN_13, EN_14, EN_15, EN_16, EN_17, EN_18, EN_19, EN_20, EN_21, EN_22, EN_23, EN_24, EN_25, EN_26, EN_27, EN_28, EN_29, EN_30, EN_31, EN_32, EN_39, EN_35, EN_36, EN_37,}; + +/* + #!/usr/bin/python + # -*- coding: UTF-8 -*- + for num in range(0,38): + print("EN_",end="") + print(num,end='') + print(",",end="") +*/ +/* + 中文语言库 CHINESE + + //////////////////////////////////////////////////////////////////////////////////////////////////////// + 本地化提示:你可以按照位图的大小,把这里的文字位图替换成你的语言,确保位图分辨率一致即可,我们欢迎你把程序翻译为你当地的语言! + Localization tips: you can according to the size of the bitmap, + replace the text bitmap here with your language, + ensure that the bitmap resolution is consistent, + we welcome you to translate the program into your local language! + //////////////////////////////////////////////////////////////////////////////////////////////////////// +*/ +//width:28,height:14 主界面中文提示 +//Main Screen +//错误-ERROR +const unsigned char S1[] PROGMEM = { 0x20, 0x92, 0x1f, 0xc0, 0x3d, 0xf9, 0x90, 0x40, 0x20, 0x90, 0x90, 0x40, 0x40, 0x90, 0x1f, 0xc0, 0x7b, 0xff, 0x00, 0x00, 0xa0, 0x01, 0x3f, 0xe0, 0x21, 0xf9, 0x02, 0x00, 0xfd, 0x09, 0x02, 0x00, 0x21, 0x09, 0x7f, 0xf0, 0x21, 0xf9, 0x05, 0x00, 0x21, 0x09, 0x45, 0x00, 0x29, 0x09, 0x88, 0x80, 0x31, 0xf9, 0x10, 0x70, 0x21, 0x08, 0x20, 0x20 }; +//关机-OFF +const unsigned char S2[] PROGMEM = { 0x10, 0x40, 0x47, 0xc0, 0x17, 0xfc, 0x44, 0x40, 0x20, 0x03, 0xf4, 0x40, 0x23, 0xf8, 0x44, 0x40, 0x62, 0x08, 0xc4, 0x40, 0xa3, 0xf8, 0xe4, 0x40, 0x20, 0x01, 0x54, 0x40, 0x2f, 0xfd, 0x44, 0x40, 0x28, 0x06, 0x44, 0x40, 0x23, 0xf8, 0x44, 0x40, 0x20, 0x40, 0x44, 0x50, 0x20, 0x40, 0x48, 0x50, 0x21, 0x40, 0x50, 0x30, 0x20, 0x80, 0x40, 0x00 }; +//休眠-SLEEP +const unsigned char S3[] PROGMEM = { 0x10, 0x83, 0xdf, 0xc0, 0x10, 0x82, 0x50, 0x40, 0x20, 0x82, 0x50, 0x40, 0x2f, 0xff, 0xdf, 0xc0, 0x60, 0x82, 0x52, 0x00, 0x61, 0xc2, 0x52, 0x00, 0xa1, 0xc2, 0x5f, 0xe0, 0x22, 0xa3, 0xd2, 0x00, 0x22, 0xa2, 0x51, 0x00, 0x24, 0x92, 0x51, 0x00, 0x28, 0x8e, 0x50, 0x90, 0x30, 0x8b, 0xd4, 0x50, 0x20, 0x82, 0x58, 0x30, 0x20, 0x80, 0x10, 0x10 }; +//提温-BOOST +const unsigned char S4[] PROGMEM = { 0x23, 0xf2, 0x1f, 0xc0, 0x22, 0x11, 0x10, 0x40, 0xfb, 0xf0, 0x90, 0x40, 0x22, 0x12, 0x1f, 0xc0, 0x2a, 0x11, 0x10, 0x40, 0x33, 0xf1, 0x10, 0x40, 0x60, 0x00, 0x5f, 0xc0, 0xaf, 0xfc, 0x80, 0x00, 0x20, 0x41, 0x3f, 0xe0, 0x22, 0x43, 0x25, 0x20, 0x22, 0x79, 0x25, 0x20, 0x22, 0x41, 0x25, 0x20, 0xa5, 0x41, 0x25, 0x20, 0x48, 0xfd, 0x7f, 0xf0 }; +//正常工作-WORKY +const unsigned char S5[] PROGMEM = { 0x7f, 0xf8, 0x48, 0x80, 0x02, 0x00, 0x49, 0x00, 0x02, 0x01, 0xff, 0xf0, 0x02, 0x01, 0x00, 0x10, 0x02, 0x02, 0x7f, 0x20, 0x22, 0x00, 0x41, 0x00, 0x23, 0xf0, 0x7f, 0x00, 0x22, 0x00, 0x08, 0x00, 0x22, 0x00, 0xff, 0x80, 0x22, 0x00, 0x88, 0x80, 0x22, 0x00, 0x88, 0x80, 0x22, 0x00, 0x8a, 0x80, 0x22, 0x00, 0x89, 0x00, 0xff, 0xfc, 0x08, 0x00 }; +//加热-HEAT +const unsigned char S6[] PROGMEM = { 0x0f, 0x42, 0x1f, 0xc0, 0x78, 0x41, 0x10, 0x40, 0x08, 0x40, 0x90, 0x40, 0x08, 0x42, 0x1f, 0xc0, 0x08, 0x41, 0x10, 0x40, 0xff, 0xfd, 0x10, 0x40, 0x08, 0x40, 0x5f, 0xc0, 0x08, 0x40, 0x80, 0x00, 0x08, 0x41, 0x3f, 0xe0, 0x08, 0x43, 0x25, 0x20, 0x10, 0x41, 0x25, 0x20, 0x10, 0x41, 0x25, 0x20, 0x20, 0x41, 0x25, 0x20, 0x40, 0x41, 0x7f, 0xf0 }; +//维持-HOLD +const unsigned char S7[] PROGMEM = { 0x11, 0x40, 0x82, 0x00, 0x21, 0x20, 0x8f, 0xe0, 0x23, 0xfc, 0x82, 0x00, 0x4a, 0x23, 0xe2, 0x00, 0xfe, 0x20, 0x9f, 0xf0, 0x13, 0xf8, 0x80, 0x80, 0x22, 0x20, 0xc0, 0x80, 0x42, 0x21, 0xbf, 0xf0, 0xfb, 0xfa, 0x88, 0x80, 0x02, 0x20, 0x84, 0x80, 0x02, 0x20, 0x84, 0x80, 0x1a, 0x20, 0x80, 0x80, 0xe3, 0xfe, 0x82, 0x80, 0x02, 0x01, 0x01, 0x00 }; +const unsigned char *S_table[] = {S1, S2, S3, S4, S5, S6, S7}; + +// 菜单 width:36,height:16 +//MENU Oj +/* + The order here(↓) can refer to EN_table(↑↑↑) +*/ +const unsigned char t0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x90, 0xf8, 0x00, 0x01, 0x08, 0x08, 0x88, 0x00, 0x0a, 0x10, 0x08, 0x88, 0x00, 0x04, 0x7f, 0x01, 0x07, 0x00, 0x1f, 0xc1, 0x3a, 0x00, 0x00, 0x05, 0x49, 0x09, 0xfc, 0x00, 0x04, 0x49, 0x08, 0x84, 0x00, 0x04, 0x49, 0x08, 0x88, 0x00, 0x04, 0x49, 0x08, 0x48, 0x00, 0x04, 0x49, 0x08, 0x50, 0x00, 0x04, 0x49, 0x0a, 0x20, 0x00, 0x04, 0x16, 0x0c, 0x58, 0x00, 0x14, 0x21, 0x89, 0x87, 0x00, 0x08, 0xc0, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xfe, 0x08, 0x20, 0x00, 0x08, 0x82, 0x0b, 0xff, 0x00, 0x04, 0x82, 0x0a, 0x01, 0x00, 0x10, 0xfe, 0x3c, 0x51, 0x00, 0x08, 0x82, 0x08, 0x88, 0x00, 0x08, 0x82, 0x09, 0x04, 0x00, 0x02, 0xfe, 0x0c, 0x00, 0x00, 0x04, 0x00, 0x19, 0xfc, 0x00, 0x09, 0xff, 0x28, 0x20, 0x00, 0x19, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x2b, 0xff, 0x00, 0x0b, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x04, 0x00, 0x1f, 0xff, 0xa2, 0x04, 0x00, 0x10, 0x00, 0xa2, 0xff, 0x00, 0x00, 0x01, 0x22, 0x04, 0x00, 0x0f, 0xfe, 0x22, 0x04, 0x00, 0x00, 0x40, 0x3e, 0x44, 0x00, 0x00, 0x40, 0x22, 0x24, 0x00, 0x04, 0x40, 0x22, 0x24, 0x00, 0x04, 0x7c, 0x22, 0x04, 0x00, 0x04, 0x40, 0x22, 0x04, 0x00, 0x0a, 0x40, 0x3e, 0x04, 0x00, 0x09, 0x40, 0x22, 0x24, 0x00, 0x10, 0xff, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 }; +const unsigned char t3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x12, 0x02, 0x00, 0x05, 0xff, 0x9f, 0xd2, 0x00, 0x05, 0x00, 0x92, 0x12, 0x00, 0x1e, 0x28, 0xa2, 0x12, 0x00, 0x04, 0x44, 0x3f, 0xf2, 0x00, 0x04, 0x82, 0x02, 0x12, 0x00, 0x06, 0x00, 0x02, 0x12, 0x00, 0x0c, 0xfe, 0x1f, 0xd2, 0x00, 0x14, 0x10, 0x12, 0x52, 0x00, 0x04, 0x10, 0x12, 0x42, 0x00, 0x04, 0x10, 0x13, 0x42, 0x00, 0x04, 0x10, 0x12, 0x82, 0x00, 0x15, 0xff, 0x82, 0x0a, 0x00, 0x08, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x0f, 0xf8, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x04, 0x02, 0x3f, 0xfe, 0x00, 0x04, 0x02, 0x00, 0x80, 0x00, 0x07, 0xfe, 0x00, 0x80, 0x00, 0x00, 0x90, 0x04, 0x90, 0x00, 0x08, 0x91, 0x0c, 0x88, 0x00, 0x06, 0x93, 0x10, 0x86, 0x00, 0x02, 0x94, 0x20, 0x82, 0x00, 0x00, 0x90, 0x00, 0x80, 0x00, 0x00, 0x90, 0x02, 0x80, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x1f, 0xff, 0x9f, 0xfc, 0x00, 0x00, 0x40, 0x04, 0x10, 0x00, 0x0f, 0xff, 0x02, 0x20, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x08, 0x42, 0x0f, 0xf8, 0x00, 0x08, 0x42, 0x08, 0x08, 0x00, 0x0f, 0xfe, 0x08, 0x08, 0x00, 0x08, 0x02, 0x0f, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 0x0f, 0xf8, 0x00, 0x10, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t6[] PROGMEM = { 0x09, 0xff, 0x00, 0x40, 0x00, 0x04, 0x20, 0x3f, 0xff, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x1c, 0x42, 0x0f, 0xfc, 0x00, 0x04, 0x42, 0x00, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x04, 0x00, 0x0f, 0xfc, 0x00, 0x04, 0xff, 0x00, 0x00, 0x00, 0x04, 0x81, 0x00, 0x00, 0x00, 0x05, 0x81, 0x0f, 0xfc, 0x00, 0x06, 0x81, 0x08, 0x04, 0x00, 0x04, 0xff, 0x08, 0x04, 0x00, 0x00, 0x81, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t7[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0xfe, 0x00, 0x01, 0x00, 0x08, 0x20, 0x00, 0x03, 0xff, 0x08, 0x20, 0x00, 0x02, 0x01, 0x08, 0x20, 0x00, 0x04, 0x22, 0x08, 0x20, 0x00, 0x08, 0x20, 0x0b, 0xfe, 0x00, 0x10, 0x20, 0x08, 0x20, 0x00, 0x00, 0x50, 0x08, 0x28, 0x00, 0x00, 0x50, 0x08, 0x24, 0x00, 0x00, 0x88, 0x08, 0x22, 0x00, 0x00, 0x88, 0x10, 0x20, 0x00, 0x01, 0x04, 0x10, 0x20, 0x00, 0x02, 0x03, 0xa7, 0xff, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Back[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x08, 0xf8, 0x3f, 0xfe, 0x00, 0x04, 0x80, 0x20, 0x02, 0x00, 0x00, 0x80, 0x20, 0x02, 0x00, 0x00, 0xbe, 0x23, 0xe2, 0x00, 0x1c, 0x82, 0x22, 0x22, 0x00, 0x04, 0xa4, 0x22, 0x22, 0x00, 0x04, 0x94, 0x22, 0x22, 0x00, 0x04, 0x88, 0x22, 0x22, 0x00, 0x04, 0x94, 0x23, 0xe2, 0x00, 0x05, 0x22, 0x20, 0x02, 0x00, 0x05, 0x42, 0x20, 0x02, 0x00, 0x0a, 0x00, 0x3f, 0xfe, 0x00, 0x11, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t1_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x20, 0x90, 0x00, 0x02, 0x7f, 0x98, 0x90, 0x00, 0x1f, 0x80, 0x09, 0xff, 0x00, 0x02, 0x22, 0x01, 0x10, 0x00, 0x06, 0x21, 0x8b, 0x10, 0x00, 0x07, 0x62, 0x8d, 0xfe, 0x00, 0x0a, 0xa2, 0x09, 0x10, 0x00, 0x0a, 0x14, 0x11, 0x10, 0x00, 0x12, 0x14, 0x31, 0xfe, 0x00, 0x02, 0x08, 0x11, 0x10, 0x00, 0x02, 0x14, 0x11, 0x10, 0x00, 0x02, 0x22, 0x11, 0x10, 0x00, 0x02, 0x43, 0x91, 0xff, 0x00, 0x02, 0x81, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x50, 0x01, 0xfc, 0x00, 0x00, 0x88, 0x01, 0x04, 0x00, 0x01, 0x04, 0x03, 0x08, 0x00, 0x06, 0xfb, 0x04, 0x90, 0x00, 0x08, 0x00, 0xc0, 0x60, 0x00, 0x07, 0xdf, 0x01, 0x80, 0x00, 0x04, 0x51, 0x06, 0x00, 0x00, 0x04, 0x51, 0x1b, 0xfe, 0x00, 0x04, 0x51, 0x02, 0x02, 0x00, 0x07, 0xd9, 0x02, 0x02, 0x00, 0x04, 0x56, 0x02, 0x02, 0x00, 0x00, 0x10, 0x03, 0xfe, 0x00, 0x00, 0x10, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x78, 0xbc, 0x20, 0x00, 0x09, 0x48, 0xa4, 0x50, 0x00, 0x09, 0x4a, 0xa8, 0x50, 0x00, 0x09, 0x4a, 0xa8, 0x88, 0x00, 0x09, 0x4a, 0xb1, 0x04, 0x00, 0x1f, 0xfe, 0xaa, 0xfb, 0x00, 0x09, 0x4a, 0xa4, 0x20, 0x00, 0x09, 0x4a, 0xa4, 0x20, 0x00, 0x09, 0x4a, 0xa7, 0xfe, 0x00, 0x09, 0x4a, 0xb4, 0x20, 0x00, 0x09, 0x48, 0xa9, 0x24, 0x00, 0x0b, 0x48, 0xa2, 0x22, 0x00, 0x08, 0x8a, 0xa4, 0xa2, 0x00, 0x11, 0x19, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x10, 0x00, 0x1f, 0xdc, 0x3e, 0xfe, 0x00, 0x08, 0x90, 0x02, 0x12, 0x00, 0x05, 0x10, 0x04, 0xff, 0x00, 0x1f, 0xdf, 0x84, 0x12, 0x00, 0x02, 0x12, 0x0c, 0xfe, 0x00, 0x1f, 0xd2, 0x02, 0x10, 0x00, 0x02, 0x12, 0x22, 0xfe, 0x00, 0x0a, 0x92, 0x14, 0x10, 0x00, 0x0a, 0x52, 0x14, 0x10, 0x00, 0x12, 0x22, 0x0d, 0xff, 0x00, 0x02, 0x22, 0x08, 0x10, 0x00, 0x0a, 0x42, 0x14, 0x10, 0x00, 0x04, 0x02, 0x23, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//默认 +const unsigned char t2_0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc8, 0x10, 0x20, 0x00, 0x12, 0x4a, 0x0c, 0x20, 0x00, 0x1a, 0xc9, 0x04, 0x20, 0x00, 0x17, 0x48, 0x00, 0x20, 0x00, 0x1f, 0xff, 0xb8, 0x20, 0x00, 0x02, 0x08, 0x08, 0x50, 0x00, 0x1f, 0xc8, 0x08, 0x50, 0x00, 0x02, 0x08, 0x08, 0x50, 0x00, 0x03, 0xc8, 0x08, 0x48, 0x00, 0x1e, 0x14, 0x08, 0x88, 0x00, 0x01, 0x54, 0x0a, 0x88, 0x00, 0x15, 0x22, 0x0c, 0x84, 0x00, 0x14, 0x43, 0x89, 0x07, 0x00, 0x00, 0x81, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//休眠 +const unsigned char t2_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x3d, 0xfc, 0x00, 0x02, 0x10, 0x25, 0x04, 0x00, 0x04, 0x10, 0x25, 0x04, 0x00, 0x05, 0xff, 0xbd, 0xfc, 0x00, 0x0c, 0x10, 0x25, 0x20, 0x00, 0x0c, 0x38, 0x25, 0x20, 0x00, 0x14, 0x38, 0x25, 0xfe, 0x00, 0x04, 0x54, 0x3d, 0x20, 0x00, 0x04, 0x54, 0x25, 0x10, 0x00, 0x04, 0x92, 0x25, 0x10, 0x00, 0x05, 0x11, 0xa5, 0x09, 0x00, 0x06, 0x11, 0x3d, 0x45, 0x00, 0x04, 0x10, 0x25, 0x83, 0x00, 0x04, 0x10, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//提温 +const unsigned char t2_2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x7e, 0x21, 0xfc, 0x00, 0x04, 0x42, 0x11, 0x04, 0x00, 0x1f, 0x7e, 0x09, 0x04, 0x00, 0x04, 0x42, 0x21, 0xfc, 0x00, 0x05, 0x42, 0x11, 0x04, 0x00, 0x06, 0x7e, 0x11, 0x04, 0x00, 0x0c, 0x00, 0x05, 0xfc, 0x00, 0x15, 0xff, 0x88, 0x00, 0x00, 0x04, 0x08, 0x13, 0xfe, 0x00, 0x04, 0x48, 0x32, 0x52, 0x00, 0x04, 0x4f, 0x12, 0x52, 0x00, 0x04, 0x48, 0x12, 0x52, 0x00, 0x14, 0xa8, 0x12, 0x52, 0x00, 0x09, 0x1f, 0x97, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//关机 +const unsigned char t3_1[] PROGMEM = { 0x01, 0x04, 0x04, 0x7c, 0x00, 0x00, 0x88, 0x04, 0x44, 0x00, 0x0f, 0xff, 0x3f, 0x44, 0x00, 0x00, 0x20, 0x04, 0x44, 0x00, 0x00, 0x20, 0x0c, 0x44, 0x00, 0x00, 0x20, 0x0e, 0x44, 0x00, 0x1f, 0xff, 0x95, 0x44, 0x00, 0x00, 0x20, 0x14, 0x44, 0x00, 0x00, 0x50, 0x24, 0x44, 0x00, 0x00, 0x50, 0x04, 0x44, 0x00, 0x00, 0x88, 0x04, 0x45, 0x00, 0x01, 0x04, 0x04, 0x85, 0x00, 0x06, 0x03, 0x85, 0x03, 0x00, 0x18, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x20, 0x00, 0x0f, 0xff, 0x09, 0xfc, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x88, 0x00, 0x03, 0xfe, 0x08, 0x50, 0x00, 0x02, 0x02, 0x0b, 0xfe, 0x00, 0x03, 0xfe, 0x0c, 0x40, 0x00, 0x02, 0x02, 0x18, 0x40, 0x00, 0x03, 0xfe, 0x2b, 0xfe, 0x00, 0x02, 0x02, 0x08, 0x48, 0x00, 0x03, 0xfe, 0x08, 0x88, 0x00, 0x02, 0x02, 0x08, 0x50, 0x00, 0x02, 0x02, 0x28, 0x30, 0x00, 0x1f, 0xff, 0x91, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_PID[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc3, 0xf1, 0xe0, 0x00, 0x0f, 0xe3, 0xf1, 0xf8, 0x00, 0x0c, 0x70, 0xc1, 0x9e, 0x00, 0x0c, 0x30, 0xc1, 0x86, 0x00, 0x0c, 0x30, 0xc1, 0x83, 0x00, 0x0c, 0x30, 0xc1, 0x83, 0x00, 0x0c, 0x60, 0xc1, 0x83, 0x00, 0x0c, 0x60, 0xc1, 0x83, 0x00, 0x0f, 0xc0, 0xc1, 0x83, 0x00, 0x0f, 0xc0, 0xc1, 0x86, 0x00, 0x0c, 0x00, 0xc1, 0x86, 0x00, 0x0c, 0x00, 0xc1, 0x98, 0x00, 0x0c, 0x03, 0xf1, 0xf8, 0x00, 0x0c, 0x03, 0xf1, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t5_0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0x88, 0x40, 0x00, 0x0a, 0x24, 0x10, 0x40, 0x00, 0x11, 0x42, 0x10, 0xfe, 0x00, 0x04, 0x00, 0x22, 0x82, 0x00, 0x02, 0xff, 0x3d, 0x02, 0x00, 0x08, 0x01, 0x0a, 0x42, 0x00, 0x09, 0xf9, 0x10, 0x32, 0x00, 0x09, 0x09, 0x20, 0x12, 0x00, 0x09, 0xf9, 0x3e, 0x02, 0x00, 0x09, 0x09, 0x00, 0x02, 0x00, 0x09, 0x09, 0x0e, 0x02, 0x00, 0x09, 0xf9, 0x30, 0x22, 0x00, 0x08, 0x05, 0x00, 0x14, 0x00, 0x08, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x44, 0x10, 0xfe, 0x00, 0x04, 0x28, 0x10, 0x92, 0x00, 0x05, 0xff, 0x22, 0x92, 0x00, 0x00, 0x10, 0x3c, 0x92, 0x00, 0x00, 0x10, 0x08, 0x92, 0x00, 0x1c, 0xfe, 0x10, 0x92, 0x00, 0x04, 0x10, 0x20, 0xfe, 0x00, 0x04, 0x10, 0x3e, 0x92, 0x00, 0x05, 0xff, 0x80, 0x92, 0x00, 0x04, 0x10, 0x00, 0x92, 0x00, 0x05, 0x10, 0x0e, 0x92, 0x00, 0x06, 0x10, 0x30, 0x92, 0x00, 0x04, 0x10, 0x00, 0xfe, 0x00, 0x00, 0x10, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5_3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x3f, 0xfe, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x07, 0xfe, 0x0f, 0xf8, 0x00, 0x04, 0x02, 0x08, 0x08, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x07, 0xfe, 0x08, 0x88, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x07, 0xfe, 0x08, 0x88, 0x00, 0x04, 0x02, 0x09, 0x48, 0x00, 0x04, 0x02, 0x02, 0x30, 0x00, 0x07, 0xfe, 0x04, 0x0c, 0x00, 0x04, 0x02, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_off[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x04, 0xff, 0x00, 0x00, 0x44, 0x02, 0x01, 0x00, 0x07, 0xff, 0x90, 0x21, 0x00, 0x00, 0x10, 0x10, 0x21, 0x00, 0x00, 0x10, 0x17, 0xfd, 0x00, 0x00, 0x10, 0x10, 0x21, 0x00, 0x0f, 0xff, 0xd0, 0x61, 0x00, 0x00, 0x10, 0x10, 0xa1, 0x00, 0x00, 0x28, 0x11, 0x21, 0x00, 0x00, 0x28, 0x12, 0x21, 0x00, 0x00, 0x44, 0x14, 0x21, 0x00, 0x00, 0x82, 0x10, 0xa1, 0x00, 0x03, 0x01, 0xd0, 0x45, 0x00, 0x0c, 0x00, 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_on[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x80, 0x20, 0x00, 0x00, 0x84, 0x07, 0xff, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x0f, 0xff, 0xc7, 0xff, 0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x84, 0x05, 0xff, 0x00, 0x00, 0x84, 0x05, 0x01, 0x00, 0x01, 0x04, 0x09, 0x01, 0x00, 0x01, 0x04, 0x09, 0x01, 0x00, 0x02, 0x04, 0x11, 0xff, 0x00, 0x04, 0x04, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_NO[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x04, 0x91, 0x00, 0x04, 0x40, 0x02, 0x52, 0x00, 0x04, 0x7f, 0x90, 0x54, 0x00, 0x04, 0x50, 0x88, 0xff, 0x00, 0x07, 0xd0, 0x84, 0x81, 0x00, 0x04, 0x51, 0x00, 0x81, 0x00, 0x04, 0x49, 0x01, 0xff, 0x00, 0x07, 0xca, 0x02, 0x81, 0x00, 0x04, 0x44, 0x04, 0x81, 0x00, 0x04, 0x4a, 0x1c, 0xff, 0x00, 0x07, 0xea, 0x04, 0x81, 0x00, 0x0c, 0x51, 0x04, 0x81, 0x00, 0x00, 0x61, 0xc4, 0x85, 0x00, 0x00, 0x40, 0x80, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_OK[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xdf, 0x10, 0x20, 0x00, 0x02, 0x12, 0x0c, 0x20, 0x00, 0x02, 0x24, 0x04, 0x20, 0x00, 0x04, 0x7f, 0x80, 0x20, 0x00, 0x04, 0x24, 0xb8, 0x20, 0x00, 0x0f, 0xa4, 0x88, 0x50, 0x00, 0x14, 0xbf, 0x88, 0x50, 0x00, 0x04, 0xa4, 0x88, 0x50, 0x00, 0x04, 0xa4, 0x88, 0x48, 0x00, 0x04, 0xbf, 0x88, 0x88, 0x00, 0x04, 0xa4, 0x8a, 0x88, 0x00, 0x07, 0xa4, 0x8c, 0x84, 0x00, 0x04, 0x44, 0x89, 0x07, 0x00, 0x00, 0x81, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_CN_CN[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x0f, 0xff, 0x3f, 0xff, 0x00, 0x08, 0x41, 0x04, 0x08, 0x00, 0x08, 0x41, 0x04, 0x08, 0x00, 0x08, 0x41, 0x04, 0x10, 0x00, 0x08, 0x41, 0x02, 0x10, 0x00, 0x0f, 0xff, 0x02, 0x20, 0x00, 0x08, 0x41, 0x01, 0x20, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x01, 0x30, 0x00, 0x00, 0x40, 0x02, 0x08, 0x00, 0x00, 0x40, 0x0c, 0x07, 0x00, 0x00, 0x40, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_CN_EN[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x80, 0x00, 0x1f, 0xff, 0x80, 0x80, 0x00, 0x01, 0x10, 0x3f, 0xff, 0x00, 0x00, 0x40, 0x04, 0x08, 0x00, 0x07, 0xfc, 0x04, 0x08, 0x00, 0x04, 0x44, 0x04, 0x10, 0x00, 0x04, 0x44, 0x02, 0x10, 0x00, 0x04, 0x44, 0x02, 0x20, 0x00, 0x1f, 0xff, 0x81, 0x20, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0xa0, 0x01, 0x30, 0x00, 0x01, 0x10, 0x02, 0x08, 0x00, 0x06, 0x0c, 0x0c, 0x07, 0x00, 0x18, 0x03, 0xb0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_CN_JP[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x13, 0xfe, 0x00, 0x04, 0x02, 0x08, 0x40, 0x00, 0x04, 0x02, 0x08, 0x40, 0x00, 0x04, 0x02, 0x01, 0xfc, 0x00, 0x04, 0x02, 0x38, 0x84, 0x00, 0x04, 0x02, 0x08, 0x84, 0x00, 0x07, 0xfe, 0x0f, 0xff, 0x00, 0x04, 0x02, 0x08, 0x00, 0x00, 0x04, 0x02, 0x09, 0xfe, 0x00, 0x04, 0x02, 0x09, 0x02, 0x00, 0x04, 0x02, 0x0b, 0x02, 0x00, 0x04, 0x02, 0x0d, 0x02, 0x00, 0x07, 0xfe, 0x09, 0xfe, 0x00, 0x04, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +//翻转 +const unsigned char t4f[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1d, 0xc2, 0x08, 0x00, 0x05, 0x44, 0x42, 0x08, 0x00, 0x03, 0x84, 0x5f, 0xbf, 0x00, 0x0f, 0xe4, 0x44, 0x10, 0x00, 0x01, 0x15, 0x45, 0x10, 0x00, 0x05, 0x4c, 0xc9, 0x7f, 0x80, 0x09, 0x24, 0x4f, 0x90, 0x00, 0x07, 0xc4, 0xc1, 0x10, 0x00, 0x05, 0x4d, 0x41, 0x3f, 0x00, 0x05, 0x54, 0x43, 0x81, 0x00, 0x07, 0xc4, 0x4d, 0x02, 0x00, 0x05, 0x44, 0x41, 0x14, 0x00, 0x05, 0x55, 0x41, 0x08, 0x00, 0x07, 0xc8, 0x81, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//保存 +const unsigned char t_save[] PROGMEM = { 0x02, 0xfe, 0x01, 0x00, 0x00, 0x02, 0x82, 0x3f, 0xff, 0x00, 0x04, 0x82, 0x02, 0x00, 0x00, 0x04, 0xfe, 0x02, 0x00, 0x00, 0x0c, 0x10, 0x04, 0xfc, 0x00, 0x14, 0x10, 0x04, 0x08, 0x00, 0x05, 0xff, 0x8c, 0x10, 0x00, 0x04, 0x10, 0x14, 0x10, 0x00, 0x04, 0x38, 0x25, 0xff, 0x00, 0x04, 0x34, 0x04, 0x10, 0x00, 0x04, 0x52, 0x04, 0x10, 0x00, 0x04, 0x91, 0x84, 0x10, 0x00, 0x05, 0x10, 0x04, 0x50, 0x00, 0x04, 0x10, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char tAbout[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x0f, 0xfe, 0x00, 0x00, 0x44, 0x00, 0x40, 0x00, 0x07, 0xff, 0x80, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x10, 0x1f, 0xff, 0x80, 0x0f, 0xff, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0x44, 0x00, 0x40, 0x00, 0x00, 0x82, 0x00, 0x40, 0x00, 0x03, 0x01, 0xc1, 0x40, 0x00, 0x0c, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char *CN_table[] = { + t0, t1, t2, t3, t4, t5, t7, t6, tAbout, Back, //0 + t0, t1_1, t1_2, t1_3, t1_4, t_save, //1 + t2_0, t2_1, t2_2, t_save, //2 + t2_1, t3_1, t2_2, t_save,//3 + t_4, t_PID,//4 + t5_0, t5_1,//5 + t_off, t_on,//6 + t_NO, t_OK,//7 + t_CN_CN, t_CN_EN, t_CN_JP, //8 + t5_3, t4f, t_save, //9 +}; +/* + 日语 Japanese +*/ +/* + 8x8 dot Japanese font for Arduboy + + Copyright (c) 2016 emutyworks + + Released under the MIT license + https://github.com/emutyworks/8x8DotJPFont/blob/master/LICENSE.txt +*/ + +#define MISAKI_FONT_H + +#define MISAKI_FONT_F0_PAGE 0xF0 +#define MISAKI_FONT_F1_PAGE 0xF1 +#define MISAKI_FONT_F2_PAGE 0xF2 + +#define MISAKI_FONT_F0_W 8 +#define MISAKI_FONT_F1_W 3 +#define MISAKI_FONT_F2_W 7 + +#define MISAKI_FONT_F0_SIZE 0xEF +#define MISAKI_FONT_F1_SIZE 0x9D +#define MISAKI_FONT_F2_SIZE 0x1E // misaki_font_f2.h の最終行の値をここに設定する、最大0xEFまで + +/* + 利用しないフォントデータはヘッダファイルを読み込まないようにするとメモリが節約できます、 + drawText() 実行時にフォントが無い場合は処理がスキップされます。 + + 例) 8x8 dot ひらがな・カタカナ・記号 のみ利用 + #include "misaki_font_f0.h" // 8x8 dot ひらがな・カタカナ・記号 + //#include "misaki_font_f1.h" // 4x8 dot 英語・カタカナ・記号 + //#include "misaki_font_f2.h" // 8x8 dot 漢字 +*/ +PROGMEM const uint8_t misaki_font_0x00[1] = { 0x00 }; +#define MISAKI_FONT_F0_H +PROGMEM const uint8_t misaki_font_f0[ MISAKI_FONT_F0_SIZE + 1 ][ MISAKI_FONT_F0_W ] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x00   */ + { 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x01 、 */ + { 0x20, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x02 。 */ + { 0x50, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x03 , */ + { 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x04 . */ + { 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }, /* 0x05 ・ */ + { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00 }, /* 0x06 : */ + { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00, 0x00, 0x00 }, /* 0x07 ; */ + { 0x00, 0x02, 0x01, 0x51, 0x09, 0x09, 0x06, 0x00 }, /* 0x08 ? */ + { 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00 }, /* 0x09 ! */ + { 0x00, 0x00, 0x00, 0x00, 0x7f, 0x41, 0x41, 0x00 }, /* 0x0A [ */ + { 0x41, 0x41, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x0B ] */ + { 0x00, 0x00, 0x00, 0x3f, 0x01, 0x01, 0x01, 0x00 }, /* 0x0C 「 */ + { 0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00 }, /* 0x0D 」 */ + { 0x00, 0x00, 0x3f, 0x21, 0x3d, 0x05, 0x07, 0x00 }, /* 0x0E 『 */ + { 0x70, 0x50, 0x5e, 0x42, 0x7e, 0x00, 0x00, 0x00 }, /* 0x0F 』 */ + { 0x00, 0x00, 0x00, 0x00, 0x7f, 0x63, 0x41, 0x00 }, /* 0x10 【 */ + { 0x41, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x11 】 */ + { 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00 }, /* 0x12 + */ + { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0x13 - */ + { 0x44, 0x44, 0x44, 0x5f, 0x44, 0x44, 0x44, 0x00 }, /* 0x14 ± */ + { 0x41, 0x22, 0x14, 0x08, 0x14, 0x22, 0x41, 0x00 }, /* 0x15 × */ + { 0x08, 0x08, 0x08, 0x2a, 0x08, 0x08, 0x08, 0x00 }, /* 0x16 ÷ */ + { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00 }, /* 0x17 = */ + { 0x14, 0x34, 0x14, 0x1c, 0x14, 0x16, 0x14, 0x00 }, /* 0x18 ≠ */ + { 0x08, 0x08, 0x14, 0x14, 0x14, 0x22, 0x22, 0x00 }, /* 0x19 < */ + { 0x22, 0x22, 0x14, 0x14, 0x14, 0x08, 0x08, 0x00 }, /* 0x1A > */ + { 0x02, 0x05, 0x02, 0x3c, 0x42, 0x42, 0x24, 0x00 }, /* 0x1B ℃ */ + { 0x00, 0x2b, 0x2c, 0x78, 0x2c, 0x2b, 0x00, 0x00 }, /* 0x1C ¥ */ + { 0x00, 0x24, 0x2a, 0x7a, 0x2f, 0x2a, 0x12, 0x00 }, /* 0x1D $ */ + { 0x00, 0x1c, 0x62, 0x32, 0x2e, 0x23, 0x14, 0x00 }, /* 0x1E ¢ */ + { 0x20, 0x54, 0x5e, 0x25, 0x41, 0x42, 0x20, 0x00 }, /* 0x1F £ */ + { 0x42, 0x25, 0x12, 0x08, 0x24, 0x52, 0x21, 0x00 }, /* 0x20 % */ + { 0x20, 0x62, 0x3e, 0x63, 0x3e, 0x23, 0x02, 0x00 }, /* 0x21 # */ + { 0x20, 0x56, 0x49, 0x55, 0x22, 0x58, 0x40, 0x00 }, /* 0x22 & */ + { 0x00, 0x22, 0x14, 0x7f, 0x14, 0x22, 0x00, 0x00 }, /* 0x23 * */ + { 0x1c, 0x22, 0x59, 0x55, 0x4d, 0x12, 0x0c, 0x00 }, /* 0x24 @ */ + { 0x00, 0x00, 0x4a, 0x55, 0x55, 0x29, 0x00, 0x00 }, /* 0x25 § */ + { 0x04, 0x64, 0x3c, 0x17, 0x3c, 0x64, 0x04, 0x00 }, /* 0x26 ☆ */ + { 0x04, 0x64, 0x3c, 0x1f, 0x3c, 0x64, 0x04, 0x00 }, /* 0x27 ★ */ + { 0x1c, 0x22, 0x41, 0x41, 0x41, 0x22, 0x1c, 0x00 }, /* 0x28 ○ */ + { 0x1c, 0x3e, 0x7f, 0x7f, 0x7f, 0x3e, 0x1c, 0x00 }, /* 0x29 ● */ + { 0x1c, 0x22, 0x5d, 0x55, 0x5d, 0x22, 0x1c, 0x00 }, /* 0x2A ◎ */ + { 0x08, 0x14, 0x22, 0x41, 0x22, 0x14, 0x08, 0x00 }, /* 0x2B ◇ */ + { 0x08, 0x1c, 0x3e, 0x7f, 0x3e, 0x1c, 0x08, 0x00 }, /* 0x2C ◆ */ + { 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7f, 0x00 }, /* 0x2D □ */ + { 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00 }, /* 0x2E ■ */ + { 0x40, 0x70, 0x4c, 0x43, 0x4c, 0x70, 0x40, 0x00 }, /* 0x2F △ */ + { 0x40, 0x70, 0x7c, 0x7f, 0x7c, 0x70, 0x40, 0x00 }, /* 0x30 ▲ */ + { 0x01, 0x07, 0x19, 0x61, 0x19, 0x07, 0x01, 0x00 }, /* 0x31 ▽ */ + { 0x01, 0x07, 0x1f, 0x7f, 0x1f, 0x07, 0x01, 0x00 }, /* 0x32 ▼ */ + { 0x49, 0x22, 0x14, 0x49, 0x14, 0x22, 0x49, 0x00 }, /* 0x33 ※ */ + { 0x05, 0x05, 0x05, 0x7d, 0x05, 0x05, 0x05, 0x00 }, /* 0x34 〒 */ + { 0x08, 0x08, 0x08, 0x08, 0x2a, 0x1c, 0x08, 0x00 }, /* 0x35 → */ + { 0x08, 0x1c, 0x2a, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0x36 ← */ + { 0x00, 0x04, 0x02, 0x7f, 0x02, 0x04, 0x00, 0x00 }, /* 0x37 ↑ */ + { 0x00, 0x10, 0x20, 0x7f, 0x20, 0x10, 0x00, 0x00 }, /* 0x38 ↓ */ + { 0x00, 0x3e, 0x41, 0x41, 0x41, 0x41, 0x3e, 0x00 }, /* 0x39 0 */ + { 0x00, 0x00, 0x42, 0x7f, 0x40, 0x00, 0x00, 0x00 }, /* 0x3A 1 */ + { 0x00, 0x62, 0x51, 0x51, 0x49, 0x49, 0x46, 0x00 }, /* 0x3B 2 */ + { 0x00, 0x22, 0x41, 0x49, 0x49, 0x49, 0x36, 0x00 }, /* 0x3C 3 */ + { 0x00, 0x30, 0x28, 0x24, 0x22, 0x7f, 0x20, 0x00 }, /* 0x3D 4 */ + { 0x00, 0x2f, 0x45, 0x45, 0x45, 0x45, 0x39, 0x00 }, /* 0x3E 5 */ + { 0x00, 0x3e, 0x49, 0x49, 0x49, 0x49, 0x32, 0x00 }, /* 0x3F 6 */ + { 0x00, 0x01, 0x01, 0x61, 0x19, 0x05, 0x03, 0x00 }, /* 0x40 7 */ + { 0x00, 0x36, 0x49, 0x49, 0x49, 0x49, 0x36, 0x00 }, /* 0x41 8 */ + { 0x00, 0x26, 0x49, 0x49, 0x49, 0x49, 0x3e, 0x00 }, /* 0x42 9 */ + { 0x00, 0x20, 0x54, 0x7e, 0x34, 0x14, 0x60, 0x00 }, /* 0x43 ぁ */ + { 0x20, 0x52, 0x7f, 0x2a, 0x1a, 0x4a, 0x30, 0x00 }, /* 0x44 あ */ + { 0x00, 0x3c, 0x40, 0x20, 0x04, 0x18, 0x00, 0x00 }, /* 0x45 ぃ */ + { 0x1e, 0x20, 0x40, 0x20, 0x02, 0x04, 0x18, 0x00 }, /* 0x46 い */ + { 0x00, 0x10, 0x4a, 0x4a, 0x2a, 0x10, 0x00, 0x00 }, /* 0x47 ぅ */ + { 0x00, 0x08, 0x45, 0x45, 0x45, 0x25, 0x18, 0x00 }, /* 0x48 う */ + { 0x00, 0x48, 0x2a, 0x3a, 0x4a, 0x40, 0x00, 0x00 }, /* 0x49 ぇ */ + { 0x00, 0x44, 0x25, 0x15, 0x3d, 0x45, 0x40, 0x00 }, /* 0x4A え */ + { 0x00, 0x24, 0x7e, 0x14, 0x50, 0x24, 0x00, 0x00 }, /* 0x4B ぉ */ + { 0x22, 0x52, 0x7f, 0x0a, 0x48, 0x4a, 0x34, 0x00 }, /* 0x4C お */ + { 0x44, 0x34, 0x4f, 0x44, 0x38, 0x04, 0x18, 0x00 }, /* 0x4D か */ + { 0x44, 0x34, 0x4f, 0x44, 0x39, 0x04, 0x19, 0x00 }, /* 0x4E が */ + { 0x00, 0x2a, 0x5a, 0x4b, 0x4e, 0x5a, 0x08, 0x00 }, /* 0x4F き */ + { 0x00, 0x2a, 0x5a, 0x4b, 0x4e, 0x5b, 0x08, 0x00 }, /* 0x50 ぎ */ + { 0x00, 0x08, 0x14, 0x14, 0x22, 0x41, 0x00, 0x00 }, /* 0x51 く */ + { 0x00, 0x08, 0x14, 0x14, 0x22, 0x45, 0x04, 0x00 }, /* 0x52 ぐ */ + { 0x3f, 0x00, 0x04, 0x44, 0x3f, 0x04, 0x04, 0x00 }, /* 0x53 け */ + { 0x3f, 0x00, 0x04, 0x44, 0x3f, 0x04, 0x05, 0x00 }, /* 0x54 げ */ + { 0x00, 0x20, 0x52, 0x42, 0x42, 0x42, 0x40, 0x00 }, /* 0x55 こ */ + { 0x00, 0x20, 0x52, 0x42, 0x43, 0x42, 0x41, 0x00 }, /* 0x56 ご */ + { 0x00, 0x24, 0x54, 0x44, 0x47, 0x5c, 0x04, 0x00 }, /* 0x57 さ */ + { 0x00, 0x24, 0x54, 0x44, 0x47, 0x5c, 0x05, 0x00 }, /* 0x58 ざ */ + { 0x00, 0x00, 0x3f, 0x40, 0x40, 0x40, 0x20, 0x00 }, /* 0x59 し */ + { 0x00, 0x00, 0x3f, 0x40, 0x41, 0x40, 0x21, 0x00 }, /* 0x5A じ */ + { 0x02, 0x02, 0x0a, 0x56, 0x3f, 0x02, 0x02, 0x00 }, /* 0x5B す */ + { 0x02, 0x02, 0x0a, 0x56, 0x3f, 0x02, 0x03, 0x00 }, /* 0x5C ず */ + { 0x04, 0x04, 0x3f, 0x44, 0x54, 0x5f, 0x44, 0x00 }, /* 0x5D せ */ + { 0x04, 0x04, 0x3f, 0x44, 0x54, 0x5f, 0x45, 0x00 }, /* 0x5E ぜ */ + { 0x00, 0x08, 0x09, 0x3d, 0x4b, 0x49, 0x08, 0x00 }, /* 0x5F そ */ + { 0x00, 0x08, 0x09, 0x3d, 0x4b, 0x49, 0x0a, 0x00 }, /* 0x60 ぞ */ + { 0x42, 0x3a, 0x07, 0x22, 0x54, 0x44, 0x44, 0x00 }, /* 0x61 た */ + { 0x42, 0x3a, 0x07, 0x22, 0x55, 0x44, 0x45, 0x00 }, /* 0x62 だ */ + { 0x00, 0x02, 0x12, 0x4e, 0x4b, 0x4a, 0x32, 0x00 }, /* 0x63 ち */ + { 0x00, 0x02, 0x12, 0x4e, 0x4b, 0x4a, 0x33, 0x00 }, /* 0x64 ぢ */ + { 0x00, 0x10, 0x10, 0x48, 0x48, 0x30, 0x00, 0x00 }, /* 0x65 っ */ + { 0x04, 0x04, 0x02, 0x22, 0x22, 0x22, 0x1c, 0x00 }, /* 0x66 つ */ + { 0x04, 0x04, 0x02, 0x22, 0x23, 0x22, 0x1d, 0x00 }, /* 0x67 づ */ + { 0x00, 0x02, 0x02, 0x1a, 0x25, 0x43, 0x41, 0x00 }, /* 0x68 て */ + { 0x00, 0x02, 0x02, 0x1a, 0x25, 0x43, 0x45, 0x00 }, /* 0x69 で */ + { 0x00, 0x20, 0x57, 0x48, 0x48, 0x44, 0x44, 0x00 }, /* 0x6A と */ + { 0x00, 0x20, 0x57, 0x48, 0x49, 0x44, 0x45, 0x00 }, /* 0x6B ど */ + { 0x12, 0x0a, 0x27, 0x52, 0x50, 0x3a, 0x24, 0x00 }, /* 0x6C な */ + { 0x7f, 0x00, 0x20, 0x52, 0x42, 0x42, 0x40, 0x00 }, /* 0x6D に */ + { 0x30, 0x4e, 0x38, 0x54, 0x0f, 0x64, 0x78, 0x00 }, /* 0x6E ぬ */ + { 0x24, 0x14, 0x7f, 0x04, 0x22, 0x52, 0x3c, 0x00 }, /* 0x6F ね */ + { 0x18, 0x24, 0x12, 0x4e, 0x42, 0x24, 0x18, 0x00 }, /* 0x70 の */ + { 0x7f, 0x00, 0x24, 0x54, 0x54, 0x3f, 0x44, 0x00 }, /* 0x71 は */ + { 0x7f, 0x00, 0x24, 0x54, 0x54, 0x3f, 0x45, 0x00 }, /* 0x72 ば */ + { 0x7f, 0x00, 0x24, 0x54, 0x56, 0x3d, 0x46, 0x00 }, /* 0x73 ぱ */ + { 0x02, 0x3a, 0x47, 0x40, 0x41, 0x3e, 0x04, 0x00 }, /* 0x74 ひ */ + { 0x02, 0x3a, 0x47, 0x40, 0x41, 0x3e, 0x05, 0x00 }, /* 0x75 び */ + { 0x02, 0x3a, 0x47, 0x40, 0x43, 0x3d, 0x06, 0x00 }, /* 0x76 ぴ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x10, 0x60, 0x00 }, /* 0x77 ふ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x11, 0x61, 0x00 }, /* 0x78 ぶ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x15, 0x62, 0x00 }, /* 0x79 ぷ */ + { 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x00 }, /* 0x7A へ */ + { 0x08, 0x04, 0x02, 0x04, 0x09, 0x10, 0x11, 0x00 }, /* 0x7B べ */ + { 0x08, 0x04, 0x02, 0x04, 0x0a, 0x15, 0x12, 0x00 }, /* 0x7C ぺ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7e, 0x2a, 0x4a, 0x00 }, /* 0x7D ほ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7f, 0x2a, 0x4b, 0x00 }, /* 0x7E ぼ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7e, 0x2d, 0x4a, 0x00 }, /* 0x7F ぽ */ + { 0x00, 0x6a, 0x6a, 0x6a, 0x7f, 0x2a, 0x4a, 0x00 }, /* 0x80 ま */ + { 0x30, 0x29, 0x1d, 0x4b, 0x48, 0x3c, 0x10, 0x00 }, /* 0x81 み */ + { 0x12, 0x2a, 0x7f, 0x42, 0x40, 0x42, 0x24, 0x00 }, /* 0x82 む */ + { 0x30, 0x4e, 0x38, 0x54, 0x0f, 0x44, 0x38, 0x00 }, /* 0x83 め */ + { 0x00, 0x0a, 0x3e, 0x4b, 0x4a, 0x4a, 0x30, 0x00 }, /* 0x84 も */ + { 0x00, 0x08, 0x0e, 0x38, 0x46, 0x14, 0x08, 0x00 }, /* 0x85 ゃ */ + { 0x04, 0x07, 0x1c, 0x62, 0x03, 0x0a, 0x04, 0x00 }, /* 0x86 や */ + { 0x00, 0x1c, 0x48, 0x3e, 0x24, 0x18, 0x00, 0x00 }, /* 0x87 ゅ */ + { 0x1e, 0x04, 0x52, 0x3f, 0x12, 0x12, 0x0c, 0x00 }, /* 0x88 ゆ */ + { 0x00, 0x20, 0x50, 0x50, 0x3e, 0x48, 0x00, 0x00 }, /* 0x89 ょ */ + { 0x00, 0x20, 0x50, 0x50, 0x3f, 0x24, 0x44, 0x00 }, /* 0x8A よ */ + { 0x00, 0x1c, 0x51, 0x49, 0x4a, 0x48, 0x30, 0x00 }, /* 0x8B ら */ + { 0x00, 0x0f, 0x42, 0x41, 0x21, 0x1e, 0x00, 0x00 }, /* 0x8C り */ + { 0x00, 0x10, 0x69, 0x6d, 0x4b, 0x49, 0x30, 0x00 }, /* 0x8D る */ + { 0x24, 0x14, 0x7f, 0x04, 0x02, 0x3e, 0x40, 0x00 }, /* 0x8E れ */ + { 0x00, 0x10, 0x49, 0x4d, 0x4b, 0x49, 0x30, 0x00 }, /* 0x8F ろ */ + { 0x00, 0x28, 0x18, 0x7e, 0x08, 0x44, 0x38, 0x00 }, /* 0x90 ゎ */ + { 0x24, 0x14, 0x7f, 0x04, 0x42, 0x42, 0x3c, 0x00 }, /* 0x91 わ */ + { 0x30, 0x49, 0x25, 0x1f, 0x24, 0x54, 0x38, 0x00 }, /* 0x92 ゐ */ + { 0x40, 0x28, 0x25, 0x57, 0x35, 0x28, 0x40, 0x00 }, /* 0x93 ゑ */ + { 0x10, 0x0a, 0x2e, 0x5b, 0x72, 0x4a, 0x48, 0x00 }, /* 0x94 を */ + { 0x40, 0x30, 0x0c, 0x33, 0x40, 0x40, 0x20, 0x00 }, /* 0x95 ん */ + { 0x00, 0x04, 0x44, 0x3c, 0x14, 0x0c, 0x00, 0x00 }, /* 0x96 ァ */ + { 0x00, 0x01, 0x41, 0x3d, 0x09, 0x05, 0x03, 0x00 }, /* 0x97 ア */ + { 0x00, 0x20, 0x20, 0x10, 0x78, 0x04, 0x00, 0x00 }, /* 0x98 ィ */ + { 0x00, 0x10, 0x10, 0x08, 0x7c, 0x02, 0x01, 0x00 }, /* 0x99 イ */ + { 0x00, 0x18, 0x48, 0x4c, 0x28, 0x18, 0x00, 0x00 }, /* 0x9A ゥ */ + { 0x00, 0x06, 0x42, 0x43, 0x22, 0x12, 0x0e, 0x00 }, /* 0x9B ウ */ + { 0x00, 0x40, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00 }, /* 0x9C ェ */ + { 0x20, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x20, 0x00 }, /* 0x9D エ */ + { 0x00, 0x28, 0x28, 0x58, 0x7c, 0x08, 0x00, 0x00 }, /* 0x9E ォ */ + { 0x22, 0x22, 0x12, 0x4a, 0x7f, 0x02, 0x02, 0x00 }, /* 0x9F オ */ + { 0x00, 0x42, 0x22, 0x1f, 0x02, 0x42, 0x7e, 0x00 }, /* 0xA0 カ */ + { 0x00, 0x42, 0x22, 0x1f, 0x02, 0x42, 0x7f, 0x00 }, /* 0xA1 ガ */ + { 0x00, 0x12, 0x12, 0x1f, 0x72, 0x12, 0x10, 0x00 }, /* 0xA2 キ */ + { 0x00, 0x12, 0x12, 0x1f, 0x72, 0x13, 0x10, 0x00 }, /* 0xA3 ギ */ + { 0x00, 0x08, 0x44, 0x43, 0x22, 0x12, 0x0e, 0x00 }, /* 0xA4 ク */ + { 0x00, 0x08, 0x44, 0x43, 0x22, 0x12, 0x0f, 0x00 }, /* 0xA5 グ */ + { 0x08, 0x07, 0x42, 0x22, 0x1e, 0x02, 0x02, 0x00 }, /* 0xA6 ケ */ + { 0x08, 0x07, 0x42, 0x22, 0x1f, 0x02, 0x03, 0x00 }, /* 0xA7 ゲ */ + { 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x00 }, /* 0xA8 コ */ + { 0x00, 0x42, 0x42, 0x42, 0x43, 0x42, 0x7f, 0x00 }, /* 0xA9 ゴ */ + { 0x02, 0x02, 0x4f, 0x42, 0x22, 0x1f, 0x02, 0x00 }, /* 0xAA サ */ + { 0x02, 0x02, 0x4f, 0x42, 0x23, 0x1e, 0x03, 0x00 }, /* 0xAB ザ */ + { 0x00, 0x45, 0x4a, 0x40, 0x20, 0x10, 0x0c, 0x00 }, /* 0xAC シ */ + { 0x00, 0x45, 0x4a, 0x40, 0x21, 0x10, 0x0d, 0x00 }, /* 0xAD ジ */ + { 0x40, 0x42, 0x22, 0x22, 0x1a, 0x26, 0x40, 0x00 }, /* 0xAE ス */ + { 0x40, 0x42, 0x22, 0x22, 0x1b, 0x26, 0x41, 0x00 }, /* 0xAF ズ */ + { 0x04, 0x04, 0x3f, 0x44, 0x44, 0x54, 0x4c, 0x00 }, /* 0xB0 セ */ + { 0x04, 0x04, 0x3f, 0x44, 0x45, 0x54, 0x4d, 0x00 }, /* 0xB1 ゼ */ + { 0x00, 0x01, 0x46, 0x40, 0x20, 0x10, 0x0f, 0x00 }, /* 0xB2 ソ */ + { 0x00, 0x01, 0x46, 0x40, 0x20, 0x11, 0x0f, 0x00 }, /* 0xB3 ゾ */ + { 0x00, 0x08, 0x44, 0x4b, 0x2a, 0x12, 0x0e, 0x00 }, /* 0xB4 タ */ + { 0x00, 0x08, 0x44, 0x4b, 0x2a, 0x12, 0x0f, 0x00 }, /* 0xB5 ダ */ + { 0x08, 0x0a, 0x4a, 0x3e, 0x09, 0x09, 0x08, 0x00 }, /* 0xB6 チ */ + { 0x08, 0x0a, 0x4a, 0x3e, 0x09, 0x08, 0x09, 0x00 }, /* 0xB7 ヂ */ + { 0x00, 0x18, 0x40, 0x58, 0x20, 0x18, 0x00, 0x00 }, /* 0xB8 ッ */ + { 0x02, 0x0c, 0x42, 0x4c, 0x20, 0x10, 0x0e, 0x00 }, /* 0xB9 ツ */ + { 0x02, 0x0c, 0x42, 0x4c, 0x21, 0x10, 0x0d, 0x00 }, /* 0xBA ヅ */ + { 0x04, 0x05, 0x45, 0x3d, 0x05, 0x05, 0x04, 0x00 }, /* 0xBB テ */ + { 0x04, 0x05, 0x45, 0x3d, 0x05, 0x04, 0x05, 0x00 }, /* 0xBC デ */ + { 0x00, 0x00, 0x7f, 0x08, 0x08, 0x10, 0x00, 0x00 }, /* 0xBD ト */ + { 0x00, 0x00, 0x7f, 0x08, 0x09, 0x10, 0x01, 0x00 }, /* 0xBE ド */ + { 0x04, 0x44, 0x24, 0x1f, 0x04, 0x04, 0x04, 0x00 }, /* 0xBF ナ */ + { 0x20, 0x22, 0x22, 0x22, 0x22, 0x22, 0x20, 0x00 }, /* 0xC0 ニ */ + { 0x40, 0x41, 0x25, 0x15, 0x19, 0x27, 0x00, 0x00 }, /* 0xC1 ヌ */ + { 0x20, 0x22, 0x12, 0x7b, 0x06, 0x12, 0x20, 0x00 }, /* 0xC2 ネ */ + { 0x40, 0x40, 0x20, 0x10, 0x08, 0x07, 0x00, 0x00 }, /* 0xC3 ノ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0c, 0x70, 0x00 }, /* 0xC4 ハ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0d, 0x71, 0x00 }, /* 0xC5 バ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0d, 0x72, 0x00 }, /* 0xC6 パ */ + { 0x00, 0x3f, 0x48, 0x48, 0x48, 0x44, 0x44, 0x00 }, /* 0xC7 ヒ */ + { 0x00, 0x3f, 0x48, 0x48, 0x49, 0x44, 0x45, 0x00 }, /* 0xC8 ビ */ + { 0x00, 0x3f, 0x48, 0x48, 0x4a, 0x45, 0x46, 0x00 }, /* 0xC9 ピ */ + { 0x00, 0x02, 0x42, 0x42, 0x22, 0x12, 0x0e, 0x00 }, /* 0xCA フ */ + { 0x00, 0x02, 0x42, 0x42, 0x23, 0x12, 0x0f, 0x00 }, /* 0xCB ブ */ + { 0x00, 0x02, 0x42, 0x42, 0x22, 0x15, 0x0e, 0x00 }, /* 0xCC プ */ + { 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00 }, /* 0xCD ヘ */ + { 0x08, 0x04, 0x02, 0x04, 0x09, 0x10, 0x21, 0x00 }, /* 0xCE ベ */ + { 0x08, 0x04, 0x02, 0x04, 0x0a, 0x15, 0x22, 0x00 }, /* 0xCF ペ */ + { 0x24, 0x14, 0x44, 0x7f, 0x04, 0x14, 0x24, 0x00 }, /* 0xD0 ホ */ + { 0x24, 0x14, 0x44, 0x7f, 0x05, 0x14, 0x25, 0x00 }, /* 0xD1 ボ */ + { 0x24, 0x14, 0x44, 0x7f, 0x06, 0x15, 0x22, 0x00 }, /* 0xD2 ポ */ + { 0x02, 0x02, 0x12, 0x22, 0x52, 0x0a, 0x06, 0x00 }, /* 0xD3 マ */ + { 0x00, 0x21, 0x25, 0x29, 0x4a, 0x42, 0x00, 0x00 }, /* 0xD4 ミ */ + { 0x40, 0x70, 0x4c, 0x43, 0x50, 0x20, 0x40, 0x00 }, /* 0xD5 ム */ + { 0x40, 0x44, 0x24, 0x14, 0x08, 0x37, 0x00, 0x00 }, /* 0xD6 メ */ + { 0x00, 0x08, 0x09, 0x3f, 0x49, 0x49, 0x48, 0x00 }, /* 0xD7 モ */ + { 0x00, 0x10, 0x1c, 0x68, 0x08, 0x18, 0x00, 0x00 }, /* 0xD8 ャ */ + { 0x04, 0x04, 0x0f, 0x74, 0x02, 0x0a, 0x06, 0x00 }, /* 0xD9 ヤ */ + { 0x00, 0x40, 0x48, 0x48, 0x78, 0x40, 0x00, 0x00 }, /* 0xDA ュ */ + { 0x20, 0x22, 0x22, 0x22, 0x3e, 0x20, 0x20, 0x00 }, /* 0xDB ユ */ + { 0x00, 0x00, 0x44, 0x54, 0x54, 0x7c, 0x00, 0x00 }, /* 0xDC ョ */ + { 0x00, 0x42, 0x4a, 0x4a, 0x4a, 0x4a, 0x7e, 0x00 }, /* 0xDD ヨ */ + { 0x00, 0x04, 0x45, 0x45, 0x25, 0x15, 0x0c, 0x00 }, /* 0xDE ラ */ + { 0x00, 0x0f, 0x40, 0x40, 0x20, 0x1f, 0x00, 0x00 }, /* 0xDF リ */ + { 0x40, 0x20, 0x1e, 0x00, 0x7f, 0x20, 0x10, 0x00 }, /* 0xE0 ル */ + { 0x00, 0x00, 0x7f, 0x40, 0x20, 0x10, 0x08, 0x00 }, /* 0xE1 レ */ + { 0x00, 0x7e, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x00 }, /* 0xE2 ロ */ + { 0x00, 0x0c, 0x44, 0x44, 0x24, 0x1c, 0x00, 0x00 }, /* 0xE3 ヮ */ + { 0x00, 0x06, 0x42, 0x42, 0x22, 0x12, 0x0e, 0x00 }, /* 0xE4 ワ */ + { 0x10, 0x12, 0x1e, 0x12, 0x12, 0x7f, 0x12, 0x00 }, /* 0xE5 ヰ */ + { 0x20, 0x22, 0x22, 0x3a, 0x26, 0x22, 0x20, 0x00 }, /* 0xE6 ヱ */ + { 0x00, 0x01, 0x45, 0x45, 0x25, 0x15, 0x0f, 0x00 }, /* 0xE7 ヲ */ + { 0x00, 0x41, 0x42, 0x40, 0x20, 0x10, 0x0c, 0x00 }, /* 0xE8 ン */ + { 0x00, 0x06, 0x42, 0x43, 0x22, 0x12, 0x0f, 0x00 }, /* 0xE9 ヴ */ + { 0x00, 0x48, 0x28, 0x1c, 0x48, 0x78, 0x00, 0x00 }, /* 0xEA ヵ */ + { 0x00, 0x10, 0x0c, 0x48, 0x38, 0x08, 0x00, 0x00 }, /* 0xEB ヶ */ + { 0x08, 0x04, 0x04, 0x08, 0x10, 0x10, 0x08, 0x00 }, /* 0xEC 〜 */ + { 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00 }, /* 0xED … */ + { 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0xEE ー */ + { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 0xEF ― */ +}; + +#define MISAKI_FONT_F1_H +PROGMEM const uint8_t misaki_font_f1[ MISAKI_FONT_F1_SIZE + 1 ][ MISAKI_FONT_F1_W ] = +{ + { 0x00, 0x00, 0x00 }, /* 0x00 */ + { 0x00, 0x2f, 0x00 }, /* 0x01 ! */ + { 0x03, 0x00, 0x03 }, /* 0x02 " */ + { 0x3f, 0x12, 0x3f }, /* 0x03 # */ + { 0x16, 0x3f, 0x1a }, /* 0x04 $ */ + { 0x12, 0x08, 0x24 }, /* 0x05 % */ + { 0x32, 0x3d, 0x2a }, /* 0x06 & */ + { 0x02, 0x01, 0x00 }, /* 0x07 ' */ + { 0x00, 0x3e, 0x41 }, /* 0x08 ( */ + { 0x41, 0x3e, 0x00 }, /* 0x09 ) */ + { 0x0a, 0x07, 0x0a }, /* 0x0A * */ + { 0x08, 0x3e, 0x08 }, /* 0x0B + */ + { 0x40, 0x20, 0x00 }, /* 0x0C , */ + { 0x08, 0x08, 0x08 }, /* 0x0D - */ + { 0x00, 0x20, 0x00 }, /* 0x0E . */ + { 0x10, 0x08, 0x04 }, /* 0x0F / */ + { 0x1c, 0x2a, 0x1c }, /* 0x10 0 */ + { 0x24, 0x3e, 0x20 }, /* 0x11 1 */ + { 0x32, 0x2a, 0x24 }, /* 0x12 2 */ + { 0x22, 0x2a, 0x14 }, /* 0x13 3 */ + { 0x18, 0x14, 0x3e }, /* 0x14 4 */ + { 0x2e, 0x2a, 0x12 }, /* 0x15 5 */ + { 0x1c, 0x2a, 0x12 }, /* 0x16 6 */ + { 0x02, 0x3a, 0x06 }, /* 0x17 7 */ + { 0x14, 0x2a, 0x14 }, /* 0x18 8 */ + { 0x24, 0x2a, 0x1c }, /* 0x19 9 */ + { 0x00, 0x24, 0x00 }, /* 0x1A : */ + { 0x40, 0x24, 0x00 }, /* 0x1B ; */ + { 0x08, 0x14, 0x22 }, /* 0x1C < */ + { 0x14, 0x14, 0x14 }, /* 0x1D = */ + { 0x22, 0x14, 0x08 }, /* 0x1E > */ + { 0x02, 0x29, 0x06 }, /* 0x1F ? */ + { 0x12, 0x29, 0x1e }, /* 0x20 @ */ + { 0x3e, 0x09, 0x3e }, /* 0x21 A */ + { 0x3f, 0x25, 0x1a }, /* 0x22 B */ + { 0x1e, 0x21, 0x21 }, /* 0x23 C */ + { 0x3f, 0x21, 0x1e }, /* 0x24 D */ + { 0x3f, 0x25, 0x21 }, /* 0x25 E */ + { 0x3f, 0x05, 0x01 }, /* 0x26 F */ + { 0x1e, 0x21, 0x39 }, /* 0x27 G */ + { 0x3f, 0x08, 0x3f }, /* 0x28 H */ + { 0x21, 0x3f, 0x21 }, /* 0x29 I */ + { 0x10, 0x20, 0x1f }, /* 0x2A J */ + { 0x3f, 0x04, 0x3b }, /* 0x2B K */ + { 0x3f, 0x20, 0x20 }, /* 0x2C L */ + { 0x3f, 0x06, 0x3f }, /* 0x2D M */ + { 0x3f, 0x01, 0x3e }, /* 0x2E N */ + { 0x1e, 0x21, 0x1e }, /* 0x2F O */ + { 0x3f, 0x09, 0x06 }, /* 0x30 P */ + { 0x1e, 0x21, 0x5e }, /* 0x31 Q */ + { 0x3f, 0x09, 0x36 }, /* 0x32 R */ + { 0x22, 0x25, 0x19 }, /* 0x33 S */ + { 0x01, 0x3f, 0x01 }, /* 0x34 T */ + { 0x3f, 0x20, 0x3f }, /* 0x35 U */ + { 0x3f, 0x10, 0x0f }, /* 0x36 V */ + { 0x3f, 0x18, 0x3f }, /* 0x37 W */ + { 0x33, 0x0c, 0x33 }, /* 0x38 X */ + { 0x03, 0x3c, 0x03 }, /* 0x39 Y */ + { 0x31, 0x2d, 0x23 }, /* 0x3A Z */ + { 0x00, 0x7f, 0x41 }, /* 0x3B [ */ + { 0x15, 0x3e, 0x15 }, /* 0x3C \ */ + { 0x41, 0x7f, 0x00 }, /* 0x3D ] */ + { 0x02, 0x01, 0x02 }, /* 0x3E ^ */ + { 0x40, 0x40, 0x40 }, /* 0x3F _ */ + { 0x00, 0x01, 0x02 }, /* 0x40 ` */ + { 0x18, 0x24, 0x3c }, /* 0x41 a */ + { 0x3f, 0x24, 0x18 }, /* 0x42 b */ + { 0x18, 0x24, 0x24 }, /* 0x43 c */ + { 0x18, 0x24, 0x3f }, /* 0x44 d */ + { 0x18, 0x2c, 0x2c }, /* 0x45 e */ + { 0x04, 0x3f, 0x05 }, /* 0x46 f */ + { 0x48, 0x54, 0x3c }, /* 0x47 g */ + { 0x3f, 0x04, 0x38 }, /* 0x48 h */ + { 0x00, 0x3d, 0x00 }, /* 0x49 i */ + { 0x40, 0x3d, 0x00 }, /* 0x4A j */ + { 0x3f, 0x08, 0x34 }, /* 0x4B k */ + { 0x01, 0x3f, 0x00 }, /* 0x4C l */ + { 0x3c, 0x1c, 0x38 }, /* 0x4D m */ + { 0x3c, 0x04, 0x38 }, /* 0x4E n */ + { 0x18, 0x24, 0x18 }, /* 0x4F o */ + { 0x7c, 0x24, 0x18 }, /* 0x50 p */ + { 0x18, 0x24, 0x7c }, /* 0x51 q */ + { 0x3c, 0x08, 0x04 }, /* 0x52 r */ + { 0x28, 0x3c, 0x14 }, /* 0x53 s */ + { 0x04, 0x3e, 0x24 }, /* 0x54 t */ + { 0x3c, 0x20, 0x3c }, /* 0x55 u */ + { 0x3c, 0x10, 0x0c }, /* 0x56 v */ + { 0x3c, 0x30, 0x3c }, /* 0x57 w */ + { 0x24, 0x18, 0x24 }, /* 0x58 x */ + { 0x4c, 0x50, 0x3c }, /* 0x59 y */ + { 0x24, 0x34, 0x2c }, /* 0x5A z */ + { 0x08, 0x36, 0x41 }, /* 0x5B { */ + { 0x00, 0x7f, 0x00 }, /* 0x5C | */ + { 0x41, 0x36, 0x08 }, /* 0x5D } */ + { 0x01, 0x01, 0x01 }, /* 0x5E ~ */ + { 0x10, 0x28, 0x10 }, /* 0x5F 。 */ + { 0x1f, 0x01, 0x01 }, /* 0x60 「 */ + { 0x20, 0x20, 0x3e }, /* 0x61 」 */ + { 0x10, 0x20, 0x00 }, /* 0x62 、 */ + { 0x00, 0x08, 0x00 }, /* 0x63 ・ */ + { 0x25, 0x15, 0x0f }, /* 0x64 ヲ */ + { 0x24, 0x1c, 0x0c }, /* 0x65 ァ */ + { 0x10, 0x38, 0x04 }, /* 0x66 ィ */ + { 0x18, 0x0c, 0x38 }, /* 0x67 ゥ */ + { 0x28, 0x38, 0x28 }, /* 0x68 ェ */ + { 0x28, 0x18, 0x3c }, /* 0x69 ォ */ + { 0x08, 0x3c, 0x18 }, /* 0x6A ャ */ + { 0x28, 0x38, 0x20 }, /* 0x6B ュ */ + { 0x24, 0x2c, 0x3c }, /* 0x6C ョ */ + { 0x2c, 0x2c, 0x1c }, /* 0x6D ッ */ + { 0x04, 0x08, 0x08 }, /* 0x6E ー */ + { 0x21, 0x1d, 0x07 }, /* 0x6F ア */ + { 0x08, 0x3c, 0x03 }, /* 0x70 イ */ + { 0x06, 0x23, 0x1e }, /* 0x71 ウ */ + { 0x22, 0x3e, 0x22 }, /* 0x72 エ */ + { 0x12, 0x0a, 0x3f }, /* 0x73 オ */ + { 0x32, 0x0f, 0x3e }, /* 0x74 カ */ + { 0x0a, 0x3f, 0x0a }, /* 0x75 キ */ + { 0x24, 0x13, 0x0e }, /* 0x76 ク */ + { 0x27, 0x1e, 0x02 }, /* 0x77 ケ */ + { 0x22, 0x22, 0x3e }, /* 0x78 コ */ + { 0x27, 0x12, 0x0f }, /* 0x79 サ */ + { 0x25, 0x25, 0x10 }, /* 0x7A シ */ + { 0x21, 0x19, 0x27 }, /* 0x7B ス */ + { 0x3f, 0x22, 0x2e }, /* 0x7C セ */ + { 0x21, 0x16, 0x0f }, /* 0x7D ソ */ + { 0x24, 0x1b, 0x0e }, /* 0x7E タ */ + { 0x25, 0x1f, 0x05 }, /* 0x7F チ */ + { 0x26, 0x26, 0x1e }, /* 0x80 ツ */ + { 0x25, 0x1d, 0x05 }, /* 0x81 テ */ + { 0x3f, 0x04, 0x08 }, /* 0x82 ト */ + { 0x24, 0x1f, 0x04 }, /* 0x83 ナ */ + { 0x20, 0x22, 0x22 }, /* 0x84 ニ */ + { 0x25, 0x19, 0x27 }, /* 0x85 ヌ */ + { 0x12, 0x3b, 0x16 }, /* 0x86 ネ */ + { 0x20, 0x10, 0x0f }, /* 0x87 ノ */ + { 0x3c, 0x01, 0x3e }, /* 0x88 ハ */ + { 0x1f, 0x24, 0x24 }, /* 0x89 ヒ */ + { 0x21, 0x11, 0x0f }, /* 0x8A フ */ + { 0x0c, 0x03, 0x1c }, /* 0x8B ヘ */ + { 0x1a, 0x3f, 0x1a }, /* 0x8C ホ */ + { 0x09, 0x19, 0x27 }, /* 0x8D マ */ + { 0x22, 0x2a, 0x2a }, /* 0x8E ミ */ + { 0x38, 0x27, 0x30 }, /* 0x8F ム */ + { 0x32, 0x0c, 0x13 }, /* 0x90 メ */ + { 0x05, 0x3f, 0x25 }, /* 0x91 モ */ + { 0x02, 0x3f, 0x0e }, /* 0x92 ヤ */ + { 0x21, 0x3f, 0x20 }, /* 0x93 ユ */ + { 0x25, 0x25, 0x3f }, /* 0x94 ヨ */ + { 0x25, 0x25, 0x1d }, /* 0x95 ラ */ + { 0x07, 0x20, 0x1f }, /* 0x96 リ */ + { 0x3c, 0x3f, 0x20 }, /* 0x97 ル */ + { 0x3f, 0x20, 0x10 }, /* 0x98 レ */ + { 0x3e, 0x22, 0x3e }, /* 0x99 ロ */ + { 0x23, 0x11, 0x0f }, /* 0x9A ワ */ + { 0x21, 0x21, 0x18 }, /* 0x9B ン */ + { 0x01, 0x00, 0x01 }, /* 0x9C ゙ */ + { 0x02, 0x05, 0x02 }, /* 0x9D ゚ */ +}; +#define MISAKI_FONT_F2_H +PROGMEM const uint8_t misaki_font_f2[ MISAKI_FONT_F2_SIZE + 1 ][ MISAKI_FONT_F2_W ] = +{ + { 0x75, 0x40, 0x77, 0x55, 0x75, 0x77, 0x40 }, /* 0x00 温 */ + { 0x40, 0x3e, 0x4a, 0x5e, 0x2b, 0x5e, 0x4a }, /* 0x01 度 */ + { 0x6b, 0x62, 0x7f, 0x35, 0x2f, 0x35, 0x7f }, /* 0x02 調 */ + { 0x7c, 0x5b, 0x5e, 0x24, 0x7b, 0x0e, 0x3a }, /* 0x03 節 */ + { 0x04, 0x7e, 0x01, 0x7e, 0x4a, 0x5e, 0x69 }, /* 0x04 低 */ + { 0x06, 0x3a, 0x2f, 0x3f, 0x6b, 0x7e, 0x46 }, /* 0x05 電 */ + { 0x40, 0x3f, 0x41, 0x49, 0x7f, 0x49, 0x41 }, /* 0x06 圧 */ + { 0x02, 0x62, 0x6b, 0x6b, 0x6b, 0x62, 0x02 }, /* 0x07 言 */ + { 0x6a, 0x6b, 0x14, 0x7d, 0x57, 0x7d, 0x10 }, /* 0x08 語 */ + { 0x41, 0x3f, 0x55, 0x55, 0x3d, 0x57, 0x51 }, /* 0x09 戻 */ + { 0x21, 0x3f, 0x2d, 0x7f, 0x2a, 0x12, 0x2e }, /* 0x0A 取 */ + { 0x0a, 0x77, 0x5a, 0x50, 0x5a, 0x77, 0x0a }, /* 0x0B 替 */ + { 0x20, 0x24, 0x13, 0x7d, 0x55, 0x53, 0x70 }, /* 0x0C 名 */ + { 0x7a, 0x2a, 0x7b, 0x02, 0x1a, 0x43, 0x7a }, /* 0x0D 前 */ + { 0x4a, 0x52, 0x5e, 0x2b, 0x5e, 0x42, 0x4a }, /* 0x0E 変 */ + { 0x41, 0x5f, 0x35, 0x3f, 0x55, 0x5f, 0x41 }, /* 0x0F 更 */ + { 0x7d, 0x14, 0x57, 0x7d, 0x0e, 0x40, 0x7f }, /* 0x10 削 */ + { 0x7f, 0x1b, 0x54, 0x16, 0x7d, 0x16, 0x54 }, /* 0x11 除 */ + { 0x49, 0x3a, 0x40, 0x7e, 0x57, 0x56, 0x76 }, /* 0x12 追 */ + { 0x42, 0x3f, 0x42, 0x7e, 0x7e, 0x42, 0x7e }, /* 0x13 加 */ + { 0x04, 0x7e, 0x51, 0x37, 0x7d, 0x37, 0x50 }, /* 0x14 保 */ + { 0x12, 0x7a, 0x17, 0x52, 0x76, 0x1e, 0x12 }, /* 0x15 存 */ + { 0x7f, 0x55, 0x7f, 0x14, 0x5d, 0x7f, 0x55 }, /* 0x16 睡 */ + { 0x7f, 0x55, 0x7f, 0x7f, 0x55, 0x3d, 0x57 }, /* 0x17 眠 */ + { 0x7f, 0x55, 0x37, 0x78, 0x17, 0x45, 0x7f }, /* 0x18 閉 */ + { 0x7f, 0x2b, 0x7b, 0x28, 0x7b, 0x2b, 0x7f }, /* 0x19 開 */ + { 0x1e, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x1e }, /* 0x1A 中 */ + { 0x7f, 0x41, 0x6b, 0x7f, 0x6b, 0x51, 0x7f }, /* 0x1B 国 */ + { 0x52, 0x5a, 0x57, 0x3a, 0x57, 0x5a, 0x52 }, /* 0x1C 英 */ + { 0x00, 0x7f, 0x49, 0x49, 0x49, 0x49, 0x7f }, /* 0x1D 日 */ + { 0x22, 0x12, 0x2a, 0x7f, 0x2a, 0x12, 0x22 }, /* 0x1E 本 */ +}; +/* + プリセット + 温度調節 + タイマー + コントロール + スクリーン + ブザー + 低電圧アラーム + 言語 + 戻る + 取り替える + キャリブレーション + 名前を変更 + 削除 + 追加 + 保存 + デフォルト + 睡眠 + ブースト + 保存 + 睡眠 + 閉じる + ブースト + 保存 + ダイレクト + PID + ビッグ + ニュース + 閉じる + 開く + いいえ、 + はい、 + 中国語 + 英語 + いいえ、 + はい、 + メインスクリーン + フリップ + 保存 + アバウト + 日本語 + + 汉字转换表:温度調節低電圧言語戻取替名前変更削除追加保存睡眠閉開中国英日本 +*/ +const char JP_0[] PROGMEM = { 0xf0, 0xcc, 0xdf, 0xb0, 0xb8, 0xbd, }; +const char JP_1[] PROGMEM = { 0xf2, 0x00, 0x01, 0x02, 0x03, }; +const char JP_2[] PROGMEM = { 0xf0, 0xb4, 0x99, 0xd3, 0xee, }; +const char JP_3[] PROGMEM = { 0xf0, 0xa8, 0xe8, 0xbd, 0xe2, 0xee, 0xe0, }; +const char JP_4[] PROGMEM = { 0xf0, 0xae, 0xa4, 0xdf, 0xee, 0xe8, }; +const char JP_5[] PROGMEM = { 0xf0, 0xcb, 0xab, 0xee, }; +const char JP_6[] PROGMEM = { 0xf2, 0x04, 0x05, 0x06, 0xf0, 0x97, 0xde, 0xee, 0xd5, }; +const char JP_7[] PROGMEM = { 0xf2, 0x07, 0x08, }; +const char JP_8[] PROGMEM = { 0xf2, 0x09, 0xf0, 0x8d, }; +const char JP_9[] PROGMEM = { 0xf2, 0x0a, 0xf0, 0x8c, 0xf2, 0x0b, 0xf0, 0x4a, 0x8d, }; +const char JP_10[] PROGMEM = { 0xf0, 0xa2, 0xd8, 0xdf, 0xcb, 0xe1, 0xee, 0xac, 0xdc, 0xe8, }; +const char JP_11[] PROGMEM = { 0xf2, 0x0c, 0x0d, 0xf0, 0x94, 0xf2, 0x0e, 0x0f, }; +const char JP_12[] PROGMEM = { 0xf2, 0x10, 0x11, }; +const char JP_13[] PROGMEM = { 0xf2, 0x12, 0x13, }; +const char JP_14[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_15[] PROGMEM = { 0xf0, 0xbc, 0xca, 0x9e, 0xe0, 0xbd, }; +const char JP_16[] PROGMEM = { 0xf2, 0x16, 0x17, }; +const char JP_17[] PROGMEM = { 0xf0, 0xcb, 0xee, 0xae, 0xbd, }; +const char JP_18[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_19[] PROGMEM = { 0xf2, 0x16, 0x17, }; +const char JP_20[] PROGMEM = { 0xf2, 0x18, 0xf0, 0x5a, 0x8d, }; +const char JP_21[] PROGMEM = { 0xf0, 0xcb, 0xee, 0xae, 0xbd, }; +const char JP_22[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_23[] PROGMEM = { 0xf0, 0xb5, 0x99, 0xe1, 0xa4, 0xbd, }; +const char JP_24[] PROGMEM = { 0xf1, 0x30, 0x29, 0x24, }; +const char JP_25[] PROGMEM = { 0xf0, 0xc8, 0xb8, 0xa5, }; +const char JP_26[] PROGMEM = { 0xf0, 0xc0, 0xda, 0xee, 0xae, }; +const char JP_27[] PROGMEM = { 0xf2, 0x18, 0xf0, 0x5a, 0x8d, }; +const char JP_28[] PROGMEM = { 0xf2, 0x19, 0xf0, 0x51, }; +const char JP_29[] PROGMEM = { 0xf0, 0x46, 0x46, 0x4a, 0x01, }; +const char JP_30[] PROGMEM = { 0xf0, 0x71, 0x46, 0x01, }; +const char JP_31[] PROGMEM = { 0xf2, 0x1a, 0x1b, 0x08, }; +const char JP_32[] PROGMEM = { 0xf2, 0x1c, 0x08, }; +const char JP_33[] PROGMEM = { 0xf0, 0x46, 0x46, 0x4a, 0x01, }; +const char JP_34[] PROGMEM = { 0xf0, 0x71, 0x46, 0x01, }; +const char JP_35[] PROGMEM = { 0xf0, 0xd6, 0x99, 0xe8, 0xae, 0xa4, 0xdf, 0xee, 0xe8, }; +const char JP_36[] PROGMEM = { 0xf0, 0xca, 0xdf, 0xb8, 0xcc, }; +const char JP_37[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_38[] PROGMEM = { 0xf0, 0x97, 0xc5, 0x9b, 0xbd, }; +const char JP_39[] PROGMEM = { 0xf2, 0x1d, 0x1e, 0x08, }; +const char *const JP_table[] = {JP_0, JP_1, JP_2, JP_3, JP_4, JP_5, JP_6, JP_7, JP_38, JP_8, JP_9, JP_10, JP_11, JP_12, JP_13, JP_14, JP_15, JP_16, JP_17, JP_18, JP_19, JP_20, JP_21, JP_22, JP_23, JP_24, JP_25, JP_26, JP_27, JP_28, JP_29, JP_30, JP_31, JP_32, JP_39, JP_35, JP_36, JP_37,}; +const char JP_Length_table[] PROGMEM = {6, 5, 5, 7, 6, 4, 9, 3 ,5, 4, 9, 10, 8, 3, 3, 3, 6, 3, 5, 3, 3, 5, 5, 3, 6, 4, 4, 5, 5, 4, 5, 4, 4, 3, 4, 9, 5, 3,}; + +bool lastbutton; +#include //注意 这里使用被阉割的图形库,只有绘图功能,并非通用的版本 +Arduboy2 arduboy; + +#include +#include +#include + +// Firmware version +#define VERSION "v1.7t4" + +// Type of rotary encoder +#define ROTARY_TYPE 1 // 0: 2 increments/step; 1: 4 increments/step + +// Pins +#define SENSOR_PIN A0 // temperature sense +#define VIN_PIN A1 // input voltage sense +#define BUZZER_PIN 5 // buzzer +#define BUTTON_PIN 6 // rotary encoder switch +#define ROTARY_1_PIN 7 // rotary encoder 1 +#define ROTARY_2_PIN 8 // rotary encoder 2 +#define CONTROL_PIN 9 // heater MOSFET PWM control +#define SWITCH_PIN 10 // handle vibration switch + +// Default temperature control values (recommended soldering temperature: 300-380°C) +#define ChipTempCalVal 330 //芯片内部温度读取校准值 -->可以根据实际情况修改,不同机器情况不同,通常误差在10°C内 +#define TEMP_MIN 150 // min selectable temperature +#define TEMP_MAX 400 // max selectable temperature +#define TEMP_DEFAULT 320 // default start setpoint +#define TEMP_SLEEP 150 // temperature in sleep mode +#define TEMP_BOOST 60 // temperature increase in boost mode +#define TEMP_STEP 10 // rotary encoder temp change steps + +// Default tip temperature calibration values +#define TEMP200 216 // temperature at ADC = 200 +#define TEMP280 308 // temperature at ADC = 280 +#define TEMP360 390 // temperature at ADC = 360 +#define TEMPCHP 30 // chip temperature while calibration +#define TIPMAX 8 // max number of tips +#define TIPNAMELENGTH 6 // max length of tip names (including termination) +#define TIPNAME "BC1.5" // default tip name + +// Default timer values (0 = disabled) +#define TIME2SLEEP 5 // time to enter sleep mode in minutes +#define TIME2OFF 15 // time to shut off heater in minutes +#define TIMEOFBOOST 40 // time to stay in boost mode in seconds + +// Control values +#define TIME2SETTLE 950 // time in microseconds to allow OpAmp output to settle +#define SMOOTHIE 0.05 // OpAmp output smooth factor (1=no smoothing; 0.05 default) +#define PID_ENABLE true // enable PID control +#define BEEP_ENABLE true // enable/disable buzzer +#define MAINSCREEN 1 // type of main screen (0: big numbers; 1: more infos) + +// EEPROM identifier +#define EEPROM_IDENT 0x08FF // to identify if EEPROM was written by this program + +//Beep +#define SetBeepCoolTime 200 +unsigned long BeepCoolTime; + +// Define the aggressive and conservative PID tuning parameters +double aggKp = 11, aggKi = 0.5, aggKd = 1; +double consKp = 11, consKi = 3, consKd = 5; + +// Default values that can be changed by the user and stored in the EEPROM +uint16_t DefaultTemp = TEMP_DEFAULT; +uint16_t SleepTemp = TEMP_SLEEP; +uint8_t BoostTemp = TEMP_BOOST; +uint8_t time2sleep = TIME2SLEEP; +uint8_t time2off = TIME2OFF; +uint8_t timeOfBoost = TIMEOFBOOST; +uint8_t MainScrType = MAINSCREEN; +bool PIDenable = PID_ENABLE; +bool beepEnable = BEEP_ENABLE; +// Default values for tips +uint16_t CalTemp[TIPMAX][4] = {TEMP200, TEMP280, TEMP360, TEMPCHP}; +char TipName[TIPMAX][TIPNAMELENGTH] = {TIPNAME}; +uint8_t CurrentTip = 0; +uint8_t NumberOfTips = 1; + +// Menu items +/* + 这个可以选择进行界面美化 + const char *DeleteMessage[] = { "Warning", "You cannot", "delete your", "last tip!" }; + const char *MaxTipMessage[] = { "Warning", "You reached", "maximum number", "of tips!" }; +*/ +// Variables for pin change interrupt +volatile uint8_t a0, b0, c0, d0; +volatile bool ab0; +volatile int count, countMin, countMax, countStep; +volatile bool handleMoved; + +// Variables for temperature control +uint16_t SetTemp, ShowTemp, gap, Step; +double Input, Output, Setpoint, RawTemp, CurrentTemp, ChipTemp; + +// Variables for voltage readings +uint16_t Vcc, Vin; + +// State variables +bool inSleepMode = false; +bool inOffMode = false; +bool inBoostMode = false; +bool inCalibMode = false; +bool isWorky = true; +bool beepIfWorky = true; +bool TipIsPresent = true; +bool FlipState = false; +// Timing variables +uint32_t sleepmillis; +uint32_t boostmillis; +uint32_t buttonmillis; +uint8_t goneMinutes; +uint8_t goneSeconds; +uint8_t SensorCounter = 255; +//串口助手 +int x, y, a, b; +//欠压报警 +byte UnderVoltage = 0; +// Control variables +uint16_t time2settle = 300; + +//模拟数字滚轮 Numerical scrolling effect +int Value; +int LastValue[3]; +float SlidingAnimationY[3]; + +// Specify the links and initial PID tuning parameters +PID ctrl(&Input, &Output, &Setpoint, aggKp, aggKi, aggKd, REVERSE); + + + +//LANG 语言支持 +/* 0 - 中文 CHINESE + 1 - 英文 ENGLISH + 2 - 日语 +*/ +byte LANG = 1; +void Flip(bool Fmode) { + arduboy.flipVertical(Fmode); + arduboy.flipHorizontal(Fmode); +} +void setup() { + arduboy.begin(); + arduboy.setFrameRate(30); + + //Serial.begin(115200); + // set the pin modes + pinMode(SENSOR_PIN, INPUT); + pinMode(VIN_PIN, INPUT); + pinMode(BUZZER_PIN, OUTPUT); + pinMode(CONTROL_PIN, OUTPUT); + pinMode(ROTARY_1_PIN, INPUT_PULLUP); + pinMode(ROTARY_2_PIN, INPUT_PULLUP); + pinMode(BUTTON_PIN, INPUT_PULLUP); + pinMode(SWITCH_PIN, INPUT_PULLUP); + + analogWrite(CONTROL_PIN, 255); // this shuts off the heater + digitalWrite(BUZZER_PIN, LOW); // must be LOW when buzzer not in use + + // setup ADC + ADCSRA |= bit (ADPS0) | bit (ADPS1) | bit (ADPS2); // set ADC prescaler to 128 + ADCSRA |= bit (ADIE); // enable ADC interrupt + interrupts (); // enable global interrupts + + // setup pin change interrupt for rotary encoder + PCMSK0 = bit (PCINT0); // Configure pin change interrupt on Pin8 + PCICR = bit (PCIE0); // Enable pin change interrupt + PCIFR = bit (PCIF0); // Clear interrupt flag + + + // get default values from EEPROM + getEEPROM(); + //设置屏幕反转状态 + Flip(FlipState); + // read supply voltages in mV + Vcc = getVCC(); Vin = getVIN(); + + // read and set current iron temperature + SetTemp = DefaultTemp; + RawTemp = denoiseAnalog(SENSOR_PIN); + ChipTemp = getChipTemp(); + calculateTemp(); + + // turn on heater if iron temperature is well below setpoint + if ((CurrentTemp + 20) < DefaultTemp) analogWrite(CONTROL_PIN, 0); + + // tell the PID to range between 0 and the full window size + ctrl.SetOutputLimits(0, 255); + + // start PID + ctrl.SetMode(AUTOMATIC); + + // set initial rotary encoder values + a0 = PINB & 1; b0 = PIND >> 7 & 1; ab0 = (a0 == b0); + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, DefaultTemp); + + // reset sleep timer + sleepmillis = millis(); + + // long beep for setup completion + beep(); beep(); + + +} + + +void loop() { + //HelpMeSerialer(); + ROTARYCheck(); // check rotary encoder (temp/boost setting, enter setup menu) + SLEEPCheck(); // check and activate/deactivate sleep modes + SENSORCheck(); // reads temperature and vibration switch of the iron + Thermostat(); // heater control + MainScreen(); // updates the main page on the OLED + //beep(0); +} + + + + +// check rotary encoder; set temperature, toggle boost mode, enter setup menu accordingly +void ROTARYCheck() { + // set working temperature according to rotary encoder value + SetTemp = getRotary(); + + // check rotary encoder switch + uint8_t c = digitalRead(BUTTON_PIN); + if ( !c && c0 ) { + beep(); + buttonmillis = millis(); + while ( (!digitalRead(BUTTON_PIN)) && ((millis() - buttonmillis) < 500) ); + if ((millis() - buttonmillis) >= 500) SetupScreen(); + else { + inBoostMode = !inBoostMode; + if (inBoostMode) boostmillis = millis(); + handleMoved = true; + } + } + c0 = c; + + // check timer when in boost mode + if (inBoostMode && timeOfBoost) { + goneSeconds = (millis() - boostmillis) / 1000; + if (goneSeconds >= timeOfBoost) { + inBoostMode = false; // stop boost mode + beep(); // beep if boost mode is over + beepIfWorky = true; // beep again when working temperature is reached + } + } +} + + +// check and activate/deactivate sleep modes +void SLEEPCheck() { + if (handleMoved) { // if handle was moved + if (inSleepMode) { // in sleep or off mode? + if ((CurrentTemp + 20) < SetTemp) // if temp is well below setpoint + analogWrite(CONTROL_PIN, 0); // then start the heater right now + beep(); // beep on wake-up + beepIfWorky = true; // beep again when working temperature is reached + } + handleMoved = false; // reset handleMoved flag + inSleepMode = false; // reset sleep flag + inOffMode = false; // reset off flag + sleepmillis = millis(); // reset sleep timer + } + + // check time passed since the handle was moved + goneMinutes = (millis() - sleepmillis) / 60000; + if ( (!inSleepMode) && (time2sleep > 0) && (goneMinutes >= time2sleep) ) { + inSleepMode = true; + beep(); + } + if ( (!inOffMode) && (time2off > 0) && (goneMinutes >= time2off ) ) { + inOffMode = true; + beep(); + } +} + + +// reads temperature, vibration switch and supply voltages +void SENSORCheck() { + analogWrite(CONTROL_PIN, 255); // shut off heater in order to measure temperature + delayMicroseconds(time2settle); // wait for voltage to settle + + uint16_t temp = denoiseAnalog(SENSOR_PIN); // read ADC value for temperature + uint8_t d = digitalRead(SWITCH_PIN); // check handle vibration switch + if (d != d0) { + handleMoved = true; // set flag if handle was moved + d0 = d; + } + if (! SensorCounter--) Vin = getVIN(); // get Vin every now and then + + analogWrite(CONTROL_PIN, Output); // turn on again heater + + RawTemp += (temp - RawTemp) * SMOOTHIE; // stabilize ADC temperature reading + calculateTemp(); + + // stabilize displayed temperature when around setpoint + if ((ShowTemp != Setpoint) || (abs(ShowTemp - CurrentTemp) > 5)) ShowTemp = CurrentTemp; + + // set state variable if temperature is in working range; beep if working temperature was just reached + gap = abs(SetTemp - CurrentTemp); + if (gap < 5) { + if (!isWorky && beepIfWorky) beep(); + isWorky = true; + beepIfWorky = false; + } + else isWorky = false; + // checks if tip is present or currently inserted + if (ShowTemp > 500) TipIsPresent = false; // tip removed ? + if (!TipIsPresent && (ShowTemp < 500)) { // new tip inserted ? + analogWrite(CONTROL_PIN, 255); // shut off heater + beep(); // beep for info + TipIsPresent = true; // tip is present now + ChangeTipScreen(); // show tip selection screen + updateEEPROM(); // update setting in EEPROM + handleMoved = true; // reset all timers + RawTemp = denoiseAnalog(SENSOR_PIN); // restart temp smooth algorithm + c0 = LOW; // switch must be released + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); // reset rotary encoder + } +} + + +// calculates real temperature value according to ADC reading and calibration values +void calculateTemp() { + if (RawTemp < 200) CurrentTemp = map (RawTemp, 0, 200, 21, CalTemp[CurrentTip][0]); + else if (RawTemp < 280) CurrentTemp = map (RawTemp, 200, 280, CalTemp[CurrentTip][0], CalTemp[CurrentTip][1]); + else CurrentTemp = map (RawTemp, 280, 360, CalTemp[CurrentTip][1], CalTemp[CurrentTip][2]); +} + + +//调温 +void Thermostat() { + // define Setpoint acoording to current working mode + if (inOffMode) Setpoint = 0; + else if (inSleepMode) Setpoint = SleepTemp; + else if (inBoostMode) Setpoint = SetTemp + BoostTemp; + else Setpoint = SetTemp; + + // control the heater (PID or direct) + gap = abs(Setpoint - CurrentTemp); + if (PIDenable) { + Input = CurrentTemp; + if (gap < 30) ctrl.SetTunings(consKp, consKi, consKd); + else ctrl.SetTunings(aggKp, aggKi, aggKd); + ctrl.Compute(); + } else { + // turn on heater if current temperature is below setpoint + if ((CurrentTemp + 0.5) < Setpoint) Output = 0; else Output = 255; + } + analogWrite(CONTROL_PIN, Output); // set heater PWM +} + + +// creates a short beep on the buzzer +void beep() { + /* + if (beepEnable) { + if (BeepCoolTime + SetBeepCoolTime < millis()) { + if (state) BeepCoolTime = millis(); + analogWrite(BUZZER_PIN, 0); + } else analogWrite(BUZZER_PIN, 127); + } else analogWrite(BUZZER_PIN, 0); + */ + //体谅一下,没内存了,只能用原始的办法驱动无源蜂鸣器,否则我也不想牺牲宝贵响应资源换内存 + if (beepEnable) { + for (uint8_t i = 0; i < 255; i++) { + digitalWrite(BUZZER_PIN, HIGH); + delayMicroseconds(125); + digitalWrite(BUZZER_PIN, LOW); + delayMicroseconds(125); + } + } +} + +//设置旋转编码器的起始值 +// sets start values for rotary encoder +void setRotary(int rmin, int rmax, int rstep, int rvalue) { + countMin = rmin << ROTARY_TYPE; + countMax = rmax << ROTARY_TYPE; + countStep = rstep; + count = rvalue << ROTARY_TYPE; +} + + +// reads current rotary encoder value +int getRotary() { + return (count >> ROTARY_TYPE); +} + + +// reads user settings from EEPROM; if EEPROM values are invalid, write defaults +void getEEPROM() { + uint16_t identifier = (EEPROM.read(0) << 8) | EEPROM.read(1); + if (identifier == EEPROM_IDENT) { + DefaultTemp = (EEPROM.read(2) << 8) | EEPROM.read(3); + SleepTemp = (EEPROM.read(4) << 8) | EEPROM.read(5); + BoostTemp = EEPROM.read(6); + time2sleep = EEPROM.read(7); + time2off = EEPROM.read(8); + timeOfBoost = EEPROM.read(9); + MainScrType = EEPROM.read(10); + PIDenable = EEPROM.read(11); + beepEnable = EEPROM.read(12); + CurrentTip = EEPROM.read(13); + NumberOfTips = EEPROM.read(14); + LANG = EEPROM.read(15); + FlipState = EEPROM.read(16); + UnderVoltage = EEPROM.read(17); + uint8_t i, j; + uint16_t counter = 18; + for (i = 0; i < NumberOfTips; i++) { + for (j = 0; j < TIPNAMELENGTH; j++) { + TipName[i][j] = EEPROM.read(counter++); + } + for (j = 0; j < 4; j++) { + CalTemp[i][j] = EEPROM.read(counter++) << 8; + CalTemp[i][j] |= EEPROM.read(counter++); + } + } + } + else { + EEPROM.update(0, EEPROM_IDENT >> 8); EEPROM.update(1, EEPROM_IDENT & 0xFF); + updateEEPROM(); + } +} + + +// writes user settings to EEPROM using updade function to minimize write cycles +void updateEEPROM() { + EEPROM.update( 2, DefaultTemp >> 8); + EEPROM.update( 3, DefaultTemp & 0xFF); + EEPROM.update( 4, SleepTemp >> 8); + EEPROM.update( 5, SleepTemp & 0xFF); + EEPROM.update( 6, BoostTemp); + EEPROM.update( 7, time2sleep); + EEPROM.update( 8, time2off); + EEPROM.update( 9, timeOfBoost); + EEPROM.update(10, MainScrType); + EEPROM.update(11, PIDenable); + EEPROM.update(12, beepEnable); + EEPROM.update(13, CurrentTip); + EEPROM.update(14, NumberOfTips); + EEPROM.update(15, LANG); + EEPROM.update(16, FlipState); + EEPROM.update(17, UnderVoltage); + uint8_t i, j; + uint16_t counter = 18; + for (i = 0; i < NumberOfTips; i++) { + for (j = 0; j < TIPNAMELENGTH; j++) EEPROM.update(counter++, TipName[i][j]); + for (j = 0; j < 4; j++) { + EEPROM.update(counter++, CalTemp[i][j] >> 8); + EEPROM.update(counter++, CalTemp[i][j] & 0xFF); + } + } +} +//此片段用于DEBUG +void HelpMeSerialer() { + //串口助手 + if (Serial.available()) { + char TmpChar = Serial.read(); + switch (TmpChar) { + case 'x': x = Serial.parseInt(); + case 'y': y = Serial.parseInt(); + case 'a': a = Serial.parseInt(); + case 'b': b = Serial.parseInt(); + } + } + /* + Serial.println(String("X ->") + x); + Serial.println(String("Y ->") + y); + Serial.println(String("A ->") + a); + Serial.println(String("B ->") + b); + */ +} +// draws the main screen +void MainScreen() { + if (!(arduboy.nextFrame())) //帧率锁 + return; + byte SysState; + if (MainScrType) { + arduboy.clear(); + //详细信息页 + arduboy.fillRect(0, 0, 128, 64, 1); //白底 + arduboy.setTextSize(1); + SetTextColor(0); + //预设名 + arduboy.drawSlowXYBitmap(0, 0, Tag, 16, 16, 0); + arduboy.setCursor(19, 4); arduboy.print(TipName[CurrentTip]); + //状态显示 + if (ShowTemp > 500) SysState = 0; + else if (inOffMode) SysState = 1; + else if (inSleepMode) SysState = 2; + else if (inBoostMode) SysState = 3; + else if (isWorky) SysState = 4; + else if (Output < 180) SysState = 5; + else SysState = 6; + //显示状态 + arduboy.setCursor(53, 1); + arduboy.setTextSize(2); + switch (LANG) { + case 0: arduboy.drawSlowXYBitmap(80, 1, S_table[SysState], 28, 14, 0); break; //中文 Chinese + default: //英文 English + switch (SysState) { + case 1: arduboy.print(F("OFF")); break; + case 2: arduboy.print(F("SLEEP")); break; + case 3: arduboy.print(F("BOOST")); break; + case 4: arduboy.print(F("WORKY")); break; + case 5: arduboy.print(F("HEAT")); break; + case 6: arduboy.print(F("HOLD")); break; + default: arduboy.print(F("ERROR")); break; + } break; + } + arduboy.drawSlowXYBitmap(113, 1, C_table[SysState], 14, 14, 0); + arduboy.setTextSize(1); + //芯片 + //R1 + if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2) beep(); else arduboy.drawSlowXYBitmap(2, 18, Chip, 14, 14, 0); + + //R2 + if ((float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep(); else arduboy.drawSlowXYBitmap(2, 34, Lightning, 14, 14, 0); + //R3 + arduboy.setCursor(19, 16); arduboy.print(getChipTemp(), 1); arduboy.print((char)248); arduboy.print(F("C")); //芯片温度 + arduboy.setCursor(19, 24); arduboy.print((float)getVCC() / 1000, 2); arduboy.print(F("V")); //芯片电压 + arduboy.setCursor(19, 32); arduboy.print((float)Vin / 1000, 1); arduboy.print(F("V")); //输入电压 + arduboy.setCursor(19, 40); arduboy.print(F(VERSION)); //固件 + //显示探头温度 + arduboy.setCursor(57, 18); + arduboy.setTextSize(4); + if (ShowTemp > 500) arduboy.print(F("000")); else arduboy.print(ShowTemp); + arduboy.drawRect(55, 16, 72, 32, 0); + + DrawStatusBar(0); + arduboy.display(); + } else { + arduboy.clear(); + if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2) beep(); + if ((float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep(); + if (ShowTemp > 500) DisplayNum(999); else DisplayNum(ShowTemp); + arduboy.fillRect(0, 48, 128, 3, 0); + DrawStatusBar(1); + arduboy.display(); + } + +} + +void DrawStatusBar(bool color) { + SetTextColor(color); + arduboy.setTextSize(1); + //温度条 + //框 + arduboy.drawRect(1, 49, 102, 14, color); + //条 + if (ShowTemp <= 500) arduboy.fillRect(1, 49, map(ShowTemp, 0, 500, 2, 102), 14, color); + //指示部分 + arduboy.fillRect(map(Setpoint, 0, 500, 2, 102) - 2, 50, 3, 13, color); + //先来个白底 + arduboy.fillRect(map(Setpoint, 0, 500, 2, 102) - 3, 60, 5, 4, color); + arduboy.drawLine(map(Setpoint, 0, 500, 2, 102) - 1, 60, map(Setpoint, 0, 500, 2, 102) - 1, 49, !color); + + //画指示针 + arduboy.drawSlowXYBitmap(map(Setpoint, 0, 500, 2, 102) - 3, 59, Pointer, 5, 4, !color); + + //功率条 + arduboy.drawRect(104, 49, 23, 14, color); + arduboy.fillRect(104, 49, map(Output, 255, 0, 0, 23), 14, color); + + SetTextColor(!color); + //////////////进入反色//////////////////////////////// + arduboy.setCursor(2, 55); arduboy.print(Setpoint, 0); arduboy.print((char)248); arduboy.print(F("C")); //探头预设温度 + arduboy.setCursor(105, 55); arduboy.print(map(Output, 255, 0, 0, 100)); arduboy.print(F("%")); //功率百分比 + SetTextColor(color); +} + +//设置画笔颜色 +void SetTextColor(bool color) { + arduboy.setTextBackground(!color); + arduboy.setTextColor(color); +} +// setup screen +void SetupScreen() { + analogWrite(CONTROL_PIN, 255); // shut off heater + beep(); + uint16_t SaveSetTemp = SetTemp; + uint8_t selection = 0; + bool repeat = true; + + while (repeat) { + MenuLevel = 0; //默认打开主菜单 + selection = MenuScreen(selection); + switch (selection) { + case 0: MenuLevel = 1; TipScreen(); repeat = false; break; + case 1: MenuLevel = 2; TempScreen(); break; + case 2: MenuLevel = 3; TimerScreen(); break; + case 3: MenuLevel = 4; PIDenable = MenuScreen(PIDenable); break; + case 4: ScreenSet(); break; + case 5: MenuLevel = 6; beepEnable = MenuScreen(beepEnable); break; + case 6: UnderVoltageSet(); break; + case 7: MenuLevel = 8; LANG = MenuScreen(LANG); break; + case 8: QRcodeScreen(); break; + default: repeat = false; break; + } + } + updateEEPROM(); + handleMoved = true; + SetTemp = SaveSetTemp; + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); +} + + +//显示设置菜单 +// tip settings screen +void ScreenSet() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + MenuLevel = 9; + selection = MenuScreen(selection); + switch (selection) { + case 0: MenuLevel = 5; MainScrType = MenuScreen(MainScrType); break; + case 1: FlipState=!FlipState; break; + default: repeat = false; break; + } + Flip(FlipState); //设置屏幕反转状态 + } + updateEEPROM(); +} + +//预设设置菜单 +// tip settings screen +void TipScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + MenuLevel = 1; + selection = MenuScreen(selection); + switch (selection) { + case 0: ChangeTipScreen(); break; + case 1: CalibrationScreen(); break; + case 2: InputNameScreen(); break; + case 3: DeleteTipScreen(); break; + case 4: AddTipScreen(); break; + default: repeat = false; break; + } + } +} + +//温控设置菜单 +// temperature settings screen +void TempScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + selection = MenuScreen(selection); + switch (selection) { + case 0: setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, DefaultTemp); + DefaultTemp = InputScreen(); break; + case 1: setRotary(20, 200, TEMP_STEP, SleepTemp); + SleepTemp = InputScreen(); break; + case 2: setRotary(10, 100, TEMP_STEP, BoostTemp); + BoostTemp = InputScreen(); break; + default: repeat = false; break; + } + } + updateEEPROM(); +} + +//定时器设置菜单 +// timer settings screen +void TimerScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + selection = MenuScreen(selection); + switch (selection) { + case 0: setRotary(0, 30, 1, time2sleep); + time2sleep = InputScreen(); break; + case 1: setRotary(0, 60, 5, time2off); + time2off = InputScreen(); break; + case 2: setRotary(0, 180, 10, timeOfBoost); + timeOfBoost = InputScreen(); break; + default: repeat = false; break; + } + } + updateEEPROM(); +} +//英语支持 +void Print_EN(byte i) { + char buffer[11]; + strcpy_P(buffer, (char *)pgm_read_word(&(EN_table[i]))); + arduboy.print(buffer); +} +//菜单界面 +// menu screen +uint8_t MenuScreen(uint8_t selected) { + int SlidingAnimationX; + uint8_t lastselected = selected; + setRotary(0, Menu_table[MenuLevel] - 1, 1, selected); + lastbutton = (!digitalRead(BUTTON_PIN)); + SetTextColor(1); + do { + selected = getRotary(); + //非线性滑动动画 + SlidingAnimationX += (selected - lastselected) * 56; + if (SlidingAnimationX != 0) SlidingAnimationX += 0.6 * (-SlidingAnimationX); + lastselected = selected; + arduboy.clear(); + //绘制图标 如果有指定的话 + for (byte i = 0; i < 5; i++) if (selected - 2 + i >= 0 && selected - 2 + i < Menu_table[MenuLevel]) { + DrawUIFrame(-72 + i * 56 + SlidingAnimationX, 0, 1); + drawSlowXYBitmapResize(-72 + i * 56 + SlidingAnimationX + 3, 3, Ico_table[selected - 2 + i + QueryMenuObject()], 14, 14, 3, 1); + } + + + if (LANG == 0) arduboy.drawSlowXYBitmap(48, 48, CN_table[selected + QueryMenuObject()], 36, 16, 1); else if (LANG == 2) { + drawText(48, 52, JP_table[selected + QueryMenuObject()], pgm_read_byte(&(JP_Length_table[selected + QueryMenuObject()]))); + } else { + arduboy.setCursor(48, 49); + arduboy.setTextSize(1); + Print_EN(selected + QueryMenuObject()); + } + + + arduboy.display(); + CheckLastButton(); + //beep(0); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + return selected; +} +void DrawUIFrame(int x, int y, bool color) { + arduboy.fillRect(x, y, 48, 48, color); + arduboy.fillRect(x + 3, y + 3, 42, 42, !color); //雕空 + DrawPoint(x, y, 0); + DrawPoint(x + 47, y, 0); + DrawPoint(x, y + 47, 0); + DrawPoint(x + 47, y + 47, 0); +} +void DrawPoint(int x, int y, bool color) { + arduboy.drawPixel(x + 1, y, color); + arduboy.drawPixel(x - 1, y, color); + arduboy.drawPixel(x, y + 1, color); + arduboy.drawPixel(x, y - 1, color); + arduboy.drawPixel(x, y, color); +} +//检查按键 +void CheckLastButton() { + if (lastbutton && digitalRead(BUTTON_PIN)) { + delay(10); + lastbutton = false; + } +} +//返回对应层数的对象数 +byte QueryMenuObject() { + int SUM = 0; + for (int i = 0; i < (MenuLevel); i++) SUM += Menu_table[i]; + return SUM; +} +//信息窗 +/* + void MessageScreen(const char *Items[], uint8_t numberOfItems) { + lastbutton = (!digitalRead(BUTTON_PIN)); + + //u8g.setFont(//u8g_font_9x15); + //u8g.setFontPosTop(); + for (uint8_t i = 0; i < numberOfItems; i++) //u8g.drawStr( 0, i * 16, Items[i]); + + do { + CheckLastButton(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + } +*/ +/* + 好看是好看,但是浪费内存 + int wav(byte wavi, int num) { + return (wavi + byte(millis() / 100)) * (float(float(num - countMin) / float(countMax - countMin)) - 0.5) * 5; + } +*/ + +//模拟数字滚轮 Numerical scrolling effect +void DisplayNum(int Num) { + arduboy.setTextSize(6); + SetTextColor(0); + //数字滚轮 + for (byte i = 0; i < 3; i++) LastValue[i] = int(Value/pow(10,2-i))%10; + Value = Num; + for (byte i = 0; i < 3; i++) { + SlidingAnimationY[i] += ((int(Value/pow(10,2-i))%10) - LastValue[i]) * 50; + if (SlidingAnimationY[i] != 0) SlidingAnimationY[i] += 0.8 * (-SlidingAnimationY[i]); + arduboy.fillRect(0 + i * 44, 0, 38, 50, 1); //白底 + for (int ii = -1; ii < 2; ii++) { + arduboy.setCursor(4 + i * 44, 4 - SlidingAnimationY[i] + ii * 50); + arduboy.print(LastValue[i] + ii); + } + } + //刻度标 + arduboy.fillRect(0, 0, 128, 2, 0); //上遮罩层 + arduboy.fillRect(0, 51, 128, 13, 0); //下遮罩层 +} + +//数值输入界面 +// input value screen +uint16_t InputScreen() { + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + arduboy.clear(); + DisplayNum(getRotary()); + arduboy.display(); + CheckLastButton(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + return Value; +} +void QRcodeScreen() { + arduboy.clear(); + arduboy.drawSlowXYBitmap(40, 0, QRCode, 48, 48, 1); + arduboy.display(); + delay(100); + do { + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); +} +//欠压报警设置 +// information display screen +void UnderVoltageSet() { + setRotary(0, 250, 1, UnderVoltage); + UnderVoltage = InputScreen(); + beep(); +} + +//更换预设界面 +// change tip screen +void ChangeTipScreen() { + uint8_t selected = CurrentTip; + uint8_t lastselected = selected; + int8_t arrow = 0; + if (selected) arrow = 1; + setRotary(0, NumberOfTips - 1, 1, selected); + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + //beep(0); + arduboy.clear(); + selected = getRotary(); + arrow = constrain(arrow + selected - lastselected, 0, 2); + lastselected = selected; + SetTextColor(0); + arduboy.setTextSize(2); + arduboy.setCursor(0, 0); arduboy.print(F("Select Tip")); + SetTextColor(1); + arduboy.setCursor(0, 16 * (arrow + 1)); arduboy.print(F(">")); + for (uint8_t i = 0; i < 3; i++) { + uint8_t drawnumber = selected + i - arrow; + if (drawnumber < NumberOfTips) { + arduboy.setCursor(12, 16 * (i + 1)); arduboy.print(TipName[selected + i - arrow]); + } + } + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + + beep(); + CurrentTip = selected; +} + +//温度校准界面 +// temperature calibration screen +void CalibrationScreen() { + uint16_t CalTempNew[4]; + for (uint8_t CalStep = 0; CalStep < 3; CalStep++) { + SetTemp = CalTemp[CurrentTip][CalStep]; + setRotary(100, 500, 1, SetTemp); + beepIfWorky = true; + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + arduboy.clear(); + arduboy.setTextSize(2); + SENSORCheck(); // reads temperature and vibration switch of the iron + Thermostat(); // heater control + arduboy.setCursor(0, 0); arduboy.print(F("Step: ")); arduboy.print(CalStep + 1); arduboy.print("/3"); + if (isWorky) { + arduboy.setCursor(0, 16); arduboy.print(F("Set measured")); + arduboy.setCursor(0, 32); arduboy.print(F("temp: ")); arduboy.print(getRotary()); + } else { + arduboy.setCursor(0, 16); arduboy.print(F("ADC: ")); arduboy.print(uint16_t(RawTemp)); + arduboy.setCursor(0, 32); arduboy.print(F("Please wait")); + } + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + + CalTempNew[CalStep] = getRotary(); + beep(); delay (10); + } + + analogWrite(CONTROL_PIN, 255); // shut off heater + delayMicroseconds(time2settle); // wait for voltage to settle + CalTempNew[3] = getChipTemp(); // read chip temperature + if ((CalTempNew[0] + 30 < CalTempNew[1]) && (CalTempNew[1] + 30 < CalTempNew[2])) { + MenuLevel = 7; + if (MenuScreen(0)) { + for (uint8_t i = 0; i < 4; i++) CalTemp[CurrentTip][i] = CalTempNew[i]; + } + } +} + +//命名界面 文本输入界面 +// input tip name screen +void InputNameScreen() { + uint8_t value; + for (uint8_t digit = 0; digit < (TIPNAMELENGTH - 1); digit++) { + lastbutton = (!digitalRead(BUTTON_PIN)); + setRotary(31, 96, 1, 65); + do { + value = getRotary(); + if (value == 31) { + value = 95; + setRotary(31, 96, 1, 95); + } + if (value == 96) { + value = 32; + setRotary(31, 96, 1, 32); + } + //arduboy.setCursor(0, 0);arduboy.print(); + arduboy.clear(); + arduboy.setTextSize(2); + arduboy.setCursor(16 * digit, 48); arduboy.print(char(94)); + arduboy.setCursor(0, 32); + for (uint8_t i = 0; i < digit; i++) arduboy.print(TipName[CurrentTip][i]); + arduboy.setCursor(16 * digit, 32); arduboy.print(char(value)); + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + TipName[CurrentTip][digit] = value; + beep(); delay (10); + } + TipName[CurrentTip][TIPNAMELENGTH - 1] = 0; + return value; +} + + +// delete tip screen +void DeleteTipScreen() { + MenuLevel = 7; + if (NumberOfTips == 1) { + //MessageScreen(DeleteMessage, sizeof(DeleteMessage)); + } + else if (MenuScreen(0)) { + if (CurrentTip == (NumberOfTips - 1)) { + CurrentTip--; + } + else { + for (uint8_t i = CurrentTip; i < (NumberOfTips - 1); i++) { + for (uint8_t j = 0; j < TIPNAMELENGTH; j++) TipName[i][j] = TipName[i + 1][j]; + for (uint8_t j = 0; j < 4; j++) CalTemp[i][j] = CalTemp[i + 1][j]; + } + } + NumberOfTips--; + } +} + + +// add new tip screen +void AddTipScreen() { + if (NumberOfTips < TIPMAX) { + CurrentTip = NumberOfTips++; InputNameScreen(); + CalTemp[CurrentTip][0] = TEMP200; CalTemp[CurrentTip][1] = TEMP280; + CalTemp[CurrentTip][2] = TEMP360; CalTemp[CurrentTip][3] = TEMPCHP; + } //MessageScreen(MaxTipMessage, sizeof(MaxTipMessage)); 信息窗 +} + + +// average several ADC readings in sleep mode to denoise +uint16_t denoiseAnalog (byte port) { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + if (port >= A0) port -= A0; // set port and + ADMUX = (0x0F & port) | bit(REFS0); // reference to AVcc + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 32; i++) { // get 32 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + return (result >> 5); // devide by 32 and return value +} + +//读取芯片温度 +// get internal temperature by reading ADC channel 8 against 1.1V reference +double getChipTemp() { + unsigned int wADC; + double t; + ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3)); + ADCSRA |= _BV(ADEN); + delay(5); + ADCSRA |= _BV(ADSC); + while (bit_is_set(ADCSRA, ADSC)); + wADC = ADCW; + t = (wADC - ChipTempCalVal ) / 1.22; + return (t); +} + +/* + // get internal temperature by reading ADC channel 8 against 1.1V reference + double getChipTemp() { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + ADMUX = bit (REFS1) | bit (REFS0) | bit (MUX3); // set reference and mux + delay(20); // wait for voltages to settle + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 32; i++) { // get 32 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + result >>= 2; // devide by 4 + return ((result - 2594) / 9.76); // calculate internal temperature in degrees C + } +*/ +// get input voltage in mV by reading 1.1V reference against AVcc +uint16_t getVCC() { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + // set Vcc measurement against 1.1V reference + ADMUX = bit (REFS0) | bit (MUX3) | bit (MUX2) | bit (MUX1); + delay(1); // wait for voltages to settle + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 16; i++) { // get 16 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + result >>= 4; // devide by 16 + return (1125300L / result); // 1125300 = 1.1 * 1023 * 1000 +} + + +// get supply voltage in mV +uint16_t getVIN() { + long result; + result = denoiseAnalog (VIN_PIN); // read supply voltage via voltage divider + return (result * Vcc / 179.474); // 179.474 = 1023 * R13 / (R12 + R13) +} + +//ADC中断服务 +// ADC interrupt service routine +EMPTY_INTERRUPT (ADC_vect); // nothing to be done here + +//旋转编码器触发中断 +// Pin change interrupt service routine for rotary encoder +ISR (PCINT0_vect) { + uint8_t a = PINB & 1; + uint8_t b = PIND >> 7 & 1; + if (a != a0) { // A changed + a0 = a; + if (b != b0) { // B changed + b0 = b; + count = constrain(count + ((a == b) ? countStep : -countStep), countMin, countMax); + if (ROTARY_TYPE && ((a == b) != ab0)) { + count = constrain(count + ((a == b) ? countStep : -countStep), countMin, countMax);; + } + ab0 = (a == b); + handleMoved = true; + } + } +} + +//显示位图,并允许放大 代码片段改自arduboy2 +void drawSlowXYBitmapResize(int x, int y, const uint8_t *bitmap, uint8_t w, uint8_t h, uint8_t size, uint8_t color) { + // no need to draw at all of we're offscreen + /* + if (x + w < 0 || x > WIDTH - 1 || y + h < 0 || y > HEIGHT - 1) + return; + */ + int16_t xi, yi, byteWidth = (w + 7) / 8; + for (yi = 0; yi < h; yi ++) { + for (xi = 0; xi < w; xi ++) { + if (pgm_read_byte(bitmap + yi * byteWidth + xi / 8) & (128 >> (xi & 7))) { + //arduboy.drawPixel(x + xi, y + yi, color); + arduboy.fillRect(x + xi * size, y + yi * size, size, size, color); + } + } + } +} +/* + 8x8 dot Japanese font for Arduboy + + Copyright (c) 2016 emutyworks + + Released under the MIT license + https://github.com/emutyworks/8x8DotJPFont/blob/master/LICENSE.txt +*/ +void drawText(uint8_t x, uint8_t y, const uint8_t *mes, uint8_t cnt) +{ + uint8_t pb; + uint8_t page; + uint8_t screen_start = 0; + uint8_t screen_end = 128; + + if (x < screen_start) { + x = screen_start; + } + + for (uint8_t i = 0; i < cnt; i++) { + pb = pgm_read_byte_near(mes + i); + + switch (pb) { + case MISAKI_FONT_F0_PAGE: + page = MISAKI_FONT_F0_PAGE; + continue; + case MISAKI_FONT_F1_PAGE: + page = MISAKI_FONT_F1_PAGE; + continue; + case MISAKI_FONT_F2_PAGE: + page = MISAKI_FONT_F2_PAGE; + continue; + } + + if (!page) { + continue; + } + + switch (page) { +#ifdef MISAKI_FONT_F0_H + case MISAKI_FONT_F0_PAGE: + if (pb > MISAKI_FONT_F0_SIZE) { + continue; + } + if ((x + 8) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f0[ pb ], MISAKI_FONT_F0_W, 8, WHITE); + x = x + 8; + break; +#endif +#ifdef MISAKI_FONT_F1_H + case MISAKI_FONT_F1_PAGE: + if (pb > MISAKI_FONT_F1_SIZE) { + continue; + } + if ((x + 4) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f1[ pb ], MISAKI_FONT_F1_W, 8, WHITE); + arduboy.drawBitmap(x + 3, y, misaki_font_0x00, 1, 8, WHITE); + x = x + 4; + break; +#endif +#ifdef MISAKI_FONT_F2_H + case MISAKI_FONT_F2_PAGE: + if (pb > MISAKI_FONT_F2_SIZE) { + continue; + } + if ((x + 8) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f2[ pb ], MISAKI_FONT_F2_W, 8, WHITE); + arduboy.drawBitmap(x + 7, y, misaki_font_0x00, 1, 8, WHITE); + x = x + 8; + break; +#endif + } + } +}