/Designs/MRAKOMER4/SW/HEX/irmrak4.hex
1,287 → 1,409
:0C00000008308A0000280000202800348Epppppppppppppppppppppppppppppppppppppppppppppppp
:100040000A108A100A1182070A340D340A340D345Apppppppppppppppppppppppppppppppppppppppppppppppp
:10005000233420344D34723461346B346F346D3456pppppppppppppppppppppppppppppppppppppppppppppppp
:1000600065347234203425347334203428344334D6pppppppppppppppppppppppppppppppppppppppppppppppp
:1000700029342034323430343034373420344B3463pppppppppppppppppppppppppppppppppppppppppppppppp
:1000800041344B344C340A340D3400340A108A1095pppppppppppppppppppppppppppppppppppppppppppppppp
:100090000A11820723340A340D3400340A108A10FEpppppppppppppppppppppppppppppppppppppppppppppppp
:1000A0000A11820723342034683420342D3420345Cpppppppppppppppppppppppppppppppppppppppppppppppp
:1000B00053347734693474346334683420344F34BFpppppppppppppppppppppppppppppppppppppppppppppppp
:1000C0006E342034483465346134743469346E34A9pppppppppppppppppppppppppppppppppppppppppppppppp
:1000D0006734203466346F34723420343234303430pppppppppppppppppppppppppppppppppppppppppppppppp
:1000E00073342E340A340D3400340A108A100A1185pppppppppppppppppppppppppppppppppppppppppppppppp
:1000F000820723342034633420342D3420344E34AApppppppppppppppppppppppppppppppppppppppppppppppp
:10010000653465346434203443346F346C3464347Fpppppppppppppppppppppppppppppppppppppppppppppppp
:10011000653472342E342034533477346934743473pppppppppppppppppppppppppppppppppppppppppppppppp
:100120006334683420344F346634663420344834C1pppppppppppppppppppppppppppppppppppppppppppppppp
:1001300065346134743469346E3467342E340A346Fpppppppppppppppppppppppppppppppppppppppppppppppp
:100140000D3400340A108A100A1182072334203437pppppppppppppppppppppppppppppppppppppppppppppppp
:100150006F3420342D3420344F34703465346E3491pppppppppppppppppppppppppppppppppppppppppppppppp
:100160002034743468346534203444346F346D344Epppppppppppppppppppppppppppppppppppppppppppppppp
:100170006534203466346F34723420343234303491pppppppppppppppppppppppppppppppppppppppppppppppp
:1001800073342E340A340D3400340A108A100A11E4pppppppppppppppppppppppppppppppppppppppppppppppp
:100190008207233420346C3420342D3420344C3402pppppppppppppppppppppppppppppppppppppppppppppppp
:1001A0006F3463346B3420347434683465342034F1pppppppppppppppppppppppppppppppppppppppppppppppp
:1001B00044346F346D3465342E340A340D340034D5pppppppppppppppppppppppppppppppppppppppppppppppp
:1001C0000A108A100A11E73E03188A0A82002334B3pppppppppppppppppppppppppppppppppppppppppppppppp
:1001D0002034783420342D3420344F347034653456pppppppppppppppppppppppppppppppppppppppppppppppp
:1001E0006E342034743468346534203444346F34CDpppppppppppppppppppppppppppppppppppppppppppppppp
:1001F0006D346534203461346E34643420347334A7pppppppppppppppppppppppppppppppppppppppppppppppp
:100200007734693474346334683420344F346E3452pppppppppppppppppppppppppppppppppppppppppppppppp
:100210002034483465346134743469346E3467345Epppppppppppppppppppppppppppppppppppppppppppppppp
:100220002E340A340D3400340A148A100A1182075Dpppppppppppppppppppppppppppppppppppppppppppppppp
:1002300023342034693420342D3420345034723443pppppppppppppppppppppppppppppppppppppppppppppppp
:1002400069346E34743420347434683469347334EBpppppppppppppppppppppppppppppppppppppppppppppppp
:10025000203449346E3466346F3472346D34613412pppppppppppppppppppppppppppppppppppppppppppppppp
:10026000743469346F346E342E340A340D340034EFpppppppppppppppppppppppppppppppppppppppppppppppp
:100270000A148A100A11820723342034723420347Dpppppppppppppppppppppppppppppppppppppppppppppppp
:100280002D34203452346534703465346134743420pppppppppppppppppppppppppppppppppppppppppppppppp
:1002900020346D34653461347334753472346534ACpppppppppppppppppppppppppppppppppppppppppppppppp
:1002A00020346534763465347234793420347334D0pppppppppppppppppppppppppppppppppppppppppppppppp
:1002B000653463346F346E3464342E340A340D3450pppppppppppppppppppppppppppppppppppppppppppppppp
:1002C00000340A148A100A1182072334203473344Cpppppppppppppppppppppppppppppppppppppppppppppppp
:1002D00020342D342034533469346E3467346C3414pppppppppppppppppppppppppppppppppppppppppppppppp
:1002E000653420346D34653461347334753472345Cpppppppppppppppppppppppppppppppppppppppppppppppp
:1002F00065342E340A340D3400340A148A100A117Dpppppppppppppppppppppppppppppppppppppppppppppppp
:10030000820723342034753420342D34203455347Epppppppppppppppppppppppppppppppppppppppppppppppp
:100310007034643461347434653420346634693440pppppppppppppppppppppppppppppppppppppppppppppppp
:1003200072346D3477346134723465342E34203451pppppppppppppppppppppppppppppppppppppppppppppppp
:1003300047346F34203474346F3420347434683468pppppppppppppppppppppppppppppppppppppppppppppppp
:100340006534203442346F346F34743420344C3488pppppppppppppppppppppppppppppppppppppppppppppppp
:100350006F3461346434653472342E340A340D34ADpppppppppppppppppppppppppppppppppppppppppppppppp
:1003600000340A148A100A118207233420343C34E2pppppppppppppppppppppppppppppppppppppppppppppppp
:10037000733465347134753465346E346334653484pppppppppppppppppppppppppppppppppppppppppppppppp
:100380003E3420343C3461346D3462346934653435pppppppppppppppppppppppppppppppppppppppppppppppp
:100390006E3474345B3431342F343134303430348Fpppppppppppppppppppppppppppppppppppppppppppppppp
:1003A000203443345D343E3420343C3473346B3475pppppppppppppppppppppppppppppppppppppppppppppppp
:1003B00079345B3431342F343134303430342034B8pppppppppppppppppppppppppppppppppppppppppppppppp
:1003C00043345D343E34203400340A148A100A1158pppppppppppppppppppppppppppppppppppppppppppppppp
:1003D000EC3E03188A0A82003C3468346534613488pppppppppppppppppppppppppppppppppppppppppppppppp
:1003E000743469346E3467345B3473345D343E3452pppppppppppppppppppppppppppppppppppppppppppppppp
:1003F00020343C3464346F346D3465345B3473348Epppppppppppppppppppppppppppppppppppppppppppppppp
:100400005D343E3420343C346334683465346334C2pppppppppppppppppppppppppppppppppppppppppppppppp
:100410006B343E340A340D340A340D340034403029pppppppppppppppppppppppppppppppppppppppppppppppp
:10042000840000080319212A0230F800F701F70BB5pppppppppppppppppppppppppppppppppppppppppppppppp
:10043000172AF80B162A9730F700F70B1D2A800BA6pppppppppppppppppppppppppppppppppppppppppppppppp
:10044000142A00347108F20072088400800803192Dpppppppppppppppppppppppppppppppppppppppppppppppp
:100450002B2AF20A242A71087202F8000034243090pppppppppppppppppppppppppppppppppppppppppppppppp
:10046000BF004930C0006430C1003A30C2002030C3pppppppppppppppppppppppppppppppppppppppppppppppp
:10047000C3006930C4007230C5006D30C6007230F0pppppppppppppppppppppppppppppppppppppppppppppppp
:10048000C7006130C8006B30C9003430CA002E305Cpppppppppppppppppppppppppppppppppppppppppppppppp
:10049000CB006330CC002030CD003130CE00333083pppppppppppppppppppppppppppppppppppppppppppppppp
:1004A000CF003030D0003630D1002030D200323092pppppppppppppppppppppppppppppppppppppppppppppppp
:1004B000D3003030D400D5003930D6002D30D700EDpppppppppppppppppppppppppppppppppppppppppppppppp
:1004C0003030D8003130D9002D30DA003130DB0047pppppppppppppppppppppppppppppppppppppppppppppppp
:1004D0003730DC002030DD003130DE003230DF002Cpppppppppppppppppppppppppppppppppppppppppppppppp
:1004E0003A30E0003230E1003530E2003A30E300EBpppppppppppppppppppppppppppppppppppppppppppppppp
:1004F0003430E4003030E5005A30E6002030E700C8pppppppppppppppppppppppppppppppppppppppppppppppp
:100500006B30E8006130E9006B30EA006C30EB00E2pppppppppppppppppppppppppppppppppppppppppppppppp
:100510002030EC002430ED00EE01EF01F0013F301Fpppppppppppppppppppppppppppppppppppppppppppppppp
:10052000F1002222013078023F3E84000008243C82pppppppppppppppppppppppppppppppppppppppppppppppp
:10053000031DA22A3F30F1002222013078023F3E03pppppppppppppppppppppppppppppppppppppppppppppppp
:1005400084008001F10171082020F10AF70077088Apppppppppppppppppppppppppppppppppppppppppppppppp
:100550000C1EA82A99000F307102031DA32A213016pppppppppppppppppppppppppppppppppppppppppppppppp
:100560008400003000040319BB2A0C1EB52A0008C1pppppppppppppppppppppppppppppppppppppppppppppppp
:100570009900840AB12A1130F30073082020F30A8Dpppppppppppppppppppppppppppppppppppppppppppppppp
:10058000F70077080C1EC22A990021307302031D60pppppppppppppppppppppppppppppppppppppppppppppppp
:10059000BD2A23300C1ECA2A990043308400003043pppppppppppppppppppppppppppppppppppppppppppppppp
:1005A00000040319D92A0C1ED32A00089900840AD2pppppppppppppppppppppppppppppppppppppppppppppppp
:1005B000CF2A0A300C1EDA2A99000D300C1EDE2AD2pppppppppppppppppppppppppppppppppppppppppppppppp
:1005C0009900F1017108462000380319EC2AF10A5Cpppppppppppppppppppppppppppppppppppppppppppppppp
:1005D0000C1EE82A9900E22AF10171084E20003829pppppppppppppppppppppppppppppppppppppppppppppppp
:1005E0000319F72AF10A0C1EF32A9900ED2AF101EApppppppppppppppppppppppppppppppppppppppppppppppp
:1005F0007108752000380319022BF10A0C1EFE2A1Fpppppppppppppppppppppppppppppppppppppppppppppppp
:100600009900F82AF1017108A220003803190D2B76pppppppppppppppppppppppppppppppppppppppppppppppp
:10061000F10A0C1E092B9900032BF1017108C5206Apppppppppppppppppppppppppppppppppppppppppppppppp
:1006200000380319182BF10A0C1E142B99000E2BFDpppppppppppppppppppppppppppppppppppppppppppppppp
:10063000F1017108E02000380319232BF10A0C1E88pppppppppppppppppppppppppppppppppppppppppppppppp
:100640001F2B9900192BF10171081421003803198Fpppppppppppppppppppppppppppppppppppppppppppppppp
:100650002E2BF10A0C1E2A2B9900242BF101710874pppppppppppppppppppppppppppppppppppppppppppppppp
:10066000382100380319392BF10A0C1E352B99005Bpppppppppppppppppppppppppppppppppppppppppppppppp
:100670002F2BF1017108612100380319442BF10A75pppppppppppppppppppppppppppppppppppppppppppppppp
:100680000C1E402B99003A2BF10171087D21003896pppppppppppppppppppppppppppppppppppppppppppppppp
:1006900003194F2BF10A0C1E4B2B9900452BF1012Epppppppppppppppppppppppppppppppppppppppppppppppp
:1006A00071084620003803195A2BF10A0C1E562BECpppppppppppppppppppppppppppppppppppppppppppppppp
:1006B0009900502BF1017108B12100380319652B05pppppppppppppppppppppppppppppppppppppppppppppppp
:1006C000F10A0C1E612B99005B2BF1017108E521E9pppppppppppppppppppppppppppppppppppppppppppppppp
:1006D00000380319702BF10A0C1E6C2B9900662B45pppppppppppppppppppppppppppppppppppppppppppppppp
:1006E00064000034831686140610831206100D3041pppppppppppppppppppppppppppppppppppppppppppppppp
:1006F000F700F70B792B83168610831286100D30C6pppppppppppppppppppppppppppppppppppppppppppppppp
:10070000F700F70B812B831606140D30F700F70B5Bpppppppppppppppppppppppppppppppppppppppppppppppp
:10071000872B861483120034831686140D30F7005Dpppppppppppppppppppppppppppppppppppppppppppppppp
:10072000F70B902B06140D30F700F70B952B861066pppppppppppppppppppppppppppppppppppppppppppppppp
:10073000831286100D30F700F70B9C2B83160610E2pppppppppppppppppppppppppppppppppppppppppppppppp
:10074000831206100D30F700F70BA42B0034CF08EEpppppppppppppppppppppppppppppppppppppppppppppppp
:10075000031DAF2B8316861083128610B22B8316CFpppppppppppppppppppppppppppppppppppppppppppppppp
:10076000861483120000000000000000000000005Apppppppppppppppppppppppppppppppppppppppppppppppp
:10077000831606141A30F700F70BBC2B0000061086pppppppppppppppppppppppppppppppppppppppppppppppp
:1007800083120610A6080319CB2B8316061210300Dpppppppppppppppppppppppppppppppppppppppppppppppp
:1007900083128606CF2B831606128312061642306Apppppppppppppppppppppppppppppppppppppppppppppppp
:1007A000F700F70BD12B0000A6080319DD2B8316E9pppppppppppppppppppppppppppppppppppppppppppppppp
:1007B0000612103083128606E12B8316061283126Epppppppppppppppppppppppppppppppppppppppppppppppp
:1007C000061600348316861406141A30F700F70B49pppppppppppppppppppppppppppppppppppppppppppppppp
:1007D000E72B000086148312861CF12B0130CF001Apppppppppppppppppppppppppppppppppppppppppppppppp
:1007E000F22BCF018316061083120610A6080319F8pppppppppppppppppppppppppppppppppppppppppppppppp
:1007F000FF2B83160612103083128606032C8316F5pppppppppppppppppppppppppppppppppppppppppppppppp
:100800000612831206164230F700F70B052C000083pppppppppppppppppppppppppppppppppppppppppppppppp
:10081000A6080319112C83160612103083128606BFpppppppppppppppppppppppppppppppppppppppppppppppp
:10082000152C83160612831206164F08F8000034A2pppppppppppppppppppppppppppppppppppppppppppppppp
:100830000830CC00CC0803192A2CCB1F222C013005pppppppppppppppppppppppppppppppppppppppppppppppp
:10084000CE00232CCE014E08CF00A7230310CB0DE2pppppppppppppppppppppppppppppppppppppppppppppppp
:10085000CC031A2CE2237808CD004D08F8000034B0pppppppppppppppppppppppppppppppppppppppppppppppp
:100860000830CC00CC080319422CE223F808031905pppppppppppppppppppppppppppppppppppppppppppppppp
:100870003D2C0310CB0D4B14402C0310CB0D4B1013pppppppppppppppppppppppppppppppppppppppppppppppp
:10088000CC03322C4A08CF00A7234B08F8000034D1pppppppppppppppppppppppppppppppppppppppppppppppp
:100890000310BF0D72238C233F08CB00182440089Fpppppppppppppppppppppppppppppppppppppppppppppppp
:1008A000CA00CB0018248C233F08CB001824CA01AFpppppppppppppppppppppppppppppppppppppppppppppppp
:1008B00030247808C300CA0130247808C2004208F6pppppppppppppppppppppppppppppppppppppppppppppppp
:1008C000C9004308C8000130CA0030247808C700B6pppppppppppppppppppppppppppppppppppppppppppppppp
:1008D00072233F08C6004008C5003F08C400C1019Cpppppppppppppppppppppppppppppppppppppppppppppppp
:1008E0004130CA002F30D100D001CF01CE01CD015Fpppppppppppppppppppppppppppppppppppppppppppppppp
:1008F0000130CC000730CB002F30D100D2010530C1pppppppppppppppppppppppppppppppppppppppppppppppp
:10090000D300D4014A08530784000008D600803081pppppppppppppppppppppppppppppppppppppppppppppppp
:10091000F7005408F8000319912C0310F70CF80B9Apppppppppppppppppppppppppppppppppppppppppppppppp
:100920008D2C77085605031DAF2CD3080319AF2C67pppppppppppppppppppppppppppppppppppppppppppppppp
:10093000D1035408063C031C9F2CD40AA12CD401DBpppppppppppppppppppppppppppppppppppppppppppppppp
:10094000D303A6080319AA2C8316061210308312ABpppppppppppppppppppppppppppppppppppppppppppppppp
:100950008606AE2C8316061283120616822C0830E9pppppppppppppppppppppppppppppppppppppppppppppppp
:100960005102D200D2080319E42C0530D300530FF2pppppppppppppppppppppppppppppppppppppppppppppppp
:10097000BA2CD52C013053024B3E8400801FC62C6Cpppppppppppppppppppppppppppppppppppppppppppppppp
:10098000D3080319C62C0130D500C72CD5014B3034pppppppppppppppppppppppppppppppppppppppppppppppp
:10099000530784000310000D80004B305307840080pppppppppppppppppppppppppppppppppppppppppppppppp
:1009A000550800078000D303B72CD203A60803190Bpppppppppppppppppppppppppppppppppppppppppppppppp
:1009B000DF2C83160612103083128606E32C831672pppppppppppppppppppppppppppppppppppppppppppppppp
:1009C000061283120616B22CD3015308053C031CF1pppppppppppppppppppppppppppppppppppppppppppppppp
:1009D000FB2C4A085307D60084000008D7004B3090pppppppppppppppppppppppppppppppppppppppppppppppp
:1009E0005307840000085706D800560884005808AApppppppppppppppppppppppppppppppppppppppppppppppp
:1009F0008000D30AE52C5108083C031C742C4A08DBpppppppppppppppppppppppppppppppppppppppppppppppp
:100A000084000008F800780847020319092DC9017Dpppppppppppppppppppppppppppppppppppppppppppppppp
:100A1000C8014808F8004908F9000034C201C101C2pppppppppppppppppppppppppppppppppppppppppppppppp
:100A200042084002031C302D031D1A2D3F084102CDpppppppppppppppppppppppppppppppppppppppppppppppp
:100A30000318302DA6080319232D83160612103033pppppppppppppppppppppppppppppppppppppppppppppppp
:100A400083128606272D831606128312061642305Dpppppppppppppppppppppppppppppppppppppppppppppppp
:100A5000F700F70B292D0000C10A0319C20A102D57pppppppppppppppppppppppppppppppppppppppppppppppp
:100A600000342708840047088000840A8001A70A10pppppppppppppppppppppppppppppppppppppppppppppppp
:100A700000340408C600400EF038C200C207E23E4Fpppppppppppppppppppppppppppppppppppppppppppppppp
:100A8000C300323EC50040080F39C307C307C5077Epppppppppppppppppppppppppppppppppppppppppppppppp
:100A9000E93EC400C407C4073F0E0F39C407C507A9pppppppppppppppppppppppppppppppppppppppppppppppp
:100AA000C40DC50DC509C50D3F080F39C507C20DD9pppppppppppppppppppppppppppppppppppppppppppppppp
:100AB0000730C1000A30C507C403031C5B2DC407FFpppppppppppppppppppppppppppppppppppppppppppppppp
:100AC000C303031C5F2DC307C203031C632DC207AEpppppppppppppppppppppppppppppppppppppppppppppppp
:100AD000C103031C672D41308400073046054613CFpppppppppppppppppppppppppppppppppppppppppppppppp
:100AE000840745300402031946170008F700031D68pppppppppppppppppppppppppppppppppppppppppppppppp
:100AF000812D461B812D461A8D2DC619812D203042pppppppppppppppppppppppppppppppppppppppppppppppp
:100B0000842DC61546123030F707C0010408BF0017pppppppppppppppppppppppppppppppppppppppppppppppp
:100B10007708C70031253F088400840A461F712DDDpppppppppppppppppppppppppppppppppppppppppppppppp
:100B20008A153C290408C600C01F9E2DC617461E04pppppppppppppppppppppppppppppppppppppppppppppppp
:100B3000C60ABF09C009BF0A0319C00A400EF0382Fpppppppppppppppppppppppppppppppppppppppppppppppp
:100B4000C200C207E23EC300323EC50040080F3972pppppppppppppppppppppppppppppppppppppppppppppppp
:100B5000C307C307C507E93EC400C407C4073F0E67pppppppppppppppppppppppppppppppppppppppppppppppp
:100B60000F39C407C507C40DC50DC509C50D3F081Cpppppppppppppppppppppppppppppppppppppppppppppppp
:100B70000F39C507C20D0730C1000A30C507C403CDpppppppppppppppppppppppppppppppppppppppppppppppp
:100B8000031CBE2DC407C303031CC22DC307C2032Dpppppppppppppppppppppppppppppppppppppppppppppppp
:100B9000031CC62DC207C103031CCA2D41308400ABpppppppppppppppppppppppppppppppppppppppppppppppp
:100BA00007304605461384034605031DDE2D461A0Dpppppppppppppppppppppppppppppppppppppppppppppppp
:100BB000840A461ADE2D2030F700FB2D84074530CDpppppppppppppppppppppppppppppppppppppppppppppppp
:100BC0000402031946170008F700031DEF2D461B0Apppppppppppppppppppppppppppppppppppppppppppppppp
:100BD000EF2D461A032EC619EF2D2030FA2DC61F11pppppppppppppppppppppppppppppppppppppppppppppppp
:100BE000F72D2D30F70084034613C613FB2DC615D1pppppppppppppppppppppppppppppppppppppppppppppppp
:100BF00046123030F707C0010408BF007708C7006Dpppppppppppppppppppppppppppppppppppppppppppppppp
:100C000031253F088400840A461FDF2D0034420846pppppppppppppppppppppppppppppppppppppppppppppppp
:100C1000F801410203180F2E4108F7001B2EF701BFpppppppppppppppppppppppppppppppppppppppppppppppp
:100C20000830C300C10DF70D420877020318F70022pppppppppppppppppppppppppppppppppppppppppppppppp
:100C3000F80DC30B122E003478083F08C100643051pppppppppppppppppppppppppppppppppppppppppppppppp
:100C4000C20007267708BF0078083030031D2F2E1Apppppppppppppppppppppppppppppppppppppppppppppppp
:100C5000C01C362EC019362E401A2030322EC0113Cpppppppppppppppppppppppppppppppppppppppppppppppp
:100C600040124014F8077808C70031253F08C1003Apppppppppppppppppppppppppppppppppppppppppppppppp
:100C70000A30C20007267708BF0078083030031D0Dpppppppppppppppppppppppppppppppppppppppppppppppp
:100C8000472EC0194B2E401C4B2E401A2030F8071Fpppppppppppppppppppppppppppppppppppppppppppppppp
:100C90007808C70031253030BF073F08C70031252Dpppppppppppppppppppppppppppppppppppppppppppppppp
:100CA0000034C01B632E0F30F7003F0EF7050A30EBpppppppppppppppppppppppppppppppppppppppppppppppp
:100CB000770203185E2E3030F707602E4008F707E2pppppppppppppppppppppppppppppppppppppppppppppppp
:100CC0007708C70031250F30BF050A303F020318EFpppppppppppppppppppppppppppppppppppppppppppppppp
:100CD0006B2E30306D2EC0134008BF073F08C70091pppppppppppppppppppppppppppppppppppppppppppppppp
:060CE00031258A151C2AD3pppppppppppppppppppppppppppppppppppppppppppppppp
:1010000084011F308305703083168F0033309900C0pppppppppppppppppppppppppppppppppppppppppppppppp
:101010002230980090308312980083161F129F127Epppppppppppppppppppppppppppppppppppppppppppppppp
:101020001B0880399B0007309C008312A0013430DCpppppppppppppppppppppppppppppppppppppppppppppppp
:10103000A1002E30A2003030A300A401A701831626pppppppppppppppppppppppppppppppppppppppppppppppp
:101040000612831206168316861183128611043047pppppppppppppppppppppppppppppppppppppppppppppppp
:10105000BF00FA30C0008A110F228A15BF0B292861pppppppppppppppppppppppppppppppppppppppppppppppp
:101060006400A901A801A501A60133148A112F2249pppppppppppppppppppppppppppppppppppppppppppppppp
:101070008A15BF010630C0008A1148248A157908F4pppppppppppppppppppppppppppppppppppppppppppppppp
:10108000AD007808AC00BF010730C0008A114824C9pppppppppppppppppppppppppppppppppppppppppppppppp
:101090008A157908AB007808AA000430BF00FA303Epppppppppppppppppppppppppppppppppppppppppppppppp
:1010A000C0008A110F228A15BF0B4F2864005A30E6pppppppppppppppppppppppppppppppppppppppppppppppp
:1010B000B2003208593C0318B20AC0016430BF00C4pppppppppppppppppppppppppppppppppppppppppppppppp
:1010C0008A110E258A153208593C03187B28A50879pppppppppppppppppppppppppppppppppppppppppppppppp
:1010D000031DA503A608031DA603A508031975286Bpppppppppppppppppppppppppppppppppppppppppppppppp
:1010E000831686118312861579288316861183123Apppppppppppppppppppppppppppppppppppppppppppppppp
:1010F0008611B20164008C1A7F28331C59286400C1pppppppppppppppppppppppppppppppppppppppppppppppp
:101100006B30B4008C1E88288C1E84281A08B4000Apppppppppppppppppppppppppppppppppppppppppppppppp
:1011100063303402EA3E0318AA28163E4F2A1430E0pppppppppppppppppppppppppppppppppppppppppppppppp
:10112000A500AA28A501AA281430A600AA281430D0pppppppppppppppppppppppppppppppppppppppppppppppp
:10113000A600A500AA28A601AA28A608031DA32880pppppppppppppppppppppppppppppppppppppppppppppppp
:101140008A112F228A15AA283314AA283310AA2814pppppppppppppppppppppppppppppppppppppppppppppppp
:101150008A01002818121816A80A0319A90ABF0143pppppppppppppppppppppppppppppppppppppppppppppppp
:101160000630C0008A1148248A157908AD00780835pppppppppppppppppppppppppppppppppppppppppppppppp
:10117000AC00BF010730C0008A1148248A157908E5pppppppppppppppppppppppppppppppppppppppppppppppp
:10118000AB007808AA0003102C0DBF002D0DC00085pppppppppppppppppppppppppppppppppppppppppppppppp
:10119000B3303F02F7004008FA006A30031C6B309Epppppppppppppppppppppppppppppppppppppppppppppppp
:1011A000FA027708AE007A08AF0003102A0DBF00DCpppppppppppppppppppppppppppppppppppppppppppppppp
:1011B0002B0DC000B3303F02F7004008FA006A3040pppppppppppppppppppppppppppppppppppppppppppppppp
:1011C000031C6B30FA027708B0007A08B100BE0148pppppppppppppppppppppppppppppppppppppppppppppppp
:1011D000C0013230BF008A110E258A1524300C1E42pppppppppppppppppppppppppppppppppppppppppppppppp
:1011E000EF289900C0013230BF008A110E258A1500pppppppppppppppppppppppppppppppppppppppppppppppp
:1011F0003530A7004D30C7008A1131258A152130BEpppppppppppppppppppppppppppppppppppppppppppppppp
:10120000840000300004031910290408BF000008FEpppppppppppppppppppppppppppppppppppppppppppppppp
:10121000C7008A1131258A153F088400840A0129F4pppppppppppppppppppppppppppppppppppppppppppppppp
:101220002030C7008A1131258A15BD0135303D07B0pppppppppppppppppppppppppppppppppppppppppppppppp
:101230008400800803193229C0013230BF008A11AEpppppppppppppppppppppppppppppppppppppppppppppppp
:101240000E258A1535303D0784000008BF003F0891pppppppppppppppppppppppppppppppppppppppppppppppp
:101250000C1E282999003D08BD0A353E840000086Fpppppppppppppppppppppppppppppppppppppppppppppppp
:10126000BE0616293530A700103084002908C000BApppppppppppppppppppppppppppppppppppppppppppppppp
:101270002808BF008A11392D8A152030C7008A112Dpppppppppppppppppppppppppppppppppppppppppppppppp
:1012800031258A15BD0135303D07840080080319DApppppppppppppppppppppppppppppppppppppppppppppppp
:101290005F29C0013230BF008A110E258A15353012pppppppppppppppppppppppppppppppppppppppppppppppp
:1012A0003D0784000008BF003F080C1E5529990027pppppppppppppppppppppppppppppppppppppppppppppppp
:1012B0003D08BD0A353E84000008BE06432935308Epppppppppppppppppppppppppppppppppppppppppppppppp
:1012C000A700103084002F08C0002E08BF008A112Cpppppppppppppppppppppppppppppppppppppppppppppppp
:1012D00092258A152030C7008A1131258A15BD0153pppppppppppppppppppppppppppppppppppppppppppppppp
:1012E00035303D078400800803198C29C001323055pppppppppppppppppppppppppppppppppppppppppppppppp
:1012F000BF008A110E258A1535303D07840000088Dpppppppppppppppppppppppppppppppppppppppppppppppp
:10130000BF003F080C1E822999003D08BD0A353EEApppppppppppppppppppppppppppppppppppppppppppppppp
:1013100084000008BE0670293530A7001030840014pppppppppppppppppppppppppppppppppppppppppppppppp
:101320003108C0003008BF008A1192258A1520308Cpppppppppppppppppppppppppppppppppppppppppppppppp
:10133000C7008A1131258A15BD0135303D0784006Bpppppppppppppppppppppppppppppppppppppppppppppppp
:1013400080080319B929C0013230BF008A110E2567pppppppppppppppppppppppppppppppppppppppppppppppp
:101350008A1535303D0784000008BF003F080C1E89pppppppppppppppppppppppppppppppppppppppppppppppp
:10136000AF2999003D08BD0A353E84000008BE063Dpppppppppppppppppppppppppppppppppppppppppppppppp
:101370009D293530A7002508BF001B30C0008A1109pppppppppppppppppppppppppppppppppppppppppppppppp
:101380001C268A152030C7008A1131258A15BD0117pppppppppppppppppppppppppppppppppppppppppppppppp
:1013900035303D07840080080319E429C00132304Cpppppppppppppppppppppppppppppppppppppppppppppppp
:1013A000BF008A110E258A1535303D0784000008DCpppppppppppppppppppppppppppppppppppppppppppppppp
:1013B000BF003F080C1EDA2999003D08BD0A353EE2pppppppppppppppppppppppppppppppppppppppppppppppp
:1013C00084000008BE06C8293530A7002608BF00E3pppppppppppppppppppppppppppppppppppppppppppppppp
:1013D0001B30C0008A111C268A152030C7008A11D4pppppppppppppppppppppppppppppppppppppppppppppppp
:1013E00031258A15BD0135303D0784008008031979pppppppppppppppppppppppppppppppppppppppppppppppp
:1013F0000F2AC0013230BF008A110E258A15353000pppppppppppppppppppppppppppppppppppppppppppppppp
:101400003D0784000008BF003F080C1E052A990014pppppppppppppppppppppppppppppppppppppppppppppppp
:101410003D08BD0A353E84000008BE06F32935307Cpppppppppppppppppppppppppppppppppppppppppppppppp
:10142000A7002A30C7008A1131258A153E08BF005Fpppppppppppppppppppppppppppppppppppppppppppppppp
:101430003730C0008A11512E8A150A30C7008A1130pppppppppppppppppppppppppppppppppppppppppppppppp
:1014400031258A150D30C7008A1131258A15BD0155pppppppppppppppppppppppppppppppppppppppppppppppp
:1014500035303D078400800803193F2AC00132302Fpppppppppppppppppppppppppppppppppppppppppppppppp
:10146000BF008A110E258A153D08BD0A353E84004Dpppppppppppppppppppppppppppppppppppppppppppppppp
:101470000008C00040080C1E3B2A9900282AC00121pppppppppppppppppppppppppppppppppppppppppppppppp
:101480003230BF008A110E258A151730C000703027pppppppppppppppppppppppppppppppppppppppppppppppp
:10149000BF008A110E258A156400572863000A10C0pppppppppppppppppppppppppppppppppppppppppppppppp
:1014A0008A140A1182079228AA28AA28AA28AA28F8pppppppppppppppppppppppppppppppppppppppppppppppp
:1014B0008F289D28AA28AA289B28AA28AA289428E9pppppppppppppppppppppppppppppppppppppppppppppppp
:1014C000AA28AA28A428A628AA28A828AA28AA2898pppppppppppppppppppppppppppppppppppppppppppppppp
:0214D00097285Bpppppppppppppppppppppppppppppppppppppppppppppppp
:061980008A01002800347Apppppppppppppppppppppppppppppppppppppppppppppppp
:04400E00143FFC3F20pppppppppppppppppppppppppppppppppppppppppppppppp
:00000001FFpppppppppppppppppppppppppppppppppppppppppppppppp
;PIC16F88pppppppppppppppppppppppppppppppppppppppppppppppp
pppppppppppppppppppppppppppppppppppppppppppppppp
:0C00000008308A00762800002028080044pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100040000A108A100A11273E03188A0A8200003417pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100050005E34BC34E23461343F34DD348334C23442pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100060009C347E342034A334FD341F3441349D3419pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10007000C33421347F34FC34A23440341E345F3422pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100080000134E334BD343E3460348234DC34233410pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100090007D349F34C13442341C34FE34A034E13406pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1000A000BF345D3403348034DE343C346234BE34D7pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1000B000E03402345C34DF34813463343D347C34E6pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1000C0002234C0349E341D344334A134FF344634CApppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1000D0001834FA34A434273479349B34C534843446pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1000E000DA3438346634E534BB3459340734DB341Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1000F000853467343934BA34E43406345834193426pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100100004734A534FB3478342634C4349A34653407pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100110003B34D934873404345A34B834E634A73401pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10012000F9341B344534C63498347A342434F834E2pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10013000A63444341A349934C73425347B343A34E1pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1001400064348634D8345B340534E734B9348C34C1pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10015000D23430346E34ED34B33451340F344E3441pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100160001034F234AC342F3471349334CD34113430pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100170004F34AD34F33470342E34CC349234D33421pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100180008D346F343134B234EC340E345034AF34F7pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10019000F13413344D34CE34903472342C346D3405pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1001A0003334D1348F340C345234B034EE343234EEpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1001B0006C348E34D03453340D34EF34B134F034E5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1001C000AE344C3412349134CF342D347334CA34B9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1001D000943476342834AB34F53417344934083445pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1001E0005634B434EA3469343734D5348B34573424pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1001F0000934EB34B534363468348A34D434953425pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10020000CB3429347734F434AA3448341634E934FEpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10021000B73455340B348834D63434346A342B3400pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1002200075349734C9344A341434F634A8347434E9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100230002A34C834963415344B34A934F734B634E0pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10024000E8340A345434D73489346B3435340D05EApppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100250000D0523104D39E135EF366539A0127310C5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10026000A82129103218B01BA02A532A8A060000A0pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100270002310E337ED366137E4393A106816A031C0pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100280002C106F1620362C107816A0342C107216F5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10029000A0302C107316A03A0D0500002310F63282pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1002A0007210F33271106937DB18AF183018A021C3pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1002B0005D10F335F92DB11731183010C32EA03968pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1002C000EB3CDB18AF183018A0215D100001EF3AADpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1002D000F42DB11731183010C32E2034E530F42D31pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1002E000F32E2032EF36E52DF32EA031E832E33540pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1002F0000D050D0500005330840083130008031919pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100300008E290230F800F701F70B8429F80B8329B6pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100310009730F700F70B8A29800B81290800831694pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100320005308D5005208D4005508FA005408840038pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1003300083137A18831780080319A229D40A031992pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10034000D50A942952085402F7005508FA005308B8pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10035000031C530FFA027708F80083120800831673pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1003600003178C170C14000000000318E6298312F1pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100370000C087F3983160313D300831203170D086Bpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1003800083160313D400831203170F088316031375pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10039000D500530883120C1ECB29990083165408ECpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1003A000831203178D008316031355088312031756pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1003B0008F0083168C170C14000000000313D20B5Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1003C000E229E4290317E629112A031783120C0DE9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1003D0000E0D7F3983160313D300831203170D0804pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1003E00083160313D400831203170F088316031315pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1003F000D500530883120C1EFB299900831654085Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10040000831203178D0083160313550883120317F5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100410008F008D0A03198F0A031083160313D20B62pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10042000B0298312080080080319302A8316D301EBpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100430000408D2005310831B5314000883120C1EAFpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100440001F2A9900831652088400831353188317B8pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10045000840A031D2E2A8312850A83168312132A07pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100460000800831603178C170C1400000000831279pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100470000C087F3903198B2A83160313D2008312C9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1004800003170D0883160313D300831203170F08F5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1004900083160313D400520883120C1E4D2A9900B0pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1004A00083165308831203178D0083160313540811pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1004B000831203178F0083168C170C1400000000A2pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1004C00083120C0D0E0D7F3903198B2A831603132Bpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1004D000D200831203170D0883160313D30083126Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1004E00003170F0883160313D400520883120C1E3Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1004F000772A990083165308831203178D008316F9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1005000003135408831203178F008D0A03198F0AEFpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100510000313312A03170313080024308316A000A5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100520004930A1006430A2003A30A3002030A4007Apppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100530006930A5007230A6006D30A7007230A800A7pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100540006130A9006B30AA003430AB002E30AC0013pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100550006330AD002030AE003130AF003730B00036pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100560003130B1003630B2002030B3003230B40048pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100570003030B5003130B6003030B7002D30B80023pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100580003130B9003230BA002D30BB003030BC0001pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100590003930BD002030BE003230BF00C0003A30DCpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1005A000C1003030C200C3003A30C4003230C50050pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1005B0003630C6005A30C7002030C8006B30C90042pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1005C0006130CA006B30CB006C30CC002030CD00E5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1005D0002430CE00CF01D301A030D20083128F216Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1005E00001307802A03E840083130008243C031DE0pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1005F000052B8316D301A030D20083128F21013046pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100600007802A03E840083138001273003178D00F9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1006100001308F0003100F3083160313D2008312B2pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10062000AF2122308400831313222F3003178D0053pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1006300001308F0003140F3083160313D20083128Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10064000AF2123300C1E222B9900A4308400831389pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1006500013220D300C1E2A2B99000A300C1E2E2B53pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100660009900383003178D0001308F0003133122B9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100670004E3003178D0001308F0003133122673095pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1006800003178D0001308F0003133122640008002Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10069000831686140610831206100D30F700F70B30pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1006A0004F2B83168610831286100D30F700F70B40pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1006B000572B831606140D30F700F70B5D2B8614ADpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1006C00083120800831686140D30F700F70B662B93pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1006D00006140D30F700F70B6B2B86108312861073pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1006E0000D30F700F70B722B8316061083120610DDpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1006F0000D30F700F70B7A2B0800E208031D852B5Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100700008316861083128610882B83168614831214pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10071000892B8A2B8B2B831606141A30F700F70BC4pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100720008F2B0000061083120610A70803199E2BBApppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1007300083160612103083128606A22B8316061229pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10074000831206164230F700F70BA42B0000A7080Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100750000319B02B83160612103083128606B42BB1pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1007600083160612831206160800831686140614D2pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100770001A30F700F70BBA2B000086148312861C80pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10078000C42B0130E200C52BE20183160610831250pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100790000610A7080319D22B8316061210308312F5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1007A0008606D62B83160612831206164230F700F1pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1007B000F70BD82B0000A7080319E42B83160612A9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1007C000103083128606E82B831606128312061653pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1007D0006208F80008000830DF00DF080319FD2B6Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1007E000DE1FF52B0130E100F62BE1016108E2008Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1007F0007D230310DE0DDF03ED2BB5237808E00029pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100800006008F80008000830DF00DF080319152C25pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10081000B523F8080319102C0310DE0D5E14132CF9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100820000310DE0D5E10DF03052C5D08E2007D2362pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100830005E08F80008000310D20D48236223520816pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10084000DE00EB235308DD00DE00EB2362235208B9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10085000DE00EB23DD0103247808D600DD0103244Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100860007808D5005508DC005608DB000130DD00B3pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1008700003247808DA0048235208D9005308D80026pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100880005208D700D401DE015430DD002F30E500DEpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10089000E401E301E201E1010130E0000730DF00A3pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1008A0002F30E500E6010530E700E80167085D0745pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1008B000840083135E1883170008EA008030F70075pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1008C0006808F8000319682C0310F70CF80B642C67pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1008D00077086A05031D862CE7080319862CE503B3pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1008E0006808063C031C762CE80A782CE801E7032Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1008F000A7080319812C831606121030831286066Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10090000852C8316061283120616562C08306502B3pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10091000E600E6080319BE2C0530E700670F912CAEpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10092000AF2C013067025F3E84008313801F9E2C32pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10093000E70803199E2C0130E9009F2CE9015F3084pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100940006707840083130310000D80005F30670782pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1009500084008313690800078000E7038E2CE603F8pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10096000A7080319B92C83160612103083128606C5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10097000BD2C8316061283120616892CE701670820pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10098000053C031CE12C67085D07F8005E08FA00CFpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100990000318FA0A7808840083137A18831700086Apppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1009A000EC005F3067078400831300086C06EC00DEpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1009B0007808840083137A1883176C088000E70A8Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1009C000BF2C6508083C031C482C5D088400831379pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1009D0005E1883170008F80078085A020319F22CF1pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1009E000DC01DB015B08F8005C08F90008008316F5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1009F0008613861383128613A7080319052D831601pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100A00000612103083128606092D831606128312F1pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100A100006164230F700F70B0B2D0000A70803194Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100A2000172D831606121030831286061B2D83168Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100A30000612831206164230F700F70B1D2D000038pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100A4000A7080319292D8316061210308312860673pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100A50002D2D83160612831206164230F700F70B6Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100A60002F2D0000A70803193B2D83160612103006pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100A7000831286063F2D8316061283120616423015pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100A8000F700F70B412D0000A70803194D2D831621pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100A90000612103083128606512D83160612831219pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100AA00006164230F700F70B532D0000A708031974pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100AB0005F2D83160612103083128606632D83166Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100AC000061283120616831686170330F700F70BFBpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100AD000672D8312861B6F2D0030F800CA2D2B3036pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100AE000F700F70B712DA70803197C2D831606124Apppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100AF000103083128606802D831606128312061686pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100B00005210861F5214A70803198C2D8316061243pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100B1000103083128606902D831606128312061655pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100B20004230F700F70B922D0000A70803199E2D05pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100B300083160612103083128606A22D8316061223pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100B4000831206164230F700F70BA42D0000A70809pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100B50000319B02D83160612103083128606B42DA9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100B600083160612831206161330F700F70BB62D04pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100B7000B92DA7080319C22D83160612103083124Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100B80008606C62D831606128312061600305218EApppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100B90000130F80008000130D3005308083C031C62pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100BA000292E0310D20C003003180130D400540851pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100BB000D500831686138613831286130630F7003Apppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100BC000F70BE02D0000D5080319F62D83168613C8pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100BD0008613831286170630F700F70BED2D000001pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100BE000861BF52D0030F800212E052E8316861366pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100BF0008613831286130630F700F70BFD2D0000D5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100C0000861F052E0030F800212E2130F700F70B4Bpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100C1000072E83168613861383128617A7080319D7pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100C2000172E831606121030831286061B2E83168Bpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100C30000612831206162130F700F70B1D2E013025pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100C4000F800F808031D272E0030F8002B2ED30AD9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100C5000CD2D0130F8000800D501D401550853020Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100C6000031C4E2E031D382E5208540203184E2E1Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100C7000A7080319412E8316061210308312860628pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100C8000452E83160612831206164230F700F70B24pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100C9000472E0000D40A0319D50A2E2E0800013071pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100CA000D4005408083C031C872E83168613861331pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100CB000831286130930F700F70B5C2E8316861714pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100CC0000330F700F70B622E83125610861B561462pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100CD0004230F700F70B6A2E0000A7080319762EA2pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100CE000831606121030831286067A2E8316061299pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100CF00083120616003056180130F800F808031D5Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100D0000832E0310842E0314D50CD40A512E5508BBpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100D1000F8008A15E829530855068039D700D31FF3pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100D2000962ED209D309D20A0319D30AD51F9D2EB4pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100D3000D409D509D40A0319D50A1030D600F70111pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100D4000FA01D30CD20C031CAB2E5408F70703187Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100D5000FA0A5508FA07FA0CF70CF90CF80CD60B3Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100D6000A12ED71FB82EF809F909F80A0319F90AB4pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100D70008A152D2A550857068039D900D51FC52E4Apppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100D8000D409D509D40A0319D50AD71FCC2ED60900pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100D9000D709D60A0319D70AF801F901F701FA01B0pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100DA0005708031DD62E56080319F02E1030D80010pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100DB0000310D40DD50DF70DFA0D57087A02031D57pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100DC000E32E56087702031CEC2E5608F702031C8Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100DD000FA035708FA020314F80DF90DD80BD82EB0pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100DE000D91FF72EF809F909F80A0319F90A0800BApppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100DF000280884008313291883175B088000840A5Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100E00008001A80A0319A90A0800800803191A2FEBpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100E1000D3010408D2005310831B53140008DB00D5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100E2000F82652088400831353188317840A031981pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100E3000850A052F8A15E02ADA010408D9005A101Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100E4000831B5A14530EF038D500D507E23ED60066pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100E5000323ED80053080F39D607D607D807E93EE7pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100E6000D700D707D707520E0F39D707D807D70DA6pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100E7000D80DD809D80D52080F39D807D50D07302Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100E8000D4000A30D807D703031C422FD707D60354pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100E9000031C462FD607D503031C4A2FD507D403BEpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100EA000031C4E2F54308400831307305905591307pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100EB000840758300402031959170008F700031D6Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100EC000692F591B692F591A7B2FD919692F203087pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100ED0006C2FD91559123030F707D3010408D2000Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100EE0005310831B53147708DB00F8265208840044pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100EF000831353188317840A591F592F8A15112BEEpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100F0000DA010408D9005A10831B5A14D31F902FFApppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100F1000D917591ED90AD209D309D20A0319D30AFBpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100F2000530EF038D500D507E23ED600323ED80049pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100F300053080F39D607D607D807E93ED700D70799pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100F4000D707520E0F39D707D807D70DD80DD809B4pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100F5000D80D52080F39D807D50D0730D4000A3004pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100F6000D807D703031CB02FD707D603031CB42F11pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100F7000D607D503031CB82FD507D403031CBC2FF9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100F800054308400831307305905591384035905DDpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100F9000031DD12F591A840A591AD12F2030F70076pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100FA000EE2F840758300402031959170008F70080pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100FB000031DE22F591BE22F591AFC2FD919E22FDApppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100FC0002030ED2FD91FEA2F2D30F700840359135Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100FD000D913EE2FD91559123030F707D301040871pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100FE000D2005310831B53147708DB00F8265208F5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:100FF0008400831353188317840A591FD22F0800C3pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101000005508F8015402031808285408F70014285Apppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10101000F7010830D600D40DF70D550877020318F4pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10102000F700F80DD60B0B28080078085208D400FApppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101030006430D50000207708D20078083030031DD6pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101040002828D31C3128D3193128531A20302B28B3pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10105000D31153125314F8077808DB008A11F826CDpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101060008A155208D4000A30D50000207708D20033pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1010700078083030031D4228D3194828531C4828CBpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10108000531A2030F8077808DB008A11F8268A15F1pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101090003030D2075208DB008A11F8268A15080082pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1010A000D31B64280F30F700520EF7050A30770281pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1010B00003185D283030F7075F285308F7077708D3pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1010C000DB008A11F8268A150F30D2050A30520249pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1010D00003186C2830306E28D3135308D2075208F7pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1010E000DB008A11F8268A158A15622C8401831385pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1010F0001F308305723083168F000F08333099003Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10110000A230980090308312980083161F129F120Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101110001B0880399B0007309C008312A001A101ADpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101120003430A2002E30A3003130A400A501A80164pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10113000A9018316061283120616831686118312DEpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1011400086110430D200FA30D3008A117B218A152Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10115000D20BA3286400AB01AA01A601A7013B148Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10116000BB108A118D228A15D2010630D3008A1154pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101170001B248A157908AF007808AE00D201073029pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10118000D3008A111B248A157908AD007808AC00B9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101190008A11F7248A15CC30D2008A11CB258A1502pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1011A0004430D2008A11CB258A150430D200FA309Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1011B000D3008A117B218A15D20BD72864005A30BCpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1011C000BA003A08593C0318BA0AD3016430D20075pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1011D0008A112C268A153A08593C03180329A608B7pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1011E000031DA603A708031DA703A6080319FD28CEpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1011F00083168611831286150129831686118312A0pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101200008611BA0164008C1A07293B1CE12864008Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101210006B30BC008C1E10298C1E0C291A08BC00D7pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1012200061303C02E83E03183C29183E8F2C1430F4pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10123000A600BB103C29A601BB103C291430A70016pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10124000BB103C291430A700A600BB103C29A70105pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10125000BB103C29A708031D30298A118D228A154Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101260003C293B14BB103C293B10BB103C293B14D0pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10127000BB143C298A01002818121816AA0A03195Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10128000AB0AD2010630D3008A111B248A157908D3pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10129000AF007808AE0003102E0DD2002F0DD30042pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1012A000B3305202F7005308FA006A30031C6B3067pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1012B000FA027708B0007A08B100D2010730D300F3pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1012C0008A111B248A157908AD007808AC002D0816pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1012D000473C03187729FF3A031D72292C08E13C8Bpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1012E000031877299530B3004D30B20089290310D7pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1012F0002C0DD2002D0DD300B3305202F70053084Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10130000FA006A30031C6B30FA027708B2007A08E0pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10131000B300D2010830D3008A111B248A15790842pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10132000AD007808AC002D08473C0318A329FF3A0Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10133000031D9E292C08E13C0318A3299530B50014pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101340004D30B400B52903102C0DD2002D0DD30063pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10135000B3305202F7005308FA006A30031C6B30B6pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10136000FA027708B4007A08B5008A11F7248A15C2pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10137000CC30D2008A11CB258A154430D2008A1194pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10138000CB258A1564001730D3007030D2008A1143pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101390002C268A158A11F7248A15CC30D2008A119Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1013A000CB258A15BE30D2008A11CB258A15C701FCpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1013B0004708083C031CF2293D304707F800FA01B2pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1013C0000318FA0A7808D2007A08D3008A114F2E3Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1013D0008A155208840083135318831778088000F5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1013E000C70AD8293D08B8003E08B900D3013D30EEpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1013F000D2000830D400D501D60154085602031893pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10140000162A56085207F8005308FA000318FA0A79pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101410007808840083137A188317000855068A1108pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1014200020208A15F800D500D60AFD295508F800B5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1014300078084502031D462A4408103C031D462A2Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101440003908B7003808B6003708D3003608D2008Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10145000D5010630D4008A118B2E8A157908D30065pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101460007808D2003708D5003608D400D7010430F8pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10147000D6008A11BA268A1578085207B600530892pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10148000B70079080318790FB7074A2A9530B700D3pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101490004D30B600BB1CC22AB11B582A3108073C8Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1014A000031C5A2A031D582A3008073C031C5A2AD9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1014B0001430A60034083202D2003308D3003508B5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1014C000031C350FD3025308FA005208D31F712AA8pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1014D0005208003CF700FA015308031C530FFA02ACpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1014E0007708D2007A08D300D31B7D2AD308031DC6pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1014F000C22A5208633C031CC22AB31F822AB71FA8pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101500008E2A842AB71BC22A33083702031CC22A38pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10151000031D8E2A360832020318C22A3708D50066pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101520003608D400D7010230D6008A11BA268A15AFpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101530007908D3007808D2003208D2023308031C9Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10154000330FD3025308FA005208D31FB02A5208AFpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10155000003CF700FA015308031C530FFA02770806pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10156000D2007A08D300D31BC22A5308013C0318C7pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10157000C22AFF3A031DC02A5208583C0318C22A47pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101580001430A700D101D3013230D2008A112C26A9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101590008A1524300C1ECA2A9900D3013230D20099pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1015A0008A112C268A15A9014830A8004D30DB008Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1015B0008A11F8268A152230840083138A11052F98pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1015C0008A152030DB008A11F8268A15D0014830B0pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1015D00050078400831380080319062BD30132308Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1015E000D2008A112C268A154830500784008313B4pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1015F0000008D20052080C1EFB2A99005008D00A9Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10160000483E840083130008D106E72AA901483028pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10161000A800103084002B08D3002A08D2008A11B9pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101620001C2F8A152030DB008A11F8268A15D0017Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10163000483050078400831380080319372BD301E7pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101640003230D2008A112C268A1548305007840087pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1016500083130008D20052080C1E2C2B990050084Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10166000D00A483E840083130008D106182BA90134pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101670004830A800103084003108D3003008D20070pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101680008A1180278A152030DB008A11F8268A15F6pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10169000D001483050078400831380080319682B59pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1016A000D3013230D2008A112C268A1548305007D7pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1016B000840083130008D20052080C1E5D2B990091pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1016C0005008D00A483E840083130008D106492BF5pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1016D000A9014830A800103084003308D300320834pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1016E000D2008A1180278A152030DB008A11F82663pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1016F0008A15D001483050078400831380080319EDpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10170000992BD3013230D2008A112C268A15483009pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101710005007840083130008D20052080C1E8E2B41pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1017200099005008D00A483E840083130008D1066Fpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101730007A2BA9014830A800103084003508D30066pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101740003408D2008A1180278A152030DB008A11E4pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10175000F8268A15D001483050078400831380088Apppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101760000319CA2BD3013230D2008A112C268A15D4pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1017700048305007840083130008D20052080C1E22pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10178000BF2B99005008D00A483E840083130008FCpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10179000D106AB2BA9014830A800103084003708CFpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1017A000D3003608D2008A1180278A152030DB004Apppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1017B0008A11F8268A15D001483050078400831317pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1017C00080080319FB2BD3013230D2008A112C265Apppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1017D0008A1548305007840083130008D20052084Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1017E0000C1EF02B99005008D00A483E8400831349pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1017F0000008D106DC2BA9014830A8002608D20039pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101800001B30D30015202030DB008A11F8268A1502pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10181000D001483050078400831380080319282C16pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10182000D3013230D2008A112C268A154830500755pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10183000840083130008D20052080C1E1D2C99004Epppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101840005008D00A483E840083130008D106092CB2pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10185000A9014830A8002708D2001B30D30015206Apppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101860002030DB008A11F8268A15D0014830500755pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101870008400831380080319552CD3013230D20021pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101880008A112C268A1548305007840083130008DBpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10189000D20052080C1E4A2C99005008D00A483E2Bpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1018A000840083130008D106362CA9014830A80013pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1018B0002A30DB008A11F8268A155108D200373009pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1018C000D30050280D30DB008A11F8268A150A3023pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1018D000DB008A11F8268A15D001483050078400B1pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1018E000831380080319862CD3013230D2008A1169pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:1018F0002C268A155008D00A483E8400831300081Dpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10190000D20052080C1E822C99006D2CD30132306Bpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:10191000D2008A112C268A156400DF2863000A1081pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101920008A100A15820737293C291B293C293C29A2pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101930003C293C2917292A293C293C2927293C29CBpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:101940003C291E293C293C29312934293C293A29A2pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:061950003C293C2922297Cpppppppppppppppppppppppppppppppppppppppppppppppppppppp
:061980008A0100280800A6pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:04400E00143FFC3F20pppppppppppppppppppppppppppppppppppppppppppppppppppppp
:00000001FFpppppppppppppppppppppppppppppppppppppppppppppppppppppp
;PIC16F88pppppppppppppppppppppppppppppppppppppppppppppppppppppp
;CRC=7723 CREATED="09-12-10 23:00"pppppppppppppppppppppppppppppppppppppppppppppppppppppp
pppppppppppppppppppppppppppppppppppppppppppppppppppppp
/Designs/MRAKOMER4/SW/TOUCH.C
0,0 → 1,258
///////////////////////////////////////////////////////////////////////////
//// Dallas Touch Driver ////
//// ////
//// ////
//// data = touch_read_bit() Reads one bit from a touch device ////
//// ////
//// data = touch_read_BYTE() Reads one byte from a touch device. ////
//// ////
//// ok = touch_write_bit(data) Writes one bit to a touch device ////
//// and returns true if all went ok. ////
//// A false indicates a collision with ////
//// another device. ////
//// ////
//// ok = touch_write_byte(data) Writes one byte to a touch device ////
//// and returns true if all went ok. ////
//// A false indicates a collision with ////
//// another device. ////
//// ////
//// present = touch_present() Issues a reset and returns true ////
//// if the touch device is there. ////
//// ////
//// reset_pulse() Issues a reset and waits for a ////
//// present pulse. ////
//// ////
///////////////////////////////////////////////////////////////////////////
//// (C) Copyright 1996,2010 Custom Computer Services ////
//// This source code may only be used by licensed users of the CCS C ////
//// compiler. This source code may only be distributed to other ////
//// licensed users of the CCS C compiler. No other use, reproduction ////
//// or distribution is permitted without written permission. ////
//// Derivative programs created using this software in object code ////
//// form are not restricted in any way. ////
///////////////////////////////////////////////////////////////////////////
 
