@lukso/lsp8-contracts 0.16.5 → 0.17.3

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 (88) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +55 -5
  3. package/artifacts/IAccessControlExtended.json +285 -0
  4. package/artifacts/ILSP8CappedBalance.json +27 -0
  5. package/artifacts/ILSP8CappedSupply.json +27 -0
  6. package/artifacts/ILSP8IdentifiableDigitalAsset.json +6 -3
  7. package/artifacts/ILSP8Mintable.json +62 -0
  8. package/artifacts/ILSP8NonTransferable.json +110 -0
  9. package/artifacts/ILSP8Revokable.json +75 -0
  10. package/artifacts/LSP8Burnable.json +7 -4
  11. package/artifacts/LSP8BurnableInitAbstract.json +7 -4
  12. package/artifacts/LSP8CappedBalanceAbstract.json +1285 -0
  13. package/artifacts/LSP8CappedBalanceInitAbstract.json +1293 -0
  14. package/artifacts/{LSP8CappedSupply.json → LSP8CappedSupplyAbstract.json} +8 -15
  15. package/artifacts/LSP8CappedSupplyInitAbstract.json +7 -14
  16. package/artifacts/LSP8CustomizableToken.json +1738 -0
  17. package/artifacts/LSP8CustomizableTokenInit.json +1733 -0
  18. package/artifacts/LSP8Enumerable.json +7 -4
  19. package/artifacts/LSP8EnumerableInitAbstract.json +7 -4
  20. package/artifacts/LSP8IdentifiableDigitalAsset.json +6 -3
  21. package/artifacts/LSP8IdentifiableDigitalAssetInitAbstract.json +6 -3
  22. package/artifacts/LSP8Mintable.json +369 -5
  23. package/artifacts/LSP8MintableAbstract.json +1328 -0
  24. package/artifacts/LSP8MintableInit.json +369 -5
  25. package/artifacts/LSP8MintableInitAbstract.json +1336 -0
  26. package/artifacts/LSP8NonTransferableAbstract.json +1367 -0
  27. package/artifacts/LSP8NonTransferableInitAbstract.json +1375 -0
  28. package/artifacts/LSP8RevokableAbstract.json +1317 -0
  29. package/artifacts/LSP8RevokableInitAbstract.json +1325 -0
  30. package/artifacts/LSP8Votes.json +7 -4
  31. package/artifacts/LSP8VotesInitAbstract.json +7 -4
  32. package/contracts/ILSP8IdentifiableDigitalAsset.sol +1 -1
  33. package/contracts/LSP8Constants.sol +1 -1
  34. package/contracts/LSP8Errors.sol +1 -1
  35. package/contracts/LSP8IdentifiableDigitalAsset.sol +73 -114
  36. package/contracts/LSP8IdentifiableDigitalAssetInitAbstract.sol +69 -116
  37. package/contracts/extensions/AccessControlExtended/AccessControlExtendedAbstract.sol +378 -0
  38. package/contracts/extensions/AccessControlExtended/AccessControlExtendedConstants.sol +13 -0
  39. package/contracts/extensions/AccessControlExtended/AccessControlExtendedErrors.sol +23 -0
  40. package/contracts/extensions/AccessControlExtended/AccessControlExtendedInitAbstract.sol +390 -0
  41. package/contracts/extensions/AccessControlExtended/IAccessControlExtended.sol +51 -0
  42. package/contracts/extensions/{LSP8Burnable.sol → LSP8Burnable/LSP8Burnable.sol} +7 -6
  43. package/contracts/extensions/{LSP8BurnableInitAbstract.sol → LSP8Burnable/LSP8BurnableInitAbstract.sol} +7 -6
  44. package/contracts/extensions/LSP8CappedBalance/ILSP8CappedBalance.sol +11 -0
  45. package/contracts/extensions/LSP8CappedBalance/LSP8CappedBalanceAbstract.sol +124 -0
  46. package/contracts/extensions/LSP8CappedBalance/LSP8CappedBalanceErrors.sol +9 -0
  47. package/contracts/extensions/LSP8CappedBalance/LSP8CappedBalanceInitAbstract.sol +174 -0
  48. package/contracts/extensions/LSP8CappedSupply/ILSP8CappedSupply.sol +11 -0
  49. package/contracts/extensions/LSP8CappedSupply/LSP8CappedSupplyAbstract.sol +59 -0
  50. package/contracts/extensions/LSP8CappedSupply/LSP8CappedSupplyErrors.sol +6 -0
  51. package/contracts/extensions/LSP8CappedSupply/LSP8CappedSupplyInitAbstract.sol +97 -0
  52. package/contracts/extensions/{LSP8Enumerable.sol → LSP8Enumerable/LSP8Enumerable.sol} +2 -2
  53. package/contracts/extensions/{LSP8EnumerableInitAbstract.sol → LSP8Enumerable/LSP8EnumerableInitAbstract.sol} +2 -2
  54. package/contracts/extensions/LSP8Mintable/ILSP8Mintable.sol +27 -0
  55. package/contracts/extensions/LSP8Mintable/LSP8MintableAbstract.sol +105 -0
  56. package/contracts/extensions/LSP8Mintable/LSP8MintableErrors.sol +5 -0
  57. package/contracts/extensions/LSP8Mintable/LSP8MintableInitAbstract.sol +155 -0
  58. package/contracts/extensions/LSP8NonTransferable/ILSP8NonTransferable.sol +48 -0
  59. package/contracts/extensions/LSP8NonTransferable/LSP8NonTransferableAbstract.sol +190 -0
  60. package/contracts/extensions/LSP8NonTransferable/LSP8NonTransferableErrors.sol +14 -0
  61. package/contracts/extensions/LSP8NonTransferable/LSP8NonTransferableInitAbstract.sol +246 -0
  62. package/contracts/extensions/LSP8Revokable/ILSP8Revokable.sol +28 -0
  63. package/contracts/extensions/LSP8Revokable/LSP8RevokableAbstract.sol +132 -0
  64. package/contracts/extensions/LSP8Revokable/LSP8RevokableErrors.sol +4 -0
  65. package/contracts/extensions/LSP8Revokable/LSP8RevokableInitAbstract.sol +178 -0
  66. package/contracts/extensions/{LSP8Votes.sol → LSP8Votes/LSP8Votes.sol} +3 -4
  67. package/contracts/extensions/{LSP8VotesConstants.sol → LSP8Votes/LSP8VotesConstants.sol} +1 -1
  68. package/contracts/extensions/{LSP8VotesInitAbstract.sol → LSP8Votes/LSP8VotesInitAbstract.sol} +3 -3
  69. package/contracts/presets/LSP8CustomizableToken.sol +277 -0
  70. package/contracts/presets/LSP8CustomizableTokenConstants.sol +32 -0
  71. package/contracts/presets/LSP8CustomizableTokenInit.sol +318 -0
  72. package/contracts/presets/LSP8Mintable.sol +13 -28
  73. package/contracts/presets/LSP8MintableInit.sol +13 -6
  74. package/dist/abi.cjs +8233 -158
  75. package/dist/abi.d.cts +12004 -323
  76. package/dist/abi.d.mts +12004 -323
  77. package/dist/abi.d.ts +12004 -323
  78. package/dist/abi.mjs +8217 -158
  79. package/dist/constants.cjs +21 -0
  80. package/dist/constants.d.cts +12 -1
  81. package/dist/constants.d.mts +12 -1
  82. package/dist/constants.d.ts +12 -1
  83. package/dist/constants.mjs +16 -1
  84. package/package.json +38 -15
  85. package/contracts/extensions/LSP8CappedSupply.sol +0 -85
  86. package/contracts/extensions/LSP8CappedSupplyInitAbstract.sol +0 -88
  87. package/contracts/presets/ILSP8Mintable.sol +0 -33
  88. package/contracts/presets/LSP8MintableInitAbstract.sol +0 -62
