Contract con_optic_protocol_v5


Contract Code


  
1 import currency
2 import con_optic_lst001
3 import con_xoptic_lst001
4 import con_optic_stau_lst001
5 I = importlib
6
7
8 S = Hash(default_value=0)
9 L = Hash(default_value=0)
10 LINK = Hash(default_value=0)
11 metadata = Hash(default_value=0)
12 blockdata = Hash(default_value=0)
13
14
15 TAU = ForeignHash(foreign_contract='currency', foreign_name='balances')
16 OPTIC = ForeignHash(foreign_contract='con_optic_lst001', foreign_name='balances')
17 xOPTIC = ForeignHash(foreign_contract='con_xoptic_lst001', foreign_name='balances')
18 sTAU = ForeignHash(foreign_contract='con_optic_stau_lst001', foreign_name='balances')
19
20
21 @construct
22 def seed():
23 metadata['operator'] = ctx.caller
24 metadata['fees_wallet'] = 'eb9074ab07c502be35be4f447d370a79ac9feb62e849fe0272dfe93d0e4cdd48'
25 metadata['initial_offer'] = 40_000_000
26 metadata['base_pool'] = 50_000_000
27 metadata['boost_pool'] = 200_000_000
28 metadata['lens_factor'] = 0.0205
29 metadata['xoptic_supply'] = 203_000_000
30 metadata['optic_in_pool'] = 203_000_000
31 metadata['optic_staked'] = 0
32 metadata['stau_farm'] = 0
33 metadata['xoptic_pledge'] = 0
34 metadata['stau_staked'] = 0
35 metadata['stau_farm'] = 0
36 metadata['fees_lens_claim'] = decimal('0.1')
37 metadata['xoptic_ratio'] = 1
38 metadata['rewards_fees'] = decimal('0.1')
39
40 blockdata['block_emergency'] = False
41 blockdata['xoptic_start'] = True
42 blockdata['initial_close'] = True
43
44 metadata['max_lens'] = 100
45 metadata['instant_burn'] = decimal('0.03')
46 metadata['nft_contract'] = 'con_optic_nft_v4'
47 metadata['lens_operator'] = ['con_optic_flip_coin']
48
49 metadata['emergency_contract'] = 1
50 metadata['operator_sign'] = [ctx.caller, '24f4184c9d9e8e8440067e75fb4c82d44c51c529581dd40e486a0ca989639600', 'b1c4b6a0baa3cef7fd57a191d3fe0798748b439ddf566825a2b614eb250bb519']
51
52 @export
53 def initial_rewards(to: str, amount: float):
54 assert ctx.caller == metadata['operator'
55 ], 'Only operator can set metadata!'
56 con_optic_lst001.transfer_from(amount, to, metadata['operator'])
57 return amount
58
59
60 @export
61 def initial(amount: float):
62 assert blockdata['initial_close'] == False, 'Initial Deposit Closed'
63 block_emergency()
64 user = ctx.caller
65 assert amount > 0, 'You must send something.'
66 assert TAU[user] >= amount, 'Not enough coins to send!'
67 currency.transfer_from(amount, metadata['operator'], user)
68 day = now.day
69 metadata['total_initial'] += amount
70 metadata['initial', day] += amount
71 S[user, 'initial'] += amount
72 return amount
73
74
75 @export
76 def remove_initial(amount: float):
77 block_emergency()
78 assert blockdata['initial_close'] == False, 'Remove Locked'
79 user = ctx.caller
80 assert amount > 0, 'You must remove something.'
81 assert S[user, 'initial'] >= amount, 'Not enough coins to remove!'
82 currency.transfer_from(amount, user, metadata['operator'])
83 metadata['total_initial'] -= amount
84 day = now.day
85 metadata['initial', day] -= amount
86 S[user, 'initial'] -= amount
87 return amount
88
89
90 @export
91 def claim_forge():
92 assert blockdata['initial_close'] == True, 'Claim Locked'
93 user = ctx.caller
94 assert S[user, 'initial'] > 0, 'Not enough coins to claim!'
95 amount = S[user, 'initial'] * metadata['initial_offer'] / metadata['total_initial']
96 con_optic_lst001.transfer_from(amount, user, metadata['operator'])
97 S[user, 'initial'] = 0
98 return amount
99
100
101 @export
102 def stake(amount: float):
103 block_emergency()
104 assert blockdata['xoptic_start'] == True, 'Deposit not start'
105 user = ctx.caller
106 assert amount > 0, 'You must stake something.'
107 assert OPTIC[user] >= amount, 'Not enough coins to stake!'
108 X_SUPPLY = metadata['xoptic_supply']
109 OPTIC_IN_POOL = metadata['optic_in_pool']
110 RECEIVED = amount / (OPTIC_IN_POOL + amount) * X_SUPPLY
111 con_optic_lst001.transfer_from(amount, metadata['operator'], user)
112 con_xoptic_lst001.transfer_from(RECEIVED, user, metadata['operator'])
113 metadata['optic_in_pool'] += amount
114 metadata['xoptic_supply'] -= RECEIVED
115 metadata['xoptic_ratio'] = metadata['optic_in_pool'] / metadata[
116 'xoptic_supply']
117 metadata['optic_staked'] += amount
118 metadata['xoptic_staked'] += RECEIVED
119 S[user, 'xoptic'] += RECEIVED
120 return RECEIVED
121
122
123 @export
124 def unstake(amount: float):
125 block_emergency()
126 assert blockdata['xoptic_start'] == True, 'Remove not start'
127 user = ctx.caller
128 assert amount > 0, 'You must withdrawal something.'
129 assert xOPTIC[user] >= amount, 'Not enough coins to withdrawal!'
130 OPTIC_OUT = amount / metadata['xoptic_supply'] * metadata[
131 'optic_in_pool']
132 con_xoptic_lst001.transfer_from(amount, metadata['operator'], user)
133 metadata['optic_in_pool'] -= OPTIC_OUT
134 metadata['xoptic_burned'] += amount
135 metadata['xoptic_ratio'] = metadata['optic_in_pool'] / metadata[
136 'xoptic_supply']
137 metadata['optic_staked'] -= OPTIC_OUT
138 metadata['xoptic_staked'] -= amount
139 S[user, 'xoptic'] -= amount
140 return OPTIC_OUT
141
142
143 @export
144 def claim_unstake_xoptic():
145 block_emergency()
146 user = ctx.caller
147 amount = S[user, 'xoptic_unstake']
148 assert amount > 0, 'You must unstake something.'
149 con_optic_lst001.transfer_from(amount, user, metadata['operator'])
150 S[user, 'xoptic_unstake'] = 0
151 return amount
152
153
154 @export
155 def add_unstake_xoptic(to: str, amount: float, uid: str):
156 assert ctx.caller == metadata['operator'
157 ], 'Only operator can set metadata!'
158 S[to, 'xoptic_unstake'] += amount
159 return amount
160
161
162 @export
163 def split(amount: float):
164 block_emergency()
165 user = ctx.caller
166 assert amount > 0, 'You must stake something.'
167 assert TAU[user] >= amount, 'Not enough coins to send!'
168 currency.transfer_from(amount, metadata['operator'], user)
169 #currency.transfer_from(amount, ctx.this, user)
170 con_optic_stau_lst001.transfer_from(amount, user, metadata['operator'])
171 metadata['stau_split'] += amount
172 return amount
173
174
175 @export
176 def redeem_instant(amount: float):
177 block_emergency()
178 user = ctx.caller
179 assert amount > 0, 'You must stake something.'
180 assert sTAU[user] >= amount, 'Not enough sTAU to send!'
181 con_optic_stau_lst001.transfer_from(amount, metadata['operator'], user)
182 BURN = amount * metadata['instant_burn']
183
184 #currency.transfer_from(amount - BURN, user, ctx.this)
185 #currency.transfer_from(BURN, metadata['fees_wallet'], ctx.this)
186
187 currency.transfer_from(amount - BURN, user, metadata['operator'])
188 currency.transfer_from(BURN, metadata['fees_wallet'], metadata['operator'])
189 metadata['stau_split'] -= amount
190 metadata['burn'] += BURN
191 return amount
192
193
194 @export
195 def redeem_slow(amount: float):
196 block_emergency()
197 user = ctx.caller
198 assert amount > 0, 'You must stake something.'
199 assert sTAU[user] >= amount, 'Not enough sTAU to send!'
200 con_optic_stau_lst001.transfer_from(amount, metadata['operator'], user)
201 metadata['stau_split'] -= amount
202
203
204 return amount
205
206
207 @export
208 def claim_merge_slow():
209 block_emergency()
210 user = ctx.caller
211 amount = S[user, 'merge']
212 assert amount > 0, 'You must claim something.'
213 currency.transfer_from(amount, user, metadata['operator'])
214 #currency.transfer_from(amount, user, ctx.this)
215 S[user, 'merge'] = 0
216 return amount
217
218
219 @export
220 def add_merge_slow(to: str, amount: float, uid: str):
221 assert ctx.caller == metadata['operator'
222 ], 'Only operator can set metadata!'
223
224 S[to, 'merge'] += amount
225
226
227 return amount
228
229
230 @export
231 def farm(amount: float):
232 block_emergency()
233 user = ctx.caller
234 assert blockdata['xoptic_start'] == True, 'Deposit not start'
235 assert amount > 0, 'You must stake something.'
236 assert sTAU[user] >= amount, 'Not enough coins to stake!'
237
238 con_optic_stau_lst001.transfer_from(amount, metadata['operator'], user)
239
240 if not S[user, 'start_farm'] or S[user, 'start_farm'] is None:
241 S[user, 'start_farm'] = now
242 metadata['stau_farm'] += amount
243 S[user, 'farm'] += amount
244 return S[user, 'start_farm']
245
246
247 @export
248 def remove(amount: float):
249 block_emergency()
250 user = ctx.caller
251 assert amount > 0, 'You must withdrawal something.'
252 assert S[user, 'farm'] >= amount, 'Not enough coins to withdrawal!'
253 con_optic_stau_lst001.transfer_from(amount, user, metadata['operator'])
254 metadata['stau_farm'] -= amount
255 S[user, 'farm'] -= amount
256 if S[user, 'farm'] == 0:
257 S[user, 'start_farm'] = None
258
259
260 @export
261 def pledge(amount: float):
262 block_emergency()
263 user = ctx.caller
264 assert amount > 0, 'You must pledged something.'
265 assert xOPTIC[user] >= amount, 'Not enough coins to pledged!'
266 con_xoptic_lst001.transfer_from(amount, metadata['operator'], user)
267 MAX_LENS = 0
268 metadata['xoptic_pledge'] += amount
269 metadata['xoptic_staked'] -= amount
270 S[user, 'xoptic_pledge'] += amount
271
272 if not S[user, 'start_lens'] or S[user, 'start_lens'] is None:
273 S[user, 'start_lens'] = now
274
275 if S[user, 'lens'] == 0 or S[user, 'lens'] is None:
276 S[user, 'lens'] = 0
277 S[user, 'lens_time'] = now
278
279 else:
280 if S[user, 'nft_active'] or S[user, 'nft_active'] is not None:
281 thing_info = I.import_module(metadata['nft_contract'])
282 uid = S[user, 'nft_active']
283 active = thing_info.get_boost_owner(user, uid)
284 MAX_LENS = 100 * active
285
286 lens = S[user, 'xoptic_pledge'] * (metadata['lens_factor'] / (
287 60 * 60)) * (now - S[user, 'lens_time']).seconds
288 if lens + S[user, 'lens'] >= S[user, 'xoptic_pledge'] * (metadata
289 ['max_lens'] + MAX_LENS):
290 metadata['total_lens'] += lens + S[user, 'lens'] - S[user,
291 'xoptic_pledge'] * (metadata['max_lens'] + MAX_LENS)
292 S[user, 'lens'] = S[user, 'xoptic_pledge'] * (metadata[
293 'max_lens'] + MAX_LENS)
294 S[user, 'lens_time'] = now
295 else:
296 S[user, 'lens'] += lens
297 metadata['total_lens'] += lens
298 S[user, 'lens_time'] = now
299
300
301
302 @export
303 def unpledge(amount: float):
304 block_emergency()
305 user = ctx.caller
306 assert amount > 0, 'You must unpledged something.'
307 assert S[user, 'xoptic_pledge'
308 ] >= amount, 'Not enough coins to unpledged!'
309 con_xoptic_lst001.transfer_from(amount, user, metadata['operator'])
310 metadata['xoptic_pledge'] -= amount
311 metadata['xoptic_staked'] += amount
312 S[user, 'xoptic_pledge'] -= amount
313 metadata['total_lens'] -= S[user, 'lens']
314 S[user, 'lens'] = 0
315 S[user, 'start_lens'] = None
316 if S[user, 'xoptic_pledge'] > 0:
317 S[user, 'lens_time'] = now
318 S[user, 'start_lens'] = now
319
320
321 @export
322 def active_lens():
323 block_emergency()
324 user = ctx.caller
325 MAX_LENS = 0
326 assert S[user, 'xoptic_pledge'] > 0, 'Not optics to lens'
327 lens = S[user, 'xoptic_pledge'] * (metadata['lens_factor'] / (60 * 60)
328 ) * (now - S[user, 'lens_time']).seconds
329
330
331 if S[user, 'nft_active'] or S[user, 'nft_active'] is not None:
332 thing_info = I.import_module(metadata['nft_contract'])
333 uid = S[user, 'nft_active']
334 active = thing_info.get_boost_owner(user, uid)
335 MAX_LENS = 100 * active
336
337 if lens + S[user, 'lens'] >= S[user, 'xoptic_pledge'] * (metadata
338 ['max_lens'] + MAX_LENS):
339 metadata['total_lens'] += lens + S[user, 'lens'] - S[user,
340 'xoptic_pledge'] * (metadata['max_lens'] + MAX_LENS)
341 S[user, 'lens'] = S[user, 'xoptic_pledge'] * (metadata[
342 'max_lens'] + MAX_LENS)
343 S[user, 'lens_time'] = now
344 else:
345 S[user, 'lens_time'] = now
346 S[user, 'lens'] += lens
347 metadata['total_lens'] += lens
348 return MAX_LENS
349
350 @export
351 def game_lens(to: str, amount: float, win: bool):
352 assert ctx.caller in metadata['lens_operator'], 'Only operator can set metadata!'
353
354 if win == False:
355 S[to, 'lens_time'] = now
356 S[to, 'lens'] -= amount
357
358 else:
359 S[to, 'lens_time'] = now
360 S[to, 'lens'] += amount
361 metadata['total_lens'] += amount
362
363
364 @export
365 def active_auto_lens(to: str):
366 block_emergency()
367 assert ctx.caller in metadata['lens_operator'], 'Only operator can set metadata!'
368 user = to
369 MAX_LENS = 0
370 assert S[user, 'xoptic_pledge'] > 0, 'Not optics to lens'
371 lens = S[user, 'xoptic_pledge'] * (metadata['lens_factor'] / (60 * 60)
372 ) * (now - S[user, 'lens_time']).seconds
373
374
375 if S[user, 'nft_active'] or S[user, 'nft_active'] is not None:
376 thing_info = I.import_module(metadata['nft_contract'])
377 uid = S[user, 'nft_active']
378 active = thing_info.get_boost_owner(user, uid)
379 MAX_LENS = 100 * active
380
381 if lens + S[user, 'lens'] >= S[user, 'xoptic_pledge'] * (metadata
382 ['max_lens'] + MAX_LENS):
383 metadata['total_lens'] += lens + S[user, 'lens'] - S[user,
384 'xoptic_pledge'] * (metadata['max_lens'] + MAX_LENS)
385 S[user, 'lens'] = S[user, 'xoptic_pledge'] * (metadata[
386 'max_lens'] + MAX_LENS)
387 S[user, 'lens_time'] = now
388 else:
389 S[user, 'lens_time'] = now
390 S[user, 'lens'] += lens
391 metadata['total_lens'] += lens
392 return MAX_LENS
393
394 @export
395 def reduce_lens(to: str, amount: float):
396 assert ctx.caller in metadata['lens_operator'], 'Only operator can set metadata!'
397
398 S[to, 'lens_time'] = now
399 S[to, 'lens'] -= amount
400 metadata['total_lens'] -= amount
401
402 @export
403 def increase_lens(to: str, amount: float):
404 assert ctx.caller in metadata['lens_operator'], 'Only operator can set metadata!'
405
406 S[to, 'lens_time'] = now
407 S[to, 'lens'] += amount
408 metadata['total_lens'] += amount
409
410 @export
411 def register_external_link(wallet: str, dapp: str):
412 block_emergency()
413 user = ctx.caller
414
415 assert L[dapp, wallet, 'owner'] != wallet, 'Dapps link its ready'
416
417 L[dapp, wallet] = ['ref', 'owner']
418 L[dapp, wallet, 'ref'] = user
419 L[dapp, wallet, 'owner'] = wallet
420
421
422 @export
423 def active_dapps_link(dapp: str):
424 block_emergency()
425 user = ctx.caller
426 if L[dapp, user] is not None:
427 LINK[L[dapp, user, 'ref'], dapp, 'ACTIVE'] = user
428
429
430 @export
431 def remove_dapps_link(dapp: str):
432 block_emergency()
433 user = ctx.caller
434 if L[dapp, user] is not None:
435 L[dapp, user] = None
436 L[dapp, user, 'ref'] = None
437 L[dapp, user, 'owner'] = None
438
439
440 @export
441 def claim():
442 block_emergency()
443 user = ctx.caller
444
445 assert S[user, 'claimable'] > 0, 'Not optics to claim'
446 FEES = S[user, 'claimable'] * metadata['rewards_fees']
447 con_optic_lst001.transfer_from(S[user, 'claimable'] - FEES, user,
448 metadata['operator'])
449 con_optic_lst001.transfer_from(FEES, metadata['fees_wallet'],
450 metadata['operator'])
451 S[user, 'claimable'] = 0
452 metadata['fees'] += FEES
453
454 #10% Proposal d8257147a1c54b97dfa0cf2908612c1a4f3f3df028530ed3777a78c4a67241da
455 S[user, 'lens_time'] = now
456 S[user, 'lens'] -= (S[user, 'lens'] * metadata['fees_lens_claim'])
457
458
459
460 @export
461 def claim_pledge():
462 block_emergency()
463 assert blockdata['xoptic_start'] == True, 'Deposit not start'
464 user = ctx.caller
465 assert S[user, 'claimable'] > 0, 'You must stake something.'
466
467 FEES = S[user, 'claimable'] * metadata['rewards_fees']
468 amount = S[user, 'claimable'] - FEES
469 metadata['fees'] += FEES
470
471 con_optic_lst001.transfer_from(FEES, metadata['fees_wallet'], metadata['operator'])
472 S[user, 'claimable'] = 0
473
474 #stake
475 X_SUPPLY = metadata['xoptic_supply']
476 OPTIC_IN_POOL = metadata['optic_in_pool']
477 RECEIVED = amount / (OPTIC_IN_POOL + amount) * X_SUPPLY
478
479 #con_optic_lst001.transfer_from(amount, metadata['operator'], user)
480 #con_xoptic_lst001.transfer_from(RECEIVED, user, metadata['operator'])
481
482 metadata['optic_in_pool'] += amount
483 metadata['xoptic_supply'] -= RECEIVED
484 metadata['xoptic_ratio'] = metadata['optic_in_pool'] / metadata[
485 'xoptic_supply']
486 metadata['optic_staked'] += amount
487 metadata['xoptic_staked'] += RECEIVED
488 S[user, 'xoptic'] += RECEIVED
489
490 amount = RECEIVED
491 #pledge
492 MAX_LENS = 0
493 metadata['xoptic_pledge'] += amount
494 metadata['xoptic_staked'] -= amount
495 S[user, 'xoptic_pledge'] += amount
496
497 if not S[user, 'start_lens'] or S[user, 'start_lens'] is None:
498 S[user, 'start_lens'] = now
499
500 if S[user, 'lens'] == 0 or S[user, 'lens'] is None:
501 S[user, 'lens'] = 0
502 S[user, 'lens_time'] = now
503
504 else:
505
506 if S[user, 'nft_active'] or S[user, 'nft_active'] is not None:
507 thing_info = I.import_module(metadata['nft_contract'])
508 uid = S[user, 'nft_active']
509 active = thing_info.get_boost_owner(user, uid)
510 MAX_LENS = 100 * active
511
512
513 lens = S[user, 'xoptic_pledge'] * (metadata['lens_factor'] / (
514 60 * 60)) * (now - S[user, 'lens_time']).seconds
515 if lens + S[user, 'lens'] >= S[user, 'xoptic_pledge'] * (metadata
516 ['max_lens'] + MAX_LENS):
517 metadata['total_lens'] += lens + S[user, 'lens'] - S[user,
518 'xoptic_pledge'] * (metadata['max_lens'] + MAX_LENS)
519 S[user, 'lens'] = S[user, 'xoptic_pledge'] * (metadata[
520 'max_lens'] + MAX_LENS)
521 S[user, 'lens_time'] = now
522 else:
523 S[user, 'lens'] += lens
524 metadata['total_lens'] += lens
525 S[user, 'lens_time'] = now
526
527 @export
528 def add_rewards(to: str, uid: str):
529 assert ctx.caller == metadata['operator'
530 ], 'Only operator can set metadata!'
531
532 STAU_FARM = metadata['stau_farm']
533 MAX_LENS = metadata['total_lens']
534 BASE_POOL = metadata['base_pool']
535 BOOST_POOL = metadata['boost_pool']
536
537 TOTAL_L = ((STAU_FARM * MAX_LENS) ** (0.5))
538
539 if S[to, 'add_uid', uid] == 1:
540 return false
541
542 else:
543
544 BASE = (S[to, 'farm'] / STAU_FARM) * BASE_POOL
545 BASE = BASE / 365
546
547 BOOST = ((S[to, 'farm'] * S[to, 'lens']) ** (0.5))
548 BOOST = (BOOST / TOTAL_L) * BOOST_POOL
549 BOOST = BOOST / 365
550
551 S[to, 'claimable'] += BASE + BOOST
552 S[to, 'add_uid', uid] = 1
553
554
555 return BASE + BOOST
556
557 @export
558 def burn(amount: float):
559 assert ctx.caller == metadata['operator'
560 ], 'Only operator can set metadata!'
561 metadata['burn'] -= amount
562
563
564 @export
565 def fees(amount: float):
566 assert ctx.caller == metadata['operator'
567 ], 'Only operator can set metadata!'
568 metadata['fees'] -= amount
569
570
571 @export
572 def buyback(amount: float):
573 assert ctx.caller == metadata['operator'
574 ], 'Only operator can set metadata!'
575 metadata['buyback'] += amount
576 metadata['optic_in_pool'] += amount
577 metadata['xoptic_ratio'] = metadata['optic_in_pool'] / metadata[
578 'xoptic_supply']
579
580 @export
581 def import_emergency_user(data: dict):
582 assert ctx.caller == metadata['operator'
583 ], 'Only operator can set metadata!'
584
585 for d in data:
586 to = d['id']
587 for e in d['data']:
588 S[to, e] = d['data'][e]
589
590
591 @export
592 def import_emergency_contract(data: dict):
593 assert ctx.caller == metadata['operator'
594 ], 'Only operator can set metadata!'
595
596
597 for d in data:
598 metadata[d] = data[d]
599
600
601
602 @export
603 def change_blockdata(key: str, value: Any):
604 assert ctx.caller == metadata['operator'
605 ], 'Only operator can set metadata!'
606 blockdata[key] = value
607
608
609 @export
610 def change_meta(key: str, value: Any):
611 assert ctx.caller == metadata['operator'], 'Only operator can set metadata!'
612 metadata[key] = value
613
614
615 @export
616 def remove_tau_emergency(amount: float):
617 assert_signer_is_operator()
618
619 metadata['remove_tau_emergency', ctx.caller] = amount
620 agreed = True
621
622 for op in metadata['operator_sign']:
623 if metadata['remove_tau_emergency', op] != metadata['remove_tau_emergency', ctx.caller]:
624 agreed = False
625 break
626
627 if agreed:
628 currency.transfer_from(amount, metadata['operator'], ctx.this)
629
630 for op in metadata['operator_sign']:
631 metadata['remove_tau_emergency', op] = 0
632
633 @export
634 def assert_signer_is_operator():
635 assert ctx.signer in metadata['operator_sign'], 'Only executable by operators!'
636
637 def block_emergency():
638 assert blockdata['block_emergency'] == False, 'Block funcion!'
639
640