#ifndef TOUCH_C
#define TOUCH_C
 
#ifndef TOUCH_PIN
#define TOUCH_PIN PIN_B0
#endif
 
#define TOUCH_PIN_LOW() output_drive(TOUCH_PIN); output_low(TOUCH_PIN)
#define TOUCH_PIN_HIGH() output_drive(TOUCH_PIN); output_high(TOUCH_PIN)
#define TOUCH_PIN_FLOAT() output_float(TOUCH_PIN)
#define TOUCH_PIN_READ() input_state(TOUCH_PIN)
 
/////////////////////////////
//// ////
//// Function Prototypes ////
//// ////
/////////////////////////////
 
/*
int1 touch_read_bit()
This will read back a bit from the DS1993
PARAMS: none
RETURNS: A bit from the DS1993
*/
int1 touch_read_bit();
 
/*
BYTE touch_read_byte()
This will read back a byte from the DS1993
PARAMS: none
RETURNS: A byte from the DS1993
*/
BYTE touch_read_byte();
 
/*
BOOLEAN touch_write_bit(int1 data)
This will write a bit to the DS1993
PARAMS: The bit to write
RETURNS: True if completed successfully, false if otherwise
*/
BOOLEAN touch_write_bit(int1 data);
 
/*
BOOLEAN touch_write_byte(BYTE data)
This will write a byte to the DS1993
PARAMS: The byte to write
RETURNS: True if completed successfully, false if otherwise
*/
BOOLEAN touch_write_byte(BYTE data);
 
