-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTGAHzParse.py
164 lines (141 loc) · 57.7 KB
/
TGAHzParse.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
from PIL import Image
import sys
class colors:
PURPLE = '\033[95m'
BLUE = '\033[94m'
GREEN = '\033[92m'
YELLOW = '\033[93m'
RED = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
def printrgb(rgb):
if(color):
# Print formatted color as RRRRRGGG GGBBBBBA
print(f"{colors.RED}"+rgb[0:5]+f"{colors.GREEN}"+rgb[5:10]+f"{colors.BLUE}"+rgb[11:]+f"{colors.PURPLE}"+rgb[16]+f"{colors.ENDC} ", end='')
else:
print(rgb+" ", end='')
def torgb(b2, b1):
# RRRRRGGG GGBBBBBA
r = int(b2/8)
g = (b2%8)*4 + int(b1/64)
b = int((b1%64)/2)
# Convert to 24-bit color (simple algorithm)
ra = r*8+int(r/4)
ga = g*8+int(g/4)
ba = b*8+int(b/4)
return(r,g,b,ra,ga,ba)
# Log each packet
log = ("-log" in sys.argv)
# Create image
image = not ("-noimage" in sys.argv)
# Disable colored logging
color = ("-logcolor" in sys.argv)
# Create animation
animated = False
# Input data
if ("-txt" in sys.argv):
txtfile = open(sys.argv[-1], "r")
data = bytes.fromhex(txtfile.readline())
txtfile.close()
elif ("-txtanim" in sys.argv):
animated = True
txtfile = open(sys.argv[-1], "r")
animdata = [bytes.fromhex(a) for a in txtfile.readlines()]
txtfile.close()
elif ("-hex" in sys.argv):
data = bytes.fromhex(sys.argv[-1])
elif ("-tga" in sys.argv or "-bin" in sys.argv):
binfile = open(sys.argv[-1], "rb")
data = binfile.read()
binfile.close()
else:
data = bytes.fromhex("03D86B0000000A000000000000000000F00090011020FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF010098010004070811301538133009108B0100030D20133013300F208B010004091011301538113007088A01000103000F28811538010D2001009F0100FF01009701000103000F20820F28010F200508890100010B180F20820F20010B1801008801000105080F20820F28010F200300890100050D180F200F200F280F200B189F0100041B4019401B401B481B40811940811B40851940011B401940841940811B400219401B401940831B40861940811B400219401B401B40831940011B401940861940031B40194019401B40871940041B4019401B4019401738821940811B40861940011B401940811940811738811940011B401940871940811B4093194002173819401940811B40811940011B401940841940011B401940821940011B401940861940811B40821940011B401940811940011B401940841940851B40861940021B4819401B40821940011B401940891940011B401940831940011B401940831940831B40861940011B401940831940041740194015300F200708850100011B481940831B480119401B40821B48831940811B480119401B40811B480119401B40821B48811B40841B48811B40811B480119401B48831B48041B401B481B481B401B48841B40031B481B4019401B48831B40811B48021B4019401B40811B48021B4019401B40861B48041B40194019401B401B48811B40811B48811B40811940011B401B48811B48811B40811B48841B40021B481B401940821B40821B48811940841B40861940831B48051B401B481B481B4019401B40821B48031B4019401B401B48831B40011B481B40871B40811B48811B40021B4819401B40821B48811940811B48821B400119401B40811940011B401B48811B48061B401B481B4019401B401B481B40821B480219401B481B40811B48811B40021B481B401B40861B48021B401B481B40861B480119401B40811B40821940811B48011940173881193802173813280300830100011B481940B81B480119401B48AC1B480119401B48A61B480119481B489C1B480119401B48B11B4882194081173801153003008201008A1B48031D481B481B481D48811B48831D48851B48011D481B48811B48011D501D48821B48011D481B48821B48011D481B48D21B48011D481B48811B48011D481B48B71B48011D481B48811B48021D481B481D508B1B48011D481B48951B48021B401940193881173801132801008101009219400119481940831940021740194019489219400117401940951940011740194095194001194819408D19400117401940841940011740194081194001194819408419400117401940AA19408119488B19400119481940A619400119481940821940811738011530091081010090174001173817408C174001153817408C17400115381740BD174001173817408617408115388617400115381740921740811538D01740811940021738173013288101009A174001173817408217400117381740BB1740811738821740811738921740811540BE17400317381740174017388217400117381740A6174081194004173817301530030001008C174001173817408717400117381740B61740011738174091174001173817408117400117381740AA174001173817409617400117381740B817400619401B40194017381730050801008717400115381740941740011738174090174001173817408517400117381740931740011538174082174001173817409517400117381740B017400117381740A417400317381740174017388117408117389A174081194003173817300708010084174001173817408117400117381740FF1740941740011738174090174001153817408B174003173817401740173892174001173817408717400317381740174017388117400117381740811940031938173809100100CD1740011538174082174001173817408317400117381740A817400117381740A7174001173817408217400115381740A217400117381740841740011738174083174001173817408217408119400319381738091001009817408117389717400117381740961740021738174015388417400117381740FF17409317408119400319381738091001009817400117381740B0174001173817409A17400117381740F0174001173817408B17408119400319381738091001008B174001173817409217400117381740BB174001173817408717400117381740871740811738B7174001173817408417400117381740A517408115388B174081194003193817380910010087174001173817408517400117381740B217400117381740B4174001173817409C174001173817409717400117381740AF17400217381740174081194081173801091001009717400115381740C41740021738174017408117389017400117381740C817400117381740A7174081194003193817380910010085174001194019488F194881194081194802194019481B48821948011B481948921948011B48194888194801194019488A194802194019481B488F194881194083194881194089194801194019488C1948011940194881194802194019481940871948041B4819481940174019408F194881194085194801194019488819488119408219480119401948811B4895194801194017408F1740041940193817380910010082174003194019481B481B50845D50015F505F58815F58815F50815D50015F505D50845D50025F505D505D50825F50835D50025F505D505D50815F50845D50815F50815D50855F50815D50055F505F585F585F505D505F50815D50035F505D505D505F50815D50815F50025D505F505F58815D50845F50815D50825F50815D50035F505F585F505D50815F50825D50855F50815F58015F505D50835F50815D50815F50025D505F505F58825F50825D50015F585F50825D50015F585F50875D50815F50855D50015F505D50885D50015F505D50865D50815F50015F585F50825D50815F50015D505F50835F50815D50025F505D505D50845F50815D50045F505D505D505F585F50815D50825F50035D505F505F505F58825F50035D501D501B4819408E17408119400319381738091001008117400719401B485B4857400F2809180710030887010081030082010081030801010003088101008103088101008203088601008303088801000103080100D001008A0308010100030882030802010003080100830308B401000503080B1855381B48194819408C1740811940811738010910010005194019481B4859400D2007108501000103000308FF0308C10308010300010086010003050853301B4819488A1740011538173881194081173801091001000319481B485538071081010005030843084310451085108518F8871887C71881871801C718871884871801C718871881871801851887188487180185188718B1871808C718C920451003080100051055381B50194085174001173817408117408117388219400217380910010006194055380710010003084510C718838518018718C71886C718018718C71883C71881871881C718028718C718C71882871886C71883871888C718018718C718D4C71881C72002C728C730C73083C73802C730C728C72081872001C7188718828718AFC71882871808C71809294B310B29030001000B205B4819488B174082194002173809100100065538071003088518C720C7188718FE851802871885188718858518818520038528853885408548818550038548854085388528818520B3851884851007871809298D39451001000508553819488B1740811940031938173809100100050710010087180929C720C7188E8718018518871882871882851883871882851886871883851888871802851887188718CA85180387188518871885188387188187200B853085408750C760C770C578C778C570C5608550854085308187208185180187188518938518028718851887189185180287188518871883851884851002C7184B3109298101000311301B481538173888174006173819401940193817380910010003010043104B31092981C718FF8718018718C71884C718108718872087308740C758C770C58805A905B105A947990789C770C558874087308720B387188185188285100285184B294B31810100030F281B481740173889174081194003173817300910010004010087184B31C720C718FF8718018718092181935214D55A9552D55A514AC71887288738C750C570C5A8C3B843E9C1F981F983F947A90791C570C75087388728B4871801851885108285100109294B31810100014F281D508B17408119400317381730091001000301004B314B29C718FF871881871881C718150929D55AC7184B319352C71887308740C760C598C3B0C1C801D981F9C3F941FAC5F947A90789C76087408730B5871801851885108185100109294D318101000251281B5019408A17408119400319381738091001000301004B310B29C718FF8718828718168518C720D55AC5188B319352C71887308750C57805A1C3B801F141F943FAC3FAC5FB83FA85C10799C77087488730B5871801851885108185100109294B318101000251301B48194082174001173817408517408119400319381738091001000303088D310929C718FF871882871816851885100F429352D55A4B29C71887388750C580C5A0C3C001F941F945FA89FB07FCC3FA85E107A1C77887508738B5871801851885108185100109298D318101000251301B4819408217400117381740831740071738174019401B4019401738091001000245108D310921FF87188287180CC71885184B290F42514A09298518871887388750C580C5A0C3B88101F90803FA47FB49FC83FAC3F107A1C77887508738B5871801851885108185100609298D310300010051301B4819408117400117381740861740821940021738091001000287188D31C920FF87188287181785180F42D55ACD390F4AD55A0921C71887308750C578C5A0C3B8C1D001F981F903FA83FA43FA45C90799C77087488730B587188185188185100509298D310308010051301B488117400117381538811740011738174082174006173819401940193817380910010002C9208D31C720FF8718828718024B29D55AC718818518120F425352C71887308740C760C590C5B0C3C0C1D001E943FAC1F983F907A9C780C56087408730B587188185188185100509298D310308010051301B488A17400617381940194017381730091001000209294B31C718FF871882871817CF39CF4187188518C7180929D55AC718872887388750C570C598C5B003C903E103F103F905A90791C770875087388728B587188185188185100509298D310308030051301B5083174001173817408317400117381740811940031938173809100100020B294B31C718FF8718828718018B31514A828718098D319352C718872087308740C758C570C590C5A881C5B006C598C788C770C758874087308720B587188185188185100609298D310308030051301B5019408117400117381740831740811738011740194081194002173809100100024B314B29C718FF87188287180EC71893520F4209218D3117634929851887208728873087408550C760C77081C77806C770C56085508740873087288720B587188185188185100109298D318103080151301D508217400115381740861740811940031938173809100100024B314B29C718FF8718828718088518C71811429352514A4B310921C7188718818720030939CD59C540854881855005854809514B51C73087288720B787180485188510851009298D318103080151301D508B1740811940031938173809100100024B310929C718FF8718838718058518C920CD39514AD55ACD398287180B87200931997BD572CD514B498B5151629983115AC7208720B787188185188185100109298D318103080151301B488B1740811940031938173809100100024B310929C718FF871882871806092917635963514A4B31C7188518848718075352DD7B9B739B6B9B73DB739B730929B987188185188185100109298D318103080151301B488B1740811940031938173009100100028D310921C718FF87188287180709219352D55A5352CF390929C718851883871801C7209352829B7301596BCD3981C718B887188185188185100109298D318103080351301B4817401738891740811940031938173809100100028D31C920C718FF87188287180785188510C7188B311763DD7B1142C71883871807C7184B3111425352514ACD390921C720B987188185188185100109298D318103080351301D5017401738831740011738174081174001173817408119408117380109100100018D31C720FF871883871801C7200F4281935203114A8B31C718851884871801C718C72085C718B887188185188185100109298D318103080251301D50194088174001173817408119408117380109100100014B31C720FF8718838718040929596B9B7311420929818518848718018510871883C718818518B987188185188185100109298D318103080151301D508B1740811940031738173009100100014B31C718FF87188387188185180409290F4253529352CD39838718020921CD3985188385100109214B31B987188185188185100109298D318103080151301B488B17408119408117380109100100014B31C718FF871883871806C7188D318D318B318D310F42CD39838718080921996BD55ACD394B298D31514A996B1142B987188185188185100109298D318103080151301B48871740011538173881174082194002173809100100014B29C718FF8718838718064B311763CF4119635352514A9352848718015352DD7B829B7302DB739B730929B987188185188185100109298D318103080351301D5017401738851740011738174081174082194002173809100100014B29C718FF8718838718068D319352851093524B290929935283871802C718C7209352829B7302596BCD39C718B987188185188185100109298D318103080351301D50174017388917408119408117380109100100010B29C718FF8718838718068B31514AC718114A4B294B31514A84871807C7184B3111425352514ACD390921C720B987188185188185100109298D318103080151301B4889174001173817408119408117380109100100010929C718FF8718838718060929CF39CF390F42CD39514A8D3985871801C718C72084C718B987188185188185100109298D318103080251281B481940821740011738174084174006173819401B401940173809100100010929C718FF87188387180609299352514A17639352955293528A871881C718B987188185188185100109298D318103080251301D5019408A17400519401B401940173809100100010929C718FF87188387180685188510CF39D55AC71809299552838718810929018718C71882C71801C9204B31B987188185188185100109298D318103080251301D5019408A17400519401B401940173809100100010921C718FF871883871806C7189352D55A17630929CD39935283871808C720596B514A4B29C92009218B3117631142B987188185188185100109298D318103080251301D5019408A1740811940811938010910010001C920C718FF87188387180649290F4A8518CF41D55A935A09298387180885100F42DD7B996B57635963DB73996BC920B987188185188185100109298D318103080251301D5019488717400819401740173819401B40194017380910010001C7208718FF871883871806C718851885188718C720C71885188387180885188718114A596B9B73996B155B4B318510B987188185188185100109298D318103080151301D508919408117400519401B48194017380910010001C7188718FF8718848718818518828718018518871884871804851809218B314B29C718818518B987188185188185100109298D318103080351301F501948194086194802194017401948811B48031B4019380B18030001C7188718FF87188E871881C7188185188185100187188518BA87188185188185100109298D318103080251281B4817408115380217381538173881174009173815381538173817401940173817300910010001C7188718FF87188E871881C7180187188518818518BC87188185188185100109298D318103080151281B48811740011738153881173801174017388117408117380517401940173815300710010001C7188718FF87188F871801C71887188487180185188718B987180485188510851009298D318103080551281B48173817401738153886173806174019401940173815300910010001C7188718FF8718D187188185188185100109298D318103080151281B488517400217381740174081173802174019401940811738010910010001C7188718FF8718D187188185188185100109298D318103080251281D5019408A174081194003173817300910010001C7188718AA8718FF85109585109087188185188185100109298D318103080151281D508B174081194003193817380910010001C7188718A987180185100100FF010094010001851087188E87188185188185100109298D318103080151281B50851740011738174082174006173819401940193817380910010001C7188718A887180185100100FF010096010001851087188D87188185188185100109298D318103080251281D5019408B1740041940193817380910010001C7188718A787180185100100FF010098010001851087188C87188185188185100109298D318103080451281D50174017381130811D5001153817408417400519401B401938153009100100A987180185100100FF010098010001851087188C87188185188185100109298D318103080551281B501740173811301B48811D508517408119408117380109100100A987180185100100FF010098010001851087188C87188185188185100109298D318103080451281D50194017401130821B48011F501B50811740021738174019408217380109100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080651281D5019401740113019481B488119480421601F581740173817408119408117380109100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301D508117400111301B48811B48811B508317400519401B401938173809100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B508117400511301B481D501F5819481538831740811940031938173809100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301B508117400213301F581F58851740061738194019401738153009100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080451281B50194017401130871740021738194019408117380109100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080551281B481940174013301538871740811940031938173809100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B48811740011538174087174081194081173801091001008D871802C71809290F3A82934A03CF3909298718C71881871801C71887188D87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281D5019408917400217381940194081173801091001008C871803C7181142DB6B5D74811D74811F74029B6B514AC7189187180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B5084174081153884174081194081173801091001008C87180111421F7C811D6C021F741D741D74811D6C025F74D55AC7189087180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B508217408115380319401B481740153882174081194081173801091001008B87180D4B31DD731D6C1D74155BCF398B31CF39155B1D741B6C1F749352C7188F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080A51301D5019401740133819481D5017401B482160194082174081194081173801091001008B87180593525F741D749352C718C72082C718040F42DD731D6C1D748D398F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080A51281D5019401740153823601B4811300F281B501F588117380217401940194081173801091001008B87180359631D74DB73092982C71807C720C7188718114A1F741D6C996BC9208E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B50811740061B481F5815381740133011301F5882174081194081173801091001008B871807DB635D745763C7188D39D552CF39C72081C71804C72059631D6C1D74CD318E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B50811740031948216015381740811330011F58174081174081194081173801091001008B871808DB6B1F74596B87181142A17C5F740929871881C71803114A1D741D74D34A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080A51281D5019401740133023601B4813380F281B501D5082174081194081173801091001008B87180759631F74DD73D552175B1F741D74092981871804C7188B311D741D6C575B8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080651281D5017401738113019401D50811338021B48153817388117408119400319381738091001008B871807514A5D741D6C5F741D741D6C1D74092981871804C7180929DB6B1D6C99638E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B488117400515381130194819401B481D5082174006173819401B4019381738091001008B871807CF411D741D741F745F741F745F744B2981871804C7180929DB6B1D6C97638E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301B508117400615381F581B48133011301F581D508217400519401B4019381738091001008B87180299635F74DD6B81D35202575BDB6B4B2981871801C7188B31811D7401155387188D87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251301D501940811740051F58153817380F2813381F588217400119401B4081173801091001008B87180699635F741D6CDB6BD34A8B31C92083C718038D39DB6B1D744F428E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080551281D501940174019481F5881174002133811281D5881174006173819401B4019381738091001008B87180953521D745F741D745F741F74175B8D39C920C71881C72002C9200929C7208E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080A51281D50194017401538236017401538113017401F5881174006173819401B4019381738091001008B87180AC7184B319552DB735D741D6C1F745F7459631142092983C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B48811740020F2819481D508115380123601B508217408119400319381738091001008B871882C718030929175B1F741D6C811D74035F74DB7393524B2981C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301B5081174001153811308117400119481B4883174081194081173801091001008F87180393525F741D6CDB6B811D74041D6C5F74DD73935209298E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281D501940811740811B480119481B50811D508217408119400319381738091001008E871801C718534A815F7403CD314B29595B1D74811D6C015F74514A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080551281D5019401740173817408115380219401F581D508217408119400319381738091001008B871881C71807C720C920D5525F741D74595B575BDB6B821D6C015F7451428E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080351281B4819401740811538021B481948194884174081194081173801091001008B8718048D3995525963DD6B1F74811D6C011D741F74821D6C021F749F7C914A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080951281B481940174011301D50236019481330173883174081194081173801091001008B8718029B639F7C5F74811D74011F745F74815F74051F74DB6B5963D55A514A4B298E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B50811740040F28112815381B48194883174006173819401B4019381738091001008B87180159631D74821D6C099B6B176393520F428D310929C720C7188718C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B5081174006153813381330153817401D501F5882174081194081173801091001008B871805595B1F741D7499630D3A092981871881C71801C720C71881C7188F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308044F281B50194017401538841B48011B50174081174081194081173801091001008B871808596B5F741D6C1D741D6C5963514A4B31C72082C7189187180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308024F281D501940811740811B480119481B488119488117400617381940194019381738091001008B8718019352DD73815F74811D74055F741F745963534A8D31C9209187180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B508217400119481940811740021D502360174081173881194081173801091001008B871804C7180929CF41D55ADB73815F74811D74055F741F749B6B534A4B29C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B508217400817381538153819401D501F5817401738174081194081173801091001008B871881C72081C718030921CD31D352DB63821D6C031D745F745F740F3A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080351281D5019401740811538811B48021940153815388217408119400319381738091001008B871882C71805C72009298B31113A595B1D74821D6C021B6C5F7451428E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080A51281B50194017400F281D5023601B481338133017388117400617381940194019381730071001008B8718044B291142D55259631D6C815F74011F741D6C811F74815F74015D740F428E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080651281D5019401740133011301538811B50011940174082174081194081173801091001008B87180359639F7C5F745D74811D74811D6C061D749B6B17639352CF414B29C7208E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281D5019408217408115380217401F5825688217408119400317381530091001008B871802175B9F7C5F74821D6C031F74D5524929C72084C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281D501940811740051D501B4819481B481B501F588117400217381940194081173801091001008B8718020921CD391763815F74821D6C02175BCF39C92083C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B508117400113301D508717408119400319381738091001008B871807C720C718C7208B31D5521D6C5F741F74815F74029B6B534A09299087180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F281B488117400411301F5819481740153884174081194081173801091001008B871881C72081C7180387184929914ADB63821D6C035F74DB6B514A09298E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281B5019408A174081194081173801091001008B871809C920092109290B294B318B298B310F3A99631F6C821D6C019F7C934A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251301D5019408A174081194081173801091001008B871802D75A1D6C1D6C811D74825F74011F6C1D6C821D6C015F74914A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B508B17400519401B4019381738091001008B87180159639F7C8A5F74019F7C914A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281D5019408A17408119400319381738091001008B871802D55A9963595B81575B04175B155BD55AD552935281514A020F42CF3909298E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281D508B17408119400319381738091001008B8718085352D5525142CD314929C720C7188718851881871883C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281D508B17408119400319381738091001008B87180159639F7C815F74091D6C9B6B5963955251428D394B290929C720C7188F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B48821740011738174086174081194081173801091001008B87180257635F741D6C811D74011D6C5F74825F74041D6CDB6B5963D55A8B318E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308064F281B501940174017381538173886174081194081173801091001008B87180459635F741D6CDB63DB6B811D6C031D741D6C5F745D74811D74019F7C934A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F281B508B174081194081173801091001008B87180E57635F745F748D39C720CF395D741D741D6C1763596BDB731D6C5D74934A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B488B174081194081173801091001008B87180B17635F745F748D3187184B311D745D74DB6BC920C718514A815F7401914A87188D87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301D508C174004194019381738091001008B87180B17635F745D748D3187184B291D6C5D74DB6B092987180F42815F7401914A87188D87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251301D5019408A1740011738194081173801091001008B8718055963A17C9F748D3187184B29815F7403DB6B092987180F42815F7401514287188D87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251301D50194085174001173817408217408119400317381530091001008B87180BCD39D55259634B31C7180929175B9B6BDB630921C7180F42815F7401914A87188D87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080351301D50174017388917408119400317381730091001008B871882C71882C72008C71809210929C720C7180F429F7CA17C934A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301D50881740021738174017408119400319381738091001008B871888C71881C7200309298D310F428D318E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080451301D501940174017388517400215381738174082194002173809100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080451281B501940174017388817408119400319381738091001008B871801C720C7189B87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B508B17408119400317381730091001008B871806D552996BD55211428B310929C92081C7189487180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B488B174081194081173801091001008B871801175B5F74835F74061D6CDB63175B9352CF394B31092981C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301B488B17408119400319381738091001008B871802D75A5F741D6C825F74011D6C1D74835F74021D6CDB6BCF398E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B508C174004194019381530091001008B871805175B5F741D6C514A934A575B821D74815F74031D741D6C5F74914A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281D5019408A17408119400319381738091001008B87180E175B5F741D6CC920851809291D745F749B6BCF41514A99631D745F7451428E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080451301D501940174017388817408119400319381738091001008B87180B175B5F741D6C0929C7180B291D6C5F745963C71885101142815F7401914A87188D87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301B488B17408119400319381738091001008B87180B175B5F741D740B2985180B291D745F74996BC72087185142815F7401914A87188D87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301B488A17400617381740194019381738091001008B87180E93525F745F74D3520721934A5F741D6C5F740F3A0921175B5D745F74914A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281D5019408117408117388617400519401B4019401738091001008B87180E4B291D745D745F741D6C1F741D6C5D741D745F741D6C1D741D6C1F7CCD398E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281B4819408A17408119400319381738091001008C8718080F425F7C5F741D741F745F7C9B6B1D745F74811D6C025F745763C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281B5019408A174081194081173801091001008B87180EC7188718CD39596BDD73DB63514AC718CD39DB6B5F741D7417630929C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281B481940831740011738174084174081194081173801091001008B871881C718038718C7188D310F3A81CD39034B31092149294B2982C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B488B17408119400319381738091001008B871804C71887184B31175BDD73825F74035D74DB635142C92081C7188F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301D508B174081194081173801091001008C871801CF411D7C855F74035D745F749B6B4B319087180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301D508B174081194081173801091001008B8718094B315F745D745F749B6B9552514A9552996B5F74815D7401DD734B298F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281D5019408917400615381940194019381738091001008B87180417535F745D749352C72082871806C7208D3199635D741F745963C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301D508A17400615381738194019381738091001008B871802DB635F749B6B81C71882871806C7188718072199631D741D7C8D318E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151301B508B17400519401B4019381738091001008B8718039B6B5F74596BC71884871805C71885188D315D745F74914A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B5083174001173817408517408119400319381738091001008B87180359635F741D7C8B3184871881C7180309291D6C5F74D34A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151281B5083174001173817408417400617381940194019381738091001008B87180411429F741D74DB6B4B3183871805C7188518514A1F745F7451428E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281B5019408A17400519401B4019401738091001008B871802C72059635F74811D7401D5528B31810929054B3193521D741D6C1D7449298E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251301B5019408A17408119400319381738091001008C87180309299B6B5F741D6C815F74811D6C051D745D741D6C5F740F3A85108E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080251281D5019408A17408119400319381738091001008B871804C71887180921D55A1D74815F74011F741D74815F7403DB6B0F3A4B29CB318E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B174081194081173801091001008B871882C7180B87184B29914A1763596B996B155351420F3AD5525F7415538E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B174081194081173801091001008B871881092909C720C7188518831085188718C920CD31175B1D74815F7401D55287188D87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508A17400617381940194019381738091001008B871809D55A1F749B6B1763935251428D31CF4159635F74811D74025F74DB73CF418E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508A17400617381940194019381738091001008B871802175B617C1F74845F74051D741D6C1D7459630F4209218F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508A17400217381940194081173801091001008B871804CF415763996B1D6C1F74815F74811D6C035D7493528718851881C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508A174006173819401B4019381738091001008B871881C7180CC72009298B31CF41D55A1D7C1F741D74DD73534AC7208718C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B17408119400319381738091001008B871883C718828718068D3999635F741D745D7499638D318F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B48831740011940174085174081194081173801091001008E871883C718038718C720514ADD73811D74011D7C0F428E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B5085174081173882174002173819401940811738010910010090871883C7180587184B3117631D7C5F74D5528E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508517400217381538173881174006173819401B40193817380910010091871883C718048718C718CF411D7415538E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B50861740011538173881174006173819401B40193817380910010094871882C71802851809298D398E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B174081194081173801091001008B871882C71887871882C7188F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308024F285D5017408117388817408119400319381738091001008B871808C718871809290B49CB78CB800B590B31C71882871882C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D5084174001173817408417408119400319381738091001008A871881C718010D61CFD883CFF002CFE80FB10B4181C7189187180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B174081194081173801091001008A87180CC7180D81CFF8CFE0CFD8CFE0CFE8CFE0CFD8CFE8CFF00D89C9289187180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B174081194081173801091001008A87180D0B49CFF8CFD8CFE0CFE8CDC8CDB8CFD0CFF0CFE0CFD8CFE8CFD00B399087180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B17408119400319381738091001008A87180ECDA0CFE8CFE0CFE80B51C720C718C9280B510FA9CFE88FD88FE0CFE00B418F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B17408119400319381738091001008A871803CFC8CFE0CFF00D8185C718050D61CFE08FD8CFD8CFE0C9408E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308024F285D5019408A174081194081173801091001008A871803CFD8CFE0CFF00D5184871806C71887180B49CFE0CFD0CFE0CDB08E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B174081194081173801091001008A871803CFD8CFE0CFF00B4984871881C7180487180D69CFE88FD0CFE08E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B488B174081194081173801091001008A871881CFE002CFF00B51C71884871881C71803C920CFD0CFD0CFE88E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B174081194081173801091001008A871881CFE002CFF00B51C71884871881C718030D59CFD8CFD0CFE88E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B174081194081173801091001008A871804CFD8CFE0D1F8CB78851883871803C71887180B49CFF881CFD801CFE087188D87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508A17400617381940194019381738091001008A87180FCFC0CFF0CFF0CB885329993955314D31C718851887180D59CFF0CFD8CFE8CDA88E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B488A17400217381940194081173801091001008A871804C948CDC08BF09DA9FF5A82BF6207755AD949C718C720CDA0CFC00FA109298E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308024F285B50174081153884174001173817408117400519401B4019381738091001008B87180C0B319FA1B362BB5ABD62BB62BD5ABF62FF626B5AC9208718C92081C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D50841740011738174082174001173817408119400319381738091001008A871803C7186952FF5ABB5A84BF6203BD5ABF626F52C92082C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508C174004194019381738091001008A8718024D31BF62BD6281BF6208E14995319B39755ABF62BB5ABF625F52851881C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B488B1740821940021738091001008A87180F9731FF62BD5AFF62D74185188718851809216F52BF62BD5ABF5A0B298718C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B48881740021538174017408119400319381738091001008A871804DF39FF62BF62755AC72082C7180787184D31BF62BD62BF62194A8518C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B488A17400617381740194019381738091001008A8718049B39FF62BF622D52C71882871881C718056D5ABF62BF62274A8718C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B174081194081173801091001008A8718045331FF62BF62BB5AC72082871807C71887186952BF62FF62254A8718C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308034F285B481740173889174081194081173801091001008A8718010921BB5A81FF620B1B4A87188718C718C5189531BD62BB5AFF6217428518C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B174081194081173801091001008A87180AC518E141FF62BF62FF62694A97319939694AFF62BF5A81BD5A020B29C718C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B17408119400319381738091001008A871804C7180921B75AFF62BD6283FF6204BB62BB5AFF62DF41851881C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308024F285D5019408517408117388217400519401B4019401738091001008A871805C720C7184D29B75AFF6ABF6281BD6204BB5ABD5AFF62214AC51881C7208F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308024F285B5019408617400317381740174017388119400319381738091001008A871806C718871885100921DF41B55ABB5A81B95A06BB5AE1411329A339D77CC9AF8B4A8E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B174081194081173801091001008A87180609214B42CF4A1D425D4A29636B6B81A96B03A56BE36BE184959E81C9AF0189A787188D87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B174081194081173801091001008A871805498EC9C7CBB7CFAFCDAFCBAF84C9AF04C7B7C9AFC9AFC9B7C7858E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508A17400617381940194019381738091001008A871801C9AFC9B781C9AF0BC9B7C9BFC9BFCBBFC9BFCBBFC9BFCBBFC9B7C9AF8B7409298E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B488B17400519401B4019381738091001008A871806498EC9B7C9B7CBB7499F097DCB63814B5B810B53048B4A0B3A09298718C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B488B17408119400319381738091001008A8718074753C9BFC9B7CBBF497D87108718C71884871882C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B17408119400319381738091001008A8718018729C9AF81C9B701C9AF472987C7189087180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B17408119400319381738091001008A871801C7200B8E81C9B701C9BF073A9887180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D5085174001173817408317408119400319381738091001008B871801CB74C9BF81C9B703076489390729C7189587180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D5085174001173817408317408119400319381738091001008A87180AC7188B4AC9B7C9AFCBA7C7E7C3FF83FFC5DDC762C7209387180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B174081194081173801091001008A87180DC7184931C9AFC9A789C705FF43FF45FF43FFC3FF45EE09298718C7189087180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B17400519401B4019381730091001008A871804C718C7ACC5FF45EF45FF8183FF0585FF83FF45FF83FF85EE092981C7188F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B17408119400319381738091001008A871805893183FF45FF43FFC3FF079481893906479C83FF03FFC3FF07948718C7188F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B174081194081173801091001008A871805C56AC3FF43FFC5FF479C871881C718028718479CC3FF8103FF010729C7188F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308024F285D5019408A17408119400317381730091001008A871804056BC3FF43FFC3FF893983C71804893183FF05FF83FFC9419087180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D5089174081173881194081173801091001008A8718054552C5FF43FFC3FF4931C71881871805C7180929C3F603FF83FF895A9087180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508A17400217381940194081173801091001008A871804092945FF45FFC5FF495A82871801C71809298105FF0183FF49529087180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B174081194081173801091001008A87180DC718C7ACC5FF85FF45EE07218718C7188510094A85FF03FF83FF89399087180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B17408119400319381738091001008B87180DC941C5FF05FF85FFC5D5C7414729475285EE43FF45FF05DEC720C7188F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508217400317381740174017388317400617381940194019381738091001008A87180EC720C718479CC5FF03FF85FFC5FF45FF85FF45FF05F7C5FF89628718C7188F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508917408117388119400319381738091001008A871804C720C718C720C5CDC5FF8105FF8145FF0305FFC3FF83AC871881C7188F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308024F285B5019408A17408119400319381738091001008A871881C71802C720052903A48343FF0647F78B948D21CF290B298718C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308044F285D5019401740153886174001173817408119400319381738091001008A87180F0B29A1332734A1235B1A995C998599755D65E73C2B24EF2C332DF32CCF2985188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508117400317381740174017388417400615381740194019381738091001008A871801A323772D81F32C06312DAF246F1CAF246F24AD24EF2C81AF2C02EF2CAF2C4B198E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B5084174001173817408317400617381940194019381738091001008A8718016B2C352D81F12C82EF2C02AF2CEF2CEF2C81F12C03EF2CAF2C352DD9228E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B488B17408119400319381738091001008A8718068F29E3336B2C692CAF2CEF2CF12C81EF2C0669342534A133AD2CEF2CF12CA3238E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B174081194081173801091001008A871805C718C720C9200B296B2CF12C81EF2C07F32C5532C71887185532F32CEF2CE5238E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508B17408119400319381738091001008A871881C72002C7185F33332D82EF2C07F32CDB3285188718D129F32CEF2CE7238E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D50871740011738174081174081194081173801091001008A87180F071987189732372DAF2CEF2C332DF32CEF2CAD2C092183105332F52CF12C61238E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B174081194081173801091001008A871802C5185522F52C81AF2C0AF52CD9321B33F52CF32C292497226B2CB12CF52C55228E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B174081194081173801091001008A87180B8D21F32CF12CAF2C352D5F33C7180B29AF2CF32CF12CF52C81F12C012D2409198E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B174081194081173801091001008A87180A2B24F32CAF2CF32C29340921C720C7188D29AF2CF52C81AF2C02372D133285188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B174081194081173801091001008A871805F52CF12CF12CAF2C4B29C71881C72002C7184B29A13381F32C02DB32C718C7188E87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B48841740011738174082174001153817408119400319381738091001008A8718031D23372DF12C8F2986C718014B290B2981C7188F87180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B488B17400519401B4019381738091001008A871802C718D1214B2981C71883871884C7189087180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B508A1740021738194019408117380109100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508A1740021738194019408117380109100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508B17408119408117380109100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508A1740061738194019401938173809100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B488A174006153819401B401938173009100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285B4885174001173817408117408117380519401B401938173809100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308024F285D5019408517400117381740821740811940031938173809100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D31810308014F285D508217400117381740861740811940031938173809100100A987180185100100830100FFADB58FADB584010001851087188C87188185188185100109298D318103080151285B508117400117381740821740811738821740811940031938173809100100A987180185100100FF010098010001851087188C87188185188185100109298D31810308014F285B48861740011738153881174006173819401B401938173809100100A987180185100100FF010098010001851087188C87188185188185100109298D31810308014F285B488A1740061738194019401738173009100100A987180185100100FF010098010001851087188C87188185188185100109298D31810308014F285B4884174002173815381738811740811738811940031738173009100100AA87180185100100FF010096010001851087188D87188185188185100109298D31810308024F285B481740811738811538811740811538021738174017388119408117380109100100AB87180185100100FF010094010001851087188E87188185188185100109298D31810308034F285B4817401738821538811740811538821738811940031738153009100100AC8718FF85109585109087188185188185100109298D31810308054F285B48174015381738174085173881153805174019401738153009100100EC871801851887188D871801851887188287188185188B8718888518BA87188185188185100109298D318103080351305F58194819408619488119400619481B481B481B4019380B180300FF8718D387188185188185100109298D318103080351305D5019401740861940811740811948041B48194019380B100100FF8718D387188185188185100109298D31810308014F285D508117400319401948194819408417400619401B481B40194019380910010001C7188718FF8718D187188185188185100109298D31810308024F285D5019408A17400519401B40193817380910010001C7188718FF8718D187188185188185100109298D31810308014F285D508B17400519401B48194017380910010001C7188718FF8718D187188185188185100109298D31810308014F285D508B174081194003193817380910010001C7188718FF8718D187188185188185100109298D31810308034F285D501740153881174003173817401740173883174081194003193817380910010001C7188718FF8718D187188185188185100109298D31810308034F281D501740173889174081194003193817380910010001C7188718FF8718D187188185188185100109298D31810308014F281B508B174081194003193817380910010001C7208718FF8718D187188185188185100109298D31810308014F281B488B174081194003193817380910010001C9208718FF8718D187188185188185100109298D31810308014F281B508817400217381740174081194081173801091001000109218718FF8718D187188185188185100109298D318103080251281D5019408A174081194081173801091001000109218718FF8718D187188185188185100109298D318103080251281B5019408A17408119400319381738091001000109298718FF8718D187188185188185100109298D31810308014F281B508B17408119400319381738091001000109298718FF8718D187188185188185100109298D318103080151281D508B174081194081173801091001000109298718FF8718D187188185188185100109298D318103080151281D50891740011538174081194081173801091001000109298718FF8718D187188185188185100109298D318103080251301D5019408417400117381740811740011538173882194002173809100100010929C718FF8718D187188185188185100109298D31810308014F285B508B174082194002173809100100014B29C718FF8718D187188185188185100109298D31810308014F285B508B1740811940031938173809100100014B31C718FF8718D187188185188185100109298D318103080351285B4815381738881740061738194019401938173809100100018D31C720FF8718D187188185188185100109298D31810308034F281B4817381538881740061738194019401938173009100100018D31C920FF8718D187188185188185100109298D318103080151281D508B1740811940031738173009100100018D310921FF8718D187188185188185100109298D318103080151281D508B17408119408117380109100100028D310929C718FF8718D087188185188185100109298D318103080151281B488317400117381740851740811940031938173809100100028D310929C718FF8718D087188185188185100109298D318103080151281B5083174001153817408517400519401B401938173809100100024B314B29C718FF8718D087188185188185100109298D318103080251301B5019488A174082194002173809100100814B3101C7188718FF8718CF87188185188185100509298D310308030051301B4881174001173815388117400117381740831740811940031938173809100100020B294B31C718FF8718D087188185188185100509298D310308030051301B488A174006173819401940173817300910010002C9208D31C720FF8718D087188185188185100609298D310308010051301B481940821740011738174085174081194081173801091001000285108D310921FF8718D087188185188185100609298D310308010051301B501940811740011738174083174081173806174019401B4019401738091001000203088D310929FF8718D087188185188185100609298D310300010051301B4819408117400115381740861740821940021738091001000301008D310929C718FF8718CF87188185188185100109294B318101000251301D5019408A17408119400319381738091001000301008D314B31C718FF8718CF87188185188185100109294B31810100014F281B488B17408119408117380109100100040100C7208D310921C718FF8718CE87188185188185100109294B31810100014F281B488B17408119400317381730091001000103084510814B3101C720C718FF8718CD871801851885108185100109294B29810100010F281B488B1740811940031938173809100100050F280100C7208D314B29C92081C718FF8718CB87180585188510851087180929C9208101000453301B50174015381738821740011738174081174001173817408119400319381738091001000359480F280308C720814B31010929C92083C718FF8718C78718818518078510C718092143080100091859401B48891740011538174081194081173801091001000A1B4859480D2801004510C7208D314B310B290929092181C920FFC720C6C72081C71802851885108518810100020F281B4819488B17408119400317381730091001000919401B485B480F280308030045108718C7200929FF4B31C84B31044B290B290929C7204308810100020B1859481B488C1740811940811738010910010007174019401B485D5057400F2803000308810300810100810300FF0308C1030801030001008501000403000B2059401B481940881740811738811740821940021738091001000A17381740174019401B485D50574011300D2007100308810300820100FF0300BD030088010003071053305948194882174081173885174001153817388117408219400217380910010083174003194019481B481B50845D50825F50815D50815F50815D50025F505F585F50825D50025F505F585F50825D50815F50015D505F50815D50825F50815D50025F505D505D50815F50815D50815F50815D50825F50835D50015F585D50835D50025F505F585F58845D50035F585D505F585F50815D50025F505D505F50815F58035F505D505F505F58825D50815F50025F585F505F50825D50025F505D505F50815D50045F585F505F505F585F50825D50035F505D505D505F50825D50815F50815D50815F50865D50015F585D50865D50045F505D505D505F505F58825F50035D505F505F505D50815F50815D50025F505D505D50825F50015D505F50815D50815F50835D50825F50825D50055F505D505D505F585F505D50835F50815D50015F505F58815F50815D50015F585F50815F50825D50025F505D505D50815F50825D50021B48194819408217408117388817400617381940194019381738091001008117400117381740811740021940194819408119488119408219488219408719488119408319488119400319481B4819481940991948031940194819481940851948811740A419488119408819488119408119480119401948821948811940861948811740861948011B4819488C19480119401948821948011B4819488119480119401948851948011940194881194801174019408D1948021B48194819408819488119408D1740011738174081194081173801091001009A17400117381740841740011738174090174001173817408117400117381538BC174001173817409517400117381740A617400217381740174081173888174001173817409717408117388617400519401B401938173809100100D21740011738174092174001173817408217400117381740991740011738174082174001153817408B17400117381740A2174081173887174001153817409C17400519401B4019401738091001000117381740D017400117381740B31740011738174082174001173817408B1740031738174017401738A117400115381740A51740811940031938173809100100011738174099174001173817409C17400117381740C5174081173886174081173890174001173817409617400117381740871740031738174017401738A3174081194003193817380910010089174001173817408417400115381738C61740011738174084174001173817409F17400117381740B217400117381740A51740011538174086174006173819401940193817380910010089174001173817409A17400117381740A71740811738B317400115381740CB1740021738174017408117388E174006173819401B401738153009100100D417408117388317400117381740C117408117388D17400117381538A2174081173882174001173817408C174001173817408119400319381738091001000117381740DA174001173817408917400117381740BB174001173817408517400117381740AE1740011738174084174081173883194002173809100100A5174001173817408617400115381738A117400115381738EC1740031738174017401738A217400119401B4881194002173805000100C717400115381740881740811738FF174087174081173881174001173817408417400219401B481B4881194002173803000100821940021948194017408419408217408E19400319481940194017408219408117408119400217401940194081174084194001174019408B19400117401940851940811740841940011740194085194001174019408119408217400219401740174088194001174019408619408117408619408117408B1940821740851940011948194082174081194001174019408119480119401740881940811740841940821740031940174017401940821740821940811740831940011740194081194001174019488719400217401940194081174006194019481940174019401740194081174084194001174019408119400219481B481B4881194002133001000100851B480119481B48821B48831948811B480119481B48811B480119481B488D1B480119481B488F1B480119481B48861B480119481B48811B48811948881B48811948891B48811948871B48811948821B48811948841B48811948881B48811948B41B480119481B48861B480119481B48841B4801194019488F1B480119481B488E1B48021D481D501D50811B48021B4019400910810100841D50011F501D508C1D50011F501B50891D50011B501D50821D50011B501D50881D50011B501D50851D50011F501D50811D50811B48811D50011B481D50811D50011B501B48821D50051B501B481D501F501D501F50891D50011F501D50821D50011F501D50811B48011D501F50821D50811F508A1D50811F509D1D50811F50051D501B501D501F501D501F508B1D50011B481D50881D50031F501D501D501F50881D50021B481D501F50861D50011F501D50901D50011F501D50821D50811F50841D50811B48011B401128820100861D50851F508E1D50821F50831D50011F501D50821D50811F50881D50011F501D50821D50811F50011D501F50811D50811F50821D50011F501D50881D50011F501D50831D50821F50821D50011F501D50811D50811F50881D50811F50831D50821F50891D50821F50821D50011F501D50841D50011F501D50881D50811F50861D50011F501D50811D50011F501D50851D50811F50821D50011F501D50821D50031F501D501D501B48861D50011F501D50841D50811F50821D50011F501D50951D50011F501D50841D50811B480113300100820100821D50021F501D501D50821F508B1D50011F501D50841D50811F50861D50811F50831D50811F50811D50811F50861D50031F501D501D501F50821D50811F50821D50811F50871D50011F501D50831D50821F50851D50841F50821D50021F501D501D50821F50831D50831F50871D50821F50811D50011F501D50821D50811F50811D50021F501D501D50811F50811D50811F50811D50021F501D501F50841D50811F50821D50811F508E1D50811F50811D50021B481D501F50851D50811F50821D50811F50831D500A1F501D501D501F501D501F501D501F501D501D481B48811F50821D50811F50811D50011F501D50881D50011B480D20840100991530021330153015388A153001133015308115300115381530881530811538F415300113301530961530011330153095153001133015308515300211300B180300850100FF01009701000103000F28821128010F200508890100050D180F200F2811280F200D188901000305080F2811280F28810F200103000100880100010F200F28811128010F280B189F0100FF01009801000407101530193817300B108A01000103000F2881193801112803008A0100040B1017301940153007088A01000403001128193817380F20A00100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100FF0100EF0100000000000000000054525545564953494F4E2D5846494C452E00");
def processframe(data):
# Skip last 26 bytes (footer)
data = data[:-26]
# Skip first 22 bytes
i = 22
# Implied header: 16010A000001002000000000F0009001102000000000
if(image):
imgdat = bytearray(b'')
while(i < len(data)):
header = data[i]
# Top byte indicates RLE/RAW
if(header > 127):
if(log):
print("RLE",end='')
rle = True
else:
if(log):
print("RAW",end='')
rle = False
# Length of packet, pixels for RLE or colors for RAW
packlen = header % 128 + 1
# Skip header byte
i = i + 1;
if(log):
print(str(packlen).rjust(4)+" ",end='')
if(rle):
# Two color bytes in LE order
b1 = data[i]
b2 = data[i+1]
if(log):
printrgb(format(b2, '08b')+" "+format(b1, '08b'))
if(image):
# bytes to 5-bit and 8-bit RGB
r,g,b,ra,ga,ba = torgb(b2,b1)
for j in range(packlen):
imgdat.append(ra)
imgdat.append(ga)
imgdat.append(ba)
# Skip past two color bytes
i = i + 2
else:
j = 0
while(j < packlen):
# Two color bytes in LE order
b1 = data[i+j*2]
b2 = data[i+j*2+1]
if(log):
printrgb(format(b2, '08b')+" "+format(b1, '08b'))
if(image):
# bytes to 5-bit and 8-bit RGB
r,g,b,ra,ga,ba = torgb(b2,b1)
#print(b2,b1,r,g,b)
imgdat.append(ra)
imgdat.append(ga)
imgdat.append(ba)
# Next color pair
j = j + 1
# Skip past raw color data
i = i + packlen*2
if(log):
# Need newline after all those colors
print()
return imgdat
if(animated):
frames = []
for i in range(0, len(animdata)):
imgdat = processframe(animdata[i])
if(image):
# Should be 288000
if(log):
print(len(imgdat))
# Needs to be immutable, so convert to bytes instead of bytearray
im = Image.frombytes('RGB', (240, 400), bytes(imgdat))
frames.append(im.rotate(90, expand=True))
frames[0].save("TGAHZ.gif", save_all=True, append_images=frames[1:], duration=len(animdata), loop=0)
if(log):
print("Saved")
else:
imgdat = processframe(data)
if(image):
# Should be 288000
if(log):
print(len(imgdat))
# Needs to be immutable, so convert to bytes instead of bytearray
im = Image.frombytes('RGB', (240, 400), bytes(imgdat))
im.rotate(90, expand=True).save("TGAHZ.png", "PNG")
if(log):
print("Saved")