@keep-network/tbtc-v2 0.1.1-dev.23 → 0.1.1-dev.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/README.adoc +12 -0
  2. package/artifacts/TBTC.json +11 -10
  3. package/artifacts/TBTCToken.json +11 -10
  4. package/artifacts/VendingMachine.json +12 -11
  5. package/artifacts/solcInputs/37ed423e5330e1e70a9082eb804367e8.json +197 -0
  6. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  7. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  8. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  9. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +2 -2
  10. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  11. package/build/contracts/bridge/Bridge.sol/Bridge.json +793 -41
  12. package/build/contracts/bridge/Bridge.sol/IRelay.dbg.json +1 -1
  13. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +4 -0
  14. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.json +10 -0
  15. package/build/contracts/bridge/Frauds.sol/Frauds.dbg.json +4 -0
  16. package/build/contracts/bridge/Frauds.sol/Frauds.json +138 -0
  17. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  18. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +4 -0
  19. package/build/contracts/bridge/Wallets.sol/Wallets.json +138 -0
  20. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  21. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  22. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  23. package/contracts/bridge/BitcoinTx.sol +10 -0
  24. package/contracts/bridge/Bridge.sol +470 -156
  25. package/contracts/bridge/EcdsaLib.sol +30 -0
  26. package/contracts/bridge/Frauds.sol +531 -0
  27. package/contracts/bridge/Wallets.sol +520 -0
  28. package/package.json +20 -17
  29. package/artifacts/solcInputs/f4cbe9fa0e3015c189ba0e793fa17f51.json +0 -140
@@ -20,6 +20,11 @@
20
20
  "name": "_treasury",
21
21
  "type": "address"
22
22
  },
23
+ {
24
+ "internalType": "address",
25
+ "name": "_ecdsaWalletRegistry",
26
+ "type": "address"
27
+ },
23
28
  {
24
29
  "internalType": "uint256",
25
30
  "name": "_txProofDifficultyFactor",
@@ -109,6 +114,158 @@
109
114
  "name": "DepositsSwept",
110
115
  "type": "event"
111
116
  },