@@ -1,5 +1,5 @@
1
1
  {
2
- "_format": "hh-sol-artifact-1",
2
+ "_format": "hh3-artifact-1",
3
3
  "contractName": "LSP8MintableInit",
4
4
  "sourceName": "contracts/presets/LSP8MintableInit.sol",
5
5
  "abi": [
@@ -8,6 +8,32 @@
8
8
  "stateMutability": "nonpayable",
9
9
  "type": "constructor"
10
10
  },
11
+ {
12
+ "inputs": [],
13
+ "name": "AccessControlBadConfirmation",
14
+ "type": "error"
15
+ },
16
+ {
17
+ "inputs": [],
18
+ "name": "AccessControlCannotSetAdminForDefaultAdminRole",
19
+ "type": "error"
20
+ },
21
+ {
22
+ "inputs": [
23
+ {
24
+ "internalType": "address",
25
+ "name": "account",
26
+ "type": "address"
27
+ },
28
+ {
29
+ "internalType": "bytes32",
30
+ "name": "neededRole",
31
+ "type": "bytes32"
32
+ }
33
+ ],
34
+ "name": "AccessControlUnauthorizedAccount",
35
+ "type": "error"
36
+ },
11
37
  {
12
38
  "inputs": [],
13
39
  "name": "ERC725Y_DataKeysValuesEmptyArray",
@@ -86,6 +112,11 @@
86
112
  "name": "LSP8InvalidTransferBatch",
87
113
  "type": "error"
88
114
  },
115
+ {
116
+ "inputs": [],
117
+ "name": "LSP8MintDisabled",
118
+ "type": "error"
119
+ },
89
120
  {
90
121
  "inputs": [
91
122
  {
@@ -314,6 +345,19 @@
314
345
  "name": "Initialized",
315
346
  "type": "event"
316
347
  },
348
+ {
349
+ "anonymous": false,
350
+ "inputs": [
351
+ {
352
+ "indexed": true,
353
+ "internalType": "bool",
354
+ "name": "enabled",
355
+ "type": "bool"
356
+ }
357
+ ],
358
+ "name": "MintingStatusChanged",
359
+ "type": "event"
360
+ },
317
361
  {
318
362
  "anonymous": false,
319
363
  "inputs": [
@@ -401,6 +445,81 @@
401
445
  "name": "OwnershipTransferred",
402
446
  "type": "event"
403
447
  },
448
+ {
449
+ "anonymous": false,
450
+ "inputs": [
451
+ {
452
+ "indexed": true,
453
+ "internalType": "bytes32",
454
+ "name": "role",
455
+ "type": "bytes32"
456
+ },
457
+ {
458
+ "indexed": true,
459
+ "internalType": "bytes32",
460
+ "name": "previousAdminRole",
461
+ "type": "bytes32"
462
+ },
463
+ {
464
+ "indexed": true,
465
+ "internalType": "bytes32",
466
+ "name": "newAdminRole",
467
+ "type": "bytes32"
468
+ }
469
+ ],
470
+ "name": "RoleAdminChanged",
471
+ "type": "event"
472
+ },
473
+ {
474
+ "anonymous": false,
475
+ "inputs": [
476
+ {
477
+ "indexed": true,
478
+ "internalType": "bytes32",
479
+ "name": "role",
480
+ "type": "bytes32"
481
+ },
482
+ {
483
+ "indexed": true,
484
+ "internalType": "address",
485
+ "name": "account",
486
+ "type": "address"
487
+ },
488
+ {
489
+ "indexed": true,
490
+ "internalType": "address",
491
+ "name": "sender",
492
+ "type": "address"
493
+ }
494
+ ],
495
+ "name": "RoleGranted",
496
+ "type": "event"
497
+ },
498
+ {
499
+ "anonymous": false,
500
+ "inputs": [
501
+ {
502
+ "indexed": true,
503
+ "internalType": "bytes32",
504
+ "name": "role",
505
+ "type": "bytes32"
506
+ },
507
+ {
508
+ "indexed": true,
509
+ "internalType": "address",
510
+ "name": "account",
511
+ "type": "address"
512
+ },
513
+ {
514
+ "indexed": true,
515
+ "internalType": "address",
516
+ "name": "sender",
517
+ "type": "address"
518
+ }
519
+ ],
520
+ "name": "RoleRevoked",
521
+ "type": "event"
522
+ },
404
523
  {
405
524
  "anonymous": false,
406
525
  "inputs": [
@@ -473,6 +592,32 @@
473
592
  "stateMutability": "payable",
474
593
  "type": "fallback"
475
594
  },
595
+ {
596
+ "inputs": [],
597
+ "name": "DEFAULT_ADMIN_ROLE",
598
+ "outputs": [
599
+ {
600
+ "internalType": "bytes32",
601
+ "name": "",
602
+ "type": "bytes32"
603
+ }
604
+ ],
605
+ "stateMutability": "view",
606
+ "type": "function"
607
+ },
608
+ {
609
+ "inputs": [],
610
+ "name": "MINTER_ROLE",
611
+ "outputs": [
612
+ {
613
+ "internalType": "bytes32",
614
+ "name": "",
615
+ "type": "bytes32"
616
+ }
617
+ ],
618
+ "stateMutability": "view",
619
+ "type": "function"
620
+ },
476
621
  {
477
622
  "inputs": [
478
623
  {
@@ -534,6 +679,13 @@
534
679
  "stateMutability": "nonpayable",
535
680
  "type": "function"
536
681
  },
682
+ {
683
+ "inputs": [],
684
+ "name": "disableMinting",
685
+ "outputs": [],
686
+ "stateMutability": "nonpayable",
687
+ "type": "function"
688
+ },
537
689
  {
538
690
  "inputs": [
539
691
  {
@@ -639,6 +791,129 @@
639
791
  "stateMutability": "view",
640
792
  "type": "function"
641
793
  },
794
+ {
795
+ "inputs": [
796
+ {
797
+ "internalType": "bytes32",
798
+ "name": "role",
799
+ "type": "bytes32"
800
+ }
801
+ ],
802
+ "name": "getRoleAdmin",
803
+ "outputs": [
804
+ {
805
+ "internalType": "bytes32",
806
+ "name": "",
807
+ "type": "bytes32"
808
+ }
809
+ ],
810
+ "stateMutability": "view",
811
+ "type": "function"
812
+ },
813
+ {
814
+ "inputs": [
815
+ {
816
+ "internalType": "bytes32",
817
+ "name": "role",
818
+ "type": "bytes32"
819
+ },
820
+ {
821
+ "internalType": "uint256",
822
+ "name": "index",
823
+ "type": "uint256"
824
+ }
825
+ ],
826
+ "name": "getRoleMember",
827
+ "outputs": [
828
+ {
829
+ "internalType": "address",
830
+ "name": "",
831
+ "type": "address"
832
+ }
833
+ ],
834
+ "stateMutability": "view",
835
+ "type": "function"
836
+ },
837
+ {
838
+ "inputs": [
839
+ {
840
+ "internalType": "bytes32",
841
+ "name": "role",
842
+ "type": "bytes32"
843
+ }
844
+ ],
845
+ "name": "getRoleMemberCount",
846
+ "outputs": [
847
+ {
848
+ "internalType": "uint256",
849
+ "name": "",
850
+ "type": "uint256"
851
+ }
852
+ ],
853
+ "stateMutability": "view",
854
+ "type": "function"
855
+ },
856
+ {
857
+ "inputs": [
858
+ {
859
+ "internalType": "bytes32",
860
+ "name": "role",
861
+ "type": "bytes32"
862
+ }
863
+ ],
864
+ "name": "getRoleMembers",
865
+ "outputs": [
866
+ {
867
+ "internalType": "address[]",
868
+ "name": "",
869
+ "type": "address[]"
870
+ }
871
+ ],
872
+ "stateMutability": "view",
873
+ "type": "function"
874
+ },
875
+ {
876
+ "inputs": [
877
+ {
878
+ "internalType": "bytes32",
879
+ "name": "role",
880
+ "type": "bytes32"
881
+ },
882
+ {
883
+ "internalType": "address",
884
+ "name": "account",
885
+ "type": "address"
886
+ }
887
+ ],
888
+ "name": "grantRole",
889
+ "outputs": [],
890
+ "stateMutability": "nonpayable",
891
+ "type": "function"
892
+ },
893
+ {
894
+ "inputs": [
895
+ {
896
+ "internalType": "bytes32",
897
+ "name": "role",
898
+ "type": "bytes32"
899
+ },
900
+ {
901
+ "internalType": "address",
902
+ "name": "account",
903
+ "type": "address"
904
+ }
905
+ ],
906
+ "name": "hasRole",
907
+ "outputs": [
908
+ {
909
+ "internalType": "bool",
910
+ "name": "",
911
+ "type": "bool"
912
+ }
913
+ ],
914
+ "stateMutability": "view",
915
+ "type": "function"
916
+ },
642
917
  {
643
918
  "inputs": [
644
919
  {
@@ -672,6 +947,19 @@
672
947
  "stateMutability": "nonpayable",
673
948
  "type": "function"
674
949
  },
950
+ {
951
+ "inputs": [],
952
+ "name": "isMintable",
953
+ "outputs": [
954
+ {
955
+ "internalType": "bool",
956
+ "name": "",
957
+ "type": "bool"
958
+ }
959
+ ],
960
+ "stateMutability": "view",
961
+ "type": "function"
962
+ },
675
963
  {
676
964
  "inputs": [
677
965
  {
@@ -744,6 +1032,24 @@
744
1032
  "stateMutability": "nonpayable",
745
1033
  "type": "function"
746
1034
  },
1035
+ {
1036
+ "inputs": [
1037
+ {
1038
+ "internalType": "bytes32",
1039
+ "name": "role",
1040
+ "type": "bytes32"
1041
+ },
1042
+ {
1043
+ "internalType": "address",
1044
+ "name": "callerConfirmation",
1045
+ "type": "address"
1046
+ }
1047
+ ],
1048
+ "name": "renounceRole",
1049
+ "outputs": [],
1050
+ "stateMutability": "nonpayable",
1051
+ "type": "function"
1052
+ },
747
1053
  {
748
1054
  "inputs": [
749
1055
  {
@@ -772,6 +1078,43 @@
772
1078
  "stateMutability": "nonpayable",
773
1079
  "type": "function"
774
1080
  },
1081
+ {
1082
+ "inputs": [
1083
+ {
1084
+ "internalType": "bytes32",
1085
+ "name": "role",
1086
+ "type": "bytes32"
1087
+ },
1088
+ {
1089
+ "internalType": "address",
1090
+ "name": "account",
1091
+ "type": "address"
1092
+ }
1093
+ ],
1094
+ "name": "revokeRole",
1095
+ "outputs": [],
1096
+ "stateMutability": "nonpayable",
1097
+ "type": "function"
1098
+ },
1099
+ {
1100
+ "inputs": [
1101
+ {
1102
+ "internalType": "address",
1103
+ "name": "account",
1104
+ "type": "address"
1105
+ }
1106
+ ],
1107
+ "name": "rolesOf",
1108
+ "outputs": [
1109
+ {
1110
+ "internalType": "bytes32[]",
1111
+ "name": "",
1112
+ "type": "bytes32[]"
1113
+ }
1114
+ ],
1115
+ "stateMutability": "view",
1116
+ "type": "function"
1117
+ },
775
1118
  {
776
1119
  "inputs": [
777
1120
  {
@@ -854,6 +1197,24 @@
854
1197
  "stateMutability": "nonpayable",
855
1198
  "type": "function"
856
1199
  },
1200
+ {
1201
+ "inputs": [
1202
+ {
1203
+ "internalType": "bytes32",
1204
+ "name": "role",
1205
+ "type": "bytes32"
1206
+ },
1207
+ {
1208
+ "internalType": "bytes32",
1209
+ "name": "adminRole",
1210
+ "type": "bytes32"
1211
+ }
1212
+ ],
1213
+ "name": "setRoleAdmin",
1214
+ "outputs": [],
1215
+ "stateMutability": "nonpayable",
1216
+ "type": "function"
1217
+ },
857
1218
  {
858
1219
  "inputs": [
859
1220
  {
@@ -1008,8 +1369,11 @@
1008
1369
  "type": "receive"
1009
1370
  }
1010
1371
  ],
1011
- "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61341980620000f36000396000f3fe60806040526004361061019a5760003560e01c806374823132116100e1578063a3b261f21161008a578063d6c1407c11610064578063d6c1407c1461052a578063db8c96631461054a578063dedff9c61461056a578063f2fde38b1461058a5761020e565b8063a3b261f2146104bd578063af255b61146104ea578063be9f0e6f1461050a5761020e565b806386a10ddd116100bb57806386a10ddd1461046c5780638da5cb5b1461048c57806397902421146104aa5761020e565b806374823132146104195780637e87632c146104395780637f23690c146104595761020e565b806349a6078d116101435780636963d4381161011d5780636963d438146103c457806370a08231146103e4578063715018a6146104045761020e565b806349a6078d14610355578063511b69521461038257806354f6127f146103a45761020e565b80631d26fce6116101745780631d26fce6146102d0578063217b2270146102fd5780632a3654a4146103355761020e565b806301ffc9a71461024f57806316e023b31461028457806318160ddd146102b15761020e565b3661020e57346000036101dc5760405163e5099ee360e01b81526004016101d39060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561023957828260405163e5099ee360e01b81526004016101d3929190612626565b61024383836105aa565b80519350602001915050f35b34801561025b57600080fd5b5061026f61026a366004612655565b6106b9565b60405190151581526020015b60405180910390f35b34801561029057600080fd5b506102a461029f36600461267f565b610706565b60405161027b91906126f1565b3480156102bd57600080fd5b506098545b60405190815260200161027b565b3480156102dc57600080fd5b506102f06102eb3660046127da565b610719565b60405161027b919061283e565b34801561030957600080fd5b5061031d6103183660046128a0565b610801565b6040516001600160a01b03909116815260200161027b565b34801561034157600080fd5b5061026f6103503660046128d5565b61083a565b34801561036157600080fd5b506103756103703660046128a0565b610846565b60405161027b91906128ff565b34801561038e57600080fd5b506103a261039d3660046129d5565b610868565b005b3480156103b057600080fd5b506102a46103bf3660046128a0565b6108c5565b3480156103d057600080fd5b506102f06103df366004612a4e565b6108d0565b3480156103f057600080fd5b506102c26103ff366004612ac3565b610a19565b34801561041057600080fd5b506103a2610a3a565b34801561042557600080fd5b506103a2610434366004612ade565b610a4e565b34801561044557600080fd5b506103a2610454366004612ca8565b610b78565b6103a2610467366004612d6d565b610c80565b34801561047857600080fd5b506103a2610487366004612daa565b610cb5565b34801561049857600080fd5b506033546001600160a01b031661031d565b6103a26104b8366004612e01565b610e40565b3480156104c957600080fd5b506104dd6104d8366004612ac3565b610e71565b60405161027b9190612e5b565b3480156104f657600080fd5b506103a2610505366004612e93565b610e95565b34801561051657600080fd5b506103a2610525366004612efb565b610eaf565b34801561053657600080fd5b506103a2610545366004612f79565b610f8d565b34801561055657600080fd5b506103a2610565366004612e93565b610fa5565b34801561057657600080fd5b506102f0610585366004612fb3565b6110a2565b34801561059657600080fd5b506103a26105a5366004612ac3565b61114d565b606060006105c36000356001600160e01b0319166111dd565b5090506001600160a01b038116610614576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101d3565b600080826001600160a01b031634878733346040516020016106399493929190612fe8565b60408051601f198184030181529082905261065391613018565b60006040518083038185875af1925050503d8060008114610690576040519150601f19603f3d011682016040523d82523d6000602084013e610695565b606091505b509150915081156106aa5792506106b3915050565b80518060208301fd5b92915050565b60006001600160e01b031982167f3a2717060000000000000000000000000000000000000000000000000000000014806106f757506106f782611287565b806106b357506106b3826112c5565b606061071283836112fc565b9392505050565b6060815183511461073d576040516317d38eff60e11b815260040160405180910390fd5b825167ffffffffffffffff81111561075757610757612704565b60405190808252806020026020018201604052801561078a57816020015b60608152602001906001900390816107755790505b50905060005b83518110156107fa576107d58482815181106107ae576107ae613034565b60200260200101518483815181106107c8576107c8613034565b60200260200101516112fc565b8282815181106107e7576107e7613034565b6020908102919091010152600101610790565b5092915050565b6000818152609960205260408120546001600160a01b0316806106b357604051635747cd1b60e11b8152600481018490526024016101d3565b600061071283836113d3565b606061085182611410565b6000828152609b602052604090206106b390611448565b61087233846113d3565b6108b1576040517f1294d2a9000000000000000000000000000000000000000000000000000000008152600481018490523360248201526044016101d3565b6108be8585858585611455565b5050505050565b60606106b38261165d565b60608167ffffffffffffffff8111156108eb576108eb612704565b60405190808252806020026020018201604052801561091e57816020015b60608152602001906001900390816109095790505b50905060005b828110156107fa576000803086868581811061094257610942613034565b9050602002810190610954919061304a565b604051610962929190613098565b600060405180830381855af49150503d806000811461099d576040519150601f19603f3d011682016040523d82523d6000602084013e6109a2565b606091505b5091509150816109f1578051156109bc5780518082602001fd5b6040517f234eb819000000000000000000000000000000000000000000000000000000008152600481018490526024016101d3565b80848481518110610a0457610a04613034565b60209081029190910101525050600101610924565b6001600160a01b0381166000908152609a602052604081206106b3906116ff565b610a42611709565b610a4c6000611763565b565b600054610100900460ff1615808015610a6e5750600054600160ff909116105b80610a885750303b158015610a88575060005460ff166001145b610afa5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101d3565b6000805460ff191660011790558015610b1d576000805461ff0019166101001790555b610b2a86868686866117c2565b8015610b70576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b8451845181141580610b8b575083518114155b80610b97575082518114155b80610ba3575081518114155b15610bda576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610c7757610c6f878281518110610bfa57610bfa613034565b6020026020010151878381518110610c1457610c14613034565b6020026020010151878481518110610c2e57610c2e613034565b6020026020010151878581518110610c4857610c48613034565b6020026020010151878681518110610c6257610c62613034565b6020026020010151610868565b600101610bdd565b50505050505050565b610c88611709565b3415610ca75760405163f36ba73760e01b815260040160405180910390fd5b610cb1828261183a565b5050565b6000610cc083610801565b90506001600160a01b0381163314610d0357604051632d938f5160e11b81526001600160a01b0382166004820152602481018490523360448201526064016101d3565b6001600160a01b038416610d2a57604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031603610d5c576040516344fed6b160e11b815260040160405180910390fd5b6000838152609b60205260408120610d74908661189d565b905080610dbf576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018590526044016101d3565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc23667121586604051610e0391906126f1565b60405180910390a460003385600186604051602001610e2594939291906130a8565b6040516020818303038152906040529050610b7086826118b2565b610e48611709565b3415610e675760405163f36ba73760e01b815260040160405180910390fd5b610cb182826118dd565b6001600160a01b0381166000908152609a602052604090206060906106b390611448565b610e9d611709565b610ea9848484846119a3565b50505050565b610eb7611709565b81518351141580610eca57508051825114155b15610ee8576040516317d38eff60e11b815260040160405180910390fd5b8251600003610f23576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8351811015610ea957610f85848281518110610f4457610f44613034565b6020026020010151848381518110610f5e57610f5e613034565b6020026020010151848481518110610f7857610f78613034565b6020026020010151611b20565b600101610f26565b610f95611709565b610fa0838383611b20565b505050565b6000610fb084610801565b9050336001600160a01b0382161461101c576001600160a01b038516331461101c576040517f760b5acd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382166024820152604481018590526064016101d3565b6001600160a01b03851661104357604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b031603611075576040516344fed6b160e11b815260040160405180910390fd5b6110828582868686611bb0565b82156108be5760008185600085604051602001610e2594939291906130a8565b6060815167ffffffffffffffff8111156110be576110be612704565b6040519080825280602002602001820160405280156110f157816020015b60608152602001906001900390816110dc5790505b50905060005b82518110156111475761112283828151811061111557611115613034565b602002602001015161165d565b82828151811061113457611134613034565b60209081029190910101526001016110f7565b50919050565b611155611709565b6001600160a01b0381166111d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d3565b6111da81611763565b50565b600080806112157fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616611c69565b905060006112228261165d565b905080516014141580156112365750805115155b1561126f57806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101d391906126f1565b611278816130e2565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806106b357506106b382611cda565b6000806112d86301ffc9a760e01b6111dd565b5090506001600160a01b0381166112f25750600092915050565b6107128184611d28565b606060976000848460405160200161131e929190918252602082015260400190565b604051602081830303815290604052805190602001208152602001908152602001600020805461134d9061311e565b80601f01602080910402602001604051908101604052809291908181526020018280546113799061311e565b80156113c65780601f1061139b576101008083540402835291602001916113c6565b820191906000526020600020905b8154815290600101906020018083116113a957829003601f168201915b5050505050905092915050565b60006113de82610801565b6001600160a01b0316836001600160a01b0316148061071257506000828152609b602052604090206107129084611dc6565b6000818152609960205260409020546001600160a01b03166111da57604051635747cd1b60e11b8152600481018290526024016101d3565b6060600061071283611de8565b600061146084610801565b9050856001600160a01b0316816001600160a01b0316146114ae57604051632d938f5160e11b81526001600160a01b03808316600483015260248201869052871660448201526064016101d3565b6001600160a01b0385166114d5576040516324ecef4d60e01b815260040160405180910390fd5b60006114e085610801565b9050806001600160a01b0316826001600160a01b031614611547576040517f5a9c31d3000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038084166024830152821660448201526064016101d3565b6115518786611e43565b6001600160a01b0387166000908152609a602052604090206115739086611e9b565b506001600160a01b0386166000908152609a602052604090206115969086611ea7565b5060008581526099602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061160a9033908a908a90613152565b60405180910390a46000338888888760405160200161162d959493929190613185565b60405160208183030381529060405290506116488882611eb3565b611653878683611ede565b5050505050505050565b600081815260976020526040902080546060919061167a9061311e565b80601f01602080910402602001604051908101604052809291908181526020018280546116a69061311e565b80156116f35780601f106116c8576101008083540402835291602001916116f3565b820191906000526020600020905b8154815290600101906020018083116116d657829003601f168201915b50505050509050919050565b60006106b3825490565b6033546001600160a01b03163314610a4c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d3565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661182d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d3565b6108be8585858585612018565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e738201611893576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cb182826120d1565b6000610712836001600160a01b038416612231565b610cb1827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083612280565b8051825114611918576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003611953576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610fa05761199b83828151811061197457611974613034565b602002602001015183838151811061198e5761198e613034565b602002602001015161183a565b600101611956565b6001600160a01b0384166119ca576040516324ecef4d60e01b815260040160405180910390fd5b6000838152609960205260409020546001600160a01b031615611a03576040516334c7b51160e01b8152600481018490526024016101d3565b6000838152609960205260409020546001600160a01b031615611a3c576040516334c7b51160e01b8152600481018490526024016101d3565b609860008154611a4b906131d5565b909155506001600160a01b0384166000908152609a60205260409020611a719084611ea7565b50600083815260996020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90611ae090339088908890613152565b60405180910390a46000336000868685604051602001611b04959493929190613185565b60405160208183030381529060405290506108be858483611ede565b80609760008585604051602001611b41929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020016000209081611b719190613234565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb83604051611ba391906126f1565b60405180910390a3505050565b6000838152609b60205260408120611bc890876122cd565b905080611c13576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b0387166004820152602481018590526044016101d3565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c8686604051611c599291906132f4565b60405180910390a4505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080611cd29061330f565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806106b357506301ffc9a760e01b6001600160e01b03198316146106b3565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611daf575060208210155b8015611dbb5750600081115b979650505050505050565b6001600160a01b03811660009081526001830160205260408120541515610712565b6060816000018054806020026020016040519081016040528092919081815260200182805480156116f357602002820191906000526020600020905b815481526020019060010190808311611e245750505050509050919050565b6000818152609b6020526040812090611e5b826116ff565b90506000805b82811015610b7057611e748460006122e2565b9150611e93828787600060405180602001604052806000815250611bb0565b600101611e61565b600061071283836122ee565b60006107128383612231565b610cb1827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083612280565b611eef83631aed5a8560e21b611d28565b15611f8957604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611f42907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d908590600401613333565b6000604051808303816000875af1158015611f61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ea9919081019061334c565b81610fa0576001600160a01b0383163b15611fdb576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101d3565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101d3565b600054610100900460ff166120835760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d3565b61208f858585856123e1565b60408051602081018390526108be917ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d91016040516020818303038152906040525b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f820161212a576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201612183576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016121dc576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526097602052604090206121f48282613234565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b28260405161222591906126f1565b60405180910390a25050565b6000818152600183016020526040812054612278575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106b3565b5060006106b3565b61229a6001600160a01b038416631aed5a8560e21b611d28565b15610fa057604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611f429085908590600401613333565b6000610712836001600160a01b0384166122ee565b60006107128383612551565b600081815260018301602052604081205480156123d75760006123126001836133ba565b8554909150600090612326906001906133ba565b905081811461238b57600086600001828154811061234657612346613034565b906000526020600020015490508087600001848154811061236957612369613034565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061239c5761239c6133cd565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106b3565b60009150506106b3565b600054610100900460ff1661244c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d3565b6124558261257b565b6124b77feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c60001b6040518060400160405280600481526020017fa4d96624000000000000000000000000000000000000000000000000000000008152506121dc565b6124e17fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856121dc565b61250b7f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846121dc565b6040805160208101839052610ea9917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb391016040516020818303038152906040526121dc565b600082600001828154811061256857612568613034565b9060005260206000200154905092915050565b600054610100900460ff166125e65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d3565b6001600160a01b0381166111d1576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561266757600080fd5b81356001600160e01b03198116811461071257600080fd5b6000806040838503121561269257600080fd5b50508035926020909101359150565b60005b838110156126bc5781810151838201526020016126a4565b50506000910152565b600081518084526126dd8160208601602086016126a1565b601f01601f19169290920160200192915050565b60208152600061071260208301846126c5565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561274357612743612704565b604052919050565b600067ffffffffffffffff82111561276557612765612704565b5060051b60200190565b600082601f83011261278057600080fd5b813560206127956127908361274b565b61271a565b82815260059290921b840181019181810190868411156127b457600080fd5b8286015b848110156127cf57803583529183019183016127b8565b509695505050505050565b600080604083850312156127ed57600080fd5b823567ffffffffffffffff8082111561280557600080fd5b6128118683870161276f565b9350602085013591508082111561282757600080fd5b506128348582860161276f565b9150509250929050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561289357603f198886030184526128818583516126c5565b94509285019290850190600101612865565b5092979650505050505050565b6000602082840312156128b257600080fd5b5035919050565b80356001600160a01b03811681146128d057600080fd5b919050565b600080604083850312156128e857600080fd5b6128f1836128b9565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156129405783516001600160a01b03168352928401929184019160010161291b565b50909695505050505050565b803580151581146128d057600080fd5b600067ffffffffffffffff82111561297657612976612704565b50601f01601f191660200190565b600082601f83011261299557600080fd5b81356129a36127908261295c565b8181528460208386010111156129b857600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156129ed57600080fd5b6129f6866128b9565b9450612a04602087016128b9565b935060408601359250612a196060870161294c565b9150608086013567ffffffffffffffff811115612a3557600080fd5b612a4188828901612984565b9150509295509295909350565b60008060208385031215612a6157600080fd5b823567ffffffffffffffff80821115612a7957600080fd5b818501915085601f830112612a8d57600080fd5b813581811115612a9c57600080fd5b8660208260051b8501011115612ab157600080fd5b60209290920196919550909350505050565b600060208284031215612ad557600080fd5b610712826128b9565b600080600080600060a08688031215612af657600080fd5b853567ffffffffffffffff80821115612b0e57600080fd5b612b1a89838a01612984565b96506020880135915080821115612b3057600080fd5b50612b3d88828901612984565b945050612b4c604087016128b9565b94979396509394606081013594506080013592915050565b600082601f830112612b7557600080fd5b81356020612b856127908361274b565b82815260059290921b84018101918181019086841115612ba457600080fd5b8286015b848110156127cf57612bb9816128b9565b8352918301918301612ba8565b600082601f830112612bd757600080fd5b81356020612be76127908361274b565b82815260059290921b84018101918181019086841115612c0657600080fd5b8286015b848110156127cf57612c1b8161294c565b8352918301918301612c0a565b600082601f830112612c3957600080fd5b81356020612c496127908361274b565b82815260059290921b84018101918181019086841115612c6857600080fd5b8286015b848110156127cf57803567ffffffffffffffff811115612c8c5760008081fd5b612c9a8986838b0101612984565b845250918301918301612c6c565b600080600080600060a08688031215612cc057600080fd5b853567ffffffffffffffff80821115612cd857600080fd5b612ce489838a01612b64565b96506020880135915080821115612cfa57600080fd5b612d0689838a01612b64565b95506040880135915080821115612d1c57600080fd5b612d2889838a0161276f565b94506060880135915080821115612d3e57600080fd5b612d4a89838a01612bc6565b93506080880135915080821115612d6057600080fd5b50612a4188828901612c28565b60008060408385031215612d8057600080fd5b82359150602083013567ffffffffffffffff811115612d9e57600080fd5b61283485828601612984565b600080600060608486031215612dbf57600080fd5b612dc8846128b9565b925060208401359150604084013567ffffffffffffffff811115612deb57600080fd5b612df786828701612984565b9150509250925092565b60008060408385031215612e1457600080fd5b823567ffffffffffffffff80821115612e2c57600080fd5b612e388683870161276f565b93506020850135915080821115612e4e57600080fd5b5061283485828601612c28565b6020808252825182820181905260009190848201906040850190845b8181101561294057835183529284019291840191600101612e77565b60008060008060808587031215612ea957600080fd5b612eb2856128b9565b935060208501359250612ec76040860161294c565b9150606085013567ffffffffffffffff811115612ee357600080fd5b612eef87828801612984565b91505092959194509250565b600080600060608486031215612f1057600080fd5b833567ffffffffffffffff80821115612f2857600080fd5b612f348783880161276f565b94506020860135915080821115612f4a57600080fd5b612f568783880161276f565b93506040860135915080821115612f6c57600080fd5b50612df786828701612c28565b600080600060608486031215612f8e57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612deb57600080fd5b600060208284031215612fc557600080fd5b813567ffffffffffffffff811115612fdc57600080fd5b611cd28482850161276f565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b6000825161302a8184602087016126a1565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261306157600080fd5b83018035915067ffffffffffffffff82111561307c57600080fd5b60200191503681900382131561309157600080fd5b9250929050565b8183823760009101908152919050565b6001600160a01b038516815283602082015282151560408201526080606082015260006130d860808301846126c5565b9695505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156131165780818460140360031b1b83161693505b505050919050565b600181811c9082168061313257607f821691505b60208210810361114757634e487b7160e01b600052602260045260246000fd5b6001600160a01b0384168152821515602082015260606040820152600061317c60608301846126c5565b95945050505050565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a06080830152611dbb60a08301846126c5565b634e487b7160e01b600052601160045260246000fd5b6000600182016131e7576131e76131bf565b5060010190565b601f821115610fa057600081815260208120601f850160051c810160208610156132155750805b601f850160051c820191505b81811015610b7057828155600101613221565b815167ffffffffffffffff81111561324e5761324e612704565b6132628161325c845461311e565b846131ee565b602080601f831160018114613297576000841561327f5750858301515b600019600386901b1c1916600185901b178555610b70565b600085815260208120601f198616915b828110156132c6578886015182559484019460019091019084016132a7565b50858210156132e45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8215158152604060208201526000611cd260408301846126c5565b805160208083015191908110156111475760001960209190910360031b1b16919050565b828152604060208201526000611cd260408301846126c5565b60006020828403121561335e57600080fd5b815167ffffffffffffffff81111561337557600080fd5b8201601f8101841361338657600080fd5b80516133946127908261295c565b8181528560208385010111156133a957600080fd5b61317c8260208301602086016126a1565b818103818111156106b3576106b36131bf565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220cf230c419060992a91b0a64052e3afd05ffb6f3bd5ba44a8f15be6feff4ff9a764736f6c63430008110033",
1012
- "deployedBytecode": "0x60806040526004361061019a5760003560e01c806374823132116100e1578063a3b261f21161008a578063d6c1407c11610064578063d6c1407c1461052a578063db8c96631461054a578063dedff9c61461056a578063f2fde38b1461058a5761020e565b8063a3b261f2146104bd578063af255b61146104ea578063be9f0e6f1461050a5761020e565b806386a10ddd116100bb57806386a10ddd1461046c5780638da5cb5b1461048c57806397902421146104aa5761020e565b806374823132146104195780637e87632c146104395780637f23690c146104595761020e565b806349a6078d116101435780636963d4381161011d5780636963d438146103c457806370a08231146103e4578063715018a6146104045761020e565b806349a6078d14610355578063511b69521461038257806354f6127f146103a45761020e565b80631d26fce6116101745780631d26fce6146102d0578063217b2270146102fd5780632a3654a4146103355761020e565b806301ffc9a71461024f57806316e023b31461028457806318160ddd146102b15761020e565b3661020e57346000036101dc5760405163e5099ee360e01b81526004016101d39060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561023957828260405163e5099ee360e01b81526004016101d3929190612626565b61024383836105aa565b80519350602001915050f35b34801561025b57600080fd5b5061026f61026a366004612655565b6106b9565b60405190151581526020015b60405180910390f35b34801561029057600080fd5b506102a461029f36600461267f565b610706565b60405161027b91906126f1565b3480156102bd57600080fd5b506098545b60405190815260200161027b565b3480156102dc57600080fd5b506102f06102eb3660046127da565b610719565b60405161027b919061283e565b34801561030957600080fd5b5061031d6103183660046128a0565b610801565b6040516001600160a01b03909116815260200161027b565b34801561034157600080fd5b5061026f6103503660046128d5565b61083a565b34801561036157600080fd5b506103756103703660046128a0565b610846565b60405161027b91906128ff565b34801561038e57600080fd5b506103a261039d3660046129d5565b610868565b005b3480156103b057600080fd5b506102a46103bf3660046128a0565b6108c5565b3480156103d057600080fd5b506102f06103df366004612a4e565b6108d0565b3480156103f057600080fd5b506102c26103ff366004612ac3565b610a19565b34801561041057600080fd5b506103a2610a3a565b34801561042557600080fd5b506103a2610434366004612ade565b610a4e565b34801561044557600080fd5b506103a2610454366004612ca8565b610b78565b6103a2610467366004612d6d565b610c80565b34801561047857600080fd5b506103a2610487366004612daa565b610cb5565b34801561049857600080fd5b506033546001600160a01b031661031d565b6103a26104b8366004612e01565b610e40565b3480156104c957600080fd5b506104dd6104d8366004612ac3565b610e71565b60405161027b9190612e5b565b3480156104f657600080fd5b506103a2610505366004612e93565b610e95565b34801561051657600080fd5b506103a2610525366004612efb565b610eaf565b34801561053657600080fd5b506103a2610545366004612f79565b610f8d565b34801561055657600080fd5b506103a2610565366004612e93565b610fa5565b34801561057657600080fd5b506102f0610585366004612fb3565b6110a2565b34801561059657600080fd5b506103a26105a5366004612ac3565b61114d565b606060006105c36000356001600160e01b0319166111dd565b5090506001600160a01b038116610614576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101d3565b600080826001600160a01b031634878733346040516020016106399493929190612fe8565b60408051601f198184030181529082905261065391613018565b60006040518083038185875af1925050503d8060008114610690576040519150601f19603f3d011682016040523d82523d6000602084013e610695565b606091505b509150915081156106aa5792506106b3915050565b80518060208301fd5b92915050565b60006001600160e01b031982167f3a2717060000000000000000000000000000000000000000000000000000000014806106f757506106f782611287565b806106b357506106b3826112c5565b606061071283836112fc565b9392505050565b6060815183511461073d576040516317d38eff60e11b815260040160405180910390fd5b825167ffffffffffffffff81111561075757610757612704565b60405190808252806020026020018201604052801561078a57816020015b60608152602001906001900390816107755790505b50905060005b83518110156107fa576107d58482815181106107ae576107ae613034565b60200260200101518483815181106107c8576107c8613034565b60200260200101516112fc565b8282815181106107e7576107e7613034565b6020908102919091010152600101610790565b5092915050565b6000818152609960205260408120546001600160a01b0316806106b357604051635747cd1b60e11b8152600481018490526024016101d3565b600061071283836113d3565b606061085182611410565b6000828152609b602052604090206106b390611448565b61087233846113d3565b6108b1576040517f1294d2a9000000000000000000000000000000000000000000000000000000008152600481018490523360248201526044016101d3565b6108be8585858585611455565b5050505050565b60606106b38261165d565b60608167ffffffffffffffff8111156108eb576108eb612704565b60405190808252806020026020018201604052801561091e57816020015b60608152602001906001900390816109095790505b50905060005b828110156107fa576000803086868581811061094257610942613034565b9050602002810190610954919061304a565b604051610962929190613098565b600060405180830381855af49150503d806000811461099d576040519150601f19603f3d011682016040523d82523d6000602084013e6109a2565b606091505b5091509150816109f1578051156109bc5780518082602001fd5b6040517f234eb819000000000000000000000000000000000000000000000000000000008152600481018490526024016101d3565b80848481518110610a0457610a04613034565b60209081029190910101525050600101610924565b6001600160a01b0381166000908152609a602052604081206106b3906116ff565b610a42611709565b610a4c6000611763565b565b600054610100900460ff1615808015610a6e5750600054600160ff909116105b80610a885750303b158015610a88575060005460ff166001145b610afa5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101d3565b6000805460ff191660011790558015610b1d576000805461ff0019166101001790555b610b2a86868686866117c2565b8015610b70576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b8451845181141580610b8b575083518114155b80610b97575082518114155b80610ba3575081518114155b15610bda576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610c7757610c6f878281518110610bfa57610bfa613034565b6020026020010151878381518110610c1457610c14613034565b6020026020010151878481518110610c2e57610c2e613034565b6020026020010151878581518110610c4857610c48613034565b6020026020010151878681518110610c6257610c62613034565b6020026020010151610868565b600101610bdd565b50505050505050565b610c88611709565b3415610ca75760405163f36ba73760e01b815260040160405180910390fd5b610cb1828261183a565b5050565b6000610cc083610801565b90506001600160a01b0381163314610d0357604051632d938f5160e11b81526001600160a01b0382166004820152602481018490523360448201526064016101d3565b6001600160a01b038416610d2a57604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031603610d5c576040516344fed6b160e11b815260040160405180910390fd5b6000838152609b60205260408120610d74908661189d565b905080610dbf576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018590526044016101d3565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc23667121586604051610e0391906126f1565b60405180910390a460003385600186604051602001610e2594939291906130a8565b6040516020818303038152906040529050610b7086826118b2565b610e48611709565b3415610e675760405163f36ba73760e01b815260040160405180910390fd5b610cb182826118dd565b6001600160a01b0381166000908152609a602052604090206060906106b390611448565b610e9d611709565b610ea9848484846119a3565b50505050565b610eb7611709565b81518351141580610eca57508051825114155b15610ee8576040516317d38eff60e11b815260040160405180910390fd5b8251600003610f23576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8351811015610ea957610f85848281518110610f4457610f44613034565b6020026020010151848381518110610f5e57610f5e613034565b6020026020010151848481518110610f7857610f78613034565b6020026020010151611b20565b600101610f26565b610f95611709565b610fa0838383611b20565b505050565b6000610fb084610801565b9050336001600160a01b0382161461101c576001600160a01b038516331461101c576040517f760b5acd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382166024820152604481018590526064016101d3565b6001600160a01b03851661104357604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b031603611075576040516344fed6b160e11b815260040160405180910390fd5b6110828582868686611bb0565b82156108be5760008185600085604051602001610e2594939291906130a8565b6060815167ffffffffffffffff8111156110be576110be612704565b6040519080825280602002602001820160405280156110f157816020015b60608152602001906001900390816110dc5790505b50905060005b82518110156111475761112283828151811061111557611115613034565b602002602001015161165d565b82828151811061113457611134613034565b60209081029190910101526001016110f7565b50919050565b611155611709565b6001600160a01b0381166111d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d3565b6111da81611763565b50565b600080806112157fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616611c69565b905060006112228261165d565b905080516014141580156112365750805115155b1561126f57806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101d391906126f1565b611278816130e2565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806106b357506106b382611cda565b6000806112d86301ffc9a760e01b6111dd565b5090506001600160a01b0381166112f25750600092915050565b6107128184611d28565b606060976000848460405160200161131e929190918252602082015260400190565b604051602081830303815290604052805190602001208152602001908152602001600020805461134d9061311e565b80601f01602080910402602001604051908101604052809291908181526020018280546113799061311e565b80156113c65780601f1061139b576101008083540402835291602001916113c6565b820191906000526020600020905b8154815290600101906020018083116113a957829003601f168201915b5050505050905092915050565b60006113de82610801565b6001600160a01b0316836001600160a01b0316148061071257506000828152609b602052604090206107129084611dc6565b6000818152609960205260409020546001600160a01b03166111da57604051635747cd1b60e11b8152600481018290526024016101d3565b6060600061071283611de8565b600061146084610801565b9050856001600160a01b0316816001600160a01b0316146114ae57604051632d938f5160e11b81526001600160a01b03808316600483015260248201869052871660448201526064016101d3565b6001600160a01b0385166114d5576040516324ecef4d60e01b815260040160405180910390fd5b60006114e085610801565b9050806001600160a01b0316826001600160a01b031614611547576040517f5a9c31d3000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038084166024830152821660448201526064016101d3565b6115518786611e43565b6001600160a01b0387166000908152609a602052604090206115739086611e9b565b506001600160a01b0386166000908152609a602052604090206115969086611ea7565b5060008581526099602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061160a9033908a908a90613152565b60405180910390a46000338888888760405160200161162d959493929190613185565b60405160208183030381529060405290506116488882611eb3565b611653878683611ede565b5050505050505050565b600081815260976020526040902080546060919061167a9061311e565b80601f01602080910402602001604051908101604052809291908181526020018280546116a69061311e565b80156116f35780601f106116c8576101008083540402835291602001916116f3565b820191906000526020600020905b8154815290600101906020018083116116d657829003601f168201915b50505050509050919050565b60006106b3825490565b6033546001600160a01b03163314610a4c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d3565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661182d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d3565b6108be8585858585612018565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e738201611893576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cb182826120d1565b6000610712836001600160a01b038416612231565b610cb1827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083612280565b8051825114611918576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003611953576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610fa05761199b83828151811061197457611974613034565b602002602001015183838151811061198e5761198e613034565b602002602001015161183a565b600101611956565b6001600160a01b0384166119ca576040516324ecef4d60e01b815260040160405180910390fd5b6000838152609960205260409020546001600160a01b031615611a03576040516334c7b51160e01b8152600481018490526024016101d3565b6000838152609960205260409020546001600160a01b031615611a3c576040516334c7b51160e01b8152600481018490526024016101d3565b609860008154611a4b906131d5565b909155506001600160a01b0384166000908152609a60205260409020611a719084611ea7565b50600083815260996020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90611ae090339088908890613152565b60405180910390a46000336000868685604051602001611b04959493929190613185565b60405160208183030381529060405290506108be858483611ede565b80609760008585604051602001611b41929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020016000209081611b719190613234565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb83604051611ba391906126f1565b60405180910390a3505050565b6000838152609b60205260408120611bc890876122cd565b905080611c13576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b0387166004820152602481018590526044016101d3565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c8686604051611c599291906132f4565b60405180910390a4505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080611cd29061330f565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806106b357506301ffc9a760e01b6001600160e01b03198316146106b3565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611daf575060208210155b8015611dbb5750600081115b979650505050505050565b6001600160a01b03811660009081526001830160205260408120541515610712565b6060816000018054806020026020016040519081016040528092919081815260200182805480156116f357602002820191906000526020600020905b815481526020019060010190808311611e245750505050509050919050565b6000818152609b6020526040812090611e5b826116ff565b90506000805b82811015610b7057611e748460006122e2565b9150611e93828787600060405180602001604052806000815250611bb0565b600101611e61565b600061071283836122ee565b60006107128383612231565b610cb1827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083612280565b611eef83631aed5a8560e21b611d28565b15611f8957604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611f42907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d908590600401613333565b6000604051808303816000875af1158015611f61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ea9919081019061334c565b81610fa0576001600160a01b0383163b15611fdb576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101d3565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101d3565b600054610100900460ff166120835760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d3565b61208f858585856123e1565b60408051602081018390526108be917ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d91016040516020818303038152906040525b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f820161212a576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201612183576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016121dc576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526097602052604090206121f48282613234565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b28260405161222591906126f1565b60405180910390a25050565b6000818152600183016020526040812054612278575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106b3565b5060006106b3565b61229a6001600160a01b038416631aed5a8560e21b611d28565b15610fa057604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611f429085908590600401613333565b6000610712836001600160a01b0384166122ee565b60006107128383612551565b600081815260018301602052604081205480156123d75760006123126001836133ba565b8554909150600090612326906001906133ba565b905081811461238b57600086600001828154811061234657612346613034565b906000526020600020015490508087600001848154811061236957612369613034565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061239c5761239c6133cd565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106b3565b60009150506106b3565b600054610100900460ff1661244c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d3565b6124558261257b565b6124b77feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c60001b6040518060400160405280600481526020017fa4d96624000000000000000000000000000000000000000000000000000000008152506121dc565b6124e17fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856121dc565b61250b7f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846121dc565b6040805160208101839052610ea9917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb391016040516020818303038152906040526121dc565b600082600001828154811061256857612568613034565b9060005260206000200154905092915050565b600054610100900460ff166125e65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d3565b6001600160a01b0381166111d1576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561266757600080fd5b81356001600160e01b03198116811461071257600080fd5b6000806040838503121561269257600080fd5b50508035926020909101359150565b60005b838110156126bc5781810151838201526020016126a4565b50506000910152565b600081518084526126dd8160208601602086016126a1565b601f01601f19169290920160200192915050565b60208152600061071260208301846126c5565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561274357612743612704565b604052919050565b600067ffffffffffffffff82111561276557612765612704565b5060051b60200190565b600082601f83011261278057600080fd5b813560206127956127908361274b565b61271a565b82815260059290921b840181019181810190868411156127b457600080fd5b8286015b848110156127cf57803583529183019183016127b8565b509695505050505050565b600080604083850312156127ed57600080fd5b823567ffffffffffffffff8082111561280557600080fd5b6128118683870161276f565b9350602085013591508082111561282757600080fd5b506128348582860161276f565b9150509250929050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561289357603f198886030184526128818583516126c5565b94509285019290850190600101612865565b5092979650505050505050565b6000602082840312156128b257600080fd5b5035919050565b80356001600160a01b03811681146128d057600080fd5b919050565b600080604083850312156128e857600080fd5b6128f1836128b9565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156129405783516001600160a01b03168352928401929184019160010161291b565b50909695505050505050565b803580151581146128d057600080fd5b600067ffffffffffffffff82111561297657612976612704565b50601f01601f191660200190565b600082601f83011261299557600080fd5b81356129a36127908261295c565b8181528460208386010111156129b857600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156129ed57600080fd5b6129f6866128b9565b9450612a04602087016128b9565b935060408601359250612a196060870161294c565b9150608086013567ffffffffffffffff811115612a3557600080fd5b612a4188828901612984565b9150509295509295909350565b60008060208385031215612a6157600080fd5b823567ffffffffffffffff80821115612a7957600080fd5b818501915085601f830112612a8d57600080fd5b813581811115612a9c57600080fd5b8660208260051b8501011115612ab157600080fd5b60209290920196919550909350505050565b600060208284031215612ad557600080fd5b610712826128b9565b600080600080600060a08688031215612af657600080fd5b853567ffffffffffffffff80821115612b0e57600080fd5b612b1a89838a01612984565b96506020880135915080821115612b3057600080fd5b50612b3d88828901612984565b945050612b4c604087016128b9565b94979396509394606081013594506080013592915050565b600082601f830112612b7557600080fd5b81356020612b856127908361274b565b82815260059290921b84018101918181019086841115612ba457600080fd5b8286015b848110156127cf57612bb9816128b9565b8352918301918301612ba8565b600082601f830112612bd757600080fd5b81356020612be76127908361274b565b82815260059290921b84018101918181019086841115612c0657600080fd5b8286015b848110156127cf57612c1b8161294c565b8352918301918301612c0a565b600082601f830112612c3957600080fd5b81356020612c496127908361274b565b82815260059290921b84018101918181019086841115612c6857600080fd5b8286015b848110156127cf57803567ffffffffffffffff811115612c8c5760008081fd5b612c9a8986838b0101612984565b845250918301918301612c6c565b600080600080600060a08688031215612cc057600080fd5b853567ffffffffffffffff80821115612cd857600080fd5b612ce489838a01612b64565b96506020880135915080821115612cfa57600080fd5b612d0689838a01612b64565b95506040880135915080821115612d1c57600080fd5b612d2889838a0161276f565b94506060880135915080821115612d3e57600080fd5b612d4a89838a01612bc6565b93506080880135915080821115612d6057600080fd5b50612a4188828901612c28565b60008060408385031215612d8057600080fd5b82359150602083013567ffffffffffffffff811115612d9e57600080fd5b61283485828601612984565b600080600060608486031215612dbf57600080fd5b612dc8846128b9565b925060208401359150604084013567ffffffffffffffff811115612deb57600080fd5b612df786828701612984565b9150509250925092565b60008060408385031215612e1457600080fd5b823567ffffffffffffffff80821115612e2c57600080fd5b612e388683870161276f565b93506020850135915080821115612e4e57600080fd5b5061283485828601612c28565b6020808252825182820181905260009190848201906040850190845b8181101561294057835183529284019291840191600101612e77565b60008060008060808587031215612ea957600080fd5b612eb2856128b9565b935060208501359250612ec76040860161294c565b9150606085013567ffffffffffffffff811115612ee357600080fd5b612eef87828801612984565b91505092959194509250565b600080600060608486031215612f1057600080fd5b833567ffffffffffffffff80821115612f2857600080fd5b612f348783880161276f565b94506020860135915080821115612f4a57600080fd5b612f568783880161276f565b93506040860135915080821115612f6c57600080fd5b50612df786828701612c28565b600080600060608486031215612f8e57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612deb57600080fd5b600060208284031215612fc557600080fd5b813567ffffffffffffffff811115612fdc57600080fd5b611cd28482850161276f565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b6000825161302a8184602087016126a1565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261306157600080fd5b83018035915067ffffffffffffffff82111561307c57600080fd5b60200191503681900382131561309157600080fd5b9250929050565b8183823760009101908152919050565b6001600160a01b038516815283602082015282151560408201526080606082015260006130d860808301846126c5565b9695505050505050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156131165780818460140360031b1b83161693505b505050919050565b600181811c9082168061313257607f821691505b60208210810361114757634e487b7160e01b600052602260045260246000fd5b6001600160a01b0384168152821515602082015260606040820152600061317c60608301846126c5565b95945050505050565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a06080830152611dbb60a08301846126c5565b634e487b7160e01b600052601160045260246000fd5b6000600182016131e7576131e76131bf565b5060010190565b601f821115610fa057600081815260208120601f850160051c810160208610156132155750805b601f850160051c820191505b81811015610b7057828155600101613221565b815167ffffffffffffffff81111561324e5761324e612704565b6132628161325c845461311e565b846131ee565b602080601f831160018114613297576000841561327f5750858301515b600019600386901b1c1916600185901b178555610b70565b600085815260208120601f198616915b828110156132c6578886015182559484019460019091019084016132a7565b50858210156132e45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8215158152604060208201526000611cd260408301846126c5565b805160208083015191908110156111475760001960209190910360031b1b16919050565b828152604060208201526000611cd260408301846126c5565b60006020828403121561335e57600080fd5b815167ffffffffffffffff81111561337557600080fd5b8201601f8101841361338657600080fd5b80516133946127908261295c565b8181528560208385010111156133a957600080fd5b61317c8260208301602086016126a1565b818103818111156106b3576106b36131bf565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220cf230c419060992a91b0a64052e3afd05ffb6f3bd5ba44a8f15be6feff4ff9a764736f6c63430008110033",
1372
+ "bytecode": "0x6080604052348015600e575f5ffd5b5060156019565b60d3565b5f54610100900460ff161560835760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161460d1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b614ac6806100e05f395ff3fe6080604052600436106102a3575f3560e01c80637e5cd5c11161016d578063a3b261f2116100ca578063d547741f1161007e578063db8c966311610063578063db8c96631461083f578063dedff9c61461085e578063f2fde38b1461087d5761032e565b8063d547741f14610801578063d6c1407c146108205761032e565b8063be9f0e6f116100af578063be9f0e6f14610790578063ca15c873146107af578063d5391393146107ce5761032e565b8063a3b261f214610752578063af255b61146107715761032e565b80639010d07c116101215780639790242111610106578063979024211461070d578063a217fddf14610720578063a3246ad3146107335761032e565b80639010d07c146106cf57806391d14854146106ee5761032e565b80637f23690c116101525780637f23690c1461067357806386a10ddd146106865780638da5cb5b146106a55761032e565b80637e5cd5c1146106405780637e87632c146106545761032e565b80632f2ff15d1161021b57806354f6127f116101cf57806370a08231116101b457806370a08231146105ee578063715018a61461060d57806374823132146106215761032e565b806354f6127f146105b05780636963d438146105cf5761032e565b806346b45af71161020057806346b45af71461054c57806349a6078d14610565578063511b6952146105915761032e565b80632f2ff15d1461050e57806336568abe1461052d5761032e565b80631e4e009111610272578063248a9ca311610257578063248a9ca3146104985780632a3654a4146104c35780632de94807146104e25761032e565b80631e4e009114610433578063217b2270146104545761032e565b806301ffc9a71461038957806316e023b3146103bd57806318160ddd146103e95780631d26fce6146104075761032e565b3661032e57345f036102fc576040517fe5099ee30000000000000000000000000000000000000000000000000000000081526004016102f39060208082526004908201525f604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f36606082826004811015610371576040517fe5099ee30000000000000000000000000000000000000000000000000000000081526004016102f3929190613a2a565b505061037d838361089c565b80519350602001915050f35b348015610394575f5ffd5b506103a86103a3366004613a76565b610a31565b60405190151581526020015b60405180910390f35b3480156103c8575f5ffd5b506103dc6103d7366004613ab5565b610a4a565b6040516103b49190613b21565b3480156103f4575f5ffd5b506098545b6040519081526020016103b4565b348015610412575f5ffd5b50610426610421366004613c3c565b610a5d565b6040516103b49190613ca1565b34801561043e575f5ffd5b5061045261044d366004613ab5565b610b5d565b005b34801561045f575f5ffd5b5061047361046e366004613d22565b610b76565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103b4565b3480156104a3575f5ffd5b506103f96104b2366004613d22565b5f908152609c602052604090205490565b3480156104ce575f5ffd5b506103a86104dd366004613d61565b610bd5565b3480156104ed575f5ffd5b506105016104fc366004613d89565b610be0565b6040516103b49190613da2565b348015610519575f5ffd5b50610452610528366004613de4565b610c10565b348015610538575f5ffd5b50610452610547366004613de4565b610c31565b348015610557575f5ffd5b5060ce546103a89060ff1681565b348015610570575f5ffd5b5061058461057f366004613d22565b610d0e565b6040516103b49190613e0e565b34801561059c575f5ffd5b506104526105ab366004613efc565b610d2f565b3480156105bb575f5ffd5b506103dc6105ca366004613d22565b610da8565b3480156105da575f5ffd5b506104266105e9366004613f70565b610db3565b3480156105f9575f5ffd5b506103f9610608366004613d89565b610ef7565b348015610618575f5ffd5b50610452610f24565b34801561062c575f5ffd5b5061045261063b366004614026565b610f37565b34801561064b575f5ffd5b5061045261114a565b34801561065f575f5ffd5b5061045261066e3660046141fc565b6111e2565b6104526106813660046142d2565b6112e7565b348015610691575f5ffd5b506104526106a036600461430c565b611331565b3480156106b0575f5ffd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610473565b3480156106da575f5ffd5b506104736106e9366004613ab5565b611581565b3480156106f9575f5ffd5b506103a8610708366004613de4565b611598565b61045261071b36600461435f565b6115a3565b34801561072b575f5ffd5b506103f95f81565b34801561073e575f5ffd5b5061058461074d366004613d22565b6115ed565b34801561075d575f5ffd5b5061050161076c366004613d89565b611606565b34801561077c575f5ffd5b5061045261078b3660046143ba565b611636565b34801561079b575f5ffd5b506104526107aa36600461441e565b61166c565b3480156107ba575f5ffd5b506103f96107c9366004613d22565b611765565b3480156107d9575f5ffd5b506103f97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b34801561080c575f5ffd5b5061045261081b366004613de4565b61177b565b34801561082b575f5ffd5b5061045261083a3660046144a2565b61181f565b34801561084a575f5ffd5b506104526108593660046143ba565b611832565b348015610869575f5ffd5b506104266108783660046144d8565b6119b5565b348015610888575f5ffd5b50610452610897366004613d89565b611a5f565b60605f6108cb5f357fffffffff0000000000000000000000000000000000000000000000000000000016611b16565b5090507fffffffff000000000000000000000000000000000000000000000000000000005f351673ffffffffffffffffffffffffffffffffffffffff8216610964576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000090911660048201526024016102f3565b505f5f8273ffffffffffffffffffffffffffffffffffffffff163487873334604051602001610996949392919061450a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526109ce9161454d565b5f6040518083038185875af1925050503d805f8114610a08576040519150601f19603f3d011682016040523d82523d5f602084013e610a0d565b606091505b50915091508115610a22579250610a2b915050565b80518060208301fd5b92915050565b5f610a3b82611bd4565b80610a2b5750610a2b82611cb7565b6060610a568383611d1b565b9392505050565b60608151835114610a9a576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825167ffffffffffffffff811115610ab457610ab4613b33565b604051908082528060200260200182016040528015610ae757816020015b6060815260200190600190039081610ad25790505b5090505f5b8351811015610b5657610b31848281518110610b0a57610b0a614563565b6020026020010151848381518110610b2457610b24614563565b6020026020010151611d1b565b828281518110610b4357610b43614563565b6020908102919091010152600101610aec565b5092915050565b5f610b6781611dee565b610b718383611df8565b505050565b5f8181526099602052604081205473ffffffffffffffffffffffffffffffffffffffff168281610b56576040517fae8f9a360000000000000000000000000000000000000000000000000000000081526004016102f391815260200190565b5f610a568383611e76565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609e60205260409020606090610a2b90611ecb565b5f828152609c6020526040902054610c2781611dee565b610b718383611ed7565b73ffffffffffffffffffffffffffffffffffffffff81163314610c80576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81158015610ca5575060335473ffffffffffffffffffffffffffffffffffffffff1633145b1533839091610cfe576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102f3565b5050610d0a8233611f6e565b5050565b6060610d1982612005565b5f828152609b60205260409020610a2b90611ecb565b610d393384611e76565b83339091610d92576040517f1294d2a9000000000000000000000000000000000000000000000000000000008152600481019290925273ffffffffffffffffffffffffffffffffffffffff1660248201526044016102f3565b5050610da18585858585612066565b5050505050565b6060610a2b82612305565b60608167ffffffffffffffff811115610dce57610dce613b33565b604051908082528060200260200182016040528015610e0157816020015b6060815260200190600190039081610dec5790505b5090505f5b82811015610b56575f8030868685818110610e2357610e23614563565b9050602002810190610e359190614590565b604051610e439291906145f1565b5f60405180830381855af49150503d805f8114610e7b576040519150601f19603f3d011682016040523d82523d5f602084013e610e80565b606091505b509150915081610ecf57805115610e9a5780518082602001fd5b6040517f234eb819000000000000000000000000000000000000000000000000000000008152600481018490526024016102f3565b80848481518110610ee257610ee2614563565b60209081029190910101525050600101610e06565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609a60205260408120610a2b906123a4565b610f2c6123ad565b610f355f61242e565b565b5f54610100900460ff1615808015610f5557505f54600160ff909116105b80610f6e5750303b158015610f6e57505f5460ff166001145b610ffa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102f3565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611056575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6110cc88888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8c018190048102820181019092528a815292508a91508990819084018382808284375f92019190915250899250889150879050612461565b6110d4612549565b6110de60016125e7565b8015611140575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6111526123ad565b60ce5460ff1661118e576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ce80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040515f907f41f386d449eec03c1c3b75bbba9c18df70aa19779ff47f68eab4b6a66fb399d4908290a2565b84518451811480156111f45750835181145b80156112005750825181145b801561120c5750815181145b611242576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b818110156112de576112d687828151811061126157611261614563565b602002602001015187838151811061127b5761127b614563565b602002602001015187848151811061129557611295614563565b60200260200101518785815181106112af576112af614563565b60200260200101518786815181106112c9576112c9614563565b6020026020010151610d2f565b600101611244565b50505050505050565b6112ef6123ad565b3415611327576040517ff36ba73700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d0a8282612722565b5f61133b83610b76565b905080833373ffffffffffffffffffffffffffffffffffffffff831681146113b8576040517f5b271ea200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481019290925290911660448201526064016102f3565b50505073ffffffffffffffffffffffffffffffffffffffff8416611408576040517f9577b8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361146d576040517f89fdad6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f838152609b602052604081206114849086612785565b90508484826114dd576040517fa7626b6800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102f3565b5050838273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc2366712158660405161153d9190613b21565b60405180910390a45f338560018660405160200161155e9493929190614600565b604051602081830303815290604052905061157986826127a6565b505050505050565b5f828152609d60205260408120610a5690836127d1565b5f610a5683836127dc565b6115ab6123ad565b34156115e3576040517ff36ba73700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d0a82826127f3565b5f818152609d60205260409020606090610a2b90611ecb565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609a60205260409020606090610a2b90611ecb565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661166081611dee565b610da1858585856128b7565b6116746123ad565b81518351148015611686575080518251145b6116bc576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f036116f6576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b835181101561175f5761175784828151811061171657611716614563565b602002602001015184838151811061173057611730614563565b602002602001015184848151811061174a5761174a614563565b60200260200101516128ff565b6001016116f8565b50505050565b5f818152609d60205260408120610a2b906123a4565b5f828152609c602052604090205461179281611dee565b821580156117ba575060335473ffffffffffffffffffffffffffffffffffffffff8381169116145b1582849091611813576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102f3565b5050610b718383611f6e565b6118276123ad565b610b718383836128ff565b5f61183c84610b76565b90503373ffffffffffffffffffffffffffffffffffffffff8216146118d85733818573ffffffffffffffffffffffffffffffffffffffff881683146118d4576040517f760b5acd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015292909116602483015260448201526064016102f3565b5050505b73ffffffffffffffffffffffffffffffffffffffff8516611925576040517f9577b8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361198a576040517f89fdad6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611997858286868661298d565b8215610da1575f81855f8560405160200161155e9493929190614600565b6060815167ffffffffffffffff8111156119d1576119d1613b33565b604051908082528060200260200182016040528015611a0457816020015b60608152602001906001900390816119ef5790505b5090505f5b8251811015611a5957611a34838281518110611a2757611a27614563565b6020026020010151612305565b828281518110611a4657611a46614563565b6020908102919091010152600101611a09565b50919050565b611a676123ad565b73ffffffffffffffffffffffffffffffffffffffff8116611b0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102f3565b611b138161242e565b50565b5f8080611b657fcee78b4094da86011096000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008616612a6f565b90505f611b7182612305565b9050805160141480611b8257508051155b8190611bbb576040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016102f39190613b21565b50611bc581614646565b60601c95600195509350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480611c6657507fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000145b80610a2b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f90832245000000000000000000000000000000000000000000000000000000001492915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3a271706000000000000000000000000000000000000000000000000000000001480611d0c5750611d0c82612af2565b80610a2b5750610a2b82612b47565b606060975f8484604051602001611d3c929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020015f208054611d6a906146b2565b80601f0160208091040260200160405190810160405280929190818152602001828054611d96906146b2565b8015611de15780601f10611db857610100808354040283529160200191611de1565b820191905f5260205f20905b815481529060010190602001808311611dc457829003601f168201915b5050505050905092915050565b611b138133612ba2565b81611e2f576040517fd0dc904b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f828152609c6020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b5f611e8082610b76565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610a5657505f828152609b60205260409020610a569084612c04565b60605f610a5683612c32565b5f828152609d60205260408120611eee9083612785565b90508015610b715773ffffffffffffffffffffffffffffffffffffffff82165f908152609e60205260409020611f249084612c8a565b50604051339073ffffffffffffffffffffffffffffffffffffffff84169085907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d905f90a4505050565b5f828152609d60205260408120611f859083612c95565b90508015610b715773ffffffffffffffffffffffffffffffffffffffff82165f908152609e60205260409020611fbb9084612cb6565b50604051339073ffffffffffffffffffffffffffffffffffffffff84169085907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b905f90a4505050565b5f8181526099602052604090205473ffffffffffffffffffffffffffffffffffffffff1615158190610d0a576040517fae8f9a360000000000000000000000000000000000000000000000000000000081526004016102f391815260200190565b5f61207084610b76565b905080848773ffffffffffffffffffffffffffffffffffffffff818116908416146120f0576040517f5b271ea200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481019290925290911660448201526064016102f3565b50505073ffffffffffffffffffffffffffffffffffffffff8516612140576040517f24ecef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61214a85610b76565b905084828273ffffffffffffffffffffffffffffffffffffffff808216908316146121c8576040517f5a9c31d3000000000000000000000000000000000000000000000000000000008152600481019390935273ffffffffffffffffffffffffffffffffffffffff91821660248401521660448201526064016102f3565b5050506121d58786612cc1565b73ffffffffffffffffffffffffffffffffffffffff87165f908152609a602052604090206122039086612cb6565b5073ffffffffffffffffffffffffffffffffffffffff86165f908152609a602052604090206122329086612c8a565b505f858152609960205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf906122bd9033908a908a906146fd565b60405180910390a45f33888888876040516020016122df95949392919061473c565b60405160208183030381529060405290506122fa8882612d14565b611140878683612d3f565b5f818152609760205260409020805460609190612321906146b2565b80601f016020809104026020016040519081016040528092919081815260200182805461234d906146b2565b80156123985780601f1061236f57610100808354040283529160200191612398565b820191905f5260205f20905b81548152906001019060200180831161237b57829003601f168201915b50505050509050919050565b5f610a2b825490565b60335473ffffffffffffffffffffffffffffffffffffffff163314610f35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f3565b6124587f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a65f611df8565b611b1381612ef8565b5f54610100900460ff166124f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102f3565b61250385858585612fb3565b6040805160208101839052610da1917ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d910160405160208183030381529060405261314d565b5f54610100900460ff166125df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102f3565b610f356132ac565b5f54610100900460ff1661267d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102f3565b60ce80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040517f41f386d449eec03c1c3b75bbba9c18df70aa19779ff47f68eab4b6a66fb399d4905f90a28015611b1357611b137f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661271d60335473ffffffffffffffffffffffffffffffffffffffff1690565b611ed7565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e73820161277b576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d0a828261314d565b5f610a568373ffffffffffffffffffffffffffffffffffffffff8416613365565b610d0a827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f00970836133b1565b5f610a56838361344a565b5f828152609d60205260408120610a569083612c04565b805182511461282e576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81515f03612868576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610b71576128af83828151811061288857612888614563565b60200260200101518383815181106128a2576128a2614563565b6020026020010151612722565b60010161286a565b60ce5460ff166128f3576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61175f84848484613470565b8060975f858560405160200161291f929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020015f20908161294e91906147ec565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb836040516129809190613b21565b60405180910390a3505050565b5f838152609b602052604081206129a49087612c95565b90508584826129fd576040517f4aa31a8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102f3565b5050838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c8686604051612a5f929190614903565b60405180910390a4505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201525f602a82018190527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008416602c83015291829101604051602081830303815290604052905080612aea9061491d565b949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa918fa6b000000000000000000000000000000000000000000000000000000001480610a2b5750610a2b82613683565b5f80612b727f01ffc9a700000000000000000000000000000000000000000000000000000000611b16565b50905073ffffffffffffffffffffffffffffffffffffffff8116612b9857505f92915050565b610a568184613719565b612bac82826127dc565b8183909161175f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102f3565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515610a56565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561239857602002820191905f5260205f20905b815481526020019060010190808311612c6b5750505050509050919050565b5f610a568383613365565b5f610a568373ffffffffffffffffffffffffffffffffffffffff84166137e5565b5f610a5683836137e5565b5f818152609b6020526040812090612cd8826123a4565b90505f5f5b8281101561157957612cef845f6127d1565b9150612d0c8287875f60405180602001604052805f81525061298d565b600101612cdd565b610d0a827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab00836133b1565b612d69837f6bb56a1400000000000000000000000000000000000000000000000000000000613719565b15612e42576040517f6bb56a1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690636bb56a1490612de2907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d90859060040161495f565b5f604051808303815f875af1158015612dfd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261175f9190810190614977565b81610b715773ffffffffffffffffffffffffffffffffffffffff83163b15612eae576040517f4349776d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016102f3565b6040517f0317313700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016102f3565b5f612f1860335473ffffffffffffffffffffffffffffffffffffffff1690565b9050612f23826138c8565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609e60205260408120612f5090611ecb565b90505f5b815181101561175f575f828281518110612f7057612f70614563565b60200260200101519050612f848185611f6e565b73ffffffffffffffffffffffffffffffffffffffff851615612faa57612faa8186611ed7565b50600101612f54565b5f54610100900460ff16613049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102f3565b6130528261393e565b6130b37feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c5f1b6040518060400160405280600481526020017fa4d9662400000000000000000000000000000000000000000000000000000000815250613258565b6130dd7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af185613258565b6131077f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db93275684613258565b604080516020810183905261175f917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb39101604051602081830303815290604052613258565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016131a6576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016131ff576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201613258576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260976020526040902061326f82826147ec565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516132a09190613b21565b60405180910390a25050565b5f54610100900460ff16613342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102f3565b610f355f61271d60335473ffffffffffffffffffffffffffffffffffffffff1690565b5f8181526001830160205260408120546133aa57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610a2b565b505f610a2b565b6133f173ffffffffffffffffffffffffffffffffffffffff84167f6bb56a1400000000000000000000000000000000000000000000000000000000613719565b15610b71576040517f6bb56a1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690636bb56a1490612de2908590859060040161495f565b5f825f01828154811061345f5761345f614563565b905f5260205f200154905092915050565b73ffffffffffffffffffffffffffffffffffffffff84166134bd576040517f24ecef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260996020526040902054839073ffffffffffffffffffffffffffffffffffffffff161561351d576040517f34c7b5110000000000000000000000000000000000000000000000000000000081526004016102f391815260200190565b505f83815260996020526040902054839073ffffffffffffffffffffffffffffffffffffffff161561357e576040517f34c7b5110000000000000000000000000000000000000000000000000000000081526004016102f391815260200190565b5060985f815461358d90614a19565b9091555073ffffffffffffffffffffffffffffffffffffffff84165f908152609a602052604090206135bf9084612c8a565b505f8381526099602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90613645903390889088906146fd565b60405180910390a45f335f86868560405160200161366795949392919061473c565b6040516020818303038152906040529050610da1858483612d3f565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f629aa694000000000000000000000000000000000000000000000000000000001480610a2b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610a2b565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017815282515f9392849283928392918391908a617530fa92503d91505f5190508280156137cf575060208210155b80156137da57505f81115b979650505050505050565b5f81815260018301602052604081205480156138bf575f613807600183614a50565b85549091505f9061381a90600190614a50565b9050818114613879575f865f01828154811061383857613838614563565b905f5260205f200154905080875f01848154811061385857613858614563565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061388a5761388a614a63565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610a2b565b5f915050610a2b565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166139d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102f3565b73ffffffffffffffffffffffffffffffffffffffff8116613a21576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b13816138c8565b60208152816020820152818360408301375f818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b5f60208284031215613a86575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a56575f5ffd5b5f5f60408385031215613ac6575f5ffd5b50508035926020909101359150565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610a566020830184613ad5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613ba757613ba7613b33565b604052919050565b5f67ffffffffffffffff821115613bc857613bc8613b33565b5060051b60200190565b5f82601f830112613be1575f5ffd5b8135613bf4613bef82613baf565b613b60565b8082825260208201915060208360051b860101925085831115613c15575f5ffd5b602085015b83811015613c32578035835260209283019201613c1a565b5095945050505050565b5f5f60408385031215613c4d575f5ffd5b823567ffffffffffffffff811115613c63575f5ffd5b613c6f85828601613bd2565b925050602083013567ffffffffffffffff811115613c8b575f5ffd5b613c9785828601613bd2565b9150509250929050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613d16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452613d01858351613ad5565b94506020938401939190910190600101613cc7565b50929695505050505050565b5f60208284031215613d32575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114613d5c575f5ffd5b919050565b5f5f60408385031215613d72575f5ffd5b613d7b83613d39565b946020939093013593505050565b5f60208284031215613d99575f5ffd5b610a5682613d39565b602080825282518282018190525f918401906040840190835b81811015613dd9578351835260209384019390920191600101613dbb565b509095945050505050565b5f5f60408385031215613df5575f5ffd5b82359150613e0560208401613d39565b90509250929050565b602080825282518282018190525f918401906040840190835b81811015613dd957835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101613e27565b80358015158114613d5c575f5ffd5b5f67ffffffffffffffff821115613e8357613e83613b33565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112613ebe575f5ffd5b8135613ecc613bef82613e6a565b818152846020838601011115613ee0575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a08688031215613f10575f5ffd5b613f1986613d39565b9450613f2760208701613d39565b935060408601359250613f3c60608701613e5b565b9150608086013567ffffffffffffffff811115613f57575f5ffd5b613f6388828901613eaf565b9150509295509295909350565b5f5f60208385031215613f81575f5ffd5b823567ffffffffffffffff811115613f97575f5ffd5b8301601f81018513613fa7575f5ffd5b803567ffffffffffffffff811115613fbd575f5ffd5b8560208260051b8401011115613fd1575f5ffd5b6020919091019590945092505050565b5f5f83601f840112613ff1575f5ffd5b50813567ffffffffffffffff811115614008575f5ffd5b60208301915083602082850101111561401f575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a03121561403c575f5ffd5b873567ffffffffffffffff811115614052575f5ffd5b61405e8a828b01613fe1565b909850965050602088013567ffffffffffffffff81111561407d575f5ffd5b6140898a828b01613fe1565b909650945061409c905060408901613d39565b969995985093969295946060840135945060809093013592915050565b5f82601f8301126140c8575f5ffd5b81356140d6613bef82613baf565b8082825260208201915060208360051b8601019250858311156140f7575f5ffd5b602085015b83811015613c325761410d81613d39565b8352602092830192016140fc565b5f82601f83011261412a575f5ffd5b8135614138613bef82613baf565b8082825260208201915060208360051b860101925085831115614159575f5ffd5b602085015b83811015613c325761416f81613e5b565b83526020928301920161415e565b5f82601f83011261418c575f5ffd5b813561419a613bef82613baf565b8082825260208201915060208360051b8601019250858311156141bb575f5ffd5b602085015b83811015613c3257803567ffffffffffffffff8111156141de575f5ffd5b6141ed886020838a0101613eaf565b845250602092830192016141c0565b5f5f5f5f5f60a08688031215614210575f5ffd5b853567ffffffffffffffff811115614226575f5ffd5b614232888289016140b9565b955050602086013567ffffffffffffffff81111561424e575f5ffd5b61425a888289016140b9565b945050604086013567ffffffffffffffff811115614276575f5ffd5b61428288828901613bd2565b935050606086013567ffffffffffffffff81111561429e575f5ffd5b6142aa8882890161411b565b925050608086013567ffffffffffffffff8111156142c6575f5ffd5b613f638882890161417d565b5f5f604083850312156142e3575f5ffd5b82359150602083013567ffffffffffffffff811115614300575f5ffd5b613c9785828601613eaf565b5f5f5f6060848603121561431e575f5ffd5b61432784613d39565b925060208401359150604084013567ffffffffffffffff811115614349575f5ffd5b61435586828701613eaf565b9150509250925092565b5f5f60408385031215614370575f5ffd5b823567ffffffffffffffff811115614386575f5ffd5b61439285828601613bd2565b925050602083013567ffffffffffffffff8111156143ae575f5ffd5b613c978582860161417d565b5f5f5f5f608085870312156143cd575f5ffd5b6143d685613d39565b9350602085013592506143eb60408601613e5b565b9150606085013567ffffffffffffffff811115614406575f5ffd5b61441287828801613eaf565b91505092959194509250565b5f5f5f60608486031215614430575f5ffd5b833567ffffffffffffffff811115614446575f5ffd5b61445286828701613bd2565b935050602084013567ffffffffffffffff81111561446e575f5ffd5b61447a86828701613bd2565b925050604084013567ffffffffffffffff811115614496575f5ffd5b6143558682870161417d565b5f5f5f606084860312156144b4575f5ffd5b8335925060208401359150604084013567ffffffffffffffff811115614349575f5ffd5b5f602082840312156144e8575f5ffd5b813567ffffffffffffffff8111156144fe575f5ffd5b612aea84828501613bd2565b8385823760609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016919092019081526014810191909152603401919050565b5f82518060208501845e5f920191825250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126145c3575f5ffd5b83018035915067ffffffffffffffff8211156145dd575f5ffd5b60200191503681900382131561401f575f5ffd5b818382375f9101908152919050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201528215156040820152608060608201525f61463c6080830184613ad5565b9695505050505050565b805160208201517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116919060148210156146ab577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b5050919050565b600181811c908216806146c657607f821691505b602082108103611a59577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff841681528215156020820152606060408201525f6147336060830184613ad5565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015273ffffffffffffffffffffffffffffffffffffffff8416604082015282606082015260a060808201525f6137da60a0830184613ad5565b601f821115610b7157805f5260205f20601f840160051c810160208510156147cd5750805b601f840160051c820191505b81811015610da1575f81556001016147d9565b815167ffffffffffffffff81111561480657614806613b33565b61481a8161481484546146b2565b846147a8565b6020601f82116001811461486b575f83156148355750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610da1565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156148b85787850151825560209485019460019092019101614898565b50848210156148f457868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b8215158152604060208201525f612aea6040830184613ad5565b80516020808301519190811015611a59577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b828152604060208201525f612aea6040830184613ad5565b5f60208284031215614987575f5ffd5b815167ffffffffffffffff81111561499d575f5ffd5b8201601f810184136149ad575f5ffd5b80516149bb613bef82613e6a565b8181528560208385010111156149cf575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614a4957614a496149ec565b5060010190565b81810381811115610a2b57610a2b6149ec565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea264697066735822122038341c97a314c1d09ed6baf66f3b33da7b62fc4ad16b6032cf6fc1d4dd01383864736f6c634300081c0033",
1373
+ "deployedBytecode": "0x6080604052600436106102a3575f3560e01c80637e5cd5c11161016d578063a3b261f2116100ca578063d547741f1161007e578063db8c966311610063578063db8c96631461083f578063dedff9c61461085e578063f2fde38b1461087d5761032e565b8063d547741f14610801578063d6c1407c146108205761032e565b8063be9f0e6f116100af578063be9f0e6f14610790578063ca15c873146107af578063d5391393146107ce5761032e565b8063a3b261f214610752578063af255b61146107715761032e565b80639010d07c116101215780639790242111610106578063979024211461070d578063a217fddf14610720578063a3246ad3146107335761032e565b80639010d07c146106cf57806391d14854146106ee5761032e565b80637f23690c116101525780637f23690c1461067357806386a10ddd146106865780638da5cb5b146106a55761032e565b80637e5cd5c1146106405780637e87632c146106545761032e565b80632f2ff15d1161021b57806354f6127f116101cf57806370a08231116101b457806370a08231146105ee578063715018a61461060d57806374823132146106215761032e565b806354f6127f146105b05780636963d438146105cf5761032e565b806346b45af71161020057806346b45af71461054c57806349a6078d14610565578063511b6952146105915761032e565b80632f2ff15d1461050e57806336568abe1461052d5761032e565b80631e4e009111610272578063248a9ca311610257578063248a9ca3146104985780632a3654a4146104c35780632de94807146104e25761032e565b80631e4e009114610433578063217b2270146104545761032e565b806301ffc9a71461038957806316e023b3146103bd57806318160ddd146103e95780631d26fce6146104075761032e565b3661032e57345f036102fc576040517fe5099ee30000000000000000000000000000000000000000000000000000000081526004016102f39060208082526004908201525f604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f36606082826004811015610371576040517fe5099ee30000000000000000000000000000000000000000000000000000000081526004016102f3929190613a2a565b505061037d838361089c565b80519350602001915050f35b348015610394575f5ffd5b506103a86103a3366004613a76565b610a31565b60405190151581526020015b60405180910390f35b3480156103c8575f5ffd5b506103dc6103d7366004613ab5565b610a4a565b6040516103b49190613b21565b3480156103f4575f5ffd5b506098545b6040519081526020016103b4565b348015610412575f5ffd5b50610426610421366004613c3c565b610a5d565b6040516103b49190613ca1565b34801561043e575f5ffd5b5061045261044d366004613ab5565b610b5d565b005b34801561045f575f5ffd5b5061047361046e366004613d22565b610b76565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103b4565b3480156104a3575f5ffd5b506103f96104b2366004613d22565b5f908152609c602052604090205490565b3480156104ce575f5ffd5b506103a86104dd366004613d61565b610bd5565b3480156104ed575f5ffd5b506105016104fc366004613d89565b610be0565b6040516103b49190613da2565b348015610519575f5ffd5b50610452610528366004613de4565b610c10565b348015610538575f5ffd5b50610452610547366004613de4565b610c31565b348015610557575f5ffd5b5060ce546103a89060ff1681565b348015610570575f5ffd5b5061058461057f366004613d22565b610d0e565b6040516103b49190613e0e565b34801561059c575f5ffd5b506104526105ab366004613efc565b610d2f565b3480156105bb575f5ffd5b506103dc6105ca366004613d22565b610da8565b3480156105da575f5ffd5b506104266105e9366004613f70565b610db3565b3480156105f9575f5ffd5b506103f9610608366004613d89565b610ef7565b348015610618575f5ffd5b50610452610f24565b34801561062c575f5ffd5b5061045261063b366004614026565b610f37565b34801561064b575f5ffd5b5061045261114a565b34801561065f575f5ffd5b5061045261066e3660046141fc565b6111e2565b6104526106813660046142d2565b6112e7565b348015610691575f5ffd5b506104526106a036600461430c565b611331565b3480156106b0575f5ffd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610473565b3480156106da575f5ffd5b506104736106e9366004613ab5565b611581565b3480156106f9575f5ffd5b506103a8610708366004613de4565b611598565b61045261071b36600461435f565b6115a3565b34801561072b575f5ffd5b506103f95f81565b34801561073e575f5ffd5b5061058461074d366004613d22565b6115ed565b34801561075d575f5ffd5b5061050161076c366004613d89565b611606565b34801561077c575f5ffd5b5061045261078b3660046143ba565b611636565b34801561079b575f5ffd5b506104526107aa36600461441e565b61166c565b3480156107ba575f5ffd5b506103f96107c9366004613d22565b611765565b3480156107d9575f5ffd5b506103f97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b34801561080c575f5ffd5b5061045261081b366004613de4565b61177b565b34801561082b575f5ffd5b5061045261083a3660046144a2565b61181f565b34801561084a575f5ffd5b506104526108593660046143ba565b611832565b348015610869575f5ffd5b506104266108783660046144d8565b6119b5565b348015610888575f5ffd5b50610452610897366004613d89565b611a5f565b60605f6108cb5f357fffffffff0000000000000000000000000000000000000000000000000000000016611b16565b5090507fffffffff000000000000000000000000000000000000000000000000000000005f351673ffffffffffffffffffffffffffffffffffffffff8216610964576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000090911660048201526024016102f3565b505f5f8273ffffffffffffffffffffffffffffffffffffffff163487873334604051602001610996949392919061450a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526109ce9161454d565b5f6040518083038185875af1925050503d805f8114610a08576040519150601f19603f3d011682016040523d82523d5f602084013e610a0d565b606091505b50915091508115610a22579250610a2b915050565b80518060208301fd5b92915050565b5f610a3b82611bd4565b80610a2b5750610a2b82611cb7565b6060610a568383611d1b565b9392505050565b60608151835114610a9a576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825167ffffffffffffffff811115610ab457610ab4613b33565b604051908082528060200260200182016040528015610ae757816020015b6060815260200190600190039081610ad25790505b5090505f5b8351811015610b5657610b31848281518110610b0a57610b0a614563565b6020026020010151848381518110610b2457610b24614563565b6020026020010151611d1b565b828281518110610b4357610b43614563565b6020908102919091010152600101610aec565b5092915050565b5f610b6781611dee565b610b718383611df8565b505050565b5f8181526099602052604081205473ffffffffffffffffffffffffffffffffffffffff168281610b56576040517fae8f9a360000000000000000000000000000000000000000000000000000000081526004016102f391815260200190565b5f610a568383611e76565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609e60205260409020606090610a2b90611ecb565b5f828152609c6020526040902054610c2781611dee565b610b718383611ed7565b73ffffffffffffffffffffffffffffffffffffffff81163314610c80576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81158015610ca5575060335473ffffffffffffffffffffffffffffffffffffffff1633145b1533839091610cfe576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102f3565b5050610d0a8233611f6e565b5050565b6060610d1982612005565b5f828152609b60205260409020610a2b90611ecb565b610d393384611e76565b83339091610d92576040517f1294d2a9000000000000000000000000000000000000000000000000000000008152600481019290925273ffffffffffffffffffffffffffffffffffffffff1660248201526044016102f3565b5050610da18585858585612066565b5050505050565b6060610a2b82612305565b60608167ffffffffffffffff811115610dce57610dce613b33565b604051908082528060200260200182016040528015610e0157816020015b6060815260200190600190039081610dec5790505b5090505f5b82811015610b56575f8030868685818110610e2357610e23614563565b9050602002810190610e359190614590565b604051610e439291906145f1565b5f60405180830381855af49150503d805f8114610e7b576040519150601f19603f3d011682016040523d82523d5f602084013e610e80565b606091505b509150915081610ecf57805115610e9a5780518082602001fd5b6040517f234eb819000000000000000000000000000000000000000000000000000000008152600481018490526024016102f3565b80848481518110610ee257610ee2614563565b60209081029190910101525050600101610e06565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609a60205260408120610a2b906123a4565b610f2c6123ad565b610f355f61242e565b565b5f54610100900460ff1615808015610f5557505f54600160ff909116105b80610f6e5750303b158015610f6e57505f5460ff166001145b610ffa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102f3565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611056575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6110cc88888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8c018190048102820181019092528a815292508a91508990819084018382808284375f92019190915250899250889150879050612461565b6110d4612549565b6110de60016125e7565b8015611140575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6111526123ad565b60ce5460ff1661118e576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ce80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040515f907f41f386d449eec03c1c3b75bbba9c18df70aa19779ff47f68eab4b6a66fb399d4908290a2565b84518451811480156111f45750835181145b80156112005750825181145b801561120c5750815181145b611242576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b818110156112de576112d687828151811061126157611261614563565b602002602001015187838151811061127b5761127b614563565b602002602001015187848151811061129557611295614563565b60200260200101518785815181106112af576112af614563565b60200260200101518786815181106112c9576112c9614563565b6020026020010151610d2f565b600101611244565b50505050505050565b6112ef6123ad565b3415611327576040517ff36ba73700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d0a8282612722565b5f61133b83610b76565b905080833373ffffffffffffffffffffffffffffffffffffffff831681146113b8576040517f5b271ea200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481019290925290911660448201526064016102f3565b50505073ffffffffffffffffffffffffffffffffffffffff8416611408576040517f9577b8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361146d576040517f89fdad6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f838152609b602052604081206114849086612785565b90508484826114dd576040517fa7626b6800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102f3565b5050838273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc2366712158660405161153d9190613b21565b60405180910390a45f338560018660405160200161155e9493929190614600565b604051602081830303815290604052905061157986826127a6565b505050505050565b5f828152609d60205260408120610a5690836127d1565b5f610a5683836127dc565b6115ab6123ad565b34156115e3576040517ff36ba73700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d0a82826127f3565b5f818152609d60205260409020606090610a2b90611ecb565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609a60205260409020606090610a2b90611ecb565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661166081611dee565b610da1858585856128b7565b6116746123ad565b81518351148015611686575080518251145b6116bc576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f036116f6576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b835181101561175f5761175784828151811061171657611716614563565b602002602001015184838151811061173057611730614563565b602002602001015184848151811061174a5761174a614563565b60200260200101516128ff565b6001016116f8565b50505050565b5f818152609d60205260408120610a2b906123a4565b5f828152609c602052604090205461179281611dee565b821580156117ba575060335473ffffffffffffffffffffffffffffffffffffffff8381169116145b1582849091611813576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102f3565b5050610b718383611f6e565b6118276123ad565b610b718383836128ff565b5f61183c84610b76565b90503373ffffffffffffffffffffffffffffffffffffffff8216146118d85733818573ffffffffffffffffffffffffffffffffffffffff881683146118d4576040517f760b5acd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015292909116602483015260448201526064016102f3565b5050505b73ffffffffffffffffffffffffffffffffffffffff8516611925576040517f9577b8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361198a576040517f89fdad6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611997858286868661298d565b8215610da1575f81855f8560405160200161155e9493929190614600565b6060815167ffffffffffffffff8111156119d1576119d1613b33565b604051908082528060200260200182016040528015611a0457816020015b60608152602001906001900390816119ef5790505b5090505f5b8251811015611a5957611a34838281518110611a2757611a27614563565b6020026020010151612305565b828281518110611a4657611a46614563565b6020908102919091010152600101611a09565b50919050565b611a676123ad565b73ffffffffffffffffffffffffffffffffffffffff8116611b0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102f3565b611b138161242e565b50565b5f8080611b657fcee78b4094da86011096000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008616612a6f565b90505f611b7182612305565b9050805160141480611b8257508051155b8190611bbb576040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016102f39190613b21565b50611bc581614646565b60601c95600195509350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480611c6657507fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000145b80610a2b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f90832245000000000000000000000000000000000000000000000000000000001492915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3a271706000000000000000000000000000000000000000000000000000000001480611d0c5750611d0c82612af2565b80610a2b5750610a2b82612b47565b606060975f8484604051602001611d3c929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020015f208054611d6a906146b2565b80601f0160208091040260200160405190810160405280929190818152602001828054611d96906146b2565b8015611de15780601f10611db857610100808354040283529160200191611de1565b820191905f5260205f20905b815481529060010190602001808311611dc457829003601f168201915b5050505050905092915050565b611b138133612ba2565b81611e2f576040517fd0dc904b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f828152609c6020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b5f611e8082610b76565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610a5657505f828152609b60205260409020610a569084612c04565b60605f610a5683612c32565b5f828152609d60205260408120611eee9083612785565b90508015610b715773ffffffffffffffffffffffffffffffffffffffff82165f908152609e60205260409020611f249084612c8a565b50604051339073ffffffffffffffffffffffffffffffffffffffff84169085907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d905f90a4505050565b5f828152609d60205260408120611f859083612c95565b90508015610b715773ffffffffffffffffffffffffffffffffffffffff82165f908152609e60205260409020611fbb9084612cb6565b50604051339073ffffffffffffffffffffffffffffffffffffffff84169085907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b905f90a4505050565b5f8181526099602052604090205473ffffffffffffffffffffffffffffffffffffffff1615158190610d0a576040517fae8f9a360000000000000000000000000000000000000000000000000000000081526004016102f391815260200190565b5f61207084610b76565b905080848773ffffffffffffffffffffffffffffffffffffffff818116908416146120f0576040517f5b271ea200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481019290925290911660448201526064016102f3565b50505073ffffffffffffffffffffffffffffffffffffffff8516612140576040517f24ecef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61214a85610b76565b905084828273ffffffffffffffffffffffffffffffffffffffff808216908316146121c8576040517f5a9c31d3000000000000000000000000000000000000000000000000000000008152600481019390935273ffffffffffffffffffffffffffffffffffffffff91821660248401521660448201526064016102f3565b5050506121d58786612cc1565b73ffffffffffffffffffffffffffffffffffffffff87165f908152609a602052604090206122039086612cb6565b5073ffffffffffffffffffffffffffffffffffffffff86165f908152609a602052604090206122329086612c8a565b505f858152609960205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf906122bd9033908a908a906146fd565b60405180910390a45f33888888876040516020016122df95949392919061473c565b60405160208183030381529060405290506122fa8882612d14565b611140878683612d3f565b5f818152609760205260409020805460609190612321906146b2565b80601f016020809104026020016040519081016040528092919081815260200182805461234d906146b2565b80156123985780601f1061236f57610100808354040283529160200191612398565b820191905f5260205f20905b81548152906001019060200180831161237b57829003601f168201915b50505050509050919050565b5f610a2b825490565b60335473ffffffffffffffffffffffffffffffffffffffff163314610f35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f3565b6124587f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a65f611df8565b611b1381612ef8565b5f54610100900460ff166124f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102f3565b61250385858585612fb3565b6040805160208101839052610da1917ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d910160405160208183030381529060405261314d565b5f54610100900460ff166125df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102f3565b610f356132ac565b5f54610100900460ff1661267d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102f3565b60ce80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040517f41f386d449eec03c1c3b75bbba9c18df70aa19779ff47f68eab4b6a66fb399d4905f90a28015611b1357611b137f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661271d60335473ffffffffffffffffffffffffffffffffffffffff1690565b611ed7565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e73820161277b576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d0a828261314d565b5f610a568373ffffffffffffffffffffffffffffffffffffffff8416613365565b610d0a827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f00970836133b1565b5f610a56838361344a565b5f828152609d60205260408120610a569083612c04565b805182511461282e576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81515f03612868576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610b71576128af83828151811061288857612888614563565b60200260200101518383815181106128a2576128a2614563565b6020026020010151612722565b60010161286a565b60ce5460ff166128f3576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61175f84848484613470565b8060975f858560405160200161291f929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020015f20908161294e91906147ec565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb836040516129809190613b21565b60405180910390a3505050565b5f838152609b602052604081206129a49087612c95565b90508584826129fd576040517f4aa31a8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102f3565b5050838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c8686604051612a5f929190614903565b60405180910390a4505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201525f602a82018190527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008416602c83015291829101604051602081830303815290604052905080612aea9061491d565b949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa918fa6b000000000000000000000000000000000000000000000000000000001480610a2b5750610a2b82613683565b5f80612b727f01ffc9a700000000000000000000000000000000000000000000000000000000611b16565b50905073ffffffffffffffffffffffffffffffffffffffff8116612b9857505f92915050565b610a568184613719565b612bac82826127dc565b8183909161175f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102f3565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515610a56565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561239857602002820191905f5260205f20905b815481526020019060010190808311612c6b5750505050509050919050565b5f610a568383613365565b5f610a568373ffffffffffffffffffffffffffffffffffffffff84166137e5565b5f610a5683836137e5565b5f818152609b6020526040812090612cd8826123a4565b90505f5f5b8281101561157957612cef845f6127d1565b9150612d0c8287875f60405180602001604052805f81525061298d565b600101612cdd565b610d0a827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab00836133b1565b612d69837f6bb56a1400000000000000000000000000000000000000000000000000000000613719565b15612e42576040517f6bb56a1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690636bb56a1490612de2907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d90859060040161495f565b5f604051808303815f875af1158015612dfd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261175f9190810190614977565b81610b715773ffffffffffffffffffffffffffffffffffffffff83163b15612eae576040517f4349776d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016102f3565b6040517f0317313700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016102f3565b5f612f1860335473ffffffffffffffffffffffffffffffffffffffff1690565b9050612f23826138c8565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609e60205260408120612f5090611ecb565b90505f5b815181101561175f575f828281518110612f7057612f70614563565b60200260200101519050612f848185611f6e565b73ffffffffffffffffffffffffffffffffffffffff851615612faa57612faa8186611ed7565b50600101612f54565b5f54610100900460ff16613049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102f3565b6130528261393e565b6130b37feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c5f1b6040518060400160405280600481526020017fa4d9662400000000000000000000000000000000000000000000000000000000815250613258565b6130dd7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af185613258565b6131077f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db93275684613258565b604080516020810183905261175f917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb39101604051602081830303815290604052613258565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016131a6576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016131ff576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201613258576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260976020526040902061326f82826147ec565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516132a09190613b21565b60405180910390a25050565b5f54610100900460ff16613342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102f3565b610f355f61271d60335473ffffffffffffffffffffffffffffffffffffffff1690565b5f8181526001830160205260408120546133aa57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610a2b565b505f610a2b565b6133f173ffffffffffffffffffffffffffffffffffffffff84167f6bb56a1400000000000000000000000000000000000000000000000000000000613719565b15610b71576040517f6bb56a1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690636bb56a1490612de2908590859060040161495f565b5f825f01828154811061345f5761345f614563565b905f5260205f200154905092915050565b73ffffffffffffffffffffffffffffffffffffffff84166134bd576040517f24ecef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260996020526040902054839073ffffffffffffffffffffffffffffffffffffffff161561351d576040517f34c7b5110000000000000000000000000000000000000000000000000000000081526004016102f391815260200190565b505f83815260996020526040902054839073ffffffffffffffffffffffffffffffffffffffff161561357e576040517f34c7b5110000000000000000000000000000000000000000000000000000000081526004016102f391815260200190565b5060985f815461358d90614a19565b9091555073ffffffffffffffffffffffffffffffffffffffff84165f908152609a602052604090206135bf9084612c8a565b505f8381526099602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90613645903390889088906146fd565b60405180910390a45f335f86868560405160200161366795949392919061473c565b6040516020818303038152906040529050610da1858483612d3f565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f629aa694000000000000000000000000000000000000000000000000000000001480610a2b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610a2b565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017815282515f9392849283928392918391908a617530fa92503d91505f5190508280156137cf575060208210155b80156137da57505f81115b979650505050505050565b5f81815260018301602052604081205480156138bf575f613807600183614a50565b85549091505f9061381a90600190614a50565b9050818114613879575f865f01828154811061383857613838614563565b905f5260205f200154905080875f01848154811061385857613858614563565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061388a5761388a614a63565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610a2b565b5f915050610a2b565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166139d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102f3565b73ffffffffffffffffffffffffffffffffffffffff8116613a21576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b13816138c8565b60208152816020820152818360408301375f818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b5f60208284031215613a86575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a56575f5ffd5b5f5f60408385031215613ac6575f5ffd5b50508035926020909101359150565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610a566020830184613ad5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613ba757613ba7613b33565b604052919050565b5f67ffffffffffffffff821115613bc857613bc8613b33565b5060051b60200190565b5f82601f830112613be1575f5ffd5b8135613bf4613bef82613baf565b613b60565b8082825260208201915060208360051b860101925085831115613c15575f5ffd5b602085015b83811015613c32578035835260209283019201613c1a565b5095945050505050565b5f5f60408385031215613c4d575f5ffd5b823567ffffffffffffffff811115613c63575f5ffd5b613c6f85828601613bd2565b925050602083013567ffffffffffffffff811115613c8b575f5ffd5b613c9785828601613bd2565b9150509250929050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613d16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452613d01858351613ad5565b94506020938401939190910190600101613cc7565b50929695505050505050565b5f60208284031215613d32575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114613d5c575f5ffd5b919050565b5f5f60408385031215613d72575f5ffd5b613d7b83613d39565b946020939093013593505050565b5f60208284031215613d99575f5ffd5b610a5682613d39565b602080825282518282018190525f918401906040840190835b81811015613dd9578351835260209384019390920191600101613dbb565b509095945050505050565b5f5f60408385031215613df5575f5ffd5b82359150613e0560208401613d39565b90509250929050565b602080825282518282018190525f918401906040840190835b81811015613dd957835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101613e27565b80358015158114613d5c575f5ffd5b5f67ffffffffffffffff821115613e8357613e83613b33565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112613ebe575f5ffd5b8135613ecc613bef82613e6a565b818152846020838601011115613ee0575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a08688031215613f10575f5ffd5b613f1986613d39565b9450613f2760208701613d39565b935060408601359250613f3c60608701613e5b565b9150608086013567ffffffffffffffff811115613f57575f5ffd5b613f6388828901613eaf565b9150509295509295909350565b5f5f60208385031215613f81575f5ffd5b823567ffffffffffffffff811115613f97575f5ffd5b8301601f81018513613fa7575f5ffd5b803567ffffffffffffffff811115613fbd575f5ffd5b8560208260051b8401011115613fd1575f5ffd5b6020919091019590945092505050565b5f5f83601f840112613ff1575f5ffd5b50813567ffffffffffffffff811115614008575f5ffd5b60208301915083602082850101111561401f575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a03121561403c575f5ffd5b873567ffffffffffffffff811115614052575f5ffd5b61405e8a828b01613fe1565b909850965050602088013567ffffffffffffffff81111561407d575f5ffd5b6140898a828b01613fe1565b909650945061409c905060408901613d39565b969995985093969295946060840135945060809093013592915050565b5f82601f8301126140c8575f5ffd5b81356140d6613bef82613baf565b8082825260208201915060208360051b8601019250858311156140f7575f5ffd5b602085015b83811015613c325761410d81613d39565b8352602092830192016140fc565b5f82601f83011261412a575f5ffd5b8135614138613bef82613baf565b8082825260208201915060208360051b860101925085831115614159575f5ffd5b602085015b83811015613c325761416f81613e5b565b83526020928301920161415e565b5f82601f83011261418c575f5ffd5b813561419a613bef82613baf565b8082825260208201915060208360051b8601019250858311156141bb575f5ffd5b602085015b83811015613c3257803567ffffffffffffffff8111156141de575f5ffd5b6141ed886020838a0101613eaf565b845250602092830192016141c0565b5f5f5f5f5f60a08688031215614210575f5ffd5b853567ffffffffffffffff811115614226575f5ffd5b614232888289016140b9565b955050602086013567ffffffffffffffff81111561424e575f5ffd5b61425a888289016140b9565b945050604086013567ffffffffffffffff811115614276575f5ffd5b61428288828901613bd2565b935050606086013567ffffffffffffffff81111561429e575f5ffd5b6142aa8882890161411b565b925050608086013567ffffffffffffffff8111156142c6575f5ffd5b613f638882890161417d565b5f5f604083850312156142e3575f5ffd5b82359150602083013567ffffffffffffffff811115614300575f5ffd5b613c9785828601613eaf565b5f5f5f6060848603121561431e575f5ffd5b61432784613d39565b925060208401359150604084013567ffffffffffffffff811115614349575f5ffd5b61435586828701613eaf565b9150509250925092565b5f5f60408385031215614370575f5ffd5b823567ffffffffffffffff811115614386575f5ffd5b61439285828601613bd2565b925050602083013567ffffffffffffffff8111156143ae575f5ffd5b613c978582860161417d565b5f5f5f5f608085870312156143cd575f5ffd5b6143d685613d39565b9350602085013592506143eb60408601613e5b565b9150606085013567ffffffffffffffff811115614406575f5ffd5b61441287828801613eaf565b91505092959194509250565b5f5f5f60608486031215614430575f5ffd5b833567ffffffffffffffff811115614446575f5ffd5b61445286828701613bd2565b935050602084013567ffffffffffffffff81111561446e575f5ffd5b61447a86828701613bd2565b925050604084013567ffffffffffffffff811115614496575f5ffd5b6143558682870161417d565b5f5f5f606084860312156144b4575f5ffd5b8335925060208401359150604084013567ffffffffffffffff811115614349575f5ffd5b5f602082840312156144e8575f5ffd5b813567ffffffffffffffff8111156144fe575f5ffd5b612aea84828501613bd2565b8385823760609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016919092019081526014810191909152603401919050565b5f82518060208501845e5f920191825250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126145c3575f5ffd5b83018035915067ffffffffffffffff8211156145dd575f5ffd5b60200191503681900382131561401f575f5ffd5b818382375f9101908152919050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201528215156040820152608060608201525f61463c6080830184613ad5565b9695505050505050565b805160208201517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116919060148210156146ab577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b5050919050565b600181811c908216806146c657607f821691505b602082108103611a59577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff841681528215156020820152606060408201525f6147336060830184613ad5565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015273ffffffffffffffffffffffffffffffffffffffff8416604082015282606082015260a060808201525f6137da60a0830184613ad5565b601f821115610b7157805f5260205f20601f840160051c810160208510156147cd5750805b601f840160051c820191505b81811015610da1575f81556001016147d9565b815167ffffffffffffffff81111561480657614806613b33565b61481a8161481484546146b2565b846147a8565b6020601f82116001811461486b575f83156148355750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610da1565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156148b85787850151825560209485019460019092019101614898565b50848210156148f457868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b8215158152604060208201525f612aea6040830184613ad5565b80516020808301519190811015611a59577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b828152604060208201525f612aea6040830184613ad5565b5f60208284031215614987575f5ffd5b815167ffffffffffffffff81111561499d575f5ffd5b8201601f810184136149ad575f5ffd5b80516149bb613bef82613e6a565b8181528560208385010111156149cf575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614a4957614a496149ec565b5060010190565b81810381811115610a2b57610a2b6149ec565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea264697066735822122038341c97a314c1d09ed6baf66f3b33da7b62fc4ad16b6032cf6fc1d4dd01383864736f6c634300081c0033",
1013
1374
  "linkReferences": {},
1014
- "deployedLinkReferences": {}
1015
- }
1375
+ "deployedLinkReferences": {},
1376
+ "immutableReferences": {},
1377
+ "inputSourceName": "project/contracts/presets/LSP8MintableInit.sol",
1378
+ "buildInfoId": "solc-0_8_28-51761251365f530b69e394f3aa78b9f98e3e9d6a"
1379
+ }