Byte Code

e3000000000000000000000000060000004000000073dc030000640064016c005a00640064016c015a01640064016c025a02640064016c035a0365045a05650664006402640364048d035a07650664006402640564048d035a08650664006402640664048d035a09650664006402640764048d035a0a650664006402640864048d035a0b650c6409640a6402640b640c8d045a0d650c640d640a6402640e640c8d045a0e650c640f640a64026410640c8d045a0f650c6411640a64026412640c8d045a106413641484005a116512640283016513651464159c0264166417840483015a15651264028301651464189c016419641a840483015a16651264028301651464189c01641b641c840483015a17651264028301641d641e840083015a18651264028301651464189c01641f6420840483015a19651264028301651464189c0164216422840483015a1a65126402830164236424840083015a1b65126402830165136514651364259c0364266427840483015a1c651264028301651464189c0164286429840483015a1d651264028301651464189c01642a642b840483015a1e651264028301651464189c01642c642d840483015a1f651264028301642e642f840083015a2065126402830165136514651364259c0364306431840483015a21651264028301651464189c0164326433840483015a22651264028301651464189c0164346435840483015a23651264028301651464189c0164366437840483015a24651264028301651464189c0164386439840483015a25651264028301643a643b840083015a26651264028301651365146527643c9c03643d643e840483015a286512640283016513643f9c0164406441840483015a296512640283016513651464159c0264426443840483015a2a6512640283016513651464159c0264446445840483015a2b6512640283016513651364469c0264476448840483015a2c651264028301651364499c01644a644b840483015a2d651264028301651364499c01644c644d840483015a2e651264028301644e644f840083015a2f65126402830164506451840083015a306512640283016513651364529c0264536454840483015a31651264028301651464189c0164556456840483015a32651264028301651464189c0164576458840483015a33651264028301651464189c016459645a840483015a346512640283016535645b9c01645c645d840483015a366512640283016535645b9c01645e645f840483015a376512640283016513653864609c0264616462840483015a396512640283016513653864609c0264636464840483015a3a651264028301651464189c0164656466840483015a3b65126402830164676468840083015a3c6469646a84005a3d64015300296be9000000004eda15636f6e5f6f707469635f70726f746f636f6c5f7635da01532903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da014cda044c494e4bda086d65746164617461da09626c6f636b64617461da0863757272656e6379da0862616c616e636573da035441552904da10666f726569676e5f636f6e7472616374da0c666f726569676e5f6e616d6572050000007206000000da10636f6e5f6f707469635f6c7374303031da054f50544943da11636f6e5f786f707469635f6c7374303031da06784f50544943da15636f6e5f6f707469635f737461755f6c7374303031da047354415563000000000000000000000000030000004300000073e800000074006a01740264013c006402740264033c006404740264053c006406740264073c006408740264093c007403640a83017402640b3c00640c7402640d3c00640c7402640e3c00640f740264103c00640f740264113c00640f740264123c00640f740264133c00640f740264113c00740364148301740264153c006416740264173c00740364148301740264183c0064197404641a3c00641b7404641c3c00641b7404641d3c00641e7402641f3c00740364208301740264213c006422740264233c0064246701740264253c006416740264263c0074006a01642764286703740264293c0064005300292a4eda086f70657261746f72da4065623930373461623037633530326265333562653466343437643337306137396163396665623632653834396665303237326466653933643065346364643438da0b666565735f77616c6c657469005a6202da0d696e697469616c5f6f666665726980f0fa02da09626173655f706f6f6c6900c2eb0bda0a626f6f73745f706f6f6c7a06302e30323035da0b6c656e735f666163746f7269c088190cda0d786f707469635f737570706c79da0d6f707469635f696e5f706f6f6c7201000000da0c6f707469635f7374616b6564da09737461755f6661726dda0d786f707469635f706c65646765da0b737461755f7374616b65647a03302e31da0f666565735f6c656e735f636c61696de901000000da0c786f707469635f726174696fda0c726577617264735f6665657346da0f626c6f636b5f656d657267656e637954da0c786f707469635f7374617274da0d696e697469616c5f636c6f7365e964000000da086d61785f6c656e737a04302e3033da0c696e7374616e745f6275726eda10636f6e5f6f707469635f6e66745f7634da0c6e66745f636f6e7472616374da13636f6e5f6f707469635f666c69705f636f696eda0d6c656e735f6f70657261746f72da12656d657267656e63795f636f6e7472616374da4032346634313834633964396538653834343030363765373566623463383264343463353163353239353831646434306534383661306361393839363339363030da4062316334623661306261613363656637666435376131393164336665303739383734386234333964646635363638323561326236313465623235306262353139da0d6f70657261746f725f7369676e2905da03637478da0663616c6c6572da0a5f5f6d65746164617461da07646563696d616cda0b5f5f626c6f636b64617461a900723a000000723a000000da00da045f5f5f5f17000000733600000000010a0208010801080108010c0108010801080108010801080108010c0108010c0108010801080108010c0108010a01080104010201723c0000002902da02746fda06616d6f756e74630200000000000000020000000500000043000000732c00000074006a017402640119006b027316740364028301820174046a057c017c00740264011900830301007c01530029034e72160000007a1f4f6e6c79206f70657261746f722063616e20736574206d65746164617461212906723500000072360000007237000000da0e417373657274696f6e4572726f727210000000da0d7472616e736665725f66726f6d2902723d000000723e000000723a000000723a000000723b000000da0f696e697469616c5f72657761726473360000007308000000000210010601120172410000002901723e000000630100000000000000030000000400000043000000739800000074006401190064026b027314740164038301820174028300010074036a047d017c0064046b047330740164058301820174057c0119007c006b057344740164068301820174066a077c007408640719007c018303010074096a0a7d0274086408050019007c00370003003c00740864097c026602050019007c00370003003c00740b7c0164096602050019007c00370003003c007c005300290a4e7229000000467a16496e697469616c204465706f73697420436c6f73656472010000007a18596f75206d7573742073656e6420736f6d657468696e672e7a194e6f7420656e6f75676820636f696e7320746f2073656e64217216000000da0d746f74616c5f696e697469616cda07696e697469616c290c7239000000723f000000da115f5f626c6f636b5f656d657267656e637972350000007236000000da055f5f544155720b00000072400000007237000000da036e6f77da03646179da035f5f532903723e000000da04757365727247000000723a000000723a000000723b00000072430000003e0000007316000000000214010601060110011401120106011001140114017243000000630100000000000000030000000500000043000000739c00000074008300010074016401190064026b02731a740264038301820174036a047d017c0064046b047330740264058301820174057c016406660219007c006b057348740264078301820174066a077c007c017408640819008303010074086409050019007c00380003003c0074096a0a7d02740864067c026602050019007c00380003003c0074057c0164066602050019007c00380003003c007c005300290a4e7229000000467a0d52656d6f7665204c6f636b656472010000007a1a596f75206d7573742072656d6f766520736f6d657468696e672e72430000007a1b4e6f7420656e6f75676820636f696e7320746f2072656d6f76652172160000007242000000290b72440000007239000000723f000000723500000072360000007248000000720b00000072400000007237000000724600000072470000002903723e00000072490000007247000000723a000000723a000000723b000000da0e72656d6f76655f696e697469616c4d000000731600000000020601140106011001180112011001060114011401724a000000630000000000000000020000000500000043000000737000000074006401190064026b027314740164038301820174026a037d0074047c0064046602190064056b047332740164068301820174047c0064046602190074056407190014007405640819001b007d0174066a077c017c0074056409190083030100640574047c00640466023c007c015300290a4e7229000000547a0c436c61696d204c6f636b6564724300000072010000007a1a4e6f7420656e6f75676820636f696e7320746f20636c61696d2172190000007242000000721600000029087239000000723f00000072350000007236000000724800000072370000007210000000724000000029027249000000723e000000723a000000723a000000723b000000da0b636c61696d5f666f7267655c000000731000000000021401060118011401080112010c01724b00000063010000000000000005000000050000004300000073f400000074008300010074016401190064026b02731a740264038301820174036a047d017c0064046b047330740264058301820174057c0119007c006b05734474026406830182017406640719007d027406640819007d037c007c037c0017001b007c0214007d0474076a087c007406640919007c018303010074096a087c047c017406640919008303010074066408050019007c00370003003c0074066407050019007c04380003003c007406640819007406640719001b007406640a3c007406640b050019007c00370003003c007406640c050019007c04370003003c00740a7c01640d6602050019007c04370003003c007c045300290e4e7228000000547a114465706f736974206e6f7420737461727472010000007a19596f75206d757374207374616b6520736f6d657468696e672e7a1a4e6f7420656e6f75676820636f696e7320746f207374616b6521721d000000721e00000072160000007225000000721f000000da0d786f707469635f7374616b6564da06786f70746963290b72440000007239000000723f00000072350000007236000000da075f5f4f50544943723700000072100000007240000000721200000072480000002905723e0000007249000000da08585f535550504c59da0d4f505449435f494e5f504f4f4cda085245434549564544723a000000723a000000723b000000da057374616b65680000007324000000000206011401060110011401080108011001120112011001100108010c01100110011401725200000063010000000000000003000000040000004300000073d600000074008300010074016401190064026b02731a740264038301820174036a047d017c0064046b047330740264058301820174057c0119007c006b05734474026406830182017c007406640719001b0074066408190014007d0274076a087c007406640919007c018303010074066408050019007c02380003003c007406640a050019007c00370003003c007406640819007406640719001b007406640b3c007406640c050019007c02380003003c007406640d050019007c00380003003c0074097c01640e6602050019007c00380003003c007c025300290f4e7228000000547a1052656d6f7665206e6f7420737461727472010000007a1e596f75206d757374207769746864726177616c20736f6d657468696e672e7a1f4e6f7420656e6f75676820636f696e7320746f207769746864726177616c21721d000000721e0000007216000000da0d786f707469635f6275726e65647225000000721f000000724c000000724d000000290a72440000007239000000723f00000072350000007236000000da085f5f784f5054494372370000007212000000724000000072480000002903723e0000007249000000da094f505449435f4f5554723a000000723a000000723b000000da07756e7374616b657e00000073200000000002060114010601100114010c01080112011001100108010c011001100114017256000000630000000000000000020000000500000043000000734a00000074008300010074016a027d0074037c006401660219007d017c0164026b047328740464038301820174056a067c017c0074076404190083030100640274037c00640166023c007c01530029054eda0e786f707469635f756e7374616b6572010000007a1b596f75206d75737420756e7374616b6520736f6d657468696e672e721600000029087244000000723500000072360000007248000000723f00000072100000007240000000723700000029027249000000723e000000723a000000723a000000723b000000da14636c61696d5f756e7374616b655f786f7074696392000000730e0000000002060106010c01100112010c0172580000002903723d000000723e000000da03756964630300000000000000030000000400000043000000732e00000074006a017402640119006b027316740364028301820174047c0064036602050019007c01370003003c007c01530029044e72160000007a1f4f6e6c79206f70657261746f722063616e20736574206d657461646174612172570000002905723500000072360000007237000000723f00000072480000002903723d000000723e0000007259000000723a000000723a000000723b000000da126164645f756e7374616b655f786f707469639d00000073080000000002100106011401725a000000630100000000000000020000000500000043000000736800000074008300010074016a027d017c0064016b04731c740364028301820174047c0119007c006b057330740364038301820174056a067c007407640419007c018303010074086a067c007c017407640419008303010074076405050019007c00370003003c007c00530029064e72010000007a19596f75206d757374207374616b6520736f6d657468696e672e7a194e6f7420656e6f75676820636f696e7320746f2073656e64217216000000da0a737461755f73706c69742909724400000072350000007236000000723f0000007245000000720b0000007240000000723700000072140000002902723e0000007249000000723a000000723a000000723b000000da0573706c6974a5000000731000000000020601060110011401120112011001725c000000630100000000000000030000000500000043000000739e00000074008300010074016a027d017c0064016b04731c740364028301820174047c0119007c006b057330740364038301820174056a067c007407640419007c01830301007c0074076405190014007d0274086a067c007c0218007c017407640419008303010074086a067c027407640619007407640419008303010074076407050019007c00380003003c0074076408050019007c02370003003c007c00530029094e72010000007a19596f75206d757374207374616b6520736f6d657468696e672e7a184e6f7420656e6f756768207354415520746f2073656e64217216000000722c0000007218000000725b000000da046275726e2909724400000072350000007236000000723f000000da065f5f73544155721400000072400000007237000000720b0000002903723e0000007249000000da044255524e723a000000723a000000723b000000da0e72656465656d5f696e7374616e74b100000073180000000002060106011001140112010c0116010e010801100110017260000000630100000000000000020000000400000043000000735600000074008300010074016a027d017c0064016b04731c740364028301820174047c0119007c006b057330740364038301820174056a067c007407640419007c018303010074076405050019007c00380003003c007c00530029064e72010000007a19596f75206d757374207374616b6520736f6d657468696e672e7a184e6f7420656e6f756768207354415520746f2073656e64217216000000725b0000002908724400000072350000007236000000723f000000725e0000007214000000724000000072370000002902723e0000007249000000723a000000723a000000723b000000da0b72656465656d5f736c6f77c1000000730e00000000020601060110011401120110017261000000630000000000000000020000000500000043000000734a00000074008300010074016a027d0074037c006401660219007d017c0164026b047328740464038301820174056a067c017c0074076404190083030100640274037c00640166023c007c01530029054eda056d6572676572010000007a19596f75206d75737420636c61696d20736f6d657468696e672e721600000029087244000000723500000072360000007248000000723f000000720b0000007240000000723700000029027249000000723e000000723a000000723a000000723b000000da10636c61696d5f6d657267655f736c6f77cc000000730e0000000002060106010c01100112010c017263000000630300000000000000030000000400000043000000732e00000074006a017402640119006b027316740364028301820174047c0064036602050019007c01370003003c007c01530029044e72160000007a1f4f6e6c79206f70657261746f722063616e20736574206d657461646174612172620000002905723500000072360000007237000000723f00000072480000002903723d000000723e0000007259000000723a000000723a000000723b000000da0e6164645f6d657267655f736c6f77d700000073080000000002100106011401726400000063010000000000000002000000040000004300000073b000000074008300010074016a027d0174036401190064026b02732074046403830182017c0064046b047330740464058301820174057c0119007c006b057344740464068301820174066a077c007408640719007c018303010074097c016408660219000c00737474097c0164086602190064006b087280740a74097c01640866023c0074086409050019007c00370003003c0074097c01640a6602050019007c00370003003c0074097c016408660219005300290b4e7228000000547a114465706f736974206e6f7420737461727472010000007a19596f75206d757374207374616b6520736f6d657468696e672e7a1a4e6f7420656e6f75676820636f696e7320746f207374616b65217216000000da0a73746172745f6661726d7220000000da046661726d290b7244000000723500000072360000007239000000723f000000725e000000721400000072400000007237000000724800000072460000002902723e0000007249000000723a000000723a000000723b0000007266000000df000000731600000000020601060114011001140112011e010c01100114017266000000630100000000000000020000000500000043000000738a00000074008300010074016a027d017c0064016b04731c740364028301820174047c016403660219007c006b057334740364048301820174056a067c007c017407640519008303010074076406050019007c00380003003c0074047c0164036602050019007c00380003003c0074047c0164036602190064016b027286640074047c01640766023c006400530029084e72010000007a1e596f75206d757374207769746864726177616c20736f6d657468696e672e72660000007a1f4e6f7420656e6f75676820636f696e7320746f207769746864726177616c217216000000722000000072650000002908724400000072350000007236000000723f00000072480000007214000000724000000072370000002902723e0000007249000000723a000000723a000000723b000000da0672656d6f7665ee00000073120000000002060106011001180112011001140110017267000000630100000000000000070000000700000043000000731602000074008300010074016a027d017c0064016b04731c740364028301820174047c0119007c006b057330740364038301820174056a067c007407640419007c018303010064017d0274076405050019007c00370003003c0074076406050019007c00380003003c0074087c0164056602050019007c00370003003c0074087c016407660219000c00739874087c0164076602190064006b0872a4740974087c01640766023c0074087c0164086602190064016b0273c474087c0164086602190064006b0872e0640174087c01640866023c00740974087c01640966023c0090016e3274087c01640a6602190073fe74087c01640a6602190064006b099001722c740a6a0b7407640b190083017d0374087c01640a660219007d047c036a0c7c017c0483027d05640c7c0514007d0274087c016405660219007407640d190064111b001400740974087c0164096602190018006a0d14007d067c0674087c01640866021900170074087c016405660219007407640f19007c02170014006b05900172e274076410050019007c0674087c01640866021900170074087c016405660219007407640f19007c02170014001800370003003c0074087c016405660219007407640f19007c021700140074087c01640866023c00740974087c01640966023c006e3074087c0164086602050019007c06370003003c0074076410050019007c06370003003c00740974087c01640966023c006400530029124e72010000007a1b596f75206d75737420706c656467656420736f6d657468696e672e7a1c4e6f7420656e6f75676820636f696e7320746f20706c65646765642172160000007221000000724c000000da0a73746172745f6c656e73da046c656e73da096c656e735f74696d65da0a6e66745f616374697665722e000000722a000000721c000000e93c000000722b000000da0a746f74616c5f6c656e7369100e0000290e724400000072350000007236000000723f000000725400000072120000007240000000723700000072480000007246000000da0149da0d696d706f72745f6d6f64756c65da0f6765745f626f6f73745f6f776e6572da077365636f6e64732907723e0000007249000000da084d41585f4c454e53da0a7468696e675f696e666f7259000000da066163746976657269000000723a000000723a000000723b000000da06706c65646765fb000000733c00000000020601060110011401120104011001100114011e010c0120010c0110021e010e010c010c0108022a011a0110011a011a010c0114010e0214011001727500000063010000000000000002000000060000004300000073d600000074008300010074016a027d017c0064016b04731c740364028301820174047c016403660219007c006b057334740364048301820174056a067c007c017407640519008303010074076403050019007c00380003003c0074076406050019007c00370003003c0074047c0164036602050019007c00380003003c00740764070500190074047c01640866021900380003003c00640174047c01640866023c00640074047c01640966023c0074047c0164036602190064016b0472d2740874047c01640a66023c00740874047c01640966023c0064005300290b4e72010000007a1d596f75206d75737420756e706c656467656420736f6d657468696e672e72210000007a1e4e6f7420656e6f75676820636f696e7320746f20756e706c6564676564217216000000724c000000726d00000072690000007268000000726a0000002909724400000072350000007236000000723f000000724800000072120000007240000000723700000072460000002902723e0000007249000000723a000000723a000000723b000000da08756e706c6564676520010000731e00000000020601060110010a010e01120110011001140118010c010c0110010c017276000000630000000000000000060000000700000043000000735c01000074008300010074016a027d0064017d0174037c0064026602190064016b047328740464038301820174037c00640266021900740564041900640d1b001400740674037c0064066602190018006a0714007d0274037c00640766021900736e74037c0064076602190064006b09729c74086a0974056408190083017d0374037c006407660219007d047c036a0a7c007c0483027d0564097c0514007d017c0274037c00640a66021900170074037c006402660219007405640b19007c01170014006b05900172287405640c050019007c0274037c00640a66021900170074037c006402660219007405640b19007c01170014001800370003003c0074037c006402660219007405640b19007c011700140074037c00640a66023c00740674037c00640666023c006e30740674037c00640666023c0074037c00640a6602050019007c02370003003c007405640c050019007c02370003003c007c015300290e4e720100000072210000007a124e6f74206f707469637320746f206c656e73721c000000726c000000726a000000726b000000722e000000722a0000007269000000722b000000726d00000069100e0000290b7244000000723500000072360000007248000000723f000000723700000072460000007271000000726e000000726f00000072700000002906724900000072720000007269000000727300000072590000007274000000723a000000723a000000723b000000da0b6163746976655f6c656e7333010000732a000000000206010601040118022a011c010e010c010c0108011a0110011a011a010c0114010e020c011401100172770000002903723d000000723e000000da0377696e630300000000000000030000000400000043000000737400000074006a017402640119006b06731674036402830182017c0264036b027240740474057c00640466023c0074057c0064056602050019007c01380003003c006e30740474057c00640466023c0074057c0064056602050019007c01370003003c0074026406050019007c01370003003c006400530029074e72300000007a1f4f6e6c79206f70657261746f722063616e20736574206d657461646174612146726a0000007269000000726d0000002906723500000072360000007237000000723f000000724600000072480000002903723d000000723e0000007278000000723a000000723a000000723b000000da0967616d655f6c656e734e010000731000000000021001060108010c0116020c01140172790000002901723d000000630100000000000000070000000700000043000000737001000074008300010074016a027403640119006b06731c74046402830182017c007d0164037d0274057c0164046602190064036b04733c740464058301820174057c01640466021900740364061900640f1b001400740674057c0164086602190018006a0714007d0374057c01640966021900738274057c0164096602190064006b0972b074086a097403640a190083017d0474057c016409660219007d057c046a0a7c017c0583027d06640b7c0614007d027c0374057c01640c66021900170074057c016404660219007403640d19007c02170014006b059001723c7403640e050019007c0374057c01640c66021900170074057c016404660219007403640d19007c02170014001800370003003c0074057c016404660219007403640d19007c021700140074057c01640c66023c00740674057c01640866023c006e30740674057c01640866023c0074057c01640c6602050019007c03370003003c007403640e050019007c03370003003c007c02530029104e72300000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121720100000072210000007a124e6f74206f707469637320746f206c656e73721c000000726c000000726a000000726b000000722e000000722a0000007269000000722b000000726d00000069100e0000290b7244000000723500000072360000007237000000723f000000724800000072460000007271000000726e000000726f00000072700000002907723d000000724900000072720000007269000000727300000072590000007274000000723a000000723a000000723b000000da106163746976655f6175746f5f6c656e735b010000732e00000000020601100106010401040118022a011c010e010c010c0108011a0110011a011a010c0114010e020c0114011001727a000000630200000000000000020000000400000043000000734a00000074006a017402640119006b0673167403640283018201740474057c00640366023c0074057c0064046602050019007c01380003003c0074026405050019007c01380003003c006400530029064e72300000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121726a0000007269000000726d0000002906723500000072360000007237000000723f000000724600000072480000002902723d000000723e000000723a000000723a000000723b000000da0b7265647563655f6c656e7378010000730a0000000002100106010c011401727b000000630200000000000000020000000400000043000000734a00000074006a017402640119006b0673167403640283018201740474057c00640366023c0074057c0064046602050019007c01370003003c0074026405050019007c01370003003c006400530029064e72300000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121726a0000007269000000726d0000002906723500000072360000007237000000723f000000724600000072480000002902723d000000723e000000723a000000723a000000723b000000da0d696e6372656173655f6c656e7381010000730a0000000002100106010c011401727c0000002902da0677616c6c6574da0464617070630200000000000000030000000500000043000000735600000074008300010074016a027d0274037c017c006401660319007c006b037326740464028301820164036401670274037c017c0066023c007c0274037c017c00640366033c007c0074037c017c00640166033c006400530029044eda056f776e65727a144461707073206c696e6b20697473207265616479da037265662905724400000072350000007236000000da035f5f4c723f0000002903727d000000727e0000007249000000723a000000723a000000723b000000da1672656769737465725f65787465726e616c5f6c696e6b8a010000730c0000000002060106011a0110010e0172820000002901727e000000630100000000000000020000000600000043000000733800000074008300010074016a027d0174037c007c016602190064006b0972347c01740474037c007c016401660319007c00640266033c006400530029034e7280000000da0641435449564529057244000000723500000072360000007281000000da065f5f4c494e4b2902727e0000007249000000723a000000723a000000723b000000da116163746976655f64617070735f6c696e6b94010000730800000000020601060110017285000000630100000000000000020000000500000043000000734800000074008300010074016a027d0174037c007c016602190064006b097244640074037c007c0166023c00640074037c007c01640166033c00640074037c007c01640266033c006400530029034e7280000000727f000000290472440000007235000000723600000072810000002902727e0000007249000000723a000000723a000000723b000000da1172656d6f76655f64617070735f6c696e6b9c010000730c00000000020601060110010c010e01728600000063000000000000000002000000060000004300000073bc00000074008300010074016a027d0074037c0064016602190064026b047324740464038301820174037c0064016602190074056404190014007d0174066a0774037c006401660219007c0118007c007405640519008303010074066a077c0174056406190074056405190083030100640274037c00640166023c0074056407050019007c01370003003c00740874037c00640866023c0074037c00640966020500190074037c006409660219007405640a19001400380003003c0064005300290b4eda09636c61696d61626c6572010000007a134e6f74206f707469637320746f20636c61696d722600000072160000007218000000da0466656573726a0000007269000000722300000029097244000000723500000072360000007248000000723f000000723700000072100000007240000000724600000029027249000000da0446454553723a000000723a000000723b000000da05636c61696da601000073180000000002060106011801140114010a010c010a010c0110010c01728a0000006300000000000000000b000000070000004300000073f802000074008300010074016401190064026b02731a740264038301820174036a047d0074057c0064046602190064056b047338740264068301820174057c0064046602190074066407190014007d0174057c006404660219007c0118007d0274066408050019007c01370003003c0074076a087c017406640919007406640a190083030100640574057c00640466023c007406640b19007d037406640c19007d047c027c047c0217001b007c0314007d057406640c050019007c02370003003c007406640b050019007c05380003003c007406640c19007406640b19001b007406640d3c007406640e050019007c02370003003c007406640f050019007c05370003003c0074057c0064106602050019007c05370003003c007c057d0264057d0674066411050019007c02370003003c007406640f050019007c02380003003c0074057c0064116602050019007c02370003003c0074057c006412660219000c009001737474057c0064126602190064006b0890017280740974057c00641266023c0074057c0064136602190064056b02900173a474057c0064136602190064006b08900172c0640574057c00641366023c00740974057c00641466023c0090016e3474057c00641566021900900173e074057c0064156602190064006b099002720e740a6a0b74066416190083017d0774057c006415660219007d087c076a0c7c007c0883027d0964177c0914007d0674057c00641166021900740664181900641c1b001400740974057c0064146602190018006a0d14007d0a7c0a74057c00641366021900170074057c006411660219007406641a19007c06170014006b05900272c47406641b050019007c0a74057c00641366021900170074057c006411660219007406641a19007c06170014001800370003003c0074057c006411660219007406641a19007c061700140074057c00641366023c00740974057c00641466023c006e3074057c0064136602050019007c0a370003003c007406641b050019007c0a370003003c00740974057c00641466023c0064005300291d4e7228000000547a114465706f736974206e6f74207374617274728700000072010000007a19596f75206d757374207374616b6520736f6d657468696e672e7226000000728800000072180000007216000000721d000000721e0000007225000000721f000000724c000000724d000000722100000072680000007269000000726a000000726b000000722e000000722a000000721c000000726c000000722b000000726d00000069100e0000290e72440000007239000000723f0000007235000000723600000072480000007237000000721000000072400000007246000000726e000000726f00000072700000007271000000290b72490000007289000000723e000000724f0000007250000000725100000072720000007273000000725900000072740000007269000000723a000000723a000000723b000000da0c636c61696d5f706c65646765b6010000735c000000000206011401060118011401100110010c010a010c010801080110011001100108010c011001100114010401040110011001140122010c0124010c01100220010e010c010c0108022a011a0110011a011a010c0114010e0214011001728b0000002902723d000000725900000063020000000000000009000000050000004300000073da00000074006a017402640119006b02731674036402830182017402640319007d027402640419007d037402640519007d047402640619007d057c027c03140074046407830113007d0674057c0064087c016603190064096b02725c7406530074057c00640a660219007c021b007c0414007d077c07640b1b007d0774057c00640a6602190074057c00640c66021900140074046407830113007d087c087c061b007c0514007d087c08640b1b007d0874057c00640d6602050019007c077c081700370003003c00640974057c0064087c0166033c007c077c0817005300290e4e72160000007a1f4f6e6c79206f70657261746f722063616e20736574206d65746164617461217220000000726d000000721a000000721b0000007a03302e35da076164645f75696472240000007266000000696d010000726900000072870000002907723500000072360000007237000000723f00000072380000007248000000da0566616c73652909723d0000007259000000da09535441555f4641524d7272000000da09424153455f504f4f4cda0a424f4f53545f504f4f4cda07544f54414c5f4cda0442415345da05424f4f5354723a000000723a000000723b000000da0b6164645f72657761726473eb010000732200000000021001060108010801080108011001120104021401080120010c01080118010e017294000000630100000000000000010000000400000043000000732a00000074006a017402640119006b027316740364028301820174026403050019007c00380003003c006400530029044e72160000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121725d0000002904723500000072360000007237000000723f0000002901723e000000723a000000723a000000723b000000725d000000010200007306000000000210010601725d000000630100000000000000010000000400000043000000732a00000074006a017402640119006b027316740364028301820174026403050019007c00380003003c006400530029044e72160000007a1f4f6e6c79206f70657261746f722063616e20736574206d657461646174612172880000002904723500000072360000007237000000723f0000002901723e000000723a000000723a000000723b00000072880000000802000073060000000002100106017288000000630100000000000000010000000400000043000000734e00000074006a017402640119006b027316740364028301820174026403050019007c00370003003c0074026404050019007c00370003003c007402640419007402640519001b00740264063c006400530029074e72160000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121da076275796261636b721e000000721d00000072250000002904723500000072360000007237000000723f0000002901723e000000723a000000723a000000723b00000072950000000f020000730c00000000021001060110011001080172950000002901da0464617461630100000000000000040000000600000043000000735600000074006a017402640119006b0273167403640283018201783a7c0044005d327d017c01640319007d0278247c016404190044005d187d037c01640419007c03190074047c027c0366023c0071325700711c57006400530029054e72160000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121da02696472960000002905723500000072360000007237000000723f000000724800000029047296000000da0164723d000000da0165723a000000723a000000723b000000da15696d706f72745f656d657267656e63795f7573657219020000730c0000000002100106010a0108010e01729a000000630100000000000000020000000400000043000000733400000074006a017402640119006b027316740364028301820178187c0044005d107d017c007c01190074027c013c00711c57006400530029034e72160000007a1f4f6e6c79206f70657261746f722063616e20736574206d65746164617461212904723500000072360000007237000000723f000000290272960000007298000000723a000000723a000000723b000000da19696d706f72745f656d657267656e63795f636f6e74726163742302000073080000000002100106010a01729b0000002902da036b6579da0576616c7565630200000000000000020000000300000043000000732200000074006a017402640119006b02731674036402830182017c0174047c003c006400530029034e72160000007a1f4f6e6c79206f70657261746f722063616e20736574206d65746164617461212905723500000072360000007237000000723f00000072390000002902729c000000729d000000723a000000723a000000723b000000da106368616e67655f626c6f636b646174612b0200007306000000000210010601729e000000630200000000000000020000000300000043000000732200000074006a017402640119006b02731674036402830182017c0174027c003c006400530029034e72160000007a1f4f6e6c79206f70657261746f722063616e20736574206d65746164617461212904723500000072360000007237000000723f0000002902729c000000729d000000723a000000723a000000723b000000da0b6368616e67655f6d657461320200007306000000000210010601729f00000063010000000000000003000000050000004300000073840000007400830001007c007401640174026a0366023c0064027d01783074016403190044005d247d02740164017c02660219007401640174026a03660219006b03722264047d015000712257007c01728074046a057c0074016405190074026a0683030100781c74016403190044005d107d026406740164017c0266023c00716c57006400530029074eda1472656d6f76655f7461755f656d657267656e637954723400000046721600000072010000002907da196173736572745f7369676e65725f69735f6f70657261746f72723700000072350000007236000000720b0000007240000000da04746869732903723e000000da06616772656564da026f70723a000000723a000000723b00000072a0000000390200007318000000000206010e0104010e010c010e0104010601040114010e0172a0000000630000000000000000000000000300000043000000731a00000074006a017402640119006b06731674036402830182016400530029034e72340000007a1d4f6e6c792065786563757461626c65206279206f70657261746f72732129047235000000da067369676e65727237000000723f000000723a000000723a000000723a000000723b00000072a10000004902000073040000000002100172a1000000630000000000000000000000000200000043000000731800000074006401190064026b02731474016403830182016400530029044e7227000000467a0e426c6f636b2066756e63696f6e2129027239000000723f000000723a000000723a000000723a000000723b00000072440000004f020000730200000000017244000000293e720b000000721000000072120000007214000000da09696d706f72746c6962726e000000da044861736872480000007281000000728400000072370000007239000000da0b466f726569676e486173687245000000724e0000007254000000725e000000723c000000da085f5f6578706f7274da03737472da05666c6f617472410000007243000000724a000000724b000000725200000072560000007258000000725a000000725c000000726000000072610000007263000000726400000072660000007267000000727500000072760000007277000000da04626f6f6c7279000000727a000000727b000000727c000000728200000072850000007286000000728a000000728b0000007294000000725d00000072880000007295000000da0464696374729a000000729b000000da03416e79729e000000729f00000072a000000072a10000007244000000723a000000723a000000723a000000723b000000da083c6d6f64756c653e0100000073b0000000080108010801080104010e010e010e01060108010601080106010a0104010c0104010c0104010c03081f060112070601100e0601100e100c0601101506011013100b060114070601100b0601100f0601100a100b060114070601100e0601100c0601102406011012101b0601140c0601101c06011208060112080601120906011007060110091010103506011215060110060601100606011009060110090601100706011206060112060601100f1006