117
+ {
118
+ "anonymous": false,
119
+ "inputs": [
120
+ {
121
+ "indexed": false,
122
+ "internalType": "bytes20",
123
+ "name": "walletPublicKeyHash",
124
+ "type": "bytes20"
125
+ },
126
+ {
127
+ "indexed": false,
128
+ "internalType": "bytes32",
129
+ "name": "sighash",
130
+ "type": "bytes32"
131
+ }
132
+ ],
133
+ "name": "FraudChallengeDefeatTimedOut",
134
+ "type": "event"
135
+ },
136
+ {
137
+ "anonymous": false,
138
+ "inputs": [
139
+ {
140
+ "indexed": false,
141
+ "internalType": "uint256",
142
+ "name": "newFraudChallengeDefeatTimeout",
143
+ "type": "uint256"
144
+ }
145
+ ],
146
+ "name": "FraudChallengeDefeatTimeoutUpdated",
147
+ "type": "event"
148
+ },
149
+ {
150
+ "anonymous": false,
151
+ "inputs": [
152
+ {
153
+ "indexed": false,
154
+ "internalType": "bytes20",
155
+ "name": "walletPublicKeyHash",
156
+ "type": "bytes20"
157
+ },
158
+ {
159
+ "indexed": false,
160
+ "internalType": "bytes32",
161
+ "name": "sighash",
162
+ "type": "bytes32"
163
+ }
164
+ ],
165
+ "name": "FraudChallengeDefeated",
166
+ "type": "event"
167
+ },
168
+ {
169
+ "anonymous": false,
170
+ "inputs": [
171
+ {
172
+ "indexed": false,
173
+ "internalType": "uint256",
174
+ "name": "newFraudChallengeDepositAmount",
175
+ "type": "uint256"
176
+ }
177
+ ],
178
+ "name": "FraudChallengeDepositAmountUpdated",
179
+ "type": "event"
180
+ },
181
+ {
182
+ "anonymous": false,
183
+ "inputs": [
184
+ {
185
+ "indexed": false,
186
+ "internalType": "bytes20",
187
+ "name": "walletPublicKeyHash",
188
+ "type": "bytes20"
189
+ },
190
+ {
191
+ "indexed": false,
192
+ "internalType": "bytes32",
193
+ "name": "sighash",
194
+ "type": "bytes32"
195
+ },
196
+ {
197
+ "indexed": false,
198
+ "internalType": "uint8",
199
+ "name": "v",
200
+ "type": "uint8"
201
+ },
202
+ {
203
+ "indexed": false,
204
+ "internalType": "bytes32",
205
+ "name": "r",
206
+ "type": "bytes32"
207
+ },
208
+ {
209
+ "indexed": false,
210
+ "internalType": "bytes32",
211
+ "name": "s",
212
+ "type": "bytes32"
213
+ }
214
+ ],
215
+ "name": "FraudChallengeSubmitted",
216
+ "type": "event"
217
+ },
218
+ {
219
+ "anonymous": false,
220
+ "inputs": [
221
+ {
222
+ "indexed": false,
223
+ "internalType": "uint256",
224
+ "name": "newFraudNotifierRewardMultiplier",
225
+ "type": "uint256"
226
+ }
227
+ ],
228
+ "name": "FraudNotifierRewardMultiplierUpdated",
229
+ "type": "event"
230
+ },
231
+ {
232
+ "anonymous": false,
233
+ "inputs": [
234
+ {
235
+ "indexed": false,
236
+ "internalType": "uint256",
237
+ "name": "newFraudSlashingAmount",
238
+ "type": "uint256"
239
+ }
240
+ ],
241
+ "name": "FraudSlashingAmountUpdated",
242
+ "type": "event"
243
+ },
244
+ {
245
+ "anonymous": false,
246
+ "inputs": [
247
+ {
248
+ "indexed": true,
249
+ "internalType": "bytes32",
250
+ "name": "ecdsaWalletID",
251
+ "type": "bytes32"
252
+ },
253
+ {
254
+ "indexed": true,
255
+ "internalType": "bytes20",
256
+ "name": "walletPubKeyHash",
257
+ "type": "bytes20"
258
+ }
259
+ ],
260
+ "name": "NewWalletRegistered",
261
+ "type": "event"
262
+ },
263
+ {
264
+ "anonymous": false,
265
+ "inputs": [],
266
+ "name": "NewWalletRequested",
267
+ "type": "event"
268
+ },
112
269
  {
113
270
  "anonymous": false,
114
271
  "inputs": [
@@ -209,6 +366,154 @@
209
366
  "name": "VaultStatusUpdated",
210
367
  "type": "event"
211
368
  },
369
+ {
370
+ "anonymous": false,
371
+ "inputs": [
372
+ {
373
+ "indexed": false,
374
+ "internalType": "uint64",
375
+ "name": "newMinBtcBalance",
376
+ "type": "uint64"
377
+ },
378
+ {
379
+ "indexed": false,
380
+ "internalType": "uint64",
381
+ "name": "newMaxBtcBalance",
382
+ "type": "uint64"
383
+ }
384
+ ],
385
+ "name": "WalletBtcBalanceRangeUpdated",
386
+ "type": "event"
387
+ },
388
+ {
389
+ "anonymous": false,
390
+ "inputs": [
391
+ {
392
+ "indexed": true,
393
+ "internalType": "bytes32",
394
+ "name": "ecdsaWalletID",
395
+ "type": "bytes32"
396
+ },
397
+ {
398
+ "indexed": true,
399
+ "internalType": "bytes20",
400
+ "name": "walletPubKeyHash",
401
+ "type": "bytes20"
402
+ }
403
+ ],
404
+ "name": "WalletClosed",
405
+ "type": "event"
406
+ },
407
+ {
408
+ "anonymous": false,
409
+ "inputs": [
410
+ {
411
+ "indexed": false,
412
+ "internalType": "uint32",
413
+ "name": "newCreationPeriod",
414
+ "type": "uint32"
415
+ }
416
+ ],
417
+ "name": "WalletCreationPeriodUpdated",
418
+ "type": "event"
419
+ },
420
+ {
421
+ "anonymous": false,
422
+ "inputs": [
423
+ {
424
+ "indexed": false,
425
+ "internalType": "uint32",
426
+ "name": "newMaxAge",
427
+ "type": "uint32"
428
+ }
429
+ ],
430
+ "name": "WalletMaxAgeUpdated",
431
+ "type": "event"
432
+ },
433
+ {
434
+ "anonymous": false,
435
+ "inputs": [
436
+ {
437
+ "indexed": true,
438
+ "internalType": "bytes32",
439
+ "name": "ecdsaWalletID",
440
+ "type": "bytes32"
441
+ },
442
+ {
443
+ "indexed": true,
444
+ "internalType": "bytes20",
445
+ "name": "walletPubKeyHash",
446
+ "type": "bytes20"
447
+ }
448
+ ],
449
+ "name": "WalletMovingFunds",
450
+ "type": "event"
451
+ },
452
+ {
453
+ "anonymous": false,
454
+ "inputs": [
455
+ {
456
+ "indexed": true,
457
+ "internalType": "bytes32",
458
+ "name": "ecdsaWalletID",
459
+ "type": "bytes32"
460
+ },
461
+ {
462
+ "indexed": true,
463
+ "internalType": "bytes20",
464
+ "name": "walletPubKeyHash",
465
+ "type": "bytes20"
466
+ }
467
+ ],
468
+ "name": "WalletTerminated",
469
+ "type": "event"
470
+ },
471
+ {
472
+ "inputs": [
473
+ {
474
+ "internalType": "bytes32",
475
+ "name": "ecdsaWalletID",
476
+ "type": "bytes32"
477
+ },
478
+ {
479
+ "internalType": "bytes32",
480
+ "name": "publicKeyX",
481
+ "type": "bytes32"
482
+ },
483
+ {
484
+ "internalType": "bytes32",
485
+ "name": "publicKeyY",
486
+ "type": "bytes32"
487
+ }
488
+ ],
489
+ "name": "__ecdsaWalletCreatedCallback",
490
+ "outputs": [],
491
+ "stateMutability": "nonpayable",
492
+ "type": "function"
493
+ },
494
+ {
495
+ "inputs": [
496
+ {
497
+ "internalType": "bytes32",
498
+ "name": "",
499
+ "type": "bytes32"
500
+ },
501
+ {
502
+ "internalType": "bytes32",
503
+ "name": "publicKeyX",
504
+ "type": "bytes32"
505
+ },
506
+ {
507
+ "internalType": "bytes32",
508
+ "name": "publicKeyY",
509
+ "type": "bytes32"
510
+ }
511
+ ],
512
+ "name": "__ecdsaWalletHeartbeatFailedCallback",
513
+ "outputs": [],
514
+ "stateMutability": "nonpayable",
515
+ "type": "function"
516
+ },
212
517
  {
213
518
  "inputs": [],
214
519
  "name": "bank",
@@ -222,6 +527,29 @@
222
527
  "stateMutability": "view",
223
528
  "type": "function"
224
529
  },
530
+ {
531
+ "inputs": [
532
+ {
533
+ "internalType": "bytes",
534
+ "name": "walletPublicKey",
535
+ "type": "bytes"
536
+ },
537
+ {
538
+ "internalType": "bytes",
539
+ "name": "preimage",
540
+ "type": "bytes"
541
+ },
542
+ {
543
+ "internalType": "bool",
544
+ "name": "witness",
545
+ "type": "bool"
546
+ }
547
+ ],
548
+ "name": "defeatFraudChallenge",
549
+ "outputs": [],
550
+ "stateMutability": "nonpayable",
551
+ "type": "function"
552
+ },
225
553
  {
226
554
  "inputs": [],
227
555
  "name": "depositDustThreshold",
@@ -266,39 +594,200 @@
266
594
  {
267
595
  "internalType": "uint256",
268
596
  "name": "",
269
- "type": "uint256"
597
+ "type": "uint256"
598
+ }
599
+ ],
600
+ "name": "deposits",
601
+ "outputs": [
602
+ {
603
+ "internalType": "address",
604
+ "name": "depositor",
605
+ "type": "address"
606
+ },
607
+ {
608
+ "internalType": "uint64",
609
+ "name": "amount",
610
+ "type": "uint64"
611
+ },
612
+ {
613
+ "internalType": "uint32",
614
+ "name": "revealedAt",
615
+ "type": "uint32"
616
+ },
617
+ {
618
+ "internalType": "address",
619
+ "name": "vault",
620
+ "type": "address"
621
+ },
622
+ {
623
+ "internalType": "uint64",
624
+ "name": "treasuryFee",
625
+ "type": "uint64"
626
+ },
627
+ {
628
+ "internalType": "uint32",
629
+ "name": "sweptAt",
630
+ "type": "uint32"
631
+ }
632
+ ],
633
+ "stateMutability": "view",
634
+ "type": "function"
635
+ },
636
+ {
637
+ "inputs": [
638
+ {
639
+ "internalType": "uint256",
640
+ "name": "challengeKey",
641
+ "type": "uint256"
642
+ }
643
+ ],
644
+ "name": "fraudChallenges",
645
+ "outputs": [
646
+ {
647
+ "components": [
648
+ {
649
+ "internalType": "address",
650
+ "name": "challenger",
651
+ "type": "address"
652
+ },
653
+ {
654
+ "internalType": "uint256",
655
+ "name": "depositAmount",
656
+ "type": "uint256"
657
+ },
658
+ {
659
+ "internalType": "uint32",
660
+ "name": "reportedAt",
661
+ "type": "uint32"
662
+ },
663
+ {
664
+ "internalType": "bool",
665
+ "name": "resolved",
666
+ "type": "bool"
667
+ }
668
+ ],
669
+ "internalType": "struct Frauds.FraudChallenge",
670
+ "name": "",
671
+ "type": "tuple"
672
+ }
673
+ ],
674
+ "stateMutability": "view",
675
+ "type": "function"
676
+ },
677
+ {
678
+ "inputs": [],
679
+ "name": "getActiveWalletPubKeyHash",
680
+ "outputs": [
681
+ {
682
+ "internalType": "bytes20",
683
+ "name": "",
684
+ "type": "bytes20"
685
+ }
686
+ ],
687
+ "stateMutability": "view",
688
+ "type": "function"
689
+ },
690
+ {
691
+ "inputs": [],
692
+ "name": "getFraudParameters",
693
+ "outputs": [
694
+ {
695
+ "internalType": "uint256",
696
+ "name": "slashingAmount",
697
+ "type": "uint256"
698
+ },
699
+ {
700
+ "internalType": "uint256",
701
+ "name": "notifierRewardMultiplier",
702
+ "type": "uint256"
703
+ },
704
+ {
705
+ "internalType": "uint256",
706
+ "name": "challengeDefeatTimeout",
707
+ "type": "uint256"
708
+ },
709
+ {
710
+ "internalType": "uint256",
711
+ "name": "challengeDepositAmount",
712
+ "type": "uint256"
713
+ }
714
+ ],
715
+ "stateMutability": "view",
716
+ "type": "function"
717
+ },
718
+ {
719
+ "inputs": [
720
+ {
721
+ "internalType": "bytes20",
722
+ "name": "walletPubKeyHash",
723
+ "type": "bytes20"
724
+ }
725
+ ],
726
+ "name": "getWallet",
727
+ "outputs": [
728
+ {
729
+ "components": [
730
+ {
731
+ "internalType": "bytes32",
732
+ "name": "ecdsaWalletID",
733
+ "type": "bytes32"
734
+ },
735
+ {
736
+ "internalType": "bytes32",
737
+ "name": "mainUtxoHash",
738
+ "type": "bytes32"
739
+ },
740
+ {
741
+ "internalType": "uint64",
742
+ "name": "pendingRedemptionsValue",
743
+ "type": "uint64"
744
+ },
745
+ {
746
+ "internalType": "uint32",
747
+ "name": "createdAt",
748
+ "type": "uint32"
749
+ },
750
+ {
751
+ "internalType": "uint32",
752
+ "name": "moveFundsRequestedAt",
753
+ "type": "uint32"
754
+ },
755
+ {
756
+ "internalType": "enum Wallets.WalletState",
757
+ "name": "state",
758
+ "type": "uint8"
759
+ }
760
+ ],
761
+ "internalType": "struct Wallets.Wallet",
762
+ "name": "",
763
+ "type": "tuple"
270
764
  }
271
765
  ],
272
- "name": "deposits",
766
+ "stateMutability": "view",
767
+ "type": "function"
768
+ },
769
+ {
770
+ "inputs": [],
771
+ "name": "getWalletsParameters",
273
772
  "outputs": [
274
- {
275
- "internalType": "address",
276
- "name": "depositor",
277
- "type": "address"
278
- },
279
- {
280
- "internalType": "uint64",
281
- "name": "amount",
282
- "type": "uint64"
283
- },
284
773
  {
285
774
  "internalType": "uint32",
286
- "name": "revealedAt",
775
+ "name": "creationPeriod",
287
776
  "type": "uint32"
288
777
  },
289
778
  {
290
- "internalType": "address",
291
- "name": "vault",
292
- "type": "address"
779
+ "internalType": "uint64",
780
+ "name": "minBtcBalance",
781
+ "type": "uint64"
293
782
  },
294
783
  {
295
784
  "internalType": "uint64",
296
- "name": "treasuryFee",
785
+ "name": "maxBtcBalance",
297
786
  "type": "uint64"
298
787
  },
299
788
  {
300
789
  "internalType": "uint32",
301
- "name": "sweptAt",
790
+ "name": "maxAge",
302
791
  "type": "uint32"
303
792
  }
304
793
  ],
@@ -328,19 +817,53 @@
328
817
  "inputs": [
329
818
  {
330
819
  "internalType": "bytes20",
331
- "name": "",
820
+ "name": "walletPubKeyHash",
332
821
  "type": "bytes20"
822
+ },
823
+ {
824
+ "components": [
825
+ {
826
+ "internalType": "bytes32",
827
+ "name": "txHash",
828
+ "type": "bytes32"
829
+ },
830
+ {
831
+ "internalType": "uint32",
832
+ "name": "txOutputIndex",
833
+ "type": "uint32"
834
+ },
835
+ {
836
+ "internalType": "uint64",
837
+ "name": "txOutputValue",
838
+ "type": "uint64"
839
+ }
840
+ ],
841
+ "internalType": "struct BitcoinTx.UTXO",
842
+ "name": "walletMainUtxo",
843
+ "type": "tuple"
333
844
  }
334
845
  ],
335
- "name": "mainUtxos",
336
- "outputs": [
846
+ "name": "notifyCloseableWallet",
847
+ "outputs": [],
848
+ "stateMutability": "nonpayable",
849
+ "type": "function"
850
+ },
851
+ {
852
+ "inputs": [
853
+ {
854
+ "internalType": "bytes",
855
+ "name": "walletPublicKey",
856
+ "type": "bytes"
857
+ },
337
858
  {
338
859
  "internalType": "bytes32",
339
- "name": "",
860
+ "name": "sighash",
340
861
  "type": "bytes32"
341
862
  }
342
863
  ],
343
- "stateMutability": "view",
864
+ "name": "notifyFraudChallengeDefeatTimeout",
865
+ "outputs": [],
866
+ "stateMutability": "nonpayable",
344
867
  "type": "function"
345
868
  },
346
869
  {
@@ -467,6 +990,36 @@
467
990
  "stateMutability": "nonpayable",
468
991
  "type": "function"
469
992
  },
993
+ {
994
+ "inputs": [
995
+ {
996
+ "components": [
997
+ {
998
+ "internalType": "bytes32",
999
+ "name": "txHash",
1000
+ "type": "bytes32"
1001
+ },
1002
+ {
1003
+ "internalType": "uint32",
1004
+ "name": "txOutputIndex",
1005
+ "type": "uint32"
1006
+ },
1007
+ {
1008
+ "internalType": "uint64",
1009
+ "name": "txOutputValue",
1010
+ "type": "uint64"
1011
+ }
1012
+ ],
1013
+ "internalType": "struct BitcoinTx.UTXO",
1014
+ "name": "activeWalletMainUtxo",
1015
+ "type": "tuple"
1016
+ }
1017
+ ],
1018
+ "name": "requestNewWallet",
1019
+ "outputs": [],
1020
+ "stateMutability": "nonpayable",
1021
+ "type": "function"
1022
+ },
470
1023
  {
471
1024
  "inputs": [
472
1025
  {
@@ -607,6 +1160,65 @@
607
1160
  "stateMutability": "nonpayable",
608
1161
  "type": "function"
609
1162
  },
1163
+ {
1164
+ "inputs": [
1165
+ {
1166
+ "internalType": "uint256",
1167
+ "name": "",
1168
+ "type": "uint256"
1169
+ }
1170
+ ],
1171
+ "name": "spentMainUTXOs",
1172
+ "outputs": [
1173
+ {
1174
+ "internalType": "bool",
1175
+ "name": "",
1176
+ "type": "bool"
1177
+ }
1178
+ ],
1179
+ "stateMutability": "view",
1180
+ "type": "function"
1181
+ },
1182
+ {
1183
+ "inputs": [
1184
+ {
1185
+ "internalType": "bytes",
1186
+ "name": "walletPublicKey",
1187
+ "type": "bytes"
1188
+ },
1189
+ {
1190
+ "internalType": "bytes32",
1191
+ "name": "sighash",
1192
+ "type": "bytes32"
1193
+ },
1194
+ {
1195
+ "components": [
1196
+ {
1197
+ "internalType": "bytes32",
1198
+ "name": "r",
1199
+ "type": "bytes32"
1200
+ },
1201
+ {
1202
+ "internalType": "bytes32",
1203
+ "name": "s",
1204
+ "type": "bytes32"
1205
+ },
1206
+ {
1207
+ "internalType": "uint8",
1208
+ "name": "v",
1209
+ "type": "uint8"
1210
+ }
1211
+ ],
1212
+ "internalType": "struct BitcoinTx.RSVSignature",
1213
+ "name": "signature",
1214
+ "type": "tuple"
1215
+ }
1216
+ ],
1217
+ "name": "submitFraudChallenge",
1218
+ "outputs": [],
1219
+ "stateMutability": "payable",
1220
+ "type": "function"
1221
+ },
610
1222
  {
611
1223
  "inputs": [
612
1224
  {
@@ -851,40 +1463,128 @@
851
1463
  {
852
1464
  "inputs": [
853
1465
  {
854
- "internalType": "bytes20",
855
- "name": "",
856
- "type": "bytes20"
857
- }
858
- ],
859
- "name": "wallets",
860
- "outputs": [
1466
+ "internalType": "uint32",
1467
+ "name": "creationPeriod",
1468
+ "type": "uint32"
1469
+ },
861
1470
  {
862
- "internalType": "enum Bridge.WalletState",
863
- "name": "state",
864
- "type": "uint8"
1471
+ "internalType": "uint64",
1472
+ "name": "minBtcBalance",
1473
+ "type": "uint64"
865
1474
  },
866
1475
  {
867
1476
  "internalType": "uint64",
868
- "name": "pendingRedemptionsValue",
1477
+ "name": "maxBtcBalance",
869
1478
  "type": "uint64"
1479
+ },
1480
+ {
1481
+ "internalType": "uint32",
1482
+ "name": "maxAge",
1483
+ "type": "uint32"
870
1484
  }
871
1485
  ],
872
- "stateMutability": "view",
1486
+ "name": "updateWalletsParameters",
1487
+ "outputs": [],
1488
+ "stateMutability": "nonpayable",
873
1489
  "type": "function"
874
1490
  }
875
1491
  ],
876
- "bytecode": "0x6101006040523480156200001257600080fd5b5060405162004d6838038062004d68833981016040819052620000359162000233565b6200004033620001c6565b6001600160a01b0384166200009c5760405162461bcd60e51b815260206004820152601b60248201527f42616e6b20616464726573732063616e6e6f74206265207a65726f000000000060448201526064015b60405180910390fd5b6001600160a01b0380851660a0528316620000fa5760405162461bcd60e51b815260206004820152601c60248201527f52656c617920616464726573732063616e6e6f74206265207a65726f00000000604482015260640162000093565b6001600160a01b0380841660c0528216620001585760405162461bcd60e51b815260206004820152601f60248201527f547265617375727920616464726573732063616e6e6f74206265207a65726f00604482015260640162000093565b6001600160a01b0390911660e052608052505060008054613d0960a61b600160a01b600160e01b03199091161790557907d000000000000f424000000000000003e800000000000007d0600155600280546001600160401b0319166103e81790556202a30060035562000285565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200022e57600080fd5b919050565b600080600080608085870312156200024a57600080fd5b620002558562000216565b9350620002656020860162000216565b9250620002756040860162000216565b6060959095015193969295505050565b60805160a05160c05160e051614a63620003056000396000818161037501528181610b2301526117f00152600081816104ef0152818161213601526121d00152600081816103bc01528181610a9001528181610b5201528181611757015281816118280152611fbe0152600081816102f901526122660152614a636000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c806383a43428116100ee578063bdf9fca911610097578063e53c0b5511610071578063e53c0b5514610558578063e65e19d51461058b578063e95eb7a8146105cc578063f2fde38b146105e657600080fd5b8063bdf9fca914610511578063cb7f3a091461052b578063d6eccdf01461054557600080fd5b8063b02c43d0116100c8578063b02c43d014610422578063b34b3216146104d7578063b59589d1146104ea57600080fd5b806383a43428146103de5780638da5cb5b146103fe578063a588f0591461040f57600080fd5b80635afb143c1161015057806361d027b31161012a57806361d027b314610370578063715018a6146103af57806376cdb03b146103b757600080fd5b80635afb143c146103305780635c0b48121461034a57806360d712fc1461035d57600080fd5b80631fff4e70116101815780631fff4e70146102dd5780632bb818c2146102f457806359a9d90a1461031b57600080fd5b806303d952f7146101a8578063079bf52c146102535780630b6ba19d1461027e575b600080fd5b6102076101b6366004613e39565b600760205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b604080516001600160a01b0390961686526001600160401b0394851660208701529284169285019290925291909116606083015263ffffffff16608082015260a0015b60405180910390f35b600154610266906001600160401b031681565b6040516001600160401b03909116815260200161024a565b61020761028c366004613e39565b600860205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b6102e660035481565b60405190815260200161024a565b6102e67f000000000000000000000000000000000000000000000000000000000000000081565b61032e610329366004613e7c565b6105f9565b005b60005461026690600160a01b90046001600160401b031681565b61032e610358366004613ee7565b610bbe565b61032e61036b366004613f5d565b6112b3565b6103977f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024a565b61032e61136c565b6103977f000000000000000000000000000000000000000000000000000000000000000081565b6102e66103ec366004613fb1565b60066020526000908152604090205481565b6000546001600160a01b0316610397565b600254610266906001600160401b031681565b610487610430366004613e39565b600560205260009081526040902080546001909101546001600160a01b03808316926001600160401b03600160a01b80830482169463ffffffff600160e01b94859004811695821694928204909316929190041686565b604080516001600160a01b0397881681526001600160401b03968716602082015263ffffffff958616918101919091529590921660608601529290921660808401521660a082015260c00161024a565b61032e6104e5366004613fcc565b6113d2565b6103977f000000000000000000000000000000000000000000000000000000000000000081565b60015461026690600160801b90046001600160401b031681565b60015461026690600160401b90046001600160401b031681565b61032e610553366004614068565b61188f565b61057b61056636600461410d565b60046020526000908152604090205460ff1681565b604051901515815260200161024a565b6105be610599366004613fb1565b60096020526000908152604090205460ff81169061010090046001600160401b031682565b60405161024a92919061413e565b60015461026690600160c01b90046001600160401b031681565b61032e6105f436600461410d565b61202e565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae134858561061f612110565b6040518463ffffffff1660e01b815260040161063d939291906141fe565b60206040518083038186803b15801561065557600080fd5b505af4158015610669573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068d91906142f9565b90506000806106dc6106a26040880188614312565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061228d92505050565b60408051606081018252600080825260208083018290528284018290526001600160601b0319861682526006905291909120549294509092509080156107f65780863561072f6040890160208a0161436c565b61073f60608a0160408b01614387565b60405160200161077c9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146107e45760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064015b60405180910390fd5b6107f3368790038701876143b8565b91505b600061084461080860208b018b614312565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506123c0915050565b9050600080806108678460000151886001600160401b031686604001515161293b565b6001549193509150600160401b90046001600160401b03166108898284614440565b11156108d75760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f2068696768000000000060448201526064016107db565b60005b8460400151518110156109c557600060018660400151516108fb9190614458565b82146109075783610911565b6109118385614440565b9050808660600151838151811061092a5761092a61446f565b6020026020010151876040015184815181106109485761094861446f565b602002602001015161095a9190614458565b6109649190614458565b8660400151838151811061097a5761097a61446f565b6020026020010181815250508560600151828151811061099c5761099c61446f565b6020026020010151856109af9190614440565b94505080806109bd90614485565b9150506108da565b5060408051602081018b90526000918101919091526001600160c01b031960c089901b166044820152604c0160408051808303601f1901815282825280516020918201206001600160601b03198c1660008181526006845284902091909155835282018b90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a1602084015160408086015190517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263266a123a92610ac3926004016144a0565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50506040517f5b86f5990000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169250635b86f5999150604401600060405180830381600087803b158015610b9857600080fd5b505af1158015610bac573d6000803e3d6000fd5b50505050505050505050505050505050565b6000610bd060e0830160c0840161410d565b6001600160a01b03161480610c12575060046000610bf460e0840160c0850161410d565b6001600160a01b0316815260208101919091526040016000205460ff165b610c5e5760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f74207472757374656400000000000000000000000060448201526064016107db565b6000610c70604083016020840161410d565b610c806060840160408501614524565b610c906080850160608601613fb1565b610ca060a0860160808701613fb1565b610cb060c0870160a0880161454e565b604051602001610cc4959493929190614569565b60408051601f1981840301815291905290506000610d38610ce8602085018561436c565b63ffffffff16610cfb6040870187614312565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506129779050565b90506000610d4582612b42565b9050805160141415610dcb57610d5a83612de8565b6001600160601b031916610d6f826000612e0f565b6001600160601b03191614610dc65760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d627974652073637269707420686173680000000000000060448201526064016107db565b610ec3565b805160201415610e7b57600283604051610de59190614819565b602060405180830381855afa158015610e02573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e2591906142f9565b610e2e82612e25565b14610dc65760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d627974652073637269707420686173680000000000000060448201526064016107db565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e677468000000000000000060448201526064016107db565b6000610f28610ed5602088018861454e565b610ee26020890189614312565b610eef60408b018b614312565b610eff60808d0160608e0161454e565b604051602001610f1496959493929190614825565b604051602081830303815290604052612e41565b9050600060058183610f3d60208a018a61436c565b604051602001610f6492919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610fe85760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c6564000000000000000060448201526064016107db565b6000610ff385612e68565b6000549091506001600160401b03600160a01b9091048116908216101561105c5760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616d6f756e7420746f6f20736d616c6c000000000000000060448201526064016107db565b81547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b6001600160401b038316021782556110a3604088016020890161410d565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff16021782556110f260e0880160c0890161410d565b6001838101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039390931692909217909155546001600160401b031661113857600061114e565b60015461114e906001600160401b03168261487d565b6001830180546001600160401b0392909216600160a01b027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef05836111bf60208a018a61436c565b6111cf60408b0160208c0161410d565b846111e060608d0160408e01614524565b6111f060808e0160608f01613fb1565b8d60800160208101906112039190613fb1565b8e60a0016020810190611216919061454e565b8f60c0016020810190611229919061410d565b60408051998a5263ffffffff90981660208a01526001600160a01b03968716978901979097526001600160401b0390941660608801526001600160c01b031990921660808701526001600160601b031990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b0316331461130d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107db565b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b6000546001600160a01b031633146113c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107db565b6113d06000612ede565b565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae13486866113f8612110565b6040518463ffffffff1660e01b8152600401611416939291906141fe565b60206040518083038186803b15801561142e57600080fd5b505af4158015611442573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146691906142f9565b90506114b66114786020870187614312565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250869150612f3b9050565b6001600160601b0319821660009081526009602052604090205460ff1660018160048111156114e7576114e7614128565b14806115045750600281600481111561150257611502614128565b145b6115765760405162461bcd60e51b815260206004820152602c60248201527f57616c6c6574206d75737420626520696e20416374697665206f72204d6f766960448201527f6e6746756473207374617465000000000000000000000000000000000000000060648201526084016107db565b60006115c46115886040890189614312565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250613140915050565b60608101519091506001600160401b0316156116575782816040015182606001516040516020016116229392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f1981840301815291815281516020928301206001600160601b0319871660009081526006909352912055611672565b6001600160601b031984166000908152600660205260408120555b80516001600160601b03198516600090815260096020526040902080546001906116ab90849061010090046001600160401b03166148a3565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe84846040516117159291906001600160601b0319929092168252602082015260400190565b60405180910390a180516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063392aee4390602401600060405180830381600087803b1580156117a357600080fd5b505af11580156117b7573d6000803e3d6000fd5b5050505060208101516040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160401b0390921660248201527f0000000000000000000000000000000000000000000000000000000000000000909116906356a6d9ef90604401600060405180830381600087803b15801561186e57600080fd5b505af1158015611882573d6000803e3d6000fd5b5050505050505050505050565b60016001600160601b0319861660009081526009602052604090205460ff1660048111156118bf576118bf614128565b1461190c5760405162461bcd60e51b815260206004820152601e60248201527f57616c6c6574206d75737420626520696e20416374697665207374617465000060448201526064016107db565b6001600160601b03198516600090815260066020526040902054806119995760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c6560448201527f740000000000000000000000000000000000000000000000000000000000000060648201526084016107db565b8085356119ac604088016020890161436c565b6119bc6060890160408a01614387565b6040516020016119f99392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014611a5c5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016107db565b6000611a8e600060c01b8686604051602001611a7a939291906148cb565b604051602081830303815290604052612b42565b90506000815111611b075760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e64617264207479706500000000000000000000000000000000000060648201526084016107db565b808051906020012087604051602001611b3091906001600160601b031991909116815260140190565b604051602081830303815290604052805190602001201415611bba5760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b4800000000000000000060648201526084016107db565b6001546001600160401b03600160801b90910481169084161015611c205760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c000000000060448201526064016107db565b6000878686604051602001611c37939291906148ef565b60408051808303601f19018152918152815160209283012060008181526007909352912060010154909150600160801b900463ffffffff1615611d085760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a4016107db565b600154600090600160c01b90046001600160401b0316611d29576000611d46565b600154611d4690600160c01b90046001600160401b03168661487d565b6002549091506001600160401b0316611d5f82876148a3565b6001600160601b03198b1660009081526009602052604090208054600190611d9690849061010090046001600160401b0316614913565b82546001600160401b0391821661010093840a90810290830219909116179092556001600160601b03198d166000908152600960205260409081902054919091049091169150611dec9060608c01908c01614387565b6001600160401b03161015611e435760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e64730000000000000060448201526064016107db565b6040805160a081018252338082526001600160401b03808a1660208085019182528783168587019081528784166060870190815263ffffffff4281166080890190815260008d81526007909552938990209751885495518716600160a01b026001600160e01b03199096166001600160a01b03919091161794909417875590516001909601805491519251909316600160801b027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff928516600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216969094169590951794909417939093161790915590517f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d9591611f73918d918c918c91908c908990899061493e565b60405180910390a16040517f7c6db49c0000000000000000000000000000000000000000000000000000000081523360048201523060248201526001600160401b03871660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b15801561200a57600080fd5b505af115801561201e573d6000803e3d6000fd5b5050505050505050505050505050565b6000546001600160a01b031633146120885760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107db565b6001600160a01b0381166121045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107db565b61210d81612ede565b50565b61213460405180606001604052806000815260200160008152602001600081525090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b15801561218d57600080fd5b505afa1580156121a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c591906142f9565b8160000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561222757600080fd5b505afa15801561223b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225f91906142f9565b60208201527f0000000000000000000000000000000000000000000000000000000000000000604082015290565b600080600061229b84613755565b915050806001146123145760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f757470757400000000000000000000000000000000000000000060648201526084016107db565b60006123208582612977565b905061232b81612e68565b9250600061233882612b42565b905080516014146123b15760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f766520323020627974657300000000000000000000000000000000000000000060648201526084016107db565b60208101519450505050915091565b6123eb6040518060800160405280600081526020016060815260200160608152602001606081525090565b81511515600080806123fc87613755565b9092509050600061240e836001614440565b9050841561242657612421600183614458565b612428565b815b6001600160401b0381111561243f5761243f6143a2565b604051908082528060200260200182016040528015612468578160200160208202803683370190505b5060208701819052516001600160401b03811115612488576124886143a2565b6040519080825280602002602001820160405280156124b1578160200160208202803683370190505b5060408701526020860151516001600160401b038111156124d4576124d46143a2565b6040519080825280602002602001820160405280156124fd578160200160208202803683370190505b5060608701526000805b8381101561283e57600080600061251e8d8761376c565b925092509250600060056000858560405160200161255392919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff161561278f576001810154600160e01b900463ffffffff16156125ee5760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016107db565b8b60200151518614156126695760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016107db565b6001810180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055805460208d015180516001600160a01b0390921691889081106126c2576126c261446f565b6001600160a01b039290921660209283029190910190910152805460408d01518051600160a01b9092046001600160401b031691889081106127065761270661446f565b6020026020010181815250508b6040015186815181106127285761272861446f565b60200260200101518c6000018181516127419190614440565b905250600181015460608d01518051600160a01b9092046001600160401b031691889081106127725761277261446f565b60209081029190910101528561278781614485565b96505061281b565b8915158b1515141580156127a357508c5184145b156127d3578c604001516001600160401b03168c6000018181516127c79190614440565b9052506001995061281b565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e7075742074797065000000000000000000000000000060448201526064016107db565b6128258288614440565b965050505050808061283690614485565b915050612507565b50600081116128b55760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f7369740000000000000000000000000060648201526084016107db565b8415158615151461292e5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016107db565b5050505050505b92915050565b600080806129498587614458565b905061295584826149a1565b9150836129628383614458565b61296c91906149b5565b925050935093915050565b606060008061298585613755565b90925090506000198214156129e75760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016107db565b808410612a365760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016107db565b600080612a44846001614440565b905060005b86811015612acd57612a5b88836137c4565b9250600019831415612aaf5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016107db565b612ab98383614440565b915080612ac581614485565b915050612a49565b50612ad887826137c4565b9150600019821415612b2c5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016107db565b612b37878284613833565b979650505050505050565b6060600082600881518110612b5957612b5961446f565b0160200151835160f89190911c9150612b738260096149c9565b60ff1614612b91575050604080516020810190915260008152919050565b82600981518110612ba457612ba461446f565b016020015160f81c612c4a5760028160ff161015612bd2575050604080516020810190915260008152919050565b600083600a81518110612be757612be761446f565b016020015160f81c9050612bfc6002836149ee565b60ff1681141580612c1a575080602014158015612c1a575080601414155b15612c3657505060408051602081019091526000815292915050565b612c4284600b83613833565b949350505050565b6000612c57846008612e0f565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415612d345783600b81518110612cb657612cb661446f565b60209101015160f81c6014141580612d0b5750612ce160028551612cda9190614458565b8590612e0f565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b15612d2757505060408051602081019091526000815292915050565b612c4284600c6014613833565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415612dd1578360018551612d8d9190614458565b81518110612d9d57612d9d61446f565b60209101015160f81c608714612dc457505060408051602081019091526000815292915050565b612c4284600b6014613833565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000612e1e8383016020015190565b9392505050565b6000815160001415612e3957506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600080612e74836138fd565b60c01c90506000612c428264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160601b0319811660009081526006602052604090205480612fa25760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c657400000060448201526064016107db565b808335612fb5604086016020870161436c565b612fc56060870160408801614387565b6040516020016130029392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146130655760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016107db565b60008061307186613909565b90925090508435821480156130a0575063ffffffff8116613098604087016020880161436c565b63ffffffff16145b6131385760405162461bcd60e51b815260206004820152604160248201527f526564656d7074696f6e207472616e73616374696f6e20696e707574206d757360448201527f7420706f696e7420746f207468652077616c6c65742773206d61696e2055545860648201527f4f00000000000000000000000000000000000000000000000000000000000000608482015260a4016107db565b505050505050565b6040805160808101825260008082526020820181905291810182905260608101829052908061316e85613755565b90925090506000613180836001614440565b604080517f1976a914000000000000000000000000000000000000000000000000000000006020808301919091526001600160601b031989166024830181905261222b60f21b60388401528351601a818503018152603a840185528051908301207f1600140000000000000000000000000000000000000000000000000000000000605a850152605d8401919091528351605181850301815260719093019093528151910120919250906000805b858110156136de5760006132428b876137c4565b905060006132518c8884613833565b9050600061325e82612e68565b9050600061327c60088085516132749190614458565b859190613833565b90508b606001516001600160401b031660001480156132af5750805160208201208814806132af57508051602082012087145b80156132c457506000826001600160401b0316115b156132e95763ffffffff851660408d01526001600160401b03821660608d01526136bb565b60008d826040516020016132fe929190614a11565b60408051808303601f19018152918152815160209283012060008181526007909352912060010154909150600160801b900463ffffffff161561350857600081815260076020526040812060018101548154919291613370916001600160401b0390811691600160a01b9004166148a3565b60018301549091506001600160401b038087169161339791600160401b90910416836148a3565b6001600160401b0316111580156133c05750806001600160401b0316856001600160401b031611155b6134585760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a4016107db565b808f60000181815161346a9190614913565b9150906001600160401b031690816001600160401b0316815250508160010160009054906101000a90046001600160401b03168f6020018181516134ae9190614913565b6001600160401b0316905250600083815260076020526040902080546001600160e01b0319168155600101805473ffffffffffffffffffffffffffffffffffffffff19169055886134fe81614485565b99505050506136b9565b60008181526008602052604090206001810154600160801b900463ffffffff166135995760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e0000000000000000000000000000000000000000000000000000000060648201526084016107db565b600181015481546000916135c1916001600160401b0391821691600160a01b909104166148a3565b60018301549091506001600160401b03808716916135e891600160401b90910416836148a3565b6001600160401b0316111580156136115750806001600160401b0316856001600160401b031611155b6136a95760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a4016107db565b886136b381614485565b99505050505b505b6136c5848a614440565b98505050505080806136d690614485565b91505061322e565b506000811161292e5760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e000000000060648201526084016107db565b6000806137638360006139be565b91509150915091565b6000808061377a8585612e0f565b92506137af6137898686613b3a565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b91506137bb8585613b51565b90509250925092565b60006137d1826009614440565b835110156137e25750600019612935565b6000806137f9856137f4866008614440565b6139be565b90925090506000198214156138145760001992505050612935565b80613820836009614440565b61382a9190614440565b95945050505050565b60608161384f5750604080516020810190915260008152612e1e565b600061385b8385614440565b9050838111801561386d575080855110155b6138b95760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016107db565b604051915082604083010160405282825283850182038460208701018481015b808210156138f2578151838301526020820191506138d9565b505050509392505050565b60006129358282612e0f565b600080600061391784613755565b915050806001146139905760405162461bcd60e51b815260206004820152602f60248201527f526564656d7074696f6e207472616e73616374696f6e206d757374206861766560448201527f20612073696e676c6520696e707574000000000000000000000000000000000060648201526084016107db565b600061399c8582613b9c565b90506139a781613d51565b93506139b561378982613d5e565b92505050915091565b60008060006139cd8585613d6b565b905060ff81166139ff5760008585815181106139eb576139eb61446f565b016020015190935060f81c9150613b339050565b83613a0b8260016149c9565b60ff16613a189190614440565b85511015613a2f5760001960009250925050613b33565b60008160ff1660021415613a7457613a69613a55613a4e876001614440565b8890612e0f565b62ffff0060e882901c1660f89190911c1790565b61ffff169050613b29565b8160ff1660041415613a9e57613a91613789613a4e876001614440565b63ffffffff169050613b29565b8160ff1660081415613b2957613b1d613abb613a4e876001614440565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b6000612e1e613b4a836020614440565b8490612e0f565b6000806000613b608585613df7565b9092509050600019821415613b7b5760001992505050612935565b80613b87836025614440565b613b919190614440565b61382a906004614440565b6060600080613baa85613755565b9092509050600019821415613c0c5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016107db565b808410613c5b5760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e0000000000000000000000000000000060448201526064016107db565b600080613c69846001614440565b905060005b86811015613cf257613c808883613b51565b9250600019831415613cd45760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016107db565b613cde8383614440565b915080613cea81614485565b915050613c6e565b50613cfd8782613b51565b9150600019821415612b2c5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016107db565b6020810151600090612935565b6000612935826020612e0f565b6000828281518110613d7f57613d7f61446f565b60209101015160f81c60ff1415613d9857506008612935565b828281518110613daa57613daa61446f565b60209101015160f81c60fe1415613dc357506004612935565b828281518110613dd557613dd561446f565b60209101015160f81c60fd1415613dee57506002612935565b50600092915050565b600080613e05836025614440565b84511015613e1a575060001990506000613b33565b600080613e2c866137f4876024614440565b9097909650945050505050565b600060208284031215613e4b57600080fd5b5035919050565b600060808284031215613e6457600080fd5b50919050565b600060608284031215613e6457600080fd5b600080600060a08486031215613e9157600080fd5b83356001600160401b0380821115613ea857600080fd5b613eb487838801613e52565b94506020860135915080821115613eca57600080fd5b50613ed786828701613e6a565b9250506137bb8560408601613e6a565b600080828403610100811215613efc57600080fd5b83356001600160401b03811115613f1257600080fd5b613f1e86828701613e52565b93505060e0601f1982011215613f3357600080fd5b506020830190509250929050565b80356001600160a01b0381168114613f5857600080fd5b919050565b60008060408385031215613f7057600080fd5b613f7983613f41565b915060208301358015158114613f8e57600080fd5b809150509250929050565b80356001600160601b031981168114613f5857600080fd5b600060208284031215613fc357600080fd5b612e1e82613f99565b60008060008060c08587031215613fe257600080fd5b84356001600160401b0380821115613ff957600080fd5b61400588838901613e52565b9550602087013591508082111561401b57600080fd5b5061402887828801613e6a565b9350506140388660408701613e6a565b915061404660a08601613f99565b905092959194509250565b80356001600160401b0381168114613f5857600080fd5b600080600080600060c0868803121561408057600080fd5b61408986613f99565b94506140988760208801613e6a565b935060808601356001600160401b03808211156140b457600080fd5b818801915088601f8301126140c857600080fd5b8135818111156140d757600080fd5b8960208285010111156140e957600080fd5b60208301955080945050505061410160a08701614051565b90509295509295909350565b60006020828403121561411f57600080fd5b612e1e82613f41565b634e487b7160e01b600052602160045260246000fd5b604081016005841061416057634e487b7160e01b600052602160045260246000fd5b9281526001600160401b039190911660209091015290565b80356001600160e01b031981168114613f5857600080fd5b6000808335601e198436030181126141a757600080fd5b83016020810192503590506001600160401b038111156141c657600080fd5b803603831315613b3357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a0815260006001600160e01b03198061421787614178565b1660a084015261422a6020870187614190565b608060c0860152614240610120860182846141d5565b9150506142506040880188614190565b858303609f190160e08701526142678382846141d5565b925050508161427860608901614178565b1661010085015283810360208501526142918687614190565b9250606082526142a56060830184836141d5565b925050602086013560208201526142bf6040870187614190565b82840360408401526142d28482846141d5565b945050505050612c4260408301848051825260208082015190830152604090810151910152565b60006020828403121561430b57600080fd5b5051919050565b6000808335601e1984360301811261432957600080fd5b8301803591506001600160401b0382111561434357600080fd5b602001915036819003821315613b3357600080fd5b803563ffffffff81168114613f5857600080fd5b60006020828403121561437e57600080fd5b612e1e82614358565b60006020828403121561439957600080fd5b612e1e82614051565b634e487b7160e01b600052604160045260246000fd5b6000606082840312156143ca57600080fd5b604051606081018181106001600160401b03821117156143fa57634e487b7160e01b600052604160045260246000fd5b6040528235815261440d60208401614358565b602082015261441e60408401614051565b60408201529392505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156144535761445361442a565b500190565b60008282101561446a5761446a61442a565b500390565b634e487b7160e01b600052603260045260246000fd5b60006000198214156144995761449961442a565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156144e25781516001600160a01b0316845292840192908401906001016144bd565b5050508381038285015284518082528583019183019060005b81811015614517578351835292840192918401916001016144fb565b5090979650505050505050565b60006020828403121561453657600080fd5b81356001600160c01b031981168114612e1e57600080fd5b60006020828403121561456057600080fd5b612e1e82614178565b600560fa1b8152606086901b6001600160601b0319166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f820152600061463d614630614607602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6001600160601b0319861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526146fc6146306146076145de6146d3601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6001600160601b0319861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b600582015290506147d26147a9600683016146aa565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b6000815160005b818110156147ff57602081850181015186830152016147e5565b8181111561480e576000828601525b509290920192915050565b6000612e1e82846147de565b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b038084168061489757614897614867565b92169190910492915050565b60006001600160401b03838116908316818110156148c3576148c361442a565b039392505050565b6001600160c01b031984168152818360088301376000910160080190815292915050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60006001600160401b038083168185168083038211156149355761493561442a565b01949350505050565b6bffffffffffffffffffffffff198816815260c06020820152600061496760c08301888a6141d5565b6001600160a01b03969096166040830152506001600160401b039384166060820152918316608083015290911660a0909101529392505050565b6000826149b0576149b0614867565b500690565b6000826149c4576149c4614867565b500490565b600060ff821660ff84168060ff038211156149e6576149e661442a565b019392505050565b600060ff821660ff841680821015614a0857614a0861442a565b90039392505050565b6001600160601b0319831681526000612c4260148301846147de56fea2646970667358221220d0c71cedaffd0031682dd2f33400bfd36c686a127cfc56c4da7dc0369d95ce7164736f6c63430008090033",
877
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a35760003560e01c806383a43428116100ee578063bdf9fca911610097578063e53c0b5511610071578063e53c0b5514610558578063e65e19d51461058b578063e95eb7a8146105cc578063f2fde38b146105e657600080fd5b8063bdf9fca914610511578063cb7f3a091461052b578063d6eccdf01461054557600080fd5b8063b02c43d0116100c8578063b02c43d014610422578063b34b3216146104d7578063b59589d1146104ea57600080fd5b806383a43428146103de5780638da5cb5b146103fe578063a588f0591461040f57600080fd5b80635afb143c1161015057806361d027b31161012a57806361d027b314610370578063715018a6146103af57806376cdb03b146103b757600080fd5b80635afb143c146103305780635c0b48121461034a57806360d712fc1461035d57600080fd5b80631fff4e70116101815780631fff4e70146102dd5780632bb818c2146102f457806359a9d90a1461031b57600080fd5b806303d952f7146101a8578063079bf52c146102535780630b6ba19d1461027e575b600080fd5b6102076101b6366004613e39565b600760205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b604080516001600160a01b0390961686526001600160401b0394851660208701529284169285019290925291909116606083015263ffffffff16608082015260a0015b60405180910390f35b600154610266906001600160401b031681565b6040516001600160401b03909116815260200161024a565b61020761028c366004613e39565b600860205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b6102e660035481565b60405190815260200161024a565b6102e67f000000000000000000000000000000000000000000000000000000000000000081565b61032e610329366004613e7c565b6105f9565b005b60005461026690600160a01b90046001600160401b031681565b61032e610358366004613ee7565b610bbe565b61032e61036b366004613f5d565b6112b3565b6103977f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024a565b61032e61136c565b6103977f000000000000000000000000000000000000000000000000000000000000000081565b6102e66103ec366004613fb1565b60066020526000908152604090205481565b6000546001600160a01b0316610397565b600254610266906001600160401b031681565b610487610430366004613e39565b600560205260009081526040902080546001909101546001600160a01b03808316926001600160401b03600160a01b80830482169463ffffffff600160e01b94859004811695821694928204909316929190041686565b604080516001600160a01b0397881681526001600160401b03968716602082015263ffffffff958616918101919091529590921660608601529290921660808401521660a082015260c00161024a565b61032e6104e5366004613fcc565b6113d2565b6103977f000000000000000000000000000000000000000000000000000000000000000081565b60015461026690600160801b90046001600160401b031681565b60015461026690600160401b90046001600160401b031681565b61032e610553366004614068565b61188f565b61057b61056636600461410d565b60046020526000908152604090205460ff1681565b604051901515815260200161024a565b6105be610599366004613fb1565b60096020526000908152604090205460ff81169061010090046001600160401b031682565b60405161024a92919061413e565b60015461026690600160c01b90046001600160401b031681565b61032e6105f436600461410d565b61202e565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae134858561061f612110565b6040518463ffffffff1660e01b815260040161063d939291906141fe565b60206040518083038186803b15801561065557600080fd5b505af4158015610669573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068d91906142f9565b90506000806106dc6106a26040880188614312565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061228d92505050565b60408051606081018252600080825260208083018290528284018290526001600160601b0319861682526006905291909120549294509092509080156107f65780863561072f6040890160208a0161436c565b61073f60608a0160408b01614387565b60405160200161077c9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146107e45760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064015b60405180910390fd5b6107f3368790038701876143b8565b91505b600061084461080860208b018b614312565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506123c0915050565b9050600080806108678460000151886001600160401b031686604001515161293b565b6001549193509150600160401b90046001600160401b03166108898284614440565b11156108d75760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f2068696768000000000060448201526064016107db565b60005b8460400151518110156109c557600060018660400151516108fb9190614458565b82146109075783610911565b6109118385614440565b9050808660600151838151811061092a5761092a61446f565b6020026020010151876040015184815181106109485761094861446f565b602002602001015161095a9190614458565b6109649190614458565b8660400151838151811061097a5761097a61446f565b6020026020010181815250508560600151828151811061099c5761099c61446f565b6020026020010151856109af9190614440565b94505080806109bd90614485565b9150506108da565b5060408051602081018b90526000918101919091526001600160c01b031960c089901b166044820152604c0160408051808303601f1901815282825280516020918201206001600160601b03198c1660008181526006845284902091909155835282018b90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a1602084015160408086015190517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263266a123a92610ac3926004016144a0565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50506040517f5b86f5990000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169250635b86f5999150604401600060405180830381600087803b158015610b9857600080fd5b505af1158015610bac573d6000803e3d6000fd5b50505050505050505050505050505050565b6000610bd060e0830160c0840161410d565b6001600160a01b03161480610c12575060046000610bf460e0840160c0850161410d565b6001600160a01b0316815260208101919091526040016000205460ff165b610c5e5760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f74207472757374656400000000000000000000000060448201526064016107db565b6000610c70604083016020840161410d565b610c806060840160408501614524565b610c906080850160608601613fb1565b610ca060a0860160808701613fb1565b610cb060c0870160a0880161454e565b604051602001610cc4959493929190614569565b60408051601f1981840301815291905290506000610d38610ce8602085018561436c565b63ffffffff16610cfb6040870187614312565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506129779050565b90506000610d4582612b42565b9050805160141415610dcb57610d5a83612de8565b6001600160601b031916610d6f826000612e0f565b6001600160601b03191614610dc65760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d627974652073637269707420686173680000000000000060448201526064016107db565b610ec3565b805160201415610e7b57600283604051610de59190614819565b602060405180830381855afa158015610e02573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e2591906142f9565b610e2e82612e25565b14610dc65760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d627974652073637269707420686173680000000000000060448201526064016107db565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e677468000000000000000060448201526064016107db565b6000610f28610ed5602088018861454e565b610ee26020890189614312565b610eef60408b018b614312565b610eff60808d0160608e0161454e565b604051602001610f1496959493929190614825565b604051602081830303815290604052612e41565b9050600060058183610f3d60208a018a61436c565b604051602001610f6492919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610fe85760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c6564000000000000000060448201526064016107db565b6000610ff385612e68565b6000549091506001600160401b03600160a01b9091048116908216101561105c5760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616d6f756e7420746f6f20736d616c6c000000000000000060448201526064016107db565b81547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b6001600160401b038316021782556110a3604088016020890161410d565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff16021782556110f260e0880160c0890161410d565b6001838101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039390931692909217909155546001600160401b031661113857600061114e565b60015461114e906001600160401b03168261487d565b6001830180546001600160401b0392909216600160a01b027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef05836111bf60208a018a61436c565b6111cf60408b0160208c0161410d565b846111e060608d0160408e01614524565b6111f060808e0160608f01613fb1565b8d60800160208101906112039190613fb1565b8e60a0016020810190611216919061454e565b8f60c0016020810190611229919061410d565b60408051998a5263ffffffff90981660208a01526001600160a01b03968716978901979097526001600160401b0390941660608801526001600160c01b031990921660808701526001600160601b031990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b0316331461130d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107db565b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b6000546001600160a01b031633146113c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107db565b6113d06000612ede565b565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae13486866113f8612110565b6040518463ffffffff1660e01b8152600401611416939291906141fe565b60206040518083038186803b15801561142e57600080fd5b505af4158015611442573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146691906142f9565b90506114b66114786020870187614312565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250869150612f3b9050565b6001600160601b0319821660009081526009602052604090205460ff1660018160048111156114e7576114e7614128565b14806115045750600281600481111561150257611502614128565b145b6115765760405162461bcd60e51b815260206004820152602c60248201527f57616c6c6574206d75737420626520696e20416374697665206f72204d6f766960448201527f6e6746756473207374617465000000000000000000000000000000000000000060648201526084016107db565b60006115c46115886040890189614312565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250613140915050565b60608101519091506001600160401b0316156116575782816040015182606001516040516020016116229392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f1981840301815291815281516020928301206001600160601b0319871660009081526006909352912055611672565b6001600160601b031984166000908152600660205260408120555b80516001600160601b03198516600090815260096020526040902080546001906116ab90849061010090046001600160401b03166148a3565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe84846040516117159291906001600160601b0319929092168252602082015260400190565b60405180910390a180516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063392aee4390602401600060405180830381600087803b1580156117a357600080fd5b505af11580156117b7573d6000803e3d6000fd5b5050505060208101516040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160401b0390921660248201527f0000000000000000000000000000000000000000000000000000000000000000909116906356a6d9ef90604401600060405180830381600087803b15801561186e57600080fd5b505af1158015611882573d6000803e3d6000fd5b5050505050505050505050565b60016001600160601b0319861660009081526009602052604090205460ff1660048111156118bf576118bf614128565b1461190c5760405162461bcd60e51b815260206004820152601e60248201527f57616c6c6574206d75737420626520696e20416374697665207374617465000060448201526064016107db565b6001600160601b03198516600090815260066020526040902054806119995760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c6560448201527f740000000000000000000000000000000000000000000000000000000000000060648201526084016107db565b8085356119ac604088016020890161436c565b6119bc6060890160408a01614387565b6040516020016119f99392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014611a5c5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016107db565b6000611a8e600060c01b8686604051602001611a7a939291906148cb565b604051602081830303815290604052612b42565b90506000815111611b075760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e64617264207479706500000000000000000000000000000000000060648201526084016107db565b808051906020012087604051602001611b3091906001600160601b031991909116815260140190565b604051602081830303815290604052805190602001201415611bba5760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b4800000000000000000060648201526084016107db565b6001546001600160401b03600160801b90910481169084161015611c205760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c000000000060448201526064016107db565b6000878686604051602001611c37939291906148ef565b60408051808303601f19018152918152815160209283012060008181526007909352912060010154909150600160801b900463ffffffff1615611d085760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a4016107db565b600154600090600160c01b90046001600160401b0316611d29576000611d46565b600154611d4690600160c01b90046001600160401b03168661487d565b6002549091506001600160401b0316611d5f82876148a3565b6001600160601b03198b1660009081526009602052604090208054600190611d9690849061010090046001600160401b0316614913565b82546001600160401b0391821661010093840a90810290830219909116179092556001600160601b03198d166000908152600960205260409081902054919091049091169150611dec9060608c01908c01614387565b6001600160401b03161015611e435760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e64730000000000000060448201526064016107db565b6040805160a081018252338082526001600160401b03808a1660208085019182528783168587019081528784166060870190815263ffffffff4281166080890190815260008d81526007909552938990209751885495518716600160a01b026001600160e01b03199096166001600160a01b03919091161794909417875590516001909601805491519251909316600160801b027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff928516600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216969094169590951794909417939093161790915590517f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d9591611f73918d918c918c91908c908990899061493e565b60405180910390a16040517f7c6db49c0000000000000000000000000000000000000000000000000000000081523360048201523060248201526001600160401b03871660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b15801561200a57600080fd5b505af115801561201e573d6000803e3d6000fd5b5050505050505050505050505050565b6000546001600160a01b031633146120885760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107db565b6001600160a01b0381166121045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107db565b61210d81612ede565b50565b61213460405180606001604052806000815260200160008152602001600081525090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b15801561218d57600080fd5b505afa1580156121a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c591906142f9565b8160000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561222757600080fd5b505afa15801561223b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225f91906142f9565b60208201527f0000000000000000000000000000000000000000000000000000000000000000604082015290565b600080600061229b84613755565b915050806001146123145760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f757470757400000000000000000000000000000000000000000060648201526084016107db565b60006123208582612977565b905061232b81612e68565b9250600061233882612b42565b905080516014146123b15760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f766520323020627974657300000000000000000000000000000000000000000060648201526084016107db565b60208101519450505050915091565b6123eb6040518060800160405280600081526020016060815260200160608152602001606081525090565b81511515600080806123fc87613755565b9092509050600061240e836001614440565b9050841561242657612421600183614458565b612428565b815b6001600160401b0381111561243f5761243f6143a2565b604051908082528060200260200182016040528015612468578160200160208202803683370190505b5060208701819052516001600160401b03811115612488576124886143a2565b6040519080825280602002602001820160405280156124b1578160200160208202803683370190505b5060408701526020860151516001600160401b038111156124d4576124d46143a2565b6040519080825280602002602001820160405280156124fd578160200160208202803683370190505b5060608701526000805b8381101561283e57600080600061251e8d8761376c565b925092509250600060056000858560405160200161255392919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff161561278f576001810154600160e01b900463ffffffff16156125ee5760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016107db565b8b60200151518614156126695760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016107db565b6001810180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055805460208d015180516001600160a01b0390921691889081106126c2576126c261446f565b6001600160a01b039290921660209283029190910190910152805460408d01518051600160a01b9092046001600160401b031691889081106127065761270661446f565b6020026020010181815250508b6040015186815181106127285761272861446f565b60200260200101518c6000018181516127419190614440565b905250600181015460608d01518051600160a01b9092046001600160401b031691889081106127725761277261446f565b60209081029190910101528561278781614485565b96505061281b565b8915158b1515141580156127a357508c5184145b156127d3578c604001516001600160401b03168c6000018181516127c79190614440565b9052506001995061281b565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e7075742074797065000000000000000000000000000060448201526064016107db565b6128258288614440565b965050505050808061283690614485565b915050612507565b50600081116128b55760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f7369740000000000000000000000000060648201526084016107db565b8415158615151461292e5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016107db565b5050505050505b92915050565b600080806129498587614458565b905061295584826149a1565b9150836129628383614458565b61296c91906149b5565b925050935093915050565b606060008061298585613755565b90925090506000198214156129e75760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016107db565b808410612a365760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016107db565b600080612a44846001614440565b905060005b86811015612acd57612a5b88836137c4565b9250600019831415612aaf5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016107db565b612ab98383614440565b915080612ac581614485565b915050612a49565b50612ad887826137c4565b9150600019821415612b2c5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016107db565b612b37878284613833565b979650505050505050565b6060600082600881518110612b5957612b5961446f565b0160200151835160f89190911c9150612b738260096149c9565b60ff1614612b91575050604080516020810190915260008152919050565b82600981518110612ba457612ba461446f565b016020015160f81c612c4a5760028160ff161015612bd2575050604080516020810190915260008152919050565b600083600a81518110612be757612be761446f565b016020015160f81c9050612bfc6002836149ee565b60ff1681141580612c1a575080602014158015612c1a575080601414155b15612c3657505060408051602081019091526000815292915050565b612c4284600b83613833565b949350505050565b6000612c57846008612e0f565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415612d345783600b81518110612cb657612cb661446f565b60209101015160f81c6014141580612d0b5750612ce160028551612cda9190614458565b8590612e0f565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b15612d2757505060408051602081019091526000815292915050565b612c4284600c6014613833565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415612dd1578360018551612d8d9190614458565b81518110612d9d57612d9d61446f565b60209101015160f81c608714612dc457505060408051602081019091526000815292915050565b612c4284600b6014613833565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000612e1e8383016020015190565b9392505050565b6000815160001415612e3957506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600080612e74836138fd565b60c01c90506000612c428264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160601b0319811660009081526006602052604090205480612fa25760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c657400000060448201526064016107db565b808335612fb5604086016020870161436c565b612fc56060870160408801614387565b6040516020016130029392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146130655760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016107db565b60008061307186613909565b90925090508435821480156130a0575063ffffffff8116613098604087016020880161436c565b63ffffffff16145b6131385760405162461bcd60e51b815260206004820152604160248201527f526564656d7074696f6e207472616e73616374696f6e20696e707574206d757360448201527f7420706f696e7420746f207468652077616c6c65742773206d61696e2055545860648201527f4f00000000000000000000000000000000000000000000000000000000000000608482015260a4016107db565b505050505050565b6040805160808101825260008082526020820181905291810182905260608101829052908061316e85613755565b90925090506000613180836001614440565b604080517f1976a914000000000000000000000000000000000000000000000000000000006020808301919091526001600160601b031989166024830181905261222b60f21b60388401528351601a818503018152603a840185528051908301207f1600140000000000000000000000000000000000000000000000000000000000605a850152605d8401919091528351605181850301815260719093019093528151910120919250906000805b858110156136de5760006132428b876137c4565b905060006132518c8884613833565b9050600061325e82612e68565b9050600061327c60088085516132749190614458565b859190613833565b90508b606001516001600160401b031660001480156132af5750805160208201208814806132af57508051602082012087145b80156132c457506000826001600160401b0316115b156132e95763ffffffff851660408d01526001600160401b03821660608d01526136bb565b60008d826040516020016132fe929190614a11565b60408051808303601f19018152918152815160209283012060008181526007909352912060010154909150600160801b900463ffffffff161561350857600081815260076020526040812060018101548154919291613370916001600160401b0390811691600160a01b9004166148a3565b60018301549091506001600160401b038087169161339791600160401b90910416836148a3565b6001600160401b0316111580156133c05750806001600160401b0316856001600160401b031611155b6134585760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a4016107db565b808f60000181815161346a9190614913565b9150906001600160401b031690816001600160401b0316815250508160010160009054906101000a90046001600160401b03168f6020018181516134ae9190614913565b6001600160401b0316905250600083815260076020526040902080546001600160e01b0319168155600101805473ffffffffffffffffffffffffffffffffffffffff19169055886134fe81614485565b99505050506136b9565b60008181526008602052604090206001810154600160801b900463ffffffff166135995760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e0000000000000000000000000000000000000000000000000000000060648201526084016107db565b600181015481546000916135c1916001600160401b0391821691600160a01b909104166148a3565b60018301549091506001600160401b03808716916135e891600160401b90910416836148a3565b6001600160401b0316111580156136115750806001600160401b0316856001600160401b031611155b6136a95760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a4016107db565b886136b381614485565b99505050505b505b6136c5848a614440565b98505050505080806136d690614485565b91505061322e565b506000811161292e5760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e000000000060648201526084016107db565b6000806137638360006139be565b91509150915091565b6000808061377a8585612e0f565b92506137af6137898686613b3a565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b91506137bb8585613b51565b90509250925092565b60006137d1826009614440565b835110156137e25750600019612935565b6000806137f9856137f4866008614440565b6139be565b90925090506000198214156138145760001992505050612935565b80613820836009614440565b61382a9190614440565b95945050505050565b60608161384f5750604080516020810190915260008152612e1e565b600061385b8385614440565b9050838111801561386d575080855110155b6138b95760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016107db565b604051915082604083010160405282825283850182038460208701018481015b808210156138f2578151838301526020820191506138d9565b505050509392505050565b60006129358282612e0f565b600080600061391784613755565b915050806001146139905760405162461bcd60e51b815260206004820152602f60248201527f526564656d7074696f6e207472616e73616374696f6e206d757374206861766560448201527f20612073696e676c6520696e707574000000000000000000000000000000000060648201526084016107db565b600061399c8582613b9c565b90506139a781613d51565b93506139b561378982613d5e565b92505050915091565b60008060006139cd8585613d6b565b905060ff81166139ff5760008585815181106139eb576139eb61446f565b016020015190935060f81c9150613b339050565b83613a0b8260016149c9565b60ff16613a189190614440565b85511015613a2f5760001960009250925050613b33565b60008160ff1660021415613a7457613a69613a55613a4e876001614440565b8890612e0f565b62ffff0060e882901c1660f89190911c1790565b61ffff169050613b29565b8160ff1660041415613a9e57613a91613789613a4e876001614440565b63ffffffff169050613b29565b8160ff1660081415613b2957613b1d613abb613a4e876001614440565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b6000612e1e613b4a836020614440565b8490612e0f565b6000806000613b608585613df7565b9092509050600019821415613b7b5760001992505050612935565b80613b87836025614440565b613b919190614440565b61382a906004614440565b6060600080613baa85613755565b9092509050600019821415613c0c5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016107db565b808410613c5b5760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e0000000000000000000000000000000060448201526064016107db565b600080613c69846001614440565b905060005b86811015613cf257613c808883613b51565b9250600019831415613cd45760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016107db565b613cde8383614440565b915080613cea81614485565b915050613c6e565b50613cfd8782613b51565b9150600019821415612b2c5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016107db565b6020810151600090612935565b6000612935826020612e0f565b6000828281518110613d7f57613d7f61446f565b60209101015160f81c60ff1415613d9857506008612935565b828281518110613daa57613daa61446f565b60209101015160f81c60fe1415613dc357506004612935565b828281518110613dd557613dd561446f565b60209101015160f81c60fd1415613dee57506002612935565b50600092915050565b600080613e05836025614440565b84511015613e1a575060001990506000613b33565b600080613e2c866137f4876024614440565b9097909650945050505050565b600060208284031215613e4b57600080fd5b5035919050565b600060808284031215613e6457600080fd5b50919050565b600060608284031215613e6457600080fd5b600080600060a08486031215613e9157600080fd5b83356001600160401b0380821115613ea857600080fd5b613eb487838801613e52565b94506020860135915080821115613eca57600080fd5b50613ed786828701613e6a565b9250506137bb8560408601613e6a565b600080828403610100811215613efc57600080fd5b83356001600160401b03811115613f1257600080fd5b613f1e86828701613e52565b93505060e0601f1982011215613f3357600080fd5b506020830190509250929050565b80356001600160a01b0381168114613f5857600080fd5b919050565b60008060408385031215613f7057600080fd5b613f7983613f41565b915060208301358015158114613f8e57600080fd5b809150509250929050565b80356001600160601b031981168114613f5857600080fd5b600060208284031215613fc357600080fd5b612e1e82613f99565b60008060008060c08587031215613fe257600080fd5b84356001600160401b0380821115613ff957600080fd5b61400588838901613e52565b9550602087013591508082111561401b57600080fd5b5061402887828801613e6a565b9350506140388660408701613e6a565b915061404660a08601613f99565b905092959194509250565b80356001600160401b0381168114613f5857600080fd5b600080600080600060c0868803121561408057600080fd5b61408986613f99565b94506140988760208801613e6a565b935060808601356001600160401b03808211156140b457600080fd5b818801915088601f8301126140c857600080fd5b8135818111156140d757600080fd5b8960208285010111156140e957600080fd5b60208301955080945050505061410160a08701614051565b90509295509295909350565b60006020828403121561411f57600080fd5b612e1e82613f41565b634e487b7160e01b600052602160045260246000fd5b604081016005841061416057634e487b7160e01b600052602160045260246000fd5b9281526001600160401b039190911660209091015290565b80356001600160e01b031981168114613f5857600080fd5b6000808335601e198436030181126141a757600080fd5b83016020810192503590506001600160401b038111156141c657600080fd5b803603831315613b3357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a0815260006001600160e01b03198061421787614178565b1660a084015261422a6020870187614190565b608060c0860152614240610120860182846141d5565b9150506142506040880188614190565b858303609f190160e08701526142678382846141d5565b925050508161427860608901614178565b1661010085015283810360208501526142918687614190565b9250606082526142a56060830184836141d5565b925050602086013560208201526142bf6040870187614190565b82840360408401526142d28482846141d5565b945050505050612c4260408301848051825260208082015190830152604090810151910152565b60006020828403121561430b57600080fd5b5051919050565b6000808335601e1984360301811261432957600080fd5b8301803591506001600160401b0382111561434357600080fd5b602001915036819003821315613b3357600080fd5b803563ffffffff81168114613f5857600080fd5b60006020828403121561437e57600080fd5b612e1e82614358565b60006020828403121561439957600080fd5b612e1e82614051565b634e487b7160e01b600052604160045260246000fd5b6000606082840312156143ca57600080fd5b604051606081018181106001600160401b03821117156143fa57634e487b7160e01b600052604160045260246000fd5b6040528235815261440d60208401614358565b602082015261441e60408401614051565b60408201529392505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156144535761445361442a565b500190565b60008282101561446a5761446a61442a565b500390565b634e487b7160e01b600052603260045260246000fd5b60006000198214156144995761449961442a565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156144e25781516001600160a01b0316845292840192908401906001016144bd565b5050508381038285015284518082528583019183019060005b81811015614517578351835292840192918401916001016144fb565b5090979650505050505050565b60006020828403121561453657600080fd5b81356001600160c01b031981168114612e1e57600080fd5b60006020828403121561456057600080fd5b612e1e82614178565b600560fa1b8152606086901b6001600160601b0319166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f820152600061463d614630614607602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6001600160601b0319861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526146fc6146306146076145de6146d3601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6001600160601b0319861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b600582015290506147d26147a9600683016146aa565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b6000815160005b818110156147ff57602081850181015186830152016147e5565b8181111561480e576000828601525b509290920192915050565b6000612e1e82846147de565b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b038084168061489757614897614867565b92169190910492915050565b60006001600160401b03838116908316818110156148c3576148c361442a565b039392505050565b6001600160c01b031984168152818360088301376000910160080190815292915050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60006001600160401b038083168185168083038211156149355761493561442a565b01949350505050565b6bffffffffffffffffffffffff198816815260c06020820152600061496760c08301888a6141d5565b6001600160a01b03969096166040830152506001600160401b039384166060820152918316608083015290911660a0909101529392505050565b6000826149b0576149b0614867565b500690565b6000826149c4576149c4614867565b500490565b600060ff821660ff84168060ff038211156149e6576149e661442a565b019392505050565b600060ff821660ff841680821015614a0857614a0861442a565b90039392505050565b6001600160601b0319831681526000612c4260148301846147de56fea2646970667358221220d0c71cedaffd0031682dd2f33400bfd36c686a127cfc56c4da7dc0369d95ce7164736f6c63430008090033",
1492
+ "bytecode": "0x6101006040523480156200001257600080fd5b50604051620063d8380380620063d88339810160408190526200003591620005c2565b620000403362000555565b6001600160a01b0385166200009c5760405162461bcd60e51b815260206004820152601b60248201527f42616e6b20616464726573732063616e6e6f74206265207a65726f000000000060448201526064015b60405180910390fd5b6001600160a01b0380861660a0528416620000fa5760405162461bcd60e51b815260206004820152601c60248201527f52656c617920616464726573732063616e6e6f74206265207a65726f00000000604482015260640162000093565b6001600160a01b0380851660c0528316620001585760405162461bcd60e51b815260206004820152601f60248201527f547265617375727920616464726573732063616e6e6f74206265207a65726f00604482015260640162000093565b6001600160a01b03831660e052608081905260008054600160a01b600160e01b031916613d0960a61b1790557907d000000000000f424000000000000003e800000000000007d0600155600280546103e86001600160401b03199091161790556202a300600355604051630848fc7160e21b81526009600482015269021e19e0c9bab2400000602482015273__$d790fbbb73aa5f15b682a7376a512ac8e4$__90632123f1c49060440160006040518083038186803b1580156200021b57600080fd5b505af415801562000230573d6000803e3d6000fd5b5050604051635452278760e01b8152600960048201526064602482015273__$d790fbbb73aa5f15b682a7376a512ac8e4$__92506354522787915060440160006040518083038186803b1580156200028757600080fd5b505af41580156200029c573d6000803e3d6000fd5b5050604051634039940360e01b81526009600482015262093a80602482015273__$d790fbbb73aa5f15b682a7376a512ac8e4$__92506340399403915060440160006040518083038186803b158015620002f557600080fd5b505af41580156200030a573d6000803e3d6000fd5b505060405163e6d20d4560e01b815260096004820152671bc16d674ec80000602482015273__$d790fbbb73aa5f15b682a7376a512ac8e4$__925063e6d20d45915060440160006040518083038186803b1580156200036857600080fd5b505af41580156200037d573d6000803e3d6000fd5b505060405163f832341d60e01b8152600e60048201526001600160a01b038516602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__925063f832341d915060440160006040518083038186803b158015620003dc57600080fd5b505af4158015620003f1573d6000803e3d6000fd5b505060405163041aee9960e01b8152600e600482015262093a80602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__925063041aee99915060440160006040518083038186803b1580156200044a57600080fd5b505af41580156200045f573d6000803e3d6000fd5b5050604051632662d59360e21b8152600e60048201526305f5e1006024820152633b9aca00604482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__925063998b564c915060640160006040518083038186803b158015620004c357600080fd5b505af4158015620004d8573d6000803e3d6000fd5b505060405163117665a760e21b8152600e600482015262eff100602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__92506345d9969c915060440160006040518083038186803b1580156200053157600080fd5b505af415801562000546573d6000803e3d6000fd5b50505050505050505062000629565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620005bd57600080fd5b919050565b600080600080600060a08688031215620005db57600080fd5b620005e686620005a5565b9450620005f660208701620005a5565b93506200060660408701620005a5565b92506200061660608701620005a5565b9150608086015190509295509295909350565b60805160a05160c05160e051615d28620006b060003960008181610616015281816110cc01528181611d34015261235001526000818161094701528181612eb00152612f4a01526000818161068a01528181611039015281816110fb015281816122b7015281816123880152612add0152600081816104010152612fe00152615d286000f3fe60806040526004361061026a5760003560e01c8063793bb47311610153578063b34b3216116100cb578063d95027b71161007f578063e95eb7a811610064578063e95eb7a814610a27578063f2fde38b14610a4e578063fd56208014610a6e57600080fd5b8063d95027b7146109d7578063e53c0b55146109f757600080fd5b8063bdf9fca9116100b0578063bdf9fca914610969578063cb7f3a0914610990578063d6eccdf0146109b757600080fd5b8063b34b321614610915578063b59589d11461093557600080fd5b8063a145e2d511610122578063a8fa0f4211610107578063a8fa0f42146107f3578063b02c43d014610813578063b2146cd6146108d557600080fd5b8063a145e2d5146107b3578063a588f059146107d357600080fd5b8063793bb473146106cc5780638da5cb5b146107085780638dd0f79a146107265780638fa4ad281461078657600080fd5b806359a9d90a116101e657806361d027b3116101b5578063715018a61161019a578063715018a61461066357806376cdb03b1461067857806377145f21146106ac57600080fd5b806361d027b3146106045780636d02b43c1461065057600080fd5b806359a9d90a1461057d5780635afb143c1461059d5780635c0b4812146105c457806360d712fc146105e457600080fd5b80632bb818c21161023d5780633dce9812116102225780633dce981214610502578063575e427914610524578063595ff9ff1461054457600080fd5b80632bb818c2146103ef57806333e957cb1461042357600080fd5b806303d952f71461026f578063079bf52c146103275780630b6ba19d1461035f5780631fff4e70146103cb575b600080fd5b34801561027b57600080fd5b506102db61028a366004614d40565b600760205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b604080516001600160a01b0390961686526001600160401b0394851660208701529284169285019290925291909116606083015263ffffffff16608082015260a0015b60405180910390f35b34801561033357600080fd5b50600154610347906001600160401b031681565b6040516001600160401b03909116815260200161031e565b34801561036b57600080fd5b506102db61037a366004614d40565b600860205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b3480156103d757600080fd5b506103e160035481565b60405190815260200161031e565b3480156103fb57600080fd5b506103e17f000000000000000000000000000000000000000000000000000000000000000081565b34801561042f57600080fd5b506104be61043e366004614d40565b604080516080810182526000808252602082018190529181018290526060810191909152506000908152600d6020908152604091829020825160808101845281546001600160a01b031681526001820154928101929092526002015463ffffffff81169282019290925264010000000090910460ff161515606082015290565b60405161031e919081516001600160a01b031681526020808301519082015260408083015163ffffffff169082015260609182015115159181019190915260800190565b34801561050e57600080fd5b5061052261051d366004614d59565b610a8e565b005b34801561053057600080fd5b5061052261053f366004614dba565b610b1e565b34801561055057600080fd5b50600954600a54600b54600c5460408051948552602085019390935291830152606082015260800161031e565b34801561058957600080fd5b50610522610598366004614e00565b610ba7565b3480156105a957600080fd5b5060005461034790600160a01b90046001600160401b031681565b3480156105d057600080fd5b506105226105df366004614e6b565b611168565b3480156105f057600080fd5b506105226105ff366004614eec565b61185d565b34801561061057600080fd5b506106387f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161031e565b61052261065e366004614f57565b611916565b34801561066f57600080fd5b50610522611b1e565b34801561068457600080fd5b506106387f000000000000000000000000000000000000000000000000000000000000000081565b3480156106b857600080fd5b506105226106c7366004614fb4565b611b84565b3480156106d857600080fd5b50600f546c01000000000000000000000000900460601b6040516001600160601b0319909116815260200161031e565b34801561071457600080fd5b506000546001600160a01b0316610638565b34801561073257600080fd5b50600e54600f546040805163ffffffff600160a01b8504811682526001600160401b03600160c01b9095048516602083015293831691810191909152600160401b909104909116606082015260800161031e565b34801561079257600080fd5b506107a66107a1366004615034565b611d94565b60405161031e9190615065565b3480156107bf57600080fd5b506105226107ce3660046150de565b611e7b565b3480156107df57600080fd5b50600254610347906001600160401b031681565b3480156107ff57600080fd5b5061052261080e366004614d59565b611f01565b34801561081f57600080fd5b5061088561082e366004614d40565b600560205260009081526040902080546001909101546001600160a01b03808316926001600160401b03600160a01b80830482169463ffffffff600160e01b94859004811695821694928204909316929190041686565b604080516001600160a01b0397881681526001600160401b03968716602082015263ffffffff958616918101919091529590921660608601529290921660808401521660a082015260c00161031e565b3480156108e157600080fd5b506109056108f0366004614d40565b60066020526000908152604090205460ff1681565b604051901515815260200161031e565b34801561092157600080fd5b506105226109303660046150fa565b611f67565b34801561094157600080fd5b506106387f000000000000000000000000000000000000000000000000000000000000000081565b34801561097557600080fd5b5060015461034790600160801b90046001600160401b031681565b34801561099c57600080fd5b5060015461034790600160401b90046001600160401b031681565b3480156109c357600080fd5b506105226109d236600461518b565b6123f0565b3480156109e357600080fd5b506105226109f23660046151f5565b612b4e565b348015610a0357600080fd5b50610905610a12366004615240565b60046020526000908152604090205460ff1681565b348015610a3357600080fd5b5060015461034790600160c01b90046001600160401b031681565b348015610a5a57600080fd5b50610522610a69366004615240565b612ba5565b348015610a7a57600080fd5b50610522610a8936600461526f565b612c87565b6040517f1803c09e000000000000000000000000000000000000000000000000000000008152600e6004820152602481018390526044810182905273__$0f118c52967a3847a37f0a2ef02ffcee04$__90631803c09e906064015b60006040518083038186803b158015610b0157600080fd5b505af4158015610b15573d6000803e3d6000fd5b50505050505050565b6040517f9655f02b00000000000000000000000000000000000000000000000000000000815273__$0f118c52967a3847a37f0a2ef02ffcee04$__90639655f02b90610b7390600e90869086906004016152f1565b60006040518083038186803b158015610b8b57600080fd5b505af4158015610b9f573d6000803e3d6000fd5b505050505050565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae1348585610bcd612e8a565b6040518463ffffffff1660e01b8152600401610beb9392919061539b565b60206040518083038186803b158015610c0357600080fd5b505af4158015610c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3b9190615496565b9050600080610c8a610c5060408801886154af565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061300792505050565b6001600160601b0319821660009081526010602090815260408083208151606081018352848152928301849052908201929092526001820154939550919350918015610daa57808735610ce360408a0160208b016154f5565b610cf360608b0160408c01615510565b604051602001610d309392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014610d985760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064015b60405180910390fd5b610da736889003880188615541565b91505b6000610df8610dbc60208c018c6154af565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525087925061313a915050565b905060008080610e1b8460000151896001600160401b031686604001515161371a565b6001549193509150600160401b90046001600160401b0316610e3d82846155c9565b1115610e8b5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f206869676800000000006044820152606401610d8f565b60005b846040015151811015610f795760006001866040015151610eaf91906155e1565b8214610ebb5783610ec5565b610ec583856155c9565b90508086606001518381518110610ede57610ede6155f8565b602002602001015187604001518481518110610efc57610efc6155f8565b6020026020010151610f0e91906155e1565b610f1891906155e1565b86604001518381518110610f2e57610f2e6155f8565b60200260200101818152505085606001518281518110610f5057610f506155f8565b602002602001015185610f6391906155c9565b9450508080610f719061560e565b915050610e8e565b5060408051602081018c90526000918101919091526001600160c01b031960c08a901b166044820152604c0160408051808303601f19018152828252805160209182012060018b01556001600160601b03198c16835282018c90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a1602084015160408086015190517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263266a123a9261106c92600401615629565b600060405180830381600087803b15801561108657600080fd5b505af115801561109a573d6000803e3d6000fd5b50506040517f5b86f5990000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169250635b86f5999150604401600060405180830381600087803b15801561114157600080fd5b505af1158015611155573d6000803e3d6000fd5b5050505050505050505050505050505050565b600061117a60e0830160c08401615240565b6001600160a01b031614806111bc57506004600061119e60e0840160c08501615240565b6001600160a01b0316815260208101919091526040016000205460ff165b6112085760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f7420747275737465640000000000000000000000006044820152606401610d8f565b600061121a6040830160208401615240565b61122a60608401604085016156ad565b61123a6080850160608601615034565b61124a60a0860160808701615034565b61125a60c0870160a088016156d7565b60405160200161126e9594939291906156f2565b60408051601f19818403018152919052905060006112e261129260208501856154f5565b63ffffffff166112a560408701876154af565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506137569050565b905060006112ef82613921565b90508051601414156113755761130483613bc7565b6001600160601b031916611319826000613bee565b6001600160601b031916146113705760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d62797465207363726970742068617368000000000000006044820152606401610d8f565b61146d565b8051602014156114255760028360405161138f91906159a2565b602060405180830381855afa1580156113ac573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113cf9190615496565b6113d882613c04565b146113705760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d62797465207363726970742068617368000000000000006044820152606401610d8f565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e67746800000000000000006044820152606401610d8f565b60006114d261147f60208801886156d7565b61148c60208901896154af565b61149960408b018b6154af565b6114a960808d0160608e016156d7565b6040516020016114be969594939291906159ae565b604051602081830303815290604052613c20565b90506000600581836114e760208a018a6154f5565b60405160200161150e92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff16156115925760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c656400000000000000006044820152606401610d8f565b600061159d85613c47565b6000549091506001600160401b03600160a01b909104811690821610156116065760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616d6f756e7420746f6f20736d616c6c00000000000000006044820152606401610d8f565b81547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b6001600160401b0383160217825561164d6040880160208901615240565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff160217825561169c60e0880160c08901615240565b6001838101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039390931692909217909155546001600160401b03166116e25760006116f8565b6001546116f8906001600160401b031682615a06565b6001830180546001600160401b0392909216600160a01b027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef058361176960208a018a6154f5565b61177960408b0160208c01615240565b8461178a60608d0160408e016156ad565b61179a60808e0160608f01615034565b8d60800160208101906117ad9190615034565b8e60a00160208101906117c091906156d7565b8f60c00160208101906117d39190615240565b60408051998a5263ffffffff90981660208a01526001600160a01b03968716978901979097526001600160401b0390941660608801526001600160c01b031990921660808701526001600160601b031990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b031633146118b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d8f565b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b60006119a361195f600087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613cbd9050565b604080516020601f890181900481028201810190925287815261199e91908989808385018382808284376000920191909152509293925050613cbd9050565b613cc5565b905060006119b082613bc7565b6001600160601b03198116600090815260106020526040902090915060016002820154600160801b900460ff1660048111156119ee576119ee61504f565b1480611a185750600280820154600160801b900460ff166004811115611a1657611a1661504f565b145b611a8a5760405162461bcd60e51b815260206004820152602f60248201527f57616c6c6574206973206e65697468657220696e204c697665206e6f72204d6f60448201527f76696e6746756e647320737461746500000000000000000000000000000000006064820152608401610d8f565b6040517f2a6f2ad800000000000000000000000000000000000000000000000000000000815273__$d790fbbb73aa5f15b682a7376a512ac8e4$__90632a6f2ad890611ae5906009908b908b9088908c908c90600401615a2c565b60006040518083038186803b158015611afd57600080fd5b505af4158015611b11573d6000803e3d6000fd5b5050505050505050505050565b6000546001600160a01b03163314611b785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d8f565b611b826000613d6f565b565b6040517fc945968600000000000000000000000000000000000000000000000000000000815260009073__$d790fbbb73aa5f15b682a7376a512ac8e4$__9063c945968690611be2906009908a908a908a908a908a90600401615a9c565b60206040518083038186803b158015611bfa57600080fd5b505af4158015611c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c329190615496565b600081815260056020526040902060010154909150600160e01b900463ffffffff16151580611c6f575060008181526006602052604090205460ff165b611ce15760405162461bcd60e51b815260206004820152603060248201527f5370656e74205554584f206e6f7420666f756e6420616d6f6e6720636f72726560448201527f63746c79207370656e74205554584f73000000000000000000000000000000006064820152608401610d8f565b6040517f3f31f49f00000000000000000000000000000000000000000000000000000000815273__$d790fbbb73aa5f15b682a7376a512ac8e4$__90633f31f49f90611d5c906009908a908a908a908a907f000000000000000000000000000000000000000000000000000000000000000090600401615adf565b60006040518083038186803b158015611d7457600080fd5b505af4158015611d88573d6000803e3d6000fd5b50505050505050505050565b611dca6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a082015290565b6001600160601b03198216600090815260106020908152604091829020825160c0810184528154815260018201549281019290925260028101546001600160401b0381169383019390935263ffffffff600160401b8404811660608401526c010000000000000000000000008404166080830152909160a083019060ff600160801b909104166004811115611e6157611e6161504f565b6004811115611e7257611e7261504f565b90525092915050565b6040517fb4e671f400000000000000000000000000000000000000000000000000000000815273__$0f118c52967a3847a37f0a2ef02ffcee04$__9063b4e671f490611ece90600e908590600401615b29565b60006040518083038186803b158015611ee657600080fd5b505af4158015611efa573d6000803e3d6000fd5b5050505050565b6040517f4fd7d486000000000000000000000000000000000000000000000000000000008152600e600482015260248101849052604481018390526064810182905273__$0f118c52967a3847a37f0a2ef02ffcee04$__90634fd7d48690608401610ae9565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae1348686611f8d612e8a565b6040518463ffffffff1660e01b8152600401611fab9392919061539b565b60206040518083038186803b158015611fc357600080fd5b505af4158015611fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffb9190615496565b905061204b61200d60208701876154af565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250869150613dcc9050565b6001600160601b0319821660009081526010602052604090206002810154600160801b900460ff1660018160048111156120875761208761504f565b14806120a4575060028160048111156120a2576120a261504f565b145b6121165760405162461bcd60e51b815260206004820152602a60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756473207374617465000000000000000000000000000000000000000000006064820152608401610d8f565b600061216461212860408a018a6154af565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250614047915050565b60608101519091506001600160401b0316156121e45783816040015182606001516040516020016121c29392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f19818403018152919052805160209091012060018401556121ec565b600060018401555b805160028401805460009061220b9084906001600160401b0316615b3d565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe85856040516122759291906001600160601b0319929092168252602082015260400190565b60405180910390a180516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063392aee4390602401600060405180830381600087803b15801561230357600080fd5b505af1158015612317573d6000803e3d6000fd5b5050505060208101516040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160401b0390921660248201527f0000000000000000000000000000000000000000000000000000000000000000909116906356a6d9ef90604401600060405180830381600087803b1580156123ce57600080fd5b505af11580156123e2573d6000803e3d6000fd5b505050505050505050505050565b6001600160601b03198516600090815260106020526040902060016002820154600160801b900460ff16600481111561242b5761242b61504f565b146124785760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c697665207374617465000000006044820152606401610d8f565b6001810154806124f05760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c6560448201527f74000000000000000000000000000000000000000000000000000000000000006064820152608401610d8f565b8086356125036040890160208a016154f5565b61251360608a0160408b01615510565b6040516020016125509392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146125b35760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f2064617461000000000000000000006044820152606401610d8f565b60006125e5600060c01b87876040516020016125d193929190615b65565b604051602081830303815290604052613921565b9050600081511161265e5760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e6461726420747970650000000000000000000000000000000000006064820152608401610d8f565b80805190602001208860405160200161268791906001600160601b031991909116815260140190565b6040516020818303038152906040528051906020012014156127115760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b480000000000000000006064820152608401610d8f565b6001546001600160401b03600160801b909104811690851610156127775760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c00000000006044820152606401610d8f565b600088878760405160200161278e93929190615b89565b60408051808303601f19018152918152815160209283012060008181526007909352912060010154909150600160801b900463ffffffff161561285f5760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a401610d8f565b600154600090600160c01b90046001600160401b031661288057600061289d565b60015461289d90600160c01b90046001600160401b031687615a06565b6002549091506001600160401b03166128b68288615b3d565b6002870180546000906128d39084906001600160401b0316615bad565b82546101009290920a6001600160401b03818102199093169183160217909155600288015416905061290b60608c0160408d01615510565b6001600160401b031610156129625760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e6473000000000000006044820152606401610d8f565b6040805160a081018252338082526001600160401b03808b1660208085019182528783168587019081528784166060870190815263ffffffff4281166080890190815260008d81526007909552938990209751885495518716600160a01b026001600160e01b03199096166001600160a01b03919091161794909417875590516001909601805491519251909316600160801b027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff928516600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216969094169590951794909417939093161790915590517f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d9591612a92918e918d918d91908d9089908990615bd8565b60405180910390a16040517f7c6db49c0000000000000000000000000000000000000000000000000000000081523360048201523060248201526001600160401b03881660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b158015612b2957600080fd5b505af1158015612b3d573d6000803e3d6000fd5b505050505050505050505050505050565b6040517f05cf9ce300000000000000000000000000000000000000000000000000000000815273__$d790fbbb73aa5f15b682a7376a512ac8e4$__906305cf9ce390610ae990600990879087908790600401615c3b565b6000546001600160a01b03163314612bff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d8f565b6001600160a01b038116612c7b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d8f565b612c8481613d6f565b50565b6000546001600160a01b03163314612ce15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d8f565b6040517f041aee99000000000000000000000000000000000000000000000000000000008152600e600482015263ffffffff8516602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__9063041aee999060440160006040518083038186803b158015612d5157600080fd5b505af4158015612d65573d6000803e3d6000fd5b50506040517f998b564c000000000000000000000000000000000000000000000000000000008152600e60048201526001600160401b0380871660248301528516604482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__925063998b564c915060640160006040518083038186803b158015612de457600080fd5b505af4158015612df8573d6000803e3d6000fd5b50506040517f45d9969c000000000000000000000000000000000000000000000000000000008152600e600482015263ffffffff8416602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__92506345d9969c915060440160006040518083038186803b158015612e6c57600080fd5b505af4158015612e80573d6000803e3d6000fd5b5050505050505050565b612eae60405180606001604052806000815260200160008152602001600081525090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f0757600080fd5b505afa158015612f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3f9190615496565b8160000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b158015612fa157600080fd5b505afa158015612fb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd99190615496565b60208201527f0000000000000000000000000000000000000000000000000000000000000000604082015290565b60008060006130158461465c565b9150508060011461308e5760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f75747075740000000000000000000000000000000000000000006064820152608401610d8f565b600061309a8582613756565b90506130a581613c47565b925060006130b282613921565b9050805160141461312b5760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f76652032302062797465730000000000000000000000000000000000000000006064820152608401610d8f565b60208101519450505050915091565b6131656040518060800160405280600081526020016060815260200160608152602001606081525090565b81511515600080806131768761465c565b909250905060006131888360016155c9565b905084156131a05761319b6001836155e1565b6131a2565b815b6001600160401b038111156131b9576131b961552b565b6040519080825280602002602001820160405280156131e2578160200160208202803683370190505b5060208701819052516001600160401b038111156132025761320261552b565b60405190808252806020026020018201604052801561322b578160200160208202803683370190505b5060408701526020860151516001600160401b0381111561324e5761324e61552b565b604051908082528060200260200182016040528015613277578160200160208202803683370190505b5060608701526000805b8381101561361d5760008060006132988d87614673565b92509250925060006005600085856040516020016132cd92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615613509576001810154600160e01b900463ffffffff16156133685760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c726561647920737765707400000000000000000000006044820152606401610d8f565b8b60200151518614156133e35760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610d8f565b6001810180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055805460208d015180516001600160a01b03909216918890811061343c5761343c6155f8565b6001600160a01b039290921660209283029190910190910152805460408d01518051600160a01b9092046001600160401b03169188908110613480576134806155f8565b6020026020010181815250508b6040015186815181106134a2576134a26155f8565b60200260200101518c6000018181516134bb91906155c9565b905250600181015460608d01518051600160a01b9092046001600160401b031691889081106134ec576134ec6155f8565b6020908102919091010152856135018161560e565b9650506135fa565b8915158b15151415801561351d57508c5184145b156135b2578c604001516001600160401b03168c60000181815161354191906155c9565b90525060405160019a508a90600690600090613579908890889060200191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790556135fa565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e707574207479706500000000000000000000000000006044820152606401610d8f565b61360482886155c9565b96505050505080806136159061560e565b915050613281565b50600081116136945760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f736974000000000000000000000000006064820152608401610d8f565b8415158615151461370d5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610d8f565b5050505050505b92915050565b6000808061372885876155e1565b90506137348482615c66565b91508361374183836155e1565b61374b9190615c7a565b925050935093915050565b60606000806137648561465c565b90925090506000198214156137c65760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610d8f565b8084106138155760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e0000000000000000000000000000006044820152606401610d8f565b6000806138238460016155c9565b905060005b868110156138ac5761383a88836146cb565b925060001983141561388e5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610d8f565b61389883836155c9565b9150806138a48161560e565b915050613828565b506138b787826146cb565b915060001982141561390b5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610d8f565b61391687828461473a565b979650505050505050565b6060600082600881518110613938576139386155f8565b0160200151835160f89190911c9150613952826009615c8e565b60ff1614613970575050604080516020810190915260008152919050565b82600981518110613983576139836155f8565b016020015160f81c613a295760028160ff1610156139b1575050604080516020810190915260008152919050565b600083600a815181106139c6576139c66155f8565b016020015160f81c90506139db600283615cb3565b60ff16811415806139f95750806020141580156139f9575080601414155b15613a1557505060408051602081019091526000815292915050565b613a2184600b8361473a565b949350505050565b6000613a36846008613bee565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415613b135783600b81518110613a9557613a956155f8565b60209101015160f81c6014141580613aea5750613ac060028551613ab991906155e1565b8590613bee565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b15613b0657505060408051602081019091526000815292915050565b613a2184600c601461473a565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415613bb0578360018551613b6c91906155e1565b81518110613b7c57613b7c6155f8565b60209101015160f81c608714613ba357505060408051602081019091526000815292915050565b613a2184600b601461473a565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000613bfd8383016020015190565b9392505050565b6000815160001415613c1857506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600080613c5383614804565b60c01c90506000613a218264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b016020015190565b60606000613cd4600284615c66565b613cff57507f0200000000000000000000000000000000000000000000000000000000000000613d22565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160601b0319811660009081526010602052604090206001015480613e365760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c65740000006044820152606401610d8f565b808335613e4960408601602087016154f5565b613e596060870160408801615510565b604051602001613e969392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014613ef95760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f2064617461000000000000000000006044820152606401610d8f565b600080613f0586614810565b9092509050843582148015613f34575063ffffffff8116613f2c60408701602088016154f5565b63ffffffff16145b613fcc5760405162461bcd60e51b815260206004820152604160248201527f526564656d7074696f6e207472616e73616374696f6e20696e707574206d757360448201527f7420706f696e7420746f207468652077616c6c65742773206d61696e2055545860648201527f4f00000000000000000000000000000000000000000000000000000000000000608482015260a401610d8f565b6001600660008735613fe460408a0160208b016154f5565b60405160200161400b92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055505050505050565b604080516080810182526000808252602082018190529181018290526060810182905290806140758561465c565b909250905060006140878360016155c9565b604080517f1976a914000000000000000000000000000000000000000000000000000000006020808301919091526001600160601b031989166024830181905261222b60f21b60388401528351601a818503018152603a840185528051908301207f1600140000000000000000000000000000000000000000000000000000000000605a850152605d8401919091528351605181850301815260719093019093528151910120919250906000805b858110156145e55760006141498b876146cb565b905060006141588c888461473a565b9050600061416582613c47565b90506000614183600880855161417b91906155e1565b85919061473a565b90508b606001516001600160401b031660001480156141b65750805160208201208814806141b657508051602082012087145b80156141cb57506000826001600160401b0316115b156141f05763ffffffff851660408d01526001600160401b03821660608d01526145c2565b60008d82604051602001614205929190615cd6565b60408051808303601f19018152918152815160209283012060008181526007909352912060010154909150600160801b900463ffffffff161561440f57600081815260076020526040812060018101548154919291614277916001600160401b0390811691600160a01b900416615b3d565b60018301549091506001600160401b038087169161429e91600160401b9091041683615b3d565b6001600160401b0316111580156142c75750806001600160401b0316856001600160401b031611155b61435f5760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a401610d8f565b808f6000018181516143719190615bad565b9150906001600160401b031690816001600160401b0316815250508160010160009054906101000a90046001600160401b03168f6020018181516143b59190615bad565b6001600160401b0316905250600083815260076020526040902080546001600160e01b0319168155600101805473ffffffffffffffffffffffffffffffffffffffff19169055886144058161560e565b99505050506145c0565b60008181526008602052604090206001810154600160801b900463ffffffff166144a05760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e000000000000000000000000000000000000000000000000000000006064820152608401610d8f565b600181015481546000916144c8916001600160401b0391821691600160a01b90910416615b3d565b60018301549091506001600160401b03808716916144ef91600160401b9091041683615b3d565b6001600160401b0316111580156145185750806001600160401b0316856001600160401b031611155b6145b05760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a401610d8f565b886145ba8161560e565b99505050505b505b6145cc848a6155c9565b98505050505080806145dd9061560e565b915050614135565b506000811161370d5760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e00000000006064820152608401610d8f565b60008061466a8360006148c5565b91509150915091565b600080806146818585613bee565b92506146b66146908686614a41565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b91506146c28585614a58565b90509250925092565b60006146d88260096155c9565b835110156146e95750600019613714565b600080614700856146fb8660086155c9565b6148c5565b909250905060001982141561471b5760001992505050613714565b806147278360096155c9565b61473191906155c9565b95945050505050565b6060816147565750604080516020810190915260008152613bfd565b600061476283856155c9565b90508381118015614774575080855110155b6147c05760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610d8f565b604051915082604083010160405282825283850182038460208701018481015b808210156147f9578151838301526020820191506147e0565b505050509392505050565b60006137148282613bee565b600080600061481e8461465c565b915050806001146148975760405162461bcd60e51b815260206004820152602f60248201527f526564656d7074696f6e207472616e73616374696f6e206d757374206861766560448201527f20612073696e676c6520696e70757400000000000000000000000000000000006064820152608401610d8f565b60006148a38582614aa3565b90506148ae81614c58565b93506148bc61469082614c65565b92505050915091565b60008060006148d48585614c72565b905060ff81166149065760008585815181106148f2576148f26155f8565b016020015190935060f81c9150614a3a9050565b83614912826001615c8e565b60ff1661491f91906155c9565b855110156149365760001960009250925050614a3a565b60008160ff166002141561497b5761497061495c6149558760016155c9565b8890613bee565b62ffff0060e882901c1660f89190911c1790565b61ffff169050614a30565b8160ff16600414156149a5576149986146906149558760016155c9565b63ffffffff169050614a30565b8160ff1660081415614a3057614a246149c26149558760016155c9565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b6000613bfd614a518360206155c9565b8490613bee565b6000806000614a678585614cfe565b9092509050600019821415614a825760001992505050613714565b80614a8e8360256155c9565b614a9891906155c9565b6147319060046155c9565b6060600080614ab18561465c565b9092509050600019821415614b135760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610d8f565b808410614b625760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e000000000000000000000000000000006044820152606401610d8f565b600080614b708460016155c9565b905060005b86811015614bf957614b878883614a58565b9250600019831415614bdb5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e207363726970745369670000000000000000006044820152606401610d8f565b614be583836155c9565b915080614bf18161560e565b915050614b75565b50614c048782614a58565b915060001982141561390b5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e207363726970745369670000000000000000006044820152606401610d8f565b6020810151600090613714565b6000613714826020613bee565b6000828281518110614c8657614c866155f8565b60209101015160f81c60ff1415614c9f57506008613714565b828281518110614cb157614cb16155f8565b60209101015160f81c60fe1415614cca57506004613714565b828281518110614cdc57614cdc6155f8565b60209101015160f81c60fd1415614cf557506002613714565b50600092915050565b600080614d0c8360256155c9565b84511015614d21575060001990506000614a3a565b600080614d33866146fb8760246155c9565b9097909650945050505050565b600060208284031215614d5257600080fd5b5035919050565b600080600060608486031215614d6e57600080fd5b505081359360208301359350604090920135919050565b80356001600160601b031981168114614d9d57600080fd5b919050565b600060608284031215614db457600080fd5b50919050565b60008060808385031215614dcd57600080fd5b614dd683614d85565b9150614de58460208501614da2565b90509250929050565b600060808284031215614db457600080fd5b600080600060a08486031215614e1557600080fd5b83356001600160401b0380821115614e2c57600080fd5b614e3887838801614dee565b94506020860135915080821115614e4e57600080fd5b50614e5b86828701614da2565b9250506146c28560408601614da2565b600080828403610100811215614e8057600080fd5b83356001600160401b03811115614e9657600080fd5b614ea286828701614dee565b93505060e0601f1982011215614eb757600080fd5b506020830190509250929050565b80356001600160a01b0381168114614d9d57600080fd5b80358015158114614d9d57600080fd5b60008060408385031215614eff57600080fd5b614f0883614ec5565b9150614de560208401614edc565b60008083601f840112614f2857600080fd5b5081356001600160401b03811115614f3f57600080fd5b602083019150836020828501011115614a3a57600080fd5b60008060008060a08587031215614f6d57600080fd5b84356001600160401b03811115614f8357600080fd5b614f8f87828801614f16565b90955093505060208501359150614fa98660408701614da2565b905092959194509250565b600080600080600060608688031215614fcc57600080fd5b85356001600160401b0380821115614fe357600080fd5b614fef89838a01614f16565b9097509550602088013591508082111561500857600080fd5b5061501588828901614f16565b9094509250615028905060408701614edc565b90509295509295909350565b60006020828403121561504657600080fd5b613bfd82614d85565b634e487b7160e01b600052602160045260246000fd5b600060c08201905082518252602083015160208301526001600160401b036040840151166040830152606083015163ffffffff8082166060850152806080860151166080850152505060a0830151600581106150d157634e487b7160e01b600052602160045260246000fd5b8060a08401525092915050565b6000606082840312156150f057600080fd5b613bfd8383614da2565b60008060008060c0858703121561511057600080fd5b84356001600160401b038082111561512757600080fd5b61513388838901614dee565b9550602087013591508082111561514957600080fd5b5061515687828801614da2565b9350506151668660408701614da2565b9150614fa960a08601614d85565b80356001600160401b0381168114614d9d57600080fd5b600080600080600060c086880312156151a357600080fd5b6151ac86614d85565b94506151bb8760208801614da2565b935060808601356001600160401b038111156151d657600080fd5b6151e288828901614f16565b9094509250615028905060a08701615174565b60008060006040848603121561520a57600080fd5b83356001600160401b0381111561522057600080fd5b61522c86828701614f16565b909790965060209590950135949350505050565b60006020828403121561525257600080fd5b613bfd82614ec5565b803563ffffffff81168114614d9d57600080fd5b6000806000806080858703121561528557600080fd5b61528e8561525b565b935061529c60208601615174565b92506152aa60408601615174565b9150614fa96060860161525b565b8035825263ffffffff6152cd6020830161525b565b1660208301526001600160401b036152e760408301615174565b1660408301525050565b8381526001600160601b03198316602082015260a08101613a2160408301846152b8565b80356001600160e01b031981168114614d9d57600080fd5b6000808335601e1984360301811261534457600080fd5b83016020810192503590506001600160401b0381111561536357600080fd5b803603831315614a3a57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a0815260006001600160e01b0319806153b487615315565b1660a08401526153c7602087018761532d565b608060c08601526153dd61012086018284615372565b9150506153ed604088018861532d565b858303609f190160e0870152615404838284615372565b925050508161541560608901615315565b16610100850152838103602085015261542e868761532d565b925060608252615442606083018483615372565b9250506020860135602082015261545c604087018761532d565b828403604084015261546f848284615372565b945050505050613a2160408301848051825260208082015190830152604090810151910152565b6000602082840312156154a857600080fd5b5051919050565b6000808335601e198436030181126154c657600080fd5b8301803591506001600160401b038211156154e057600080fd5b602001915036819003821315614a3a57600080fd5b60006020828403121561550757600080fd5b613bfd8261525b565b60006020828403121561552257600080fd5b613bfd82615174565b634e487b7160e01b600052604160045260246000fd5b60006060828403121561555357600080fd5b604051606081018181106001600160401b038211171561558357634e487b7160e01b600052604160045260246000fd5b604052823581526155966020840161525b565b60208201526155a760408401615174565b60408201529392505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156155dc576155dc6155b3565b500190565b6000828210156155f3576155f36155b3565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615622576156226155b3565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561566b5781516001600160a01b031684529284019290840190600101615646565b5050508381038285015284518082528583019183019060005b818110156156a057835183529284019291840191600101615684565b5090979650505050505050565b6000602082840312156156bf57600080fd5b81356001600160c01b031981168114613bfd57600080fd5b6000602082840312156156e957600080fd5b613bfd82615315565b600560fa1b8152606086901b6001600160601b0319166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f82015260006157c66157b9615790602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6001600160601b0319861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526158856157b961579061576761585c601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6001600160601b0319861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b6005820152905061595b61593260068301615833565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b6000815160005b81811015615988576020818501810151868301520161596e565b81811115615997576000828601525b509290920192915050565b6000613bfd8284615967565b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680615a2057615a206159f0565b92169190910492915050565b86815260e060208201526000615a4660e083018789615372565b90506bffffffffffffffffffffffff198516604083015283606083015282356080830152602083013560a0830152604083013560ff8116808214615a8957600080fd5b8060c08501525050979650505050505050565b868152608060208201526000615ab6608083018789615372565b8281036040840152615ac9818688615372565b9150508215156060830152979650505050505050565b868152608060208201526000615af9608083018789615372565b8281036040840152615b0c818688615372565b9150506001600160a01b0383166060830152979650505050505050565b82815260808101613bfd60208301846152b8565b60006001600160401b0383811690831681811015615b5d57615b5d6155b3565b039392505050565b6001600160c01b031984168152818360088301376000910160080190815292915050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60006001600160401b03808316818516808303821115615bcf57615bcf6155b3565b01949350505050565b6bffffffffffffffffffffffff198816815260c060208201526000615c0160c08301888a615372565b6001600160a01b03969096166040830152506001600160401b039384166060820152918316608083015290911660a0909101529392505050565b848152606060208201526000615c55606083018587615372565b905082604083015295945050505050565b600082615c7557615c756159f0565b500690565b600082615c8957615c896159f0565b500490565b600060ff821660ff84168060ff03821115615cab57615cab6155b3565b019392505050565b600060ff821660ff841680821015615ccd57615ccd6155b3565b90039392505050565b6001600160601b0319831681526000613a21601483018461596756fea2646970667358221220f33fcd48f544ad04e83d3505d88e2e14cad20f0d3f740e34ef428e53744a04bc64736f6c63430008090033",
1493
+ "deployedBytecode": "0x60806040526004361061026a5760003560e01c8063793bb47311610153578063b34b3216116100cb578063d95027b71161007f578063e95eb7a811610064578063e95eb7a814610a27578063f2fde38b14610a4e578063fd56208014610a6e57600080fd5b8063d95027b7146109d7578063e53c0b55146109f757600080fd5b8063bdf9fca9116100b0578063bdf9fca914610969578063cb7f3a0914610990578063d6eccdf0146109b757600080fd5b8063b34b321614610915578063b59589d11461093557600080fd5b8063a145e2d511610122578063a8fa0f4211610107578063a8fa0f42146107f3578063b02c43d014610813578063b2146cd6146108d557600080fd5b8063a145e2d5146107b3578063a588f059146107d357600080fd5b8063793bb473146106cc5780638da5cb5b146107085780638dd0f79a146107265780638fa4ad281461078657600080fd5b806359a9d90a116101e657806361d027b3116101b5578063715018a61161019a578063715018a61461066357806376cdb03b1461067857806377145f21146106ac57600080fd5b806361d027b3146106045780636d02b43c1461065057600080fd5b806359a9d90a1461057d5780635afb143c1461059d5780635c0b4812146105c457806360d712fc146105e457600080fd5b80632bb818c21161023d5780633dce9812116102225780633dce981214610502578063575e427914610524578063595ff9ff1461054457600080fd5b80632bb818c2146103ef57806333e957cb1461042357600080fd5b806303d952f71461026f578063079bf52c146103275780630b6ba19d1461035f5780631fff4e70146103cb575b600080fd5b34801561027b57600080fd5b506102db61028a366004614d40565b600760205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b604080516001600160a01b0390961686526001600160401b0394851660208701529284169285019290925291909116606083015263ffffffff16608082015260a0015b60405180910390f35b34801561033357600080fd5b50600154610347906001600160401b031681565b6040516001600160401b03909116815260200161031e565b34801561036b57600080fd5b506102db61037a366004614d40565b600860205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b3480156103d757600080fd5b506103e160035481565b60405190815260200161031e565b3480156103fb57600080fd5b506103e17f000000000000000000000000000000000000000000000000000000000000000081565b34801561042f57600080fd5b506104be61043e366004614d40565b604080516080810182526000808252602082018190529181018290526060810191909152506000908152600d6020908152604091829020825160808101845281546001600160a01b031681526001820154928101929092526002015463ffffffff81169282019290925264010000000090910460ff161515606082015290565b60405161031e919081516001600160a01b031681526020808301519082015260408083015163ffffffff169082015260609182015115159181019190915260800190565b34801561050e57600080fd5b5061052261051d366004614d59565b610a8e565b005b34801561053057600080fd5b5061052261053f366004614dba565b610b1e565b34801561055057600080fd5b50600954600a54600b54600c5460408051948552602085019390935291830152606082015260800161031e565b34801561058957600080fd5b50610522610598366004614e00565b610ba7565b3480156105a957600080fd5b5060005461034790600160a01b90046001600160401b031681565b3480156105d057600080fd5b506105226105df366004614e6b565b611168565b3480156105f057600080fd5b506105226105ff366004614eec565b61185d565b34801561061057600080fd5b506106387f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161031e565b61052261065e366004614f57565b611916565b34801561066f57600080fd5b50610522611b1e565b34801561068457600080fd5b506106387f000000000000000000000000000000000000000000000000000000000000000081565b3480156106b857600080fd5b506105226106c7366004614fb4565b611b84565b3480156106d857600080fd5b50600f546c01000000000000000000000000900460601b6040516001600160601b0319909116815260200161031e565b34801561071457600080fd5b506000546001600160a01b0316610638565b34801561073257600080fd5b50600e54600f546040805163ffffffff600160a01b8504811682526001600160401b03600160c01b9095048516602083015293831691810191909152600160401b909104909116606082015260800161031e565b34801561079257600080fd5b506107a66107a1366004615034565b611d94565b60405161031e9190615065565b3480156107bf57600080fd5b506105226107ce3660046150de565b611e7b565b3480156107df57600080fd5b50600254610347906001600160401b031681565b3480156107ff57600080fd5b5061052261080e366004614d59565b611f01565b34801561081f57600080fd5b5061088561082e366004614d40565b600560205260009081526040902080546001909101546001600160a01b03808316926001600160401b03600160a01b80830482169463ffffffff600160e01b94859004811695821694928204909316929190041686565b604080516001600160a01b0397881681526001600160401b03968716602082015263ffffffff958616918101919091529590921660608601529290921660808401521660a082015260c00161031e565b3480156108e157600080fd5b506109056108f0366004614d40565b60066020526000908152604090205460ff1681565b604051901515815260200161031e565b34801561092157600080fd5b506105226109303660046150fa565b611f67565b34801561094157600080fd5b506106387f000000000000000000000000000000000000000000000000000000000000000081565b34801561097557600080fd5b5060015461034790600160801b90046001600160401b031681565b34801561099c57600080fd5b5060015461034790600160401b90046001600160401b031681565b3480156109c357600080fd5b506105226109d236600461518b565b6123f0565b3480156109e357600080fd5b506105226109f23660046151f5565b612b4e565b348015610a0357600080fd5b50610905610a12366004615240565b60046020526000908152604090205460ff1681565b348015610a3357600080fd5b5060015461034790600160c01b90046001600160401b031681565b348015610a5a57600080fd5b50610522610a69366004615240565b612ba5565b348015610a7a57600080fd5b50610522610a8936600461526f565b612c87565b6040517f1803c09e000000000000000000000000000000000000000000000000000000008152600e6004820152602481018390526044810182905273__$0f118c52967a3847a37f0a2ef02ffcee04$__90631803c09e906064015b60006040518083038186803b158015610b0157600080fd5b505af4158015610b15573d6000803e3d6000fd5b50505050505050565b6040517f9655f02b00000000000000000000000000000000000000000000000000000000815273__$0f118c52967a3847a37f0a2ef02ffcee04$__90639655f02b90610b7390600e90869086906004016152f1565b60006040518083038186803b158015610b8b57600080fd5b505af4158015610b9f573d6000803e3d6000fd5b505050505050565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae1348585610bcd612e8a565b6040518463ffffffff1660e01b8152600401610beb9392919061539b565b60206040518083038186803b158015610c0357600080fd5b505af4158015610c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3b9190615496565b9050600080610c8a610c5060408801886154af565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061300792505050565b6001600160601b0319821660009081526010602090815260408083208151606081018352848152928301849052908201929092526001820154939550919350918015610daa57808735610ce360408a0160208b016154f5565b610cf360608b0160408c01615510565b604051602001610d309392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014610d985760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064015b60405180910390fd5b610da736889003880188615541565b91505b6000610df8610dbc60208c018c6154af565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525087925061313a915050565b905060008080610e1b8460000151896001600160401b031686604001515161371a565b6001549193509150600160401b90046001600160401b0316610e3d82846155c9565b1115610e8b5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f206869676800000000006044820152606401610d8f565b60005b846040015151811015610f795760006001866040015151610eaf91906155e1565b8214610ebb5783610ec5565b610ec583856155c9565b90508086606001518381518110610ede57610ede6155f8565b602002602001015187604001518481518110610efc57610efc6155f8565b6020026020010151610f0e91906155e1565b610f1891906155e1565b86604001518381518110610f2e57610f2e6155f8565b60200260200101818152505085606001518281518110610f5057610f506155f8565b602002602001015185610f6391906155c9565b9450508080610f719061560e565b915050610e8e565b5060408051602081018c90526000918101919091526001600160c01b031960c08a901b166044820152604c0160408051808303601f19018152828252805160209182012060018b01556001600160601b03198c16835282018c90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a1602084015160408086015190517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263266a123a9261106c92600401615629565b600060405180830381600087803b15801561108657600080fd5b505af115801561109a573d6000803e3d6000fd5b50506040517f5b86f5990000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169250635b86f5999150604401600060405180830381600087803b15801561114157600080fd5b505af1158015611155573d6000803e3d6000fd5b5050505050505050505050505050505050565b600061117a60e0830160c08401615240565b6001600160a01b031614806111bc57506004600061119e60e0840160c08501615240565b6001600160a01b0316815260208101919091526040016000205460ff165b6112085760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f7420747275737465640000000000000000000000006044820152606401610d8f565b600061121a6040830160208401615240565b61122a60608401604085016156ad565b61123a6080850160608601615034565b61124a60a0860160808701615034565b61125a60c0870160a088016156d7565b60405160200161126e9594939291906156f2565b60408051601f19818403018152919052905060006112e261129260208501856154f5565b63ffffffff166112a560408701876154af565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506137569050565b905060006112ef82613921565b90508051601414156113755761130483613bc7565b6001600160601b031916611319826000613bee565b6001600160601b031916146113705760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d62797465207363726970742068617368000000000000006044820152606401610d8f565b61146d565b8051602014156114255760028360405161138f91906159a2565b602060405180830381855afa1580156113ac573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113cf9190615496565b6113d882613c04565b146113705760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d62797465207363726970742068617368000000000000006044820152606401610d8f565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e67746800000000000000006044820152606401610d8f565b60006114d261147f60208801886156d7565b61148c60208901896154af565b61149960408b018b6154af565b6114a960808d0160608e016156d7565b6040516020016114be969594939291906159ae565b604051602081830303815290604052613c20565b90506000600581836114e760208a018a6154f5565b60405160200161150e92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff16156115925760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c656400000000000000006044820152606401610d8f565b600061159d85613c47565b6000549091506001600160401b03600160a01b909104811690821610156116065760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616d6f756e7420746f6f20736d616c6c00000000000000006044820152606401610d8f565b81547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b6001600160401b0383160217825561164d6040880160208901615240565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff160217825561169c60e0880160c08901615240565b6001838101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039390931692909217909155546001600160401b03166116e25760006116f8565b6001546116f8906001600160401b031682615a06565b6001830180546001600160401b0392909216600160a01b027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef058361176960208a018a6154f5565b61177960408b0160208c01615240565b8461178a60608d0160408e016156ad565b61179a60808e0160608f01615034565b8d60800160208101906117ad9190615034565b8e60a00160208101906117c091906156d7565b8f60c00160208101906117d39190615240565b60408051998a5263ffffffff90981660208a01526001600160a01b03968716978901979097526001600160401b0390941660608801526001600160c01b031990921660808701526001600160601b031990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b031633146118b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d8f565b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b60006119a361195f600087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613cbd9050565b604080516020601f890181900481028201810190925287815261199e91908989808385018382808284376000920191909152509293925050613cbd9050565b613cc5565b905060006119b082613bc7565b6001600160601b03198116600090815260106020526040902090915060016002820154600160801b900460ff1660048111156119ee576119ee61504f565b1480611a185750600280820154600160801b900460ff166004811115611a1657611a1661504f565b145b611a8a5760405162461bcd60e51b815260206004820152602f60248201527f57616c6c6574206973206e65697468657220696e204c697665206e6f72204d6f60448201527f76696e6746756e647320737461746500000000000000000000000000000000006064820152608401610d8f565b6040517f2a6f2ad800000000000000000000000000000000000000000000000000000000815273__$d790fbbb73aa5f15b682a7376a512ac8e4$__90632a6f2ad890611ae5906009908b908b9088908c908c90600401615a2c565b60006040518083038186803b158015611afd57600080fd5b505af4158015611b11573d6000803e3d6000fd5b5050505050505050505050565b6000546001600160a01b03163314611b785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d8f565b611b826000613d6f565b565b6040517fc945968600000000000000000000000000000000000000000000000000000000815260009073__$d790fbbb73aa5f15b682a7376a512ac8e4$__9063c945968690611be2906009908a908a908a908a908a90600401615a9c565b60206040518083038186803b158015611bfa57600080fd5b505af4158015611c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c329190615496565b600081815260056020526040902060010154909150600160e01b900463ffffffff16151580611c6f575060008181526006602052604090205460ff165b611ce15760405162461bcd60e51b815260206004820152603060248201527f5370656e74205554584f206e6f7420666f756e6420616d6f6e6720636f72726560448201527f63746c79207370656e74205554584f73000000000000000000000000000000006064820152608401610d8f565b6040517f3f31f49f00000000000000000000000000000000000000000000000000000000815273__$d790fbbb73aa5f15b682a7376a512ac8e4$__90633f31f49f90611d5c906009908a908a908a908a907f000000000000000000000000000000000000000000000000000000000000000090600401615adf565b60006040518083038186803b158015611d7457600080fd5b505af4158015611d88573d6000803e3d6000fd5b50505050505050505050565b611dca6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a082015290565b6001600160601b03198216600090815260106020908152604091829020825160c0810184528154815260018201549281019290925260028101546001600160401b0381169383019390935263ffffffff600160401b8404811660608401526c010000000000000000000000008404166080830152909160a083019060ff600160801b909104166004811115611e6157611e6161504f565b6004811115611e7257611e7261504f565b90525092915050565b6040517fb4e671f400000000000000000000000000000000000000000000000000000000815273__$0f118c52967a3847a37f0a2ef02ffcee04$__9063b4e671f490611ece90600e908590600401615b29565b60006040518083038186803b158015611ee657600080fd5b505af4158015611efa573d6000803e3d6000fd5b5050505050565b6040517f4fd7d486000000000000000000000000000000000000000000000000000000008152600e600482015260248101849052604481018390526064810182905273__$0f118c52967a3847a37f0a2ef02ffcee04$__90634fd7d48690608401610ae9565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae1348686611f8d612e8a565b6040518463ffffffff1660e01b8152600401611fab9392919061539b565b60206040518083038186803b158015611fc357600080fd5b505af4158015611fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffb9190615496565b905061204b61200d60208701876154af565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250869150613dcc9050565b6001600160601b0319821660009081526010602052604090206002810154600160801b900460ff1660018160048111156120875761208761504f565b14806120a4575060028160048111156120a2576120a261504f565b145b6121165760405162461bcd60e51b815260206004820152602a60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756473207374617465000000000000000000000000000000000000000000006064820152608401610d8f565b600061216461212860408a018a6154af565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250614047915050565b60608101519091506001600160401b0316156121e45783816040015182606001516040516020016121c29392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f19818403018152919052805160209091012060018401556121ec565b600060018401555b805160028401805460009061220b9084906001600160401b0316615b3d565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe85856040516122759291906001600160601b0319929092168252602082015260400190565b60405180910390a180516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063392aee4390602401600060405180830381600087803b15801561230357600080fd5b505af1158015612317573d6000803e3d6000fd5b5050505060208101516040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160401b0390921660248201527f0000000000000000000000000000000000000000000000000000000000000000909116906356a6d9ef90604401600060405180830381600087803b1580156123ce57600080fd5b505af11580156123e2573d6000803e3d6000fd5b505050505050505050505050565b6001600160601b03198516600090815260106020526040902060016002820154600160801b900460ff16600481111561242b5761242b61504f565b146124785760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c697665207374617465000000006044820152606401610d8f565b6001810154806124f05760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c6560448201527f74000000000000000000000000000000000000000000000000000000000000006064820152608401610d8f565b8086356125036040890160208a016154f5565b61251360608a0160408b01615510565b6040516020016125509392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146125b35760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f2064617461000000000000000000006044820152606401610d8f565b60006125e5600060c01b87876040516020016125d193929190615b65565b604051602081830303815290604052613921565b9050600081511161265e5760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e6461726420747970650000000000000000000000000000000000006064820152608401610d8f565b80805190602001208860405160200161268791906001600160601b031991909116815260140190565b6040516020818303038152906040528051906020012014156127115760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b480000000000000000006064820152608401610d8f565b6001546001600160401b03600160801b909104811690851610156127775760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c00000000006044820152606401610d8f565b600088878760405160200161278e93929190615b89565b60408051808303601f19018152918152815160209283012060008181526007909352912060010154909150600160801b900463ffffffff161561285f5760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a401610d8f565b600154600090600160c01b90046001600160401b031661288057600061289d565b60015461289d90600160c01b90046001600160401b031687615a06565b6002549091506001600160401b03166128b68288615b3d565b6002870180546000906128d39084906001600160401b0316615bad565b82546101009290920a6001600160401b03818102199093169183160217909155600288015416905061290b60608c0160408d01615510565b6001600160401b031610156129625760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e6473000000000000006044820152606401610d8f565b6040805160a081018252338082526001600160401b03808b1660208085019182528783168587019081528784166060870190815263ffffffff4281166080890190815260008d81526007909552938990209751885495518716600160a01b026001600160e01b03199096166001600160a01b03919091161794909417875590516001909601805491519251909316600160801b027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff928516600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216969094169590951794909417939093161790915590517f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d9591612a92918e918d918d91908d9089908990615bd8565b60405180910390a16040517f7c6db49c0000000000000000000000000000000000000000000000000000000081523360048201523060248201526001600160401b03881660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b158015612b2957600080fd5b505af1158015612b3d573d6000803e3d6000fd5b505050505050505050505050505050565b6040517f05cf9ce300000000000000000000000000000000000000000000000000000000815273__$d790fbbb73aa5f15b682a7376a512ac8e4$__906305cf9ce390610ae990600990879087908790600401615c3b565b6000546001600160a01b03163314612bff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d8f565b6001600160a01b038116612c7b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d8f565b612c8481613d6f565b50565b6000546001600160a01b03163314612ce15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d8f565b6040517f041aee99000000000000000000000000000000000000000000000000000000008152600e600482015263ffffffff8516602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__9063041aee999060440160006040518083038186803b158015612d5157600080fd5b505af4158015612d65573d6000803e3d6000fd5b50506040517f998b564c000000000000000000000000000000000000000000000000000000008152600e60048201526001600160401b0380871660248301528516604482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__925063998b564c915060640160006040518083038186803b158015612de457600080fd5b505af4158015612df8573d6000803e3d6000fd5b50506040517f45d9969c000000000000000000000000000000000000000000000000000000008152600e600482015263ffffffff8416602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__92506345d9969c915060440160006040518083038186803b158015612e6c57600080fd5b505af4158015612e80573d6000803e3d6000fd5b5050505050505050565b612eae60405180606001604052806000815260200160008152602001600081525090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f0757600080fd5b505afa158015612f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3f9190615496565b8160000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b158015612fa157600080fd5b505afa158015612fb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd99190615496565b60208201527f0000000000000000000000000000000000000000000000000000000000000000604082015290565b60008060006130158461465c565b9150508060011461308e5760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f75747075740000000000000000000000000000000000000000006064820152608401610d8f565b600061309a8582613756565b90506130a581613c47565b925060006130b282613921565b9050805160141461312b5760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f76652032302062797465730000000000000000000000000000000000000000006064820152608401610d8f565b60208101519450505050915091565b6131656040518060800160405280600081526020016060815260200160608152602001606081525090565b81511515600080806131768761465c565b909250905060006131888360016155c9565b905084156131a05761319b6001836155e1565b6131a2565b815b6001600160401b038111156131b9576131b961552b565b6040519080825280602002602001820160405280156131e2578160200160208202803683370190505b5060208701819052516001600160401b038111156132025761320261552b565b60405190808252806020026020018201604052801561322b578160200160208202803683370190505b5060408701526020860151516001600160401b0381111561324e5761324e61552b565b604051908082528060200260200182016040528015613277578160200160208202803683370190505b5060608701526000805b8381101561361d5760008060006132988d87614673565b92509250925060006005600085856040516020016132cd92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615613509576001810154600160e01b900463ffffffff16156133685760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c726561647920737765707400000000000000000000006044820152606401610d8f565b8b60200151518614156133e35760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610d8f565b6001810180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055805460208d015180516001600160a01b03909216918890811061343c5761343c6155f8565b6001600160a01b039290921660209283029190910190910152805460408d01518051600160a01b9092046001600160401b03169188908110613480576134806155f8565b6020026020010181815250508b6040015186815181106134a2576134a26155f8565b60200260200101518c6000018181516134bb91906155c9565b905250600181015460608d01518051600160a01b9092046001600160401b031691889081106134ec576134ec6155f8565b6020908102919091010152856135018161560e565b9650506135fa565b8915158b15151415801561351d57508c5184145b156135b2578c604001516001600160401b03168c60000181815161354191906155c9565b90525060405160019a508a90600690600090613579908890889060200191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790556135fa565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e707574207479706500000000000000000000000000006044820152606401610d8f565b61360482886155c9565b96505050505080806136159061560e565b915050613281565b50600081116136945760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f736974000000000000000000000000006064820152608401610d8f565b8415158615151461370d5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610d8f565b5050505050505b92915050565b6000808061372885876155e1565b90506137348482615c66565b91508361374183836155e1565b61374b9190615c7a565b925050935093915050565b60606000806137648561465c565b90925090506000198214156137c65760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610d8f565b8084106138155760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e0000000000000000000000000000006044820152606401610d8f565b6000806138238460016155c9565b905060005b868110156138ac5761383a88836146cb565b925060001983141561388e5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610d8f565b61389883836155c9565b9150806138a48161560e565b915050613828565b506138b787826146cb565b915060001982141561390b5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610d8f565b61391687828461473a565b979650505050505050565b6060600082600881518110613938576139386155f8565b0160200151835160f89190911c9150613952826009615c8e565b60ff1614613970575050604080516020810190915260008152919050565b82600981518110613983576139836155f8565b016020015160f81c613a295760028160ff1610156139b1575050604080516020810190915260008152919050565b600083600a815181106139c6576139c66155f8565b016020015160f81c90506139db600283615cb3565b60ff16811415806139f95750806020141580156139f9575080601414155b15613a1557505060408051602081019091526000815292915050565b613a2184600b8361473a565b949350505050565b6000613a36846008613bee565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415613b135783600b81518110613a9557613a956155f8565b60209101015160f81c6014141580613aea5750613ac060028551613ab991906155e1565b8590613bee565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b15613b0657505060408051602081019091526000815292915050565b613a2184600c601461473a565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415613bb0578360018551613b6c91906155e1565b81518110613b7c57613b7c6155f8565b60209101015160f81c608714613ba357505060408051602081019091526000815292915050565b613a2184600b601461473a565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000613bfd8383016020015190565b9392505050565b6000815160001415613c1857506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600080613c5383614804565b60c01c90506000613a218264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b016020015190565b60606000613cd4600284615c66565b613cff57507f0200000000000000000000000000000000000000000000000000000000000000613d22565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160601b0319811660009081526010602052604090206001015480613e365760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c65740000006044820152606401610d8f565b808335613e4960408601602087016154f5565b613e596060870160408801615510565b604051602001613e969392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014613ef95760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f2064617461000000000000000000006044820152606401610d8f565b600080613f0586614810565b9092509050843582148015613f34575063ffffffff8116613f2c60408701602088016154f5565b63ffffffff16145b613fcc5760405162461bcd60e51b815260206004820152604160248201527f526564656d7074696f6e207472616e73616374696f6e20696e707574206d757360448201527f7420706f696e7420746f207468652077616c6c65742773206d61696e2055545860648201527f4f00000000000000000000000000000000000000000000000000000000000000608482015260a401610d8f565b6001600660008735613fe460408a0160208b016154f5565b60405160200161400b92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055505050505050565b604080516080810182526000808252602082018190529181018290526060810182905290806140758561465c565b909250905060006140878360016155c9565b604080517f1976a914000000000000000000000000000000000000000000000000000000006020808301919091526001600160601b031989166024830181905261222b60f21b60388401528351601a818503018152603a840185528051908301207f1600140000000000000000000000000000000000000000000000000000000000605a850152605d8401919091528351605181850301815260719093019093528151910120919250906000805b858110156145e55760006141498b876146cb565b905060006141588c888461473a565b9050600061416582613c47565b90506000614183600880855161417b91906155e1565b85919061473a565b90508b606001516001600160401b031660001480156141b65750805160208201208814806141b657508051602082012087145b80156141cb57506000826001600160401b0316115b156141f05763ffffffff851660408d01526001600160401b03821660608d01526145c2565b60008d82604051602001614205929190615cd6565b60408051808303601f19018152918152815160209283012060008181526007909352912060010154909150600160801b900463ffffffff161561440f57600081815260076020526040812060018101548154919291614277916001600160401b0390811691600160a01b900416615b3d565b60018301549091506001600160401b038087169161429e91600160401b9091041683615b3d565b6001600160401b0316111580156142c75750806001600160401b0316856001600160401b031611155b61435f5760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a401610d8f565b808f6000018181516143719190615bad565b9150906001600160401b031690816001600160401b0316815250508160010160009054906101000a90046001600160401b03168f6020018181516143b59190615bad565b6001600160401b0316905250600083815260076020526040902080546001600160e01b0319168155600101805473ffffffffffffffffffffffffffffffffffffffff19169055886144058161560e565b99505050506145c0565b60008181526008602052604090206001810154600160801b900463ffffffff166144a05760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e000000000000000000000000000000000000000000000000000000006064820152608401610d8f565b600181015481546000916144c8916001600160401b0391821691600160a01b90910416615b3d565b60018301549091506001600160401b03808716916144ef91600160401b9091041683615b3d565b6001600160401b0316111580156145185750806001600160401b0316856001600160401b031611155b6145b05760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a401610d8f565b886145ba8161560e565b99505050505b505b6145cc848a6155c9565b98505050505080806145dd9061560e565b915050614135565b506000811161370d5760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e00000000006064820152608401610d8f565b60008061466a8360006148c5565b91509150915091565b600080806146818585613bee565b92506146b66146908686614a41565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b91506146c28585614a58565b90509250925092565b60006146d88260096155c9565b835110156146e95750600019613714565b600080614700856146fb8660086155c9565b6148c5565b909250905060001982141561471b5760001992505050613714565b806147278360096155c9565b61473191906155c9565b95945050505050565b6060816147565750604080516020810190915260008152613bfd565b600061476283856155c9565b90508381118015614774575080855110155b6147c05760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610d8f565b604051915082604083010160405282825283850182038460208701018481015b808210156147f9578151838301526020820191506147e0565b505050509392505050565b60006137148282613bee565b600080600061481e8461465c565b915050806001146148975760405162461bcd60e51b815260206004820152602f60248201527f526564656d7074696f6e207472616e73616374696f6e206d757374206861766560448201527f20612073696e676c6520696e70757400000000000000000000000000000000006064820152608401610d8f565b60006148a38582614aa3565b90506148ae81614c58565b93506148bc61469082614c65565b92505050915091565b60008060006148d48585614c72565b905060ff81166149065760008585815181106148f2576148f26155f8565b016020015190935060f81c9150614a3a9050565b83614912826001615c8e565b60ff1661491f91906155c9565b855110156149365760001960009250925050614a3a565b60008160ff166002141561497b5761497061495c6149558760016155c9565b8890613bee565b62ffff0060e882901c1660f89190911c1790565b61ffff169050614a30565b8160ff16600414156149a5576149986146906149558760016155c9565b63ffffffff169050614a30565b8160ff1660081415614a3057614a246149c26149558760016155c9565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b6000613bfd614a518360206155c9565b8490613bee565b6000806000614a678585614cfe565b9092509050600019821415614a825760001992505050613714565b80614a8e8360256155c9565b614a9891906155c9565b6147319060046155c9565b6060600080614ab18561465c565b9092509050600019821415614b135760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610d8f565b808410614b625760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e000000000000000000000000000000006044820152606401610d8f565b600080614b708460016155c9565b905060005b86811015614bf957614b878883614a58565b9250600019831415614bdb5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e207363726970745369670000000000000000006044820152606401610d8f565b614be583836155c9565b915080614bf18161560e565b915050614b75565b50614c048782614a58565b915060001982141561390b5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e207363726970745369670000000000000000006044820152606401610d8f565b6020810151600090613714565b6000613714826020613bee565b6000828281518110614c8657614c866155f8565b60209101015160f81c60ff1415614c9f57506008613714565b828281518110614cb157614cb16155f8565b60209101015160f81c60fe1415614cca57506004613714565b828281518110614cdc57614cdc6155f8565b60209101015160f81c60fd1415614cf557506002613714565b50600092915050565b600080614d0c8360256155c9565b84511015614d21575060001990506000614a3a565b600080614d33866146fb8760246155c9565b9097909650945050505050565b600060208284031215614d5257600080fd5b5035919050565b600080600060608486031215614d6e57600080fd5b505081359360208301359350604090920135919050565b80356001600160601b031981168114614d9d57600080fd5b919050565b600060608284031215614db457600080fd5b50919050565b60008060808385031215614dcd57600080fd5b614dd683614d85565b9150614de58460208501614da2565b90509250929050565b600060808284031215614db457600080fd5b600080600060a08486031215614e1557600080fd5b83356001600160401b0380821115614e2c57600080fd5b614e3887838801614dee565b94506020860135915080821115614e4e57600080fd5b50614e5b86828701614da2565b9250506146c28560408601614da2565b600080828403610100811215614e8057600080fd5b83356001600160401b03811115614e9657600080fd5b614ea286828701614dee565b93505060e0601f1982011215614eb757600080fd5b506020830190509250929050565b80356001600160a01b0381168114614d9d57600080fd5b80358015158114614d9d57600080fd5b60008060408385031215614eff57600080fd5b614f0883614ec5565b9150614de560208401614edc565b60008083601f840112614f2857600080fd5b5081356001600160401b03811115614f3f57600080fd5b602083019150836020828501011115614a3a57600080fd5b60008060008060a08587031215614f6d57600080fd5b84356001600160401b03811115614f8357600080fd5b614f8f87828801614f16565b90955093505060208501359150614fa98660408701614da2565b905092959194509250565b600080600080600060608688031215614fcc57600080fd5b85356001600160401b0380821115614fe357600080fd5b614fef89838a01614f16565b9097509550602088013591508082111561500857600080fd5b5061501588828901614f16565b9094509250615028905060408701614edc565b90509295509295909350565b60006020828403121561504657600080fd5b613bfd82614d85565b634e487b7160e01b600052602160045260246000fd5b600060c08201905082518252602083015160208301526001600160401b036040840151166040830152606083015163ffffffff8082166060850152806080860151166080850152505060a0830151600581106150d157634e487b7160e01b600052602160045260246000fd5b8060a08401525092915050565b6000606082840312156150f057600080fd5b613bfd8383614da2565b60008060008060c0858703121561511057600080fd5b84356001600160401b038082111561512757600080fd5b61513388838901614dee565b9550602087013591508082111561514957600080fd5b5061515687828801614da2565b9350506151668660408701614da2565b9150614fa960a08601614d85565b80356001600160401b0381168114614d9d57600080fd5b600080600080600060c086880312156151a357600080fd5b6151ac86614d85565b94506151bb8760208801614da2565b935060808601356001600160401b038111156151d657600080fd5b6151e288828901614f16565b9094509250615028905060a08701615174565b60008060006040848603121561520a57600080fd5b83356001600160401b0381111561522057600080fd5b61522c86828701614f16565b909790965060209590950135949350505050565b60006020828403121561525257600080fd5b613bfd82614ec5565b803563ffffffff81168114614d9d57600080fd5b6000806000806080858703121561528557600080fd5b61528e8561525b565b935061529c60208601615174565b92506152aa60408601615174565b9150614fa96060860161525b565b8035825263ffffffff6152cd6020830161525b565b1660208301526001600160401b036152e760408301615174565b1660408301525050565b8381526001600160601b03198316602082015260a08101613a2160408301846152b8565b80356001600160e01b031981168114614d9d57600080fd5b6000808335601e1984360301811261534457600080fd5b83016020810192503590506001600160401b0381111561536357600080fd5b803603831315614a3a57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a0815260006001600160e01b0319806153b487615315565b1660a08401526153c7602087018761532d565b608060c08601526153dd61012086018284615372565b9150506153ed604088018861532d565b858303609f190160e0870152615404838284615372565b925050508161541560608901615315565b16610100850152838103602085015261542e868761532d565b925060608252615442606083018483615372565b9250506020860135602082015261545c604087018761532d565b828403604084015261546f848284615372565b945050505050613a2160408301848051825260208082015190830152604090810151910152565b6000602082840312156154a857600080fd5b5051919050565b6000808335601e198436030181126154c657600080fd5b8301803591506001600160401b038211156154e057600080fd5b602001915036819003821315614a3a57600080fd5b60006020828403121561550757600080fd5b613bfd8261525b565b60006020828403121561552257600080fd5b613bfd82615174565b634e487b7160e01b600052604160045260246000fd5b60006060828403121561555357600080fd5b604051606081018181106001600160401b038211171561558357634e487b7160e01b600052604160045260246000fd5b604052823581526155966020840161525b565b60208201526155a760408401615174565b60408201529392505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156155dc576155dc6155b3565b500190565b6000828210156155f3576155f36155b3565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615622576156226155b3565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561566b5781516001600160a01b031684529284019290840190600101615646565b5050508381038285015284518082528583019183019060005b818110156156a057835183529284019291840191600101615684565b5090979650505050505050565b6000602082840312156156bf57600080fd5b81356001600160c01b031981168114613bfd57600080fd5b6000602082840312156156e957600080fd5b613bfd82615315565b600560fa1b8152606086901b6001600160601b0319166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f82015260006157c66157b9615790602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6001600160601b0319861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526158856157b961579061576761585c601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6001600160601b0319861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b6005820152905061595b61593260068301615833565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b6000815160005b81811015615988576020818501810151868301520161596e565b81811115615997576000828601525b509290920192915050565b6000613bfd8284615967565b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680615a2057615a206159f0565b92169190910492915050565b86815260e060208201526000615a4660e083018789615372565b90506bffffffffffffffffffffffff198516604083015283606083015282356080830152602083013560a0830152604083013560ff8116808214615a8957600080fd5b8060c08501525050979650505050505050565b868152608060208201526000615ab6608083018789615372565b8281036040840152615ac9818688615372565b9150508215156060830152979650505050505050565b868152608060208201526000615af9608083018789615372565b8281036040840152615b0c818688615372565b9150506001600160a01b0383166060830152979650505050505050565b82815260808101613bfd60208301846152b8565b60006001600160401b0383811690831681811015615b5d57615b5d6155b3565b039392505050565b6001600160c01b031984168152818360088301376000910160080190815292915050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60006001600160401b03808316818516808303821115615bcf57615bcf6155b3565b01949350505050565b6bffffffffffffffffffffffff198816815260c060208201526000615c0160c08301888a615372565b6001600160a01b03969096166040830152506001600160401b039384166060820152918316608083015290911660a0909101529392505050565b848152606060208201526000615c55606083018587615372565b905082604083015295945050505050565b600082615c7557615c756159f0565b500690565b600082615c8957615c896159f0565b500490565b600060ff821660ff84168060ff03821115615cab57615cab6155b3565b019392505050565b600060ff821660ff841680821015615ccd57615ccd6155b3565b90039392505050565b6001600160601b0319831681526000613a21601483018461596756fea2646970667358221220f33fcd48f544ad04e83d3505d88e2e14cad20f0d3f740e34ef428e53744a04bc64736f6c63430008090033",
878
1494
  "linkReferences": {
879
1495
  "contracts/bridge/BitcoinTx.sol": {
880
1496
  "BitcoinTx": [
881
1497
  {
882
1498
  "length": 20,
883
- "start": 2306
1499
+ "start": 4699
1500
+ },
1501
+ {
1502
+ "length": 20,
1503
+ "start": 9755
1504
+ }
1505
+ ]
1506
+ },
1507
+ "contracts/bridge/Frauds.sol": {
1508
+ "Frauds": [
1509
+ {
1510
+ "length": 20,
1511
+ "start": 485
1512
+ },
1513
+ {
1514
+ "length": 20,
1515
+ "start": 591
1516
+ },
1517
+ {
1518
+ "length": 20,
1519
+ "start": 701
1520
+ },
1521
+ {
1522
+ "length": 20,
1523
+ "start": 816
1524
+ },
1525
+ {
1526
+ "length": 20,
1527
+ "start": 8546
1528
+ },
1529
+ {
1530
+ "length": 20,
1531
+ "start": 8799
1532
+ },
1533
+ {
1534
+ "length": 20,
1535
+ "start": 9145
1536
+ },
1537
+ {
1538
+ "length": 20,
1539
+ "start": 12838
1540
+ }
1541
+ ]
1542
+ },
1543
+ "contracts/bridge/Wallets.sol": {
1544
+ "Wallets": [
1545
+ {
1546
+ "length": 20,
1547
+ "start": 932
884
1548
  },
885
1549
  {
886
1550
  "length": 20,
887
- "start": 5851
1551
+ "start": 1042
1552
+ },
1553
+ {
1554
+ "length": 20,
1555
+ "start": 1163
1556
+ },
1557
+ {
1558
+ "length": 20,
1559
+ "start": 1273
1560
+ },
1561
+ {
1562
+ "length": 20,
1563
+ "start": 4475
1564
+ },
1565
+ {
1566
+ "length": 20,
1567
+ "start": 4598
1568
+ },
1569
+ {
1570
+ "length": 20,
1571
+ "start": 9555
1572
+ },
1573
+ {
1574
+ "length": 20,
1575
+ "start": 9717
1576
+ },
1577
+ {
1578
+ "length": 20,
1579
+ "start": 13260
1580
+ },
1581
+ {
1582
+ "length": 20,
1583
+ "start": 13405
1584
+ },
1585
+ {
1586
+ "length": 20,
1587
+ "start": 13541
888
1588
  }
889
1589
  ]
890
1590
  }
@@ -894,11 +1594,63 @@
894
1594
  "BitcoinTx": [
895
1595
  {
896
1596
  "length": 20,
897
- "start": 1533
1597
+ "start": 2987
1598
+ },
1599
+ {
1600
+ "length": 20,
1601
+ "start": 8043
1602
+ }
1603
+ ]
1604
+ },
1605
+ "contracts/bridge/Frauds.sol": {
1606
+ "Frauds": [
1607
+ {
1608
+ "length": 20,
1609
+ "start": 6834
1610
+ },
1611
+ {
1612
+ "length": 20,
1613
+ "start": 7087
1614
+ },
1615
+ {
1616
+ "length": 20,
1617
+ "start": 7433
1618
+ },
1619
+ {
1620
+ "length": 20,
1621
+ "start": 11126
1622
+ }
1623
+ ]
1624
+ },
1625
+ "contracts/bridge/Wallets.sol": {
1626
+ "Wallets": [
1627
+ {
1628
+ "length": 20,
1629
+ "start": 2763
1630
+ },
1631
+ {
1632
+ "length": 20,
1633
+ "start": 2886
1634
+ },
1635
+ {
1636
+ "length": 20,
1637
+ "start": 7843
1638
+ },
1639
+ {
1640
+ "length": 20,
1641
+ "start": 8005
1642
+ },
1643
+ {
1644
+ "length": 20,
1645
+ "start": 11548
1646
+ },
1647
+ {
1648
+ "length": 20,
1649
+ "start": 11693
898
1650
  },
899
1651
  {
900
1652
  "length": 20,
901
- "start": 5078
1653
+ "start": 11829
902
1654
  }
903
1655
  ]
904
1656
  }