@keep-network/tbtc-v2 0.1.0 → 0.1.1-dev

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 (296) hide show
  1. package/README.adoc +12 -0
  2. package/artifacts/.chainId +1 -1
  3. package/artifacts/Bank.json +807 -0
  4. package/artifacts/Bridge.json +2300 -0
  5. package/artifacts/Deposit.json +117 -0
  6. package/artifacts/DepositSweep.json +77 -0
  7. package/artifacts/EcdsaDkgValidator.json +532 -0
  8. package/artifacts/EcdsaInactivity.json +156 -0
  9. package/artifacts/EcdsaSortitionPool.json +1004 -0
  10. package/artifacts/Fraud.json +164 -0
  11. package/artifacts/KeepRegistry.json +99 -0
  12. package/artifacts/KeepStake.json +286 -0
  13. package/artifacts/KeepToken.json +711 -0
  14. package/artifacts/KeepTokenStaking.json +483 -0
  15. package/artifacts/MovingFunds.json +249 -0
  16. package/artifacts/NuCypherStakingEscrow.json +256 -0
  17. package/artifacts/NuCypherToken.json +711 -0
  18. package/artifacts/RandomBeaconStub.json +141 -0
  19. package/artifacts/Redemption.json +174 -0
  20. package/artifacts/ReimbursementPool.json +509 -0
  21. package/artifacts/Relay.json +123 -0
  22. package/artifacts/T.json +1148 -0
  23. package/artifacts/TBTC.json +36 -35
  24. package/artifacts/TBTCToken.json +738 -0
  25. package/artifacts/TBTCVault.json +691 -0
  26. package/artifacts/TokenStaking.json +2288 -0
  27. package/artifacts/TokenholderGovernor.json +1795 -0
  28. package/artifacts/TokenholderTimelock.json +1058 -0
  29. package/artifacts/VendingMachine.json +34 -33
  30. package/artifacts/VendingMachineKeep.json +400 -0
  31. package/artifacts/VendingMachineNuCypher.json +400 -0
  32. package/artifacts/WalletRegistry.json +1843 -0
  33. package/artifacts/WalletRegistryGovernance.json +2754 -0
  34. package/artifacts/Wallets.json +186 -0
  35. package/artifacts/solcInputs/5e62cff1ead0900b07facca4b559e818.json +314 -0
  36. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  37. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.json +2 -2
  38. package/build/contracts/bank/Bank.sol/Bank.dbg.json +4 -0
  39. package/build/contracts/bank/Bank.sol/Bank.json +542 -0
  40. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +4 -0
  41. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.json +34 -0
  42. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +4 -0
  43. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +10 -0
  44. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +4 -0
  45. package/build/contracts/bridge/Bridge.sol/Bridge.json +2686 -0
  46. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +4 -0
  47. package/build/contracts/bridge/BridgeState.sol/BridgeState.json +226 -0
  48. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +4 -0
  49. package/build/contracts/bridge/Deposit.sol/Deposit.json +72 -0
  50. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +4 -0
  51. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.json +30 -0
  52. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +4 -0
  53. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.json +10 -0
  54. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +4 -0
  55. package/build/contracts/bridge/Fraud.sol/Fraud.json +86 -0
  56. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +4 -0
  57. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.json +10 -0
  58. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +4 -0
  59. package/build/contracts/bridge/IRelay.sol/IRelay.json +37 -0
  60. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +4 -0
  61. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.json +138 -0
  62. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +4 -0
  63. package/build/contracts/bridge/Redemption.sol/OutboundTx.json +10 -0
  64. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +4 -0
  65. package/build/contracts/bridge/Redemption.sol/Redemption.json +92 -0
  66. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  67. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.json +2 -2
  68. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +4 -0
  69. package/build/contracts/bridge/Wallets.sol/Wallets.json +112 -0
  70. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  71. package/build/contracts/token/TBTC.sol/TBTC.json +4 -4
  72. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +4 -0
  73. package/build/contracts/vault/DonationVault.sol/DonationVault.json +108 -0
  74. package/build/contracts/vault/IVault.sol/IVault.dbg.json +4 -0
  75. package/build/contracts/vault/IVault.sol/IVault.json +52 -0
  76. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +4 -0
  77. package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +449 -0
  78. package/contracts/GovernanceUtils.sol +4 -4
  79. package/contracts/bank/Bank.sol +436 -0
  80. package/contracts/bank/IReceiveBalanceApproval.sol +45 -0
  81. package/contracts/bridge/BitcoinTx.sol +326 -0
  82. package/contracts/bridge/Bridge.sol +1793 -0
  83. package/contracts/bridge/BridgeState.sol +739 -0
  84. package/contracts/bridge/Deposit.sol +269 -0
  85. package/contracts/bridge/DepositSweep.sol +574 -0
  86. package/contracts/bridge/EcdsaLib.sol +45 -0
  87. package/contracts/bridge/Fraud.sol +579 -0
  88. package/contracts/bridge/Heartbeat.sol +112 -0
  89. package/contracts/bridge/IRelay.sol +28 -0
  90. package/contracts/bridge/MovingFunds.sol +1077 -0
  91. package/contracts/bridge/Redemption.sol +1020 -0
  92. package/contracts/bridge/VendingMachine.sol +2 -2
  93. package/contracts/bridge/Wallets.sol +719 -0
  94. package/contracts/hardhat-dependency-compiler/.hardhat-dependency-compiler +1 -0
  95. package/contracts/hardhat-dependency-compiler/@keep-network/ecdsa/contracts/WalletRegistry.sol +3 -0
  96. package/contracts/hardhat-dependency-compiler/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol +3 -0
  97. package/contracts/hardhat-dependency-compiler/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol +3 -0
  98. package/contracts/token/TBTC.sol +1 -1
  99. package/contracts/vault/DonationVault.sol +125 -0
  100. package/contracts/vault/IVault.sol +44 -0
  101. package/contracts/vault/TBTCVault.sol +305 -0
  102. package/deploy/00_resolve_relay.ts +28 -0
  103. package/deploy/00_resolve_tbtc_v1_token.ts +1 -1
  104. package/deploy/01_deploy_tbtc_v2_token.ts +8 -1
  105. package/deploy/02_deploy_vending_machine.ts +7 -0
  106. package/deploy/{03_transfer_roles.ts → 03_transfer_vending_machine_roles.ts} +1 -1
  107. package/deploy/04_deploy_bank.ts +27 -0
  108. package/deploy/05_deploy_bridge.ts +80 -0
  109. package/deploy/06_deploy_tbtc_vault.ts +30 -0
  110. package/deploy/07_bank_update_bridge.ts +19 -0
  111. package/deploy/08_transfer_bank_ownership.ts +15 -0
  112. package/deploy/09_transfer_tbtc_vault_ownership.ts +15 -0
  113. package/deploy/10_transfer_bridge_governance.ts +20 -0
  114. package/deploy/11_initialize_wallet_owner.ts +18 -0
  115. package/deploy/11_transfer_proxy_admin_ownership.ts +30 -0
  116. package/deploy/12_deploy_proxy_admin_with_deputy.ts +33 -0
  117. package/export/deploy/00_resolve_relay.js +24 -0
  118. package/export/deploy/00_resolve_tbtc_v1_token.js +24 -0
  119. package/export/deploy/01_deploy_tbtc_v2_token.js +19 -0
  120. package/export/deploy/02_deploy_vending_machine.js +25 -0
  121. package/export/deploy/03_transfer_vending_machine_roles.js +19 -0
  122. package/export/deploy/04_deploy_bank.js +21 -0
  123. package/export/deploy/05_deploy_bridge.js +69 -0
  124. package/export/deploy/06_deploy_tbtc_vault.js +24 -0
  125. package/export/deploy/07_bank_update_bridge.js +13 -0
  126. package/export/deploy/08_transfer_bank_ownership.js +11 -0
  127. package/export/deploy/09_transfer_tbtc_vault_ownership.js +11 -0
  128. package/export/deploy/10_transfer_bridge_governance.js +11 -0
  129. package/export/deploy/11_initialize_wallet_owner.js +14 -0
  130. package/export/deploy/11_transfer_proxy_admin_ownership.js +23 -0
  131. package/export/deploy/12_deploy_proxy_admin_with_deputy.js +22 -0
  132. package/export/hardhat.config.js +169 -0
  133. package/export/test/bank/Bank.test.js +1012 -0
  134. package/export/test/bridge/Bridge.Deployment.test.js +76 -0
  135. package/export/test/bridge/Bridge.Deposit.test.js +1834 -0
  136. package/export/test/bridge/Bridge.Frauds.test.js +1349 -0
  137. package/export/test/bridge/Bridge.MovingFunds.test.js +2437 -0
  138. package/export/test/bridge/Bridge.Parameters.test.js +400 -0
  139. package/export/test/bridge/Bridge.Redemption.test.js +2523 -0
  140. package/export/test/bridge/Bridge.Vaults.test.js +74 -0
  141. package/export/test/bridge/Bridge.Wallets.test.js +1017 -0
  142. package/export/test/bridge/EcdsaLib.test.js +46 -0
  143. package/export/test/bridge/Heartbeat.test.js +77 -0
  144. package/export/test/bridge/VendingMachine.Upgrade.test.js +160 -0
  145. package/export/test/bridge/VendingMachine.test.js +762 -0
  146. package/export/test/data/deposit-sweep.js +655 -0
  147. package/export/test/data/ecdsa.js +18 -0
  148. package/export/test/data/fraud.js +158 -0
  149. package/export/test/data/moving-funds.js +815 -0
  150. package/export/test/data/redemption.js +1011 -0
  151. package/export/test/fixtures/bridge.js +54 -0
  152. package/export/test/fixtures/index.js +57 -0
  153. package/export/test/helpers/contract-test-helpers.js +18 -0
  154. package/export/test/integration/Slashing.test.js +279 -0
  155. package/export/test/integration/WalleCreation.test.js +66 -0
  156. package/export/test/integration/utils/ecdsa-wallet-registry.js +137 -0
  157. package/export/test/integration/utils/fixture.js +77 -0
  158. package/export/test/integration/utils/gas.js +36 -0
  159. package/export/test/integration/utils/random-beacon.js +26 -0
  160. package/export/test/integration/utils/staking.js +19 -0
  161. package/export/test/vault/DonationVault.test.js +202 -0
  162. package/export/test/vault/TBTCVault.Redemption.test.js +357 -0
  163. package/export/test/vault/TBTCVault.test.js +768 -0
  164. package/export/typechain/BTCUtils.js +2 -0
  165. package/export/typechain/Bank.js +2 -0
  166. package/export/typechain/BankStub.js +2 -0
  167. package/export/typechain/Bridge.js +2 -0
  168. package/export/typechain/BridgeState.js +2 -0
  169. package/export/typechain/BridgeStub.js +2 -0
  170. package/export/typechain/Deposit.js +2 -0
  171. package/export/typechain/DepositSweep.js +2 -0
  172. package/export/typechain/DonationVault.js +2 -0
  173. package/export/typechain/ERC165.js +2 -0
  174. package/export/typechain/ERC1967Proxy.js +2 -0
  175. package/export/typechain/ERC1967Upgrade.js +2 -0
  176. package/export/typechain/ERC20WithPermit.js +2 -0
  177. package/export/typechain/ERC721.js +2 -0
  178. package/export/typechain/EcdsaAuthorization.js +2 -0
  179. package/export/typechain/EcdsaDkg.js +2 -0
  180. package/export/typechain/EcdsaDkgValidator.js +2 -0
  181. package/export/typechain/EcdsaInactivity.js +2 -0
  182. package/export/typechain/Fraud.js +2 -0
  183. package/export/typechain/Governable.js +2 -0
  184. package/export/typechain/HeartbeatStub.js +2 -0
  185. package/export/typechain/IApplication.js +2 -0
  186. package/export/typechain/IApproveAndCall.js +2 -0
  187. package/export/typechain/IBeacon.js +2 -0
  188. package/export/typechain/IERC165.js +2 -0
  189. package/export/typechain/IERC1822Proxiable.js +2 -0
  190. package/export/typechain/IERC20.js +2 -0
  191. package/export/typechain/IERC20Metadata.js +2 -0
  192. package/export/typechain/IERC20WithPermit.js +2 -0
  193. package/export/typechain/IERC721.js +2 -0
  194. package/export/typechain/IERC721Metadata.js +2 -0
  195. package/export/typechain/IERC721Receiver.js +2 -0
  196. package/export/typechain/IRandomBeacon.js +2 -0
  197. package/export/typechain/IRandomBeaconConsumer.js +2 -0
  198. package/export/typechain/IReceiveApproval.js +2 -0
  199. package/export/typechain/IReceiveBalanceApproval.js +2 -0
  200. package/export/typechain/IRelay.js +2 -0
  201. package/export/typechain/IStaking.js +2 -0
  202. package/export/typechain/IVault.js +2 -0
  203. package/export/typechain/IWalletOwner.js +2 -0
  204. package/export/typechain/IWalletRegistry.js +2 -0
  205. package/export/typechain/Initializable.js +2 -0
  206. package/export/typechain/MisfundRecovery.js +2 -0
  207. package/export/typechain/MovingFunds.js +2 -0
  208. package/export/typechain/Ownable.js +2 -0
  209. package/export/typechain/Proxy.js +2 -0
  210. package/export/typechain/ProxyAdmin.js +2 -0
  211. package/export/typechain/ReceiveApprovalStub.js +2 -0
  212. package/export/typechain/Redemption.js +2 -0
  213. package/export/typechain/Reimbursable.js +2 -0
  214. package/export/typechain/ReimbursementPool.js +2 -0
  215. package/export/typechain/Rewards.js +2 -0
  216. package/export/typechain/SortitionPool.js +2 -0
  217. package/export/typechain/SortitionTree.js +2 -0
  218. package/export/typechain/TBTC.js +2 -0
  219. package/export/typechain/TBTCVault.js +2 -0
  220. package/export/typechain/TestERC20.js +2 -0
  221. package/export/typechain/TestERC721.js +2 -0
  222. package/export/typechain/TestEcdsaLib.js +2 -0
  223. package/export/typechain/TestRelay.js +2 -0
  224. package/export/typechain/TransparentUpgradeableProxy.js +2 -0
  225. package/export/typechain/VendingMachine.js +2 -0
  226. package/export/typechain/WalletRegistry.js +2 -0
  227. package/export/typechain/Wallets.js +2 -0
  228. package/export/typechain/common.js +2 -0
  229. package/export/typechain/factories/BTCUtils__factory.js +94 -0
  230. package/export/typechain/factories/BankStub__factory.js +586 -0
  231. package/export/typechain/factories/Bank__factory.js +573 -0
  232. package/export/typechain/factories/BridgeState__factory.js +257 -0
  233. package/export/typechain/factories/BridgeStub__factory.js +2912 -0
  234. package/export/typechain/factories/Bridge__factory.js +2526 -0
  235. package/export/typechain/factories/DepositSweep__factory.js +61 -0
  236. package/export/typechain/factories/Deposit__factory.js +103 -0
  237. package/export/typechain/factories/DonationVault__factory.js +139 -0
  238. package/export/typechain/factories/ERC165__factory.js +38 -0
  239. package/export/typechain/factories/ERC1967Proxy__factory.js +111 -0
  240. package/export/typechain/factories/ERC1967Upgrade__factory.js +64 -0
  241. package/export/typechain/factories/ERC20WithPermit__factory.js +524 -0
  242. package/export/typechain/factories/ERC721__factory.js +388 -0
  243. package/export/typechain/factories/EcdsaAuthorization__factory.js +211 -0
  244. package/export/typechain/factories/EcdsaDkgValidator__factory.js +441 -0
  245. package/export/typechain/factories/EcdsaDkg__factory.js +192 -0
  246. package/export/typechain/factories/EcdsaInactivity__factory.js +134 -0
  247. package/export/typechain/factories/Fraud__factory.js +117 -0
  248. package/export/typechain/factories/Governable__factory.js +64 -0
  249. package/export/typechain/factories/HeartbeatStub__factory.js +61 -0
  250. package/export/typechain/factories/IApplication__factory.js +152 -0
  251. package/export/typechain/factories/IApproveAndCall__factory.js +48 -0
  252. package/export/typechain/factories/IBeacon__factory.js +32 -0
  253. package/export/typechain/factories/IERC165__factory.js +38 -0
  254. package/export/typechain/factories/IERC1822Proxiable__factory.js +32 -0
  255. package/export/typechain/factories/IERC20Metadata__factory.js +241 -0
  256. package/export/typechain/factories/IERC20WithPermit__factory.js +389 -0
  257. package/export/typechain/factories/IERC20__factory.js +202 -0
  258. package/export/typechain/factories/IERC721Metadata__factory.js +349 -0
  259. package/export/typechain/factories/IERC721Receiver__factory.js +53 -0
  260. package/export/typechain/factories/IERC721__factory.js +304 -0
  261. package/export/typechain/factories/IRandomBeaconConsumer__factory.js +37 -0
  262. package/export/typechain/factories/IRandomBeacon__factory.js +32 -0
  263. package/export/typechain/factories/IReceiveApproval__factory.js +47 -0
  264. package/export/typechain/factories/IReceiveBalanceApproval__factory.js +42 -0
  265. package/export/typechain/factories/IRelay__factory.js +45 -0
  266. package/export/typechain/factories/IStaking__factory.js +722 -0
  267. package/export/typechain/factories/IVault__factory.js +60 -0
  268. package/export/typechain/factories/IWalletOwner__factory.js +65 -0
  269. package/export/typechain/factories/IWalletRegistry__factory.js +138 -0
  270. package/export/typechain/factories/Initializable__factory.js +32 -0
  271. package/export/typechain/factories/MisfundRecovery__factory.js +145 -0
  272. package/export/typechain/factories/MovingFunds__factory.js +169 -0
  273. package/export/typechain/factories/Ownable__factory.js +71 -0
  274. package/export/typechain/factories/ProxyAdmin__factory.js +191 -0
  275. package/export/typechain/factories/Proxy__factory.js +27 -0
  276. package/export/typechain/factories/ReceiveApprovalStub__factory.js +127 -0
  277. package/export/typechain/factories/Redemption__factory.js +123 -0
  278. package/export/typechain/factories/Reimbursable__factory.js +58 -0
  279. package/export/typechain/factories/ReimbursementPool__factory.js +350 -0
  280. package/export/typechain/factories/Rewards__factory.js +117 -0
  281. package/export/typechain/factories/SortitionPool__factory.js +610 -0
  282. package/export/typechain/factories/SortitionTree__factory.js +149 -0
  283. package/export/typechain/factories/TBTCVault__factory.js +480 -0
  284. package/export/typechain/factories/TBTC__factory.js +564 -0
  285. package/export/typechain/factories/TestERC20__factory.js +539 -0
  286. package/export/typechain/factories/TestERC721__factory.js +421 -0
  287. package/export/typechain/factories/TestEcdsaLib__factory.js +66 -0
  288. package/export/typechain/factories/TestRelay__factory.js +94 -0
  289. package/export/typechain/factories/TransparentUpgradeableProxy__factory.js +186 -0
  290. package/export/typechain/factories/VendingMachine__factory.js +549 -0
  291. package/export/typechain/factories/WalletRegistry__factory.js +1919 -0
  292. package/export/typechain/factories/Wallets__factory.js +143 -0
  293. package/export/typechain/index.js +132 -0
  294. package/export.json +15932 -503
  295. package/package.json +47 -26
  296. package/artifacts/solcInputs/7cc3eda3cb3ff2522d18b5e7b31ea228.json +0 -104