/*
BOOLEAN touch_present()
This will evaluate whether or not there is a touch present on the DS1993
PARAMS: none
RETURNS: True if a touch is present, false if otherwise
*/
BOOLEAN touch_present();
 
/*
void reset_pulse()
This will send the DS1993 a reset pulse
PARAMS: none
RETURNS: none
*/
void reset_pulse();
 
//////////////////////////////////
//// ////
//// Function Implementations ////
//// ////
//////////////////////////////////
 
/*
int1 touch_read_bit()
This will read back a bit from the DS1993
PARAMS: none
RETURNS: A bit from the DS1993
*/
int1 touch_read_bit()
{
int1 data;
 
TOUCH_PIN_LOW();
delay_us(14);
TOUCH_PIN_FLOAT();
delay_us(5);
data = TOUCH_PIN_READ();
delay_us(100);
toggle_dome();
 
return data;
}
 
/*
BYTE touch_read_byte()
This will read back a byte from the DS1993
PARAMS: none
RETURNS: A byte from the DS1993
*/
BYTE touch_read_byte()
{
BYTE i,data;
 
for(i=1; i <= 8; ++i)
shift_right(&data, 1, touch_read_bit());
 
return data;
}
 
/*
BOOLEAN touch_write_bit(int1 data)
This will write a bit to the DS1993
PARAMS: The bit to write
RETURNS: True if completed successfully, false if otherwise
*/
BOOLEAN touch_write_bit(int1 data)
{
TOUCH_PIN_LOW();
delay_us(10);
if(data)
{
TOUCH_PIN_HIGH();
delay_us(10);
if(!TOUCH_PIN_READ())
return FALSE;
}
else
{
TOUCH_PIN_LOW();
delay_us(10);
if(TOUCH_PIN_READ())
return FALSE;
}
delay_us(50);
TOUCH_PIN_HIGH();
toggle_dome();
delay_us(50);
return TRUE;
}
 
