From a1b83403b90e55aa42a5c0ab4f74037643cd5d8d Mon Sep 17 00:00:00 2001 From: createskyblue Date: Sun, 30 Aug 2020 23:50:09 +0800 Subject: [PATCH] =?UTF-8?q?v1.7+=20=E6=AD=A3=E5=BC=8F=E7=89=88=20Official?= =?UTF-8?q?=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 屏幕保护程序 Screen saver 英文、中文、日文语言包 English, Chinese and Japanese language pack 开机密码设置 System Password 更好的数值输入体验 Better numerical input experience --- img/文本/密码.png | Bin 0 -> 355 bytes software/binaries/1.7+/T12.ino.standard.hex | 1892 +++++++++++++++ .../1.7+/T12.ino.with_bootloader.standard.hex | 1925 +++++++++++++++ .../SolderingStation2_arduboy_gplib_v1.7+.ino | 2124 +++++++++++++++++ 4 files changed, 5941 insertions(+) create mode 100644 img/文本/密码.png create mode 100644 software/binaries/1.7+/T12.ino.standard.hex create mode 100644 software/binaries/1.7+/T12.ino.with_bootloader.standard.hex create mode 100644 software/sources/SolderingStation2_arduboy_gplib_v1.7+.ino diff --git a/img/文本/密码.png b/img/文本/密码.png new file mode 100644 index 0000000000000000000000000000000000000000..e4363f5d1d18a1ce00493b05c15a8656ff054679 GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm2!3HGjUf)#)QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`6_P!Id>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!u! zz$3Dlfr0M`2s2LA=92~rp7C^X4Ds+jJGGPVkO7Z#^uPb}8I^nPTzSblxguzbS@_e9d7=Z8c7MJXQQeQQrIK>?$iQ=ilP8*1yGZh*9TR zaP5Jk^`7R6?5+nj6u4Ap6+0=PFb!7hu~g*BPOI$uGHv5bZsln|8@Y~Gspx$3%)hxJ zFo)?&!Lib}1s~rnUiLEX`W<(p|9W@b=lZH{n*3ZR`Q^0QX1_4q$3l*qHG4KRm2Am* uQzHpvzUu$~Eu$*pm(pr`u@c^;HVp9#kNrrwRB#&TF9uInKbLh*2~7YtD~9<1 literal 0 HcmV?d00001 diff --git a/software/binaries/1.7+/T12.ino.standard.hex b/software/binaries/1.7+/T12.ino.standard.hex new file mode 100644 index 0000000..2abdad3 --- /dev/null +++ b/software/binaries/1.7+/T12.ino.standard.hex @@ -0,0 +1,1892 @@ +:100000000C943F120C9467120C9467120C942928DC +:100010000C9467120C9467120C9467120C9467127C +:100020000C9467120C9467120C9467120C9467126C +:100030000C9467120C9467120C9467120C9467125C +:100040000C94DF270C9467120C94AD270C9487272F +:100050000C9467120C9400290C9467120C9467128C +:100060000C9467120C94671207634236B79BD8A7AB +:100070001A39685618AEBAAB558C1D3CB7CC5763CD +:10008000BD6DEDFD753EF6177231BF000000803F7B +:1000900005A84CCDB2D44EB93836A9020C50B9914E +:1000A0008688083CA6AAAA2ABE000000803F080055 +:1000B0000000BE922449123EABAAAA2ABECDCCCCE7 +:1000C0004C3E00000080BEABAAAAAA3E0000000081 +:1000D000BF000000803F0000000000084178D3BB53 +:1000E0004387D1133D190E3CC3BD4282AD2B3E6800 +:1000F000EC8276BED98FE1A93E4C80EFFFBE01C4F1 +:10010000FF7F3F0000000000800400003FF0383017 +:1001100033103F90381033902790261030903FF0E6 +:1001200000008004800400003FF03DF020103BF010 +:100130003B7030302B502AD031B03FF000008004AB +:10014000800400003FF038703030231027902010DA +:100150002010279027903FF00000800480040000CA +:100160003FF03CF03CF020102490249020103CF014 +:100170003CF03FF000008004800400003FF037B006 +:1001800023103030387038703030231037B03FF0E3 +:1001900000008004FCF4F860E044C08CC11CC22C58 +:1001A000C44CC88CD10CA204C4048FFC187CBCFCC9 +:1001B0008000BFF81FF8B0281FF8B4081FF8B10876 +:1001C0001FF8B048BFF8B288BFF880008000BFF8C1 +:1001D0001FF8B0081808B9E819B8B8381838B9B80D +:1001E000B9F8B0F8BFF8800015543FF815503FF04B +:1001F0001550387010203104138C22A817FC2AA83F +:100200000000000015543FFC15543FFC15543C04FD +:1002100014043CFC14543CFC005400A800000000F2 +:10022000800400003FF03CF034B0249024902790EC +:100230002310303038703FF000008004FF7CFE7CDB +:10024000FCECE8DCC84C984C882408200000000036 +:10025000000000008004E01CF3FCE7FCCE0C8E1CC8 +:100260009F9C1F3C1F0C0E0C0FFC87F881E4C00CF8 +:10027000E01CF87C000458085808580840087FF82B +:1002800060185FE85B685FE85B681CE85FE8000097 +:10029000800400003FF03CF03CF03CF020102010C7 +:1002A0003CF03CF03CF03FF000008004F87CF7BCF0 +:1002B00000007FF80000BFF4AB54AB54AB54AB5418 +:1002C000AB54AB54BFF4C00CF03CCE0CBF04B30431 +:1002D00073007F007E007C007C007C60BC64BE04F8 +:1002E000CF0CF03C81DC559C29045500299055D059 +:1002F00003FCFF002E00267002508270E600EE0420 +:10030000800C001C3FF43FE03FC4378C2318303092 +:1003100038703CF03FF03FF000008004058074B876 +:1003200057A876B80580F97C4694AAA8F97C068877 +:1003300074A8578C75740698F03CCE4CBC34B81435 +:10034000188010804230607860F844C08004B8841F +:10035000CFCCF03CE01CC00C8FC49FE49FE49FE432 +:1003600000000300030003000780078003008004EF +:10037000F87CE01CC00CCFCCCFCCCFCCCFCCCFCC3A +:10038000CFCCCFCCC84CCFCCC00CE01CFCFCF87C54 +:10039000E01CC00CC00CC00CC00CC00CC00C800415 +:1003A0008004FFFCF87CFCFC8004000020001000AE +:1003B00008001000270000000000000000000000FE +:1003C00000008004C3FC18001800C3FCFFFCFF0CF5 +:1003D00000600060FF0CFFFCF0FC06000600F0FC73 +:1003E0008FC4102020104CC89FE43DF03DF01DE06C +:1003F0003EF03F709FE48CC400003030F87CF33C4A +:10040000F4BCF6BCF4BCF6BCF4BCE49CC84CD02CE8 +:10041000D02CC84CE79CF03C882408203830383079 +:10042000383038303830383039303BB03FF03FF07A +:1004300000008004F21415F0CADFB8CCF0D699E8B9 +:10044000AEA4DFEEE8F21D1E08F21C08F21A1B082B +:10045000F0714601F046464A01F219F051F218F0E7 +:100460005A8DF0C0DAEEAEF0C8B8A5F1302924F00C +:10047000B599E1A4BDF21415F0CBEEAEBDF218F0C3 +:100480005A8DF21617F21415F0CBEEAEBDF2161718 +:10049000F0BCCA9EE0BDF21415F21213F21011F274 +:1004A0000C0DF094F20E0FF0A2D8DFCBE1EEACDC35 +:1004B000E8F20AF08CF20BF04A8DF209F08DF09719 +:1004C000C59BBDF20708F21F20F2040506F097DE77 +:1004D000EED5F0CBABEEF0AEA4DFEEE8F0A8E8BDD1 +:1004E000E2EEE0F0B499D3EEF200010203F0CCDFCB +:1004F000B0B8BD5361766500466C6970004D6169A6 +:100500006E2053637265656E004A5000454E00438D +:100510004E00594553004E4F004F4E004F46460087 +:10052000496E666F73004269670050494400446930 +:1005300072656374005361766500426F6F73740077 +:100540004F666600536C65657000536176650042C6 +:100550006F6F737400536C656570004465666175F8 +:100560006C740053617665004164640044656C6599 +:1005700074650052656E616D650043616C696272FD +:10058000617465004368616E6765005265747572D9 +:100590006E0041626F7574004C616E67004C6F6352 +:1005A0006B004C4F5720566F6C0042757A7A65721B +:1005B0000053637265656E00436F6E74726F6C00FA +:1005C00054696D65720054656D7000546970000067 +:1005D000000000000F1DC20800054442080003840B +:1005E0005FBF000FE44410000115451000054CC921 +:1005F0007F8009244F900007C4C11000054D413F82 +:1006000000055443810007C44D0200054441140015 +:10061000055541080007C8810400000000000000E3 +:100620000000000001083FFE001FFF8100000040A5 +:1006300002000007FE0FF800040208080004020888 +:10064000880007FE08880004020888000402088861 +:100650000007FE0888000402094800040202300076 +:1006600007FE040C00040218040000000000000053 +:100670000000000007FE13FE000402084000040210 +:10068000084000040201FC0004023884000402084F +:10069000840007FE0FFF000402080000040209FEA8 +:1006A00000040209020004020B020004020D020011 +:1006B00007FE09FE00040201020000000000000025 +:1006C0000000000001100080001FFF80800001106A +:1006D0003FFF00004004080007FC04080004440435 +:1006E0001000044402100004440220001FFF812077 +:1006F00000004000C00000A001300001100208000E +:10070000060C0C07001803B00200000000000000F7 +:1007100000000000004000800000400080000FFF4B +:100720003FFF000841040800084104080008410494 +:10073000100008410210000FFF02200008410120B4 +:1007400000004000C00000400130000040020800EE +:1007500000400C07000040300200000000000000D4 +:10076000000000001FDF10200002120C20000224F5 +:10077000042000047F8020000424B820000FA488F7 +:10078000500014BF88500004A488500004A4884876 +:100790000004BF88880004A48A880007A48C840011 +:1007A0000444890700008186020000000000000068 +:1007B000000000000FF00491000440025200047F8A +:1007C000905400045088FF0007D084810004510039 +:1007D0008100044901FF0007CA028100044404812A +:1007E00000044A1CFF0007EA0481000C5104810048 +:1007F0000061C4850000408082000000000000000D +:100800000000000007FF802000008407FF00008434 +:10081000040100008404010000840401000FFFC7EC +:10082000FF0000840400000084040000008405FF31 +:100830000000840501000104090100010409010010 +:10084000020411FF00040401010000000000000088 +:1008500000000000008204FF00004402010007FFC6 +:100860009021000010102100001017FD0000101052 +:1008700021000FFFD06100001010A10000281121FD +:100880000000281221000044142100008210A10061 +:100890000301D045000C00900200000000000000A1 +:1008A00000000000084410FE00042810920005FF1C +:1008B00022920000103C920000100892001CFE10D2 +:1008C0009200041020FE0004103E920005FF80926A +:1008D00000041000920005100E92000610309200E5 +:1008E000041000FE00001000820000000000000064 +:1008F0000000000007DF8840000A24104000114279 +:1009000010FE00040022820002FF3D020008010ADE +:10091000420009F9103200090920120009F93E02CB +:1009200000090900020009090E020009F93022003D +:100930000805001400080200080000000000000084 +:10094000000000000FC3F1E0000FE3F1F8000C70AD +:10095000C19E000C30C186000C30C183000C30C138 +:1009600083000C60C183000C60C183000FC0C18391 +:10097000000FC0C186000C00C186000C00C19800A9 +:100980000C03F1F8000C03F1E0000000000000008F +:100990000000000000200820000FFF09FC000020DC +:1009A00008000000203E880003FE08500002020BF1 +:1009B000FE0003FE0C4000020218400003FE2BFE66 +:1009C00000020208480003FE0888000202085000E6 +:1009D00002022830001FFF91CC000000000000013F +:1009E00004047C0000880444000FFF3F4400002002 +:1009F00004440000200C440000200E44001FFF951A +:100A000044000020144400005024440000500444DA +:100A100000008804450001040485000603850300E6 +:100A200018010400000000000000000000000000A9 +:100A300000000000047E21FC0004421104001F7E1F +:100A4000090400044221FC000542110400067E1145 +:100A500004000C0005FC0015FF880000040813FECC +:100A6000000448325200044F12520004481252004F +:100A700014A8125200091F97FF0000000000000098 +:100A80000000000002103DFC0002102504000410CC +:100A900025040005FFBDFC000C102520000C3825A6 +:100AA0002000143825FE0004543D20000454251075 +:100AB0000004922510000511A5090006113D45000E +:100AC0000410258300041001010000000000000054 +:100AD000000000001FC8102000124A0C20001AC994 +:100AE00004200017480020001FFFB820000208085B +:100AF00050001FC8085000020808500003C80848EA +:100B0000001E1408880001540A880015220C840075 +:100B10001443890700008106020000000000000263 +:100B2000FE01000002823FFF00048202000004FE7A +:100B30000200000C1004FC00141004080005FF8CD7 +:100B400010000410141000043825FF0004340410B1 +:100B50000004520410000491841000051004500099 +:100B6000041004200000000000000000000000004D +:100B70000000000002030010001FDC3EFE00089091 +:100B8000021200051004FF001FDF84120002120C85 +:100B9000FE001FD2021000021222FE000A92141060 +:100BA000000A5214100012220DFF00022208100049 +:100BB0000A42141000040223FF000000000000009D +:100BC000000000000F78BC20000948A45000094A2A +:100BD000A85000094AA88800094AB104001FFEAACB +:100BE000FB00094AA42000094AA42000094AA7FEE4 +:100BF00000094AB420000948A924000B48A2220099 +:100C0000088AA4A200111920400000000000000082 +:100C1000000000000020008000005001FC0000885F +:100C2000010400010403080006FB0490000800C052 +:100C3000600007DF018000045106000004511BFE24 +:100C400000045102020007D9020200045602020009 +:100C5000001003FE0000100202000000000000006F +:100C6000000000000208209000027F9890001F8082 +:100C700009FF00022201100006218B100007628D7F +:100C8000FE000AA20910000A14111000121431FE0D +:100C900000020811100002141110000222111000AD +:100CA000024391FF000281110000000000000000DB +:100CB00000000000100700000008F83FFE0004805C +:100CC000200200008020020000BE23E2001C8222DD +:100CD000220004A42222000494222200048822225A +:100CE00000049423E20005222002000542200200B5 +:100CF0000A003FFE0011FFA00200000000000000FB +:100D00000000000000820FFE00004400400007FFCA +:100D10008040000010004000001000400000101F44 +:100D2000FF800FFFC040000010004000002800407E +:100D30000000280040000044004000008200400005 +:100D40000301C140000C0080800000000000000989 +:100D5000FF00400004203FFF00042000000000FED0 +:100D60000000001C420FFC00044200000007FF804E +:100D7000000004000FFC0004FF00000004810000DC +:100D80000005810FFC00068108040004FF08040030 +:100D900000810FFC000000000000000000000000C7 +:100DA0000000000000401F7E001FFF840200108032 +:100DB0008442000A4A0442000A3108420012C50F68 +:100DC00042000304197F001DF829010000400901B9 +:100DD00000084209FD00084209010008420F010015 +:100DE0000FFE0905000002000200000000000000E4 +:100DF0000000000001000FFE00010008200003FFBA +:100E00000820000201082000042208200008200B0E +:100E1000FE00102008200000500828000050082480 +:100E20000000880822000088102000010410200023 +:100E30000203A7FF000C01000000000000000000FA +:100E40000000000000400080001FFF9FFC000040E9 +:100E50000410000FFF02200000003FFF000FFE0003 +:100E6000000008420FF80008420808000FFE0808BA +:100E70000008020FF8000800080800080008080031 +:100E800008000FF800100008080000000000000033 +:100E90000000000007FE0FF800040200000004023A +:100EA00000000007FE00000004023FFE00040200F4 +:100EB000800007FE008000009004900008910C88DC +:100EC00000069310860002942082000090008000AB +:100ED00000900280001FFF81000000000000000061 +:100EE00000000000041012020005FF9FD200050060 +:100EF0009212001E28A2120004443FF20004820253 +:100F0000120006000212000CFE1FD2001410125232 +:100F10000004101242000410134200041012820058 +:100F200015FF820A00080002040000000000000013 +:100F300000000000002000000000203E04001FFF11 +:100F4000A204001000A2FF0000012204000FFE22F4 +:100F5000040000403E4400004022240004402224BB +:100F600000047C22040004402204000A403E0400E5 +:100F7000094022240010FF80140000000008000037 +:100F80000000000010FE08200008820BFF00048211 +:100F90000A010010FE3C51000882088800088209FE +:100FA000040002FE0C0000040019FC0009FF2820C8 +:100FB0000019290820000929082000092908200013 +:100FC00009292BFF000BFF9000000000000000002B +:100FD000000000001F7F90F80001080888000A1038 +:100FE000088800047F0107001FC13A000005490975 +:100FF000FC000449088400044908880004490848A2 +:1010000000044908500004490A200004160C580046 +:10101000142189870008C086020000000000001F1C +:10102000E03FF07038601860186018FFFCFCFCFCB2 +:10103000FCFCFCF87CF87CFCFC7FF81E1033382D9F +:101040007C25382D3825382D386D80DEC0BF40BF57 +:1010500040DEC061803F007FF0FFE0C008C01CC0E0 +:1010600038C870DCE4CFCCC78CC30CC00CC00CFFFC +:10107000FC7FF8000006000C0018F838F0303070E3 +:1010800060707878F878003C023F0C1FF80FF0038E +:10109000C000007FF8FFFCC00CC30CCB4CDB6CDB4A +:1010A0006CD86CDCECCFCCC78CC00CFFFC7FF80399 +:1010B0000007800FC00CC01CE01CE03CF03CF07F3F +:1010C000F87FF8FCFCFCFCFFFC7FF811408200215B +:1010D000208FE023FC82004A23E200FE209FF013D1 +:1010E000F880802220C0804221BFF0FBFA88800275 +:1010F000208480022084801A208080E3FE82800287 +:101100000101000F421FC078411040084090400884 +:10111000421FC008411040FFFD104008405FC0085A +:1011200040800008413FE008432520104125201061 +:101130004125202041252040417FF07FF848800252 +:101140000049000201FFF00201001002027F20228C +:1011500000410023F07F00220008002200FF8022CF +:101160000088802200888022008A8022008900FF77 +:10117000FC080023F21FC022111040FBF090402217 +:10118000121FC02A11104033F1104060005FC0AF41 +:10119000FC800020413FE0224325202279252022A7 +:1011A000412520A541252048FD7FF01083DFC01098 +:1011B000825040208250402FFFDFC0608252006189 +:1011C000C25200A1C25FE022A3D20022A251002499 +:1011D000925100288E5090308BD45020825830206D +:1011E000801010104047C017FC44402003F44023F7 +:1011F000F844406208C440A3F8E440200154402F62 +:10120000FD44402806444023F844402040445020F8 +:10121000404850214050302080400020921FC03D67 +:10122000F990402090904040901FC07BFF0000A0AC +:10123000013FE021F90200FD09020021097FF021B0 +:10124000F90500210945002909888031F91070212C +:1012500008202025004300202070F8754077557540 +:101260007740403E4A5E2B5E4A6B627F352F357F6A +:101270007C5B5E247B0E3A047E017E4A5E69063A00 +:101280002F3F6B7E46403F41497F494102626B6B75 +:101290006B62026A6B147D577D10413F55553D5777 +:1012A00051213F2D7F2A122E0A775A505A770A2051 +:1012B00024137D5553707A2A7B021A437A4A525E70 +:1012C0002B5E424A415F353F555F417D14577D0E8D +:1012D000407F7F1B54167D1654493A407E57567600 +:1012E000423F427E7E427E047E51377D3750127AE5 +:1012F0001752761E127F557F145D7F557F557F7F75 +:10130000553D577F55377817457F7F2B7B287B2BA3 +:101310007F1E12127F12121E7F416B7F6B517F5214 +:101320005A573A575A52007F494949497F22122A4F +:101330007F2A1222166A5E735662160937315F15CC +:101340005F7500000000002F000300033F123F16EE +:101350003F1A120824323D2A020100003E41413E5C +:10136000000A070A083E084020000808080020007C +:101370001008041C2A1C243E20322A24222A141875 +:10138000143E2E2A121C2A12023A06142A14242A67 +:101390001C002400402400081422141414221408F1 +:1013A00002290612291E3E093E3F251A1E21213F11 +:1013B000211E3F25213F05011E21393F083F213FC6 +:1013C0002110201F3F043B3F20203F063F3F013EAE +:1013D0001E211E3F09061E215E3F093622251901E6 +:1013E0003F013F203F3F100F3F183F330C33033C7A +:1013F00003312D23007F41153E15417F000201027C +:1014000040404000010218243C3F241818242418AE +:10141000243F182C2C043F0548543C3F0438003D21 +:1014200000403D003F0834013F003C1C383C04387C +:101430001824187C241818247C3C0804283C140424 +:101440003E243C203C3C100C3C303C2418244C50A6 +:101450003C24342C083641007F004136080101014C +:101460001028101F010120203E1020000008002538 +:10147000150F241C0C103804180C3828382828188C +:101480003C083C18283820242C3C2C2C1C04080830 +:10149000211D07083C0306231E223E22120A3F326A +:1014A0000F3E0A3F0A24130E271E0222223E271255 +:1014B0000F2525102119273F222E21160F241B0E40 +:1014C000251F0526261E251D053F0408241F042070 +:1014D0002222251927123B1620100F3C013E1F2403 +:1014E0002421110F0C031C1A3F1A091927222A2A3A +:1014F000382730320C13053F25023F0E213F2025AF +:10150000253F25251D07201F3C3F203F20103E2260 +:101510003E23110F212118010001020502000000E5 +:1015200000000000002040000000000000205020CB +:10153000000000000050300000000000006060006B +:101540000000000000000018180000000000003635 +:1015500036000000000000563600000000000201C6 +:1015600051090906000000005F00000000000000B3 +:10157000007F41410041417F000000000000000069 +:101580003F010101004040407E0000000000003F9C +:10159000213D05070070505E427E00000000000003 +:1015A000007F63410041637F0000000000080808DD +:1015B0007F08080800080808080808080044444490 +:1015C0005F444444004122140814224100080808E2 +:1015D0002A080808001414141414141400143414E1 +:1015E0001C141614000808141414222200222214B9 +:1015F00014140808000205023C42422400002B2C6F +:10160000782C2B000000242A7A2F2A1200001C625A +:10161000322E23140020545E254142200042251220 +:10162000082452210020623E633E230200205649D6 +:1016300055225840000022147F142200001C225919 +:10164000554D120C0000004A555529000004643C19 +:10165000173C64040004643C1F3C6404001C2241E9 +:101660004141221C001C3E7F7F7F3E1C001C225DEE +:10167000555D221C000814224122140800081C3E5B +:101680007F3E1C08007F41414141417F007F7F7FB9 +:101690007F7F7F7F0040704C434C70400040707CE7 +:1016A0007F7C704000010719611907010001071FC5 +:1016B0007F1F07010049221449142249000505052E +:1016C0007D05050500080808082A1C0800081C2AD2 +:1016D00008080808000004027F020400000010202F +:1016E0007F20100000003E414141413E0000004289 +:1016F0007F400000000062515149494600002241EC +:10170000494949360000302824227F2000002F4517 +:101710004545453900003E4949494932000001012B +:101720006119050300003649494949360000264938 +:101730004949493E000020547E3414600020527F05 +:101740002A1A4A3000003C4020041800001E2040A5 +:10175000200204180000104A4A2A10000000084520 +:10176000454525180000482A3A4A40000000442513 +:10177000153D45400000247E145024000022527F75 +:101780000A484A340044344F443804180044344F63 +:101790004439041900002A5A4B4E5A0800002A5AAC +:1017A0004B4E5B080000081414224100000008148E +:1017B00014224504003F0004443F0404003F000499 +:1017C000443F0405000020524242424000002052A3 +:1017D000424342410000245444475C040000245426 +:1017E00044475C050000003F404040200000003FAF +:1017F000404140210002020A563F02020002020A52 +:10180000563F02030004043F44545F440004043F75 +:1018100044545F45000008093D4B49080000080991 +:101820003D4B490A00423A072254444400423A07D9 +:1018300022554445000002124E4B4A32000002126B +:101840004E4B4A3300001010484830000004040298 +:101850002222221C000404022223221D0000020274 +:101860001A254341000002021A2543450000205773 +:1018700048484444000020574849444500120A277C +:1018800052503A24007F00205242424000304E38ED +:10189000540F64780024147F0422523C0018241250 +:1018A0004E422418007F002454543F44007F0024FB +:1018B00054543F45007F002454563D4600023A47A9 +:1018C00040413E0400023A4740413E0500023A478B +:1018D00040433D06004030404D32106000403040F3 +:1018E0004D321161004030404D3215620008040253 +:1018F0000408101000080402040910110008040272 +:10190000040A1512007F006A6A7E2A4A007F006A74 +:101910006A7F2A4B007F006A6A7E2D4A00006A6A4D +:101920006A7F2A4A0030291D4B483C1000122A7F4A +:101930004240422400304E38540F443800000A3EE2 +:101940004B4A4A300000080E384614080004071CB1 +:1019500062030A0400001C483E241800001E0452C2 +:101960003F12120C00002050503E48000000205052 +:10197000503F244400001C51494A483000000F42A7 +:1019800041211E00000010696D4B49300024147F76 +:1019900004023E40000010494D4B49300000281819 +:1019A0007E0844380024147F0442423C003049251C +:1019B0001F245438004028255735284000100A2E8F +:1019C0005B724A480040300C334040200000044421 +:1019D0003C140C00000001413D09050300002020DB +:1019E0001078040000001010087C02010000184864 +:1019F0004C281800000006424322120E0000404806 +:101A000078484000002022223E2222200000282880 +:101A1000587C0800002222124A7F02020000422263 +:101A20001F02427E000042221F02427F000012126B +:101A30001F721210000012121F72131000000844CF +:101A40004322120E000008444322120F00080742EE +:101A5000221E020200080742221F02030000424227 +:101A60004242427E000042424243427F0002024F15 +:101A700042221F020002024F42231E030000454A79 +:101A80004020100C0000454A4021100D0040422229 +:101A9000221A264000404222221B26410004043F15 +:101AA0004444544C0004043F4445544D0000014656 +:101AB0004020100F000001464020110F0000084494 +:101AC0004B2A120E000008444B2A120F00080A4A43 +:101AD0003E09090800080A4A3E09080900001840A2 +:101AE0005820180000020C424C20100E00020C423C +:101AF0004C21100D000405453D0505040004054575 +:101B00003D0504050000007F080810000000007F6C +:101B100008091001000444241F04040400202222A8 +:101B200022222220004041251519270000202212E0 +:101B30007B06122000404020100807000040300EB5 +:101B400000020C700040300E00020D710040300E9B +:101B500000020D7200003F484848444400003F48DE +:101B60004849444500003F48484A45460000024273 +:101B70004222120E000002424223120F00000242D3 +:101B80004222150E00080402040810200008040276 +:101B90000409102100080402040A15220024144438 +:101BA0007F041424002414447F05142500241444C5 +:101BB0007F0615220002021222520A060000212589 +:101BC000294A42000040704C4350204000404424C9 +:101BD00014083700000008093F4949480000101C5C +:101BE000680818000004040F74020A060000404848 +:101BF0004878400000202222223E2020000000449D +:101C000054547C000000424A4A4A4A7E000004457F +:101C10004525150C00000F4040201F000040201EED +:101C2000007F20100000007F4020100800007E424E +:101C30004242427E00000C4444241C000000064244 +:101C40004222120E0010121E12127F1200202222B7 +:101C50003A262220000001454525150F000041428B +:101C60004020100C000006424322120F00004828BA +:101C70001C4878000000100C4838080000080404D4 +:101C800008101008000800000800000800040808F8 +:101C900008080808000808080808080808060505D4 +:101CA0000706040903030504090A080303030603DE +:101CB00005030305050306040405050405040403E0 +:101CC00004090503CB05C605C005B805B105AA057D +:101CD000A2059D05980592058B0584057A05730577 +:101CE0006C05680563055B0555054F054A05440508 +:101CF00040053A0535052E052A05260520051C0553 +:101D00001905160512050F050C050905FD04F80453 +:101D1000F3043E0053656C656374205469700000E1 +:101D2000000000003E5B4F5B3E3E6B4F6B3E1C3E37 +:101D30007C3E1C183C7E3C181C577D571C1C5E7F4B +:101D40005E1C00183C1800FFE7C3E7FF00182418CA +:101D500000FFE7DBE7FF30483A060E2629792926FF +:101D6000407F050507407F05253F5A3CE73C5A7FE9 +:101D70003E1C1C08081C1C3E7F14227F22145F5F3F +:101D8000005F5F06097F017F006689956A60606079 +:101D9000606094A2FFA29408047E040810207E20B4 +:101DA0001008082A1C08081C2A08081E1010101009 +:101DB0000C1E0C1E0C30383E3830060E3E0E06004F +:101DC0000000000000005F00000007000700147F13 +:101DD000147F14242A7F2A1223130864623649567A +:101DE00020500008070300001C2241000041221C73 +:101DF000002A1C7F1C2A08083E080800807030005A +:101E00000808080808000060600020100804023E6E +:101E10005149453E00427F400072494949462141AF +:101E2000494D331814127F1027454545393C4A491E +:101E3000493141211109073649494936464949295D +:101E40001E0000140000004034000000081422416D +:101E50001414141414004122140802015909063EF6 +:101E6000415D594E7C1211127C7F494949363E41F1 +:101E70004141227F4141413E7F494949417F090912 +:101E800009013E414151737F0808087F00417F41AD +:101E9000002040413F017F081422417F40404040E4 +:101EA0007F021C027F7F0408107F3E4141413E7F3C +:101EB000090909063E4151215E7F09192946264933 +:101EC00049493203017F01033F4040403F1F20400A +:101ED000201F3F4038403F63140814630304780414 +:101EE000036159494D43007F4141410204081020DC +:101EF000004141417F040201020440404040400053 +:101F00000307080020545478407F2844443838445C +:101F1000444428384444287F385454541800087ED8 +:101F2000090218A4A49C787F0804047800447D402A +:101F3000002040403D007F1028440000417F4000C9 +:101F40007C047804787C080404783844444438FCE1 +:101F50001824241818242418FC7C08040408485465 +:101F600054542404043F44243C4040207C1C204022 +:101F7000201C3C4030403C44281028444C90909019 +:101F80007C4464544C440008364100000077000053 +:101F9000004136080002010204023C2623263C1EB2 +:101FA000A1A161123A4040207A3854545559215524 +:101FB0005579412154547841215554784020545545 +:101FC00079400C1E52721239555555593954545492 +:101FD0005939555454580000457C410002457D4212 +:101FE0000001457C40F0292429F0F0282528F07CC8 +:101FF000545545002054547C547C0A097F49324989 +:102000004949323248484832324A4848303A4141D8 +:10201000217A3A42402078009DA0A07D3944444472 +:10202000393D4040403D3C24FF2424487E494366DE +:102030002B2FFC2F2BFF0929F620C0887E090320B7 +:10204000545479410000447D413048484A32384078 +:1020500040227A007A0A0A727D0D19317D262929DB +:102060002F28262929292630484D402038080808DD +:102070000808080808382F10C8ACBA2F102834FAFE +:1020800000007B000008142A142222142A14089548 +:1020900000220095AA005500AAAA55AA55AA000038 +:1020A00000FF00101010FF00141414FF001010FFA8 +:1020B00000FF1010F010F0141414FC001414F700BA +:1020C000FF0000FF00FF1414F404FC141417101F89 +:1020D00010101F101F1414141F00101010F0000017 +:1020E00000001F101010101F10101010F010000032 +:1020F00000FF101010101010101010FF1000000042 +:10210000FF140000FF00FF00001F10170000FC0478 +:10211000F414141710171414F404F40000FF00F75B +:1021200014141414141414F700F7141414171410BE +:10213000101F101F141414F4141010F010F00000ED +:102140001F101F0000001F14000000FC140000F00E +:1021500010F01010FF10FF141414FF141010101FB3 +:1021600000000000F010FFFFFFFFFFF0F0F0F0F0C4 +:10217000FFFFFF0000000000FFFF0F0F0F0F0F38E1 +:10218000444438447C2A2A3E147E02020606027E1B +:10219000027E0263554941633844443C04407E203A +:1021A0001E2006027E020299A5E7A5991C2A492A4B +:1021B0001C4C7201724C304A4D4D303048784830DA +:1021C000BC625A463D3E494949007E0101017E2AD2 +:1021D0002A2A2A2A44445F444440514A4440404405 +:1021E0004A51400000FF0103E080FF000008086B37 +:1021F0006B083612362436060F090F060000181831 +:102200000000001010003040FF0101001F01011EFE +:1022100000191D1712003C3C3C3C0000000000006F +:10222000000000240027002A0000000000250028EC +:10223000002B0000000000230026002900040404F5 +:10224000040404040402020202020203030303035F +:10225000030102040810204080010204081020013C +:10226000020408102000000008000201000003041E +:10227000070000000000000000AED5F0A83FD3002A +:10228000408D14A1C8DA1281CFD9F1DB40A4A6AFEA +:10229000200021007F220007506C65617365207764 +:1022A000616974004144433A200074656D703A20BE +:1022B00000536574206D65617375726564005374B5 +:1022C00065703A2000FFFFFFFFFFFF8003867080EC +:1022D000038003867080039FF3E1309FF39FF3E157 +:1022E000309FF3983301CC9833983301CC983398CE +:1022F0003387C098339833E1C098339833E1C0985E +:10230000339FF398C09FF39FF398C09FF3800366B9 +:10231000CC8003800366CC8003FFFF010CFFFFFF2E +:10232000FF01001FFF810061301F3F873CE6FC87F3 +:1023300033873CE6FC87F3F8039E0F1F03F8039EE8 +:102340000F1F03E13CFE0C07CFE13CFE0C07CF99C9 +:10235000033E3086C3E6CF380F9EF3E6CF380F9E9C +:10236000F39E0327CC81039E0327CC8103E0FFE18A +:102370000CE6CFE0FFE10CE6CF9803060000FF98E3 +:1023800003060000FFFFFF1EF0F80380036630998C +:10239000C38003663099C39FF3010CF8FF9FF301DC +:1023A0000CF8FF9833393C01CF9833393C01CF9872 +:1023B00033FF0C793F98333ECCE0F398333ECCE0CA +:1023C000F39FF33E0098CF9FF33E0098CF80033EEB +:1023D00030E7C380033E30E7C3FFFFFFFFFFFFFF8F +:1023E000FFFFFFFFFF3030300076312E372B0056D5 +:1023F00000560043000FE01FC01FC03F803FF87F22 +:10240000F07FE007C007800F000E001C00180010CE +:102410000014A03FF07FF8E01C6E18EC1C681860F8 +:1024200018E01C6058E01C7FF83FF014A0455252A1 +:102430004F5200484F4C44004845415400574F52BA +:102440004B5900424F4F535400534C454550004F99 +:1024500046460000003BEC7BEE63E663E663E66322 +:10246000E663E663E663666226600660067FFE3F1B +:10247000FC00000102040810204080000129112402 +:102480001FBECFEFD8E0DEBFCDBF12E0A0E0B1E0CD +:10249000EAE5F4E702C005900D92A23CB107D9F736 +:1024A00028E0A2ECB2E001C01D92A131B207E1F731 +:1024B00012E1CFE3D2E104C02197FE010E940C3A61 +:1024C000CE33D107C9F70E94B6290C942B3A0C944D +:1024D00000004F925F926F927F928F929F92AF9285 +:1024E000BF92CF92DF92EF92FF920F931F93CF9301 +:1024F000DF9300D000D0CDB7DEB74B015C012901DE +:102500003A016701780120E030E0A9010E944C35D2 +:1025100087FDA6C020E030E0A901C301B2010E94FE +:102520004C3587FD9DC020E030E0A901C801B6010F +:102530000E944C3587FD94C081E02091DB073091EB +:10254000DC072130310509F080E08093FC078092A0 +:10255000C1079092C207A092C307B092C4074092ED +:10256000C5075092C6076092C7077092C807C0920D +:10257000C907D092CA07E092CB07F092CC076091CE +:10258000EF077091F0078091F1079091F2070E9498 +:10259000513520E030E04AE754E40E945637698321 +:1025A0007A838B839C838092CD079092CE07A092F2 +:1025B000CF07B092D0079B01AC01C301B2010E94CA +:1025C000B2352B013C014092D1075092D207609264 +:1025D000D3077092D40729813A814B815C81C7016E +:1025E000B6010E9456376B017C01C092D507D0928C +:1025F000D607E092D707F092D8078091D90790913B +:10260000DA07019769F5A501940160E070E0CB015C +:102610000E94E9366093CD077093CE078093CF0771 +:102620009093D007A301920160E070E0CB010E947B +:10263000E9366093D1077093D2078093D3079093C4 +:10264000D407A701960160E070E0CB010E94E93653 +:102650006093D5077093D6078093D7079093D807D8 +:102660000F900F900F900F90DF91CF911F910F91CE +:10267000FF90EF90DF90CF90BF90AF909F908F90A2 +:102680007F906F905F904F90089580389105B0F4DF +:102690006034710598F4E3E7F4E290E1969FD0018D +:1026A000A0781124A80F6770E60FF11D9491A85E21 +:1026B000BC4F442321F08C91982B9C9308959095C6 +:1026C0008C919823FACFDF92EF92FF920F931F9392 +:1026D000CF93DF937C01D22E8B01040F111DEB01F0 +:1026E00077FF02C0D0E0C0E0C8010134110514F04A +:1026F00080E490E0C817D9073CF44D2DBE01C70116 +:102700000E9445132196F0CFDF91CF911F910F9139 +:10271000FF90EF90DF900895CF92DF92EF92FF92BB +:102720000F931F93CF93DF936B01122FEC017C016A +:10273000E40EF11CCE15DF0544F4202F412FB60125 +:10274000CE010E9463132196F5CFDF91CF911F91A7 +:102750000F91FF90EF90DF90CF9008952F923F92CE +:102760004F925F926F927F928F929F92AF92BF92A1 +:10277000CF92DF92EF92FF920F931F93CF93DF934D +:1027800000D01F92CDB7DEB7C22ED12C9601280FF4 +:10279000391F37FD4FC0803891050CF04BC0E982DE +:1027A0004A017B013C01402E512C160127E0220EEC +:1027B000311C93E0359427949A95E1F78B01B12C65 +:1027C000A12C1B821A82EA81FB8183E0F595E795B3 +:1027D0008A95E1F7EA0DFB1DE80DF91DE4918A8168 +:1027E0009B818770992720E830E002C035952795B6 +:1027F0008A95E2F7C901F0E0E223F923EF2B41F0DB +:102800004981B8018A819B81860D971D0E944513DD +:102810008A819B8101969B838A838C159D059CF2FE +:10282000A20CB31C0F5F1F4FC8018E199F0984159E +:1028300095053CF20F900F900F90DF91CF911F9173 +:102840000F91FF90EF90DF90CF90BF90AF909F904F +:102850008F907F906F905F904F903F902F90089552 +:102860000F931F93CF93DF93EC018B0140E0019610 +:102870000E94451340E0B801CE0101970E94451324 +:10288000B8016F5F7F4F40E0CE010E944513B80151 +:102890006150710940E0CE010E94451340E0B8014B +:1028A000CE01DF91CF911F910F910C94451380E0E1 +:1028B000E8E1F3E081118FEF00248193819381930C +:1028C00081930394D1F7EDEFF7E01786168615860E +:1028D000148608956F927F928F929F92AF92BF92CB +:1028E000CF92DF92EF92FF920F931F93CF93DF93DC +:1028F000803891050CF057C0603471050CF053C05E +:102900007B0137E0E322FF2433E0759567953A9524 +:10291000E1F7DB01B695BA2FAA27B795A7955D0118 +:10292000C0E8AC0EB11CA80EB91EA80FB91FA85E56 +:10293000BC4F00E810E0081B190B90E080E0E8E0D5 +:10294000F0E04F018E189F0830E0FA01E80FF91F00 +:10295000C4917D906D01D1E0CD1AD1080E2C01C03B +:10296000CC0F0A94EAF77C2AE6017882E114F1049C +:1029700099F06730710581F0E491EC01CA0DDB1D1F +:10298000C85EDC4FF0E0082C02C0F595E7950A948C +:10299000E2F7F881EF2BE8830196821793071CF486 +:1029A0000817190791F6DF91CF911F910F91FF90B2 +:1029B000EF90DF90CF90BF90AF909F908F907F90DF +:1029C0006F900895AF92BF92CF92DF92EF92FF92F5 +:1029D0000F931F93CF93DF936C017B018B01040F47 +:1029E000151FEB015E01AE18BF08C017D10759F0E3 +:1029F0006991D601ED91FC910190F081E02DC60125 +:102A00000995892B79F7C501DF91CF911F910F911E +:102A1000FF90EF90DF90CF90BF90AF900895FC01B2 +:102A2000538D448D252F30E0842F90E0821B930B33 +:102A3000541710F0CF96089501970895FC01918DD9 +:102A4000828D981761F0A28DAE0FBF2FB11D5D96DC +:102A50008C91928D9F5F9F73928F90E008958FEF7E +:102A60009FEF0895FC01918D828D981731F0828D32 +:102A7000E80FF11D858D90E008958FEF9FEF089589 +:102A8000FC01918D228D892F90E0805C9F4F821BED +:102A900091098F739927089588E197E00E94401566 +:102AA00021E0892B09F420E0822F089580E090E056 +:102AB000892B29F00E944C1581110C940000089577 +:102AC000FC01A48DA80FB92FB11DA35ABF4F2C91A3 +:102AD000848D90E001968F739927848FA689B7899A +:102AE0002C93A089B1898C91837080648C93938D91 +:102AF000848D981306C00288F389E02D80818F7D34 +:102B000080830895EF92FF920F931F93CF93DF93EB +:102B1000EC0181E0888F9B8D8C8D98131AC0E88919 +:102B2000F989808185FF15C09FB7F894EE89FF89E8 +:102B30006083E889F98980818370806480839FBF86 +:102B400081E090E0DF91CF911F910F91FF90EF9086 +:102B50000895F62E0B8D10E00F5F1F4F0F73112796 +:102B6000E02E8C8D8E110CC00FB607FCFACFE889D1 +:102B7000F989808185FFF5CFCE010E946015F1CFE4 +:102B8000EB8DEC0FFD2FF11DE35AFF4FF0829FB745 +:102B9000F8940B8FEA89FB8980818062CFCFCF9335 +:102BA000DF93EC01888D8823B9F0AA89BB89E88975 +:102BB000F9898C9185FD03C0808186FD0DC00FB61B +:102BC00007FCF7CF8C9185FFF2CF808185FFEDCF99 +:102BD000CE010E946015E9CFDF91CF910895833037 +:102BE00081F028F4813099F08230A9F0089587307F +:102BF000A9F08830C9F08430B1F4809180008F7DD5 +:102C000003C0809180008F7780938000089584B501 +:102C10008F7784BD089584B58F7DFBCF8091B00000 +:102C20008F778093B00008958091B0008F7DF9CFA9 +:102C3000CF93DF93282F30E0F901EB59FD4D8491BC +:102C4000F901EF5AFD4DD491F901E35CFD4DC491BA +:102C5000CC23A1F081110E94EF15EC2FF0E0EE0FD4 +:102C6000FF1FED5CFD4DA591B491EC91ED2381E04A +:102C700090E009F480E0DF91CF91089580E090E04A +:102C8000FACF1F93CF93DF93282F30E0F901EB5950 +:102C9000FD4D8491F901EF5AFD4DD491F901E35CAA +:102CA000FD4DC491CC23A9F0162F81110E94EF1580 +:102CB000EC2FF0E0EE0FFF1FE75DFD4DA591B49105 +:102CC0008FB7F894EC91111108C0D095DE23DC93F6 +:102CD0008FBFDF91CF911F910895DE2BF8CFCF9357 +:102CE000DF9390E0FC01EF5AFD4D2491835C9D4DF4 +:102CF000FC0184918823C9F090E0880F991FFC01A2 +:102D0000E15EFD4DA591B491FC01E75DFD4DC591DE +:102D1000D49161110DC09FB7F8948C9120958223B6 +:102D20008C938881282328839FBFDF91CF910895BA +:102D3000623051F49FB7F8943C91822F80958323A1 +:102D40008C93E8812E2BEFCF8FB7F894EC912E2B3C +:102D50002C938FBFEACF1F93CF93DF93182FEB01F4 +:102D600061E00E946F16209739F460E0812FDF91B7 +:102D7000CF911F910C944116CF3FD10511F461E022 +:102D8000F5CFE12FF0E0EB59FD4DE491E33031F167 +:102D900040F4E130B1F0E230E1F0C038D1057CF729 +:102DA000E4CFE73029F1E83059F1E430B1F7809110 +:102DB0008000806280938000D0938B00C0938A0053 +:102DC00004C084B5806884BDC7BDDF91CF911F91D9 +:102DD000089584B5806284BDC8BDF7CF809180001E +:102DE000806880938000D0938900C0938800EDCFE5 +:102DF0008091B00080688093B000C093B300E5CFAD +:102E00008091B00080628093B000C093B400DDCFA9 +:102E10003FB7F8948091DC029091DD02A091DE0230 +:102E2000B091DF0226B5A89B05C02F3F19F001968F +:102E3000A11DB11D3FBFBA2FA92F982F8827BC0114 +:102E4000CD01620F711D811D911D42E0660F771F3C +:102E5000881F991F4A95D1F708958F929F92AF923C +:102E6000BF92CF92DF92EF92FF924B015C010E94E2 +:102E700008176B017C010E9408176C197D098E09E7 +:102E80009F09683E734081059105A8F321E0821AED +:102E90009108A108B10888EEC80E83E0D81EE11C95 +:102EA000F11C81149104A104B10429F7FF90EF9063 +:102EB000DF90CF90BF90AF909F908F9008952FB7E5 +:102EC000F8946091D8027091D9028091DA029091C1 +:102ED000DB022FBF089584E98093BC008091BC0081 +:102EE00084FDFCCF08958093BB0084E88093BC00F0 +:102EF0008091BC0087FFFCCF089584EA8093BC00DA +:102F00008091BC0087FFFCCF88E70C9473170E9468 +:102F10007D1780E48093BB0084E88093BC00E8E1E7 +:102F2000F3E09091BC0097FFFCCF91919093BB0090 +:102F30008093BC0097E0E831F90799F78091BC00D5 +:102F400087FFFCCF0C946B17CF93C82F0E947D177F +:102F500080E00E9473178C2F0E947317CF910C94FE +:102F60006B17480F592F511D4138510514F040E897 +:102F700050E0481BFB0177FD379633E0F595E79568 +:102F80003A95E1F7F695FE2FEE27F795E795E80FCE +:102F9000F91FE85EFC4F6770772781E090E001C081 +:102FA000880F6A95EAF7382F213041F4415078F0C4 +:102FB0008191DF011197832B8C93F8CF809541503D +:102FC00030F09191DF01119798239C93F8CF0895E9 +:102FD000CF92DF92EF92FF920F93CF93DF936C012A +:102FE0007B01C42FD22F202F0E94B117B7016D0F84 +:102FF000711D61507109603471052CF4202F4C2F24 +:10300000C6010E94B117202F4D2FB701C6010E94A3 +:103010006313C6018C0F911D202F4D2FB70101970F +:10302000DF91CF910F91FF90EF90DF90CF900C94B4 +:1030300063132F923F924F925F926F927F928F9283 +:103040009F92AF92BF92CF92DF92EF92FF920F9337 +:103050001F93CF93DF93CDB7DEB72A970FB6F894BF +:10306000DEBF0FBECDBF9A8389836A3061F5DC0174 +:1030700052968C91B8E08B9F90011124E981FA81DE +:1030800086859785820F931F978786871586148676 +:1030900081E090E02A960FB6F894DEBF0FBECDBF58 +:1030A000DF91CF911F910F91FF90EF90DF90CF9024 +:1030B000BF90AF909F908F907F906F905F904F9058 +:1030C0003F902F9008956D3019F329813A813A8706 +:1030D0002987D9011C96AD90BC90B0E8AB16B1041D +:1030E0000CF07BC0F901C684D784F0E4CF16D1047C +:1030F0000CF073C0D90152966C90529745E095013F +:10310000649E200D311D1124121613060CF065C0AB +:10311000262C312C910153E0220F331F5A95E1F7F1 +:103120002C0D3D1D121613060CF057C05196BC9184 +:10313000BB83E985FA85F089FC83649FB001112483 +:103140009B01215E324E3A832983712CE981FA81F9 +:103150008491F5E07F1201C080E0460138E0532EF3 +:10316000282F30E03E832D834C8080FF4B80411020 +:1031700004C03B818C813817E1F010E000E00615B7 +:10318000C0F4D501A00FB11FB887AF83F12CE12C9B +:10319000E61460F4B701680D791D442D8F81988580 +:1031A0000E944513BFEFEB1AFB0AF2CF0F5F1F4FD0 +:1031B000E6CF8D819E81959587955A94820C931CBC +:1031C0005110CECF7394E981FA813196FA83E98365 +:1031D000A20CB31CF6E07F12B9CFA985BA8552962E +:1031E0002C915297422F50E01C968D919C91B6E005 +:1031F0002B9F800D911D1124E985FA859587848781 +:103200002389222309F444CF6AEF64039001659F68 +:10321000300D112420583F4F281739070CF038CFB4 +:10322000DF010190F081E02D0190F081E02D6AE056 +:10323000CD0109952DCF0F931F93CF93DF938C0171 +:10324000D0E0C0E0F801EC0FFD1F6491662341F06F +:103250008DEF97E00E941918892B11F02196F2CF7B +:10326000CE01DF91CF911F910F910895682F8DEFBF +:1032700097E00C941918089590E080E008958091EB +:103280007A00806980937A008EE480937C0061E00C +:1032900070E080E090E00E942D1783B7817F82600C +:1032A00083BF80E130E020E093B7916093BF8895C1 +:1032B00093B79E7F93BF90917A0096FDFCCF40918B +:1032C000780050917900240F351F815069F7809163 +:1032D0007A008F7780937A0084E0369527958A95D7 +:1032E000E1F750E040E064EB7BE281E190E00E9496 +:1032F0008636C901089588EC80937C0080917A001D +:10330000806880937A0065E070E080E090E00E9441 +:103310002D1780917A00806480937A0080917A00E2 +:1033200086FDFCCF60917800709179006B537140FD +:1033300090E080E00E94513526EF38E24CE95FE3EF +:103340000E945637089590917A00906990937A0080 +:103350008E50806480937C0083B7817F826083BFBE +:1033600020E290E080E033B7316033BF889533B717 +:103370003E7F33BF30917A0036FDFCCF409178001C +:1033800050917900840F951F215069F720917A00A0 +:103390002F7720937A0025E0969587952A95E1F777 +:1033A00008958FE00E94A319A091E302B091E40276 +:1033B0009C010E94DA360E94533528E539E743E341 +:1033C00053E40E9456370E94CF37CB010895809175 +:1033D000EC02882369F086E00E941816892B41F0E0 +:1033E0006AE070E080E090E00E942D171092EC02FD +:1033F00008956F927F928F929F92AF92BF92CF92D9 +:10340000DF92EF92FF920F93CF93DF937C01C62F51 +:1034100001E020E340E370E060E00E948C1357017C +:1034200023E0A20EB11C00E02AE24AE263E070E071 +:10343000C5010E948C1370E060E0C7010E94301447 +:1034400067013FE2C30ED11C70E060E0C6010E943C +:1034500030146FE270E0C7010E9430146FE270E038 +:10346000C6010E943014EC2FF0E0EE0FFF1FE15771 +:10347000FE4F8080918053E0E52EF12CD12CC12CA1 +:1034800060E8662E712CD0E0C0E0FE0133E0F595D7 +:10349000E7953A95E1F7EC0DFD1DE80DF91DE49176 +:1034A000CE0187709927930102C0359527958A959B +:1034B000E2F7C901F0E0E223F923EF2B69F0CE0136 +:1034C000880F991F8C0F9D1F01E023E043E0B70197 +:1034D0008A0D9B1D0E948C132196CE30D105A9F632 +:1034E00032E0C30ED11C83E0E80EF11C2DE2E2169F +:1034F000F10449F6DF91CF910F91FF90EF90DF90AB +:10350000CF90BF90AF909F908F907F906F900895D5 +:103510000F931F93CF9380914D01882399F0CFEFA4 +:103520000FEE11E061E085E00E944116C8010197AD +:10353000F1F760E085E00E944116C8010197F1F7BC +:10354000C15081F7CF911F910F9108952F923F9213 +:103550004F925F926F927F928F929F92AF92BF92A3 +:10356000CF92DF92EF92FF920F931F93CF93DF934F +:1035700010E000E0D0E0C0E03EE3E32EF12C40ECB0 +:10358000C42ED12CAA24A394B12C60E2662E712CF7 +:1035900070E4272E312C4C2E86E00E94181621E074 +:1035A000892B09F020E02093EC02F0921703E092BF +:1035B0001603D0921503C0921403B0921303A09285 +:1035C000120382E890E0909311038093100380919E +:1035D00010039091110395958795582E9FE15912EC +:1035E00043C0F0921703E0921603D0921503C092E5 +:1035F0001403B0921303A0921203EEEBF0E0F093E9 +:103600001103E09310039FE5592E0E94571482E0A6 +:1036100080930F0810930A0800930908E0E3F0E094 +:10362000F0930C08E0930B088EE50E943619109277 +:103630000A081092090870920C0860920B08912CED +:10364000812C841438F580910A03F40196E0989F48 +:10365000E00DF11D1124E15BFE4F80810E943619BF +:10366000EFEF8E1A9E0AEDCFF0E65F12CECFF0920A +:103670001703E0921603D0921503C0921403B09280 +:103680001303A0921203309211032092100380E2E0 +:10369000582EBBCF10930A080093090870920C08AB +:1036A00060920B08852D0E9436190E94E7190E942E +:1036B000871786E00E941816892B09F088CF809121 +:1036C000EC02811184CF80900A03F6E08F9E4001C6 +:1036D0001124C401815B9E4F4C01FC01EC0FFD1FC6 +:1036E00050820E94881A6AE070E080E090E00E94B8 +:1036F0002D172196005F1F4FC530D10509F04BCF24 +:10370000F4011582DF91CF911F910F91FF90EF90FF +:10371000DF90CF90BF90AF909F908F907F906F90F1 +:103720005F904F903F902F9008953F924F925F92FD +:103730006F927F928F929F92AF92BF92CF92DF92C1 +:10374000EF92FF920F931F93CF93DF93CDB7DEB726 +:103750002E970FB6F894DEBF0FBECDBF80910D033C +:10376000882309F4A5C11092B5071092B6071092EC +:10377000B7071092B8078090B5079090B607A09051 +:10378000B707B090B807C090FE02D090FF02E0905B +:103790000003F0900103A7019601C501B4010E9446 +:1037A000E9362B013C0120E030E0A9010E94FE3700 +:1037B00018160CF0A0C1C301B2010E94CF3780914E +:1037C0004801882309F4B8C1C092BD07D092BE0752 +:1037D000E092BF07F092C007E12CF12C00EA10E460 +:1037E00020E030E040E450E46E31710540F0E12C1F +:1037F000F12C00E81FE320E030E040E05FE360E010 +:1038000070E080E391E40E9469128091FB078823B5 +:1038100009F42AC10E945F176D837E838F83988786 +:103820008091E3079091E407A091E507B091E60746 +:103830004D815E816F817885481B590B6A0B7B0B2C +:103840008091EF079091F007A091F107B091F207F6 +:10385000481759076A077B0708F406C1E091DD079E +:10386000F091DE0780819181A281B38189839A835F +:10387000AB83BC83E091E107F091E2079C01AD01CD +:1038800060817181828193810E94E9364B015C01E4 +:103890002091EB073091EC074091ED075091EE0736 +:1038A00069817A818B819C810E94E9366B017C0160 +:1038B0002091D1073091D2074091D3075091D4077E +:1038C000C501B4010E94B2352091E7073091E807A5 +:1038D0004091E9075091EA070E94EA362B013C012A +:1038E0004092E7075092E8076092E9077092EA0772 +:1038F0003090FC0731101AC02091CD073091CE07CF +:103900004091CF075091D007C701B6010E94B23550 +:103910009B01AC01C301B2010E94E9366093E70745 +:103920007093E8078093E9079093EA074090E707D0 +:103930005090E8076090E9077090EA071091F70748 +:103940009091F8079E87A091F907AD870091FA073B +:10395000212F392F4A2F502FC301B2010E94FE3769 +:1039600018160CF0CCC0812F9E85AD85B02F8093AA +:10397000E7079093E807A093E907B093EA0733209D +:1039800009F4D6C02091CD073091CE074091CF07E2 +:103990005091D007C501B4010E94B2354B015C01C2 +:1039A0002091D5073091D6074091D7075091D8077D +:1039B000C701B6010E94B2359B01AC016091E707D7 +:1039C0007091E8078091E9079091EA070E94E93633 +:1039D000A50194010E94EA366B017C019B01AC01B8 +:1039E000612F7E858D85902F0E944C3587FD18C0F4 +:1039F0001091F3079091F4079E87A091F507AD878A +:103A00000091F607212F392F4A2F502FB601C701F9 +:103A10000E944C3587FD04C01C2DDE86ED860F2DDF +:103A2000E091DF07F091E007812F9E85AD85B02FF3 +:103A300080839183A283B38389819A81AB81BC8186 +:103A40008093EB079093EC07A093ED07B093EE07FC +:103A50008D819E81AF81B8858093E3079093E407C1 +:103A6000A093E507B093E6076091B9077091BA0794 +:103A70008091BB079091BC070E94C83789E02E96C1 +:103A80000FB6F894DEBF0FBECDBFDF91CF911F916F +:103A90000F91FF90EF90DF90CF90BF90AF909F90ED +:103AA0008F907F906F905F904F903F900C94AB16EB +:103AB00080910C03609144017091450181110EC009 +:103AC0008091FC029091FD0220910B03BC01222306 +:103AD00029F060914301680F792F711D90E080E01B +:103AE0000E9451356093B5077093B6078093B7076E +:103AF0009093B80740CEC301B20190585ECE80913A +:103B0000F3079091F407A091F507B091F607898724 +:103B10009A87AB87BC879C01AD01C301B2010E94AB +:103B20004C3587FF2CCF89859A85AB85BC851FCF07 +:103B3000812C912C540134CF20E030E040E05FE351 +:103B4000C701B6010E94EA369B01AC01C501B40170 +:103B50000E94FE3718164CF41092B9071092BA075B +:103B60001092BB071092BC077FCF80E090E0AFE7D8 +:103B7000B3E48093B9079093BA07A093BB07B093BF +:103B8000BC0772CF4F925F926F927F928F929F92FB +:103B9000AF92BF92CF92DF92EF92FF92CF93DF93DB +:103BA0008090E5029090E602A090E702B090E802D3 +:103BB000C0910A03D0E0C501B4010E94C8376B016F +:103BC0007C0120E030E048E453E4C501B4010E94E8 +:103BD0004C3593E0CC0FDD1F9A95E1F7CE5FDE4FB9 +:103BE00087FF31C02881398150E040E025513109FB +:103BF00041095109C701B6010E94E83928EC30E0BB +:103C000040E050E00E948636CA01B9016B5E7F4FEA +:103C10008F4F9F4F0E9453356093FE027093FF02B7 +:103C20008093000390930103DF91CF91FF90EF9079 +:103C3000DF90CF90BF90AF909F908F907F906F90CC +:103C40005F904F9008954A805B80712C612C20E03A +:103C500030E04CE853E4C501B4010E944C3587FFC5 +:103C60001FC088809980B12CA12CA7019601285CE7 +:103C7000310941095109C301B201681979098A0959 +:103C80009B090E94E83920E530E040E050E00E94C6 +:103C90008636CA01B901680D791D8A1D9B1DBACFF0 +:103CA0002C813D8150E040E024193509460957092F +:103CB000C701B60168517140810991090E94E83934 +:103CC00020E530E040E050E00E948636CA01B901AC +:103CD000640D751D861D971D9DCFFC010190002070 +:103CE000E9F73197AF01481B590BBC018DEF97E005 +:103CF0000C94E2148F929F92AF92BF920F931F93F6 +:103D0000CF93DF93CDB7DEB7A1970FB6F894DEBFA0 +:103D10000FBECDBF19A2423008F44AE08E010F5DFC +:103D20001F4F842E912CB12CA12CA50194010E942F +:103D3000B836E62FB901CA01EA30F4F4E05DD801E3 +:103D4000EE938D01232B242B252B79F790E080E037 +:103D5000109719F0CD010E946D1EA1960FB6F89430 +:103D6000DEBF0FBECDBFDF91CF911F910F91BF90EE +:103D7000AF909F908F900895E95CE1CFCF92DF9252 +:103D8000EF92FF92CF93DF9397FF19C06B017C01F5 +:103D90008DE20E943619EC0166277727CB016C195A +:103DA0007D098E099F094AE00E947A1E8C0F9D1F93 +:103DB000DF91CF91FF90EF90DF90CF9008954AE090 +:103DC000DF91CF91FF90EF90DF90CF900C947A1E0F +:103DD0004F925F926F927F928F929F92AF92BF921B +:103DE000CF92DF92EF92FF920F931F93CF936B01CD +:103DF0007C01742EAC019B010E945B38882399F0F2 +:103E000083EB92E0CF911F910F91FF90EF90DF90A5 +:103E1000CF90BF90AF909F908F907F906F905F906A +:103E20004F900C946D1E46015701E894B7F82FEFA0 +:103E30003FEF4FE75FE7C501B4010E945B38811196 +:103E40000DC02FEF3FEF4FE75FE7C501B4010E94C0 +:103E50004C3518161CF487EB92E0D4CF2FEF3FEFD0 +:103E60004FE75FE4C701B6010E94FE3718161CF445 +:103E70008BEB92E0C7CF2FEF3FEF4FE75FECC7012F +:103E8000B6010E944C3587FDF3CF20E030E0A90158 +:103E9000C701B6010E944C3510E000E087FF08C062 +:103EA0008DE20E9436198C01F7FAF094F7F8F0943D +:103EB000C0E060E070E080E09FE37C1641F020E02D +:103EC00030E040E251E40E945637CF5FF6CFA701C1 +:103ED00096010E94EA362B013C010E94CF374B012C +:103EE0005C014AE00E947A1E7C01E00EF11ECC23A8 +:103EF000B1F1C501B4010E9451359B01AC01C30170 +:103F0000B2010E94E9364B015C018EE20E94361933 +:103F1000E80EF91EC15018F120E030E040E251E413 +:103F2000C501B4010E94B2352B013C010E94CF377C +:103F30004B01B12CA12C4AE0C501B4010E947A1EAC +:103F4000E80EF91EC501B4010E9451359B01AC0178 +:103F5000C301B2010E94E9364B015C01DBCFC7010E +:103F6000CF911F910F91FF90EF90DF90CF90BF9076 +:103F7000AF909F908F907F906F905F904F9008953B +:103F8000CF92DF92EF92FF920F931F93CF93DF9325 +:103F9000C82F81E0DC2FD827D0930E08C0930D08DE +:103FA00080930F080C2F2EE046E661E370E081E07D +:103FB00090E00E94E81720910E0330910F03253FF7 +:103FC00081E03807B8F4A4E6B0E00E94DA3624EFC6 +:103FD00031E040E050E00E948636BA01A9014E5F10 +:103FE0005F4F6F4F7F4F2EE061E370E081E090E024 +:103FF0000E948C136091B5077091B6078091B70746 +:104000009091B8070E94C8379B01AC01A4E6B0E0CC +:104010000E94A53634EFC32EDD24D394E12CF12C7D +:10402000A70196010E948636DA01C9010296A11DF8 +:10403000B11D02970C2F2DE043E062E370E00E9477 +:104040008C136091B5077091B6078091B707909176 +:10405000B8070E94C8379B01AC01A4E6B0E00E94FB +:10406000A536A70196010E948636DA01C90102969B +:10407000A11DB11D039724E045E06CE370E00E94B0 +:104080008C136091B5077091B6078091B707909136 +:10409000B8070E94C8379B01AC01A4E6B0E00E94BB +:1040A000A536A70196010E94863689019A010E5F06 +:1040B0001F4F2F4F3F4F0150110941E3E42EF12CC8 +:1040C0004D2FB701C8010E9445138FEFE81AF80A77 +:1040D0008DE3E816F104A1F76091B5077091B6077A +:1040E0008091B7079091B8070E94C8379B01AC0137 +:1040F000A4E6B0E00E94A53624EF31E040E050E0B5 +:104100000E948636DA01C9010296A11DB11D0397EE +:10411000ED2E04E025E047E552E16BE370E00E94FC +:10412000AE130C2F2EE047E161E370E088E690E0EB +:104130000E94E8176091B9077091BA078091BB0798 +:104140009091BC070E94C8379B01AC012F5F3109D9 +:1041500041095109A7E1B0E00E94A536CC24C394DF +:10416000DD24DA94ED2CFD2CA70196010E94863601 +:10417000422F2EE061E370E088E690E00E948C130D +:10418000C0930E08D0930D0882E090E090930A0847 +:104190008093090807E310E010930C0800930B08C4 +:1041A0006091B5077091B6078091B7079091B807F5 +:1041B00040E00E94E81E88EF0E94361985E592E1F2 +:1041C0000E941B1989E690E090930A0880930908E1 +:1041D00010930C0800930B086091B9077091BA070F +:1041E0008091BB079091BC070E94C8379B01AC012E +:1041F0002F5F310941095109A4E6B0E00E94A536BC +:10420000A70196010E948636CA01B9010E94BE1E0E +:1042100083E592E10E941B19D0930E08C0930D080C +:10422000DF91CF911F910F91FF90EF90DF90CF9092 +:1042300008956F927F928F929F92AF92BF92CF928A +:10424000DF92EF92FF920F931F93CF93DF93B09083 +:104250000A0377247394B11001C0712C809142013C +:104260008150990B1092170310921603880F991F13 +:10427000909315038093140381E090E090931303CF +:10428000809312038B2D90E0880F991F9093110358 +:104290008093100386E00E94181621E0892B09F014 +:1042A00020E02093EC02FF24F39472E0972EE6E0E6 +:1042B0008E2EFCE0CF2ED12C0E945714C0911003FB +:1042C000D0911103D595C795EC2E8E011127C80109 +:1042D000870D911D77FC9A958B199109712C97FD8B +:1042E00006C08330910514F082E090E0782EF092C1 +:1042F0000E0810920D0890920F0810920A08109262 +:10430000090810920C0810920B0884E19DE10E94AC +:104310001B1910920E08F0920D0810920A081092C4 +:104320000908A72C072C000CBB08C501019654E016 +:10433000880F991F5A95E1F790930C0880930B080A +:1043400082E19DE10E941B196C2E671890E080E0CD +:1043500098012A193B095901209142018C010F5FF4 +:104360001F4F6216D0F4D0920A08C0920908980133 +:1043700044E0220F331F4A95E1F730930C08209355 +:104380000B088A0D9B1D889E9001899E300D11247B +:10439000C901815B9E4F0E946D1EC801639403306A +:1043A0001105D1F60E94E7190E94871786E00E9446 +:1043B0001816892BB9F48091EC02811113C00E9468 +:1043C000881AE0920A03DF91CF911F910F91FF901D +:1043D000EF90DF90CF90BF90AF909F908F907F90A5 +:1043E0006F900895BC2E68CF0E94263A1F93CF93FA +:1043F000DF93EC01162F0E947036181739F0612FE9 +:10440000CE01DF91CF911F910C947836DF91CF913F +:104410001F910895AF92BF92CF92DF92EF92FF92D9 +:104420000F931F93CF93DF936091470182E090E059 +:104430000E94F6216091460183E090E00E94F621FF +:104440006091450184E090E00E94F6216091440172 +:1044500085E090E00E94F6216091430186E090E0C3 +:104460000E94F62160914B0187E090E00E94F621C6 +:1044700060914A0188E090E00E94F6216091490134 +:1044800089E090E00E94F62160917F018AE090E04F +:104490000E94F621609148018BE090E00E94F62195 +:1044A00060914D018CE090E00E94F62160910A033A +:1044B0008DE090E00E94F621609142018EE090E054 +:1044C0000E94F62160914E018FE090E00E94F6215B +:1044D0006091E90280E190E00E94F621609107037B +:1044E00081E190E00E94F6216091EB0282E190E090 +:1044F0000E94F6216091EA0283E190E00E94F62199 +:1045000084E1E82EF12C10E006E0809142011817BA +:10451000B8F5109F60011124D0E0C0E0FE01EC0D61 +:10452000FD1DE15BFE4F6081C7018C0F9D1F0E9446 +:10453000F6212196C630D10589F7670186E0C80EBD +:10454000D11C88E0189FE0011124CE5FDE4F8EE081 +:10455000E80EF11C69812296C6010E94F6215601DF +:1045600082E0A80EB11CFE0132976081C60101965F +:104570000E94F6216501AE14BF0461F71F5FC5CF2D +:10458000DF91CF911F910F91FF90EF90DF90CF902F +:10459000BF90AF9008958F929F92AF92BF92CF92AB +:1045A000DF92EF92FF92CF936FEF70E089E00E946D +:1045B000AB168BEA94E00197F1F78EE00E94A31905 +:1045C0007C018AE00E9418169091C202981729F087 +:1045D00091E0909302038093C202809101019FEFCA +:1045E000980F90930101811106C00E94D1199093F8 +:1045F0000903809308036091B9077091BA0780910D +:10460000BB079091BC070E94C83789E00E94AB1697 +:104610008090E5029090E602A090E702B090E80258 +:10462000B70190E080E00E945135A50194010E94FD +:10463000E9362DEC3CEC4CE45DE30E94B235A5017B +:1046400094010E94EA366093E5027093E60280933B +:10465000E7029093E8020E94C21D60910E037091E0 +:104660000F0390E080E00E9451356B017C012091A6 +:10467000B5073091B6074091B7075091B8070E942F +:104680004C358111B6C02091FE023091FF0240915D +:10469000000350910103C701B6010E94E9366B0186 +:1046A0007C0120E030E0A9010E94FE3718160CF0D2 +:1046B00096C020E030E040EA50E4C701B6010E9415 +:1046C000FE3718160CF495C06091FC027091FD0243 +:1046D00090E080E00E9451352091FE023091FF026F +:1046E00040910003509101030E94E9366B017C0167 +:1046F00020E030E0A9010E94FE3718160CF088C0B7 +:10470000C701B6010E94CF376530710508F084C03B +:1047100080918001811105C080914C0181110E941E +:10472000881A81E08093800110924C0180910E03E1 +:1047300090910F03853F21E0920710F01092000145 +:1047400020910001211141C0843F9140F0F56FEFAD +:1047500070E089E00E94AB160E94881AC1E0C09305 +:1047600000010E9419210E940A22C09302038EE0D8 +:104770000E94A319BC0190E080E00E945135609333 +:10478000E5027093E6028093E7029093E8021092AC +:10479000F6028091FC029091FD022CE231E0309310 +:1047A00017032093160320E233E030931503209380 +:1047B00014032AE030E03093130320931203880F90 +:1047C000991F9093110380931003CF91FF90EF9066 +:1047D000DF90CF90BF90AF909F908F90089520E092 +:1047E00030E040EA50ECC701B6010E944C3587FF2B +:1047F0006BCF6091FE027091FF0280910003909157 +:1048000001030E94CF3770930F0360930E035CCFB8 +:10481000C701B601905876CF1092800187CF0C94D3 +:1048200070362F923F924F925F926F927F928F924B +:104830009F92AF92BF92CF92DF92EF92FF920F932F +:104840001F93CF93DF938C0186E080930F0881E064 +:1048500080930E0810920D086091D5027091D602D7 +:10486000072E000C880B990B0E9453352B013C013D +:104870004FECC42E42E0D42E7601C2E0D0E05AE0E4 +:10488000A52EB12CBE010D2E000C880B990B0E9499 +:1048900053359B01AC0160E070E080E291E40E943E +:1048A00003389B01AC01C301B2010E9456370E943C +:1048B000C837CB01B5010E94F839F7018193919374 +:1048C0007F012197F8F61093D6020093D502C3EC2E +:1048D000D2E094E0E92EF12C22E0822E912C3AE0F5 +:1048E000232E312CB401092C000C880B990B0E944B +:1048F00053359B01AC0160E070E080E291E40E94DE +:1049000003382B013C016091D5027091D602072E2D +:10491000000C880B990B0E945335A30192010E9451 +:1049200056370E94C837CB01B1010E94F839F60111 +:1049300020813181821B930BF2E3F89FB001F99F34 +:10494000700D1124072E000C880B990B0E94533513 +:10495000288139814A815B810E94EA362B013C0122 +:1049600020E030E0A9010E944C3581117CC04882D2 +:1049700059826A827B8201E022E346E270E060E0D5 +:10498000C70104970E948C138EECA82EBB24BA9406 +:104990000FEF1FEF288139814A815B8160E070E071 +:1049A00080E890E40E94E9362B013C01B5010B2C14 +:1049B000000C880B990B0E9453359B01AC01C3017D +:1049C000B2010E94EA360E94C837F0920A08E092CB +:1049D000090870930C0860930B08F60160817181DF +:1049E000600F711F072E000C880B990B0E94BE1ED2 +:1049F0000F5F1F4FF2E3AF0EB11C0230110551F6ED +:104A0000249621E0821A910882E0C80ED11CECE2C3 +:104A1000EE0EF11CF8E8EF16F10409F063CF00E0A8 +:104A200022E040E870E060E090E080E00E948C13BB +:104A30002DE040E863E370E090E080E00E948C139A +:104A4000DF91CF911F910F91FF90EF90DF90CF906A +:104A5000BF90AF909F908F907F906F905F904F909E +:104A60003F902F900895C301B20190582DEC3CEC7B +:104A70004CE45FE30E94B235A30192010E94EA3642 +:104A8000688379838A839B8376CF4F925F926F92FC +:104A90007F928F929F92AF92BF92CF92DF92EF92CE +:104AA000FF920F931F93CF93DF93CDB7DEB72B9772 +:104AB0000FB6F894DEBF0FBECDBF90914E01E82F28 +:104AC000F0E09F01220F331F911126C0F901E55D2F +:104AD000FD4F40815181EE24E39400E124E260E344 +:104AE00070E080E390E00E94AE132B960FB6F8942E +:104AF000DEBF0FBECDBFDF91CF911F910F91FF9011 +:104B0000EF90DF90CF90BF90AF909F908F907F906D +:104B10006F905F904F900895923009F079C0E356FE +:104B2000F34E4490F901E352FE4FA080B180F12C86 +:104B3000E12C04E310E393E0592E27E0622EE41405 +:104B4000A0F6F501EE0DFF1D449180E1840F833046 +:104B500008F45CC081EF7816D1F082EF7816C1F1CD +:104B6000403F90F4193710F0085F10E088E0489F4C +:104B7000A0011124435E5A4E602F70E028E0812F7F +:104B800090E00E946A14185F80EF782E1DC04E39A5 +:104B9000D8F41D3710F0085F10E0C02ED12C812E04 +:104BA000912C459DA00111244D5B5C4E23E0B60184 +:104BB000C4010E946A1421E042E453E1B601C40139 +:104BC00003960E946A141C5F8FEFE81AF80AB7CFA9 +:104BD0004132D0F7193710F0085F10E0C02ED12C09 +:104BE000812E912C469DA0011124455A5D4E27E04F +:104BF000B601C4010E946A1421E042E453E1B60107 +:104C0000C40107960E946A14185FDECF742EDCCFB1 +:104C100080E390E090930A088093090881E390E094 +:104C200090930C0880930B0881E080930F08F901A2 +:104C3000EC53F34E65917491CE0101960E94453577 +:104C4000CE0101960E946D1E50CFCF93C82F86E0F3 +:104C50000E94181621E0892B09F020E02093EC0235 +:104C60000E94571480911003909111039595879598 +:104C70000E9411248C2F0E9445250E9487170E94B4 +:104C8000E71986E00E941816892B51F78091EC02F3 +:104C90008111E6CF0E94881A8091D5029091D602A8 +:104CA000CF910895109217031092160328E037E071 +:104CB000309315032093140324E630E0309313035C +:104CC00020931203880F991F909311038093100370 +:104CD00087E00E9425269C01220F331F3093170383 +:104CE00020931603865A9F4F880F991F90931503A0 +:104CF000809314038AE090E090931303809312034F +:104D0000309311032093100387E00E9425269C0115 +:104D1000220F331F30931703209316030996880F31 +:104D2000991F909315038093140381E090E0909372 +:104D3000130380931203309311032093100387E031 +:104D40000C9425262F923F924F925F926F927F9202 +:104D50008F929F92AF92BF92CF92DF92EF92FF928B +:104D60000F931F93CF93DF93182FE091ED02F0E0A4 +:104D7000EB57FE4F80818150990B109217031092D0 +:104D80001603880F991F909315038093140381E0F5 +:104D900090E09093130380931203812F90E0880F8B +:104DA000991F909311038093100386E00E941816B8 +:104DB00021E0892B09F020E02093EC0210920E08EC +:104DC00081E080930D0838E3632EE0901003F090AB +:104DD0001103F594E794AE2C6701DD249601211BA5 +:104DE0003109629EC001639E900D1124C80FD91F26 +:104DF000209709F1662777276C1B7D0B072E000C87 +:104E0000880B990B0E9453352AE939E949E15FE3A0 +:104E10000E94B2351B012C01BE01DD0F880B990BDE +:104E20000E9453359B01AC01C201B1010E94EA36D8 +:104E30000E94C837EB010E945714860102501109E5 +:104E40004E0185E0B82E93E0792E7A0CC090ED02E9 +:104E5000D12C17FD20C0F601EB57FE4F8081801743 +:104E60001106C9F0C4F0E5E8F1E070E060E0CF01C0 +:104E7000855891408C159D0534F48191680F711D02 +:104E8000F6CF1E2DA2CF872D8B19680FC401885431 +:104E900091090E94F919BA940F5F1F4F88E3880E99 +:104EA000911CB110D3CFE5E8F1E090E080E09F01E4 +:104EB000255831402C153D0524F42191820F911D78 +:104EC000F6CF8E0D0E9445250E9487170E94E71994 +:104ED00086E00E941816892BA1F68091EC028111C0 +:104EE000D0CF0E94881A8A2DDF91CF911F910F9108 +:104EF000FF90EF90DF90CF90BF90AF909F908F90FA +:104F00007F906F905F904F903F902F9008951F92E9 +:104F10000F920FB60F9211242F933F934F935F93ED +:104F20006F937F938F939F93AF93BF93EF93FF9371 +:104F300088E197E00E946015FF91EF91BF91AF91DA +:104F40009F918F917F916F915F914F913F912F91A1 +:104F50000F900FBE0F901F9018951F920F920FB6D3 +:104F60000F9211242F938F939F93EF93FF93E091D0 +:104F70002807F09129078081E0912E07F0912F07F3 +:104F800082FD1BC09081809131078F5F8F732091CC +:104F90003207821741F0E0913107F0E0E85EF84F08 +:104FA000958F80933107FF91EF919F918F912F9172 +:104FB0000F900FBE0F901F9018958081F4CF1F9215 +:104FC0000F920FB60F9211242F933F938F939F93BD +:104FD000AF93BF938091D8029091D902A091DA0249 +:104FE000B091DB023091D70223E0230F2D3758F523 +:104FF0000196A11DB11D2093D7028093D8029093F2 +:10500000D902A093DA02B093DB028091DC02909186 +:10501000DD02A091DE02B091DF020196A11DB11D5B +:105020008093DC029093DD02A093DE02B093DF0256 +:10503000BF91AF919F918F913F912F910F900FBE94 +:105040000F901F90189526E8230F0296A11DB11D01 +:10505000D2CF1F920F920FB60F9211242F933F932E +:105060004F935F936F937F938F939F93EF93FF93F0 +:1050700083B1817029B19091E202981709F49DC023 +:1050800030E0220F232F221F330B922F8093E20256 +:105090004091E102241709F490C02093E10220918D +:1050A000120330911303981719F0319521953109A6 +:1050B00040911003509111036091160370911703F2 +:1050C000240F351F261737070CF48BC020911203CD +:1050D00030911303981719F03195219531094091BA +:1050E0001003509111036091140370911503240F64 +:1050F000351F621773070CF46FC040911203509173 +:105100001303981719F051954195510920911003F7 +:1051100030911103240F351F309311032093100396 +:1051200041E0981340E02091E002421709F440C0AA +:105130002091120330911303981719F0319521959E +:1051400031096091100370911103E0911603F09101 +:105150001703260F371F2E173F070CF44CC0209162 +:10516000120330911303981719F0319521953109E5 +:105170006091100370911103E0911403F0911503F5 +:10518000260F371FE217F3078CF12091120330919D +:105190001303981719F03195219531098091100367 +:1051A00090911103820F931F90931103809310032A +:1051B0004093E00281E080930203FF91EF919F9181 +:1051C0008F917F916F915F914F913F912F910F90B0 +:1051D0000FBE0F901F901895209114033091150366 +:1051E0009BCF209116033091170396CF8091140323 +:1051F00090911503D9CF8091160390911703D4CFC6 +:1052000018950F931F93CF93DF93E8E1F7E0138294 +:10521000128288EE93E0A0E0B0E084839583A683B9 +:10522000B78389E992E09183808385EC90E095874C +:10523000848784EC90E09787868780EC90E0918B60 +:10524000808B81EC90E0938B828B82EC90E0958B4D +:10525000848B86EC90E0978B868B118E128E138E4A +:10526000148EEDEFF7E0138212821682178280E12E +:1052700080871582148212868BEA92E09183808364 +:10528000158614861786168681E0808B118A828B9C +:10529000138AC1ECD7E029EB37E03F8F2E8F2DEB3F +:1052A00037E03D8F2C8F25EB37E039A328A31AAECA +:1052B0001AAA1BAA1CAA1DAA40E050E06FE773E4DB +:1052C0004EAB5FAB68AF79AF44E650E060E070E0B2 +:1052D0004EA75FA768AB79AB21E030E0398F288F0C +:1052E0003B8F2A8F8BAF80E090E0A0E3B1E488830E +:1052F0009983AA83BB8380E090E0A0E0BFE38C8326 +:105300009D83AE83BF8380E090E0A0E8BFE3888701 +:105310009987AA87BB8780E090E0A0E3B1EC8C87F7 +:105320009D87AE87BF878DEC9CECACE4BDEB888B92 +:10533000998BAA8BBB8B80E090E0A0E2B1EC8C8BC8 +:105340009D8BAE8BBF8B0E945F170EA51FA528A952 +:1053500039A9601B710B820B930B6AA37BA38CA3EF +:105360009DA3DF91CF911F910F910895CF93DF936C +:10537000CDB7DEB72C970FB6F894DEBF0FBECDBF0A +:10538000789484B5826084BD84B5816084BD85B520 +:10539000826085BD85B5816085BD80916E0081602C +:1053A00080936E00109281008091810082608093D2 +:1053B00081008091810081608093810080918000D4 +:1053C0008160809380008091B10084608093B100FF +:1053D0008091B00081608093B00080917A008460F9 +:1053E00080937A0080917A00826080937A00809125 +:1053F0007A00816080937A0080917A00806880933F +:105400007A001092C1001092B90088E48093B8002D +:105410000E947D1780E00E94731709E712E2F801ED +:1054200084910E9473170F5F1F4FF2E208391F0724 +:10543000B1F70E946B1711E01093B8000E94871714 +:1054400081E28093050860E08EE00E946F1660E0C4 +:105450008FE00E946F1661E085E00E946F1661E0A8 +:1054600089E00E946F1662E087E00E946F1662E09A +:1054700088E00E946F1662E086E00E946F1662E08C +:105480008AE00E946F166FEF70E089E00E94AB1611 +:1054900060E085E00E94411680917A0087608093E9 +:1054A0007A0080917A00886080937A0078941093D3 +:1054B0006B00109368001BBB90E080E00E940F24FB +:1054C000182F81E090E00E940F24912F8F31984097 +:1054D00009F0C9C082E090E00E940F24182F83E0F9 +:1054E00090E00E940F24912F9093470180934601F2 +:1054F00084E090E00E940F24182F85E090E00E9445 +:105500000F24912F909345018093440186E090E011 +:105510000E940F248093430187E090E00E940F24B3 +:1055200080934B0188E090E00E940F2480934A0111 +:1055300089E090E00E940F24809349018AE090E086 +:105540000E940F2480937F018BE090E00E940F2443 +:1055500091E0811101C090E0909348018CE090E0CF +:105560000E940F2491E0811101C090E090934D01C1 +:105570008DE090E00E940F2480930A038EE090E07B +:105580000E940F24282E809342018FE090E00E9419 +:105590000F2480934E0180E190E00E940F2491E05F +:1055A000811101C090E09093E90281E190E00E94B6 +:1055B0000F248093070382E190E00E940F24182FAC +:1055C00083E190E00E940F24912F9093EB0280934F +:1055D000EA0252E0852E51E0952E6FE4A62E61E09E +:1055E000B62E74E1E72EF12C312C231409F447C0B8 +:1055F00010E000E0C701800F911F0E940F24F50109 +:10560000E00FF11F80830F5F1F4F0630110591F7E8 +:10561000670136E0C30ED11C4EE0E40EF11C3401EC +:10562000C6010E940F24082F10E0102F0027D3017D +:105630000D931C932601B2E04B0E511CC60101963E +:105640000E940F24082BF301019311933F01620183 +:105650004E145F0429F73394F8E08F0E911C26E076 +:10566000A20EB11CC2CF68E090E080E00E94F6215B +:105670006FE181E090E00E94F6210E940A221091E1 +:10568000E90280EC111101C088EC0E94A41780EAA5 +:10569000111101C081EA0E94A4171092030380E255 +:1056A0008093040380E48093050380E680930603DF +:1056B0008091EA029091EB02892B19F10E94571414 +:1056C00067E088E290E00E94F91987E00E94452592 +:1056D0000E94871768EE73E080E090E00E942D172B +:1056E0000E94881A0E94881A0E94881A90E080E01E +:1056F0000E9452262091EA023091EB028217930712 +:10570000E9F60E943F199093E4028093E3020E941D +:10571000D1199093090380930803009146011091D9 +:1057200047011093FD020093FC028EE00E94A31932 +:10573000BC0190E080E00E9451356093E5027093D7 +:10574000E6028093E7029093E8020E947B190E9490 +:10575000C21D20E030E040EA51E46091FE02709109 +:10576000FF0280910003909101030E94EA366B01D1 +:105770007C01B80190E080E00E9451359B01AC01B2 +:10578000C701B6010E944C3587FF05C070E060E09C +:1057900089E00E94AB161092F3071092F407109262 +:1057A000F5071092F607412C512C3FE7632E33E4A6 +:1057B000732E4092F7075092F8076092F9077092A3 +:1057C000FA07A090DF07B090E0078091FB07D501B2 +:1057D000CD90DD90ED90FC90882311F40C947434FE +:1057E000A3019201C701B6010E94FE37181634F5D5 +:1057F000F50140825182628273828090E707909027 +:10580000E807A090E907B090EA07C090F707D090AA +:10581000F807E090F907F090FA07A7019601C50193 +:10582000B4010E94FE371816CCF4C092E707D0925C +:10583000E807E092E907F092EA0720C020E030E0B4 +:10584000A901C701B6010E944C3587FFD6CFD5010B +:105850001D921D921D921C921397CFCFC090F307FB +:10586000D090F407E090F507F090F607A7019601B5 +:10587000C501B4010E944C3587FDD7CF81E08093EC +:10588000FB0783B181708093E20289B190E0880FB9 +:10589000892F881F990B8093E1022091E202909159 +:1058A000E10281E0291380E08093E0028CE291E044 +:1058B000909317038093160380E293E0909315036F +:1058C000809314038AE090E0909313038093120373 +:1058D000000F111F10931103009310030E945F1714 +:1058E0006093F8027093F9028093FA029093FB029E +:1058F0000E94881A0E94881A209010033090110389 +:10590000F101F595E795FA87E987F093FD02E093B9 +:10591000FC0286E00E941816482E8111A0C08091DA +:10592000F602882309F49BC00E94881A0E945F1720 +:105930006B017C01C092F202D092F302E092F40279 +:10594000F092F50286E00E941816892B59F40E9405 +:105950005F176C197D098E099F09643F71408105AD +:10596000910580F30E945F176C197D098E099F09CC +:10597000643F71408105910508F46DC46FEF70E0DC +:1059800089E00E94AB160E94881A512CAAE06A2E68 +:10599000712C1092ED02852D0E94A226582E39E01E +:1059A000381708F439C0E82FF0E0E752F34D0C94B3 +:1059B0000C3AF52CA22F1C3088309630C730D530E9 +:1059C000F63001310B3120E030E0A901C701B6010A +:1059D0000E944C3587FF52CF1092E7071092E807DC +:1059E0001092E9071092EA0749CFF6E0FF2E81E016 +:1059F0008093ED02852D0E94A226582E42E0841746 +:105A000009F439C2481708F4E9C0882309F413C11E +:105A100051E0851709F412C10E940A2281E08093A7 +:105A20000203E985FA85F093FD02E093FC028CE223 +:105A300091E0909317038093160380E293E0909394 +:105A40001503809314038AE090E0909313038093EE +:105A50001203C1018E7F9093110380931003409233 +:105A6000F60280910B03882309F11091490111235B +:105A7000E9F00E945F17C090EE02D090EF02E09034 +:105A8000F002F090F1026C197D098E099F0928EE51 +:105A900033E040E050E00E94B836211738F0109211 +:105AA0000B030E94881A81E080934C0180910203CD +:105AB0008823F1F180910C03882351F120E030E03C +:105AC00040EA51E46091FE027091FF028091000370 +:105AD000909101030E94EA366B017C016091FC0207 +:105AE0007091FD0290E080E00E9451359B01AC0175 +:105AF000C701B6010E944C3587FF05C070E060E029 +:105B000089E00E94AB160E94881A81E080934C01C4 +:105B10001092020310920C0310920D030E945F1763 +:105B20006093F8027093F9028093FA029093FB025B +:105B30000E945F170091F8021091F9022091FA0279 +:105B40003091FB02601B710B820B930B20E63AEE47 +:105B500040E050E00E94B836122F2093F702809167 +:105B60000C0381110BC080914B01882339F0281759 +:105B700028F081E080930C030E94881A80910D0325 +:105B800081110BC080914A01882339F0181728F041 +:105B900081E080930D030E94881A0E94CB220E940C +:105BA000951B0E945F1780910608F62FF81B8F2F18 +:105BB00090910708992309F464C3F09308081092A0 +:105BC000070880E090E0892B09F496CE0E944C15DE +:105BD000882309F491CE0E9400008ECE63E08617E0 +:105BE00009F44CC184E0581217CF809142018830EB +:105BF00008F0FDCE91E0980F9093420180930A0344 +:105C00000E94A61AE0910A03B8E0EB9FF00111246C +:105C1000EE5FFE4F28ED30E03183208344E351E016 +:105C20005383428386E891E095838483AEE1B0E0BC +:105C3000B783A683DCCE0E941921D9CE8E010F5FD7 +:105C40001F4F612C712C4301639478EEC72E73E0D3 +:105C5000D72EAA24A394B12CEE24E394E0910A0356 +:105C600094E0E99FF0011124C3010197E80FF91FA7 +:105C7000EE0FFF1FEE5FFE4F808191819093FD023A +:105C80008093FC02A8ECB0E0B0931703A093160336 +:105C9000D0921503C0921403B0921303A092120382 +:105CA000880F991F9093110380931003E0924C0189 +:105CB00086E00E94181621E0892B09F020E020934D +:105CC000EC020E945714B2E0B0930F080E94CB225E +:105CD0000E94951B10920A081092090810920C0855 +:105CE00010920B088EEB92E20E941B19C401B301C3 +:105CF0000E94BE1E8FEB92E00E946D1E809180017B +:105D000010920A0810920908882309F48CC0E0E177 +:105D1000F0E0F0930C08E0930B0881EB92E20E9414 +:105D20001B1910920A081092090820E230E0309303 +:105D30000C0820930B088AEA92E20E941B196091DA +:105D400010037091110375956795072E000C880B51 +:105D5000990B0E94BE1E0E94E7190E94871786E0D9 +:105D60000E941816892B09F0ACCF8091EC028111AA +:105D7000A8CF809110039091110395958795D80134 +:105D80008D939D938D010E94881A6AE070E080E0F7 +:105D900090E00E942D17BFEF6B1A7B0A8B0A9B0ABB +:105DA000E4E06E1671048104910409F057CF6FEF9F +:105DB00070E089E00E94AB168BEA94E00197F1F75E +:105DC0000E947B190E94CF373B0178876F83A9809F +:105DD000BA800B811C81C5014E968017910708F08F +:105DE00006CECD80DE80C8014E968C159D0508F04C +:105DF000FECD87E08093ED0280E00E94A2268823FA +:105E000009F4F5CDE0910A0328E0E29FF0011124A6 +:105E1000EE5FFE4FB182A08213830283D582C482DB +:105E200077826682E4CD40E150E050930C084093C5 +:105E30000B0884EA92E20E941B196091E5027091BE +:105E4000E6028091E7029091E8020E94CF3790E04D +:105E500080E04AE00E947A1E10920A081092090817 +:105E600080E290E090930C0880930B0888E992E21E +:105E70000E941B1970CF0E94A61AB9CD87E08093AB +:105E8000ED0280914201813009F4B1CD80E00E94A1 +:105E9000A226882309F4ABCD80910A039091420198 +:105EA000492F4150550B9A018417150639F481503A +:105EB00080930A0391509093420199CDE82FF0E02E +:105EC000E217F307BCF78F9D8001112450E040E0FA +:105ED0006F016FEFC61AD60AB801640F751F615BB8 +:105EE0007E4FDB011696EC901697EC924F5F5F4F5A +:105EF0004630510589F7D60113E0AA0FBB1F1A954A +:105F0000E1F7AE5FBE4F4D915C91119703E0EE0F4C +:105F1000FF1F0A95E1F7EE5FFE4F51834083129613 +:105F20004D915C9113975383428314964D915C91EC +:105F300015975583448316964D915C9157834683FC +:105F40008F5FBCCF82E08093ED0210E0E8E2CE2EBE +:105F5000D12CFCE2AF2EBB24B394A0E28A2EA3E0A6 +:105F60009A2EB4E1EB2EF12C812F0E94A226182F3D +:105F7000813029F130F0823009F441C00E940A22B8 +:105F800008CD8091460190914701B0921703A092ED +:105F9000160390921503809214037092130360927B +:105FA0001203880F991F909311038093100381E1CE +:105FB0000E9425269093470180934601D5CF80917A +:105FC000440190914501D0921703C0921603E0E975 +:105FD000F1E0F0931503E0931403709213036092C1 +:105FE0001203880F991F909311038093100382E18D +:105FF0000E9425269093450180934401B5CF80915E +:10600000430190E0F0921703E092160328EC30E091 +:1060100030931503209314037092130360921203BC +:10602000880F991F909311038093100383E10E94BE +:1060300025268093430198CF83E08093ED02F12CD5 +:1060400001E010E08F2D0E94A226F82E31E0831788 +:1060500009F43FC0831700F142E084138FCF809191 +:10606000490190E0109217031092160348E651E0A0 +:10607000509315034093140370921303609212031C +:10608000880F991F909311038093100387E10E945A +:10609000252680934901D6CF80914B0190E0109244 +:1060A000170310921603ACE3B0E0B0931503A0936E +:1060B00014031093130300931203880F991F9093F6 +:1060C00011038093100385E10E94252680934B01E4 +:1060D000B9CF80914A0190E01092170310921603F5 +:1060E000E8E7F0E0F0931503E093140325E030E0D7 +:1060F0003093130320931203880F991F9093110379 +:106100008093100386E10E94252680934A019ACF4E +:1061100084E08093ED02809148010E94A22691E0E4 +:10612000811101C090E09093480133CC10E0A9E0C8 +:10613000EA2EB5E0DB2EE092ED02812F0E94A2262E +:10614000182F882321F08130E1F000E009C0D092BF +:10615000ED0280917F010E94A22680937F0101E0E1 +:10616000F090E90280ECF11001C088EC0E94A417C5 +:1061700080EAF11001C081EA0E94A4170111DBCF6F +:10618000FDCE8091E90281278093E902E8CF86E085 +:106190008093ED0280914D010E94A22691E0811131 +:1061A00001C090E090934D01F4CB8091070390E003 +:1061B0001092170310921603A4EFB1E0B0931503E9 +:1061C000A093140321E030E03093130320931203D3 +:1061D000880F991F909311038093100386E00E940B +:1061E0002526809307030E94881AD3CB8091EA0268 +:1061F0009091EB020E9452269093EB028093EA0268 +:10620000F2CF88E08093ED0280914E010E94A22699 +:1062100080934E01BECB0E945714EE24E39400E31A +:1062200020E345EC52E270E060E088E290E00E94FA +:10623000AE130E94871764E670E080E090E00E9451 +:106240002D1786E00E941816892BD9F78091EC0251 +:106250008111F7CFC8CF80910B0391E089278093FC +:106260000B03882351F00E945F176093EE02709336 +:10627000EF028093F0029093F10281E08093020399 +:10628000EECB90910508F91748F48F5F891708F055 +:1062900098CC81E083BF889513BE93CC81E0809336 +:1062A0000708609306088091010890910208019602 +:1062B0009093020880930108A0900E03B0900F0302 +:1062C00025EFA21621E0B20608F023C180910D034C +:1062D000882309F4FCC06FEF70E089E00E94AB16E0 +:1062E0000E94571403E013E072E0872E912CA12C3A +:1062F000B12CE3E04E2E512C612C712C0E94ED3418 +:10630000A50194010E948636AB01BC0141505109A0 +:1063100061097109D8018C91682F640F613808F008 +:106320004BC06C93312C0E94ED34C32CD12CF12C3A +:10633000E12CA30192010E9486366D5F7F4F8F4F43 +:106340009F4FA70196012617370748075907C4F53D +:10635000D801EC90F12C0E94ED3424E130E040E0D3 +:1063600050E00E9486366A507109810991096E0DCC +:106370007F1D6034710530F421E040E890E080E05A +:106380000E94B117F801E080F12C0E94ED3424E165 +:1063900030E040E050E00E948636DC01CB010A97F5 +:1063A000A109B1098E0D9F1D21E040E470E060E07D +:1063B0000E9463133394B7CF6058F8016083B2CF63 +:1063C0000F5F1F4FF3E007301F0709F097CF0E94C0 +:1063D0005F170E94513520E030E04AE755E40E9403 +:1063E00056370E9453386B017C0120E030E040E8D2 +:1063F00053E40E94B23520E030E040E853E40E94CC +:10640000EA362B013C0110E000E0B801012E000C3F +:10641000880B990B0E945335A30192010E944C35C1 +:1064200087FF25C00E94ED344B015C010E94ED34D2 +:1064300069877A878B879C87C501B40120E430E0A7 +:1064400040E050E00E9486364B0169857A858B8555 +:106450009C8520E830E040E050E00E948636CB0189 +:1064600041E0B4010E9445130F5F1F4FCECF8091D2 +:106470004D01882349F10E94ED3420E130E040E0F5 +:1064800050E00E94863668507109810991090E9486 +:1064900053354B015C0120E030E040E852E4C70195 +:1064A000B6010E94B23520E030E040E852E40E949C +:1064B000EA369B01AC01C501B4010E94EA360E9494 +:1064C000C83785E00E94AB160E9487177ACB80916F +:1064D0000C0312E081111EC080910B0313E08111A7 +:1064E00019C08091800114E0811114C020E030E0D7 +:1064F00044E353E46091B9077091BA078091BB07F8 +:106500009091BC070E944C3515E087FD03C016E052 +:1065100001C010E080917F01882309F481C10E94AD +:10652000571401E020E440E870E060E090E080E093 +:106530000E948C1381E080930F0880930E081092C4 +:106540000D08E12C00E120E143E554E270E060E059 +:1065500090E080E00E94AE1383E190E090930A08FF +:106560008093090884E090E090930C0880930B08D6 +:1065700080910A0326E0829FC0011124815B9E4F17 +:106580000E946D1E85E390E090930A0880930908AD +:1065900081E090E090930C0880930B0882E0809358 +:1065A0000F08C12ED12C80914E01CC0CDD1C811125 +:1065B000EAC0F601E957FD4F408151810EE02CE120 +:1065C00061E070E080E590E00E94AE13F601E758CC +:1065D000FD4F40815181E12C0EE02EE061E070E042 +:1065E00081E790E00E94AE1381E080930F080E9443 +:1065F0007B1920E030E040EA52E40E94FE37181692 +:106600000CF4E0C0E12C0EE02EE041E154E262E146 +:1066100070E082E090E00E94AE13609108037091F8 +:10662000090390E080E00E94513520E030E048EC22 +:1066300052E40E9456376B017C016091070370E0C1 +:1066400090E080E00E9453359B01AC01C701B60188 +:106650000E944C3587FDCAC0E12C0EE02EE045EFCC +:1066600053E262E270E082E090E00E94AE1303E148 +:1066700010E010930A080093090840E150E050939D +:106680000C0840930B080E947B1941E00E94E81E11 +:1066900088EF0E94361983EF93E20E941B19109332 +:1066A0000A080093090888E190E090930C08809311 +:1066B0000B080E943F19BC0190E080E00E94513518 +:1066C00020E030E04AE754E40E94563742E00E945E +:1066D000E81E81EF93E20E941B1910930A080093B1 +:1066E000090880E290E090930C0880930B08609179 +:1066F00008037091090390E080E00E94513520E08A +:1067000030E04AE754E40E94563741E00E94E81E18 +:106710008FEE93E20E941B1910930A080093090858 +:1067200088E290E090930C0880930B0889EE93E246 +:106730000E941B1989E390E090930A08809309084E +:1067400082E190E090930C0880930B0884E08093A2 +:106750000F0860910E0370910F03653F91E0790778 +:1067600008F458C085EE93E20E941B1900E020E275 +:1067700048E460E170E087E390E00E94E81780E081 +:106780000E94C01FA1CE83E494E21330C1F058F4FC +:106790008FE494E2113099F089E494E2123079F0B8 +:1067A0008DE294E20CC088E394E2153041F08DE371 +:1067B00094E2153020F083E394E2163089F70E94CA +:1067C0001B1904CF0E945F1752E0660F771F881FC6 +:1067D000991F5A95D1F728EE33E040E050E00E942F +:1067E000B83620FF0FCF0E94881A17CF0E945F177C +:1067F00042E0660F771F881F991F4A95D1F728EE50 +:1068000033E040E050E00E94B83620FF25CF0E94E0 +:10681000881A2DCF90E080E04AE00E947A1EA6CF31 +:106820000E9457140E947B1920E030E040EA52E4B5 +:106830000E94FE37181694F40E945F1732E0660F2C +:10684000771F881F991F3A95D1F728EE33E040E073 +:1068500050E00E94B83620FD0E94881A609108031B +:106860007091090390E080E00E94513520E030E013 +:1068700048EC52E40E9456376B017C01609107039B +:1068800070E090E080E00E9453359B01AC01C701AD +:10689000B6010E944C3587FF12C00E945F1722E0AC +:1068A000660F771F881F991F2A95D1F728EE33E0CE +:1068B00040E050E00E94B83620FD0E94881A87EE22 +:1068C00093E0A5EFAA16A1E0BA0608F4C5010E945C +:1068D000112400E023E040E860E370E090E080E015 +:1068E0000E948C1381E04CCFC092E707D092E8075A +:1068F000E092E907F092EA07E091DD07F091DE0708 +:1069000080819181A281B3818093EB079093EC0702 +:10691000A093ED07B093EE0720E030E04FE753E49B +:10692000C701B6010E94FE3718160CF04CC8409201 +:10693000E7075092E8076092E9077092EA070C9423 +:106940003E2C8F929F92AF92BF92CF92DF92EF92A6 +:10695000FF92CF93DF93EC01688179818A819B81DB +:10696000611571058105910521F464E279ED8BE5EE +:1069700097E02DE133EF41E050E00E948636490177 +:106980005A019B01AC01A7EAB1E40E94A5366B0154 +:106990007C01ACEEB4EFA50194010E94B336C60EA3 +:1069A000D71EE81EF91EF7FE06C081E0C81AD108FE +:1069B000E10880E8F80AC882D982EA82FB82C7012E +:1069C000B6019F77DF91CF91FF90EF90DF90CF904E +:1069D000BF90AF909F908F9008958F929F92AF92AB +:1069E000BF92CF92DF92EF92FF92609181017091FE +:1069F0008201809183019091840161157105810567 +:106A0000910521F464E279ED8BE597E02DE133EF18 +:106A100041E050E00E94863649015A019B01AC01D9 +:106A2000A7EAB1E40E94A5366B017C01ACEEB4EF9D +:106A3000A50194010E94B336C60ED71EE81EF91EAA +:106A4000F7FE06C081E0C81AD108E10880E8F80A1C +:106A5000C0928101D0928201E0928301F092840180 +:106A6000C701B6019F77FF90EF90DF90CF90BF9066 +:106A7000AF909F908F9008956093810170938201F1 +:106A800080938301909384010895FB01DC010590BC +:106A90000D920020E1F708950E948E3508F481E000 +:106AA0000895E89409C097FB3EF490958095709501 +:106AB00061957F4F8F4F9F4F9923A9F0F92F96E94A +:106AC000BB279395F695879577956795B795F111BF +:106AD000F8CFFAF4BB0F11F460FF1BC06F5F7F4F5C +:106AE0008F4F9F4F16C0882311F096E911C077236E +:106AF00021F09EE8872F762F05C0662371F096E877 +:106B0000862F70E060E02AF09A95660F771F881F45 +:106B1000DAF7880F9695879597F90895990F0008E9 +:106B2000550FAA0BE0E8FEEF16161706E807F9075F +:106B3000C0F012161306E407F50798F0621B730BFA +:106B4000840B950B39F40A2661F0232B242B252B7B +:106B500021F408950A2609F4A140A6958FEF811D1E +:106B6000811D08950E94C5350C9436360E94283642 +:106B700038F00E942F3620F0952311F00C941F3628 +:106B80000C94253611240C946A360E94473670F313 +:106B9000959FC1F3950F50E0551F629FF001729FC2 +:106BA000BB27F00DB11D639FAA27F00DB11DAA1FD1 +:106BB000649F6627B00DA11D661F829F2227B00D1E +:106BC000A11D621F739FB00DA11D621F839FA00DA9 +:106BD000611D221F749F3327A00D611D231F849FF9 +:106BE000600D211D822F762F6A2F11249F57504050 +:106BF0009AF0F1F088234AF0EE0FFF1FBB1F661FCB +:106C0000771F881F91505040A9F79E3F510580F093 +:106C10000C941F360C946A365F3FE4F3983ED4F32D +:106C2000869577956795B795F795E7959F5FC1F737 +:106C3000FE2B880F911D9695879597F9089597F9E2 +:106C40009F6780E870E060E008959FEF80EC089512 +:106C500000240A941616170618060906089500243B +:106C60000A9412161306140605060895092E0394B5 +:106C7000000C11F4882352F0BB0F40F4BF2B11F429 +:106C800060FF04C06F5F7F4F8F4F9F4F089557FD88 +:106C90009058440F551F59F05F3F71F04795880F8A +:106CA00097FB991F61F09F3F79F087950895121621 +:106CB00013061406551FF2CF4695F1DF08C01616CD +:106CC00017061806991FF1CF86957105610508947E +:106CD0000895E894BB2766277727CB0197F9089595 +:106CE000F999FECF92BD81BDF89A992780B5089594 +:106CF000262FF999FECF1FBA92BD81BD20BD0FB6D8 +:106D0000F894FA9AF99A0FBE01960895052E97FB0A +:106D10001EF400940E949D3657FD07D00E94B8369D +:106D200007FC03D04EF40C949D3650954095309559 +:106D300021953F4F4F4F5F4F0895909580957095E7 +:106D400061957F4F8F4F9F4F08950E94DA36A59F20 +:106D5000900DB49F900DA49F800D911D1124089556 +:106D6000B7FF0C94A5360E94A536821B930B08959D +:106D7000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F3F +:106D8000EE1FFF1FA217B307E407F50720F0A21BB1 +:106D9000B30BE40BF50B661F771F881F991F1A941E +:106DA00069F760957095809590959B01AC01BD0148 +:106DB000CF010895A29FB001B39FC001A39F700DA2 +:106DC000811D1124911DB29F700D811D1124911DF3 +:106DD00008955058BB27AA270E9401370C943636D5 +:106DE0000E94283638F00E942F3620F039F49F3F59 +:106DF00019F426F40C9425360EF4E095E7FB0C9478 +:106E00001F36E92F0E94473658F3BA1762077307F7 +:106E10008407950720F079F4A6F50C9469360EF4F2 +:106E2000E0950B2EBA2FA02D0B01B90190010C019A +:106E3000CA01A0011124FF27591B99F0593F50F4B2 +:106E4000503E68F11A16F040A22F232F342F44270A +:106E5000585FF3CF469537952795A795F040539502 +:106E6000C9F77EF41F16BA0B620B730B840BBAF0D2 +:106E70009150A1F0FF0FBB1F661F771F881FC2F73D +:106E80000EC0BA0F621F731F841F48F48795779551 +:106E90006795B795F7959E3F08F0B0CF9395880F0B +:106EA00008F09927EE0F9795879508950E946A3705 +:106EB0000C9436360E942F3658F00E94283640F047 +:106EC00029F45F3F29F00C941F3651110C946A3657 +:106ED0000C9425360E94473668F39923B1F3552365 +:106EE00091F3951B550BBB27AA27621773078407DD +:106EF00038F09F5F5F4F220F331F441FAA1FA9F373 +:106F000035D00E2E3AF0E0E832D091505040E69560 +:106F1000001CCAF72BD0FE2F29D0660F771F881FC1 +:106F2000BB1F261737074807AB07B0E809F0BB0BB4 +:106F3000802DBF01FF2793585F4F3AF09E3F5105C8 +:106F400078F00C941F360C946A365F3FE4F3983E59 +:106F5000D4F3869577956795B795F7959F5FC9F7B1 +:106F6000880F911D9695879597F90895E1E0660F32 +:106F7000771F881FBB1F621773078407BA0720F0AB +:106F8000621B730B840BBA0BEE1F88F7E095089514 +:106F90000E94CF376894B1110C946A3608950E940C +:106FA0004F3688F09F5798F0B92F9927B751B0F016 +:106FB000E1F0660F771F881F991F1AF0BA95C9F77D +:106FC00014C0B13091F00E946936B1E008950C947C +:106FD0006936672F782F8827B85F39F0B93FCCF32F +:106FE000869577956795B395D9F73EF490958095FA +:106FF000709561957F4F8F4F9F4F08950E948E35FA +:1070000008F48FEF0895FA01EE0FFF1F3096210567 +:107010003105A1F16115710561F48038BFE39B076B +:1070200049F168949038810561F08038BFEF9B0783 +:1070300041F099234AF5FF3FE1053105210519F19A +:10704000E8940894E795D901AA2329F4AB2FBE2F21 +:10705000F85FD0F310C0FF5F70F4A695E0F7F73942 +:1070600050F019F0FF3A38F49F779F930DD00F90AE +:1070700007FC9058089546F00C94253660E070E0C7 +:1070800080E89FE308954FE79F775F934F933F9387 +:107090002F930E944A392F913F914F915F910E9407 +:1070A000B2350C9468389F930E94C3380F9007FC48 +:1070B000EE5F0C94EC380E948E35880B990B089586 +:1070C00029F416F00C941F360C9469360C9425366E +:1070D0000E944F36A8F39638A0F707F80F92E8946D +:1070E0002BE33AEA48EB5FE70E94C8350F920F9214 +:1070F0000F924DB75EB70F920E949239E8E6F0E02A +:107100000E949A384F915F91EF91FF91E595EE1FA4 +:10711000FF1F49F0FE57E0684427EE0F441FFA9521 +:10712000E1F74195550B0E940C390F9007FE0C9426 +:1071300000390895DF93CF931F930F93FF92EF923F +:10714000DF927B018C01689406C0DA2EEF010E9469 +:10715000C535FE01E894A59125913591459155914C +:10716000A6F3EF010E940137FE019701A801DA940E +:1071700069F7DF90EF90FF900F911F91CF91DF9112 +:1071800008950C9425360E944F36D8F3E894E0E039 +:10719000BB279F57F0F02AED3FE049EC06C0EE0F09 +:1071A000BB0F661F771F881F28F0B23A620773076C +:1071B000840728F0B25A620B730B840BE3959A95FF +:1071C00072F7803830F49A95BB0F661F771F881FBF +:1071D000D2F790480C94C839EF93E0FF07C0A2EAB9 +:1071E0002AED3FE049EC5FEB0E9401370E94363602 +:1071F0000F90039401FC9058E0E9F0E00C94D4392E +:107200009B01AC0160E070E080E89FE30C9456378E +:107210000C941F360C94C6390E944F36D8F399232C +:10722000C9F3940F511DA3F39150504094F059F0BD +:10723000882332F0660F771F881F91505040C1F7A6 +:107240009E3F51052CF7880F911D9695879597F9CC +:1072500008955F3FACF0983E9CF0BB2786957795EC +:107260006795B79508F4B1609395C1F7BB0F58F7D0 +:1072700011F460FFE8CF6F5F7F4F8F4F9F4FE3CFD9 +:107280000C946A3616F00C94C6390C942536689422 +:107290000C941F360E944F36A8F39923C1F3AEF326 +:1072A000DF93CF931F930F93FF92C92FDD2788237E +:1072B0002AF02197660F771F881FDAF720E030E069 +:1072C00040E85FEB9FE3883920F0803E38F021965C +:1072D0008F770E94EA36EEEAF0E004C00E94EA36B8 +:1072E000EBEDF0E00E949A388B01BE01EC01FB2E21 +:1072F0006F5771097595771F880B990B0E9453354D +:1073000028E132E741E35FE30E94C535AF2D9801E4 +:10731000AE01FF900F911F91CF91DF910E94013735 +:107320000C943636FA01DC01AA0FBB1F9B01AC019D +:10733000BF5728F4222733274427507820C0B7515D +:1073400090F4AB2F0024469537952795011CA39503 +:10735000D2F3002071F0220F331F441FB395DAF3EC +:107360000ED00C94E93661307105A0E88A07B94661 +:1073700030F49B01AC0166277727882790783096F8 +:1073800021F0208331834283538308959F3F31F05E +:10739000915020F4879577956795B795880F911D43 +:1073A0009695879597F908959F938F937F936F9301 +:1073B000FF93EF939B01AC010E94B235EF91FF91D7 +:1073C0000E949A382F913F914F915F910C94B23562 +:1073D000DB018F939F930E94A536BF91AF91A29F2F +:1073E000800D911DA39F900DB29F900D11240895C3 +:1073F00097FB072E16F4009407D077FD09D00E9462 +:10740000123A07FC05D03EF4909581959F4F089560 +:10741000709561957F4F0895EE0FFF1F0590F491D1 +:10742000E02D0994AA1BBB1B51E107C0AA1FBB1F7B +:10743000A617B70710F0A61BB70B881F991F5A9500 +:10744000A9F780959095BC01CD01089581E090E069 +:0A745000F8940C942B3AF894FFCF47 +:10745A0001FFD800340186011E0000000000000070 +:10746A000000000000000000000000000000000012 +:10747A000000000000000000000000000000000002 +:10748A0000000000000000000000000000000000F2 +:10749A000000013C9600400101280F05010101424C +:1074AA0043312E35000000000000000000000000FB +:1074BA0000000000000000000000000000000000C2 +:1074CA0000000000000000000000000000000001B1 +:1074DA0001010000000B0604040202020203031861 +:1074EA0004FC03E003C403A8038C037003540338A9 +:1074FA00031C030003E402C8021804AC02900274DD +:10750A0002180458023C027402580220023C027417 +:10751A00020402E801CC01B00194018C0378010055 +:10752A00035C0140012401A80308017402ED04E888 +:10753A0004E304DC04D604D204C904C604C304BEAA +:10754A0004BA04B104A7049F049C04990496049005 +:10755A00048D048804850482047D04780475046F0C +:10756A00046B04670462045D045904540450044C17 +:10757A0004490445043C0437043404CF0F7F0F2F19 +:10758A000FDF0E8F0E3F0EEF0D9F0D4F0DFF0CAF4D +:10759A000CCF0F5F0C0F0CBF0B6F0B1F0BCF0A7FAB +:1075AA000A2F0A1F0B7F0ADF092F0A1F0B8F093FB9 +:1075BA0009EF089F084F08FF07AF075F070F07BFCC +:1075CA00066F061F06CF051F0BAF1093107310F539 +:1075DA002357103B101F101B12E311AB1173113B01 +:1075EA00110311CB10000000008215E2140F15CF11 +:1075FA001540151E153215000000001918E2143C3A +:10760A00193B196E616E00696E66006F7666002F0F +:02761A0033003B +:00000001FF diff --git a/software/binaries/1.7+/T12.ino.with_bootloader.standard.hex b/software/binaries/1.7+/T12.ino.with_bootloader.standard.hex new file mode 100644 index 0000000..5ab7162 --- /dev/null +++ b/software/binaries/1.7+/T12.ino.with_bootloader.standard.hex @@ -0,0 +1,1925 @@ +:020000040000FA +:100000000C943F120C9467120C9467120C942928DC +:100010000C9467120C9467120C9467120C9467127C +:100020000C9467120C9467120C9467120C9467126C +:100030000C9467120C9467120C9467120C9467125C +:100040000C94DF270C9467120C94AD270C9487272F +:100050000C9467120C9400290C9467120C9467128C +:100060000C9467120C94671207634236B79BD8A7AB +:100070001A39685618AEBAAB558C1D3CB7CC5763CD +:10008000BD6DEDFD753EF6177231BF000000803F7B +:1000900005A84CCDB2D44EB93836A9020C50B9914E +:1000A0008688083CA6AAAA2ABE000000803F080055 +:1000B0000000BE922449123EABAAAA2ABECDCCCCE7 +:1000C0004C3E00000080BEABAAAAAA3E0000000081 +:1000D000BF000000803F0000000000084178D3BB53 +:1000E0004387D1133D190E3CC3BD4282AD2B3E6800 +:1000F000EC8276BED98FE1A93E4C80EFFFBE01C4F1 +:10010000FF7F3F0000000000800400003FF0383017 +:1001100033103F90381033902790261030903FF0E6 +:1001200000008004800400003FF03DF020103BF010 +:100130003B7030302B502AD031B03FF000008004AB +:10014000800400003FF038703030231027902010DA +:100150002010279027903FF00000800480040000CA +:100160003FF03CF03CF020102490249020103CF014 +:100170003CF03FF000008004800400003FF037B006 +:1001800023103030387038703030231037B03FF0E3 +:1001900000008004FCF4F860E044C08CC11CC22C58 +:1001A000C44CC88CD10CA204C4048FFC187CBCFCC9 +:1001B0008000BFF81FF8B0281FF8B4081FF8B10876 +:1001C0001FF8B048BFF8B288BFF880008000BFF8C1 +:1001D0001FF8B0081808B9E819B8B8381838B9B80D +:1001E000B9F8B0F8BFF8800015543FF815503FF04B +:1001F0001550387010203104138C22A817FC2AA83F +:100200000000000015543FFC15543FFC15543C04FD +:1002100014043CFC14543CFC005400A800000000F2 +:10022000800400003FF03CF034B0249024902790EC +:100230002310303038703FF000008004FF7CFE7CDB +:10024000FCECE8DCC84C984C882408200000000036 +:10025000000000008004E01CF3FCE7FCCE0C8E1CC8 +:100260009F9C1F3C1F0C0E0C0FFC87F881E4C00CF8 +:10027000E01CF87C000458085808580840087FF82B +:1002800060185FE85B685FE85B681CE85FE8000097 +:10029000800400003FF03CF03CF03CF020102010C7 +:1002A0003CF03CF03CF03FF000008004F87CF7BCF0 +:1002B00000007FF80000BFF4AB54AB54AB54AB5418 +:1002C000AB54AB54BFF4C00CF03CCE0CBF04B30431 +:1002D00073007F007E007C007C007C60BC64BE04F8 +:1002E000CF0CF03C81DC559C29045500299055D059 +:1002F00003FCFF002E00267002508270E600EE0420 +:10030000800C001C3FF43FE03FC4378C2318303092 +:1003100038703CF03FF03FF000008004058074B876 +:1003200057A876B80580F97C4694AAA8F97C068877 +:1003300074A8578C75740698F03CCE4CBC34B81435 +:10034000188010804230607860F844C08004B8841F +:10035000CFCCF03CE01CC00C8FC49FE49FE49FE432 +:1003600000000300030003000780078003008004EF +:10037000F87CE01CC00CCFCCCFCCCFCCCFCCCFCC3A +:10038000CFCCCFCCC84CCFCCC00CE01CFCFCF87C54 +:10039000E01CC00CC00CC00CC00CC00CC00C800415 +:1003A0008004FFFCF87CFCFC8004000020001000AE +:1003B00008001000270000000000000000000000FE +:1003C00000008004C3FC18001800C3FCFFFCFF0CF5 +:1003D00000600060FF0CFFFCF0FC06000600F0FC73 +:1003E0008FC4102020104CC89FE43DF03DF01DE06C +:1003F0003EF03F709FE48CC400003030F87CF33C4A +:10040000F4BCF6BCF4BCF6BCF4BCE49CC84CD02CE8 +:10041000D02CC84CE79CF03C882408203830383079 +:10042000383038303830383039303BB03FF03FF07A +:1004300000008004F21415F0CADFB8CCF0D699E8B9 +:10044000AEA4DFEEE8F21D1E08F21C08F21A1B082B +:10045000F0714601F046464A01F219F051F218F0E7 +:100460005A8DF0C0DAEEAEF0C8B8A5F1302924F00C +:10047000B599E1A4BDF21415F0CBEEAEBDF218F0C3 +:100480005A8DF21617F21415F0CBEEAEBDF2161718 +:10049000F0BCCA9EE0BDF21415F21213F21011F274 +:1004A0000C0DF094F20E0FF0A2D8DFCBE1EEACDC35 +:1004B000E8F20AF08CF20BF04A8DF209F08DF09719 +:1004C000C59BBDF20708F21F20F2040506F097DE77 +:1004D000EED5F0CBABEEF0AEA4DFEEE8F0A8E8BDD1 +:1004E000E2EEE0F0B499D3EEF200010203F0CCDFCB +:1004F000B0B8BD5361766500466C6970004D6169A6 +:100500006E2053637265656E004A5000454E00438D +:100510004E00594553004E4F004F4E004F46460087 +:10052000496E666F73004269670050494400446930 +:1005300072656374005361766500426F6F73740077 +:100540004F666600536C65657000536176650042C6 +:100550006F6F737400536C656570004465666175F8 +:100560006C740053617665004164640044656C6599 +:1005700074650052656E616D650043616C696272FD +:10058000617465004368616E6765005265747572D9 +:100590006E0041626F7574004C616E67004C6F6352 +:1005A0006B004C4F5720566F6C0042757A7A65721B +:1005B0000053637265656E00436F6E74726F6C00FA +:1005C00054696D65720054656D7000546970000067 +:1005D000000000000F1DC20800054442080003840B +:1005E0005FBF000FE44410000115451000054CC921 +:1005F0007F8009244F900007C4C11000054D413F82 +:1006000000055443810007C44D0200054441140015 +:10061000055541080007C8810400000000000000E3 +:100620000000000001083FFE001FFF8100000040A5 +:1006300002000007FE0FF800040208080004020888 +:10064000880007FE08880004020888000402088861 +:100650000007FE0888000402094800040202300076 +:1006600007FE040C00040218040000000000000053 +:100670000000000007FE13FE000402084000040210 +:10068000084000040201FC0004023884000402084F +:10069000840007FE0FFF000402080000040209FEA8 +:1006A00000040209020004020B020004020D020011 +:1006B00007FE09FE00040201020000000000000025 +:1006C0000000000001100080001FFF80800001106A +:1006D0003FFF00004004080007FC04080004440435 +:1006E0001000044402100004440220001FFF812077 +:1006F00000004000C00000A001300001100208000E +:10070000060C0C07001803B00200000000000000F7 +:1007100000000000004000800000400080000FFF4B +:100720003FFF000841040800084104080008410494 +:10073000100008410210000FFF02200008410120B4 +:1007400000004000C00000400130000040020800EE +:1007500000400C07000040300200000000000000D4 +:10076000000000001FDF10200002120C20000224F5 +:10077000042000047F8020000424B820000FA488F7 +:10078000500014BF88500004A488500004A4884876 +:100790000004BF88880004A48A880007A48C840011 +:1007A0000444890700008186020000000000000068 +:1007B000000000000FF00491000440025200047F8A +:1007C000905400045088FF0007D084810004510039 +:1007D0008100044901FF0007CA028100044404812A +:1007E00000044A1CFF0007EA0481000C5104810048 +:1007F0000061C4850000408082000000000000000D +:100800000000000007FF802000008407FF00008434 +:10081000040100008404010000840401000FFFC7EC +:10082000FF0000840400000084040000008405FF31 +:100830000000840501000104090100010409010010 +:10084000020411FF00040401010000000000000088 +:1008500000000000008204FF00004402010007FFC6 +:100860009021000010102100001017FD0000101052 +:1008700021000FFFD06100001010A10000281121FD +:100880000000281221000044142100008210A10061 +:100890000301D045000C00900200000000000000A1 +:1008A00000000000084410FE00042810920005FF1C +:1008B00022920000103C920000100892001CFE10D2 +:1008C0009200041020FE0004103E920005FF80926A +:1008D00000041000920005100E92000610309200E5 +:1008E000041000FE00001000820000000000000064 +:1008F0000000000007DF8840000A24104000114279 +:1009000010FE00040022820002FF3D020008010ADE +:10091000420009F9103200090920120009F93E02CB +:1009200000090900020009090E020009F93022003D +:100930000805001400080200080000000000000084 +:10094000000000000FC3F1E0000FE3F1F8000C70AD +:10095000C19E000C30C186000C30C183000C30C138 +:1009600083000C60C183000C60C183000FC0C18391 +:10097000000FC0C186000C00C186000C00C19800A9 +:100980000C03F1F8000C03F1E0000000000000008F +:100990000000000000200820000FFF09FC000020DC +:1009A00008000000203E880003FE08500002020BF1 +:1009B000FE0003FE0C4000020218400003FE2BFE66 +:1009C00000020208480003FE0888000202085000E6 +:1009D00002022830001FFF91CC000000000000013F +:1009E00004047C0000880444000FFF3F4400002002 +:1009F00004440000200C440000200E44001FFF951A +:100A000044000020144400005024440000500444DA +:100A100000008804450001040485000603850300E6 +:100A200018010400000000000000000000000000A9 +:100A300000000000047E21FC0004421104001F7E1F +:100A4000090400044221FC000542110400067E1145 +:100A500004000C0005FC0015FF880000040813FECC +:100A6000000448325200044F12520004481252004F +:100A700014A8125200091F97FF0000000000000098 +:100A80000000000002103DFC0002102504000410CC +:100A900025040005FFBDFC000C102520000C3825A6 +:100AA0002000143825FE0004543D20000454251075 +:100AB0000004922510000511A5090006113D45000E +:100AC0000410258300041001010000000000000054 +:100AD000000000001FC8102000124A0C20001AC994 +:100AE00004200017480020001FFFB820000208085B +:100AF00050001FC8085000020808500003C80848EA +:100B0000001E1408880001540A880015220C840075 +:100B10001443890700008106020000000000000263 +:100B2000FE01000002823FFF00048202000004FE7A +:100B30000200000C1004FC00141004080005FF8CD7 +:100B400010000410141000043825FF0004340410B1 +:100B50000004520410000491841000051004500099 +:100B6000041004200000000000000000000000004D +:100B70000000000002030010001FDC3EFE00089091 +:100B8000021200051004FF001FDF84120002120C85 +:100B9000FE001FD2021000021222FE000A92141060 +:100BA000000A5214100012220DFF00022208100049 +:100BB0000A42141000040223FF000000000000009D +:100BC000000000000F78BC20000948A45000094A2A +:100BD000A85000094AA88800094AB104001FFEAACB +:100BE000FB00094AA42000094AA42000094AA7FEE4 +:100BF00000094AB420000948A924000B48A2220099 +:100C0000088AA4A200111920400000000000000082 +:100C1000000000000020008000005001FC0000885F +:100C2000010400010403080006FB0490000800C052 +:100C3000600007DF018000045106000004511BFE24 +:100C400000045102020007D9020200045602020009 +:100C5000001003FE0000100202000000000000006F +:100C6000000000000208209000027F9890001F8082 +:100C700009FF00022201100006218B100007628D7F +:100C8000FE000AA20910000A14111000121431FE0D +:100C900000020811100002141110000222111000AD +:100CA000024391FF000281110000000000000000DB +:100CB00000000000100700000008F83FFE0004805C +:100CC000200200008020020000BE23E2001C8222DD +:100CD000220004A42222000494222200048822225A +:100CE00000049423E20005222002000542200200B5 +:100CF0000A003FFE0011FFA00200000000000000FB +:100D00000000000000820FFE00004400400007FFCA +:100D10008040000010004000001000400000101F44 +:100D2000FF800FFFC040000010004000002800407E +:100D30000000280040000044004000008200400005 +:100D40000301C140000C0080800000000000000989 +:100D5000FF00400004203FFF00042000000000FED0 +:100D60000000001C420FFC00044200000007FF804E +:100D7000000004000FFC0004FF00000004810000DC +:100D80000005810FFC00068108040004FF08040030 +:100D900000810FFC000000000000000000000000C7 +:100DA0000000000000401F7E001FFF840200108032 +:100DB0008442000A4A0442000A3108420012C50F68 +:100DC00042000304197F001DF829010000400901B9 +:100DD00000084209FD00084209010008420F010015 +:100DE0000FFE0905000002000200000000000000E4 +:100DF0000000000001000FFE00010008200003FFBA +:100E00000820000201082000042208200008200B0E +:100E1000FE00102008200000500828000050082480 +:100E20000000880822000088102000010410200023 +:100E30000203A7FF000C01000000000000000000FA +:100E40000000000000400080001FFF9FFC000040E9 +:100E50000410000FFF02200000003FFF000FFE0003 +:100E6000000008420FF80008420808000FFE0808BA +:100E70000008020FF8000800080800080008080031 +:100E800008000FF800100008080000000000000033 +:100E90000000000007FE0FF800040200000004023A +:100EA00000000007FE00000004023FFE00040200F4 +:100EB000800007FE008000009004900008910C88DC +:100EC00000069310860002942082000090008000AB +:100ED00000900280001FFF81000000000000000061 +:100EE00000000000041012020005FF9FD200050060 +:100EF0009212001E28A2120004443FF20004820253 +:100F0000120006000212000CFE1FD2001410125232 +:100F10000004101242000410134200041012820058 +:100F200015FF820A00080002040000000000000013 +:100F300000000000002000000000203E04001FFF11 +:100F4000A204001000A2FF0000012204000FFE22F4 +:100F5000040000403E4400004022240004402224BB +:100F600000047C22040004402204000A403E0400E5 +:100F7000094022240010FF80140000000008000037 +:100F80000000000010FE08200008820BFF00048211 +:100F90000A010010FE3C51000882088800088209FE +:100FA000040002FE0C0000040019FC0009FF2820C8 +:100FB0000019290820000929082000092908200013 +:100FC00009292BFF000BFF9000000000000000002B +:100FD000000000001F7F90F80001080888000A1038 +:100FE000088800047F0107001FC13A000005490975 +:100FF000FC000449088400044908880004490848A2 +:1010000000044908500004490A200004160C580046 +:10101000142189870008C086020000000000001F1C +:10102000E03FF07038601860186018FFFCFCFCFCB2 +:10103000FCFCFCF87CF87CFCFC7FF81E1033382D9F +:101040007C25382D3825382D386D80DEC0BF40BF57 +:1010500040DEC061803F007FF0FFE0C008C01CC0E0 +:1010600038C870DCE4CFCCC78CC30CC00CC00CFFFC +:10107000FC7FF8000006000C0018F838F0303070E3 +:1010800060707878F878003C023F0C1FF80FF0038E +:10109000C000007FF8FFFCC00CC30CCB4CDB6CDB4A +:1010A0006CD86CDCECCFCCC78CC00CFFFC7FF80399 +:1010B0000007800FC00CC01CE01CE03CF03CF07F3F +:1010C000F87FF8FCFCFCFCFFFC7FF811408200215B +:1010D000208FE023FC82004A23E200FE209FF013D1 +:1010E000F880802220C0804221BFF0FBFA88800275 +:1010F000208480022084801A208080E3FE82800287 +:101100000101000F421FC078411040084090400884 +:10111000421FC008411040FFFD104008405FC0085A +:1011200040800008413FE008432520104125201061 +:101130004125202041252040417FF07FF848800252 +:101140000049000201FFF00201001002027F20228C +:1011500000410023F07F00220008002200FF8022CF +:101160000088802200888022008A8022008900FF77 +:10117000FC080023F21FC022111040FBF090402217 +:10118000121FC02A11104033F1104060005FC0AF41 +:10119000FC800020413FE0224325202279252022A7 +:1011A000412520A541252048FD7FF01083DFC01098 +:1011B000825040208250402FFFDFC0608252006189 +:1011C000C25200A1C25FE022A3D20022A251002499 +:1011D000925100288E5090308BD45020825830206D +:1011E000801010104047C017FC44402003F44023F7 +:1011F000F844406208C440A3F8E440200154402F62 +:10120000FD44402806444023F844402040445020F8 +:10121000404850214050302080400020921FC03D67 +:10122000F990402090904040901FC07BFF0000A0AC +:10123000013FE021F90200FD09020021097FF021B0 +:10124000F90500210945002909888031F91070212C +:1012500008202025004300202070F8754077557540 +:101260007740403E4A5E2B5E4A6B627F352F357F6A +:101270007C5B5E247B0E3A047E017E4A5E69063A00 +:101280002F3F6B7E46403F41497F494102626B6B75 +:101290006B62026A6B147D577D10413F55553D5777 +:1012A00051213F2D7F2A122E0A775A505A770A2051 +:1012B00024137D5553707A2A7B021A437A4A525E70 +:1012C0002B5E424A415F353F555F417D14577D0E8D +:1012D000407F7F1B54167D1654493A407E57567600 +:1012E000423F427E7E427E047E51377D3750127AE5 +:1012F0001752761E127F557F145D7F557F557F7F75 +:10130000553D577F55377817457F7F2B7B287B2BA3 +:101310007F1E12127F12121E7F416B7F6B517F5214 +:101320005A573A575A52007F494949497F22122A4F +:101330007F2A1222166A5E735662160937315F15CC +:101340005F7500000000002F000300033F123F16EE +:101350003F1A120824323D2A020100003E41413E5C +:10136000000A070A083E084020000808080020007C +:101370001008041C2A1C243E20322A24222A141875 +:10138000143E2E2A121C2A12023A06142A14242A67 +:101390001C002400402400081422141414221408F1 +:1013A00002290612291E3E093E3F251A1E21213F11 +:1013B000211E3F25213F05011E21393F083F213FC6 +:1013C0002110201F3F043B3F20203F063F3F013EAE +:1013D0001E211E3F09061E215E3F093622251901E6 +:1013E0003F013F203F3F100F3F183F330C33033C7A +:1013F00003312D23007F41153E15417F000201027C +:1014000040404000010218243C3F241818242418AE +:10141000243F182C2C043F0548543C3F0438003D21 +:1014200000403D003F0834013F003C1C383C04387C +:101430001824187C241818247C3C0804283C140424 +:101440003E243C203C3C100C3C303C2418244C50A6 +:101450003C24342C083641007F004136080101014C +:101460001028101F010120203E1020000008002538 +:10147000150F241C0C103804180C3828382828188C +:101480003C083C18283820242C3C2C2C1C04080830 +:10149000211D07083C0306231E223E22120A3F326A +:1014A0000F3E0A3F0A24130E271E0222223E271255 +:1014B0000F2525102119273F222E21160F241B0E40 +:1014C000251F0526261E251D053F0408241F042070 +:1014D0002222251927123B1620100F3C013E1F2403 +:1014E0002421110F0C031C1A3F1A091927222A2A3A +:1014F000382730320C13053F25023F0E213F2025AF +:10150000253F25251D07201F3C3F203F20103E2260 +:101510003E23110F212118010001020502000000E5 +:1015200000000000002040000000000000205020CB +:10153000000000000050300000000000006060006B +:101540000000000000000018180000000000003635 +:1015500036000000000000563600000000000201C6 +:1015600051090906000000005F00000000000000B3 +:10157000007F41410041417F000000000000000069 +:101580003F010101004040407E0000000000003F9C +:10159000213D05070070505E427E00000000000003 +:1015A000007F63410041637F0000000000080808DD +:1015B0007F08080800080808080808080044444490 +:1015C0005F444444004122140814224100080808E2 +:1015D0002A080808001414141414141400143414E1 +:1015E0001C141614000808141414222200222214B9 +:1015F00014140808000205023C42422400002B2C6F +:10160000782C2B000000242A7A2F2A1200001C625A +:10161000322E23140020545E254142200042251220 +:10162000082452210020623E633E230200205649D6 +:1016300055225840000022147F142200001C225919 +:10164000554D120C0000004A555529000004643C19 +:10165000173C64040004643C1F3C6404001C2241E9 +:101660004141221C001C3E7F7F7F3E1C001C225DEE +:10167000555D221C000814224122140800081C3E5B +:101680007F3E1C08007F41414141417F007F7F7FB9 +:101690007F7F7F7F0040704C434C70400040707CE7 +:1016A0007F7C704000010719611907010001071FC5 +:1016B0007F1F07010049221449142249000505052E +:1016C0007D05050500080808082A1C0800081C2AD2 +:1016D00008080808000004027F020400000010202F +:1016E0007F20100000003E414141413E0000004289 +:1016F0007F400000000062515149494600002241EC +:10170000494949360000302824227F2000002F4517 +:101710004545453900003E4949494932000001012B +:101720006119050300003649494949360000264938 +:101730004949493E000020547E3414600020527F05 +:101740002A1A4A3000003C4020041800001E2040A5 +:10175000200204180000104A4A2A10000000084520 +:10176000454525180000482A3A4A40000000442513 +:10177000153D45400000247E145024000022527F75 +:101780000A484A340044344F443804180044344F63 +:101790004439041900002A5A4B4E5A0800002A5AAC +:1017A0004B4E5B080000081414224100000008148E +:1017B00014224504003F0004443F0404003F000499 +:1017C000443F0405000020524242424000002052A3 +:1017D000424342410000245444475C040000245426 +:1017E00044475C050000003F404040200000003FAF +:1017F000404140210002020A563F02020002020A52 +:10180000563F02030004043F44545F440004043F75 +:1018100044545F45000008093D4B49080000080991 +:101820003D4B490A00423A072254444400423A07D9 +:1018300022554445000002124E4B4A32000002126B +:101840004E4B4A3300001010484830000004040298 +:101850002222221C000404022223221D0000020274 +:101860001A254341000002021A2543450000205773 +:1018700048484444000020574849444500120A277C +:1018800052503A24007F00205242424000304E38ED +:10189000540F64780024147F0422523C0018241250 +:1018A0004E422418007F002454543F44007F0024FB +:1018B00054543F45007F002454563D4600023A47A9 +:1018C00040413E0400023A4740413E0500023A478B +:1018D00040433D06004030404D32106000403040F3 +:1018E0004D321161004030404D3215620008040253 +:1018F0000408101000080402040910110008040272 +:10190000040A1512007F006A6A7E2A4A007F006A74 +:101910006A7F2A4B007F006A6A7E2D4A00006A6A4D +:101920006A7F2A4A0030291D4B483C1000122A7F4A +:101930004240422400304E38540F443800000A3EE2 +:101940004B4A4A300000080E384614080004071CB1 +:1019500062030A0400001C483E241800001E0452C2 +:101960003F12120C00002050503E48000000205052 +:10197000503F244400001C51494A483000000F42A7 +:1019800041211E00000010696D4B49300024147F76 +:1019900004023E40000010494D4B49300000281819 +:1019A0007E0844380024147F0442423C003049251C +:1019B0001F245438004028255735284000100A2E8F +:1019C0005B724A480040300C334040200000044421 +:1019D0003C140C00000001413D09050300002020DB +:1019E0001078040000001010087C02010000184864 +:1019F0004C281800000006424322120E0000404806 +:101A000078484000002022223E2222200000282880 +:101A1000587C0800002222124A7F02020000422263 +:101A20001F02427E000042221F02427F000012126B +:101A30001F721210000012121F72131000000844CF +:101A40004322120E000008444322120F00080742EE +:101A5000221E020200080742221F02030000424227 +:101A60004242427E000042424243427F0002024F15 +:101A700042221F020002024F42231E030000454A79 +:101A80004020100C0000454A4021100D0040422229 +:101A9000221A264000404222221B26410004043F15 +:101AA0004444544C0004043F4445544D0000014656 +:101AB0004020100F000001464020110F0000084494 +:101AC0004B2A120E000008444B2A120F00080A4A43 +:101AD0003E09090800080A4A3E09080900001840A2 +:101AE0005820180000020C424C20100E00020C423C +:101AF0004C21100D000405453D0505040004054575 +:101B00003D0504050000007F080810000000007F6C +:101B100008091001000444241F04040400202222A8 +:101B200022222220004041251519270000202212E0 +:101B30007B06122000404020100807000040300EB5 +:101B400000020C700040300E00020D710040300E9B +:101B500000020D7200003F484848444400003F48DE +:101B60004849444500003F48484A45460000024273 +:101B70004222120E000002424223120F00000242D3 +:101B80004222150E00080402040810200008040276 +:101B90000409102100080402040A15220024144438 +:101BA0007F041424002414447F05142500241444C5 +:101BB0007F0615220002021222520A060000212589 +:101BC000294A42000040704C4350204000404424C9 +:101BD00014083700000008093F4949480000101C5C +:101BE000680818000004040F74020A060000404848 +:101BF0004878400000202222223E2020000000449D +:101C000054547C000000424A4A4A4A7E000004457F +:101C10004525150C00000F4040201F000040201EED +:101C2000007F20100000007F4020100800007E424E +:101C30004242427E00000C4444241C000000064244 +:101C40004222120E0010121E12127F1200202222B7 +:101C50003A262220000001454525150F000041428B +:101C60004020100C000006424322120F00004828BA +:101C70001C4878000000100C4838080000080404D4 +:101C800008101008000800000800000800040808F8 +:101C900008080808000808080808080808060505D4 +:101CA0000706040903030504090A080303030603DE +:101CB00005030305050306040405050405040403E0 +:101CC00004090503CB05C605C005B805B105AA057D +:101CD000A2059D05980592058B0584057A05730577 +:101CE0006C05680563055B0555054F054A05440508 +:101CF00040053A0535052E052A05260520051C0553 +:101D00001905160512050F050C050905FD04F80453 +:101D1000F3043E0053656C656374205469700000E1 +:101D2000000000003E5B4F5B3E3E6B4F6B3E1C3E37 +:101D30007C3E1C183C7E3C181C577D571C1C5E7F4B +:101D40005E1C00183C1800FFE7C3E7FF00182418CA +:101D500000FFE7DBE7FF30483A060E2629792926FF +:101D6000407F050507407F05253F5A3CE73C5A7FE9 +:101D70003E1C1C08081C1C3E7F14227F22145F5F3F +:101D8000005F5F06097F017F006689956A60606079 +:101D9000606094A2FFA29408047E040810207E20B4 +:101DA0001008082A1C08081C2A08081E1010101009 +:101DB0000C1E0C1E0C30383E3830060E3E0E06004F +:101DC0000000000000005F00000007000700147F13 +:101DD000147F14242A7F2A1223130864623649567A +:101DE00020500008070300001C2241000041221C73 +:101DF000002A1C7F1C2A08083E080800807030005A +:101E00000808080808000060600020100804023E6E +:101E10005149453E00427F400072494949462141AF +:101E2000494D331814127F1027454545393C4A491E +:101E3000493141211109073649494936464949295D +:101E40001E0000140000004034000000081422416D +:101E50001414141414004122140802015909063EF6 +:101E6000415D594E7C1211127C7F494949363E41F1 +:101E70004141227F4141413E7F494949417F090912 +:101E800009013E414151737F0808087F00417F41AD +:101E9000002040413F017F081422417F40404040E4 +:101EA0007F021C027F7F0408107F3E4141413E7F3C +:101EB000090909063E4151215E7F09192946264933 +:101EC00049493203017F01033F4040403F1F20400A +:101ED000201F3F4038403F63140814630304780414 +:101EE000036159494D43007F4141410204081020DC +:101EF000004141417F040201020440404040400053 +:101F00000307080020545478407F2844443838445C +:101F1000444428384444287F385454541800087ED8 +:101F2000090218A4A49C787F0804047800447D402A +:101F3000002040403D007F1028440000417F4000C9 +:101F40007C047804787C080404783844444438FCE1 +:101F50001824241818242418FC7C08040408485465 +:101F600054542404043F44243C4040207C1C204022 +:101F7000201C3C4030403C44281028444C90909019 +:101F80007C4464544C440008364100000077000053 +:101F9000004136080002010204023C2623263C1EB2 +:101FA000A1A161123A4040207A3854545559215524 +:101FB0005579412154547841215554784020545545 +:101FC00079400C1E52721239555555593954545492 +:101FD0005939555454580000457C410002457D4212 +:101FE0000001457C40F0292429F0F0282528F07CC8 +:101FF000545545002054547C547C0A097F49324989 +:102000004949323248484832324A4848303A4141D8 +:10201000217A3A42402078009DA0A07D3944444472 +:10202000393D4040403D3C24FF2424487E494366DE +:102030002B2FFC2F2BFF0929F620C0887E090320B7 +:10204000545479410000447D413048484A32384078 +:1020500040227A007A0A0A727D0D19317D262929DB +:102060002F28262929292630484D402038080808DD +:102070000808080808382F10C8ACBA2F102834FAFE +:1020800000007B000008142A142222142A14089548 +:1020900000220095AA005500AAAA55AA55AA000038 +:1020A00000FF00101010FF00141414FF001010FFA8 +:1020B00000FF1010F010F0141414FC001414F700BA +:1020C000FF0000FF00FF1414F404FC141417101F89 +:1020D00010101F101F1414141F00101010F0000017 +:1020E00000001F101010101F10101010F010000032 +:1020F00000FF101010101010101010FF1000000042 +:10210000FF140000FF00FF00001F10170000FC0478 +:10211000F414141710171414F404F40000FF00F75B +:1021200014141414141414F700F7141414171410BE +:10213000101F101F141414F4141010F010F00000ED +:102140001F101F0000001F14000000FC140000F00E +:1021500010F01010FF10FF141414FF141010101FB3 +:1021600000000000F010FFFFFFFFFFF0F0F0F0F0C4 +:10217000FFFFFF0000000000FFFF0F0F0F0F0F38E1 +:10218000444438447C2A2A3E147E02020606027E1B +:10219000027E0263554941633844443C04407E203A +:1021A0001E2006027E020299A5E7A5991C2A492A4B +:1021B0001C4C7201724C304A4D4D303048784830DA +:1021C000BC625A463D3E494949007E0101017E2AD2 +:1021D0002A2A2A2A44445F444440514A4440404405 +:1021E0004A51400000FF0103E080FF000008086B37 +:1021F0006B083612362436060F090F060000181831 +:102200000000001010003040FF0101001F01011EFE +:1022100000191D1712003C3C3C3C0000000000006F +:10222000000000240027002A0000000000250028EC +:10223000002B0000000000230026002900040404F5 +:10224000040404040402020202020203030303035F +:10225000030102040810204080010204081020013C +:10226000020408102000000008000201000003041E +:10227000070000000000000000AED5F0A83FD3002A +:10228000408D14A1C8DA1281CFD9F1DB40A4A6AFEA +:10229000200021007F220007506C65617365207764 +:1022A000616974004144433A200074656D703A20BE +:1022B00000536574206D65617375726564005374B5 +:1022C00065703A2000FFFFFFFFFFFF8003867080EC +:1022D000038003867080039FF3E1309FF39FF3E157 +:1022E000309FF3983301CC9833983301CC983398CE +:1022F0003387C098339833E1C098339833E1C0985E +:10230000339FF398C09FF39FF398C09FF3800366B9 +:10231000CC8003800366CC8003FFFF010CFFFFFF2E +:10232000FF01001FFF810061301F3F873CE6FC87F3 +:1023300033873CE6FC87F3F8039E0F1F03F8039EE8 +:102340000F1F03E13CFE0C07CFE13CFE0C07CF99C9 +:10235000033E3086C3E6CF380F9EF3E6CF380F9E9C +:10236000F39E0327CC81039E0327CC8103E0FFE18A +:102370000CE6CFE0FFE10CE6CF9803060000FF98E3 +:1023800003060000FFFFFF1EF0F80380036630998C +:10239000C38003663099C39FF3010CF8FF9FF301DC +:1023A0000CF8FF9833393C01CF9833393C01CF9872 +:1023B00033FF0C793F98333ECCE0F398333ECCE0CA +:1023C000F39FF33E0098CF9FF33E0098CF80033EEB +:1023D00030E7C380033E30E7C3FFFFFFFFFFFFFF8F +:1023E000FFFFFFFFFF3030300076312E372B0056D5 +:1023F00000560043000FE01FC01FC03F803FF87F22 +:10240000F07FE007C007800F000E001C00180010CE +:102410000014A03FF07FF8E01C6E18EC1C681860F8 +:1024200018E01C6058E01C7FF83FF014A0455252A1 +:102430004F5200484F4C44004845415400574F52BA +:102440004B5900424F4F535400534C454550004F99 +:1024500046460000003BEC7BEE63E663E663E66322 +:10246000E663E663E663666226600660067FFE3F1B +:10247000FC00000102040810204080000129112402 +:102480001FBECFEFD8E0DEBFCDBF12E0A0E0B1E0CD +:10249000EAE5F4E702C005900D92A23CB107D9F736 +:1024A00028E0A2ECB2E001C01D92A131B207E1F731 +:1024B00012E1CFE3D2E104C02197FE010E940C3A61 +:1024C000CE33D107C9F70E94B6290C942B3A0C944D +:1024D00000004F925F926F927F928F929F92AF9285 +:1024E000BF92CF92DF92EF92FF920F931F93CF9301 +:1024F000DF9300D000D0CDB7DEB74B015C012901DE +:102500003A016701780120E030E0A9010E944C35D2 +:1025100087FDA6C020E030E0A901C301B2010E94FE +:102520004C3587FD9DC020E030E0A901C801B6010F +:102530000E944C3587FD94C081E02091DB073091EB +:10254000DC072130310509F080E08093FC078092A0 +:10255000C1079092C207A092C307B092C4074092ED +:10256000C5075092C6076092C7077092C807C0920D +:10257000C907D092CA07E092CB07F092CC076091CE +:10258000EF077091F0078091F1079091F2070E9498 +:10259000513520E030E04AE754E40E945637698321 +:1025A0007A838B839C838092CD079092CE07A092F2 +:1025B000CF07B092D0079B01AC01C301B2010E94CA +:1025C000B2352B013C014092D1075092D207609264 +:1025D000D3077092D40729813A814B815C81C7016E +:1025E000B6010E9456376B017C01C092D507D0928C +:1025F000D607E092D707F092D8078091D90790913B +:10260000DA07019769F5A501940160E070E0CB015C +:102610000E94E9366093CD077093CE078093CF0771 +:102620009093D007A301920160E070E0CB010E947B +:10263000E9366093D1077093D2078093D3079093C4 +:10264000D407A701960160E070E0CB010E94E93653 +:102650006093D5077093D6078093D7079093D807D8 +:102660000F900F900F900F90DF91CF911F910F91CE +:10267000FF90EF90DF90CF90BF90AF909F908F90A2 +:102680007F906F905F904F90089580389105B0F4DF +:102690006034710598F4E3E7F4E290E1969FD0018D +:1026A000A0781124A80F6770E60FF11D9491A85E21 +:1026B000BC4F442321F08C91982B9C9308959095C6 +:1026C0008C919823FACFDF92EF92FF920F931F9392 +:1026D000CF93DF937C01D22E8B01040F111DEB01F0 +:1026E00077FF02C0D0E0C0E0C8010134110514F04A +:1026F00080E490E0C817D9073CF44D2DBE01C70116 +:102700000E9445132196F0CFDF91CF911F910F9139 +:10271000FF90EF90DF900895CF92DF92EF92FF92BB +:102720000F931F93CF93DF936B01122FEC017C016A +:10273000E40EF11CCE15DF0544F4202F412FB60125 +:10274000CE010E9463132196F5CFDF91CF911F91A7 +:102750000F91FF90EF90DF90CF9008952F923F92CE +:102760004F925F926F927F928F929F92AF92BF92A1 +:10277000CF92DF92EF92FF920F931F93CF93DF934D +:1027800000D01F92CDB7DEB7C22ED12C9601280FF4 +:10279000391F37FD4FC0803891050CF04BC0E982DE +:1027A0004A017B013C01402E512C160127E0220EEC +:1027B000311C93E0359427949A95E1F78B01B12C65 +:1027C000A12C1B821A82EA81FB8183E0F595E795B3 +:1027D0008A95E1F7EA0DFB1DE80DF91DE4918A8168 +:1027E0009B818770992720E830E002C035952795B6 +:1027F0008A95E2F7C901F0E0E223F923EF2B41F0DB +:102800004981B8018A819B81860D971D0E944513DD +:102810008A819B8101969B838A838C159D059CF2FE +:10282000A20CB31C0F5F1F4FC8018E199F0984159E +:1028300095053CF20F900F900F90DF91CF911F9173 +:102840000F91FF90EF90DF90CF90BF90AF909F904F +:102850008F907F906F905F904F903F902F90089552 +:102860000F931F93CF93DF93EC018B0140E0019610 +:102870000E94451340E0B801CE0101970E94451324 +:10288000B8016F5F7F4F40E0CE010E944513B80151 +:102890006150710940E0CE010E94451340E0B8014B +:1028A000CE01DF91CF911F910F910C94451380E0E1 +:1028B000E8E1F3E081118FEF00248193819381930C +:1028C00081930394D1F7EDEFF7E01786168615860E +:1028D000148608956F927F928F929F92AF92BF92CB +:1028E000CF92DF92EF92FF920F931F93CF93DF93DC +:1028F000803891050CF057C0603471050CF053C05E +:102900007B0137E0E322FF2433E0759567953A9524 +:10291000E1F7DB01B695BA2FAA27B795A7955D0118 +:10292000C0E8AC0EB11CA80EB91EA80FB91FA85E56 +:10293000BC4F00E810E0081B190B90E080E0E8E0D5 +:10294000F0E04F018E189F0830E0FA01E80FF91F00 +:10295000C4917D906D01D1E0CD1AD1080E2C01C03B +:10296000CC0F0A94EAF77C2AE6017882E114F1049C +:1029700099F06730710581F0E491EC01CA0DDB1D1F +:10298000C85EDC4FF0E0082C02C0F595E7950A948C +:10299000E2F7F881EF2BE8830196821793071CF486 +:1029A0000817190791F6DF91CF911F910F91FF90B2 +:1029B000EF90DF90CF90BF90AF909F908F907F90DF +:1029C0006F900895AF92BF92CF92DF92EF92FF92F5 +:1029D0000F931F93CF93DF936C017B018B01040F47 +:1029E000151FEB015E01AE18BF08C017D10759F0E3 +:1029F0006991D601ED91FC910190F081E02DC60125 +:102A00000995892B79F7C501DF91CF911F910F911E +:102A1000FF90EF90DF90CF90BF90AF900895FC01B2 +:102A2000538D448D252F30E0842F90E0821B930B33 +:102A3000541710F0CF96089501970895FC01918DD9 +:102A4000828D981761F0A28DAE0FBF2FB11D5D96DC +:102A50008C91928D9F5F9F73928F90E008958FEF7E +:102A60009FEF0895FC01918D828D981731F0828D32 +:102A7000E80FF11D858D90E008958FEF9FEF089589 +:102A8000FC01918D228D892F90E0805C9F4F821BED +:102A900091098F739927089588E197E00E94401566 +:102AA00021E0892B09F420E0822F089580E090E056 +:102AB000892B29F00E944C1581110C940000089577 +:102AC000FC01A48DA80FB92FB11DA35ABF4F2C91A3 +:102AD000848D90E001968F739927848FA689B7899A +:102AE0002C93A089B1898C91837080648C93938D91 +:102AF000848D981306C00288F389E02D80818F7D34 +:102B000080830895EF92FF920F931F93CF93DF93EB +:102B1000EC0181E0888F9B8D8C8D98131AC0E88919 +:102B2000F989808185FF15C09FB7F894EE89FF89E8 +:102B30006083E889F98980818370806480839FBF86 +:102B400081E090E0DF91CF911F910F91FF90EF9086 +:102B50000895F62E0B8D10E00F5F1F4F0F73112796 +:102B6000E02E8C8D8E110CC00FB607FCFACFE889D1 +:102B7000F989808185FFF5CFCE010E946015F1CFE4 +:102B8000EB8DEC0FFD2FF11DE35AFF4FF0829FB745 +:102B9000F8940B8FEA89FB8980818062CFCFCF9335 +:102BA000DF93EC01888D8823B9F0AA89BB89E88975 +:102BB000F9898C9185FD03C0808186FD0DC00FB61B +:102BC00007FCF7CF8C9185FFF2CF808185FFEDCF99 +:102BD000CE010E946015E9CFDF91CF910895833037 +:102BE00081F028F4813099F08230A9F0089587307F +:102BF000A9F08830C9F08430B1F4809180008F7DD5 +:102C000003C0809180008F7780938000089584B501 +:102C10008F7784BD089584B58F7DFBCF8091B00000 +:102C20008F778093B00008958091B0008F7DF9CFA9 +:102C3000CF93DF93282F30E0F901EB59FD4D8491BC +:102C4000F901EF5AFD4DD491F901E35CFD4DC491BA +:102C5000CC23A1F081110E94EF15EC2FF0E0EE0FD4 +:102C6000FF1FED5CFD4DA591B491EC91ED2381E04A +:102C700090E009F480E0DF91CF91089580E090E04A +:102C8000FACF1F93CF93DF93282F30E0F901EB5950 +:102C9000FD4D8491F901EF5AFD4DD491F901E35CAA +:102CA000FD4DC491CC23A9F0162F81110E94EF1580 +:102CB000EC2FF0E0EE0FFF1FE75DFD4DA591B49105 +:102CC0008FB7F894EC91111108C0D095DE23DC93F6 +:102CD0008FBFDF91CF911F910895DE2BF8CFCF9357 +:102CE000DF9390E0FC01EF5AFD4D2491835C9D4DF4 +:102CF000FC0184918823C9F090E0880F991FFC01A2 +:102D0000E15EFD4DA591B491FC01E75DFD4DC591DE +:102D1000D49161110DC09FB7F8948C9120958223B6 +:102D20008C938881282328839FBFDF91CF910895BA +:102D3000623051F49FB7F8943C91822F80958323A1 +:102D40008C93E8812E2BEFCF8FB7F894EC912E2B3C +:102D50002C938FBFEACF1F93CF93DF93182FEB01F4 +:102D600061E00E946F16209739F460E0812FDF91B7 +:102D7000CF911F910C944116CF3FD10511F461E022 +:102D8000F5CFE12FF0E0EB59FD4DE491E33031F167 +:102D900040F4E130B1F0E230E1F0C038D1057CF729 +:102DA000E4CFE73029F1E83059F1E430B1F7809110 +:102DB0008000806280938000D0938B00C0938A0053 +:102DC00004C084B5806884BDC7BDDF91CF911F91D9 +:102DD000089584B5806284BDC8BDF7CF809180001E +:102DE000806880938000D0938900C0938800EDCFE5 +:102DF0008091B00080688093B000C093B300E5CFAD +:102E00008091B00080628093B000C093B400DDCFA9 +:102E10003FB7F8948091DC029091DD02A091DE0230 +:102E2000B091DF0226B5A89B05C02F3F19F001968F +:102E3000A11DB11D3FBFBA2FA92F982F8827BC0114 +:102E4000CD01620F711D811D911D42E0660F771F3C +:102E5000881F991F4A95D1F708958F929F92AF923C +:102E6000BF92CF92DF92EF92FF924B015C010E94E2 +:102E700008176B017C010E9408176C197D098E09E7 +:102E80009F09683E734081059105A8F321E0821AED +:102E90009108A108B10888EEC80E83E0D81EE11C95 +:102EA000F11C81149104A104B10429F7FF90EF9063 +:102EB000DF90CF90BF90AF909F908F9008952FB7E5 +:102EC000F8946091D8027091D9028091DA029091C1 +:102ED000DB022FBF089584E98093BC008091BC0081 +:102EE00084FDFCCF08958093BB0084E88093BC00F0 +:102EF0008091BC0087FFFCCF089584EA8093BC00DA +:102F00008091BC0087FFFCCF88E70C9473170E9468 +:102F10007D1780E48093BB0084E88093BC00E8E1E7 +:102F2000F3E09091BC0097FFFCCF91919093BB0090 +:102F30008093BC0097E0E831F90799F78091BC00D5 +:102F400087FFFCCF0C946B17CF93C82F0E947D177F +:102F500080E00E9473178C2F0E947317CF910C94FE +:102F60006B17480F592F511D4138510514F040E897 +:102F700050E0481BFB0177FD379633E0F595E79568 +:102F80003A95E1F7F695FE2FEE27F795E795E80FCE +:102F9000F91FE85EFC4F6770772781E090E001C081 +:102FA000880F6A95EAF7382F213041F4415078F0C4 +:102FB0008191DF011197832B8C93F8CF809541503D +:102FC00030F09191DF01119798239C93F8CF0895E9 +:102FD000CF92DF92EF92FF920F93CF93DF936C012A +:102FE0007B01C42FD22F202F0E94B117B7016D0F84 +:102FF000711D61507109603471052CF4202F4C2F24 +:10300000C6010E94B117202F4D2FB701C6010E94A3 +:103010006313C6018C0F911D202F4D2FB70101970F +:10302000DF91CF910F91FF90EF90DF90CF900C94B4 +:1030300063132F923F924F925F926F927F928F9283 +:103040009F92AF92BF92CF92DF92EF92FF920F9337 +:103050001F93CF93DF93CDB7DEB72A970FB6F894BF +:10306000DEBF0FBECDBF9A8389836A3061F5DC0174 +:1030700052968C91B8E08B9F90011124E981FA81DE +:1030800086859785820F931F978786871586148676 +:1030900081E090E02A960FB6F894DEBF0FBECDBF58 +:1030A000DF91CF911F910F91FF90EF90DF90CF9024 +:1030B000BF90AF909F908F907F906F905F904F9058 +:1030C0003F902F9008956D3019F329813A813A8706 +:1030D0002987D9011C96AD90BC90B0E8AB16B1041D +:1030E0000CF07BC0F901C684D784F0E4CF16D1047C +:1030F0000CF073C0D90152966C90529745E095013F +:10310000649E200D311D1124121613060CF065C0AB +:10311000262C312C910153E0220F331F5A95E1F7F1 +:103120002C0D3D1D121613060CF057C05196BC9184 +:10313000BB83E985FA85F089FC83649FB001112483 +:103140009B01215E324E3A832983712CE981FA81F9 +:103150008491F5E07F1201C080E0460138E0532EF3 +:10316000282F30E03E832D834C8080FF4B80411020 +:1031700004C03B818C813817E1F010E000E00615B7 +:10318000C0F4D501A00FB11FB887AF83F12CE12C9B +:10319000E61460F4B701680D791D442D8F81988580 +:1031A0000E944513BFEFEB1AFB0AF2CF0F5F1F4FD0 +:1031B000E6CF8D819E81959587955A94820C931CBC +:1031C0005110CECF7394E981FA813196FA83E98365 +:1031D000A20CB31CF6E07F12B9CFA985BA8552962E +:1031E0002C915297422F50E01C968D919C91B6E005 +:1031F0002B9F800D911D1124E985FA859587848781 +:103200002389222309F444CF6AEF64039001659F68 +:10321000300D112420583F4F281739070CF038CFB4 +:10322000DF010190F081E02D0190F081E02D6AE056 +:10323000CD0109952DCF0F931F93CF93DF938C0171 +:10324000D0E0C0E0F801EC0FFD1F6491662341F06F +:103250008DEF97E00E941918892B11F02196F2CF7B +:10326000CE01DF91CF911F910F910895682F8DEFBF +:1032700097E00C941918089590E080E008958091EB +:103280007A00806980937A008EE480937C0061E00C +:1032900070E080E090E00E942D1783B7817F82600C +:1032A00083BF80E130E020E093B7916093BF8895C1 +:1032B00093B79E7F93BF90917A0096FDFCCF40918B +:1032C000780050917900240F351F815069F7809163 +:1032D0007A008F7780937A0084E0369527958A95D7 +:1032E000E1F750E040E064EB7BE281E190E00E9496 +:1032F0008636C901089588EC80937C0080917A001D +:10330000806880937A0065E070E080E090E00E9441 +:103310002D1780917A00806480937A0080917A00E2 +:1033200086FDFCCF60917800709179006B537140FD +:1033300090E080E00E94513526EF38E24CE95FE3EF +:103340000E945637089590917A00906990937A0080 +:103350008E50806480937C0083B7817F826083BFBE +:1033600020E290E080E033B7316033BF889533B717 +:103370003E7F33BF30917A0036FDFCCF409178001C +:1033800050917900840F951F215069F720917A00A0 +:103390002F7720937A0025E0969587952A95E1F777 +:1033A00008958FE00E94A319A091E302B091E40276 +:1033B0009C010E94DA360E94533528E539E743E341 +:1033C00053E40E9456370E94CF37CB010895809175 +:1033D000EC02882369F086E00E941816892B41F0E0 +:1033E0006AE070E080E090E00E942D171092EC02FD +:1033F00008956F927F928F929F92AF92BF92CF92D9 +:10340000DF92EF92FF920F93CF93DF937C01C62F51 +:1034100001E020E340E370E060E00E948C1357017C +:1034200023E0A20EB11C00E02AE24AE263E070E071 +:10343000C5010E948C1370E060E0C7010E94301447 +:1034400067013FE2C30ED11C70E060E0C6010E943C +:1034500030146FE270E0C7010E9430146FE270E038 +:10346000C6010E943014EC2FF0E0EE0FFF1FE15771 +:10347000FE4F8080918053E0E52EF12CD12CC12CA1 +:1034800060E8662E712CD0E0C0E0FE0133E0F595D7 +:10349000E7953A95E1F7EC0DFD1DE80DF91DE49176 +:1034A000CE0187709927930102C0359527958A959B +:1034B000E2F7C901F0E0E223F923EF2B69F0CE0136 +:1034C000880F991F8C0F9D1F01E023E043E0B70197 +:1034D0008A0D9B1D0E948C132196CE30D105A9F632 +:1034E00032E0C30ED11C83E0E80EF11C2DE2E2169F +:1034F000F10449F6DF91CF910F91FF90EF90DF90AB +:10350000CF90BF90AF909F908F907F906F900895D5 +:103510000F931F93CF9380914D01882399F0CFEFA4 +:103520000FEE11E061E085E00E944116C8010197AD +:10353000F1F760E085E00E944116C8010197F1F7BC +:10354000C15081F7CF911F910F9108952F923F9213 +:103550004F925F926F927F928F929F92AF92BF92A3 +:10356000CF92DF92EF92FF920F931F93CF93DF934F +:1035700010E000E0D0E0C0E03EE3E32EF12C40ECB0 +:10358000C42ED12CAA24A394B12C60E2662E712CF7 +:1035900070E4272E312C4C2E86E00E94181621E074 +:1035A000892B09F020E02093EC02F0921703E092BF +:1035B0001603D0921503C0921403B0921303A09285 +:1035C000120382E890E0909311038093100380919E +:1035D00010039091110395958795582E9FE15912EC +:1035E00043C0F0921703E0921603D0921503C092E5 +:1035F0001403B0921303A0921203EEEBF0E0F093E9 +:103600001103E09310039FE5592E0E94571482E0A6 +:1036100080930F0810930A0800930908E0E3F0E094 +:10362000F0930C08E0930B088EE50E943619109277 +:103630000A081092090870920C0860920B08912CED +:10364000812C841438F580910A03F40196E0989F48 +:10365000E00DF11D1124E15BFE4F80810E943619BF +:10366000EFEF8E1A9E0AEDCFF0E65F12CECFF0920A +:103670001703E0921603D0921503C0921403B09280 +:103680001303A0921203309211032092100380E2E0 +:10369000582EBBCF10930A080093090870920C08AB +:1036A00060920B08852D0E9436190E94E7190E942E +:1036B000871786E00E941816892B09F088CF809121 +:1036C000EC02811184CF80900A03F6E08F9E4001C6 +:1036D0001124C401815B9E4F4C01FC01EC0FFD1FC6 +:1036E00050820E94881A6AE070E080E090E00E94B8 +:1036F0002D172196005F1F4FC530D10509F04BCF24 +:10370000F4011582DF91CF911F910F91FF90EF90FF +:10371000DF90CF90BF90AF909F908F907F906F90F1 +:103720005F904F903F902F9008953F924F925F92FD +:103730006F927F928F929F92AF92BF92CF92DF92C1 +:10374000EF92FF920F931F93CF93DF93CDB7DEB726 +:103750002E970FB6F894DEBF0FBECDBF80910D033C +:10376000882309F4A5C11092B5071092B6071092EC +:10377000B7071092B8078090B5079090B607A09051 +:10378000B707B090B807C090FE02D090FF02E0905B +:103790000003F0900103A7019601C501B4010E9446 +:1037A000E9362B013C0120E030E0A9010E94FE3700 +:1037B00018160CF0A0C1C301B2010E94CF3780914E +:1037C0004801882309F4B8C1C092BD07D092BE0752 +:1037D000E092BF07F092C007E12CF12C00EA10E460 +:1037E00020E030E040E450E46E31710540F0E12C1F +:1037F000F12C00E81FE320E030E040E05FE360E010 +:1038000070E080E391E40E9469128091FB078823B5 +:1038100009F42AC10E945F176D837E838F83988786 +:103820008091E3079091E407A091E507B091E60746 +:103830004D815E816F817885481B590B6A0B7B0B2C +:103840008091EF079091F007A091F107B091F207F6 +:10385000481759076A077B0708F406C1E091DD079E +:10386000F091DE0780819181A281B38189839A835F +:10387000AB83BC83E091E107F091E2079C01AD01CD +:1038800060817181828193810E94E9364B015C01E4 +:103890002091EB073091EC074091ED075091EE0736 +:1038A00069817A818B819C810E94E9366B017C0160 +:1038B0002091D1073091D2074091D3075091D4077E +:1038C000C501B4010E94B2352091E7073091E807A5 +:1038D0004091E9075091EA070E94EA362B013C012A +:1038E0004092E7075092E8076092E9077092EA0772 +:1038F0003090FC0731101AC02091CD073091CE07CF +:103900004091CF075091D007C701B6010E94B23550 +:103910009B01AC01C301B2010E94E9366093E70745 +:103920007093E8078093E9079093EA074090E707D0 +:103930005090E8076090E9077090EA071091F70748 +:103940009091F8079E87A091F907AD870091FA073B +:10395000212F392F4A2F502FC301B2010E94FE3769 +:1039600018160CF0CCC0812F9E85AD85B02F8093AA +:10397000E7079093E807A093E907B093EA0733209D +:1039800009F4D6C02091CD073091CE074091CF07E2 +:103990005091D007C501B4010E94B2354B015C01C2 +:1039A0002091D5073091D6074091D7075091D8077D +:1039B000C701B6010E94B2359B01AC016091E707D7 +:1039C0007091E8078091E9079091EA070E94E93633 +:1039D000A50194010E94EA366B017C019B01AC01B8 +:1039E000612F7E858D85902F0E944C3587FD18C0F4 +:1039F0001091F3079091F4079E87A091F507AD878A +:103A00000091F607212F392F4A2F502FB601C701F9 +:103A10000E944C3587FD04C01C2DDE86ED860F2DDF +:103A2000E091DF07F091E007812F9E85AD85B02FF3 +:103A300080839183A283B38389819A81AB81BC8186 +:103A40008093EB079093EC07A093ED07B093EE07FC +:103A50008D819E81AF81B8858093E3079093E407C1 +:103A6000A093E507B093E6076091B9077091BA0794 +:103A70008091BB079091BC070E94C83789E02E96C1 +:103A80000FB6F894DEBF0FBECDBFDF91CF911F916F +:103A90000F91FF90EF90DF90CF90BF90AF909F90ED +:103AA0008F907F906F905F904F903F900C94AB16EB +:103AB00080910C03609144017091450181110EC009 +:103AC0008091FC029091FD0220910B03BC01222306 +:103AD00029F060914301680F792F711D90E080E01B +:103AE0000E9451356093B5077093B6078093B7076E +:103AF0009093B80740CEC301B20190585ECE80913A +:103B0000F3079091F407A091F507B091F607898724 +:103B10009A87AB87BC879C01AD01C301B2010E94AB +:103B20004C3587FF2CCF89859A85AB85BC851FCF07 +:103B3000812C912C540134CF20E030E040E05FE351 +:103B4000C701B6010E94EA369B01AC01C501B40170 +:103B50000E94FE3718164CF41092B9071092BA075B +:103B60001092BB071092BC077FCF80E090E0AFE7D8 +:103B7000B3E48093B9079093BA07A093BB07B093BF +:103B8000BC0772CF4F925F926F927F928F929F92FB +:103B9000AF92BF92CF92DF92EF92FF92CF93DF93DB +:103BA0008090E5029090E602A090E702B090E802D3 +:103BB000C0910A03D0E0C501B4010E94C8376B016F +:103BC0007C0120E030E048E453E4C501B4010E94E8 +:103BD0004C3593E0CC0FDD1F9A95E1F7CE5FDE4FB9 +:103BE00087FF31C02881398150E040E025513109FB +:103BF00041095109C701B6010E94E83928EC30E0BB +:103C000040E050E00E948636CA01B9016B5E7F4FEA +:103C10008F4F9F4F0E9453356093FE027093FF02B7 +:103C20008093000390930103DF91CF91FF90EF9079 +:103C3000DF90CF90BF90AF909F908F907F906F90CC +:103C40005F904F9008954A805B80712C612C20E03A +:103C500030E04CE853E4C501B4010E944C3587FFC5 +:103C60001FC088809980B12CA12CA7019601285CE7 +:103C7000310941095109C301B201681979098A0959 +:103C80009B090E94E83920E530E040E050E00E94C6 +:103C90008636CA01B901680D791D8A1D9B1DBACFF0 +:103CA0002C813D8150E040E024193509460957092F +:103CB000C701B60168517140810991090E94E83934 +:103CC00020E530E040E050E00E948636CA01B901AC +:103CD000640D751D861D971D9DCFFC010190002070 +:103CE000E9F73197AF01481B590BBC018DEF97E005 +:103CF0000C94E2148F929F92AF92BF920F931F93F6 +:103D0000CF93DF93CDB7DEB7A1970FB6F894DEBFA0 +:103D10000FBECDBF19A2423008F44AE08E010F5DFC +:103D20001F4F842E912CB12CA12CA50194010E942F +:103D3000B836E62FB901CA01EA30F4F4E05DD801E3 +:103D4000EE938D01232B242B252B79F790E080E037 +:103D5000109719F0CD010E946D1EA1960FB6F89430 +:103D6000DEBF0FBECDBFDF91CF911F910F91BF90EE +:103D7000AF909F908F900895E95CE1CFCF92DF9252 +:103D8000EF92FF92CF93DF9397FF19C06B017C01F5 +:103D90008DE20E943619EC0166277727CB016C195A +:103DA0007D098E099F094AE00E947A1E8C0F9D1F93 +:103DB000DF91CF91FF90EF90DF90CF9008954AE090 +:103DC000DF91CF91FF90EF90DF90CF900C947A1E0F +:103DD0004F925F926F927F928F929F92AF92BF921B +:103DE000CF92DF92EF92FF920F931F93CF936B01CD +:103DF0007C01742EAC019B010E945B38882399F0F2 +:103E000083EB92E0CF911F910F91FF90EF90DF90A5 +:103E1000CF90BF90AF909F908F907F906F905F906A +:103E20004F900C946D1E46015701E894B7F82FEFA0 +:103E30003FEF4FE75FE7C501B4010E945B38811196 +:103E40000DC02FEF3FEF4FE75FE7C501B4010E94C0 +:103E50004C3518161CF487EB92E0D4CF2FEF3FEFD0 +:103E60004FE75FE4C701B6010E94FE3718161CF445 +:103E70008BEB92E0C7CF2FEF3FEF4FE75FECC7012F +:103E8000B6010E944C3587FDF3CF20E030E0A90158 +:103E9000C701B6010E944C3510E000E087FF08C062 +:103EA0008DE20E9436198C01F7FAF094F7F8F0943D +:103EB000C0E060E070E080E09FE37C1641F020E02D +:103EC00030E040E251E40E945637CF5FF6CFA701C1 +:103ED00096010E94EA362B013C010E94CF374B012C +:103EE0005C014AE00E947A1E7C01E00EF11ECC23A8 +:103EF000B1F1C501B4010E9451359B01AC01C30170 +:103F0000B2010E94E9364B015C018EE20E94361933 +:103F1000E80EF91EC15018F120E030E040E251E413 +:103F2000C501B4010E94B2352B013C010E94CF377C +:103F30004B01B12CA12C4AE0C501B4010E947A1EAC +:103F4000E80EF91EC501B4010E9451359B01AC0178 +:103F5000C301B2010E94E9364B015C01DBCFC7010E +:103F6000CF911F910F91FF90EF90DF90CF90BF9076 +:103F7000AF909F908F907F906F905F904F9008953B +:103F8000CF92DF92EF92FF920F931F93CF93DF9325 +:103F9000C82F81E0DC2FD827D0930E08C0930D08DE +:103FA00080930F080C2F2EE046E661E370E081E07D +:103FB00090E00E94E81720910E0330910F03253FF7 +:103FC00081E03807B8F4A4E6B0E00E94DA3624EFC6 +:103FD00031E040E050E00E948636BA01A9014E5F10 +:103FE0005F4F6F4F7F4F2EE061E370E081E090E024 +:103FF0000E948C136091B5077091B6078091B70746 +:104000009091B8070E94C8379B01AC01A4E6B0E0CC +:104010000E94A53634EFC32EDD24D394E12CF12C7D +:10402000A70196010E948636DA01C9010296A11DF8 +:10403000B11D02970C2F2DE043E062E370E00E9477 +:104040008C136091B5077091B6078091B707909176 +:10405000B8070E94C8379B01AC01A4E6B0E00E94FB +:10406000A536A70196010E948636DA01C90102969B +:10407000A11DB11D039724E045E06CE370E00E94B0 +:104080008C136091B5077091B6078091B707909136 +:10409000B8070E94C8379B01AC01A4E6B0E00E94BB +:1040A000A536A70196010E94863689019A010E5F06 +:1040B0001F4F2F4F3F4F0150110941E3E42EF12CC8 +:1040C0004D2FB701C8010E9445138FEFE81AF80A77 +:1040D0008DE3E816F104A1F76091B5077091B6077A +:1040E0008091B7079091B8070E94C8379B01AC0137 +:1040F000A4E6B0E00E94A53624EF31E040E050E0B5 +:104100000E948636DA01C9010296A11DB11D0397EE +:10411000ED2E04E025E047E552E16BE370E00E94FC +:10412000AE130C2F2EE047E161E370E088E690E0EB +:104130000E94E8176091B9077091BA078091BB0798 +:104140009091BC070E94C8379B01AC012F5F3109D9 +:1041500041095109A7E1B0E00E94A536CC24C394DF +:10416000DD24DA94ED2CFD2CA70196010E94863601 +:10417000422F2EE061E370E088E690E00E948C130D +:10418000C0930E08D0930D0882E090E090930A0847 +:104190008093090807E310E010930C0800930B08C4 +:1041A0006091B5077091B6078091B7079091B807F5 +:1041B00040E00E94E81E88EF0E94361985E592E1F2 +:1041C0000E941B1989E690E090930A0880930908E1 +:1041D00010930C0800930B086091B9077091BA070F +:1041E0008091BB079091BC070E94C8379B01AC012E +:1041F0002F5F310941095109A4E6B0E00E94A536BC +:10420000A70196010E948636CA01B9010E94BE1E0E +:1042100083E592E10E941B19D0930E08C0930D080C +:10422000DF91CF911F910F91FF90EF90DF90CF9092 +:1042300008956F927F928F929F92AF92BF92CF928A +:10424000DF92EF92FF920F931F93CF93DF93B09083 +:104250000A0377247394B11001C0712C809142013C +:104260008150990B1092170310921603880F991F13 +:10427000909315038093140381E090E090931303CF +:10428000809312038B2D90E0880F991F9093110358 +:104290008093100386E00E94181621E0892B09F014 +:1042A00020E02093EC02FF24F39472E0972EE6E0E6 +:1042B0008E2EFCE0CF2ED12C0E945714C0911003FB +:1042C000D0911103D595C795EC2E8E011127C80109 +:1042D000870D911D77FC9A958B199109712C97FD8B +:1042E00006C08330910514F082E090E0782EF092C1 +:1042F0000E0810920D0890920F0810920A08109262 +:10430000090810920C0810920B0884E19DE10E94AC +:104310001B1910920E08F0920D0810920A081092C4 +:104320000908A72C072C000CBB08C501019654E016 +:10433000880F991F5A95E1F790930C0880930B080A +:1043400082E19DE10E941B196C2E671890E080E0CD +:1043500098012A193B095901209142018C010F5FF4 +:104360001F4F6216D0F4D0920A08C0920908980133 +:1043700044E0220F331F4A95E1F730930C08209355 +:104380000B088A0D9B1D889E9001899E300D11247B +:10439000C901815B9E4F0E946D1EC801639403306A +:1043A0001105D1F60E94E7190E94871786E00E9446 +:1043B0001816892BB9F48091EC02811113C00E9468 +:1043C000881AE0920A03DF91CF911F910F91FF901D +:1043D000EF90DF90CF90BF90AF909F908F907F90A5 +:1043E0006F900895BC2E68CF0E94263A1F93CF93FA +:1043F000DF93EC01162F0E947036181739F0612FE9 +:10440000CE01DF91CF911F910C947836DF91CF913F +:104410001F910895AF92BF92CF92DF92EF92FF92D9 +:104420000F931F93CF93DF936091470182E090E059 +:104430000E94F6216091460183E090E00E94F621FF +:104440006091450184E090E00E94F6216091440172 +:1044500085E090E00E94F6216091430186E090E0C3 +:104460000E94F62160914B0187E090E00E94F621C6 +:1044700060914A0188E090E00E94F6216091490134 +:1044800089E090E00E94F62160917F018AE090E04F +:104490000E94F621609148018BE090E00E94F62195 +:1044A00060914D018CE090E00E94F62160910A033A +:1044B0008DE090E00E94F621609142018EE090E054 +:1044C0000E94F62160914E018FE090E00E94F6215B +:1044D0006091E90280E190E00E94F621609107037B +:1044E00081E190E00E94F6216091EB0282E190E090 +:1044F0000E94F6216091EA0283E190E00E94F62199 +:1045000084E1E82EF12C10E006E0809142011817BA +:10451000B8F5109F60011124D0E0C0E0FE01EC0D61 +:10452000FD1DE15BFE4F6081C7018C0F9D1F0E9446 +:10453000F6212196C630D10589F7670186E0C80EBD +:10454000D11C88E0189FE0011124CE5FDE4F8EE081 +:10455000E80EF11C69812296C6010E94F6215601DF +:1045600082E0A80EB11CFE0132976081C60101965F +:104570000E94F6216501AE14BF0461F71F5FC5CF2D +:10458000DF91CF911F910F91FF90EF90DF90CF902F +:10459000BF90AF9008958F929F92AF92BF92CF92AB +:1045A000DF92EF92FF92CF936FEF70E089E00E946D +:1045B000AB168BEA94E00197F1F78EE00E94A31905 +:1045C0007C018AE00E9418169091C202981729F087 +:1045D00091E0909302038093C202809101019FEFCA +:1045E000980F90930101811106C00E94D1199093F8 +:1045F0000903809308036091B9077091BA0780910D +:10460000BB079091BC070E94C83789E00E94AB1697 +:104610008090E5029090E602A090E702B090E80258 +:10462000B70190E080E00E945135A50194010E94FD +:10463000E9362DEC3CEC4CE45DE30E94B235A5017B +:1046400094010E94EA366093E5027093E60280933B +:10465000E7029093E8020E94C21D60910E037091E0 +:104660000F0390E080E00E9451356B017C012091A6 +:10467000B5073091B6074091B7075091B8070E942F +:104680004C358111B6C02091FE023091FF0240915D +:10469000000350910103C701B6010E94E9366B0186 +:1046A0007C0120E030E0A9010E94FE3718160CF0D2 +:1046B00096C020E030E040EA50E4C701B6010E9415 +:1046C000FE3718160CF495C06091FC027091FD0243 +:1046D00090E080E00E9451352091FE023091FF026F +:1046E00040910003509101030E94E9366B017C0167 +:1046F00020E030E0A9010E94FE3718160CF088C0B7 +:10470000C701B6010E94CF376530710508F084C03B +:1047100080918001811105C080914C0181110E941E +:10472000881A81E08093800110924C0180910E03E1 +:1047300090910F03853F21E0920710F01092000145 +:1047400020910001211141C0843F9140F0F56FEFAD +:1047500070E089E00E94AB160E94881AC1E0C09305 +:1047600000010E9419210E940A22C09302038EE0D8 +:104770000E94A319BC0190E080E00E945135609333 +:10478000E5027093E6028093E7029093E8021092AC +:10479000F6028091FC029091FD022CE231E0309310 +:1047A00017032093160320E233E030931503209380 +:1047B00014032AE030E03093130320931203880F90 +:1047C000991F9093110380931003CF91FF90EF9066 +:1047D000DF90CF90BF90AF909F908F90089520E092 +:1047E00030E040EA50ECC701B6010E944C3587FF2B +:1047F0006BCF6091FE027091FF0280910003909157 +:1048000001030E94CF3770930F0360930E035CCFB8 +:10481000C701B601905876CF1092800187CF0C94D3 +:1048200070362F923F924F925F926F927F928F924B +:104830009F92AF92BF92CF92DF92EF92FF920F932F +:104840001F93CF93DF938C0186E080930F0881E064 +:1048500080930E0810920D086091D5027091D602D7 +:10486000072E000C880B990B0E9453352B013C013D +:104870004FECC42E42E0D42E7601C2E0D0E05AE0E4 +:10488000A52EB12CBE010D2E000C880B990B0E9499 +:1048900053359B01AC0160E070E080E291E40E943E +:1048A00003389B01AC01C301B2010E9456370E943C +:1048B000C837CB01B5010E94F839F7018193919374 +:1048C0007F012197F8F61093D6020093D502C3EC2E +:1048D000D2E094E0E92EF12C22E0822E912C3AE0F5 +:1048E000232E312CB401092C000C880B990B0E944B +:1048F00053359B01AC0160E070E080E291E40E94DE +:1049000003382B013C016091D5027091D602072E2D +:10491000000C880B990B0E945335A30192010E9451 +:1049200056370E94C837CB01B1010E94F839F60111 +:1049300020813181821B930BF2E3F89FB001F99F34 +:10494000700D1124072E000C880B990B0E94533513 +:10495000288139814A815B810E94EA362B013C0122 +:1049600020E030E0A9010E944C3581117CC04882D2 +:1049700059826A827B8201E022E346E270E060E0D5 +:10498000C70104970E948C138EECA82EBB24BA9406 +:104990000FEF1FEF288139814A815B8160E070E071 +:1049A00080E890E40E94E9362B013C01B5010B2C14 +:1049B000000C880B990B0E9453359B01AC01C3017D +:1049C000B2010E94EA360E94C837F0920A08E092CB +:1049D000090870930C0860930B08F60160817181DF +:1049E000600F711F072E000C880B990B0E94BE1ED2 +:1049F0000F5F1F4FF2E3AF0EB11C0230110551F6ED +:104A0000249621E0821A910882E0C80ED11CECE2C3 +:104A1000EE0EF11CF8E8EF16F10409F063CF00E0A8 +:104A200022E040E870E060E090E080E00E948C13BB +:104A30002DE040E863E370E090E080E00E948C139A +:104A4000DF91CF911F910F91FF90EF90DF90CF906A +:104A5000BF90AF909F908F907F906F905F904F909E +:104A60003F902F900895C301B20190582DEC3CEC7B +:104A70004CE45FE30E94B235A30192010E94EA3642 +:104A8000688379838A839B8376CF4F925F926F92FC +:104A90007F928F929F92AF92BF92CF92DF92EF92CE +:104AA000FF920F931F93CF93DF93CDB7DEB72B9772 +:104AB0000FB6F894DEBF0FBECDBF90914E01E82F28 +:104AC000F0E09F01220F331F911126C0F901E55D2F +:104AD000FD4F40815181EE24E39400E124E260E344 +:104AE00070E080E390E00E94AE132B960FB6F8942E +:104AF000DEBF0FBECDBFDF91CF911F910F91FF9011 +:104B0000EF90DF90CF90BF90AF909F908F907F906D +:104B10006F905F904F900895923009F079C0E356FE +:104B2000F34E4490F901E352FE4FA080B180F12C86 +:104B3000E12C04E310E393E0592E27E0622EE41405 +:104B4000A0F6F501EE0DFF1D449180E1840F833046 +:104B500008F45CC081EF7816D1F082EF7816C1F1CD +:104B6000403F90F4193710F0085F10E088E0489F4C +:104B7000A0011124435E5A4E602F70E028E0812F7F +:104B800090E00E946A14185F80EF782E1DC04E39A5 +:104B9000D8F41D3710F0085F10E0C02ED12C812E04 +:104BA000912C459DA00111244D5B5C4E23E0B60184 +:104BB000C4010E946A1421E042E453E1B601C40139 +:104BC00003960E946A141C5F8FEFE81AF80AB7CFA9 +:104BD0004132D0F7193710F0085F10E0C02ED12C09 +:104BE000812E912C469DA0011124455A5D4E27E04F +:104BF000B601C4010E946A1421E042E453E1B60107 +:104C0000C40107960E946A14185FDECF742EDCCFB1 +:104C100080E390E090930A088093090881E390E094 +:104C200090930C0880930B0881E080930F08F901A2 +:104C3000EC53F34E65917491CE0101960E94453577 +:104C4000CE0101960E946D1E50CFCF93C82F86E0F3 +:104C50000E94181621E0892B09F020E02093EC0235 +:104C60000E94571480911003909111039595879598 +:104C70000E9411248C2F0E9445250E9487170E94B4 +:104C8000E71986E00E941816892B51F78091EC02F3 +:104C90008111E6CF0E94881A8091D5029091D602A8 +:104CA000CF910895109217031092160328E037E071 +:104CB000309315032093140324E630E0309313035C +:104CC00020931203880F991F909311038093100370 +:104CD00087E00E9425269C01220F331F3093170383 +:104CE00020931603865A9F4F880F991F90931503A0 +:104CF000809314038AE090E090931303809312034F +:104D0000309311032093100387E00E9425269C0115 +:104D1000220F331F30931703209316030996880F31 +:104D2000991F909315038093140381E090E0909372 +:104D3000130380931203309311032093100387E031 +:104D40000C9425262F923F924F925F926F927F9202 +:104D50008F929F92AF92BF92CF92DF92EF92FF928B +:104D60000F931F93CF93DF93182FE091ED02F0E0A4 +:104D7000EB57FE4F80818150990B109217031092D0 +:104D80001603880F991F909315038093140381E0F5 +:104D900090E09093130380931203812F90E0880F8B +:104DA000991F909311038093100386E00E941816B8 +:104DB00021E0892B09F020E02093EC0210920E08EC +:104DC00081E080930D0838E3632EE0901003F090AB +:104DD0001103F594E794AE2C6701DD249601211BA5 +:104DE0003109629EC001639E900D1124C80FD91F26 +:104DF000209709F1662777276C1B7D0B072E000C87 +:104E0000880B990B0E9453352AE939E949E15FE3A0 +:104E10000E94B2351B012C01BE01DD0F880B990BDE +:104E20000E9453359B01AC01C201B1010E94EA36D8 +:104E30000E94C837EB010E945714860102501109E5 +:104E40004E0185E0B82E93E0792E7A0CC090ED02E9 +:104E5000D12C17FD20C0F601EB57FE4F8081801743 +:104E60001106C9F0C4F0E5E8F1E070E060E0CF01C0 +:104E7000855891408C159D0534F48191680F711D02 +:104E8000F6CF1E2DA2CF872D8B19680FC401885431 +:104E900091090E94F919BA940F5F1F4F88E3880E99 +:104EA000911CB110D3CFE5E8F1E090E080E09F01E4 +:104EB000255831402C153D0524F42191820F911D78 +:104EC000F6CF8E0D0E9445250E9487170E94E71994 +:104ED00086E00E941816892BA1F68091EC028111C0 +:104EE000D0CF0E94881A8A2DDF91CF911F910F9108 +:104EF000FF90EF90DF90CF90BF90AF909F908F90FA +:104F00007F906F905F904F903F902F9008951F92E9 +:104F10000F920FB60F9211242F933F934F935F93ED +:104F20006F937F938F939F93AF93BF93EF93FF9371 +:104F300088E197E00E946015FF91EF91BF91AF91DA +:104F40009F918F917F916F915F914F913F912F91A1 +:104F50000F900FBE0F901F9018951F920F920FB6D3 +:104F60000F9211242F938F939F93EF93FF93E091D0 +:104F70002807F09129078081E0912E07F0912F07F3 +:104F800082FD1BC09081809131078F5F8F732091CC +:104F90003207821741F0E0913107F0E0E85EF84F08 +:104FA000958F80933107FF91EF919F918F912F9172 +:104FB0000F900FBE0F901F9018958081F4CF1F9215 +:104FC0000F920FB60F9211242F933F938F939F93BD +:104FD000AF93BF938091D8029091D902A091DA0249 +:104FE000B091DB023091D70223E0230F2D3758F523 +:104FF0000196A11DB11D2093D7028093D8029093F2 +:10500000D902A093DA02B093DB028091DC02909186 +:10501000DD02A091DE02B091DF020196A11DB11D5B +:105020008093DC029093DD02A093DE02B093DF0256 +:10503000BF91AF919F918F913F912F910F900FBE94 +:105040000F901F90189526E8230F0296A11DB11D01 +:10505000D2CF1F920F920FB60F9211242F933F932E +:105060004F935F936F937F938F939F93EF93FF93F0 +:1050700083B1817029B19091E202981709F49DC023 +:1050800030E0220F232F221F330B922F8093E20256 +:105090004091E102241709F490C02093E10220918D +:1050A000120330911303981719F0319521953109A6 +:1050B00040911003509111036091160370911703F2 +:1050C000240F351F261737070CF48BC020911203CD +:1050D00030911303981719F03195219531094091BA +:1050E0001003509111036091140370911503240F64 +:1050F000351F621773070CF46FC040911203509173 +:105100001303981719F051954195510920911003F7 +:1051100030911103240F351F309311032093100396 +:1051200041E0981340E02091E002421709F440C0AA +:105130002091120330911303981719F0319521959E +:1051400031096091100370911103E0911603F09101 +:105150001703260F371F2E173F070CF44CC0209162 +:10516000120330911303981719F0319521953109E5 +:105170006091100370911103E0911403F0911503F5 +:10518000260F371FE217F3078CF12091120330919D +:105190001303981719F03195219531098091100367 +:1051A00090911103820F931F90931103809310032A +:1051B0004093E00281E080930203FF91EF919F9181 +:1051C0008F917F916F915F914F913F912F910F90B0 +:1051D0000FBE0F901F901895209114033091150366 +:1051E0009BCF209116033091170396CF8091140323 +:1051F00090911503D9CF8091160390911703D4CFC6 +:1052000018950F931F93CF93DF93E8E1F7E0138294 +:10521000128288EE93E0A0E0B0E084839583A683B9 +:10522000B78389E992E09183808385EC90E095874C +:10523000848784EC90E09787868780EC90E0918B60 +:10524000808B81EC90E0938B828B82EC90E0958B4D +:10525000848B86EC90E0978B868B118E128E138E4A +:10526000148EEDEFF7E0138212821682178280E12E +:1052700080871582148212868BEA92E09183808364 +:10528000158614861786168681E0808B118A828B9C +:10529000138AC1ECD7E029EB37E03F8F2E8F2DEB3F +:1052A00037E03D8F2C8F25EB37E039A328A31AAECA +:1052B0001AAA1BAA1CAA1DAA40E050E06FE773E4DB +:1052C0004EAB5FAB68AF79AF44E650E060E070E0B2 +:1052D0004EA75FA768AB79AB21E030E0398F288F0C +:1052E0003B8F2A8F8BAF80E090E0A0E3B1E488830E +:1052F0009983AA83BB8380E090E0A0E0BFE38C8326 +:105300009D83AE83BF8380E090E0A0E8BFE3888701 +:105310009987AA87BB8780E090E0A0E3B1EC8C87F7 +:105320009D87AE87BF878DEC9CECACE4BDEB888B92 +:10533000998BAA8BBB8B80E090E0A0E2B1EC8C8BC8 +:105340009D8BAE8BBF8B0E945F170EA51FA528A952 +:1053500039A9601B710B820B930B6AA37BA38CA3EF +:105360009DA3DF91CF911F910F910895CF93DF936C +:10537000CDB7DEB72C970FB6F894DEBF0FBECDBF0A +:10538000789484B5826084BD84B5816084BD85B520 +:10539000826085BD85B5816085BD80916E0081602C +:1053A00080936E00109281008091810082608093D2 +:1053B00081008091810081608093810080918000D4 +:1053C0008160809380008091B10084608093B100FF +:1053D0008091B00081608093B00080917A008460F9 +:1053E00080937A0080917A00826080937A00809125 +:1053F0007A00816080937A0080917A00806880933F +:105400007A001092C1001092B90088E48093B8002D +:105410000E947D1780E00E94731709E712E2F801ED +:1054200084910E9473170F5F1F4FF2E208391F0724 +:10543000B1F70E946B1711E01093B8000E94871714 +:1054400081E28093050860E08EE00E946F1660E0C4 +:105450008FE00E946F1661E085E00E946F1661E0A8 +:1054600089E00E946F1662E087E00E946F1662E09A +:1054700088E00E946F1662E086E00E946F1662E08C +:105480008AE00E946F166FEF70E089E00E94AB1611 +:1054900060E085E00E94411680917A0087608093E9 +:1054A0007A0080917A00886080937A0078941093D3 +:1054B0006B00109368001BBB90E080E00E940F24FB +:1054C000182F81E090E00E940F24912F8F31984097 +:1054D00009F0C9C082E090E00E940F24182F83E0F9 +:1054E00090E00E940F24912F9093470180934601F2 +:1054F00084E090E00E940F24182F85E090E00E9445 +:105500000F24912F909345018093440186E090E011 +:105510000E940F248093430187E090E00E940F24B3 +:1055200080934B0188E090E00E940F2480934A0111 +:1055300089E090E00E940F24809349018AE090E086 +:105540000E940F2480937F018BE090E00E940F2443 +:1055500091E0811101C090E0909348018CE090E0CF +:105560000E940F2491E0811101C090E090934D01C1 +:105570008DE090E00E940F2480930A038EE090E07B +:105580000E940F24282E809342018FE090E00E9419 +:105590000F2480934E0180E190E00E940F2491E05F +:1055A000811101C090E09093E90281E190E00E94B6 +:1055B0000F248093070382E190E00E940F24182FAC +:1055C00083E190E00E940F24912F9093EB0280934F +:1055D000EA0252E0852E51E0952E6FE4A62E61E09E +:1055E000B62E74E1E72EF12C312C231409F447C0B8 +:1055F00010E000E0C701800F911F0E940F24F50109 +:10560000E00FF11F80830F5F1F4F0630110591F7E8 +:10561000670136E0C30ED11C4EE0E40EF11C3401EC +:10562000C6010E940F24082F10E0102F0027D3017D +:105630000D931C932601B2E04B0E511CC60101963E +:105640000E940F24082BF301019311933F01620183 +:105650004E145F0429F73394F8E08F0E911C26E076 +:10566000A20EB11CC2CF68E090E080E00E94F6215B +:105670006FE181E090E00E94F6210E940A221091E1 +:10568000E90280EC111101C088EC0E94A41780EAA5 +:10569000111101C081EA0E94A4171092030380E255 +:1056A0008093040380E48093050380E680930603DF +:1056B0008091EA029091EB02892B19F10E94571414 +:1056C00067E088E290E00E94F91987E00E94452592 +:1056D0000E94871768EE73E080E090E00E942D172B +:1056E0000E94881A0E94881A0E94881A90E080E01E +:1056F0000E9452262091EA023091EB028217930712 +:10570000E9F60E943F199093E4028093E3020E941D +:10571000D1199093090380930803009146011091D9 +:1057200047011093FD020093FC028EE00E94A31932 +:10573000BC0190E080E00E9451356093E5027093D7 +:10574000E6028093E7029093E8020E947B190E9490 +:10575000C21D20E030E040EA51E46091FE02709109 +:10576000FF0280910003909101030E94EA366B01D1 +:105770007C01B80190E080E00E9451359B01AC01B2 +:10578000C701B6010E944C3587FF05C070E060E09C +:1057900089E00E94AB161092F3071092F407109262 +:1057A000F5071092F607412C512C3FE7632E33E4A6 +:1057B000732E4092F7075092F8076092F9077092A3 +:1057C000FA07A090DF07B090E0078091FB07D501B2 +:1057D000CD90DD90ED90FC90882311F40C947434FE +:1057E000A3019201C701B6010E94FE37181634F5D5 +:1057F000F50140825182628273828090E707909027 +:10580000E807A090E907B090EA07C090F707D090AA +:10581000F807E090F907F090FA07A7019601C50193 +:10582000B4010E94FE371816CCF4C092E707D0925C +:10583000E807E092E907F092EA0720C020E030E0B4 +:10584000A901C701B6010E944C3587FFD6CFD5010B +:105850001D921D921D921C921397CFCFC090F307FB +:10586000D090F407E090F507F090F607A7019601B5 +:10587000C501B4010E944C3587FDD7CF81E08093EC +:10588000FB0783B181708093E20289B190E0880FB9 +:10589000892F881F990B8093E1022091E202909159 +:1058A000E10281E0291380E08093E0028CE291E044 +:1058B000909317038093160380E293E0909315036F +:1058C000809314038AE090E0909313038093120373 +:1058D000000F111F10931103009310030E945F1714 +:1058E0006093F8027093F9028093FA029093FB029E +:1058F0000E94881A0E94881A209010033090110389 +:10590000F101F595E795FA87E987F093FD02E093B9 +:10591000FC0286E00E941816482E8111A0C08091DA +:10592000F602882309F49BC00E94881A0E945F1720 +:105930006B017C01C092F202D092F302E092F40279 +:10594000F092F50286E00E941816892B59F40E9405 +:105950005F176C197D098E099F09643F71408105AD +:10596000910580F30E945F176C197D098E099F09CC +:10597000643F71408105910508F46DC46FEF70E0DC +:1059800089E00E94AB160E94881A512CAAE06A2E68 +:10599000712C1092ED02852D0E94A226582E39E01E +:1059A000381708F439C0E82FF0E0E752F34D0C94B3 +:1059B0000C3AF52CA22F1C3088309630C730D530E9 +:1059C000F63001310B3120E030E0A901C701B6010A +:1059D0000E944C3587FF52CF1092E7071092E807DC +:1059E0001092E9071092EA0749CFF6E0FF2E81E016 +:1059F0008093ED02852D0E94A226582E42E0841746 +:105A000009F439C2481708F4E9C0882309F413C11E +:105A100051E0851709F412C10E940A2281E08093A7 +:105A20000203E985FA85F093FD02E093FC028CE223 +:105A300091E0909317038093160380E293E0909394 +:105A40001503809314038AE090E0909313038093EE +:105A50001203C1018E7F9093110380931003409233 +:105A6000F60280910B03882309F11091490111235B +:105A7000E9F00E945F17C090EE02D090EF02E09034 +:105A8000F002F090F1026C197D098E099F0928EE51 +:105A900033E040E050E00E94B836211738F0109211 +:105AA0000B030E94881A81E080934C0180910203CD +:105AB0008823F1F180910C03882351F120E030E03C +:105AC00040EA51E46091FE027091FF028091000370 +:105AD000909101030E94EA366B017C016091FC0207 +:105AE0007091FD0290E080E00E9451359B01AC0175 +:105AF000C701B6010E944C3587FF05C070E060E029 +:105B000089E00E94AB160E94881A81E080934C01C4 +:105B10001092020310920C0310920D030E945F1763 +:105B20006093F8027093F9028093FA029093FB025B +:105B30000E945F170091F8021091F9022091FA0279 +:105B40003091FB02601B710B820B930B20E63AEE47 +:105B500040E050E00E94B836122F2093F702809167 +:105B60000C0381110BC080914B01882339F0281759 +:105B700028F081E080930C030E94881A80910D0325 +:105B800081110BC080914A01882339F0181728F041 +:105B900081E080930D030E94881A0E94CB220E940C +:105BA000951B0E945F1780910608F62FF81B8F2F18 +:105BB00090910708992309F464C3F09308081092A0 +:105BC000070880E090E0892B09F496CE0E944C15DE +:105BD000882309F491CE0E9400008ECE63E08617E0 +:105BE00009F44CC184E0581217CF809142018830EB +:105BF00008F0FDCE91E0980F9093420180930A0344 +:105C00000E94A61AE0910A03B8E0EB9FF00111246C +:105C1000EE5FFE4F28ED30E03183208344E351E016 +:105C20005383428386E891E095838483AEE1B0E0BC +:105C3000B783A683DCCE0E941921D9CE8E010F5FD7 +:105C40001F4F612C712C4301639478EEC72E73E0D3 +:105C5000D72EAA24A394B12CEE24E394E0910A0356 +:105C600094E0E99FF0011124C3010197E80FF91FA7 +:105C7000EE0FFF1FEE5FFE4F808191819093FD023A +:105C80008093FC02A8ECB0E0B0931703A093160336 +:105C9000D0921503C0921403B0921303A092120382 +:105CA000880F991F9093110380931003E0924C0189 +:105CB00086E00E94181621E0892B09F020E020934D +:105CC000EC020E945714B2E0B0930F080E94CB225E +:105CD0000E94951B10920A081092090810920C0855 +:105CE00010920B088EEB92E20E941B19C401B301C3 +:105CF0000E94BE1E8FEB92E00E946D1E809180017B +:105D000010920A0810920908882309F48CC0E0E177 +:105D1000F0E0F0930C08E0930B0881EB92E20E9414 +:105D20001B1910920A081092090820E230E0309303 +:105D30000C0820930B088AEA92E20E941B196091DA +:105D400010037091110375956795072E000C880B51 +:105D5000990B0E94BE1E0E94E7190E94871786E0D9 +:105D60000E941816892B09F0ACCF8091EC028111AA +:105D7000A8CF809110039091110395958795D80134 +:105D80008D939D938D010E94881A6AE070E080E0F7 +:105D900090E00E942D17BFEF6B1A7B0A8B0A9B0ABB +:105DA000E4E06E1671048104910409F057CF6FEF9F +:105DB00070E089E00E94AB168BEA94E00197F1F75E +:105DC0000E947B190E94CF373B0178876F83A9809F +:105DD000BA800B811C81C5014E968017910708F08F +:105DE00006CECD80DE80C8014E968C159D0508F04C +:105DF000FECD87E08093ED0280E00E94A2268823FA +:105E000009F4F5CDE0910A0328E0E29FF0011124A6 +:105E1000EE5FFE4FB182A08213830283D582C482DB +:105E200077826682E4CD40E150E050930C084093C5 +:105E30000B0884EA92E20E941B196091E5027091BE +:105E4000E6028091E7029091E8020E94CF3790E04D +:105E500080E04AE00E947A1E10920A081092090817 +:105E600080E290E090930C0880930B0888E992E21E +:105E70000E941B1970CF0E94A61AB9CD87E08093AB +:105E8000ED0280914201813009F4B1CD80E00E94A1 +:105E9000A226882309F4ABCD80910A039091420198 +:105EA000492F4150550B9A018417150639F481503A +:105EB00080930A0391509093420199CDE82FF0E02E +:105EC000E217F307BCF78F9D8001112450E040E0FA +:105ED0006F016FEFC61AD60AB801640F751F615BB8 +:105EE0007E4FDB011696EC901697EC924F5F5F4F5A +:105EF0004630510589F7D60113E0AA0FBB1F1A954A +:105F0000E1F7AE5FBE4F4D915C91119703E0EE0F4C +:105F1000FF1F0A95E1F7EE5FFE4F51834083129613 +:105F20004D915C9113975383428314964D915C91EC +:105F300015975583448316964D915C9157834683FC +:105F40008F5FBCCF82E08093ED0210E0E8E2CE2EBE +:105F5000D12CFCE2AF2EBB24B394A0E28A2EA3E0A6 +:105F60009A2EB4E1EB2EF12C812F0E94A226182F3D +:105F7000813029F130F0823009F441C00E940A22B8 +:105F800008CD8091460190914701B0921703A092ED +:105F9000160390921503809214037092130360927B +:105FA0001203880F991F909311038093100381E1CE +:105FB0000E9425269093470180934601D5CF80917A +:105FC000440190914501D0921703C0921603E0E975 +:105FD000F1E0F0931503E0931403709213036092C1 +:105FE0001203880F991F909311038093100382E18D +:105FF0000E9425269093450180934401B5CF80915E +:10600000430190E0F0921703E092160328EC30E091 +:1060100030931503209314037092130360921203BC +:10602000880F991F909311038093100383E10E94BE +:1060300025268093430198CF83E08093ED02F12CD5 +:1060400001E010E08F2D0E94A226F82E31E0831788 +:1060500009F43FC0831700F142E084138FCF809191 +:10606000490190E0109217031092160348E651E0A0 +:10607000509315034093140370921303609212031C +:10608000880F991F909311038093100387E10E945A +:10609000252680934901D6CF80914B0190E0109244 +:1060A000170310921603ACE3B0E0B0931503A0936E +:1060B00014031093130300931203880F991F9093F6 +:1060C00011038093100385E10E94252680934B01E4 +:1060D000B9CF80914A0190E01092170310921603F5 +:1060E000E8E7F0E0F0931503E093140325E030E0D7 +:1060F0003093130320931203880F991F9093110379 +:106100008093100386E10E94252680934A019ACF4E +:1061100084E08093ED02809148010E94A22691E0E4 +:10612000811101C090E09093480133CC10E0A9E0C8 +:10613000EA2EB5E0DB2EE092ED02812F0E94A2262E +:10614000182F882321F08130E1F000E009C0D092BF +:10615000ED0280917F010E94A22680937F0101E0E1 +:10616000F090E90280ECF11001C088EC0E94A417C5 +:1061700080EAF11001C081EA0E94A4170111DBCF6F +:10618000FDCE8091E90281278093E902E8CF86E085 +:106190008093ED0280914D010E94A22691E0811131 +:1061A00001C090E090934D01F4CB8091070390E003 +:1061B0001092170310921603A4EFB1E0B0931503E9 +:1061C000A093140321E030E03093130320931203D3 +:1061D000880F991F909311038093100386E00E940B +:1061E0002526809307030E94881AD3CB8091EA0268 +:1061F0009091EB020E9452269093EB028093EA0268 +:10620000F2CF88E08093ED0280914E010E94A22699 +:1062100080934E01BECB0E945714EE24E39400E31A +:1062200020E345EC52E270E060E088E290E00E94FA +:10623000AE130E94871764E670E080E090E00E9451 +:106240002D1786E00E941816892BD9F78091EC0251 +:106250008111F7CFC8CF80910B0391E089278093FC +:106260000B03882351F00E945F176093EE02709336 +:10627000EF028093F0029093F10281E08093020399 +:10628000EECB90910508F91748F48F5F891708F055 +:1062900098CC81E083BF889513BE93CC81E0809336 +:1062A0000708609306088091010890910208019602 +:1062B0009093020880930108A0900E03B0900F0302 +:1062C00025EFA21621E0B20608F023C180910D034C +:1062D000882309F4FCC06FEF70E089E00E94AB16E0 +:1062E0000E94571403E013E072E0872E912CA12C3A +:1062F000B12CE3E04E2E512C612C712C0E94ED3418 +:10630000A50194010E948636AB01BC0141505109A0 +:1063100061097109D8018C91682F640F613808F008 +:106320004BC06C93312C0E94ED34C32CD12CF12C3A +:10633000E12CA30192010E9486366D5F7F4F8F4F43 +:106340009F4FA70196012617370748075907C4F53D +:10635000D801EC90F12C0E94ED3424E130E040E0D3 +:1063600050E00E9486366A507109810991096E0DCC +:106370007F1D6034710530F421E040E890E080E05A +:106380000E94B117F801E080F12C0E94ED3424E165 +:1063900030E040E050E00E948636DC01CB010A97F5 +:1063A000A109B1098E0D9F1D21E040E470E060E07D +:1063B0000E9463133394B7CF6058F8016083B2CF63 +:1063C0000F5F1F4FF3E007301F0709F097CF0E94C0 +:1063D0005F170E94513520E030E04AE755E40E9403 +:1063E00056370E9453386B017C0120E030E040E8D2 +:1063F00053E40E94B23520E030E040E853E40E94CC +:10640000EA362B013C0110E000E0B801012E000C3F +:10641000880B990B0E945335A30192010E944C35C1 +:1064200087FF25C00E94ED344B015C010E94ED34D2 +:1064300069877A878B879C87C501B40120E430E0A7 +:1064400040E050E00E9486364B0169857A858B8555 +:106450009C8520E830E040E050E00E948636CB0189 +:1064600041E0B4010E9445130F5F1F4FCECF8091D2 +:106470004D01882349F10E94ED3420E130E040E0F5 +:1064800050E00E94863668507109810991090E9486 +:1064900053354B015C0120E030E040E852E4C70195 +:1064A000B6010E94B23520E030E040E852E40E949C +:1064B000EA369B01AC01C501B4010E94EA360E9494 +:1064C000C83785E00E94AB160E9487177ACB80916F +:1064D0000C0312E081111EC080910B0313E08111A7 +:1064E00019C08091800114E0811114C020E030E0D7 +:1064F00044E353E46091B9077091BA078091BB07F8 +:106500009091BC070E944C3515E087FD03C016E052 +:1065100001C010E080917F01882309F481C10E94AD +:10652000571401E020E440E870E060E090E080E093 +:106530000E948C1381E080930F0880930E081092C4 +:106540000D08E12C00E120E143E554E270E060E059 +:1065500090E080E00E94AE1383E190E090930A08FF +:106560008093090884E090E090930C0880930B08D6 +:1065700080910A0326E0829FC0011124815B9E4F17 +:106580000E946D1E85E390E090930A0880930908AD +:1065900081E090E090930C0880930B0882E0809358 +:1065A0000F08C12ED12C80914E01CC0CDD1C811125 +:1065B000EAC0F601E957FD4F408151810EE02CE120 +:1065C00061E070E080E590E00E94AE13F601E758CC +:1065D000FD4F40815181E12C0EE02EE061E070E042 +:1065E00081E790E00E94AE1381E080930F080E9443 +:1065F0007B1920E030E040EA52E40E94FE37181692 +:106600000CF4E0C0E12C0EE02EE041E154E262E146 +:1066100070E082E090E00E94AE13609108037091F8 +:10662000090390E080E00E94513520E030E048EC22 +:1066300052E40E9456376B017C016091070370E0C1 +:1066400090E080E00E9453359B01AC01C701B60188 +:106650000E944C3587FDCAC0E12C0EE02EE045EFCC +:1066600053E262E270E082E090E00E94AE1303E148 +:1066700010E010930A080093090840E150E050939D +:106680000C0840930B080E947B1941E00E94E81E11 +:1066900088EF0E94361983EF93E20E941B19109332 +:1066A0000A080093090888E190E090930C08809311 +:1066B0000B080E943F19BC0190E080E00E94513518 +:1066C00020E030E04AE754E40E94563742E00E945E +:1066D000E81E81EF93E20E941B1910930A080093B1 +:1066E000090880E290E090930C0880930B08609179 +:1066F00008037091090390E080E00E94513520E08A +:1067000030E04AE754E40E94563741E00E94E81E18 +:106710008FEE93E20E941B1910930A080093090858 +:1067200088E290E090930C0880930B0889EE93E246 +:106730000E941B1989E390E090930A08809309084E +:1067400082E190E090930C0880930B0884E08093A2 +:106750000F0860910E0370910F03653F91E0790778 +:1067600008F458C085EE93E20E941B1900E020E275 +:1067700048E460E170E087E390E00E94E81780E081 +:106780000E94C01FA1CE83E494E21330C1F058F4FC +:106790008FE494E2113099F089E494E2123079F0B8 +:1067A0008DE294E20CC088E394E2153041F08DE371 +:1067B00094E2153020F083E394E2163089F70E94CA +:1067C0001B1904CF0E945F1752E0660F771F881FC6 +:1067D000991F5A95D1F728EE33E040E050E00E942F +:1067E000B83620FF0FCF0E94881A17CF0E945F177C +:1067F00042E0660F771F881F991F4A95D1F728EE50 +:1068000033E040E050E00E94B83620FF25CF0E94E0 +:10681000881A2DCF90E080E04AE00E947A1EA6CF31 +:106820000E9457140E947B1920E030E040EA52E4B5 +:106830000E94FE37181694F40E945F1732E0660F2C +:10684000771F881F991F3A95D1F728EE33E040E073 +:1068500050E00E94B83620FD0E94881A609108031B +:106860007091090390E080E00E94513520E030E013 +:1068700048EC52E40E9456376B017C01609107039B +:1068800070E090E080E00E9453359B01AC01C701AD +:10689000B6010E944C3587FF12C00E945F1722E0AC +:1068A000660F771F881F991F2A95D1F728EE33E0CE +:1068B00040E050E00E94B83620FD0E94881A87EE22 +:1068C00093E0A5EFAA16A1E0BA0608F4C5010E945C +:1068D000112400E023E040E860E370E090E080E015 +:1068E0000E948C1381E04CCFC092E707D092E8075A +:1068F000E092E907F092EA07E091DD07F091DE0708 +:1069000080819181A281B3818093EB079093EC0702 +:10691000A093ED07B093EE0720E030E04FE753E49B +:10692000C701B6010E94FE3718160CF04CC8409201 +:10693000E7075092E8076092E9077092EA070C9423 +:106940003E2C8F929F92AF92BF92CF92DF92EF92A6 +:10695000FF92CF93DF93EC01688179818A819B81DB +:10696000611571058105910521F464E279ED8BE5EE +:1069700097E02DE133EF41E050E00E948636490177 +:106980005A019B01AC01A7EAB1E40E94A5366B0154 +:106990007C01ACEEB4EFA50194010E94B336C60EA3 +:1069A000D71EE81EF91EF7FE06C081E0C81AD108FE +:1069B000E10880E8F80AC882D982EA82FB82C7012E +:1069C000B6019F77DF91CF91FF90EF90DF90CF904E +:1069D000BF90AF909F908F9008958F929F92AF92AB +:1069E000BF92CF92DF92EF92FF92609181017091FE +:1069F0008201809183019091840161157105810567 +:106A0000910521F464E279ED8BE597E02DE133EF18 +:106A100041E050E00E94863649015A019B01AC01D9 +:106A2000A7EAB1E40E94A5366B017C01ACEEB4EF9D +:106A3000A50194010E94B336C60ED71EE81EF91EAA +:106A4000F7FE06C081E0C81AD108E10880E8F80A1C +:106A5000C0928101D0928201E0928301F092840180 +:106A6000C701B6019F77FF90EF90DF90CF90BF9066 +:106A7000AF909F908F9008956093810170938201F1 +:106A800080938301909384010895FB01DC010590BC +:106A90000D920020E1F708950E948E3508F481E000 +:106AA0000895E89409C097FB3EF490958095709501 +:106AB00061957F4F8F4F9F4F9923A9F0F92F96E94A +:106AC000BB279395F695879577956795B795F111BF +:106AD000F8CFFAF4BB0F11F460FF1BC06F5F7F4F5C +:106AE0008F4F9F4F16C0882311F096E911C077236E +:106AF00021F09EE8872F762F05C0662371F096E877 +:106B0000862F70E060E02AF09A95660F771F881F45 +:106B1000DAF7880F9695879597F90895990F0008E9 +:106B2000550FAA0BE0E8FEEF16161706E807F9075F +:106B3000C0F012161306E407F50798F0621B730BFA +:106B4000840B950B39F40A2661F0232B242B252B7B +:106B500021F408950A2609F4A140A6958FEF811D1E +:106B6000811D08950E94C5350C9436360E94283642 +:106B700038F00E942F3620F0952311F00C941F3628 +:106B80000C94253611240C946A360E94473670F313 +:106B9000959FC1F3950F50E0551F629FF001729FC2 +:106BA000BB27F00DB11D639FAA27F00DB11DAA1FD1 +:106BB000649F6627B00DA11D661F829F2227B00D1E +:106BC000A11D621F739FB00DA11D621F839FA00DA9 +:106BD000611D221F749F3327A00D611D231F849FF9 +:106BE000600D211D822F762F6A2F11249F57504050 +:106BF0009AF0F1F088234AF0EE0FFF1FBB1F661FCB +:106C0000771F881F91505040A9F79E3F510580F093 +:106C10000C941F360C946A365F3FE4F3983ED4F32D +:106C2000869577956795B795F795E7959F5FC1F737 +:106C3000FE2B880F911D9695879597F9089597F9E2 +:106C40009F6780E870E060E008959FEF80EC089512 +:106C500000240A941616170618060906089500243B +:106C60000A9412161306140605060895092E0394B5 +:106C7000000C11F4882352F0BB0F40F4BF2B11F429 +:106C800060FF04C06F5F7F4F8F4F9F4F089557FD88 +:106C90009058440F551F59F05F3F71F04795880F8A +:106CA00097FB991F61F09F3F79F087950895121621 +:106CB00013061406551FF2CF4695F1DF08C01616CD +:106CC00017061806991FF1CF86957105610508947E +:106CD0000895E894BB2766277727CB0197F9089595 +:106CE000F999FECF92BD81BDF89A992780B5089594 +:106CF000262FF999FECF1FBA92BD81BD20BD0FB6D8 +:106D0000F894FA9AF99A0FBE01960895052E97FB0A +:106D10001EF400940E949D3657FD07D00E94B8369D +:106D200007FC03D04EF40C949D3650954095309559 +:106D300021953F4F4F4F5F4F0895909580957095E7 +:106D400061957F4F8F4F9F4F08950E94DA36A59F20 +:106D5000900DB49F900DA49F800D911D1124089556 +:106D6000B7FF0C94A5360E94A536821B930B08959D +:106D7000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F3F +:106D8000EE1FFF1FA217B307E407F50720F0A21BB1 +:106D9000B30BE40BF50B661F771F881F991F1A941E +:106DA00069F760957095809590959B01AC01BD0148 +:106DB000CF010895A29FB001B39FC001A39F700DA2 +:106DC000811D1124911DB29F700D811D1124911DF3 +:106DD00008955058BB27AA270E9401370C943636D5 +:106DE0000E94283638F00E942F3620F039F49F3F59 +:106DF00019F426F40C9425360EF4E095E7FB0C9478 +:106E00001F36E92F0E94473658F3BA1762077307F7 +:106E10008407950720F079F4A6F50C9469360EF4F2 +:106E2000E0950B2EBA2FA02D0B01B90190010C019A +:106E3000CA01A0011124FF27591B99F0593F50F4B2 +:106E4000503E68F11A16F040A22F232F342F44270A +:106E5000585FF3CF469537952795A795F040539502 +:106E6000C9F77EF41F16BA0B620B730B840BBAF0D2 +:106E70009150A1F0FF0FBB1F661F771F881FC2F73D +:106E80000EC0BA0F621F731F841F48F48795779551 +:106E90006795B795F7959E3F08F0B0CF9395880F0B +:106EA00008F09927EE0F9795879508950E946A3705 +:106EB0000C9436360E942F3658F00E94283640F047 +:106EC00029F45F3F29F00C941F3651110C946A3657 +:106ED0000C9425360E94473668F39923B1F3552365 +:106EE00091F3951B550BBB27AA27621773078407DD +:106EF00038F09F5F5F4F220F331F441FAA1FA9F373 +:106F000035D00E2E3AF0E0E832D091505040E69560 +:106F1000001CCAF72BD0FE2F29D0660F771F881FC1 +:106F2000BB1F261737074807AB07B0E809F0BB0BB4 +:106F3000802DBF01FF2793585F4F3AF09E3F5105C8 +:106F400078F00C941F360C946A365F3FE4F3983E59 +:106F5000D4F3869577956795B795F7959F5FC9F7B1 +:106F6000880F911D9695879597F90895E1E0660F32 +:106F7000771F881FBB1F621773078407BA0720F0AB +:106F8000621B730B840BBA0BEE1F88F7E095089514 +:106F90000E94CF376894B1110C946A3608950E940C +:106FA0004F3688F09F5798F0B92F9927B751B0F016 +:106FB000E1F0660F771F881F991F1AF0BA95C9F77D +:106FC00014C0B13091F00E946936B1E008950C947C +:106FD0006936672F782F8827B85F39F0B93FCCF32F +:106FE000869577956795B395D9F73EF490958095FA +:106FF000709561957F4F8F4F9F4F08950E948E35FA +:1070000008F48FEF0895FA01EE0FFF1F3096210567 +:107010003105A1F16115710561F48038BFE39B076B +:1070200049F168949038810561F08038BFEF9B0783 +:1070300041F099234AF5FF3FE1053105210519F19A +:10704000E8940894E795D901AA2329F4AB2FBE2F21 +:10705000F85FD0F310C0FF5F70F4A695E0F7F73942 +:1070600050F019F0FF3A38F49F779F930DD00F90AE +:1070700007FC9058089546F00C94253660E070E0C7 +:1070800080E89FE308954FE79F775F934F933F9387 +:107090002F930E944A392F913F914F915F910E9407 +:1070A000B2350C9468389F930E94C3380F9007FC48 +:1070B000EE5F0C94EC380E948E35880B990B089586 +:1070C00029F416F00C941F360C9469360C9425366E +:1070D0000E944F36A8F39638A0F707F80F92E8946D +:1070E0002BE33AEA48EB5FE70E94C8350F920F9214 +:1070F0000F924DB75EB70F920E949239E8E6F0E02A +:107100000E949A384F915F91EF91FF91E595EE1FA4 +:10711000FF1F49F0FE57E0684427EE0F441FFA9521 +:10712000E1F74195550B0E940C390F9007FE0C9426 +:1071300000390895DF93CF931F930F93FF92EF923F +:10714000DF927B018C01689406C0DA2EEF010E9469 +:10715000C535FE01E894A59125913591459155914C +:10716000A6F3EF010E940137FE019701A801DA940E +:1071700069F7DF90EF90FF900F911F91CF91DF9112 +:1071800008950C9425360E944F36D8F3E894E0E039 +:10719000BB279F57F0F02AED3FE049EC06C0EE0F09 +:1071A000BB0F661F771F881F28F0B23A620773076C +:1071B000840728F0B25A620B730B840BE3959A95FF +:1071C00072F7803830F49A95BB0F661F771F881FBF +:1071D000D2F790480C94C839EF93E0FF07C0A2EAB9 +:1071E0002AED3FE049EC5FEB0E9401370E94363602 +:1071F0000F90039401FC9058E0E9F0E00C94D4392E +:107200009B01AC0160E070E080E89FE30C9456378E +:107210000C941F360C94C6390E944F36D8F399232C +:10722000C9F3940F511DA3F39150504094F059F0BD +:10723000882332F0660F771F881F91505040C1F7A6 +:107240009E3F51052CF7880F911D9695879597F9CC +:1072500008955F3FACF0983E9CF0BB2786957795EC +:107260006795B79508F4B1609395C1F7BB0F58F7D0 +:1072700011F460FFE8CF6F5F7F4F8F4F9F4FE3CFD9 +:107280000C946A3616F00C94C6390C942536689422 +:107290000C941F360E944F36A8F39923C1F3AEF326 +:1072A000DF93CF931F930F93FF92C92FDD2788237E +:1072B0002AF02197660F771F881FDAF720E030E069 +:1072C00040E85FEB9FE3883920F0803E38F021965C +:1072D0008F770E94EA36EEEAF0E004C00E94EA36B8 +:1072E000EBEDF0E00E949A388B01BE01EC01FB2E21 +:1072F0006F5771097595771F880B990B0E9453354D +:1073000028E132E741E35FE30E94C535AF2D9801E4 +:10731000AE01FF900F911F91CF91DF910E94013735 +:107320000C943636FA01DC01AA0FBB1F9B01AC019D +:10733000BF5728F4222733274427507820C0B7515D +:1073400090F4AB2F0024469537952795011CA39503 +:10735000D2F3002071F0220F331F441FB395DAF3EC +:107360000ED00C94E93661307105A0E88A07B94661 +:1073700030F49B01AC0166277727882790783096F8 +:1073800021F0208331834283538308959F3F31F05E +:10739000915020F4879577956795B795880F911D43 +:1073A0009695879597F908959F938F937F936F9301 +:1073B000FF93EF939B01AC010E94B235EF91FF91D7 +:1073C0000E949A382F913F914F915F910C94B23562 +:1073D000DB018F939F930E94A536BF91AF91A29F2F +:1073E000800D911DA39F900DB29F900D11240895C3 +:1073F00097FB072E16F4009407D077FD09D00E9462 +:10740000123A07FC05D03EF4909581959F4F089560 +:10741000709561957F4F0895EE0FFF1F0590F491D1 +:10742000E02D0994AA1BBB1B51E107C0AA1FBB1F7B +:10743000A617B70710F0A61BB70B881F991F5A9500 +:10744000A9F780959095BC01CD01089581E090E069 +:10745000F8940C942B3AF894FFCF01FFD800340134 +:1074600086011E0000000000000000000000000077 +:10747000000000000000000000000000000000000C +:1074800000000000000000000000000000000000FC +:10749000000000000000000000000000013C960019 +:1074A000400101280F050101014243312E35000042 +:1074B00000000000000000000000000000000000CC +:1074C00000000000000000000000000000000000BC +:1074D0000000000000000000000101010000000B9E +:1074E0000604040202020203031804FC03E003C4BE +:1074F00003A8038C037003540338031C030003E444 +:1075000002C8021804AC0290027402180458023C2B +:10751000027402580220023C0274020402E801CC08 +:1075200001B00194018C03780100035C0140012447 +:1075300001A80308017402ED04E804E304DC04D6A6 +:1075400004D204C904C604C304BE04BA04B104A727 +:10755000049F049C049904960490048D0488048577 +:107560000482047D04780475046F046B046704626C +:10757000045D045904540450044C04490445043C7B +:107580000437043404CF0F7F0F2F0FDF0E8F0E3F11 +:107590000EEF0D9F0D4F0DFF0CAF0CCF0F5F0C0FBB +:1075A0000CBF0B6F0B1F0BCF0A7F0A2F0A1F0B7F1D +:1075B0000ADF092F0A1F0B8F093F09EF089F084FA9 +:1075C00008FF07AF075F070F07BF066F061F06CF4D +:1075D000051F0BAF1093107310F52357103B101FAE +:1075E000101B12E311AB1173113B110311CB1000EF +:1075F0000000008215E2140F15CF1540151E15323C +:1076000015000000001918E2143C193B196E616E58 +:0C76100000696E66006F7666002F330084 +: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.7+.ino b/software/sources/SolderingStation2_arduboy_gplib_v1.7+.ino new file mode 100644 index 0000000..a510e1d --- /dev/null +++ b/software/sources/SolderingStation2_arduboy_gplib_v1.7+.ino @@ -0,0 +1,2124 @@ +/*License: http://creativecommons.org/licenses/by-sa/3.0/ + 采用CC3.0协议共享此程序 + 您可以自由地 + 共享 — 在任何媒介以任何形式复制、发行本作品 + 演绎 — 修改、转换或以本作品为基础进行创作 + 在任何用途下,甚至商业目的。 + 本许可协议为“自由文化作品(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. +// 此v1.7+版本功能简介 +// This 1.7+ version of the code implements: +// - 烙铁头温度实时监测 +// - Temperature measurement of the tip +// - PID温度控制 +// - 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 +// - 在OLED上实现信息显示 +// - Information display on OLED +// - 支持无源蜂鸣器 +// - Buzzer +// - 允许设置不同烙铁头的温度校准值 +// - Calibrating and managing different soldering tips +// - 设置被保存在EEPROM,掉电不丢失 +// - Storing user settings into the EEPROM +// - 允许热插拔烙铁头,并弹出烙铁头配置选择菜单 +// - Tip change detection +// - 芯片过热以及低电压报警 +// - Chip overheating and low voltage alarm +// - 更好的实时温度条以及实时功率条 +// - Better real-time temperature bar and real-time power bar +// - 拥有过渡动画 +// - Have transition animation +// - 内置屏幕保护程序 +// - Built in screen saver +// - 屏幕翻转设置 +// - Screen flip settings +// - 内置英文、中文、日文语言包 +// - Built in English, Chinese and Japanese language pack +// - 开机密码设置 +// - System Password + +// 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 、lihaoyun6 +// 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 Lock[] PROGMEM = { 0xe0, 0x1c, 0xc0, 0x0c, 0x8f, 0xc4, 0x9f, 0xe4, 0x9f, 0xe4, 0x9f, 0xe4, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0x00, 0x80, 0x04 }; +const unsigned char *Ico_table[] = { + Set0, Set1, Set2, Set3, Set4, Set5, Set6, Lock, 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[] = {11, 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 EN_40[] PROGMEM = "Lock"; +const char *const EN_table[] PROGMEM = {EN_0, EN_1, EN_2, EN_3, EN_4, EN_5, EN_6, EN_40, 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 tPassword[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x7e, 0x00, 0x1f, 0xff, 0x84, 0x02, 0x00, 0x10, 0x80, 0x84, 0x42, 0x00, 0x0a, 0x4a, 0x04, 0x42, 0x00, 0x0a, 0x31, 0x08, 0x42, 0x00, 0x12, 0xc5, 0x0f, 0x42, 0x00, 0x03, 0x04, 0x19, 0x7f, 0x00, 0x1d, 0xf8, 0x29, 0x01, 0x00, 0x00, 0x40, 0x09, 0x01, 0x00, 0x08, 0x42, 0x09, 0xfd, 0x00, 0x08, 0x42, 0x09, 0x01, 0x00, 0x08, 0x42, 0x0f, 0x01, 0x00, 0x0f, 0xfe, 0x09, 0x05, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char *CN_table[] = { + t0, t1, t2, t3, t4, t5, t7, tPassword, 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 0x20 // 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 本 */ + { 0x16, 0x6a, 0x5e, 0x73, 0x56, 0x62, 0x16 }, /* 0x1F 密 */ + { 0x09, 0x37, 0x31, 0x5f, 0x15, 0x5f, 0x75 }, /* 0x20 碼 */ +}; +/* + プリセット + 温度調節 + タイマー + コントロール + スクリーン + ブザー + 低電圧アラーム + 言語 + 戻る + 取り替える + キャリブレーション + 名前を変更 + 削除 + 追加 + 保存 + デフォルト + 睡眠 + ブースト + 保存 + 睡眠 + 閉じる + ブースト + 保存 + ダイレクト + 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 JP_40[] PROGMEM = { 0xf2, 0x1f, 0x20, }; //密码 + +const char *const JP_table[] = {JP_0, JP_1, JP_2, JP_3, JP_4, JP_5, JP_6, JP_40, 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, 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.7+" + +// 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 315 //芯片内部温度读取校准值 -->可以根据实际情况修改,不同机器情况不同,通常误差在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 0x081F // 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]; + +//开机密码 BootPassword +int Password = 0; + +//屏幕保护-主题:密集运算 +byte Line[4]; + +// 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); + //初始化屏幕保护动画 + for (byte a = 0; a < 4; a++) Line[a] = 32 * a; + //开机密码 + BootPassword(); + + // 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); + Password = (EEPROM.read(18) << 8) | EEPROM.read(19); + uint8_t i, j; + uint16_t counter = 20; + 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); + EEPROM.update(18, Password >> 8); + EEPROM.update(19, Password & 0xFF); + uint8_t i, j; + uint16_t counter = 20; + 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 (ShowTemp > 500) SysState = 0; + else if (inOffMode) { + SysState = 1; + DrawIntensiveComputing(); + } else if (inSleepMode) SysState = 2; + else if (inBoostMode) SysState = 3; + else if (isWorky) SysState = 4; + else if (Output < 180) SysState = 5; + else SysState = 6; + if (SysState != 1) { + 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]); + //显示状态 + 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: PasswordSet(); break; + case 8: MenuLevel = 8; LANG = MenuScreen(LANG); break; + case 9: 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(17); break; + case 1: setRotary(20, 200, TEMP_STEP, SleepTemp); + SleepTemp = InputScreen(18); break; + case 2: setRotary(10, 100, TEMP_STEP, BoostTemp); + BoostTemp = InputScreen(19); 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(21); break; + case 1: setRotary(0, 60, 5, time2off); + time2off = InputScreen(22); break; + case 2: setRotary(0, 180, 10, timeOfBoost); + timeOfBoost = InputScreen(23); 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]) DrawApp(-72 + i * 56 + SlidingAnimationX, selected - 2 + i + QueryMenuObject()); + DrawAppText(selected + QueryMenuObject()); + + arduboy.display(); + CheckLastButton(); + //beep(0); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + return selected; +} +//显示APP图标 +void DrawApp(int x, byte appID) { + DrawUIFrame(x, 0, 1); + drawSlowXYBitmapResize(x + 3, 3, Ico_table[appID], 14, 14, 3, 1); +} +//显示APP对应的文本 +void DrawAppText(byte appID) { +// arduboy.setCursor(0, 55); arduboy.print(appID); + if (LANG == 0) arduboy.drawSlowXYBitmap(48, 48, CN_table[appID], 36, 16, 1); else if (LANG == 2) { + drawText(48, 52, JP_table[appID], pgm_read_byte(&(JP_Length_table[appID]))); + } else { + arduboy.setCursor(48, 49); + arduboy.setTextSize(1); + Print_EN(appID); + } +} +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; + } +*/ +//FP 密集运算屏保 +void DrawIntensiveComputing() { + analogWrite(CONTROL_PIN, 255); //关闭MOS管 + float calculate; + // while (1) { + arduboy.clear(); + + //随机线条 + DrawIntensiveComputingLine(); + + calculate = sin(millis() / 4000.0); + //模拟噪点 + for (int i = 0; i < calculate * 256 + 256; i++) arduboy.drawPixel(random(0, 128), random(0, 64), 1); + //声效 + if ((beepEnable)) analogWrite(BUZZER_PIN, 64 + calculate * 64 + random(-8, 8)); + //if ((beepEnable)) tone(BUZZER_PIN, int(calculate * 300) + 500 + random(-50, 50)); //没必要浪费内存 + + arduboy.display(); + //delay(60-calculate*30); + //} +} +//绘制屏保-密集运算线条 +void DrawIntensiveComputingLine() { + for (byte a = 0; a < 4; a++) { + Line[a] += random(-1, 1); + if (Line[a] > 128) Line[a] -= 128; + for (byte b = 0; b < random(3, 6); b++) { + arduboy.drawFastHLine(0, Line[a] + random(-10, 10), 128, 1); //水平线 + arduboy.drawFastVLine(Line[a] + random(-10, 10), 0, 64, 1); //垂直线 + } + } +} +//模拟数字滚轮 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(byte appID) { + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + arduboy.clear(); + DisplayNum(getRotary()); + DrawAppText(appID); + arduboy.display(); + CheckLastButton(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + return Value; +} +int InputBigNum(int InputPW, byte appID) { + setRotary(0, 900, 100, InputPW); + InputPW = InputScreen(appID); + setRotary(InputPW, InputPW + 90, 10, InputPW); + InputPW = InputScreen(appID); + setRotary(InputPW, InputPW + 9, 1, InputPW); + InputPW = InputScreen(appID); + return InputPW; +} +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(6); + beep(); +} +//设置开机密码 +void PasswordSet() { + Password = InputBigNum(Password, 7); + beep(); +} + +void BootPassword() { + if (Password != 0) { + do { + arduboy.clear(); + DrawApp(40, 7); + DrawAppText(7); + arduboy.display(); + delay(1000); + beep(); beep(); beep(); + } while (InputBigNum(0, 7) != Password); + } +} +//更换预设界面 +// 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 + } + } +}