@@ -0,0 +1,92 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "Redemption",
4
+ "sourceName": "contracts/bridge/Redemption.sol",
5
+ "abi": [
6
+ {
7
+ "anonymous": false,
8
+ "inputs": [
9
+ {
10
+ "indexed": true,
11
+ "internalType": "bytes20",
12
+ "name": "walletPubKeyHash",
13
+ "type": "bytes20"
14
+ },
15
+ {
16
+ "indexed": false,
17
+ "internalType": "bytes",
18
+ "name": "redeemerOutputScript",
19
+ "type": "bytes"
20
+ },
21
+ {
22
+ "indexed": true,
23
+ "internalType": "address",
24
+ "name": "redeemer",
25
+ "type": "address"
26
+ },
27
+ {
28
+ "indexed": false,
29
+ "internalType": "uint64",
30
+ "name": "requestedAmount",
31
+ "type": "uint64"
32
+ },
33
+ {
34
+ "indexed": false,
35
+ "internalType": "uint64",
36
+ "name": "treasuryFee",
37
+ "type": "uint64"
38
+ },
39
+ {
40
+ "indexed": false,
41
+ "internalType": "uint64",
42
+ "name": "txMaxFee",
43
+ "type": "uint64"
44
+ }
45
+ ],
46
+ "name": "RedemptionRequested",
47
+ "type": "event"
48
+ },
49
+ {
50
+ "anonymous": false,
51
+ "inputs": [
52
+ {
53
+ "indexed": true,
54
+ "internalType": "bytes20",
55
+ "name": "walletPubKeyHash",
56
+ "type": "bytes20"
57
+ },
58
+ {
59
+ "indexed": false,
60
+ "internalType": "bytes",
61
+ "name": "redeemerOutputScript",
62
+ "type": "bytes"
63
+ }
64
+ ],
65
+ "name": "RedemptionTimedOut",
66
+ "type": "event"
67
+ },
68
+ {
69
+ "anonymous": false,
70
+ "inputs": [
71
+ {
72
+ "indexed": true,
73
+ "internalType": "bytes20",
74
+ "name": "walletPubKeyHash",
75
+ "type": "bytes20"
76
+ },
77
+ {
78
+ "indexed": false,
79
+ "internalType": "bytes32",
80
+ "name": "redemptionTxHash",
81
+ "type": "bytes32"
82
+ }
83
+ ],
84
+ "name": "RedemptionsCompleted",
85
+ "type": "event"
86
+ }
87
+ ],
88
+ "bytecode": "0x613eb761003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c8063a164de6e1461005b578063a76558b31461007d578063d25398081461009d578063f5ada442146100bd575b600080fd5b81801561006757600080fd5b5061007b6100763660046134aa565b6100dd565b005b81801561008957600080fd5b5061007b610098366004613582565b6103af565b8180156100a957600080fd5b5061007b6100b836600461366b565b610787565b8180156100c957600080fd5b5061007b6100d83660046136db565b6107eb565b60006100ea868686610848565b905060006100f9878486610b38565b90506101488761010c602089018961376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610d23915050565b60006101978861015b60408a018a61376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610e4c915050565b60608101519091506001600160401b0316156102175782816040015182606001516040516020016101f59392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f198184030181529190528051602090910120600183015561021f565b600060018301555b805160028301805460009061023e9084906001600160401b03166137ca565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550836bffffffffffffffffffffffff19167fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe846040516102a391815260200190565b60405180910390a2875481516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201526001600160a01b039091169063392aee4390602401600060405180830381600087803b15801561031457600080fd5b505af1158015610328573d6000803e3d6000fd5b505089546004808c015460208601516040516356a6d9ef60e01b81526001600160a01b03928316938101939093526001600160401b0316602483015290911692506356a6d9ef9150604401600060405180830381600087803b15801561038d57600080fd5b505af11580156103a1573d6000803e3d6000fd5b505050505050505050505050565b60008583836040516020016103c6939291906137f2565b60408051808303601f190181528282528051602091820120600081815260128c01835283902060a08501845280546001600160a01b0381168652600160a01b90046001600160401b039081169386019390935260010154808316938501939093526801000000000000000083049091166060840152600160801b90910463ffffffff16608083018190529092506104ae5760405162461bcd60e51b815260206004820152602160248201527f526564656d7074696f6e207265717565737420646f6573206e6f7420657869736044820152601d60fa1b60648201526084015b60405180910390fd5b4288600f0154826080015163ffffffff166104c99190613816565b1061053b5760405162461bcd60e51b8152602060048201526024808201527f526564656d7074696f6e207265717565737420686173206e6f742074696d656460448201527f206f75740000000000000000000000000000000000000000000000000000000060648201526084016104a5565b6001600160601b031987166000908152601d89016020908152604091829020918301519083015161056c91906137ca565b6002820180546000906105899084906001600160401b03166137ca565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506105c48888888c610f83909392919063ffffffff16565b600083815260138a016020908152604080832085518154878501516001600160a01b039092166001600160e01b031991821617600160a01b6001600160401b0393841602178355878401516001938401805460608b015160808c01519386167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000009190951602939093177fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff16600160801b63ffffffff909216919091021790915560128e0190935292819020805490921682559101805473ffffffffffffffffffffffffffffffffffffffff19169055516001600160601b03198916907f013dddc8debc4730cd01232fdcea9ae6013689837732356c187fe5edb9a8a8d590610700908890889061382e565b60405180910390a28854825160208401516040516356a6d9ef60e01b81526001600160a01b0392831660048201526001600160401b0390911660248201529116906356a6d9ef90604401600060405180830381600087803b15801561076457600080fd5b505af1158015610778573d6000803e3d6000fd5b50505050505050505050505050565b6000808080808061079a878901896138b7565b9550955095509550955095506107de8b8660405180606001604052808881526020018763ffffffff168152602001866001600160401b03168152508d8a868f611170565b5050505050505050505050565b61083f87876107ff36899003890189613998565b878888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611170915050565b50505050505050565b600061089461085a602085018561376e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061190d92505050565b6108e05760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f766964656400000060448201526064016104a5565b61092a6108f0604085018561376e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bd92505050565b6109765760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f7669646564000060448201526064016104a5565b6109d961098660208501856139fc565b610993602086018661376e565b6109a0604088018861376e565b6109b060808a0160608b016139fc565b6040516020016109c596959493929190613a26565b604051602081830303815290604052611a60565b9050610a74610a286109ee604085018561376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a8792505050565b610a32848061376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869493925050506020860135611a96565b610ae65760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e6420747820686173680000000060648201526084016104a5565b610b3184610af7604085018561376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ad492505050565b9392505050565b6001600160601b031982166000908152601d840160205260409020600181015480610ba55760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c657400000060448201526064016104a5565b808335610bb86040860160208701613a68565b610bc86060870160408801613a83565b604051602001610c059392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014610c685760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016104a5565b6002820154600160c01b900460ff166001816005811115610c8b57610c8b613a9e565b1480610ca857506002816005811115610ca657610ca6613a9e565b145b610d1a5760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e647320737461746500000000000000000000000000000000000000000060648201526084016104a5565b50509392505050565b600080610d2f84611e43565b9092509050823582148015610d5e575063ffffffff8116610d566040850160208601613a68565b63ffffffff16145b610dd05760405162461bcd60e51b815260206004820152603f60248201527f4f7574626f756e64207472616e73616374696f6e20696e707574206d7573742060448201527f706f696e7420746f207468652077616c6c65742773206d61696e205554584f0060648201526084016104a5565b60016019860160008535610dea6040880160208901613a68565b604051602001610e1192919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555050505050565b60408051608081018252600080825260208201819052918101829052606081018290529080610e7a85611f1e565b90925090506000610e8c836001613816565b6040517f1976a9140000000000000000000000000000000000000000000000000000000060208201526001600160601b03198716602482015261222b60f21b6038820152909150600090603a0160408051601f198184030181529082905280516020918201207f1600140000000000000000000000000000000000000000000000000000000000918301919091526001600160601b0319881660238301529150600090603701604051602081830303815290604052805190602001209050610f76898989604051806080016040528088815260200189815260200187815260200186815250611f35565b9998505050505050505050565b6001600160601b031983166000908152601d8501602052604090206002810154600160c01b900460ff166001816005811115610fc157610fc1613a9e565b1480610fde57506002816005811115610fdc57610fdc613a9e565b145b80610ffa57506005816005811115610ff857610ff8613a9e565b145b61106c5760405162461bcd60e51b815260206004820152603960248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e6473206f72205465726d696e617465642073746174650000000000000060648201526084016104a5565b600181600581111561108057611080613a9e565b148061109d5750600281600581111561109b5761109b613a9e565b145b156111445760028601546010870154601188015484546040517fd8dc404d0000000000000000000000000000000000000000000000000000000081526001600160a01b039094169363d8dc404d93611111936bffffffffffffffffffffffff9091169290913391908b908b90600401613ab4565b600060405180830381600087803b15801561112b57600080fd5b505af115801561113f573d6000803e3d6000fd5b505050505b600181600581111561115857611158613a9e565b141561116857611168868661212f565b505050505050565b6001600160601b031986166000908152601d88016020526040902060016002820154600160c01b900460ff1660058111156111ad576111ad613a9e565b146111fa5760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c6976652073746174650000000060448201526064016104a5565b6001810154806112565760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c656044820152601d60fa1b60648201526084016104a5565b808760000151886020015189604001516040516020016112a39392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146113065760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016104a5565b6000611336600060c01b86604051602001611322929190613b66565b604051602081830303815290604052612279565b905060008151116113af5760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e64617264207479706500000000000000000000000000000000000060648201526084016104a5565b8080519060200120896040516020016113d891906001600160601b031991909116815260140190565b6040516020818303038152906040528051906020012014156114625760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b4800000000000000000060648201526084016104a5565b600e8a01546001600160401b0390811690851610156114c35760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c000000000060448201526064016104a5565b600089866040516020016114d8929190613b96565b60408051808303601f190181529181528151602092830120600081815260128f01909352912060010154909150600160801b900463ffffffff16156115ab5760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a4016104a5565b600e8b01546000906801000000000000000090046001600160401b03166115d35760006115f7565b600e8c01546115f7906801000000000000000090046001600160401b031687613be1565b600e8d0154909150600160801b90046001600160401b031661161982886137ca565b6002870180546000906116369084906001600160401b0316613c07565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508560020160009054906101000a90046001600160401b03166001600160401b03168b604001516001600160401b031610156116d75760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e64730000000000000060448201526064016104a5565b6040518060a001604052808a6001600160a01b03168152602001886001600160401b03168152602001836001600160401b03168152602001826001600160401b031681526020014263ffffffff168152508d601201600085815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160010160106101000a81548163ffffffff021916908363ffffffff160217905550905050886001600160a01b03168c6bffffffffffffffffffffffff19167f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d958a8a868660405161186a9493929190613c32565b60405180910390a38c546040517f7c6db49c0000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301523060248301526001600160401b038a16604483015290911690637c6db49c90606401600060405180830381600087803b1580156118e657600080fd5b505af11580156118fa573d6000803e3d6000fd5b5050505050505050505050505050505050565b600080600061191b84611f1e565b909250905080158061192e575060001982145b1561193d575060009392505050565b600061194a836001613816565b905060005b828110156119b0578551821061196b5750600095945050505050565b60006119778784612517565b9050600019811415611990575060009695505050505050565b61199a8184613816565b92505080806119a890613c81565b91505061194f565b5093519093149392505050565b60008060006119cb84611f1e565b90925090508015806119de575060001982145b156119ed575060009392505050565b60006119fa836001613816565b905060005b828110156119b05785518210611a1b5750600095945050505050565b6000611a27878461256b565b9050600019811415611a40575060009695505050505050565b611a4a8184613816565b9250508080611a5890613c81565b9150506119ff565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b60448101516000905b92915050565b60008385148015611aa5575081155b8015611ab057508251155b15611abd57506001611acc565b611ac9858486856125d1565b90505b949350505050565b6001820154604080517f113764be00000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691600091839163113764be91600480820192602092909190829003018186803b158015611b3957600080fd5b505afa158015611b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b719190613c9c565b90506000826001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b158015611bae57600080fd5b505afa158015611bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be69190613c9c565b9050600080611bfc611bf787612679565b61270e565b905083811415611c0e57839150611c8c565b82811415611c1e57829150611c8c565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c747900000000000000000000000000000000000000000000000000000060648201526084016104a5565b6000611c9787612736565b9050600019811415611d115760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e000000000000000000000000000000000000000000000000000000000060648201526084016104a5565b600119811415611d635760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e000000000000000000000060448201526064016104a5565b600219811415611db55760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e20612068656164657200000060448201526064016104a5565b6003880154611dc49084613cb5565b811015611e395760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e0000000000000000000000000060648201526084016104a5565b5050505050505050565b6000806000611e5184611f1e565b91505080600114611eca5760405162461bcd60e51b815260206004820152602d60248201527f4f7574626f756e64207472616e73616374696f6e206d7573742068617665206160448201527f2073696e676c6520696e7075740000000000000000000000000000000000000060648201526084016104a5565b6000611ed6858261293d565b9050611ee181612b23565b9350611f15611eef82612b30565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b92505050915091565b600080611f2c836000612b3d565b91509150915091565b604080516080810182526000808252602082018190529181018290526060810182905290805b83602001518110156120b2578351600090611f7790889061256b565b8551909150600090611f8b90899084612cb9565b90506000611f9882612d83565b90506000611fb66008808551611fae9190613cd4565b859190612cb9565b905086606001516001600160401b03166000148015611ff157506040880151815160208301201480611ff15750606088015181516020830120145b801561200657506000826001600160401b0316115b1561202b5763ffffffff851660408801526001600160401b0382166060880152612083565b60008061203a8d8c8587612df9565b9150915081896000018181516120509190613c07565b6001600160401b0316905250602089018051829190612070908390613c07565b6001600160401b03169052506001975050505b83886000018181516120959190613816565b9052508493506120aa9250839150613c819050565b915050611f5b565b50806121265760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e000000000060648201526084016104a5565b50949350505050565b6001600160601b031981166000908152601d83016020526040902060018101546121625761215d838361317d565b6121f9565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffff00ffffffffffffffff00000000ffffffffffffffffffffffff90911617780200000000000000000000000000000000000000000000000017905580546040516001600160601b0319841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601b83015460601b6001600160601b0319908116908316141561223657601b8301805473ffffffffffffffffffffffffffffffffffffffff191690555b601b83018054600160a01b900463ffffffff1690601461225583613ceb565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b606060008260088151811061229057612290613d0b565b0160200151835160f89190911c91506122aa826009613d21565b60ff16146122c8575050604080516020810190915260008152919050565b826009815181106122db576122db613d0b565b016020015160f81c6123795760028160ff161015612309575050604080516020810190915260008152919050565b600083600a8151811061231e5761231e613d0b565b016020015160f81c9050612333600283613d46565b60ff1681141580612351575080602014158015612351575080601414155b1561236d57505060408051602081019091526000815292915050565b611acc84600b83612cb9565b600061238684600861321d565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff0000000000000000000000000000000000000000000000000000000000821614156124635783600b815181106123e5576123e5613d0b565b60209101015160f81c601414158061243a5750612410600285516124099190613cd4565b859061321d565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b1561245657505060408051602081019091526000815292915050565b611acc84600c6014612cb9565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff0000000000000000000000000000000000000000000000000000000000821614156125005783600185516124bc9190613cd4565b815181106124cc576124cc613d0b565b60209101015160f81c6087146124f357505060408051602081019091526000815292915050565b611acc84600b6014612cb9565b505050604080516020810190915260008152919050565b6000806000612526858561322c565b90925090506000198214156125415760001992505050611a90565b8061254d836025613816565b6125579190613816565b612562906004613816565b95945050505050565b6000612578826009613816565b835110156125895750600019611a90565b6000806125a08561259b866008613816565b612b3d565b90925090506000198214156125bb5760001992505050611a90565b806125c7836009613816565b6125629190613816565b6000602084516125e19190613d69565b156125ee57506000611acc565b83516125fc57506000611acc565b818560005b865181101561266c57612615600284613d69565b6001141561263a5761263361262d8883016020015190565b8361326e565b9150612653565b6126508261264b8984016020015190565b61326e565b91505b60019290921c91612665602082613816565b9050612601565b5090931495945050505050565b60008061268783604861321d565b60e81c9050600083604b815181106126a1576126a1613d0b565b016020015160f81c905060006126d583600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff16905060006126e9600384613d46565b60ff1690506126fa81610100613e61565b6127049083613cb5565b9695505050505050565b6000611a907bffff00000000000000000000000000000000000000000000000000008361327a565b6000605082516127469190613d69565b156127545750600019919050565b506040805160808101909152605081526000908190815b84518110156129355761277f858383613286565b801561279f5761278f828461331b565b61279f5750600119949350505050565b60006127aa83612679565b90506127b583611a60565b9350806128f98560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b111561290c575060021995945050505050565b61291f6129188261270e565b8690613344565b945061292e9050605082613816565b905061276b565b505050919050565b606060008061294b85611f1e565b90925090506000198214156129c85760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016104a5565b808410612a175760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e0000000000000000000000000000000060448201526064016104a5565b600080612a25846001613816565b905060005b86811015612aae57612a3c8883612517565b9250600019831415612a905760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016104a5565b612a9a8383613816565b915080612aa681613c81565b915050612a2a565b50612ab98782612517565b9150600019821415612b0d5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016104a5565b612b18878284612cb9565b979650505050505050565b6020810151600090611a90565b6000611a9082602061321d565b6000806000612b4c85856133a2565b905060ff8116612b7e576000858581518110612b6a57612b6a613d0b565b016020015190935060f81c9150612cb29050565b83612b8a826001613d21565b60ff16612b979190613816565b85511015612bae5760001960009250925050612cb2565b60008160ff1660021415612bf357612be8612bd4612bcd876001613816565b889061321d565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612ca8565b8160ff1660041415612c1d57612c10611eef612bcd876001613816565b63ffffffff169050612ca8565b8160ff1660081415612ca857612c9c612c3a612bcd876001613816565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b606081612cd55750604080516020810190915260008152610b31565b6000612ce18385613816565b90508381118015612cf3575080855110155b612d3f5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016104a5565b604051915082604083010160405282825283850182038460208701018481015b80821015612d7857815183830152602082019150612d5f565b505050509392505050565b600080612d8f8361342e565b60c01c90506000611acc8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b60008060008585604051602001612e11929190613b96565b60408051808303601f190181529181528151602092830120600081815260128b01909352912060010154909150600160801b900463ffffffff1615612fc8576000818152601288016020526040812060018101548154919291612e87916001600160401b0390811691600160a01b9004166137ca565b60018301549091506001600160401b0380881691612eb3916801000000000000000090910416836137ca565b6001600160401b031611158015612edc5750806001600160401b0316866001600160401b031611155b612f745760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a4016104a5565b600191820154600084815260128b016020526040902080546001600160e01b0319168155909201805473ffffffffffffffffffffffffffffffffffffffff1916905593506001600160401b03169150613173565b600081815260138801602052604090206001810154600160801b900463ffffffff1661305b5760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e0000000000000000000000000000000000000000000000000000000060648201526084016104a5565b60018101548154600091613083916001600160401b0391821691600160a01b909104166137ca565b60018301549091506001600160401b03808816916130af916801000000000000000090910416836137ca565b6001600160401b0316111580156130d85750806001600160401b0316866001600160401b031611155b6131705760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a4016104a5565b50505b5094509492505050565b6001600160601b031981166000818152601d8401602052604080822060028101805463ffffffff4216600160801b027fffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffff909116177803000000000000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b6000610b318383016020015190565b60008061323a836025613816565b8451101561324f575060001990506000612cb2565b6000806132618661259b876024613816565b9097909650945050505050565b6000610b31838361343a565b6000610b318284613e6d565b815160006132948284613816565b905082811180156132a6575080855110155b6132f25760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016104a5565b826020860101602085018382015b80831015611e39578251825260209283019290910190613300565b60008061332784613468565b905082811461333a576000915050611a90565b5060019392505050565b60006133508284613816565b905082811015611a905760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e0000000000000060448201526064016104a5565b60008282815181106133b6576133b6613d0b565b60209101015160f81c60ff14156133cf57506008611a90565b8282815181106133e1576133e1613d0b565b60209101015160f81c60fe14156133fa57506004611a90565b82828151811061340c5761340c613d0b565b60209101015160f81c60fd141561342557506002611a90565b50600092915050565b6000611a90828261321d565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6024810151600090611a90565b60006060828403121561348757600080fd5b50919050565b80356001600160601b0319811681146134a557600080fd5b919050565b600080600080600060e086880312156134c257600080fd5b8535945060208601356001600160401b03808211156134e057600080fd5b908701906080828a0312156134f457600080fd5b9094506040870135908082111561350a57600080fd5b5061351788828901613475565b9350506135278760608801613475565b915061353560c0870161348d565b90509295509295909350565b60008083601f84011261355357600080fd5b5081356001600160401b0381111561356a57600080fd5b602083019150836020828501011115612cb257600080fd5b6000806000806000806080878903121561359b57600080fd5b863595506135ab6020880161348d565b945060408701356001600160401b03808211156135c757600080fd5b818901915089601f8301126135db57600080fd5b8135818111156135ea57600080fd5b8a60208260051b85010111156135ff57600080fd5b60208301965080955050606089013591508082111561361d57600080fd5b5061362a89828a01613541565b979a9699509497509295939492505050565b6001600160a01b038116811461365157600080fd5b50565b80356001600160401b03811681146134a557600080fd5b60008060008060006080868803121561368357600080fd5b8535945060208601356136958161363c565b93506136a360408701613654565b925060608601356001600160401b038111156136be57600080fd5b6136ca88828901613541565b969995985093965092949392505050565b6000806000806000806000610100888a0312156136f757600080fd5b873596506137076020890161348d565b95506137168960408a01613475565b945060a08801356137268161363c565b935060c08801356001600160401b0381111561374157600080fd5b61374d8a828b01613541565b9094509250613760905060e08901613654565b905092959891949750929550565b6000808335601e1984360301811261378557600080fd5b8301803591506001600160401b0382111561379f57600080fd5b602001915036819003821315612cb257600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03838116908316818110156137ea576137ea6137b4565b039392505050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60008219821115613829576138296137b4565b500190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b803563ffffffff811681146134a557600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156138af576138af613871565b604052919050565b60008060008060008060c087890312156138d057600080fd5b86356138db8161363c565b955060206138ea88820161348d565b9550604088013594506138ff6060890161385d565b935061390d60808901613654565b925060a08801356001600160401b038082111561392957600080fd5b818a0191508a601f83011261393d57600080fd5b81358181111561394f5761394f613871565b613961601f8201601f19168501613887565b91508082528b8482850101111561397757600080fd5b80848401858401376000848284010152508093505050509295509295509295565b6000606082840312156139aa57600080fd5b604051606081018181106001600160401b03821117156139cc576139cc613871565b604052823581526139df6020840161385d565b60208201526139f060408401613654565b60408201529392505050565b600060208284031215613a0e57600080fd5b81356001600160e01b031981168114610b3157600080fd5b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b600060208284031215613a7a57600080fd5b610b318261385d565b600060208284031215613a9557600080fd5b610b3182613654565b634e487b7160e01b600052602160045260246000fd5b600060a082016bffffffffffffffffffffffff89168352602088818501526001600160a01b038816604085015286606085015260a060808501528185835260c08501905086925060005b86811015613b275763ffffffff613b148561385d565b1682529282019290820190600101613afe565b509a9950505050505050505050565b60005b83811015613b51578181015183820152602001613b39565b83811115613b60576000848401525b50505050565b6001600160c01b03198316815260008251613b88816008850160208701613b36565b919091016008019392505050565b6bffffffffffffffffffffffff198316815260008251613bbd816014850160208701613b36565b919091016014019392505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680613bfb57613bfb613bcb565b92169190910492915050565b60006001600160401b03808316818516808303821115613c2957613c296137b4565b01949350505050565b6080815260008551806080840152613c518160a0850160208a01613b36565b6001600160401b03958616602084015293851660408301525092166060830152601f01601f19160160a001919050565b6000600019821415613c9557613c956137b4565b5060010190565b600060208284031215613cae57600080fd5b5051919050565b6000816000190483118215151615613ccf57613ccf6137b4565b500290565b600082821015613ce657613ce66137b4565b500390565b600063ffffffff821680613d0157613d016137b4565b6000190192915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff84168060ff03821115613d3e57613d3e6137b4565b019392505050565b600060ff821660ff841680821015613d6057613d606137b4565b90039392505050565b600082613d7857613d78613bcb565b500690565b600181815b80851115613db8578160001904821115613d9e57613d9e6137b4565b80851615613dab57918102915b93841c9390800290613d82565b509250929050565b600082613dcf57506001611a90565b81613ddc57506000611a90565b8160018114613df25760028114613dfc57613e18565b6001915050611a90565b60ff841115613e0d57613e0d6137b4565b50506001821b611a90565b5060208310610133831016604e8410600b8410161715613e3b575081810a611a90565b613e458383613d7d565b8060001904821115613e5957613e596137b4565b029392505050565b6000610b318383613dc0565b600082613e7c57613e7c613bcb565b50049056fea26469706673582212202668442d1c5d34d45b9751658e8b0473b64d2a0e6671aac5ea588032c935ebf164736f6c63430008090033",
89
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c8063a164de6e1461005b578063a76558b31461007d578063d25398081461009d578063f5ada442146100bd575b600080fd5b81801561006757600080fd5b5061007b6100763660046134aa565b6100dd565b005b81801561008957600080fd5b5061007b610098366004613582565b6103af565b8180156100a957600080fd5b5061007b6100b836600461366b565b610787565b8180156100c957600080fd5b5061007b6100d83660046136db565b6107eb565b60006100ea868686610848565b905060006100f9878486610b38565b90506101488761010c602089018961376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610d23915050565b60006101978861015b60408a018a61376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610e4c915050565b60608101519091506001600160401b0316156102175782816040015182606001516040516020016101f59392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f198184030181529190528051602090910120600183015561021f565b600060018301555b805160028301805460009061023e9084906001600160401b03166137ca565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550836bffffffffffffffffffffffff19167fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe846040516102a391815260200190565b60405180910390a2875481516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201526001600160a01b039091169063392aee4390602401600060405180830381600087803b15801561031457600080fd5b505af1158015610328573d6000803e3d6000fd5b505089546004808c015460208601516040516356a6d9ef60e01b81526001600160a01b03928316938101939093526001600160401b0316602483015290911692506356a6d9ef9150604401600060405180830381600087803b15801561038d57600080fd5b505af11580156103a1573d6000803e3d6000fd5b505050505050505050505050565b60008583836040516020016103c6939291906137f2565b60408051808303601f190181528282528051602091820120600081815260128c01835283902060a08501845280546001600160a01b0381168652600160a01b90046001600160401b039081169386019390935260010154808316938501939093526801000000000000000083049091166060840152600160801b90910463ffffffff16608083018190529092506104ae5760405162461bcd60e51b815260206004820152602160248201527f526564656d7074696f6e207265717565737420646f6573206e6f7420657869736044820152601d60fa1b60648201526084015b60405180910390fd5b4288600f0154826080015163ffffffff166104c99190613816565b1061053b5760405162461bcd60e51b8152602060048201526024808201527f526564656d7074696f6e207265717565737420686173206e6f742074696d656460448201527f206f75740000000000000000000000000000000000000000000000000000000060648201526084016104a5565b6001600160601b031987166000908152601d89016020908152604091829020918301519083015161056c91906137ca565b6002820180546000906105899084906001600160401b03166137ca565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506105c48888888c610f83909392919063ffffffff16565b600083815260138a016020908152604080832085518154878501516001600160a01b039092166001600160e01b031991821617600160a01b6001600160401b0393841602178355878401516001938401805460608b015160808c01519386167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000009190951602939093177fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff16600160801b63ffffffff909216919091021790915560128e0190935292819020805490921682559101805473ffffffffffffffffffffffffffffffffffffffff19169055516001600160601b03198916907f013dddc8debc4730cd01232fdcea9ae6013689837732356c187fe5edb9a8a8d590610700908890889061382e565b60405180910390a28854825160208401516040516356a6d9ef60e01b81526001600160a01b0392831660048201526001600160401b0390911660248201529116906356a6d9ef90604401600060405180830381600087803b15801561076457600080fd5b505af1158015610778573d6000803e3d6000fd5b50505050505050505050505050565b6000808080808061079a878901896138b7565b9550955095509550955095506107de8b8660405180606001604052808881526020018763ffffffff168152602001866001600160401b03168152508d8a868f611170565b5050505050505050505050565b61083f87876107ff36899003890189613998565b878888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611170915050565b50505050505050565b600061089461085a602085018561376e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061190d92505050565b6108e05760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f766964656400000060448201526064016104a5565b61092a6108f0604085018561376e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bd92505050565b6109765760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f7669646564000060448201526064016104a5565b6109d961098660208501856139fc565b610993602086018661376e565b6109a0604088018861376e565b6109b060808a0160608b016139fc565b6040516020016109c596959493929190613a26565b604051602081830303815290604052611a60565b9050610a74610a286109ee604085018561376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a8792505050565b610a32848061376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869493925050506020860135611a96565b610ae65760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e6420747820686173680000000060648201526084016104a5565b610b3184610af7604085018561376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ad492505050565b9392505050565b6001600160601b031982166000908152601d840160205260409020600181015480610ba55760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c657400000060448201526064016104a5565b808335610bb86040860160208701613a68565b610bc86060870160408801613a83565b604051602001610c059392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014610c685760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016104a5565b6002820154600160c01b900460ff166001816005811115610c8b57610c8b613a9e565b1480610ca857506002816005811115610ca657610ca6613a9e565b145b610d1a5760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e647320737461746500000000000000000000000000000000000000000060648201526084016104a5565b50509392505050565b600080610d2f84611e43565b9092509050823582148015610d5e575063ffffffff8116610d566040850160208601613a68565b63ffffffff16145b610dd05760405162461bcd60e51b815260206004820152603f60248201527f4f7574626f756e64207472616e73616374696f6e20696e707574206d7573742060448201527f706f696e7420746f207468652077616c6c65742773206d61696e205554584f0060648201526084016104a5565b60016019860160008535610dea6040880160208901613a68565b604051602001610e1192919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555050505050565b60408051608081018252600080825260208201819052918101829052606081018290529080610e7a85611f1e565b90925090506000610e8c836001613816565b6040517f1976a9140000000000000000000000000000000000000000000000000000000060208201526001600160601b03198716602482015261222b60f21b6038820152909150600090603a0160408051601f198184030181529082905280516020918201207f1600140000000000000000000000000000000000000000000000000000000000918301919091526001600160601b0319881660238301529150600090603701604051602081830303815290604052805190602001209050610f76898989604051806080016040528088815260200189815260200187815260200186815250611f35565b9998505050505050505050565b6001600160601b031983166000908152601d8501602052604090206002810154600160c01b900460ff166001816005811115610fc157610fc1613a9e565b1480610fde57506002816005811115610fdc57610fdc613a9e565b145b80610ffa57506005816005811115610ff857610ff8613a9e565b145b61106c5760405162461bcd60e51b815260206004820152603960248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e6473206f72205465726d696e617465642073746174650000000000000060648201526084016104a5565b600181600581111561108057611080613a9e565b148061109d5750600281600581111561109b5761109b613a9e565b145b156111445760028601546010870154601188015484546040517fd8dc404d0000000000000000000000000000000000000000000000000000000081526001600160a01b039094169363d8dc404d93611111936bffffffffffffffffffffffff9091169290913391908b908b90600401613ab4565b600060405180830381600087803b15801561112b57600080fd5b505af115801561113f573d6000803e3d6000fd5b505050505b600181600581111561115857611158613a9e565b141561116857611168868661212f565b505050505050565b6001600160601b031986166000908152601d88016020526040902060016002820154600160c01b900460ff1660058111156111ad576111ad613a9e565b146111fa5760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c6976652073746174650000000060448201526064016104a5565b6001810154806112565760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c656044820152601d60fa1b60648201526084016104a5565b808760000151886020015189604001516040516020016112a39392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146113065760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016104a5565b6000611336600060c01b86604051602001611322929190613b66565b604051602081830303815290604052612279565b905060008151116113af5760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e64617264207479706500000000000000000000000000000000000060648201526084016104a5565b8080519060200120896040516020016113d891906001600160601b031991909116815260140190565b6040516020818303038152906040528051906020012014156114625760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b4800000000000000000060648201526084016104a5565b600e8a01546001600160401b0390811690851610156114c35760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c000000000060448201526064016104a5565b600089866040516020016114d8929190613b96565b60408051808303601f190181529181528151602092830120600081815260128f01909352912060010154909150600160801b900463ffffffff16156115ab5760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a4016104a5565b600e8b01546000906801000000000000000090046001600160401b03166115d35760006115f7565b600e8c01546115f7906801000000000000000090046001600160401b031687613be1565b600e8d0154909150600160801b90046001600160401b031661161982886137ca565b6002870180546000906116369084906001600160401b0316613c07565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508560020160009054906101000a90046001600160401b03166001600160401b03168b604001516001600160401b031610156116d75760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e64730000000000000060448201526064016104a5565b6040518060a001604052808a6001600160a01b03168152602001886001600160401b03168152602001836001600160401b03168152602001826001600160401b031681526020014263ffffffff168152508d601201600085815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160010160106101000a81548163ffffffff021916908363ffffffff160217905550905050886001600160a01b03168c6bffffffffffffffffffffffff19167f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d958a8a868660405161186a9493929190613c32565b60405180910390a38c546040517f7c6db49c0000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301523060248301526001600160401b038a16604483015290911690637c6db49c90606401600060405180830381600087803b1580156118e657600080fd5b505af11580156118fa573d6000803e3d6000fd5b5050505050505050505050505050505050565b600080600061191b84611f1e565b909250905080158061192e575060001982145b1561193d575060009392505050565b600061194a836001613816565b905060005b828110156119b0578551821061196b5750600095945050505050565b60006119778784612517565b9050600019811415611990575060009695505050505050565b61199a8184613816565b92505080806119a890613c81565b91505061194f565b5093519093149392505050565b60008060006119cb84611f1e565b90925090508015806119de575060001982145b156119ed575060009392505050565b60006119fa836001613816565b905060005b828110156119b05785518210611a1b5750600095945050505050565b6000611a27878461256b565b9050600019811415611a40575060009695505050505050565b611a4a8184613816565b9250508080611a5890613c81565b9150506119ff565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b60448101516000905b92915050565b60008385148015611aa5575081155b8015611ab057508251155b15611abd57506001611acc565b611ac9858486856125d1565b90505b949350505050565b6001820154604080517f113764be00000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691600091839163113764be91600480820192602092909190829003018186803b158015611b3957600080fd5b505afa158015611b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b719190613c9c565b90506000826001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b158015611bae57600080fd5b505afa158015611bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be69190613c9c565b9050600080611bfc611bf787612679565b61270e565b905083811415611c0e57839150611c8c565b82811415611c1e57829150611c8c565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c747900000000000000000000000000000000000000000000000000000060648201526084016104a5565b6000611c9787612736565b9050600019811415611d115760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e000000000000000000000000000000000000000000000000000000000060648201526084016104a5565b600119811415611d635760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e000000000000000000000060448201526064016104a5565b600219811415611db55760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e20612068656164657200000060448201526064016104a5565b6003880154611dc49084613cb5565b811015611e395760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e0000000000000000000000000060648201526084016104a5565b5050505050505050565b6000806000611e5184611f1e565b91505080600114611eca5760405162461bcd60e51b815260206004820152602d60248201527f4f7574626f756e64207472616e73616374696f6e206d7573742068617665206160448201527f2073696e676c6520696e7075740000000000000000000000000000000000000060648201526084016104a5565b6000611ed6858261293d565b9050611ee181612b23565b9350611f15611eef82612b30565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b92505050915091565b600080611f2c836000612b3d565b91509150915091565b604080516080810182526000808252602082018190529181018290526060810182905290805b83602001518110156120b2578351600090611f7790889061256b565b8551909150600090611f8b90899084612cb9565b90506000611f9882612d83565b90506000611fb66008808551611fae9190613cd4565b859190612cb9565b905086606001516001600160401b03166000148015611ff157506040880151815160208301201480611ff15750606088015181516020830120145b801561200657506000826001600160401b0316115b1561202b5763ffffffff851660408801526001600160401b0382166060880152612083565b60008061203a8d8c8587612df9565b9150915081896000018181516120509190613c07565b6001600160401b0316905250602089018051829190612070908390613c07565b6001600160401b03169052506001975050505b83886000018181516120959190613816565b9052508493506120aa9250839150613c819050565b915050611f5b565b50806121265760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e000000000060648201526084016104a5565b50949350505050565b6001600160601b031981166000908152601d83016020526040902060018101546121625761215d838361317d565b6121f9565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffff00ffffffffffffffff00000000ffffffffffffffffffffffff90911617780200000000000000000000000000000000000000000000000017905580546040516001600160601b0319841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601b83015460601b6001600160601b0319908116908316141561223657601b8301805473ffffffffffffffffffffffffffffffffffffffff191690555b601b83018054600160a01b900463ffffffff1690601461225583613ceb565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b606060008260088151811061229057612290613d0b565b0160200151835160f89190911c91506122aa826009613d21565b60ff16146122c8575050604080516020810190915260008152919050565b826009815181106122db576122db613d0b565b016020015160f81c6123795760028160ff161015612309575050604080516020810190915260008152919050565b600083600a8151811061231e5761231e613d0b565b016020015160f81c9050612333600283613d46565b60ff1681141580612351575080602014158015612351575080601414155b1561236d57505060408051602081019091526000815292915050565b611acc84600b83612cb9565b600061238684600861321d565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff0000000000000000000000000000000000000000000000000000000000821614156124635783600b815181106123e5576123e5613d0b565b60209101015160f81c601414158061243a5750612410600285516124099190613cd4565b859061321d565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b1561245657505060408051602081019091526000815292915050565b611acc84600c6014612cb9565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff0000000000000000000000000000000000000000000000000000000000821614156125005783600185516124bc9190613cd4565b815181106124cc576124cc613d0b565b60209101015160f81c6087146124f357505060408051602081019091526000815292915050565b611acc84600b6014612cb9565b505050604080516020810190915260008152919050565b6000806000612526858561322c565b90925090506000198214156125415760001992505050611a90565b8061254d836025613816565b6125579190613816565b612562906004613816565b95945050505050565b6000612578826009613816565b835110156125895750600019611a90565b6000806125a08561259b866008613816565b612b3d565b90925090506000198214156125bb5760001992505050611a90565b806125c7836009613816565b6125629190613816565b6000602084516125e19190613d69565b156125ee57506000611acc565b83516125fc57506000611acc565b818560005b865181101561266c57612615600284613d69565b6001141561263a5761263361262d8883016020015190565b8361326e565b9150612653565b6126508261264b8984016020015190565b61326e565b91505b60019290921c91612665602082613816565b9050612601565b5090931495945050505050565b60008061268783604861321d565b60e81c9050600083604b815181106126a1576126a1613d0b565b016020015160f81c905060006126d583600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff16905060006126e9600384613d46565b60ff1690506126fa81610100613e61565b6127049083613cb5565b9695505050505050565b6000611a907bffff00000000000000000000000000000000000000000000000000008361327a565b6000605082516127469190613d69565b156127545750600019919050565b506040805160808101909152605081526000908190815b84518110156129355761277f858383613286565b801561279f5761278f828461331b565b61279f5750600119949350505050565b60006127aa83612679565b90506127b583611a60565b9350806128f98560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b111561290c575060021995945050505050565b61291f6129188261270e565b8690613344565b945061292e9050605082613816565b905061276b565b505050919050565b606060008061294b85611f1e565b90925090506000198214156129c85760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016104a5565b808410612a175760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e0000000000000000000000000000000060448201526064016104a5565b600080612a25846001613816565b905060005b86811015612aae57612a3c8883612517565b9250600019831415612a905760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016104a5565b612a9a8383613816565b915080612aa681613c81565b915050612a2a565b50612ab98782612517565b9150600019821415612b0d5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016104a5565b612b18878284612cb9565b979650505050505050565b6020810151600090611a90565b6000611a9082602061321d565b6000806000612b4c85856133a2565b905060ff8116612b7e576000858581518110612b6a57612b6a613d0b565b016020015190935060f81c9150612cb29050565b83612b8a826001613d21565b60ff16612b979190613816565b85511015612bae5760001960009250925050612cb2565b60008160ff1660021415612bf357612be8612bd4612bcd876001613816565b889061321d565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612ca8565b8160ff1660041415612c1d57612c10611eef612bcd876001613816565b63ffffffff169050612ca8565b8160ff1660081415612ca857612c9c612c3a612bcd876001613816565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b606081612cd55750604080516020810190915260008152610b31565b6000612ce18385613816565b90508381118015612cf3575080855110155b612d3f5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016104a5565b604051915082604083010160405282825283850182038460208701018481015b80821015612d7857815183830152602082019150612d5f565b505050509392505050565b600080612d8f8361342e565b60c01c90506000611acc8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b60008060008585604051602001612e11929190613b96565b60408051808303601f190181529181528151602092830120600081815260128b01909352912060010154909150600160801b900463ffffffff1615612fc8576000818152601288016020526040812060018101548154919291612e87916001600160401b0390811691600160a01b9004166137ca565b60018301549091506001600160401b0380881691612eb3916801000000000000000090910416836137ca565b6001600160401b031611158015612edc5750806001600160401b0316866001600160401b031611155b612f745760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a4016104a5565b600191820154600084815260128b016020526040902080546001600160e01b0319168155909201805473ffffffffffffffffffffffffffffffffffffffff1916905593506001600160401b03169150613173565b600081815260138801602052604090206001810154600160801b900463ffffffff1661305b5760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e0000000000000000000000000000000000000000000000000000000060648201526084016104a5565b60018101548154600091613083916001600160401b0391821691600160a01b909104166137ca565b60018301549091506001600160401b03808816916130af916801000000000000000090910416836137ca565b6001600160401b0316111580156130d85750806001600160401b0316866001600160401b031611155b6131705760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a4016104a5565b50505b5094509492505050565b6001600160601b031981166000818152601d8401602052604080822060028101805463ffffffff4216600160801b027fffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffff909116177803000000000000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b6000610b318383016020015190565b60008061323a836025613816565b8451101561324f575060001990506000612cb2565b6000806132618661259b876024613816565b9097909650945050505050565b6000610b31838361343a565b6000610b318284613e6d565b815160006132948284613816565b905082811180156132a6575080855110155b6132f25760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016104a5565b826020860101602085018382015b80831015611e39578251825260209283019290910190613300565b60008061332784613468565b905082811461333a576000915050611a90565b5060019392505050565b60006133508284613816565b905082811015611a905760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e0000000000000060448201526064016104a5565b60008282815181106133b6576133b6613d0b565b60209101015160f81c60ff14156133cf57506008611a90565b8282815181106133e1576133e1613d0b565b60209101015160f81c60fe14156133fa57506004611a90565b82828151811061340c5761340c613d0b565b60209101015160f81c60fd141561342557506002611a90565b50600092915050565b6000611a90828261321d565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6024810151600090611a90565b60006060828403121561348757600080fd5b50919050565b80356001600160601b0319811681146134a557600080fd5b919050565b600080600080600060e086880312156134c257600080fd5b8535945060208601356001600160401b03808211156134e057600080fd5b908701906080828a0312156134f457600080fd5b9094506040870135908082111561350a57600080fd5b5061351788828901613475565b9350506135278760608801613475565b915061353560c0870161348d565b90509295509295909350565b60008083601f84011261355357600080fd5b5081356001600160401b0381111561356a57600080fd5b602083019150836020828501011115612cb257600080fd5b6000806000806000806080878903121561359b57600080fd5b863595506135ab6020880161348d565b945060408701356001600160401b03808211156135c757600080fd5b818901915089601f8301126135db57600080fd5b8135818111156135ea57600080fd5b8a60208260051b85010111156135ff57600080fd5b60208301965080955050606089013591508082111561361d57600080fd5b5061362a89828a01613541565b979a9699509497509295939492505050565b6001600160a01b038116811461365157600080fd5b50565b80356001600160401b03811681146134a557600080fd5b60008060008060006080868803121561368357600080fd5b8535945060208601356136958161363c565b93506136a360408701613654565b925060608601356001600160401b038111156136be57600080fd5b6136ca88828901613541565b969995985093965092949392505050565b6000806000806000806000610100888a0312156136f757600080fd5b873596506137076020890161348d565b95506137168960408a01613475565b945060a08801356137268161363c565b935060c08801356001600160401b0381111561374157600080fd5b61374d8a828b01613541565b9094509250613760905060e08901613654565b905092959891949750929550565b6000808335601e1984360301811261378557600080fd5b8301803591506001600160401b0382111561379f57600080fd5b602001915036819003821315612cb257600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03838116908316818110156137ea576137ea6137b4565b039392505050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60008219821115613829576138296137b4565b500190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b803563ffffffff811681146134a557600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156138af576138af613871565b604052919050565b60008060008060008060c087890312156138d057600080fd5b86356138db8161363c565b955060206138ea88820161348d565b9550604088013594506138ff6060890161385d565b935061390d60808901613654565b925060a08801356001600160401b038082111561392957600080fd5b818a0191508a601f83011261393d57600080fd5b81358181111561394f5761394f613871565b613961601f8201601f19168501613887565b91508082528b8482850101111561397757600080fd5b80848401858401376000848284010152508093505050509295509295509295565b6000606082840312156139aa57600080fd5b604051606081018181106001600160401b03821117156139cc576139cc613871565b604052823581526139df6020840161385d565b60208201526139f060408401613654565b60408201529392505050565b600060208284031215613a0e57600080fd5b81356001600160e01b031981168114610b3157600080fd5b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b600060208284031215613a7a57600080fd5b610b318261385d565b600060208284031215613a9557600080fd5b610b3182613654565b634e487b7160e01b600052602160045260246000fd5b600060a082016bffffffffffffffffffffffff89168352602088818501526001600160a01b038816604085015286606085015260a060808501528185835260c08501905086925060005b86811015613b275763ffffffff613b148561385d565b1682529282019290820190600101613afe565b509a9950505050505050505050565b60005b83811015613b51578181015183820152602001613b39565b83811115613b60576000848401525b50505050565b6001600160c01b03198316815260008251613b88816008850160208701613b36565b919091016008019392505050565b6bffffffffffffffffffffffff198316815260008251613bbd816014850160208701613b36565b919091016014019392505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680613bfb57613bfb613bcb565b92169190910492915050565b60006001600160401b03808316818516808303821115613c2957613c296137b4565b01949350505050565b6080815260008551806080840152613c518160a0850160208a01613b36565b6001600160401b03958616602084015293851660408301525092166060830152601f01601f19160160a001919050565b6000600019821415613c9557613c956137b4565b5060010190565b600060208284031215613cae57600080fd5b5051919050565b6000816000190483118215151615613ccf57613ccf6137b4565b500290565b600082821015613ce657613ce66137b4565b500390565b600063ffffffff821680613d0157613d016137b4565b6000190192915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff84168060ff03821115613d3e57613d3e6137b4565b019392505050565b600060ff821660ff841680821015613d6057613d606137b4565b90039392505050565b600082613d7857613d78613bcb565b500690565b600181815b80851115613db8578160001904821115613d9e57613d9e6137b4565b80851615613dab57918102915b93841c9390800290613d82565b509250929050565b600082613dcf57506001611a90565b81613ddc57506000611a90565b8160018114613df25760028114613dfc57613e18565b6001915050611a90565b60ff841115613e0d57613e0d6137b4565b50506001821b611a90565b5060208310610133831016604e8410600b8410161715613e3b575081810a611a90565b613e458383613d7d565b8060001904821115613e5957613e596137b4565b029392505050565b6000610b318383613dc0565b600082613e7c57613e7c613bcb565b50049056fea26469706673582212202668442d1c5d34d45b9751658e8b0473b64d2a0e6671aac5ea588032c935ebf164736f6c63430008090033",
90
+ "linkReferences": {},
91
+ "deployedLinkReferences": {}
92
+ }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/2c4248711b87bf88539b00b8fc80902e.json"
3
+ "buildInfo": "../../../build-info/e8a0929037d31bb5945f0f400520ecde.json"
4
4
  }