/*
BOOLEAN touch_write_byte(BYTE data)
This will write a byte to the DS1993
PARAMS: The byte to write
RETURNS: True if completed successfully, false if otherwise
*/
BOOLEAN touch_write_byte(BYTE data)
{
BYTE i;
 
for(i=1; i<=8; ++i)
if(!touch_write_bit(shift_right(&data, 1, 0)))
return FALSE;
 
return TRUE;
}
 
/*
BOOLEAN touch_present()
This will evaluate whether or not there is a touch present on the DS1993
PARAMS: none
RETURNS: True if a touch is present, false if otherwise
*/
BOOLEAN touch_present()
{
BOOLEAN present;
TOUCH_PIN_LOW();
toggle_dome();
delay_us(100);
toggle_dome();
delay_us(100);
toggle_dome();
delay_us(100);
toggle_dome();
delay_us(100);
toggle_dome();
delay_us(100);
toggle_dome();
TOUCH_PIN_FLOAT();
delay_us(5);
 
if(!TOUCH_PIN_READ())
return FALSE;
 
delay_us(65);
toggle_dome();
present = !TOUCH_PIN_READ();
toggle_dome(); // Puvodne pauza 240us
delay_us(100);
toggle_dome();
delay_us(100);
toggle_dome();
delay_us(30);
toggle_dome();
return present;
}
 
/*
void reset_pulse()
This will send the DS1993 a reset pulse
PARAMS: none
RETURNS: none
*/
void reset_pulse()
{
TOUCH_PIN_LOW();
toggle_dome();
delay_us(100);
toggle_dome();
delay_us(100);
toggle_dome();
delay_us(100);
toggle_dome();
delay_us(100);
toggle_dome();
delay_us(100);
toggle_dome();
TOUCH_PIN_FLOAT();
delay_us(5);
while(!touch_present());
}
 
 
#endif
/Designs/MRAKOMER4/SW/irmrak4.PJT
1,23 → 1,23
[PROJECT]
Target=main.HEX
Development_Mode=
Target=irmrak4.HEX
Development_Mode=2
Processor=0x688F
Processor_Text=PIC16F88
ToolSuite=CCS
Processor_Text=PIC16F88
 
[Directories]
Include=C:\Program Files\PICC\devices\;C:\Program Files\PICC\dr
Include=
Library=
LinkerScript=
 
[Target Data]
FileList=C:\Dokumenty\MLAB\Designs\MRAKOMER4\SW\irmrak4.c
FileList=C:\Dokumenty\MLAB\Designs\MRAKOMER4\SW\2zone\irmrak4.c
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
 
[main.c]
[irmrak4.c]
Type=4
Path=
FileList=
26,22 → 26,22
AdditionalOptionString=
 