@@ -511,8 +511,8 @@
511
511
  "type": "function"
512
512
  }
513
513
  ],
514
- "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002c6038038062002c60833981810160405281019062000037919062000268565b620000576200004b6200015760201b60201c565b6200015f60201b60201c565b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508060018190555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505062000372565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002348162000324565b92915050565b6000815190506200024b816200033e565b92915050565b600081519050620002628162000358565b92915050565b6000806000606084860312156200027e57600080fd5b60006200028e8682870162000223565b9350506020620002a1868287016200023a565b9250506040620002b48682870162000251565b9150509250925092565b6000620002cb82620002fa565b9050919050565b6000620002df82620002be565b9050919050565b6000620002f382620002be565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6200032f81620002d2565b81146200033b57600080fd5b50565b6200034981620002e6565b81146200035557600080fd5b50565b62000363816200031a565b81146200036f57600080fd5b50565b60805160601c60a05160601c61286e620003f260003960008181610a0e01528181610afe01528181610b4501528181610dff01528181610eb101528181611017015261184c01526000818161071301528181610bd701528181610cd201528181610d60015281816110ea015281816111930152611805015261286e6000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063b766bd8a11610097578063ea1a4e6811610071578063ea1a4e6814610428578063f257a1a014610446578063f2fde38b14610462578063fe7294a81461047e576101a9565b8063b766bd8a146103d0578063bb81268c14610400578063c2b4aa751461040a576101a9565b8063a0712d68116100d3578063a0712d681461035c578063ad3b1b4714610378578063b0b5489514610394578063b29b95ce146103b2576101a9565b80638da5cb5b146103045780638f4ffcb11461032257806395de5a411461033e576101a9565b80632d42067d116101665780635bf32f52116101405780635bf32f52146102a65780636386d0b1146102c257806364e779b1146102de578063715018a6146102fa576101a9565b80632d42067d1461024e5780633678252f1461026a57806351b83ebc14610288576101a9565b806305e448fc146101ae5780630bb037df146101cc5780630c05ab39146101ea5780630c505b7a1461020857806320ad25dc14610226578063240b57e814610230575b600080fd5b6101b661049c565b6040516101c3919061223d565b60405180910390f35b6101d46104a2565b6040516101e1919061223d565b60405180910390f35b6101f26104b8565b6040516101ff9190611fca565b60405180910390f35b6102106104de565b60405161021d919061223d565b60405180910390f35b61022e6104e4565b005b6102386105c5565b604051610245919061223d565b60405180910390f35b61026860048036038101906102639190611be6565b6105cb565b005b610272610711565b60405161027f9190612045565b60405180910390f35b610290610735565b60405161029d919061223d565b60405180910390f35b6102c060048036038101906102bb9190611cf4565b610741565b005b6102dc60048036038101906102d79190611be6565b61081d565b005b6102f860048036038101906102f39190611cf4565b6109a3565b005b610302610c1f565b005b61030c610ca7565b6040516103199190611fca565b60405180910390f35b61033c60048036038101906103379190611c4b565b610cd0565b005b610346610dfd565b6040516103539190612060565b60405180910390f35b61037660048036038101906103719190611cf4565b610e21565b005b610392600480360381019061038d9190611c0f565b610e2e565b005b61039c610ef9565b6040516103a9919061223d565b60405180910390f35b6103ba610f00565b6040516103c7919061223d565b60405180910390f35b6103ea60048036038101906103e59190611cf4565b610f06565b6040516103f7919061223d565b60405180910390f35b610408610f30565b005b610412611224565b60405161041f919061223d565b60405180910390f35b61043061123a565b60405161043d9190611fca565b60405180910390f35b610460600480360381019061045b9190611be6565b611260565b005b61047c60048036038101906104779190611be6565b6113a6565b005b61048661149e565b6040516104939190611fca565b60405180910390f35b60065481565b60006104b360065462093a806114c4565b905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b6104ec61153f565b73ffffffffffffffffffffffffffffffffffffffff1661050a610ca7565b73ffffffffffffffffffffffffffffffffffffffff1614610560576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105579061213d565b60405180910390fd5b6003546105708162093a80611547565b7f3fd2a429fdc4324c186eb6c71dc1bf3accae43e10f21367f6d143635dd5ed33c6002546040516105a1919061223d565b60405180910390a16002546001819055506000600281905550600060038190555050565b60025481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106539061215d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c3906121bd565b60405180910390fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b670de0b6b3a764000081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c99061215d565b60405180910390fd5b7f0ddb39c814329b5da82b52fcacf65e4db6a1f64a0db4755282bee877cb97991a8242604051610803929190612258565b60405180910390a181600281905550426003819055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a59061215d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561091e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109159061217d565b60405180910390fd5b7f424e3c8894757dd6fd019d0d8065b19c7e49af137aeb89a275ed3d2435025a96824260405161094f92919061201c565b60405180910390a181600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426006819055505050565b60006109ae82610f06565b90503373ffffffffffffffffffffffffffffffffffffffff167fe8a2f49c528033a686bb566d35ac82ca6fd93449bdd9f5d5b36c2f1aa68214b383836040516109f8929190612258565b60405180910390a28082610a0c91906122b3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a659190611fca565b60206040518083038186803b158015610a7d57600080fd5b505afa158015610a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab59190611d1d565b1015610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aed9061209d565b60405180910390fd5b610b433330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115dc909392919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033846040518363ffffffff1660e01b8152600401610b9e92919061201c565b600060405180830381600087803b158015610bb857600080fd5b505af1158015610bcc573d6000803e3d6000fd5b50505050610c1b33837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116659092919063ffffffff16565b5050565b610c2761153f565b73ffffffffffffffffffffffffffffffffffffffff16610c45610ca7565b73ffffffffffffffffffffffffffffffffffffffff1614610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c929061213d565b60405180910390fd5b610ca560006116eb565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d55906121fd565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de39061221d565b60405180910390fd5b610df685856117af565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610e2b33826117af565b50565b610e3661153f565b73ffffffffffffffffffffffffffffffffffffffff16610e54610ca7565b73ffffffffffffffffffffffffffffffffffffffff1614610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea19061213d565b60405180910390fd5b610ef582827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116659092919063ffffffff16565b5050565b62093a8081565b60035481565b6000670de0b6b3a764000060015483610f1f919061233a565b610f299190612309565b9050919050565b610f3861153f565b73ffffffffffffffffffffffffffffffffffffffff16610f56610ca7565b73ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa39061213d565b60405180910390fd5b600654610fbc8162093a80611547565b7f99610bc40a14194a7a819ffeded94200b49e68ba00bc3a3ab89625c0972217ff600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161100d9190611fca565b60405180910390a17f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016110909190611fca565b600060405180830381600087803b1580156110aa57600080fd5b505af11580156110be573d6000803e3d6000fd5b505050506111d7600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111419190611fca565b60206040518083038186803b15801561115957600080fd5b505afa15801561116d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111919190611d1d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116659092919063ffffffff16565b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060068190555050565b600061123560035462093a806114c4565b905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e89061215d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611361576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611358906121bd565b60405180910390fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6113ae61153f565b73ffffffffffffffffffffffffffffffffffffffff166113cc610ca7565b73ffffffffffffffffffffffffffffffffffffffff1614611422576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114199061213d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611492576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611489906120bd565b60405180910390fd5b61149b816116eb565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808311611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff906120fd565b60405180910390fd5b600083426115169190612394565b9050828110611529576000915050611539565b80836115359190612394565b9150505b92915050565b600033905090565b6000821161158a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611581906120fd565b60405180910390fd5b8082426115979190612394565b10156115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf9061211d565b60405180910390fd5b5050565b61165f846323b872dd60e01b8585856040516024016115fd93929190611fe5565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118db565b50505050565b6116e68363a9059cbb60e01b848460405160240161168492919061201c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118db565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe826040516117f5919061223d565b60405180910390a261184a8230837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115dc909392919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b81526004016118a592919061201c565b600060405180830381600087803b1580156118bf57600080fd5b505af11580156118d3573d6000803e3d6000fd5b505050505050565b600061193d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166119a29092919063ffffffff16565b905060008151111561199d578080602001905181019061195d9190611ccb565b61199c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611993906121dd565b60405180910390fd5b5b505050565b60606119b184846000856119ba565b90509392505050565b6060824710156119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f6906120dd565b60405180910390fd5b611a0885611ace565b611a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3e9061219d565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611a709190611fb3565b60006040518083038185875af1925050503d8060008114611aad576040519150601f19603f3d011682016040523d82523d6000602084013e611ab2565b606091505b5091509150611ac2828286611ae1565b92505050949350505050565b600080823b905060008111915050919050565b60608315611af157829050611b41565b600083511115611b045782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b38919061207b565b60405180910390fd5b9392505050565b600081359050611b57816127f3565b92915050565b600081519050611b6c8161280a565b92915050565b60008083601f840112611b8457600080fd5b8235905067ffffffffffffffff811115611b9d57600080fd5b602083019150836001820283011115611bb557600080fd5b9250929050565b600081359050611bcb81612821565b92915050565b600081519050611be081612821565b92915050565b600060208284031215611bf857600080fd5b6000611c0684828501611b48565b91505092915050565b60008060408385031215611c2257600080fd5b6000611c3085828601611b48565b9250506020611c4185828601611bbc565b9150509250929050565b600080600080600060808688031215611c6357600080fd5b6000611c7188828901611b48565b9550506020611c8288828901611bbc565b9450506040611c9388828901611b48565b935050606086013567ffffffffffffffff811115611cb057600080fd5b611cbc88828901611b72565b92509250509295509295909350565b600060208284031215611cdd57600080fd5b6000611ceb84828501611b5d565b91505092915050565b600060208284031215611d0657600080fd5b6000611d1484828501611bbc565b91505092915050565b600060208284031215611d2f57600080fd5b6000611d3d84828501611bd1565b91505092915050565b611d4f816123c8565b82525050565b6000611d6082612281565b611d6a8185612297565b9350611d7a818560208601612458565b80840191505092915050565b611d8f81612410565b82525050565b611d9e81612434565b82525050565b6000611daf8261228c565b611db981856122a2565b9350611dc9818560208601612458565b611dd2816124e9565b840191505092915050565b6000611dea6024836122a2565b9150611df5826124fa565b604082019050919050565b6000611e0d6026836122a2565b9150611e1882612549565b604082019050919050565b6000611e306026836122a2565b9150611e3b82612598565b604082019050919050565b6000611e536014836122a2565b9150611e5e826125e7565b602082019050919050565b6000611e766020836122a2565b9150611e8182612610565b602082019050919050565b6000611e996020836122a2565b9150611ea482612639565b602082019050919050565b6000611ebc6018836122a2565b9150611ec782612662565b602082019050919050565b6000611edf6029836122a2565b9150611eea8261268b565b604082019050919050565b6000611f02601d836122a2565b9150611f0d826126da565b602082019050919050565b6000611f256026836122a2565b9150611f3082612703565b604082019050919050565b6000611f48602a836122a2565b9150611f5382612752565b604082019050919050565b6000611f6b6014836122a2565b9150611f76826127a1565b602082019050919050565b6000611f8e601b836122a2565b9150611f99826127ca565b602082019050919050565b611fad81612406565b82525050565b6000611fbf8284611d55565b915081905092915050565b6000602082019050611fdf6000830184611d46565b92915050565b6000606082019050611ffa6000830186611d46565b6120076020830185611d46565b6120146040830184611fa4565b949350505050565b60006040820190506120316000830185611d46565b61203e6020830184611fa4565b9392505050565b600060208201905061205a6000830184611d86565b92915050565b60006020820190506120756000830184611d95565b92915050565b600060208201905081810360008301526120958184611da4565b905092915050565b600060208201905081810360008301526120b681611ddd565b9050919050565b600060208201905081810360008301526120d681611e00565b9050919050565b600060208201905081810360008301526120f681611e23565b9050919050565b6000602082019050818103600083015261211681611e46565b9050919050565b6000602082019050818103600083015261213681611e69565b9050919050565b6000602082019050818103600083015261215681611e8c565b9050919050565b6000602082019050818103600083015261217681611eaf565b9050919050565b6000602082019050818103600083015261219681611ed2565b9050919050565b600060208201905081810360008301526121b681611ef5565b9050919050565b600060208201905081810360008301526121d681611f18565b9050919050565b600060208201905081810360008301526121f681611f3b565b9050919050565b6000602082019050818103600083015261221681611f5e565b9050919050565b6000602082019050818103600083015261223681611f81565b9050919050565b60006020820190506122526000830184611fa4565b92915050565b600060408201905061226d6000830185611fa4565b61227a6020830184611fa4565b9392505050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006122be82612406565b91506122c983612406565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156122fe576122fd61248b565b5b828201905092915050565b600061231482612406565b915061231f83612406565b92508261232f5761232e6124ba565b5b828204905092915050565b600061234582612406565b915061235083612406565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123895761238861248b565b5b828202905092915050565b600061239f82612406565b91506123aa83612406565b9250828210156123bd576123bc61248b565b5b828203905092915050565b60006123d3826123e6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061241b82612422565b9050919050565b600061242d826123e6565b9050919050565b600061243f82612446565b9050919050565b6000612451826123e6565b9050919050565b60005b8381101561247657808201518184015260208101905061245b565b83811115612485576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f416d6f756e74202b20666565206578636565647320544254432076322062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f4368616e6765206e6f7420696e69746961746564000000000000000000000000600082015250565b7f476f7665726e616e63652064656c617920686173206e6f7420656c6170736564600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f43616c6c6572206973206e6f7420617574686f72697a65640000000000000000600082015250565b7f4e65772056656e64696e674d616368696e652063616e6e6f74206265207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f4e657720696e69746961746f72206d757374206e6f74206265207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f546f6b656e206973206e6f742054425443207631000000000000000000000000600082015250565b7f4f6e6c7920544254432076312063616c6c657220616c6c6f7765640000000000600082015250565b6127fc816123c8565b811461280757600080fd5b50565b612813816123da565b811461281e57600080fd5b50565b61282a81612406565b811461283557600080fd5b5056fea264697066735822122004db01c528b9b87ac36e1eb71ee034a1378362503cb3b35617819e9003a4c09064736f6c63430008040033",
515
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063b766bd8a11610097578063ea1a4e6811610071578063ea1a4e6814610428578063f257a1a014610446578063f2fde38b14610462578063fe7294a81461047e576101a9565b8063b766bd8a146103d0578063bb81268c14610400578063c2b4aa751461040a576101a9565b8063a0712d68116100d3578063a0712d681461035c578063ad3b1b4714610378578063b0b5489514610394578063b29b95ce146103b2576101a9565b80638da5cb5b146103045780638f4ffcb11461032257806395de5a411461033e576101a9565b80632d42067d116101665780635bf32f52116101405780635bf32f52146102a65780636386d0b1146102c257806364e779b1146102de578063715018a6146102fa576101a9565b80632d42067d1461024e5780633678252f1461026a57806351b83ebc14610288576101a9565b806305e448fc146101ae5780630bb037df146101cc5780630c05ab39146101ea5780630c505b7a1461020857806320ad25dc14610226578063240b57e814610230575b600080fd5b6101b661049c565b6040516101c3919061223d565b60405180910390f35b6101d46104a2565b6040516101e1919061223d565b60405180910390f35b6101f26104b8565b6040516101ff9190611fca565b60405180910390f35b6102106104de565b60405161021d919061223d565b60405180910390f35b61022e6104e4565b005b6102386105c5565b604051610245919061223d565b60405180910390f35b61026860048036038101906102639190611be6565b6105cb565b005b610272610711565b60405161027f9190612045565b60405180910390f35b610290610735565b60405161029d919061223d565b60405180910390f35b6102c060048036038101906102bb9190611cf4565b610741565b005b6102dc60048036038101906102d79190611be6565b61081d565b005b6102f860048036038101906102f39190611cf4565b6109a3565b005b610302610c1f565b005b61030c610ca7565b6040516103199190611fca565b60405180910390f35b61033c60048036038101906103379190611c4b565b610cd0565b005b610346610dfd565b6040516103539190612060565b60405180910390f35b61037660048036038101906103719190611cf4565b610e21565b005b610392600480360381019061038d9190611c0f565b610e2e565b005b61039c610ef9565b6040516103a9919061223d565b60405180910390f35b6103ba610f00565b6040516103c7919061223d565b60405180910390f35b6103ea60048036038101906103e59190611cf4565b610f06565b6040516103f7919061223d565b60405180910390f35b610408610f30565b005b610412611224565b60405161041f919061223d565b60405180910390f35b61043061123a565b60405161043d9190611fca565b60405180910390f35b610460600480360381019061045b9190611be6565b611260565b005b61047c60048036038101906104779190611be6565b6113a6565b005b61048661149e565b6040516104939190611fca565b60405180910390f35b60065481565b60006104b360065462093a806114c4565b905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b6104ec61153f565b73ffffffffffffffffffffffffffffffffffffffff1661050a610ca7565b73ffffffffffffffffffffffffffffffffffffffff1614610560576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105579061213d565b60405180910390fd5b6003546105708162093a80611547565b7f3fd2a429fdc4324c186eb6c71dc1bf3accae43e10f21367f6d143635dd5ed33c6002546040516105a1919061223d565b60405180910390a16002546001819055506000600281905550600060038190555050565b60025481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106539061215d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c3906121bd565b60405180910390fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b670de0b6b3a764000081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c99061215d565b60405180910390fd5b7f0ddb39c814329b5da82b52fcacf65e4db6a1f64a0db4755282bee877cb97991a8242604051610803929190612258565b60405180910390a181600281905550426003819055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a59061215d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561091e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109159061217d565b60405180910390fd5b7f424e3c8894757dd6fd019d0d8065b19c7e49af137aeb89a275ed3d2435025a96824260405161094f92919061201c565b60405180910390a181600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426006819055505050565b60006109ae82610f06565b90503373ffffffffffffffffffffffffffffffffffffffff167fe8a2f49c528033a686bb566d35ac82ca6fd93449bdd9f5d5b36c2f1aa68214b383836040516109f8929190612258565b60405180910390a28082610a0c91906122b3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a659190611fca565b60206040518083038186803b158015610a7d57600080fd5b505afa158015610a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab59190611d1d565b1015610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aed9061209d565b60405180910390fd5b610b433330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115dc909392919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033846040518363ffffffff1660e01b8152600401610b9e92919061201c565b600060405180830381600087803b158015610bb857600080fd5b505af1158015610bcc573d6000803e3d6000fd5b50505050610c1b33837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116659092919063ffffffff16565b5050565b610c2761153f565b73ffffffffffffffffffffffffffffffffffffffff16610c45610ca7565b73ffffffffffffffffffffffffffffffffffffffff1614610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c929061213d565b60405180910390fd5b610ca560006116eb565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d55906121fd565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de39061221d565b60405180910390fd5b610df685856117af565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610e2b33826117af565b50565b610e3661153f565b73ffffffffffffffffffffffffffffffffffffffff16610e54610ca7565b73ffffffffffffffffffffffffffffffffffffffff1614610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea19061213d565b60405180910390fd5b610ef582827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116659092919063ffffffff16565b5050565b62093a8081565b60035481565b6000670de0b6b3a764000060015483610f1f919061233a565b610f299190612309565b9050919050565b610f3861153f565b73ffffffffffffffffffffffffffffffffffffffff16610f56610ca7565b73ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa39061213d565b60405180910390fd5b600654610fbc8162093a80611547565b7f99610bc40a14194a7a819ffeded94200b49e68ba00bc3a3ab89625c0972217ff600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161100d9190611fca565b60405180910390a17f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016110909190611fca565b600060405180830381600087803b1580156110aa57600080fd5b505af11580156110be573d6000803e3d6000fd5b505050506111d7600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111419190611fca565b60206040518083038186803b15801561115957600080fd5b505afa15801561116d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111919190611d1d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116659092919063ffffffff16565b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060068190555050565b600061123560035462093a806114c4565b905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e89061215d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611361576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611358906121bd565b60405180910390fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6113ae61153f565b73ffffffffffffffffffffffffffffffffffffffff166113cc610ca7565b73ffffffffffffffffffffffffffffffffffffffff1614611422576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114199061213d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611492576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611489906120bd565b60405180910390fd5b61149b816116eb565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808311611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff906120fd565b60405180910390fd5b600083426115169190612394565b9050828110611529576000915050611539565b80836115359190612394565b9150505b92915050565b600033905090565b6000821161158a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611581906120fd565b60405180910390fd5b8082426115979190612394565b10156115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf9061211d565b60405180910390fd5b5050565b61165f846323b872dd60e01b8585856040516024016115fd93929190611fe5565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118db565b50505050565b6116e68363a9059cbb60e01b848460405160240161168492919061201c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118db565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe826040516117f5919061223d565b60405180910390a261184a8230837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115dc909392919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b81526004016118a592919061201c565b600060405180830381600087803b1580156118bf57600080fd5b505af11580156118d3573d6000803e3d6000fd5b505050505050565b600061193d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166119a29092919063ffffffff16565b905060008151111561199d578080602001905181019061195d9190611ccb565b61199c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611993906121dd565b60405180910390fd5b5b505050565b60606119b184846000856119ba565b90509392505050565b6060824710156119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f6906120dd565b60405180910390fd5b611a0885611ace565b611a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3e9061219d565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611a709190611fb3565b60006040518083038185875af1925050503d8060008114611aad576040519150601f19603f3d011682016040523d82523d6000602084013e611ab2565b606091505b5091509150611ac2828286611ae1565b92505050949350505050565b600080823b905060008111915050919050565b60608315611af157829050611b41565b600083511115611b045782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b38919061207b565b60405180910390fd5b9392505050565b600081359050611b57816127f3565b92915050565b600081519050611b6c8161280a565b92915050565b60008083601f840112611b8457600080fd5b8235905067ffffffffffffffff811115611b9d57600080fd5b602083019150836001820283011115611bb557600080fd5b9250929050565b600081359050611bcb81612821565b92915050565b600081519050611be081612821565b92915050565b600060208284031215611bf857600080fd5b6000611c0684828501611b48565b91505092915050565b60008060408385031215611c2257600080fd5b6000611c3085828601611b48565b9250506020611c4185828601611bbc565b9150509250929050565b600080600080600060808688031215611c6357600080fd5b6000611c7188828901611b48565b9550506020611c8288828901611bbc565b9450506040611c9388828901611b48565b935050606086013567ffffffffffffffff811115611cb057600080fd5b611cbc88828901611b72565b92509250509295509295909350565b600060208284031215611cdd57600080fd5b6000611ceb84828501611b5d565b91505092915050565b600060208284031215611d0657600080fd5b6000611d1484828501611bbc565b91505092915050565b600060208284031215611d2f57600080fd5b6000611d3d84828501611bd1565b91505092915050565b611d4f816123c8565b82525050565b6000611d6082612281565b611d6a8185612297565b9350611d7a818560208601612458565b80840191505092915050565b611d8f81612410565b82525050565b611d9e81612434565b82525050565b6000611daf8261228c565b611db981856122a2565b9350611dc9818560208601612458565b611dd2816124e9565b840191505092915050565b6000611dea6024836122a2565b9150611df5826124fa565b604082019050919050565b6000611e0d6026836122a2565b9150611e1882612549565b604082019050919050565b6000611e306026836122a2565b9150611e3b82612598565b604082019050919050565b6000611e536014836122a2565b9150611e5e826125e7565b602082019050919050565b6000611e766020836122a2565b9150611e8182612610565b602082019050919050565b6000611e996020836122a2565b9150611ea482612639565b602082019050919050565b6000611ebc6018836122a2565b9150611ec782612662565b602082019050919050565b6000611edf6029836122a2565b9150611eea8261268b565b604082019050919050565b6000611f02601d836122a2565b9150611f0d826126da565b602082019050919050565b6000611f256026836122a2565b9150611f3082612703565b604082019050919050565b6000611f48602a836122a2565b9150611f5382612752565b604082019050919050565b6000611f6b6014836122a2565b9150611f76826127a1565b602082019050919050565b6000611f8e601b836122a2565b9150611f99826127ca565b602082019050919050565b611fad81612406565b82525050565b6000611fbf8284611d55565b915081905092915050565b6000602082019050611fdf6000830184611d46565b92915050565b6000606082019050611ffa6000830186611d46565b6120076020830185611d46565b6120146040830184611fa4565b949350505050565b60006040820190506120316000830185611d46565b61203e6020830184611fa4565b9392505050565b600060208201905061205a6000830184611d86565b92915050565b60006020820190506120756000830184611d95565b92915050565b600060208201905081810360008301526120958184611da4565b905092915050565b600060208201905081810360008301526120b681611ddd565b9050919050565b600060208201905081810360008301526120d681611e00565b9050919050565b600060208201905081810360008301526120f681611e23565b9050919050565b6000602082019050818103600083015261211681611e46565b9050919050565b6000602082019050818103600083015261213681611e69565b9050919050565b6000602082019050818103600083015261215681611e8c565b9050919050565b6000602082019050818103600083015261217681611eaf565b9050919050565b6000602082019050818103600083015261219681611ed2565b9050919050565b600060208201905081810360008301526121b681611ef5565b9050919050565b600060208201905081810360008301526121d681611f18565b9050919050565b600060208201905081810360008301526121f681611f3b565b9050919050565b6000602082019050818103600083015261221681611f5e565b9050919050565b6000602082019050818103600083015261223681611f81565b9050919050565b60006020820190506122526000830184611fa4565b92915050565b600060408201905061226d6000830185611fa4565b61227a6020830184611fa4565b9392505050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006122be82612406565b91506122c983612406565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156122fe576122fd61248b565b5b828201905092915050565b600061231482612406565b915061231f83612406565b92508261232f5761232e6124ba565b5b828204905092915050565b600061234582612406565b915061235083612406565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123895761238861248b565b5b828202905092915050565b600061239f82612406565b91506123aa83612406565b9250828210156123bd576123bc61248b565b5b828203905092915050565b60006123d3826123e6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061241b82612422565b9050919050565b600061242d826123e6565b9050919050565b600061243f82612446565b9050919050565b6000612451826123e6565b9050919050565b60005b8381101561247657808201518184015260208101905061245b565b83811115612485576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f416d6f756e74202b20666565206578636565647320544254432076322062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f4368616e6765206e6f7420696e69746961746564000000000000000000000000600082015250565b7f476f7665726e616e63652064656c617920686173206e6f7420656c6170736564600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f43616c6c6572206973206e6f7420617574686f72697a65640000000000000000600082015250565b7f4e65772056656e64696e674d616368696e652063616e6e6f74206265207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f4e657720696e69746961746f72206d757374206e6f74206265207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f546f6b656e206973206e6f742054425443207631000000000000000000000000600082015250565b7f4f6e6c7920544254432076312063616c6c657220616c6c6f7765640000000000600082015250565b6127fc816123c8565b811461280757600080fd5b50565b612813816123da565b811461281e57600080fd5b50565b61282a81612406565b811461283557600080fd5b5056fea264697066735822122004db01c528b9b87ac36e1eb71ee034a1378362503cb3b35617819e9003a4c09064736f6c63430008040033",
514
+ "bytecode": "0x60c06040523480156200001157600080fd5b5060405162001a0238038062001a028339810160408190526200003491620000e6565b6200003f336200007d565b6001600160a01b03928316608052911660a05260015560048054336001600160a01b031991821681179092556007805490911690911790556200012e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000e357600080fd5b50565b600080600060608486031215620000fc57600080fd5b83516200010981620000cd565b60208501519093506200011c81620000cd565b80925050604084015190509250925092565b60805160a05161185a620001a8600039600081816102dc015281816107a0015281816108a2015281816108ff01528181610b8101528181610cb601526112f40152600081816102410152818161097001528181610a0501528181610a8f01528181610d3c01528181610dc2015261128d015261185a6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80638da5cb5b116100f9578063b766bd8a11610097578063ea1a4e6811610071578063ea1a4e681461035a578063f257a1a01461036d578063f2fde38b14610380578063fe7294a81461039357600080fd5b8063b766bd8a14610337578063bb81268c1461034a578063c2b4aa751461035257600080fd5b8063a0712d68116100d3578063a0712d68146102fe578063ad3b1b4714610311578063b0b5489514610324578063b29b95ce1461032e57600080fd5b80638da5cb5b146102b35780638f4ffcb1146102c457806395de5a41146102d757600080fd5b80632d42067d116101665780635bf32f52116101405780635bf32f52146102725780636386d0b11461028557806364e779b114610298578063715018a6146102ab57600080fd5b80632d42067d146102295780633678252f1461023c57806351b83ebc1461026357600080fd5b80630c505b7a116101975780630c505b7a1461020d57806320ad25dc14610216578063240b57e81461022057600080fd5b806305e448fc146101be5780630bb037df146101da5780630c05ab39146101e2575b600080fd5b6101c760065481565b6040519081526020015b60405180910390f35b6101c76103a6565b6007546101f5906001600160a01b031681565b6040516001600160a01b0390911681526020016101d1565b6101c760015481565b61021e6103bc565b005b6101c760025481565b61021e6102373660046115ef565b610479565b6101f57f000000000000000000000000000000000000000000000000000000000000000081565b6101c7670de0b6b3a764000081565b61021e61028036600461160a565b61055c565b61021e6102933660046115ef565b6105f9565b61021e6102a636600461160a565b610738565b61021e61099d565b6000546001600160a01b03166101f5565b61021e6102d2366004611623565b610a03565b6101f57f000000000000000000000000000000000000000000000000000000000000000081565b61021e61030c36600461160a565b610b0d565b61021e61031f3660046116be565b610b1a565b6101c762093a8081565b6101c760035481565b6101c761034536600461160a565b610ba8565b61021e610bd1565b6101c7610e01565b6004546101f5906001600160a01b031681565b61021e61037b3660046115ef565b610e12565b61021e61038e3660046115ef565b610ef5565b6005546101f5906001600160a01b031681565b60006103b760065462093a80610fbd565b905090565b6000546001600160a01b0316331461041b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60035461042b8162093a8061103f565b7f3fd2a429fdc4324c186eb6c71dc1bf3accae43e10f21367f6d143635dd5ed33c60025460405161045e91815260200190565b60405180910390a15060028054600155600090819055600355565b6004546001600160a01b03163381146104d45760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420617574686f72697a656400000000000000006044820152606401610412565b6001600160a01b0382166105395760405162461bcd60e51b815260206004820152602660248201527f4e657720696e69746961746f72206d757374206e6f74206265207a65726f206160448201526564647265737360d01b6064820152608401610412565b50600480546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b03163381146105b75760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420617574686f72697a656400000000000000006044820152606401610412565b604080518381524260208201527f0ddb39c814329b5da82b52fcacf65e4db6a1f64a0db4755282bee877cb97991a910160405180910390a15060025542600355565b6007546001600160a01b03163381146106545760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420617574686f72697a656400000000000000006044820152606401610412565b6001600160a01b0382166106d05760405162461bcd60e51b815260206004820152602960248201527f4e65772056656e64696e674d616368696e652063616e6e6f74206265207a657260448201527f6f206164647265737300000000000000000000000000000000000000000000006064820152608401610412565b604080516001600160a01b03841681524260208201527f424e3c8894757dd6fd019d0d8065b19c7e49af137aeb89a275ed3d2435025a96910160405180910390a150600580546001600160a01b0319166001600160a01b039290921691909117905542600655565b600061074382610ba8565b604080518481526020810183905291925033917fe8a2f49c528033a686bb566d35ac82ca6fd93449bdd9f5d5b36c2f1aa68214b3910160405180910390a261078b81836116fe565b6040516370a0823160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156107ea57600080fd5b505afa1580156107fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108229190611716565b10156108955760405162461bcd60e51b8152602060048201526024808201527f416d6f756e74202b20666565206578636565647320544254432076322062616c60448201527f616e6365000000000000000000000000000000000000000000000000000000006064820152608401610412565b6108ca6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846110e8565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906379cc679090604401600060405180830381600087803b15801561094b57600080fd5b505af115801561095f573d6000803e3d6000fd5b506109999250506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169050338461119f565b5050565b6000546001600160a01b031633146109f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610412565b610a0160006111ed565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614610a845760405162461bcd60e51b815260206004820152601460248201527f546f6b656e206973206e6f7420544254432076310000000000000000000000006044820152606401610412565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610afc5760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c7920544254432076312063616c6c657220616c6c6f77656400000000006044820152606401610412565b610b06858561123d565b5050505050565b610b17338261123d565b50565b6000546001600160a01b03163314610b745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610412565b6109996001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016838361119f565b6000670de0b6b3a764000060015483610bc1919061172f565b610bcb919061174e565b92915050565b6000546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610412565b600654610c3b8162093a8061103f565b6005546040516001600160a01b0390911681527f99610bc40a14194a7a819ffeded94200b49e68ba00bc3a3ab89625c0972217ff9060200160405180910390a16005546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f2fde38b90602401600060405180830381600087803b158015610cfc57600080fd5b505af1158015610d10573d6000803e3d6000fd5b50506005546040516370a0823160e01b8152306004820152610de993506001600160a01b0391821692507f0000000000000000000000000000000000000000000000000000000000000000909116906370a082319060240160206040518083038186803b158015610d8057600080fd5b505afa158015610d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db89190611716565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016919061119f565b50600580546001600160a01b03191690556000600655565b60006103b760035462093a80610fbd565b6007546001600160a01b0316338114610e6d5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420617574686f72697a656400000000000000006044820152606401610412565b6001600160a01b038216610ed25760405162461bcd60e51b815260206004820152602660248201527f4e657720696e69746961746f72206d757374206e6f74206265207a65726f206160448201526564647265737360d01b6064820152608401610412565b50600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f4f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610412565b6001600160a01b038116610fb45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610412565b610b17816111ed565b600080831161100e5760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610412565b600061101a8442611770565b905082811061102d576000915050610bcb565b6110378184611770565b949350505050565b6000821161108f5760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610412565b8061109a8342611770565b10156109995760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610412565b6040516001600160a01b03808516602483015283166044820152606481018290526111999085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611354565b50505050565b6040516001600160a01b0383166024820152604481018290526111e89084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611135565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8260405161127891815260200190565b60405180910390a26112b56001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168330846110e8565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b15801561133857600080fd5b505af115801561134c573d6000803e3d6000fd5b505050505050565b60006113a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114399092919063ffffffff16565b8051909150156111e857808060200190518101906113c79190611787565b6111e85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610412565b60606114488484600085611452565b90505b9392505050565b6060824710156114ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610412565b6001600160a01b0385163b6115215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610412565b600080866001600160a01b0316858760405161153d91906117d5565b60006040518083038185875af1925050503d806000811461157a576040519150601f19603f3d011682016040523d82523d6000602084013e61157f565b606091505b509150915061158f82828661159a565b979650505050505050565b606083156115a957508161144b565b8251156115b95782518084602001fd5b8160405162461bcd60e51b815260040161041291906117f1565b80356001600160a01b03811681146115ea57600080fd5b919050565b60006020828403121561160157600080fd5b61144b826115d3565b60006020828403121561161c57600080fd5b5035919050565b60008060008060006080868803121561163b57600080fd5b611644866115d3565b945060208601359350611659604087016115d3565b9250606086013567ffffffffffffffff8082111561167657600080fd5b818801915088601f83011261168a57600080fd5b81358181111561169957600080fd5b8960208285010111156116ab57600080fd5b9699959850939650602001949392505050565b600080604083850312156116d157600080fd5b6116da836115d3565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611711576117116116e8565b500190565b60006020828403121561172857600080fd5b5051919050565b6000816000190483118215151615611749576117496116e8565b500290565b60008261176b57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611782576117826116e8565b500390565b60006020828403121561179957600080fd5b8151801515811461144b57600080fd5b60005b838110156117c45781810151838201526020016117ac565b838111156111995750506000910152565b600082516117e78184602087016117a9565b9190910192915050565b60208152600082518060208401526118108160408501602087016117a9565b601f01601f1916919091016040019291505056fea2646970667358221220455334ea9789b21e26b9f1c24474fc80e3512b721e0e0f3a0b0c3f965a5652be64736f6c63430008090033",
515
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101b95760003560e01c80638da5cb5b116100f9578063b766bd8a11610097578063ea1a4e6811610071578063ea1a4e681461035a578063f257a1a01461036d578063f2fde38b14610380578063fe7294a81461039357600080fd5b8063b766bd8a14610337578063bb81268c1461034a578063c2b4aa751461035257600080fd5b8063a0712d68116100d3578063a0712d68146102fe578063ad3b1b4714610311578063b0b5489514610324578063b29b95ce1461032e57600080fd5b80638da5cb5b146102b35780638f4ffcb1146102c457806395de5a41146102d757600080fd5b80632d42067d116101665780635bf32f52116101405780635bf32f52146102725780636386d0b11461028557806364e779b114610298578063715018a6146102ab57600080fd5b80632d42067d146102295780633678252f1461023c57806351b83ebc1461026357600080fd5b80630c505b7a116101975780630c505b7a1461020d57806320ad25dc14610216578063240b57e81461022057600080fd5b806305e448fc146101be5780630bb037df146101da5780630c05ab39146101e2575b600080fd5b6101c760065481565b6040519081526020015b60405180910390f35b6101c76103a6565b6007546101f5906001600160a01b031681565b6040516001600160a01b0390911681526020016101d1565b6101c760015481565b61021e6103bc565b005b6101c760025481565b61021e6102373660046115ef565b610479565b6101f57f000000000000000000000000000000000000000000000000000000000000000081565b6101c7670de0b6b3a764000081565b61021e61028036600461160a565b61055c565b61021e6102933660046115ef565b6105f9565b61021e6102a636600461160a565b610738565b61021e61099d565b6000546001600160a01b03166101f5565b61021e6102d2366004611623565b610a03565b6101f57f000000000000000000000000000000000000000000000000000000000000000081565b61021e61030c36600461160a565b610b0d565b61021e61031f3660046116be565b610b1a565b6101c762093a8081565b6101c760035481565b6101c761034536600461160a565b610ba8565b61021e610bd1565b6101c7610e01565b6004546101f5906001600160a01b031681565b61021e61037b3660046115ef565b610e12565b61021e61038e3660046115ef565b610ef5565b6005546101f5906001600160a01b031681565b60006103b760065462093a80610fbd565b905090565b6000546001600160a01b0316331461041b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60035461042b8162093a8061103f565b7f3fd2a429fdc4324c186eb6c71dc1bf3accae43e10f21367f6d143635dd5ed33c60025460405161045e91815260200190565b60405180910390a15060028054600155600090819055600355565b6004546001600160a01b03163381146104d45760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420617574686f72697a656400000000000000006044820152606401610412565b6001600160a01b0382166105395760405162461bcd60e51b815260206004820152602660248201527f4e657720696e69746961746f72206d757374206e6f74206265207a65726f206160448201526564647265737360d01b6064820152608401610412565b50600480546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b03163381146105b75760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420617574686f72697a656400000000000000006044820152606401610412565b604080518381524260208201527f0ddb39c814329b5da82b52fcacf65e4db6a1f64a0db4755282bee877cb97991a910160405180910390a15060025542600355565b6007546001600160a01b03163381146106545760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420617574686f72697a656400000000000000006044820152606401610412565b6001600160a01b0382166106d05760405162461bcd60e51b815260206004820152602960248201527f4e65772056656e64696e674d616368696e652063616e6e6f74206265207a657260448201527f6f206164647265737300000000000000000000000000000000000000000000006064820152608401610412565b604080516001600160a01b03841681524260208201527f424e3c8894757dd6fd019d0d8065b19c7e49af137aeb89a275ed3d2435025a96910160405180910390a150600580546001600160a01b0319166001600160a01b039290921691909117905542600655565b600061074382610ba8565b604080518481526020810183905291925033917fe8a2f49c528033a686bb566d35ac82ca6fd93449bdd9f5d5b36c2f1aa68214b3910160405180910390a261078b81836116fe565b6040516370a0823160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156107ea57600080fd5b505afa1580156107fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108229190611716565b10156108955760405162461bcd60e51b8152602060048201526024808201527f416d6f756e74202b20666565206578636565647320544254432076322062616c60448201527f616e6365000000000000000000000000000000000000000000000000000000006064820152608401610412565b6108ca6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846110e8565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906379cc679090604401600060405180830381600087803b15801561094b57600080fd5b505af115801561095f573d6000803e3d6000fd5b506109999250506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169050338461119f565b5050565b6000546001600160a01b031633146109f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610412565b610a0160006111ed565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614610a845760405162461bcd60e51b815260206004820152601460248201527f546f6b656e206973206e6f7420544254432076310000000000000000000000006044820152606401610412565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610afc5760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c7920544254432076312063616c6c657220616c6c6f77656400000000006044820152606401610412565b610b06858561123d565b5050505050565b610b17338261123d565b50565b6000546001600160a01b03163314610b745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610412565b6109996001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016838361119f565b6000670de0b6b3a764000060015483610bc1919061172f565b610bcb919061174e565b92915050565b6000546001600160a01b03163314610c2b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610412565b600654610c3b8162093a8061103f565b6005546040516001600160a01b0390911681527f99610bc40a14194a7a819ffeded94200b49e68ba00bc3a3ab89625c0972217ff9060200160405180910390a16005546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f2fde38b90602401600060405180830381600087803b158015610cfc57600080fd5b505af1158015610d10573d6000803e3d6000fd5b50506005546040516370a0823160e01b8152306004820152610de993506001600160a01b0391821692507f0000000000000000000000000000000000000000000000000000000000000000909116906370a082319060240160206040518083038186803b158015610d8057600080fd5b505afa158015610d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db89190611716565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016919061119f565b50600580546001600160a01b03191690556000600655565b60006103b760035462093a80610fbd565b6007546001600160a01b0316338114610e6d5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420617574686f72697a656400000000000000006044820152606401610412565b6001600160a01b038216610ed25760405162461bcd60e51b815260206004820152602660248201527f4e657720696e69746961746f72206d757374206e6f74206265207a65726f206160448201526564647265737360d01b6064820152608401610412565b50600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f4f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610412565b6001600160a01b038116610fb45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610412565b610b17816111ed565b600080831161100e5760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610412565b600061101a8442611770565b905082811061102d576000915050610bcb565b6110378184611770565b949350505050565b6000821161108f5760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610412565b8061109a8342611770565b10156109995760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610412565b6040516001600160a01b03808516602483015283166044820152606481018290526111999085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611354565b50505050565b6040516001600160a01b0383166024820152604481018290526111e89084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611135565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8260405161127891815260200190565b60405180910390a26112b56001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168330846110e8565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b15801561133857600080fd5b505af115801561134c573d6000803e3d6000fd5b505050505050565b60006113a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114399092919063ffffffff16565b8051909150156111e857808060200190518101906113c79190611787565b6111e85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610412565b60606114488484600085611452565b90505b9392505050565b6060824710156114ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610412565b6001600160a01b0385163b6115215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610412565b600080866001600160a01b0316858760405161153d91906117d5565b60006040518083038185875af1925050503d806000811461157a576040519150601f19603f3d011682016040523d82523d6000602084013e61157f565b606091505b509150915061158f82828661159a565b979650505050505050565b606083156115a957508161144b565b8251156115b95782518084602001fd5b8160405162461bcd60e51b815260040161041291906117f1565b80356001600160a01b03811681146115ea57600080fd5b919050565b60006020828403121561160157600080fd5b61144b826115d3565b60006020828403121561161c57600080fd5b5035919050565b60008060008060006080868803121561163b57600080fd5b611644866115d3565b945060208601359350611659604087016115d3565b9250606086013567ffffffffffffffff8082111561167657600080fd5b818801915088601f83011261168a57600080fd5b81358181111561169957600080fd5b8960208285010111156116ab57600080fd5b9699959850939650602001949392505050565b600080604083850312156116d157600080fd5b6116da836115d3565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611711576117116116e8565b500190565b60006020828403121561172857600080fd5b5051919050565b6000816000190483118215151615611749576117496116e8565b500290565b60008261176b57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611782576117826116e8565b500390565b60006020828403121561179957600080fd5b8151801515811461144b57600080fd5b60005b838110156117c45781810151838201526020016117ac565b838111156111995750506000910152565b600082516117e78184602087016117a9565b9190910192915050565b60208152600082518060208401526118108160408501602087016117a9565b601f01601f1916919091016040019291505056fea2646970667358221220455334ea9789b21e26b9f1c24474fc80e3512b721e0e0f3a0b0c3f965a5652be64736f6c63430008090033",
516
516
  "linkReferences": {},
517
517
  "deployedLinkReferences": {}
518
518
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/e8a0929037d31bb5945f0f400520ecde.json"
4
+ }
@@ -0,0 +1,112 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "Wallets",
4
+ "sourceName": "contracts/bridge/Wallets.sol",
5
+ "abi": [
6
+ {
7
+ "anonymous": false,
8
+ "inputs": [
9
+ {
10
+ "indexed": true,
11
+ "internalType": "bytes32",
12
+ "name": "ecdsaWalletID",
13
+ "type": "bytes32"
14
+ },
15
+ {
16
+ "indexed": true,
17
+ "internalType": "bytes20",
18
+ "name": "walletPubKeyHash",
19
+ "type": "bytes20"
20
+ }
21
+ ],
22
+ "name": "NewWalletRegistered",
23
+ "type": "event"
24
+ },
25
+ {
26
+ "anonymous": false,
27
+ "inputs": [],
28
+ "name": "NewWalletRequested",
29
+ "type": "event"
30
+ },
31
+ {
32
+ "anonymous": false,
33
+ "inputs": [
34
+ {
35
+ "indexed": true,
36
+ "internalType": "bytes32",
37
+ "name": "ecdsaWalletID",
38
+ "type": "bytes32"
39
+ },
40
+ {
41
+ "indexed": true,
42
+ "internalType": "bytes20",
43
+ "name": "walletPubKeyHash",
44
+ "type": "bytes20"
45
+ }
46
+ ],
47
+ "name": "WalletClosed",
48
+ "type": "event"
49
+ },
50
+ {
51
+ "anonymous": false,
52
+ "inputs": [
53
+ {
54
+ "indexed": true,
55
+ "internalType": "bytes32",
56
+ "name": "ecdsaWalletID",
57
+ "type": "bytes32"
58
+ },
59
+ {
60
+ "indexed": true,
61
+ "internalType": "bytes20",
62
+ "name": "walletPubKeyHash",
63
+ "type": "bytes20"
64
+ }
65
+ ],
66
+ "name": "WalletClosing",
67
+ "type": "event"
68
+ },
69
+ {
70
+ "anonymous": false,
71
+ "inputs": [
72
+ {
73
+ "indexed": true,
74
+ "internalType": "bytes32",
75
+ "name": "ecdsaWalletID",
76
+ "type": "bytes32"
77
+ },
78
+ {
79
+ "indexed": true,
80
+ "internalType": "bytes20",
81
+ "name": "walletPubKeyHash",
82
+ "type": "bytes20"
83
+ }
84
+ ],
85
+ "name": "WalletMovingFunds",
86
+ "type": "event"
87
+ },
88
+ {
89
+ "anonymous": false,
90
+ "inputs": [
91
+ {
92
+ "indexed": true,
93
+ "internalType": "bytes32",
94
+ "name": "ecdsaWalletID",
95
+ "type": "bytes32"
96
+ },
97
+ {
98
+ "indexed": true,
99
+ "internalType": "bytes20",
100
+ "name": "walletPubKeyHash",
101
+ "type": "bytes20"
102
+ }
103
+ ],
104
+ "name": "WalletTerminated",
105
+ "type": "event"
106
+ }
107
+ ],
108
+ "bytecode": "0x610fbf61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80633af3b1541461005b5780634afbe4c91461007d578063c87de7f41461009d578063d079fbb1146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004610d7b565b6100dd565b005b81801561008957600080fd5b5061007b610098366004610dcc565b610310565b8180156100a957600080fd5b5061007b6100b8366004610dfe565b610535565b8180156100c957600080fd5b5061007b6100d8366004610e2a565b610650565b601b83015460601b6bffffffffffffffffffffffff1990811690831614156101725760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c65000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6bffffffffffffffffffffffff1982166000908152601d84016020526040902060016002820154600160c01b900460ff1660058111156101b4576101b4610e57565b146102015760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c697665207374617465000000006044820152606401610169565b601a840154600282015460009161024e9163ffffffff7c01000000000000000000000000000000000000000000000000000000009092048216916801000000000000000090910416610e83565b63ffffffff164210159050808061028d5750601a850154600160a01b900467ffffffffffffffff1661028186868661094f565b67ffffffffffffffff16105b6102ff5760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610169565b6103098585610a87565b5050505050565b60028401546001600160a01b0316331461037c5760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610169565b600061039061038b8484610be0565b610c8a565b6bffffffffffffffffffffffff1981166000908152601d8701602052604081209192506002820154600160c01b900460ff1660058111156103d3576103d3610e57565b146104465760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610169565b8481556002810180547fffffffffffffff00ffffffffffffffffffffffff00000000ffffffffffffffff16680100000000000000004263ffffffff9081169190910291909117600160c01b17909155601b8701805473ffffffffffffffffffffffffffffffffffffffff1916606085901c17808255600160a01b90049091169060146104d183610eab565b91906101000a81548163ffffffff021916908363ffffffff16021790555050816bffffffffffffffffffffffff1916857f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e60405160405180910390a3505050505050565b60028301546001600160a01b031633146105a15760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610169565b60006105b061038b8484610be0565b905060016bffffffffffffffffffffffff1982166000908152601d86016020526040902060020154600160c01b900460ff1660058111156105f3576105f3610e57565b146106405760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c697665207374617465000000006044820152606401610169565b61064a8482610a87565b50505050565b6002820154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b1580156106b057600080fd5b505afa1580156106c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e89190610ecf565b60038111156106f9576106f9610e57565b1461076c5760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610169565b601b82015460601b6bffffffffffffffffffffffff198116156108b757600061079684838561094f565b6bffffffffffffffffffffffff1983166000908152601d86016020526040812060020154601a87015492935063ffffffff680100000000000000009091048116926107e2911683610e83565b63ffffffff1642101590508080156108145750601a86015467ffffffffffffffff640100000000909104811690841610155b806108415750601a86015467ffffffffffffffff6c01000000000000000000000000909104811690841610155b6108b35760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610169565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18260020160009054906101000a90046001600160a01b03166001600160a01b03166372cc8c6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561093257600080fd5b505af1158015610946573d6000803e3d6000fd5b50505050505050565b6bffffffffffffffffffffffff1982166000908152601d840160205260408120600101548015610a7f5780833561098c6040860160208701610ef7565b61099c6060870160408801610f1d565b604051602001610a099392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610a6c5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610169565b610a7c6060840160408501610f1d565b91505b509392505050565b6bffffffffffffffffffffffff1981166000908152601d8301602052604090206001810154610abf57610aba8383610cb1565b610b5b565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffff00ffffffffffffffff00000000ffffffffffffffffffffffff90911617780200000000000000000000000000000000000000000000000017905580546040516bffffffffffffffffffffffff19841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601b83015460601b6bffffffffffffffffffffffff199081169083161415610b9d57601b8301805473ffffffffffffffffffffffffffffffffffffffff191690555b601b83018054600160a01b900463ffffffff16906014610bbc83610f47565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b60606000610bef600284610f67565b610c1a57507f0200000000000000000000000000000000000000000000000000000000000000610c3d565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6bffffffffffffffffffffffff1981166000818152601d8401602052604080822060028101805463ffffffff4216700100000000000000000000000000000000027fffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffff909116177803000000000000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b600060608284031215610d7557600080fd5b50919050565b600080600060a08486031215610d9057600080fd5b8335925060208401356bffffffffffffffffffffffff1981168114610db457600080fd5b9150610dc38560408601610d63565b90509250925092565b60008060008060808587031215610de257600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215610e1357600080fd5b505081359360208301359350604090920135919050565b60008060808385031215610e3d57600080fd5b82359150610e4e8460208501610d63565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818516808303821115610ea257610ea2610e6d565b01949350505050565b600063ffffffff80831681811415610ec557610ec5610e6d565b6001019392505050565b600060208284031215610ee157600080fd5b815160048110610ef057600080fd5b9392505050565b600060208284031215610f0957600080fd5b813563ffffffff81168114610ef057600080fd5b600060208284031215610f2f57600080fd5b813567ffffffffffffffff81168114610ef057600080fd5b600063ffffffff821680610f5d57610f5d610e6d565b6000190192915050565b600082610f8457634e487b7160e01b600052601260045260246000fd5b50069056fea2646970667358221220be1d3b2242e8f7d4fcc26bb7ac08c360a0d03e356221b7d807d239aff6da653e64736f6c63430008090033",
109
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80633af3b1541461005b5780634afbe4c91461007d578063c87de7f41461009d578063d079fbb1146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004610d7b565b6100dd565b005b81801561008957600080fd5b5061007b610098366004610dcc565b610310565b8180156100a957600080fd5b5061007b6100b8366004610dfe565b610535565b8180156100c957600080fd5b5061007b6100d8366004610e2a565b610650565b601b83015460601b6bffffffffffffffffffffffff1990811690831614156101725760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c65000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6bffffffffffffffffffffffff1982166000908152601d84016020526040902060016002820154600160c01b900460ff1660058111156101b4576101b4610e57565b146102015760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c697665207374617465000000006044820152606401610169565b601a840154600282015460009161024e9163ffffffff7c01000000000000000000000000000000000000000000000000000000009092048216916801000000000000000090910416610e83565b63ffffffff164210159050808061028d5750601a850154600160a01b900467ffffffffffffffff1661028186868661094f565b67ffffffffffffffff16105b6102ff5760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610169565b6103098585610a87565b5050505050565b60028401546001600160a01b0316331461037c5760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610169565b600061039061038b8484610be0565b610c8a565b6bffffffffffffffffffffffff1981166000908152601d8701602052604081209192506002820154600160c01b900460ff1660058111156103d3576103d3610e57565b146104465760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610169565b8481556002810180547fffffffffffffff00ffffffffffffffffffffffff00000000ffffffffffffffff16680100000000000000004263ffffffff9081169190910291909117600160c01b17909155601b8701805473ffffffffffffffffffffffffffffffffffffffff1916606085901c17808255600160a01b90049091169060146104d183610eab565b91906101000a81548163ffffffff021916908363ffffffff16021790555050816bffffffffffffffffffffffff1916857f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e60405160405180910390a3505050505050565b60028301546001600160a01b031633146105a15760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610169565b60006105b061038b8484610be0565b905060016bffffffffffffffffffffffff1982166000908152601d86016020526040902060020154600160c01b900460ff1660058111156105f3576105f3610e57565b146106405760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c697665207374617465000000006044820152606401610169565b61064a8482610a87565b50505050565b6002820154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b1580156106b057600080fd5b505afa1580156106c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e89190610ecf565b60038111156106f9576106f9610e57565b1461076c5760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610169565b601b82015460601b6bffffffffffffffffffffffff198116156108b757600061079684838561094f565b6bffffffffffffffffffffffff1983166000908152601d86016020526040812060020154601a87015492935063ffffffff680100000000000000009091048116926107e2911683610e83565b63ffffffff1642101590508080156108145750601a86015467ffffffffffffffff640100000000909104811690841610155b806108415750601a86015467ffffffffffffffff6c01000000000000000000000000909104811690841610155b6108b35760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610169565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18260020160009054906101000a90046001600160a01b03166001600160a01b03166372cc8c6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561093257600080fd5b505af1158015610946573d6000803e3d6000fd5b50505050505050565b6bffffffffffffffffffffffff1982166000908152601d840160205260408120600101548015610a7f5780833561098c6040860160208701610ef7565b61099c6060870160408801610f1d565b604051602001610a099392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610a6c5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610169565b610a7c6060840160408501610f1d565b91505b509392505050565b6bffffffffffffffffffffffff1981166000908152601d8301602052604090206001810154610abf57610aba8383610cb1565b610b5b565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffff00ffffffffffffffff00000000ffffffffffffffffffffffff90911617780200000000000000000000000000000000000000000000000017905580546040516bffffffffffffffffffffffff19841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601b83015460601b6bffffffffffffffffffffffff199081169083161415610b9d57601b8301805473ffffffffffffffffffffffffffffffffffffffff191690555b601b83018054600160a01b900463ffffffff16906014610bbc83610f47565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b60606000610bef600284610f67565b610c1a57507f0200000000000000000000000000000000000000000000000000000000000000610c3d565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6bffffffffffffffffffffffff1981166000818152601d8401602052604080822060028101805463ffffffff4216700100000000000000000000000000000000027fffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffff909116177803000000000000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b600060608284031215610d7557600080fd5b50919050565b600080600060a08486031215610d9057600080fd5b8335925060208401356bffffffffffffffffffffffff1981168114610db457600080fd5b9150610dc38560408601610d63565b90509250925092565b60008060008060808587031215610de257600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215610e1357600080fd5b505081359360208301359350604090920135919050565b60008060808385031215610e3d57600080fd5b82359150610e4e8460208501610d63565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818516808303821115610ea257610ea2610e6d565b01949350505050565b600063ffffffff80831681811415610ec557610ec5610e6d565b6001019392505050565b600060208284031215610ee157600080fd5b815160048110610ef057600080fd5b9392505050565b600060208284031215610f0957600080fd5b813563ffffffff81168114610ef057600080fd5b600060208284031215610f2f57600080fd5b813567ffffffffffffffff81168114610ef057600080fd5b600063ffffffff821680610f5d57610f5d610e6d565b6000190192915050565b600082610f8457634e487b7160e01b600052601260045260246000fd5b50069056fea2646970667358221220be1d3b2242e8f7d4fcc26bb7ac08c360a0d03e356221b7d807d239aff6da653e64736f6c63430008090033",
110
+ "linkReferences": {},
111
+ "deployedLinkReferences": {}
112
+ }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/2c4248711b87bf88539b00b8fc80902e.json"
3
+ "buildInfo": "../../../build-info/e8a0929037d31bb5945f0f400520ecde.json"
4
4
  }