[mru-list]
1=main.c
1=irmrak4.c
 
[Windows]
0=0000 main.c 0 0 796 451 3 0
0=0000 irmrak4.c 0 0 796 451 3 0
 
[Opened Files]
1=2zone\irmrak4.c
1=irmrak4.c
2=
3=C:\Program Files\PICC\devices\16F88.h
4=C:\Dokumenty\MLAB\Designs\MRAKOMER4\SW\smb.c
5=C:\Program Files\PICC_old\drivers\string.h
6=C:\Dokumenty\MLAB\Designs\MRAKOMER4\SW\irmrak4.lst
7=C:\Program Files\PICC_old\drivers\stddef.h
8=C:\Program Files\PICC_old\drivers\ctype.h
9=C:\Dokumenty\MLAB\Designs\MRAKOMER4\SW\dbloader.c
3=..\..\..\..\..\..\..\..\Program Files\PICC\Devices\16F88.h
4=..\..\..\..\..\..\..\..\Program Files\PICC\Drivers\string.h
5=..\..\..\..\..\..\..\..\Program Files\PICC\Drivers\stddef.h
6=..\..\..\..\..\..\..\..\Program Files\PICC\Drivers\ctype.h
7=smb.c
8=TOUCH.C
9=dbloader.c
10=
[Units]
Count=1
1=C:\Dokumenty\MLAB\Designs\MRAKOMER4\SW\irmrak4.c (main)
1=irmrak4 (main)
/Designs/MRAKOMER4/SW/irmrak4.c
1,5 → 1,5
/**** IR Mrakomer 4 ****/
#define VERSION "4.0"
#define VERSION "4.1"
#define ID "$Id$"
 
#include "irmrak4.h"
49,21 → 49,16
char REV[50]=ID; // Buffer for concatenate of a version string
 
if (REV[strlen(REV)-1]=='$') REV[strlen(REV)-1]=0;
printf("\n\r\n\r# Mrakomer %s (C) 2007 KAKL\n\r",VER); // Welcome message
printf("#%s\n\r",&REV[4]);
printf("#\n\r");
printf("# h - Switch On Heating for 20s.\n\r");
printf("# c - Need Colder. Switch Off Heating.\n\r");
printf("# o - Open the Dome for 20s.\n\r");
printf("# l - Lock the Dome.\n\r");
printf("# x - Open the Dome and switch On Heating.\n\r");
printf("# i - Print this Information.\n\r");
printf("# r - Repeat measure every second.\n\r");
printf("# s - Single measure.\n\r");
printf("# u - Update firmware. Go to the Boot Loader.\n\r");
printf("#\n\r");
printf("# <sequence> <ambient[1/100 C]> <sky[1/100 C]> ");
printf("<heating[s]> <dome[s]> <check>\n\r\n\r");
printf("\r\n\r\n# Mrakomer %s (C) 2007 UST\n\r",VER); // Welcome message
printf("#%s\r\n",&REV[4]);
// printf("#\r\n");
printf("# commands: h, c, o, l, x, i, r, a, s, u\r\n");
// printf("# h_eat, c_old, o_pen, l_ock, x_open, ");
// printf("i_nfo, r_epeat, a_uto, s_single, u_pdate\r\n");
// printf("#\r\n");
printf("# ver seq in[1/100 C] sky[1/100 C] sky[1/100 C] ");
printf("out[1/100 C] heat[s] dome[s] check\r\n\r\n");
 
//---WDT
restart_wdt();
}
70,6 → 65,7
 
 
#include "smb.c" // System Management Bus driver
#include "TOUCH.C"
 
 
// Read sensor's RAM
103,14 → 99,48
return temp;
}
 
// compute CRC
// *sn - pointer to the byte array
// num - length of array
inline int8 TM_check_CRC(unsigned int8 *sn, unsigned int8 num)
{
// CRC table
const int8 TouchCRC[256]= {
0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,
17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53};
 
int8 CRC;
int8 i;
 
CRC=0;
for(i=0;i<num;i++) CRC=TouchCRC[CRC ^ *(sn+i)];
return(CRC);
}
 
 
/*-------------------------------- MAIN --------------------------------------*/
void main()
{
unsigned int16 seq, temp, tempa;
signed int16 ta, to;
signed int16 ta, to1, to2, tTouch;
int8 tLSB,tMSB; // Temperatures from TouchMemory
int8 safety_counter;
int1 repeat;
int1 repeat; // Status flags
int1 automatic;
 
output_high(DOME); // Close Dome
output_low(HEATING); // Heating off
122,11 → 152,15
heat=0;
open=0;
repeat=TRUE;
automatic=FALSE;
 
welcome();
 
tempa=ReadTemp(SA, RAM_Tamb); // Dummy read
temp=ReadTemp(SA, RAM_Tobj1);
touch_present(); //Issues a reset of Touch Memory device
touch_write_byte(0xCC);
touch_write_byte(0x44);
 
delay_ms(1000);
//---WDT
165,23 → 199,28
{
case 'h':
heat=MAXHEAT; // Need heating
automatic=FALSE;
break;
 
case 'c':
heat=0; // Need colder
automatic=FALSE;
break;
 
case 'o':
open=MAXOPEN; // Open the dome
automatic=FALSE;
break;
 
case 'x':
open=MAXOPEN; // Open the dome
heat=MAXHEAT; // Need heating
automatic=FALSE;
break;
 
case 'l':
open=0; // Lock the dome
automatic=FALSE;
break;
 
case 'i':
190,27 → 229,71
 
case 'r':
repeat=TRUE; // Repeated measure mode
automatic=FALSE;
break;
 
case 's':
repeat=FALSE; // Single measure mode
automatic=FALSE;
break;
 
case 'a':
repeat=TRUE; // Automatic mode
automatic=TRUE;
break;
 
case 'u':
reset_cpu(); // Update firmware
}
}
// while(kbhit()) getc(); // Flush USART buffer
CREN=0; CREN=1; // Reinitialise USART
 
seq++; // Increment the number of measurement
 
tempa=ReadTemp(SA, RAM_Tamb); // Read temperatures from sensor
ta=tempa*2-27315; // °K -> °C
 
temp=ReadTemp(SA, RAM_Tobj1);
if (temp>0x48E1) {to1=-27315;} else {to1=temp*2-27315;}
temp=ReadTemp(SA, RAM_Tobj2);
if (temp>0x48E1) {to2=-27315;} else {to2=temp*2-27315;}
 
ta=tempa*2-27315; // °K -> °C
to=temp*2-27315;
touch_present(); //Issues a reset of Touch Memory device
touch_write_byte(0xCC);
touch_write_byte(0x44);
//---WDT
restart_wdt();
delay(MEASURE_DELAY); // Delay to a next measurement
 
{
int8 SN[10];
int8 n;
 
touch_present(); //Issues a reset and returns true if the touch device is there.
touch_write_byte(0xCC);
touch_write_byte(0xBE);
for(n=0;n<9;n++) SN[n]=touch_read_byte();
tLSB=SN[0];
tMSB=SN[1];
if ((SN[8]==TM_check_CRC(SN,8))&&(SN[7]==0x10)) // Check CRC and family code to prevent O's error
{
tTouch=make16(tMSB,tLSB);
tTouch=tTouch*6+tTouch/4; // 1bit = 0,0625gradC recalculate to 1/100gradC
}
else
{
tTouch=-27315;
}
}
if(automatic) // Solve automatic mode
{
if(ta<1800) heat=MAXHEAT; // Need heating
if((abs(to1-to2)<80)&&(tTouch>to1)&&(abs(tTouch-to1)>1500))
open=MAXOPEN; // Open the dome
}
 
{ // printf
char output[8]; // Output buffer
int8 j; // String pointer
219,24 → 302,27
delay(SEND_DELAY);
putc('$');
delay(SEND_DELAY);
sprintf(output,"M%s ",VER);
sprintf(output,"M%s \0",VER);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"%Lu ", seq);
sprintf(output,"%Lu \0", seq);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"%Ld ", ta);
sprintf(output,"%Ld \0", ta);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"%Ld ", to);
sprintf(output,"%Ld \0", to1);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"%u ", heat);
sprintf(output,"%Ld \0", to2);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"%u ", open);
sprintf(output,"%Ld \0",tTouch);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"*%X\n\r\0", check);
sprintf(output,"%u \0", heat);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"%u \0", open);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"*%X\r\n\0", check);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j++]); }
delay(SEND_DELAY);
}
 
delay(MEASURE_DELAY); // Delay to a next measurement
//---WDT
restart_wdt();
}
/Designs/MRAKOMER4/SW/irmrak4.h
1,19 → 1,21
#include <16F88.h>
#device adc=8
 
#FUSES WDT //Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES PUT //Power Up Timer
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#FUSES NOIESO //Internal External Switch Over mode disabled
#FUSES WDT //Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES PUT //Power Up Timer
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#FUSES NOIESO //Internal External Switch Over mode disabled
 
#use delay(clock=8000000)
#use rs232(baud=2400,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=8)
 
#define TOUCH_PIN PIN_B7
 
/Designs/MRAKOMER4/SW/smb.c
3,74 → 3,75
#define SA 0x00 // Slave Address (0 for single slave / 0x5A<<1 default)
#define RAM_Access 0x00 // RAM access command
#define RAM_Tobj1 0x07 // To1 address in the RAM
#define RAM_Tobj2 0x08 // To2 address in the RAM
#define RAM_Tamb 0x06 // Ta address in the RAM
 
 
// High and Low level of clock
#define HIGHLEV 40 // max. 50us
#define LOWLEV 100 // max. 30ms
#define TBUF 20
#define HIGHLEV 40 // max. 50us
#define LOWLEV 100 // max. 30ms
#define TBUF 20
 
// SMBus control signals
#define SCL PIN_B0
#define SDA PIN_B1
 
#define mSDA_HIGH() output_float(SDA); // SDA float
#define mSDA_HIGH() output_float(SDA); // SDA float
#define mSDA_LOW() output_low(SDA); // SDA low
#define mSCL_HIGH() output_float(SCL); // SCL float
#define mSCL_HIGH() output_float(SCL); // SCL float
#define mSCL_LOW() output_low(SCL); // SCL low
 
#define ACK 0
#define NACK 1
#define ACK 0
#define NACK 1
 
//**********************************************************************************************
// START CONDITION ON SMBus
// START CONDITION ON SMBus
//**********************************************************************************************
//Name: START_bit
//Function: Generate START condition on SMBus
//Parameters: No
//Return: No
//Comments: Refer to "System Managment BUS(SMBus) specification Version 2.0"
// or AN"SMBus communication with MLX90614" on the website www.melexis.com
//Name: START_bit
//Function: Generate START condition on SMBus
//Parameters: No
//Return: No
//Comments: Refer to "System Managment BUS(SMBus) specification Version 2.0"
// or AN"SMBus communication with MLX90614" on the website www.melexis.com
//**********************************************************************************************
void SMB_START_bit(void)
{
// disable_interrupts(GLOBAL);
mSDA_HIGH(); // Set SDA line
delay_us( TBUF ); // Wait a few microseconds
mSCL_HIGH(); // Set SCL line
delay_us( TBUF ); // Generate bus free time between Stop
// and Start condition (Tbuf=4.7us min)
mSDA_LOW(); // Clear SDA line
delay_us( TBUF ); // Hold time after (Repeated) Start Condition.
// After this period, the first clock is generated.
// (Thd:sta=4.0us min)
mSCL_LOW(); // Clear SCL line
mSDA_HIGH(); // Set SDA line
delay_us( TBUF ); // Wait a few microseconds
mSCL_HIGH(); // Set SCL line
delay_us( TBUF ); // Generate bus free time between Stop
// and Start condition (Tbuf=4.7us min)
mSDA_LOW(); // Clear SDA line
delay_us( TBUF ); // Hold time after (Repeated) Start Condition.
// After this period, the first clock is generated.
// (Thd:sta=4.0us min)
mSCL_LOW(); // Clear SCL line
// enable_interrupts(GLOBAL);
delay_us( TBUF ); // Wait a few microseconds
delay_us( TBUF ); // Wait a few microseconds
}
 
//*********************************************************************************************
// STOP CONDITION ON SMBus
// STOP CONDITION ON SMBus
//*********************************************************************************************
//Name: STOPbit
//Function: Generate STOP condition on SMBus
//Parameters: No
//Return: No
//Comments: Refer to "System Managment BUS(SMBus) specification Version 2.0"
// or AN"SMBus communication with MLX90614" on the website www.melexis.com
//Name: STOPbit
//Function: Generate STOP condition on SMBus
//Parameters: No
//Return: No
//Comments: Refer to "System Managment BUS(SMBus) specification Version 2.0"
// or AN"SMBus communication with MLX90614" on the website www.melexis.com
//*********************************************************************************************
void SMB_STOP_bit(void)
{
// disable_interrupts(GLOBAL);
mSDA_HIGH();
mSCL_LOW(); // Clear SCL line
delay_us( TBUF ); // Wait a few microseconds
mSDA_LOW(); // Clear SDA line
delay_us( TBUF ); // Wait a few microseconds
mSCL_HIGH(); // Set SCL line
delay_us( TBUF ); // Stop condition setup time(Tsu:sto=4.0us min)
mSDA_HIGH(); // Set SDA line
mSCL_LOW(); // Clear SCL line
delay_us( TBUF ); // Wait a few microseconds
mSDA_LOW(); // Clear SDA line
delay_us( TBUF ); // Wait a few microseconds
mSCL_HIGH(); // Set SCL line
delay_us( TBUF ); // Stop condition setup time(Tsu:sto=4.0us min)
mSDA_HIGH(); // Set SDA line
// enable_interrupts(GLOBAL);
}
 
78,105 → 79,105
void SMB_send_bit(unsigned char bit_out)
{
// disable_interrupts(GLOBAL);
if(bit_out==0) {mSDA_LOW();}
else {mSDA_HIGH();}
if(bit_out==0) {mSDA_LOW();}
else {mSDA_HIGH();}
delay_us(3);
mSCL_HIGH(); // Set SCL line
delay_us( HIGHLEV ); // High Level of Clock Pulse
mSCL_LOW(); // Clear SCL line
mSCL_HIGH(); // Set SCL line
delay_us( HIGHLEV ); // High Level of Clock Pulse
mSCL_LOW(); // Clear SCL line
 
toggle_dome();
 
delay_us( LOWLEV ); // Low Level of Clock Pulse
// mSDA_HIGH(); // Master release SDA line ,
delay_us( LOWLEV ); // Low Level of Clock Pulse
// mSDA_HIGH(); // Master release SDA line ,
// enable_interrupts(GLOBAL);
 
toggle_dome();
return;
return;
}
 
unsigned char SMB_Receive_bit(void)
{
unsigned char Ack_bit;
unsigned char Ack_bit;
 
// disable_interrupts(GLOBAL);
mSDA_HIGH(); //_SDA_IO=1; // SDA-input
mSCL_HIGH(); // Set SCL line
delay_us( HIGHLEV ); // High Level of Clock Pulse
if(input(SDA)) Ack_bit=1; // \ Read acknowledgment bit, save it in Ack_bit
else Ack_bit=0; // /
mSCL_LOW(); // Clear SCL line
mSDA_HIGH(); //_SDA_IO=1; // SDA-input
mSCL_HIGH(); // Set SCL line
delay_us( HIGHLEV ); // High Level of Clock Pulse
if(input(SDA)) Ack_bit=1; // \ Read acknowledgment bit, save it in Ack_bit
else Ack_bit=0; // /
mSCL_LOW(); // Clear SCL line
 
toggle_dome();
 
delay_us( LOWLEV ); // Low Level of Clock Pulse
delay_us( LOWLEV ); // Low Level of Clock Pulse
// enable_interrupts(GLOBAL);
 
toggle_dome();
return Ack_bit;
return Ack_bit;
}
 
 
//*********************************************************************************************
// TRANSMIT DATA ON SMBus
// TRANSMIT DATA ON SMBus
//*********************************************************************************************
//Name: TX_byte
//Function: Send a byte on SMBus
//Parameters: TX_buffer ( the byte which will be send on the SMBus )
//Return: Ack_bit ( acknowledgment bit )
//Comments: Sends MSbit first
//Name: TX_byte
//Function: Send a byte on SMBus
//Parameters: TX_buffer ( the byte which will be send on the SMBus )
//Return: Ack_bit ( acknowledgment bit )
//Comments: Sends MSbit first
//*********************************************************************************************
unsigned char SMB_TX_byte(unsigned char Tx_buffer)
{
unsigned char Bit_counter;
unsigned char Ack_bit;
unsigned char bit_out;
unsigned char Bit_counter;
unsigned char Ack_bit;
unsigned char bit_out;
 
for(Bit_counter=8; Bit_counter; Bit_counter--)
{
if(Tx_buffer&0x80) bit_out=1; // If the current bit of Tx_buffer is 1 set bit_out
else bit_out=0; // else clear bit_out
for(Bit_counter=8; Bit_counter; Bit_counter--)
{
if(Tx_buffer&0x80) bit_out=1; // If the current bit of Tx_buffer is 1 set bit_out
else bit_out=0; // else clear bit_out
 
SMB_send_bit(bit_out); // Send the current bit on SDA
Tx_buffer<<=1; // Get next bit for checking
}
SMB_send_bit(bit_out); // Send the current bit on SDA
Tx_buffer<<=1; // Get next bit for checking
}
 
Ack_bit=SMB_Receive_bit(); // Get acknowledgment bit
Ack_bit=SMB_Receive_bit(); // Get acknowledgment bit
 
return Ack_bit;
return Ack_bit;
}
 
//*********************************************************************************************
// RECEIVE DATA ON SMBus
// RECEIVE DATA ON SMBus
//*********************************************************************************************
//Name: RX_byte
//Function: Receive a byte on SMBus
//Parameters: ack_nack (ackowlegment bit)
//Return: RX_buffer(Received byte)
//Comments: MSbit is received first
//Name: RX_byte
//Function: Receive a byte on SMBus
//Parameters: ack_nack (ackowlegment bit)
//Return: RX_buffer(Received byte)
//Comments: MSbit is received first
//*********************************************************************************************
unsigned char SMB_RX_byte(unsigned char ack_nack)
{
unsigned char RX_buffer;
unsigned char Bit_Counter;
unsigned char RX_buffer;
unsigned char Bit_Counter;
 
for(Bit_Counter=8; Bit_Counter; Bit_Counter--)
{
if(SMB_Receive_bit()) // Get a bit from the SDA line
{
RX_buffer <<= 1; // If the bit is HIGH save 1 in RX_buffer
RX_buffer |=0b00000001;
}
else
{
RX_buffer <<= 1; // If the bit is LOW save 0 in RX_buffer
RX_buffer &=0b11111110;
}
}
for(Bit_Counter=8; Bit_Counter; Bit_Counter--)
{
if(SMB_Receive_bit()) // Get a bit from the SDA line
{
RX_buffer <<= 1; // If the bit is HIGH save 1 in RX_buffer
RX_buffer |=0b00000001;
}
else
{
RX_buffer <<= 1; // If the bit is LOW save 0 in RX_buffer
RX_buffer &=0b11111110;
}
}
 
SMB_send_bit(ack_nack); // Sends acknowledgment bit
SMB_send_bit(ack_nack); // Sends acknowledgment bit
 
return RX_buffer;
return RX_buffer;
}