@keep-network/tbtc-v2 0.1.1-dev.41 → 0.1.1-dev.44

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 (81) hide show
  1. package/artifacts/Bank.json +742 -0
  2. package/artifacts/Bridge.json +2914 -0
  3. package/artifacts/Deposit.json +117 -0
  4. package/artifacts/EcdsaDkgValidator.json +532 -0
  5. package/artifacts/EcdsaInactivity.json +156 -0
  6. package/artifacts/Fraud.json +153 -0
  7. package/artifacts/KeepRegistry.json +99 -0
  8. package/artifacts/KeepStake.json +286 -0
  9. package/artifacts/KeepToken.json +711 -0
  10. package/artifacts/KeepTokenStaking.json +483 -0
  11. package/artifacts/MovingFunds.json +137 -0
  12. package/artifacts/NuCypherStakingEscrow.json +256 -0
  13. package/artifacts/NuCypherToken.json +711 -0
  14. package/artifacts/RandomBeaconStub.json +141 -0
  15. package/artifacts/Redemption.json +161 -0
  16. package/artifacts/ReimbursementPool.json +509 -0
  17. package/artifacts/Relay.json +123 -0
  18. package/artifacts/SortitionPool.json +944 -0
  19. package/artifacts/Sweep.json +76 -0
  20. package/artifacts/T.json +1148 -0
  21. package/artifacts/TBTC.json +21 -21
  22. package/artifacts/TBTCToken.json +21 -21
  23. package/artifacts/TokenStaking.json +2288 -0
  24. package/artifacts/TokenholderGovernor.json +1795 -0
  25. package/artifacts/TokenholderTimelock.json +1058 -0
  26. package/artifacts/VendingMachine.json +24 -24
  27. package/artifacts/VendingMachineKeep.json +400 -0
  28. package/artifacts/VendingMachineNuCypher.json +400 -0
  29. package/artifacts/WalletRegistry.json +2709 -0
  30. package/artifacts/WalletRegistryGovernance.json +2364 -0
  31. package/artifacts/Wallets.json +186 -0
  32. package/artifacts/solcInputs/{e9b173393b9fd7287a0bfaa6d4eb4b71.json → bbe44823ec28554a9429cce5cafee035.json} +34 -34
  33. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  34. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  35. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  36. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +2 -2
  37. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  38. package/build/contracts/bridge/Bridge.sol/Bridge.json +535 -273
  39. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
  40. package/build/contracts/bridge/BridgeState.sol/BridgeState.json +147 -3
  41. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
  42. package/build/contracts/bridge/Deposit.sol/Deposit.json +2 -2
  43. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
  44. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.json +2 -2
  45. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
  46. package/build/contracts/bridge/Fraud.sol/Fraud.json +5 -57
  47. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
  48. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
  49. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.json +41 -21
  50. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +4 -0
  51. package/build/contracts/bridge/{Redeem.sol → Redemption.sol}/OutboundTx.json +3 -3
  52. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +4 -0
  53. package/build/contracts/bridge/Redemption.sol/Redemption.json +92 -0
  54. package/build/contracts/bridge/Sweep.sol/Sweep.dbg.json +1 -1
  55. package/build/contracts/bridge/Sweep.sol/Sweep.json +2 -2
  56. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  57. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
  58. package/build/contracts/bridge/Wallets.sol/Wallets.json +12 -38
  59. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  60. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  61. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  62. package/contracts/bridge/BitcoinTx.sol +19 -26
  63. package/contracts/bridge/Bridge.sol +765 -524
  64. package/contracts/bridge/BridgeState.sol +312 -23
  65. package/contracts/bridge/Deposit.sol +25 -6
  66. package/contracts/bridge/EcdsaLib.sol +15 -0
  67. package/contracts/bridge/Fraud.sol +65 -33
  68. package/contracts/bridge/MovingFunds.sol +196 -10
  69. package/contracts/bridge/{Redeem.sol → Redemption.sol} +26 -29
  70. package/contracts/bridge/Sweep.sol +16 -12
  71. package/contracts/bridge/Wallets.sol +90 -153
  72. package/deploy/00_resolve_relay.ts +28 -0
  73. package/deploy/04_deploy_bank.ts +25 -0
  74. package/deploy/05_deploy_bridge.ts +60 -0
  75. package/deploy/06_bank_update_bridge.ts +19 -0
  76. package/deploy/07_transfer_ownership.ts +17 -0
  77. package/export.json +14797 -459
  78. package/package.json +2 -2
  79. package/build/contracts/bridge/Redeem.sol/OutboundTx.dbg.json +0 -4
  80. package/build/contracts/bridge/Redeem.sol/Redeem.dbg.json +0 -4
  81. package/build/contracts/bridge/Redeem.sol/Redeem.json +0 -110
@@ -23,8 +23,8 @@
23
23
  "type": "event"
24
24
  }
25
25
  ],
26
- "bytecode": "0x612a1961003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80637464f9271461003a575b600080fd5b81801561004657600080fd5b5061005a6100553660046124f1565b61005c565b005b6000610071848461006c8961049a565b6105e1565b90506000806100c06100866040880188612582565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108d292505050565b915091506000806100d2898588610a05565b909250905060006101268b6100ea60208c018c612582565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250610c1f915050565b90506000808061014a84600001518867ffffffffffffffff1686604001515161120b565b915091508d60040160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16818361017d91906125df565b11156101d05760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f2068696768000000000060448201526064015b60405180910390fd5b60005b8460400151518110156102be57600060018660400151516101f491906125f7565b8214610200578361020a565b61020a83856125df565b905080866060015183815181106102235761022361260e565b6020026020010151876040015184815181106102415761024161260e565b602002602001015161025391906125f7565b61025d91906125f7565b866040015183815181106102735761027361260e565b602002602001018181525050856060015182815181106102955761029561260e565b6020026020010151856102a891906125df565b94505080806102b690612624565b9150506101d3565b5060408051602081018b90526000918101919091527fffffffffffffffff00000000000000000000000000000000000000000000000060c089901b166044820152604c0160408051808303601f19018152828252805160209182012060018a01556bffffffffffffffffffffffff198b16835282018b90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a160018e0154602085015160408087015190517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b039093169263266a123a926103b692909160040161263f565b600060405180830381600087803b1580156103d057600080fd5b505af11580156103e4573d6000803e3d6000fd5b505050508d60010160009054906101000a90046001600160a01b03166001600160a01b0316635b86f5998f60030160009054906101000a90046001600160a01b0316856040518363ffffffff1660e01b81526004016104589291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b15801561047257600080fd5b505af1158015610486573d6000803e3d6000fd5b505050505050505050505050505050505050565b6104be60405180606001604052806000815260200160008152602001600081525090565b6002820154604080517f113764be00000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691829163113764be916004808301926020929190829003018186803b15801561051f57600080fd5b505afa158015610533573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055791906126c3565b826000018181525050806001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561059957600080fd5b505afa1580156105ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d191906126c3565b6020830152509054604082015290565b600061062d6105f36020860186612582565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061124792505050565b6106795760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f766964656400000060448201526064016101c7565b6106c36106896040860186612582565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112f792505050565b61070f5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f7669646564000060448201526064016101c7565b61077261071f60208601866126dc565b61072c6020870187612582565b6107396040890189612582565b61074960808b0160608c016126dc565b60405160200161075e96959493929190612706565b60405160208183030381529060405261139a565b905061080d6107c16107876040860186612582565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113c192505050565b6107cb8580612582565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508694939250505060208701356113d0565b61087f5760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e6420747820686173680000000060648201526084016101c7565b6108cb61088f6040850185612582565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061140e915050565b9392505050565b60008060006108e084611671565b915050806001146109595760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f757470757400000000000000000000000000000000000000000060648201526084016101c7565b60006109658582611688565b90506109708161186e565b9250600061097d826118e5565b905080516014146109f65760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f766520323020627974657300000000000000000000000000000000000000000060648201526084016101c7565b60208101519450505050915091565b60408051606081018252600080825260208083018290528284018290526bffffffffffffffffffffffff1986168252600287810190915292902091820154700100000000000000000000000000000000900460ff166001816004811115610a6e57610a6e612748565b1480610a8b57506002816004811115610a8957610a89612748565b145b610afd5760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e647320737461746500000000000000000000000000000000000000000060648201526084016101c7565b604080516060810182526000808252602082018190529181019190915260018401549092508015610c1557808535610b3b6040880160208901612777565b610b4b6060890160408a016127aa565b604051602001610ba09392919092835260e09190911b6001600160e01b031916602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610c035760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016101c7565b610c12368690038601866127db565b92505b5050935093915050565b610c4a6040518060800160405280600081526020016060815260200160608152602001606081525090565b8151151560008080610c5b87611671565b90925090506000610c6d8360016125df565b90508415610c8557610c806001836125f7565b610c87565b815b67ffffffffffffffff811115610c9f57610c9f6127c5565b604051908082528060200260200182016040528015610cc8578160200160208202803683370190505b50602087018190525167ffffffffffffffff811115610ce957610ce96127c5565b604051908082528060200260200182016040528015610d12578160200160208202803683370190505b50604087015260208601515167ffffffffffffffff811115610d3657610d366127c5565b604051908082528060200260200182016040528015610d5f578160200160208202803683370190505b5060608701526000805b8381101561110e576000806000610d808d87611b9e565b92509250925060008e60050160008585604051602001610db792919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610ff5576001810154600160e01b900463ffffffff1615610e525760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016101c7565b8b6020015151861415610ecd5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016101c7565b6001810180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055805460208d015180516001600160a01b039092169188908110610f2657610f2661260e565b6001600160a01b039290921660209283029190910190910152805460408d01518051600160a01b90920467ffffffffffffffff169188908110610f6b57610f6b61260e565b6020026020010181815250508b604001518681518110610f8d57610f8d61260e565b60200260200101518c600001818151610fa691906125df565b905250600181015460608d01518051600160a01b90920467ffffffffffffffff169188908110610fd857610fd861260e565b602090810291909101015285610fed81612624565b9650506110eb565b8915158b15151415801561100957508c5184145b156110a3578c6040015167ffffffffffffffff168c60000181815161102e91906125df565b915081815250506001995060018f6010016000868660405160200161106a92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790556110eb565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e7075742074797065000000000000000000000000000060448201526064016101c7565b6110f582886125df565b965050505050808061110690612624565b915050610d69565b50600081116111855760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f7369740000000000000000000000000060648201526084016101c7565b841515861515146111fe5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016101c7565b5050505050509392505050565b6000808061121985876125f7565b90506112258482612864565b91508361123283836125f7565b61123c9190612878565b925050935093915050565b600080600061125584611671565b9092509050801580611268575060001982145b15611277575060009392505050565b60006112848360016125df565b905060005b828110156112ea57855182106112a55750600095945050505050565b60006112b18784611bf6565b90506000198114156112ca575060009695505050505050565b6112d481846125df565b92505080806112e290612624565b915050611289565b5093519093149392505050565b600080600061130584611671565b9092509050801580611318575060001982145b15611327575060009392505050565b60006113348360016125df565b905060005b828110156112ea57855182106113555750600095945050505050565b60006113618784611c4a565b905060001981141561137a575060009695505050505050565b61138481846125df565b925050808061139290612624565b915050611339565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b60448101516000905b92915050565b600083851480156113df575081155b80156113ea57508251155b156113f757506001611406565b61140385848685611cb0565b90505b949350505050565b60008061142261141d85611d58565b611ded565b835190915081141561143757825191506114bd565b826020015181141561144f57826020015191506114bd565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c747900000000000000000000000000000000000000000000000000000060648201526084016101c7565b60006114c885611e15565b90506000198114156115425760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e000000000000000000000000000000000000000000000000000000000060648201526084016101c7565b6001198114156115945760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e000000000000000000000060448201526064016101c7565b6002198114156115e65760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e20612068656164657200000060448201526064016101c7565b60408401516115f5908461288c565b81101561166a5760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e0000000000000000000000000060648201526084016101c7565b5050505050565b60008061167f83600061201c565b91509150915091565b606060008061169685611671565b90925090506000198214156117135760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016101c7565b8084106117625760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016101c7565b6000806117708460016125df565b905060005b868110156117f9576117878883611c4a565b92506000198314156117db5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016101c7565b6117e583836125df565b9150806117f181612624565b915050611775565b506118048782611c4a565b91506000198214156118585760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016101c7565b61186387828461219a565b979650505050505050565b60008061187a83612264565b60c01c905060006114068264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b60606000826008815181106118fc576118fc61260e565b0160200151835160f89190911c91506119168260096128ab565b60ff1614611934575050604080516020810190915260008152919050565b826009815181106119475761194761260e565b016020015160f81c6119e55760028160ff161015611975575050604080516020810190915260008152919050565b600083600a8151811061198a5761198a61260e565b016020015160f81c905061199f6002836128d0565b60ff16811415806119bd5750806020141580156119bd575080601414155b156119d957505060408051602081019091526000815292915050565b61140684600b8361219a565b60006119f284600861226c565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611aea5783600b81518110611a5157611a5161260e565b60209101015160f81c6014141580611ac15750611a7c60028551611a7591906125f7565b859061226c565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15611add57505060408051602081019091526000815292915050565b61140684600c601461219a565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611b87578360018551611b4391906125f7565b81518110611b5357611b5361260e565b60209101015160f81c608714611b7a57505060408051602081019091526000815292915050565b61140684600b601461219a565b505050604080516020810190915260008152919050565b60008080611bac858561226c565b9250611be1611bbb868661227b565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b9150611bed8585611bf6565b90509250925092565b6000806000611c058585612292565b9092509050600019821415611c2057600019925050506113ca565b80611c2c8360256125df565b611c3691906125df565b611c419060046125df565b95945050505050565b6000611c578260096125df565b83511015611c6857506000196113ca565b600080611c7f85611c7a8660086125df565b61201c565b9092509050600019821415611c9a57600019925050506113ca565b80611ca68360096125df565b611c4191906125df565b600060208451611cc09190612864565b15611ccd57506000611406565b8351611cdb57506000611406565b818560005b8651811015611d4b57611cf4600284612864565b60011415611d1957611d12611d0c8883016020015190565b836122d4565b9150611d32565b611d2f82611d2a8984016020015190565b6122d4565b91505b60019290921c91611d446020826125df565b9050611ce0565b5090931495945050505050565b600080611d6683604861226c565b60e81c9050600083604b81518110611d8057611d8061260e565b016020015160f81c90506000611db483600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff1690506000611dc86003846128d0565b60ff169050611dd9816101006129d7565b611de3908361288c565b9695505050505050565b60006113ca7bffff0000000000000000000000000000000000000000000000000000836122e0565b600060508251611e259190612864565b15611e335750600019919050565b506040805160808101909152605081526000908190815b845181101561201457611e5e8583836122ec565b8015611e7e57611e6e828461238b565b611e7e5750600119949350505050565b6000611e8983611d58565b9050611e948361139a565b935080611fd88560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b1115611feb575060021995945050505050565b611ffe611ff782611ded565b86906123b4565b945061200d90506050826125df565b9050611e4a565b505050919050565b600080600061202b8585612412565b905060ff811661205d5760008585815181106120495761204961260e565b016020015190935060f81c91506121939050565b836120698260016128ab565b60ff1661207691906125df565b8551101561208d5760001960009250925050612193565b60008160ff16600214156120d2576120c76120b36120ac8760016125df565b889061226c565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612189565b8160ff16600414156120fc576120ef611bbb6120ac8760016125df565b63ffffffff169050612189565b8160ff16600814156121895761217c6121196120ac8760016125df565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6060816121b657506040805160208101909152600081526108cb565b60006121c283856125df565b905083811180156121d4575080855110155b6122205760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016101c7565b604051915082604083010160405282825283850182038460208701018481015b8082101561225957815183830152602082019150612240565b505050509392505050565b60006113ca82825b60006108cb8383016020015190565b60006108cb61228b8360206125df565b849061226c565b6000806122a08360256125df565b845110156122b5575060001990506000612193565b6000806122c786611c7a8760246125df565b9097909650945050505050565b60006108cb838361249e565b60006108cb8284612878565b815160006122fa82846125df565b9050828111801561230c575080855110155b6123585760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016101c7565b826020860101602085018382015b80831015612381578251825260209283019290910190612366565b5050505050505050565b600080612397846124cc565b90508281146123aa5760009150506113ca565b5060019392505050565b60006123c082846125df565b9050828110156113ca5760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e0000000000000060448201526064016101c7565b60008282815181106124265761242661260e565b60209101015160f81c60ff141561243f575060086113ca565b8282815181106124515761245161260e565b60209101015160f81c60fe141561246a575060046113ca565b82828151811061247c5761247c61260e565b60209101015160f81c60fd1415612495575060026113ca565b50600092915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b60248101516000906113ca565b6000606082840312156124eb57600080fd5b50919050565b600080600080600060e0868803121561250957600080fd5b8535945060208601359350604086013567ffffffffffffffff8082111561252f57600080fd5b908701906080828a03121561254357600080fd5b9093506060870135908082111561255957600080fd5b50612566888289016124d9565b92505061257687608088016124d9565b90509295509295909350565b6000808335601e1984360301811261259957600080fd5b83018035915067ffffffffffffffff8211156125b457600080fd5b60200191503681900382131561219357600080fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156125f2576125f26125c9565b500190565b600082821015612609576126096125c9565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612638576126386125c9565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156126815781516001600160a01b03168452928401929084019060010161265c565b5050508381038285015284518082528583019183019060005b818110156126b65783518352928401929184019160010161269a565b5090979650505050505050565b6000602082840312156126d557600080fd5b5051919050565b6000602082840312156126ee57600080fd5b81356001600160e01b0319811681146108cb57600080fd5b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b634e487b7160e01b600052602160045260246000fd5b803563ffffffff8116811461277257600080fd5b919050565b60006020828403121561278957600080fd5b6108cb8261275e565b803567ffffffffffffffff8116811461277257600080fd5b6000602082840312156127bc57600080fd5b6108cb82612792565b634e487b7160e01b600052604160045260246000fd5b6000606082840312156127ed57600080fd5b6040516060810181811067ffffffffffffffff8211171561281e57634e487b7160e01b600052604160045260246000fd5b604052823581526128316020840161275e565b602082015261284260408401612792565b60408201529392505050565b634e487b7160e01b600052601260045260246000fd5b6000826128735761287361284e565b500690565b6000826128875761288761284e565b500490565b60008160001904831182151516156128a6576128a66125c9565b500290565b600060ff821660ff84168060ff038211156128c8576128c86125c9565b019392505050565b600060ff821660ff8416808210156128ea576128ea6125c9565b90039392505050565b600181815b8085111561292e578160001904821115612914576129146125c9565b8085161561292157918102915b93841c93908002906128f8565b509250929050565b600082612945575060016113ca565b81612952575060006113ca565b816001811461296857600281146129725761298e565b60019150506113ca565b60ff841115612983576129836125c9565b50506001821b6113ca565b5060208310610133831016604e8410600b84101617156129b1575081810a6113ca565b6129bb83836128f3565b80600019048211156129cf576129cf6125c9565b029392505050565b60006108cb838361293656fea264697066735822122004f977a797dfc1176e85be665869f8513b2a4bd3a5678e94b12e054745ba78b064736f6c63430008090033",
27
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80637464f9271461003a575b600080fd5b81801561004657600080fd5b5061005a6100553660046124f1565b61005c565b005b6000610071848461006c8961049a565b6105e1565b90506000806100c06100866040880188612582565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108d292505050565b915091506000806100d2898588610a05565b909250905060006101268b6100ea60208c018c612582565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250610c1f915050565b90506000808061014a84600001518867ffffffffffffffff1686604001515161120b565b915091508d60040160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16818361017d91906125df565b11156101d05760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f2068696768000000000060448201526064015b60405180910390fd5b60005b8460400151518110156102be57600060018660400151516101f491906125f7565b8214610200578361020a565b61020a83856125df565b905080866060015183815181106102235761022361260e565b6020026020010151876040015184815181106102415761024161260e565b602002602001015161025391906125f7565b61025d91906125f7565b866040015183815181106102735761027361260e565b602002602001018181525050856060015182815181106102955761029561260e565b6020026020010151856102a891906125df565b94505080806102b690612624565b9150506101d3565b5060408051602081018b90526000918101919091527fffffffffffffffff00000000000000000000000000000000000000000000000060c089901b166044820152604c0160408051808303601f19018152828252805160209182012060018a01556bffffffffffffffffffffffff198b16835282018b90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a160018e0154602085015160408087015190517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b039093169263266a123a926103b692909160040161263f565b600060405180830381600087803b1580156103d057600080fd5b505af11580156103e4573d6000803e3d6000fd5b505050508d60010160009054906101000a90046001600160a01b03166001600160a01b0316635b86f5998f60030160009054906101000a90046001600160a01b0316856040518363ffffffff1660e01b81526004016104589291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b15801561047257600080fd5b505af1158015610486573d6000803e3d6000fd5b505050505050505050505050505050505050565b6104be60405180606001604052806000815260200160008152602001600081525090565b6002820154604080517f113764be00000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691829163113764be916004808301926020929190829003018186803b15801561051f57600080fd5b505afa158015610533573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055791906126c3565b826000018181525050806001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561059957600080fd5b505afa1580156105ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d191906126c3565b6020830152509054604082015290565b600061062d6105f36020860186612582565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061124792505050565b6106795760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f766964656400000060448201526064016101c7565b6106c36106896040860186612582565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112f792505050565b61070f5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f7669646564000060448201526064016101c7565b61077261071f60208601866126dc565b61072c6020870187612582565b6107396040890189612582565b61074960808b0160608c016126dc565b60405160200161075e96959493929190612706565b60405160208183030381529060405261139a565b905061080d6107c16107876040860186612582565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113c192505050565b6107cb8580612582565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508694939250505060208701356113d0565b61087f5760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e6420747820686173680000000060648201526084016101c7565b6108cb61088f6040850185612582565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061140e915050565b9392505050565b60008060006108e084611671565b915050806001146109595760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f757470757400000000000000000000000000000000000000000060648201526084016101c7565b60006109658582611688565b90506109708161186e565b9250600061097d826118e5565b905080516014146109f65760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f766520323020627974657300000000000000000000000000000000000000000060648201526084016101c7565b60208101519450505050915091565b60408051606081018252600080825260208083018290528284018290526bffffffffffffffffffffffff1986168252600287810190915292902091820154700100000000000000000000000000000000900460ff166001816004811115610a6e57610a6e612748565b1480610a8b57506002816004811115610a8957610a89612748565b145b610afd5760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e647320737461746500000000000000000000000000000000000000000060648201526084016101c7565b604080516060810182526000808252602082018190529181019190915260018401549092508015610c1557808535610b3b6040880160208901612777565b610b4b6060890160408a016127aa565b604051602001610ba09392919092835260e09190911b6001600160e01b031916602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610c035760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016101c7565b610c12368690038601866127db565b92505b5050935093915050565b610c4a6040518060800160405280600081526020016060815260200160608152602001606081525090565b8151151560008080610c5b87611671565b90925090506000610c6d8360016125df565b90508415610c8557610c806001836125f7565b610c87565b815b67ffffffffffffffff811115610c9f57610c9f6127c5565b604051908082528060200260200182016040528015610cc8578160200160208202803683370190505b50602087018190525167ffffffffffffffff811115610ce957610ce96127c5565b604051908082528060200260200182016040528015610d12578160200160208202803683370190505b50604087015260208601515167ffffffffffffffff811115610d3657610d366127c5565b604051908082528060200260200182016040528015610d5f578160200160208202803683370190505b5060608701526000805b8381101561110e576000806000610d808d87611b9e565b92509250925060008e60050160008585604051602001610db792919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610ff5576001810154600160e01b900463ffffffff1615610e525760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016101c7565b8b6020015151861415610ecd5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016101c7565b6001810180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055805460208d015180516001600160a01b039092169188908110610f2657610f2661260e565b6001600160a01b039290921660209283029190910190910152805460408d01518051600160a01b90920467ffffffffffffffff169188908110610f6b57610f6b61260e565b6020026020010181815250508b604001518681518110610f8d57610f8d61260e565b60200260200101518c600001818151610fa691906125df565b905250600181015460608d01518051600160a01b90920467ffffffffffffffff169188908110610fd857610fd861260e565b602090810291909101015285610fed81612624565b9650506110eb565b8915158b15151415801561100957508c5184145b156110a3578c6040015167ffffffffffffffff168c60000181815161102e91906125df565b915081815250506001995060018f6010016000868660405160200161106a92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790556110eb565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e7075742074797065000000000000000000000000000060448201526064016101c7565b6110f582886125df565b965050505050808061110690612624565b915050610d69565b50600081116111855760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f7369740000000000000000000000000060648201526084016101c7565b841515861515146111fe5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016101c7565b5050505050509392505050565b6000808061121985876125f7565b90506112258482612864565b91508361123283836125f7565b61123c9190612878565b925050935093915050565b600080600061125584611671565b9092509050801580611268575060001982145b15611277575060009392505050565b60006112848360016125df565b905060005b828110156112ea57855182106112a55750600095945050505050565b60006112b18784611bf6565b90506000198114156112ca575060009695505050505050565b6112d481846125df565b92505080806112e290612624565b915050611289565b5093519093149392505050565b600080600061130584611671565b9092509050801580611318575060001982145b15611327575060009392505050565b60006113348360016125df565b905060005b828110156112ea57855182106113555750600095945050505050565b60006113618784611c4a565b905060001981141561137a575060009695505050505050565b61138481846125df565b925050808061139290612624565b915050611339565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b60448101516000905b92915050565b600083851480156113df575081155b80156113ea57508251155b156113f757506001611406565b61140385848685611cb0565b90505b949350505050565b60008061142261141d85611d58565b611ded565b835190915081141561143757825191506114bd565b826020015181141561144f57826020015191506114bd565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c747900000000000000000000000000000000000000000000000000000060648201526084016101c7565b60006114c885611e15565b90506000198114156115425760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e000000000000000000000000000000000000000000000000000000000060648201526084016101c7565b6001198114156115945760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e000000000000000000000060448201526064016101c7565b6002198114156115e65760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e20612068656164657200000060448201526064016101c7565b60408401516115f5908461288c565b81101561166a5760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e0000000000000000000000000060648201526084016101c7565b5050505050565b60008061167f83600061201c565b91509150915091565b606060008061169685611671565b90925090506000198214156117135760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016101c7565b8084106117625760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016101c7565b6000806117708460016125df565b905060005b868110156117f9576117878883611c4a565b92506000198314156117db5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016101c7565b6117e583836125df565b9150806117f181612624565b915050611775565b506118048782611c4a565b91506000198214156118585760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016101c7565b61186387828461219a565b979650505050505050565b60008061187a83612264565b60c01c905060006114068264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b60606000826008815181106118fc576118fc61260e565b0160200151835160f89190911c91506119168260096128ab565b60ff1614611934575050604080516020810190915260008152919050565b826009815181106119475761194761260e565b016020015160f81c6119e55760028160ff161015611975575050604080516020810190915260008152919050565b600083600a8151811061198a5761198a61260e565b016020015160f81c905061199f6002836128d0565b60ff16811415806119bd5750806020141580156119bd575080601414155b156119d957505060408051602081019091526000815292915050565b61140684600b8361219a565b60006119f284600861226c565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611aea5783600b81518110611a5157611a5161260e565b60209101015160f81c6014141580611ac15750611a7c60028551611a7591906125f7565b859061226c565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15611add57505060408051602081019091526000815292915050565b61140684600c601461219a565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611b87578360018551611b4391906125f7565b81518110611b5357611b5361260e565b60209101015160f81c608714611b7a57505060408051602081019091526000815292915050565b61140684600b601461219a565b505050604080516020810190915260008152919050565b60008080611bac858561226c565b9250611be1611bbb868661227b565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b9150611bed8585611bf6565b90509250925092565b6000806000611c058585612292565b9092509050600019821415611c2057600019925050506113ca565b80611c2c8360256125df565b611c3691906125df565b611c419060046125df565b95945050505050565b6000611c578260096125df565b83511015611c6857506000196113ca565b600080611c7f85611c7a8660086125df565b61201c565b9092509050600019821415611c9a57600019925050506113ca565b80611ca68360096125df565b611c4191906125df565b600060208451611cc09190612864565b15611ccd57506000611406565b8351611cdb57506000611406565b818560005b8651811015611d4b57611cf4600284612864565b60011415611d1957611d12611d0c8883016020015190565b836122d4565b9150611d32565b611d2f82611d2a8984016020015190565b6122d4565b91505b60019290921c91611d446020826125df565b9050611ce0565b5090931495945050505050565b600080611d6683604861226c565b60e81c9050600083604b81518110611d8057611d8061260e565b016020015160f81c90506000611db483600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff1690506000611dc86003846128d0565b60ff169050611dd9816101006129d7565b611de3908361288c565b9695505050505050565b60006113ca7bffff0000000000000000000000000000000000000000000000000000836122e0565b600060508251611e259190612864565b15611e335750600019919050565b506040805160808101909152605081526000908190815b845181101561201457611e5e8583836122ec565b8015611e7e57611e6e828461238b565b611e7e5750600119949350505050565b6000611e8983611d58565b9050611e948361139a565b935080611fd88560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b1115611feb575060021995945050505050565b611ffe611ff782611ded565b86906123b4565b945061200d90506050826125df565b9050611e4a565b505050919050565b600080600061202b8585612412565b905060ff811661205d5760008585815181106120495761204961260e565b016020015190935060f81c91506121939050565b836120698260016128ab565b60ff1661207691906125df565b8551101561208d5760001960009250925050612193565b60008160ff16600214156120d2576120c76120b36120ac8760016125df565b889061226c565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612189565b8160ff16600414156120fc576120ef611bbb6120ac8760016125df565b63ffffffff169050612189565b8160ff16600814156121895761217c6121196120ac8760016125df565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6060816121b657506040805160208101909152600081526108cb565b60006121c283856125df565b905083811180156121d4575080855110155b6122205760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016101c7565b604051915082604083010160405282825283850182038460208701018481015b8082101561225957815183830152602082019150612240565b505050509392505050565b60006113ca82825b60006108cb8383016020015190565b60006108cb61228b8360206125df565b849061226c565b6000806122a08360256125df565b845110156122b5575060001990506000612193565b6000806122c786611c7a8760246125df565b9097909650945050505050565b60006108cb838361249e565b60006108cb8284612878565b815160006122fa82846125df565b9050828111801561230c575080855110155b6123585760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016101c7565b826020860101602085018382015b80831015612381578251825260209283019290910190612366565b5050505050505050565b600080612397846124cc565b90508281146123aa5760009150506113ca565b5060019392505050565b60006123c082846125df565b9050828110156113ca5760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e0000000000000060448201526064016101c7565b60008282815181106124265761242661260e565b60209101015160f81c60ff141561243f575060086113ca565b8282815181106124515761245161260e565b60209101015160f81c60fe141561246a575060046113ca565b82828151811061247c5761247c61260e565b60209101015160f81c60fd1415612495575060026113ca565b50600092915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b60248101516000906113ca565b6000606082840312156124eb57600080fd5b50919050565b600080600080600060e0868803121561250957600080fd5b8535945060208601359350604086013567ffffffffffffffff8082111561252f57600080fd5b908701906080828a03121561254357600080fd5b9093506060870135908082111561255957600080fd5b50612566888289016124d9565b92505061257687608088016124d9565b90509295509295909350565b6000808335601e1984360301811261259957600080fd5b83018035915067ffffffffffffffff8211156125b457600080fd5b60200191503681900382131561219357600080fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156125f2576125f26125c9565b500190565b600082821015612609576126096125c9565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612638576126386125c9565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156126815781516001600160a01b03168452928401929084019060010161265c565b5050508381038285015284518082528583019183019060005b818110156126b65783518352928401929184019160010161269a565b5090979650505050505050565b6000602082840312156126d557600080fd5b5051919050565b6000602082840312156126ee57600080fd5b81356001600160e01b0319811681146108cb57600080fd5b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b634e487b7160e01b600052602160045260246000fd5b803563ffffffff8116811461277257600080fd5b919050565b60006020828403121561278957600080fd5b6108cb8261275e565b803567ffffffffffffffff8116811461277257600080fd5b6000602082840312156127bc57600080fd5b6108cb82612792565b634e487b7160e01b600052604160045260246000fd5b6000606082840312156127ed57600080fd5b6040516060810181811067ffffffffffffffff8211171561281e57634e487b7160e01b600052604160045260246000fd5b604052823581526128316020840161275e565b602082015261284260408401612792565b60408201529392505050565b634e487b7160e01b600052601260045260246000fd5b6000826128735761287361284e565b500690565b6000826128875761288761284e565b500490565b60008160001904831182151516156128a6576128a66125c9565b500290565b600060ff821660ff84168060ff038211156128c8576128c86125c9565b019392505050565b600060ff821660ff8416808210156128ea576128ea6125c9565b90039392505050565b600181815b8085111561292e578160001904821115612914576129146125c9565b8085161561292157918102915b93841c93908002906128f8565b509250929050565b600082612945575060016113ca565b81612952575060006113ca565b816001811461296857600281146129725761298e565b60019150506113ca565b60ff841115612983576129836125c9565b50506001821b6113ca565b5060208310610133831016604e8410600b84101617156129b1575081810a6113ca565b6129bb83836128f3565b80600019048211156129cf576129cf6125c9565b029392505050565b60006108cb838361293656fea264697066735822122004f977a797dfc1176e85be665869f8513b2a4bd3a5678e94b12e054745ba78b064736f6c63430008090033",
26
+ "bytecode": "0x6129ad61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063510fc50a1461003a575b600080fd5b81801561004657600080fd5b5061005a61005536600461248f565b61005c565b005b6000610069858585610485565b90506000806100b861007e6040880188612516565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061077592505050565b915091506000806100ca8985886108a8565b9092509050600061011e8a6100e260208c018c612516565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250610abb915050565b90506000808061014284600001518867ffffffffffffffff168660400151516110a7565b60058f0154919350915068010000000000000000900467ffffffffffffffff1661016c8284612573565b11156101bf5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f2068696768000000000060448201526064015b60405180910390fd5b60005b8460400151518110156102ad57600060018660400151516101e3919061258b565b82146101ef57836101f9565b6101f98385612573565b90508086606001518381518110610212576102126125a2565b602002602001015187604001518481518110610230576102306125a2565b6020026020010151610242919061258b565b61024c919061258b565b86604001518381518110610262576102626125a2565b60200260200101818152505085606001518281518110610284576102846125a2565b6020026020010151856102979190612573565b94505080806102a5906125b8565b9150506101c2565b5060408051602081018b90526000918101919091527fffffffffffffffff00000000000000000000000000000000000000000000000060c089901b166044820152604c0160408051808303601f19018152828252805160209182012060018a01556bffffffffffffffffffffffff198b16835282018b90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a18c54602085015160408087015190517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b039093169263266a123a926103a29290916004016125d3565b600060405180830381600087803b1580156103bc57600080fd5b505af11580156103d0573d6000803e3d6000fd5b505050508c60000160009054906101000a90046001600160a01b03166001600160a01b0316635b86f5998e60040160009054906101000a90046001600160a01b0316856040518363ffffffff1660e01b81526004016104449291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b15801561045e57600080fd5b505af1158015610472573d6000803e3d6000fd5b5050505050505050505050505050505050565b60006104d16104976020850185612516565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110e392505050565b61051d5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f766964656400000060448201526064016101b6565b61056761052d6040850185612516565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119392505050565b6105b35760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f7669646564000060448201526064016101b6565b6106166105c36020850185612657565b6105d06020860186612516565b6105dd6040880188612516565b6105ed60808a0160608b01612657565b60405160200161060296959493929190612681565b604051602081830303815290604052611236565b90506106b161066561062b6040850185612516565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061125d92505050565b61066f8480612516565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086949392505050602086013561126c565b6107235760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e6420747820686173680000000060648201526084016101b6565b61076e846107346040850185612516565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112aa92505050565b9392505050565b600080600061078384611619565b915050806001146107fc5760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f757470757400000000000000000000000000000000000000000060648201526084016101b6565b60006108088582611630565b905061081381611816565b925060006108208261188d565b905080516014146108995760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f766520323020627974657300000000000000000000000000000000000000000060648201526084016101b6565b60208101519450505050915091565b604080516060810182526000808252602082018190529181018290526bffffffffffffffffffffffff198416600090815260158601602052604090206002810154909250600160a01b900460ff16600181600581111561090a5761090a6126c3565b148061092757506002816005811115610925576109256126c3565b145b6109995760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e647320737461746500000000000000000000000000000000000000000060648201526084016101b6565b604080516060810182526000808252602082018190529181019190915260018401549092508015610ab1578085356109d760408801602089016126f2565b6109e76060890160408a01612725565b604051602001610a3c9392919092835260e09190911b6001600160e01b031916602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610a9f5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016101b6565b610aae36869003860186612756565b92505b5050935093915050565b610ae66040518060800160405280600081526020016060815260200160608152602001606081525090565b8151151560008080610af787611619565b90925090506000610b09836001612573565b90508415610b2157610b1c60018361258b565b610b23565b815b67ffffffffffffffff811115610b3b57610b3b612740565b604051908082528060200260200182016040528015610b64578160200160208202803683370190505b50602087018190525167ffffffffffffffff811115610b8557610b85612740565b604051908082528060200260200182016040528015610bae578160200160208202803683370190505b50604087015260208601515167ffffffffffffffff811115610bd257610bd2612740565b604051908082528060200260200182016040528015610bfb578160200160208202803683370190505b5060608701526000805b83811015610faa576000806000610c1c8d87611b46565b92509250925060008e60060160008585604051602001610c5392919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610e91576001810154600160e01b900463ffffffff1615610cee5760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016101b6565b8b6020015151861415610d695760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016101b6565b6001810180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055805460208d015180516001600160a01b039092169188908110610dc257610dc26125a2565b6001600160a01b039290921660209283029190910190910152805460408d01518051600160a01b90920467ffffffffffffffff169188908110610e0757610e076125a2565b6020026020010181815250508b604001518681518110610e2957610e296125a2565b60200260200101518c600001818151610e429190612573565b905250600181015460608d01518051600160a01b90920467ffffffffffffffff169188908110610e7457610e746125a2565b602090810291909101015285610e89816125b8565b965050610f87565b8915158b151514158015610ea557508c5184145b15610f3f578c6040015167ffffffffffffffff168c600001818151610eca9190612573565b915081815250506001995060018f60120160008686604051602001610f0692919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055610f87565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e7075742074797065000000000000000000000000000060448201526064016101b6565b610f918288612573565b9650505050508080610fa2906125b8565b915050610c05565b50600081116110215760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f7369740000000000000000000000000060648201526084016101b6565b8415158615151461109a5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016101b6565b5050505050509392505050565b600080806110b5858761258b565b90506110c184826127df565b9150836110ce838361258b565b6110d891906127f3565b925050935093915050565b60008060006110f184611619565b9092509050801580611104575060001982145b15611113575060009392505050565b6000611120836001612573565b905060005b8281101561118657855182106111415750600095945050505050565b600061114d8784611b9e565b9050600019811415611166575060009695505050505050565b6111708184612573565b925050808061117e906125b8565b915050611125565b5093519093149392505050565b60008060006111a184611619565b90925090508015806111b4575060001982145b156111c3575060009392505050565b60006111d0836001612573565b905060005b8281101561118657855182106111f15750600095945050505050565b60006111fd8784611bf2565b9050600019811415611216575060009695505050505050565b6112208184612573565b925050808061122e906125b8565b9150506111d5565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b60448101516000905b92915050565b6000838514801561127b575081155b801561128657508251155b15611293575060016112a2565b61129f85848685611c58565b90505b949350505050565b6001820154604080517f113764be00000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691600091839163113764be91600480820192602092909190829003018186803b15801561130f57600080fd5b505afa158015611323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113479190612807565b90506000826001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561138457600080fd5b505afa158015611398573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113bc9190612807565b90506000806113d26113cd87611d00565b611d95565b9050838114156113e457839150611462565b828114156113f457829150611462565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c747900000000000000000000000000000000000000000000000000000060648201526084016101b6565b600061146d87611dbd565b90506000198114156114e75760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e000000000000000000000000000000000000000000000000000000000060648201526084016101b6565b6001198114156115395760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e000000000000000000000060448201526064016101b6565b60021981141561158b5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e20612068656164657200000060448201526064016101b6565b600388015461159a9084612820565b81101561160f5760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e0000000000000000000000000060648201526084016101b6565b5050505050505050565b600080611627836000611fc4565b91509150915091565b606060008061163e85611619565b90925090506000198214156116bb5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016101b6565b80841061170a5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016101b6565b600080611718846001612573565b905060005b868110156117a15761172f8883611bf2565b92506000198314156117835760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016101b6565b61178d8383612573565b915080611799816125b8565b91505061171d565b506117ac8782611bf2565b91506000198214156118005760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016101b6565b61180b878284612142565b979650505050505050565b6000806118228361220c565b60c01c905060006112a28264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b60606000826008815181106118a4576118a46125a2565b0160200151835160f89190911c91506118be82600961283f565b60ff16146118dc575050604080516020810190915260008152919050565b826009815181106118ef576118ef6125a2565b016020015160f81c61198d5760028160ff16101561191d575050604080516020810190915260008152919050565b600083600a81518110611932576119326125a2565b016020015160f81c9050611947600283612864565b60ff1681141580611965575080602014158015611965575080601414155b1561198157505060408051602081019091526000815292915050565b6112a284600b83612142565b600061199a846008612214565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611a925783600b815181106119f9576119f96125a2565b60209101015160f81c6014141580611a695750611a2460028551611a1d919061258b565b8590612214565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15611a8557505060408051602081019091526000815292915050565b6112a284600c6014612142565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611b2f578360018551611aeb919061258b565b81518110611afb57611afb6125a2565b60209101015160f81c608714611b2257505060408051602081019091526000815292915050565b6112a284600b6014612142565b505050604080516020810190915260008152919050565b60008080611b548585612214565b9250611b89611b638686612223565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b9150611b958585611b9e565b90509250925092565b6000806000611bad858561223a565b9092509050600019821415611bc85760001992505050611266565b80611bd4836025612573565b611bde9190612573565b611be9906004612573565b95945050505050565b6000611bff826009612573565b83511015611c105750600019611266565b600080611c2785611c22866008612573565b611fc4565b9092509050600019821415611c425760001992505050611266565b80611c4e836009612573565b611be99190612573565b600060208451611c6891906127df565b15611c75575060006112a2565b8351611c83575060006112a2565b818560005b8651811015611cf357611c9c6002846127df565b60011415611cc157611cba611cb48883016020015190565b8361227c565b9150611cda565b611cd782611cd28984016020015190565b61227c565b91505b60019290921c91611cec602082612573565b9050611c88565b5090931495945050505050565b600080611d0e836048612214565b60e81c9050600083604b81518110611d2857611d286125a2565b016020015160f81c90506000611d5c83600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff1690506000611d70600384612864565b60ff169050611d818161010061296b565b611d8b9083612820565b9695505050505050565b60006112667bffff000000000000000000000000000000000000000000000000000083612288565b600060508251611dcd91906127df565b15611ddb5750600019919050565b506040805160808101909152605081526000908190815b8451811015611fbc57611e06858383612294565b8015611e2657611e168284612329565b611e265750600119949350505050565b6000611e3183611d00565b9050611e3c83611236565b935080611f808560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b1115611f93575060021995945050505050565b611fa6611f9f82611d95565b8690612352565b9450611fb59050605082612573565b9050611df2565b505050919050565b6000806000611fd385856123b0565b905060ff8116612005576000858581518110611ff157611ff16125a2565b016020015190935060f81c915061213b9050565b8361201182600161283f565b60ff1661201e9190612573565b85511015612035576000196000925092505061213b565b60008160ff166002141561207a5761206f61205b612054876001612573565b8890612214565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612131565b8160ff16600414156120a457612097611b63612054876001612573565b63ffffffff169050612131565b8160ff1660081415612131576121246120c1612054876001612573565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b60608161215e575060408051602081019091526000815261076e565b600061216a8385612573565b9050838111801561217c575080855110155b6121c85760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016101b6565b604051915082604083010160405282825283850182038460208701018481015b80821015612201578151838301526020820191506121e8565b505050509392505050565b600061126682825b600061076e8383016020015190565b600061076e612233836020612573565b8490612214565b600080612248836025612573565b8451101561225d57506000199050600061213b565b60008061226f86611c22876024612573565b9097909650945050505050565b600061076e838361243c565b600061076e82846127f3565b815160006122a28284612573565b905082811180156122b4575080855110155b6123005760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016101b6565b826020860101602085018382015b8083101561160f57825182526020928301929091019061230e565b6000806123358461246a565b9050828114612348576000915050611266565b5060019392505050565b600061235e8284612573565b9050828110156112665760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e0000000000000060448201526064016101b6565b60008282815181106123c4576123c46125a2565b60209101015160f81c60ff14156123dd57506008611266565b8282815181106123ef576123ef6125a2565b60209101015160f81c60fe141561240857506004611266565b82828151811061241a5761241a6125a2565b60209101015160f81c60fd141561243357506002611266565b50600092915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6024810151600090611266565b60006060828403121561248957600080fd5b50919050565b60008060008060c085870312156124a557600080fd5b84359350602085013567ffffffffffffffff808211156124c457600080fd5b90860190608082890312156124d857600080fd5b909350604086013590808211156124ee57600080fd5b506124fb87828801612477565b92505061250b8660608701612477565b905092959194509250565b6000808335601e1984360301811261252d57600080fd5b83018035915067ffffffffffffffff82111561254857600080fd5b60200191503681900382131561213b57600080fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156125865761258661255d565b500190565b60008282101561259d5761259d61255d565b500390565b634e487b7160e01b600052603260045260246000fd5b60006000198214156125cc576125cc61255d565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156126155781516001600160a01b0316845292840192908401906001016125f0565b5050508381038285015284518082528583019183019060005b8181101561264a5783518352928401929184019160010161262e565b5090979650505050505050565b60006020828403121561266957600080fd5b81356001600160e01b03198116811461076e57600080fd5b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b634e487b7160e01b600052602160045260246000fd5b803563ffffffff811681146126ed57600080fd5b919050565b60006020828403121561270457600080fd5b61076e826126d9565b803567ffffffffffffffff811681146126ed57600080fd5b60006020828403121561273757600080fd5b61076e8261270d565b634e487b7160e01b600052604160045260246000fd5b60006060828403121561276857600080fd5b6040516060810181811067ffffffffffffffff8211171561279957634e487b7160e01b600052604160045260246000fd5b604052823581526127ac602084016126d9565b60208201526127bd6040840161270d565b60408201529392505050565b634e487b7160e01b600052601260045260246000fd5b6000826127ee576127ee6127c9565b500690565b600082612802576128026127c9565b500490565b60006020828403121561281957600080fd5b5051919050565b600081600019048311821515161561283a5761283a61255d565b500290565b600060ff821660ff84168060ff0382111561285c5761285c61255d565b019392505050565b600060ff821660ff84168082101561287e5761287e61255d565b90039392505050565b600181815b808511156128c25781600019048211156128a8576128a861255d565b808516156128b557918102915b93841c939080029061288c565b509250929050565b6000826128d957506001611266565b816128e657506000611266565b81600181146128fc576002811461290657612922565b6001915050611266565b60ff8411156129175761291761255d565b50506001821b611266565b5060208310610133831016604e8410600b8410161715612945575081810a611266565b61294f8383612887565b80600019048211156129635761296361255d565b029392505050565b600061076e83836128ca56fea26469706673582212206283199ec0ad15cb87b04417316bc824d1a835a30d80e2d8771299bd29368d3264736f6c63430008090033",
27
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063510fc50a1461003a575b600080fd5b81801561004657600080fd5b5061005a61005536600461248f565b61005c565b005b6000610069858585610485565b90506000806100b861007e6040880188612516565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061077592505050565b915091506000806100ca8985886108a8565b9092509050600061011e8a6100e260208c018c612516565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250610abb915050565b90506000808061014284600001518867ffffffffffffffff168660400151516110a7565b60058f0154919350915068010000000000000000900467ffffffffffffffff1661016c8284612573565b11156101bf5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f2068696768000000000060448201526064015b60405180910390fd5b60005b8460400151518110156102ad57600060018660400151516101e3919061258b565b82146101ef57836101f9565b6101f98385612573565b90508086606001518381518110610212576102126125a2565b602002602001015187604001518481518110610230576102306125a2565b6020026020010151610242919061258b565b61024c919061258b565b86604001518381518110610262576102626125a2565b60200260200101818152505085606001518281518110610284576102846125a2565b6020026020010151856102979190612573565b94505080806102a5906125b8565b9150506101c2565b5060408051602081018b90526000918101919091527fffffffffffffffff00000000000000000000000000000000000000000000000060c089901b166044820152604c0160408051808303601f19018152828252805160209182012060018a01556bffffffffffffffffffffffff198b16835282018b90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a18c54602085015160408087015190517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b039093169263266a123a926103a29290916004016125d3565b600060405180830381600087803b1580156103bc57600080fd5b505af11580156103d0573d6000803e3d6000fd5b505050508c60000160009054906101000a90046001600160a01b03166001600160a01b0316635b86f5998e60040160009054906101000a90046001600160a01b0316856040518363ffffffff1660e01b81526004016104449291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b15801561045e57600080fd5b505af1158015610472573d6000803e3d6000fd5b5050505050505050505050505050505050565b60006104d16104976020850185612516565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110e392505050565b61051d5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f766964656400000060448201526064016101b6565b61056761052d6040850185612516565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119392505050565b6105b35760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f7669646564000060448201526064016101b6565b6106166105c36020850185612657565b6105d06020860186612516565b6105dd6040880188612516565b6105ed60808a0160608b01612657565b60405160200161060296959493929190612681565b604051602081830303815290604052611236565b90506106b161066561062b6040850185612516565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061125d92505050565b61066f8480612516565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086949392505050602086013561126c565b6107235760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e6420747820686173680000000060648201526084016101b6565b61076e846107346040850185612516565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112aa92505050565b9392505050565b600080600061078384611619565b915050806001146107fc5760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f757470757400000000000000000000000000000000000000000060648201526084016101b6565b60006108088582611630565b905061081381611816565b925060006108208261188d565b905080516014146108995760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f766520323020627974657300000000000000000000000000000000000000000060648201526084016101b6565b60208101519450505050915091565b604080516060810182526000808252602082018190529181018290526bffffffffffffffffffffffff198416600090815260158601602052604090206002810154909250600160a01b900460ff16600181600581111561090a5761090a6126c3565b148061092757506002816005811115610925576109256126c3565b145b6109995760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e647320737461746500000000000000000000000000000000000000000060648201526084016101b6565b604080516060810182526000808252602082018190529181019190915260018401549092508015610ab1578085356109d760408801602089016126f2565b6109e76060890160408a01612725565b604051602001610a3c9392919092835260e09190911b6001600160e01b031916602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610a9f5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016101b6565b610aae36869003860186612756565b92505b5050935093915050565b610ae66040518060800160405280600081526020016060815260200160608152602001606081525090565b8151151560008080610af787611619565b90925090506000610b09836001612573565b90508415610b2157610b1c60018361258b565b610b23565b815b67ffffffffffffffff811115610b3b57610b3b612740565b604051908082528060200260200182016040528015610b64578160200160208202803683370190505b50602087018190525167ffffffffffffffff811115610b8557610b85612740565b604051908082528060200260200182016040528015610bae578160200160208202803683370190505b50604087015260208601515167ffffffffffffffff811115610bd257610bd2612740565b604051908082528060200260200182016040528015610bfb578160200160208202803683370190505b5060608701526000805b83811015610faa576000806000610c1c8d87611b46565b92509250925060008e60060160008585604051602001610c5392919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610e91576001810154600160e01b900463ffffffff1615610cee5760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016101b6565b8b6020015151861415610d695760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016101b6565b6001810180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055805460208d015180516001600160a01b039092169188908110610dc257610dc26125a2565b6001600160a01b039290921660209283029190910190910152805460408d01518051600160a01b90920467ffffffffffffffff169188908110610e0757610e076125a2565b6020026020010181815250508b604001518681518110610e2957610e296125a2565b60200260200101518c600001818151610e429190612573565b905250600181015460608d01518051600160a01b90920467ffffffffffffffff169188908110610e7457610e746125a2565b602090810291909101015285610e89816125b8565b965050610f87565b8915158b151514158015610ea557508c5184145b15610f3f578c6040015167ffffffffffffffff168c600001818151610eca9190612573565b915081815250506001995060018f60120160008686604051602001610f0692919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055610f87565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e7075742074797065000000000000000000000000000060448201526064016101b6565b610f918288612573565b9650505050508080610fa2906125b8565b915050610c05565b50600081116110215760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f7369740000000000000000000000000060648201526084016101b6565b8415158615151461109a5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016101b6565b5050505050509392505050565b600080806110b5858761258b565b90506110c184826127df565b9150836110ce838361258b565b6110d891906127f3565b925050935093915050565b60008060006110f184611619565b9092509050801580611104575060001982145b15611113575060009392505050565b6000611120836001612573565b905060005b8281101561118657855182106111415750600095945050505050565b600061114d8784611b9e565b9050600019811415611166575060009695505050505050565b6111708184612573565b925050808061117e906125b8565b915050611125565b5093519093149392505050565b60008060006111a184611619565b90925090508015806111b4575060001982145b156111c3575060009392505050565b60006111d0836001612573565b905060005b8281101561118657855182106111f15750600095945050505050565b60006111fd8784611bf2565b9050600019811415611216575060009695505050505050565b6112208184612573565b925050808061122e906125b8565b9150506111d5565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b60448101516000905b92915050565b6000838514801561127b575081155b801561128657508251155b15611293575060016112a2565b61129f85848685611c58565b90505b949350505050565b6001820154604080517f113764be00000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691600091839163113764be91600480820192602092909190829003018186803b15801561130f57600080fd5b505afa158015611323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113479190612807565b90506000826001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561138457600080fd5b505afa158015611398573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113bc9190612807565b90506000806113d26113cd87611d00565b611d95565b9050838114156113e457839150611462565b828114156113f457829150611462565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c747900000000000000000000000000000000000000000000000000000060648201526084016101b6565b600061146d87611dbd565b90506000198114156114e75760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e000000000000000000000000000000000000000000000000000000000060648201526084016101b6565b6001198114156115395760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e000000000000000000000060448201526064016101b6565b60021981141561158b5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e20612068656164657200000060448201526064016101b6565b600388015461159a9084612820565b81101561160f5760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e0000000000000000000000000060648201526084016101b6565b5050505050505050565b600080611627836000611fc4565b91509150915091565b606060008061163e85611619565b90925090506000198214156116bb5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016101b6565b80841061170a5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016101b6565b600080611718846001612573565b905060005b868110156117a15761172f8883611bf2565b92506000198314156117835760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016101b6565b61178d8383612573565b915080611799816125b8565b91505061171d565b506117ac8782611bf2565b91506000198214156118005760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016101b6565b61180b878284612142565b979650505050505050565b6000806118228361220c565b60c01c905060006112a28264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b60606000826008815181106118a4576118a46125a2565b0160200151835160f89190911c91506118be82600961283f565b60ff16146118dc575050604080516020810190915260008152919050565b826009815181106118ef576118ef6125a2565b016020015160f81c61198d5760028160ff16101561191d575050604080516020810190915260008152919050565b600083600a81518110611932576119326125a2565b016020015160f81c9050611947600283612864565b60ff1681141580611965575080602014158015611965575080601414155b1561198157505060408051602081019091526000815292915050565b6112a284600b83612142565b600061199a846008612214565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611a925783600b815181106119f9576119f96125a2565b60209101015160f81c6014141580611a695750611a2460028551611a1d919061258b565b8590612214565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15611a8557505060408051602081019091526000815292915050565b6112a284600c6014612142565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611b2f578360018551611aeb919061258b565b81518110611afb57611afb6125a2565b60209101015160f81c608714611b2257505060408051602081019091526000815292915050565b6112a284600b6014612142565b505050604080516020810190915260008152919050565b60008080611b548585612214565b9250611b89611b638686612223565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b9150611b958585611b9e565b90509250925092565b6000806000611bad858561223a565b9092509050600019821415611bc85760001992505050611266565b80611bd4836025612573565b611bde9190612573565b611be9906004612573565b95945050505050565b6000611bff826009612573565b83511015611c105750600019611266565b600080611c2785611c22866008612573565b611fc4565b9092509050600019821415611c425760001992505050611266565b80611c4e836009612573565b611be99190612573565b600060208451611c6891906127df565b15611c75575060006112a2565b8351611c83575060006112a2565b818560005b8651811015611cf357611c9c6002846127df565b60011415611cc157611cba611cb48883016020015190565b8361227c565b9150611cda565b611cd782611cd28984016020015190565b61227c565b91505b60019290921c91611cec602082612573565b9050611c88565b5090931495945050505050565b600080611d0e836048612214565b60e81c9050600083604b81518110611d2857611d286125a2565b016020015160f81c90506000611d5c83600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff1690506000611d70600384612864565b60ff169050611d818161010061296b565b611d8b9083612820565b9695505050505050565b60006112667bffff000000000000000000000000000000000000000000000000000083612288565b600060508251611dcd91906127df565b15611ddb5750600019919050565b506040805160808101909152605081526000908190815b8451811015611fbc57611e06858383612294565b8015611e2657611e168284612329565b611e265750600119949350505050565b6000611e3183611d00565b9050611e3c83611236565b935080611f808560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b1115611f93575060021995945050505050565b611fa6611f9f82611d95565b8690612352565b9450611fb59050605082612573565b9050611df2565b505050919050565b6000806000611fd385856123b0565b905060ff8116612005576000858581518110611ff157611ff16125a2565b016020015190935060f81c915061213b9050565b8361201182600161283f565b60ff1661201e9190612573565b85511015612035576000196000925092505061213b565b60008160ff166002141561207a5761206f61205b612054876001612573565b8890612214565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612131565b8160ff16600414156120a457612097611b63612054876001612573565b63ffffffff169050612131565b8160ff1660081415612131576121246120c1612054876001612573565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b60608161215e575060408051602081019091526000815261076e565b600061216a8385612573565b9050838111801561217c575080855110155b6121c85760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016101b6565b604051915082604083010160405282825283850182038460208701018481015b80821015612201578151838301526020820191506121e8565b505050509392505050565b600061126682825b600061076e8383016020015190565b600061076e612233836020612573565b8490612214565b600080612248836025612573565b8451101561225d57506000199050600061213b565b60008061226f86611c22876024612573565b9097909650945050505050565b600061076e838361243c565b600061076e82846127f3565b815160006122a28284612573565b905082811180156122b4575080855110155b6123005760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016101b6565b826020860101602085018382015b8083101561160f57825182526020928301929091019061230e565b6000806123358461246a565b9050828114612348576000915050611266565b5060019392505050565b600061235e8284612573565b9050828110156112665760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e0000000000000060448201526064016101b6565b60008282815181106123c4576123c46125a2565b60209101015160f81c60ff14156123dd57506008611266565b8282815181106123ef576123ef6125a2565b60209101015160f81c60fe141561240857506004611266565b82828151811061241a5761241a6125a2565b60209101015160f81c60fd141561243357506002611266565b50600092915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6024810151600090611266565b60006060828403121561248957600080fd5b50919050565b60008060008060c085870312156124a557600080fd5b84359350602085013567ffffffffffffffff808211156124c457600080fd5b90860190608082890312156124d857600080fd5b909350604086013590808211156124ee57600080fd5b506124fb87828801612477565b92505061250b8660608701612477565b905092959194509250565b6000808335601e1984360301811261252d57600080fd5b83018035915067ffffffffffffffff82111561254857600080fd5b60200191503681900382131561213b57600080fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156125865761258661255d565b500190565b60008282101561259d5761259d61255d565b500390565b634e487b7160e01b600052603260045260246000fd5b60006000198214156125cc576125cc61255d565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156126155781516001600160a01b0316845292840192908401906001016125f0565b5050508381038285015284518082528583019183019060005b8181101561264a5783518352928401929184019160010161262e565b5090979650505050505050565b60006020828403121561266957600080fd5b81356001600160e01b03198116811461076e57600080fd5b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b634e487b7160e01b600052602160045260246000fd5b803563ffffffff811681146126ed57600080fd5b919050565b60006020828403121561270457600080fd5b61076e826126d9565b803567ffffffffffffffff811681146126ed57600080fd5b60006020828403121561273757600080fd5b61076e8261270d565b634e487b7160e01b600052604160045260246000fd5b60006060828403121561276857600080fd5b6040516060810181811067ffffffffffffffff8211171561279957634e487b7160e01b600052604160045260246000fd5b604052823581526127ac602084016126d9565b60208201526127bd6040840161270d565b60408201529392505050565b634e487b7160e01b600052601260045260246000fd5b6000826127ee576127ee6127c9565b500690565b600082612802576128026127c9565b500490565b60006020828403121561281957600080fd5b5051919050565b600081600019048311821515161561283a5761283a61255d565b500290565b600060ff821660ff84168060ff0382111561285c5761285c61255d565b019392505050565b600060ff821660ff84168082101561287e5761287e61255d565b90039392505050565b600181815b808511156128c25781600019048211156128a8576128a861255d565b808516156128b557918102915b93841c939080029061288c565b509250929050565b6000826128d957506001611266565b816128e657506000611266565b81600181146128fc576002811461290657612922565b6001915050611266565b60ff8411156129175761291761255d565b50506001821b611266565b5060208310610133831016604e8410600b8410161715612945575081810a611266565b61294f8383612887565b80600019048211156129635761296361255d565b029392505050565b600061076e83836128ca56fea26469706673582212206283199ec0ad15cb87b04417316bc824d1a835a30d80e2d8771299bd29368d3264736f6c63430008090033",
28
28
  "linkReferences": {},
29
29
  "deployedLinkReferences": {}
30
30
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/3897cfda8663993459ea8ae2e7c2a99e.json"
3
+ "buildInfo": "../../../build-info/d1177ad948c90274b8487bcd633aa8a4.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/3897cfda8663993459ea8ae2e7c2a99e.json"
3
+ "buildInfo": "../../../build-info/d1177ad948c90274b8487bcd633aa8a4.json"
4
4
  }
@@ -28,25 +28,6 @@
28
28
  "name": "NewWalletRequested",
29
29
  "type": "event"
30
30
  },
31
- {
32
- "anonymous": false,
33
- "inputs": [
34
- {
35
- "indexed": false,
36
- "internalType": "uint64",
37
- "name": "newMinBtcBalance",
38
- "type": "uint64"
39
- },
40
- {
41
- "indexed": false,
42
- "internalType": "uint64",
43
- "name": "newMaxBtcBalance",
44
- "type": "uint64"
45
- }
46
- ],
47
- "name": "WalletBtcBalanceRangeUpdated",
48
- "type": "event"
49
- },
50
31
  {
51
32
  "anonymous": false,
52
33
  "inputs": [
@@ -70,26 +51,19 @@
70
51
  "anonymous": false,
71
52
  "inputs": [
72
53
  {
73
- "indexed": false,
74
- "internalType": "uint32",
75
- "name": "newCreationPeriod",
76
- "type": "uint32"
77
- }
78
- ],
79
- "name": "WalletCreationPeriodUpdated",
80
- "type": "event"
81
- },
82
- {
83
- "anonymous": false,
84
- "inputs": [
54
+ "indexed": true,
55
+ "internalType": "bytes32",
56
+ "name": "ecdsaWalletID",
57
+ "type": "bytes32"
58
+ },
85
59
  {
86
- "indexed": false,
87
- "internalType": "uint32",
88
- "name": "newMaxAge",
89
- "type": "uint32"
60
+ "indexed": true,
61
+ "internalType": "bytes20",
62
+ "name": "walletPubKeyHash",
63
+ "type": "bytes20"
90
64
  }
91
65
  ],
92
- "name": "WalletMaxAgeUpdated",
66
+ "name": "WalletClosing",
93
67
  "type": "event"
94
68
  },
95
69
  {
@@ -131,8 +105,8 @@
131
105
  "type": "event"
132
106
  }
133
107
  ],
134
- "bytecode": "0x61190761003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100d35760003560e01c806365951fcf1161008b578063b4e671f411610065578063b4e671f4146101da578063ea2a3dcc146101fa578063f832341d1461021a57600080fd5b806365951fcf1461017a5780639655f02b1461019a578063998b564c146101ba57600080fd5b806335e741c9116100bc57806335e741c91461011a57806345d9969c1461013a5780634fd7d4861461015a57600080fd5b8063041aee99146100d85780631803c09e146100fa575b600080fd5b8180156100e457600080fd5b506100f86100f336600461160b565b61023a565b005b81801561010657600080fd5b506100f8610115366004611637565b6102ab565b81801561012657600080fd5b506100f861013536600461167b565b6103d3565b81801561014657600080fd5b506100f861015536600461160b565b610589565b81801561016657600080fd5b506100f86101753660046116b0565b6105e9565b81801561018657600080fd5b506100f86101953660046116e2565b6107bb565b8180156101a657600080fd5b506100f86101b536600461171d565b6108b0565b8180156101c657600080fd5b506100f86101d5366004611772565b610abe565b8180156101e657600080fd5b506100f86101f53660046117a5565b610c55565b81801561020657600080fd5b506100f86102153660046116e2565b610f4a565b81801561022657600080fd5b506100f86102353660046117c9565b611020565b81547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff83169081029190911783556040519081527f0c96a98792be84d818dd96f4167766ce3fbb8fdbfece805d7c2ec87873797b62906020015b60405180910390a15050565b82546001600160a01b031633146103195760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b60648201526084015b60405180910390fd5b600061032d610328848461114f565b6111f9565b905060016001600160601b031982166000908152600286810160205260409091200154600160801b900460ff16600481111561036b5761036b611805565b146103c35760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610310565b6103cd8482611220565b50505050565b6001600160601b03198216600090815260028085016020526040909120906002820154600160801b900460ff16600481111561041157610411611805565b146104845760405162461bcd60e51b815260206004820152602960248201527f45434453412077616c6c6574206d75737420626520696e204d6f76696e67467560448201527f6e647320737461746500000000000000000000000000000000000000000000006064820152608401610310565b6003810154806104fc5760405162461bcd60e51b815260206004820152602b60248201527f5461726765742077616c6c65747320636f6d6d69746d656e74206e6f7420737560448201527f626d6974746564207965740000000000000000000000000000000000000000006064820152608401610310565b8281146105715760405162461bcd60e51b815260206004820152603160248201527f5461726765742077616c6c65747320646f6e277420636f72726573706f6e642060448201527f746f2074686520636f6d6d69746d656e740000000000000000000000000000006064820152608401610310565b600060018301556105828585611315565b5050505050565b6001820180546bffffffff000000000000000019166801000000000000000063ffffffff8416908102919091179091556040519081527fb9680823827cf58b566fd60a2a37e51011531b53fa90ff8f109d6d94921dde009060200161029f565b83546001600160a01b031633146106525760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610310565b6000610661610328848461114f565b6001600160601b03198116600090815260028701602052604081209192506002820154600160801b900460ff16600481111561069f5761069f611805565b146107125760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610310565b848155600281018054600160801b7fffffffffffffffffffffffffffffff00ffffffff00000000ffffffffffffffff909116680100000000000000004263ffffffff1602171790556001860180546bffffffffffffffffffffffff16600160601b606085901c021790556040516001600160601b031983169086907f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e90600090a3505050505050565b6001600160601b031981166000908152600283810160205260409091200154600160801b900460ff1660018160048111156107f8576107f8611805565b14806108155750600281600481111561081357610813611805565b145b6108875760405162461bcd60e51b815260206004820152603160248201527f45434453412077616c6c6574206d75737420626520696e204c697665206f722060448201527f4d6f76696e6746756e64732073746174650000000000000000000000000000006064820152608401610310565b600181600481111561089b5761089b611805565b14156108ab576108ab8383611220565b505050565b60018301546001600160601b0319838116600160601b90920460601b1614156109415760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c6500000000000000000000000000000000000000006064820152608401610310565b6001600160601b031982166000908152600284016020526040902060016002820154600160801b900460ff16600481111561097e5761097e611805565b146109d65760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610310565b60018401546002820154600091610a069163ffffffff68010000000000000000928390048116929091041661181b565b63ffffffff1642101590508080610a4257508454600160c01b900467ffffffffffffffff16610a368686866113da565b67ffffffffffffffff16105b610ab45760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610310565b6105828585611220565b60008267ffffffffffffffff1611610b3e5760405162461bcd60e51b815260206004820152602160248201527f4d696e696d756d206d7573742062652067726561746572207468616e207a657260448201527f6f000000000000000000000000000000000000000000000000000000000000006064820152608401610310565b8167ffffffffffffffff168167ffffffffffffffff1611610bc75760405162461bcd60e51b815260206004820152602860248201527f4d6178696d756d206d7573742062652067726561746572207468616e2074686560448201527f206d696e696d756d0000000000000000000000000000000000000000000000006064820152608401610310565b825477ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b67ffffffffffffffff84811691820292909217855560018501805467ffffffffffffffff191692841692831790556040805191825260208201929092527f93f75d2a1ad31d60f2381eb935c4b4d8743c9607d7bfaeabeffc62fbf4e21182910160405180910390a1505050565b8154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b158015610cb257600080fd5b505afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea9190611851565b6003811115610cfb57610cfb611805565b14610d6e5760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610310565b6001820154600160601b900460601b6001600160601b0319811615610ea6576000610d9a8483856113da565b6001600160601b0319831660009081526002808701602052604082200154865492935063ffffffff68010000000000000000909104811692610de591600160a01b909104168361181b565b63ffffffff164210159050808015610e135750855467ffffffffffffffff600160c01b909104811690841610155b80610e305750600186015467ffffffffffffffff90811690841610155b610ea25760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610310565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18254604080517f72cc8c6d00000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216916372cc8c6d9160048082019260009290919082900301818387803b158015610f2d57600080fd5b505af1158015610f41573d6000803e3d6000fd5b50505050505050565b6001600160601b031981166000908152600283810160205260409091200154600160801b900460ff166001816004811115610f8757610f87611805565b1480610fa457506002816004811115610fa257610fa2611805565b145b6110165760405162461bcd60e51b815260206004820152603160248201527f45434453412077616c6c6574206d75737420626520696e204c697665206f722060448201527f4d6f76696e6746756e64732073746174650000000000000000000000000000006064820152608401610310565b6108ab838361150d565b6001600160a01b03811661109c5760405162461bcd60e51b815260206004820152602c60248201527f45434453412057616c6c6574205265676973747279206164647265737320636160448201527f6e6e6f74206265207a65726f00000000000000000000000000000000000000006064820152608401610310565b81546001600160a01b03161561111a5760405162461bcd60e51b815260206004820152602960248201527f45434453412057616c6c6574205265676973747279206164647265737320616c60448201527f72656164792073657400000000000000000000000000000000000000000000006064820152608401610310565b81547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0391909116179055565b6060600061115e600284611879565b61118957507f02000000000000000000000000000000000000000000000000000000000000006111ac565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6001600160601b031981166000908152600283016020526040902060018101546112535761124e8383611315565b6112d9565b60028101805463ffffffff4216600160601b027fffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff9091161770020000000000000000000000000000000017905580546040516001600160601b0319841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b60018301546001600160601b0319838116600160601b90920460601b1614156108ab57505060010180546bffffffffffffffffffffffff169055565b6001600160601b03198116600081815260028481016020526040808320918201805470ff0000000000000000000000000000000019167003000000000000000000000000000000001790558154905191939290917f47b159947c3066cb253f60e8f046cfd747411788a545cb189679e3fa1467b28d9190a38254815460405163343bb92760e01b81526001600160a01b039092169163343bb927916113c09160040190815260200190565b600060405180830381600087803b158015610f2d57600080fd5b6001600160601b031982166000908152600284016020526040812060010154801561150557808335611412604086016020870161189b565b61142260608701604088016118b6565b60405160200161148f9392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b60405160208183030381529060405280519060200120146114f25760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610310565b61150260608401604085016118b6565b91505b509392505050565b6001600160601b03198116600081815260028481016020526040808320918201805470ff0000000000000000000000000000000019167004000000000000000000000000000000001790558154905191939290917f9272a280b0f32f70b00ad0b546499c68e3ecc6f7bb7ef43491ec5d7b99bf69ef9190a360018301546001600160601b0319838116600160601b90920460601b1614156115bf576001830180546bffffffffffffffffffffffff1690555b8254815460405163343bb92760e01b81526001600160a01b039092169163343bb927916113c09160040190815260200190565b803563ffffffff8116811461160657600080fd5b919050565b6000806040838503121561161e57600080fd5b8235915061162e602084016115f2565b90509250929050565b60008060006060848603121561164c57600080fd5b505081359360208301359350604090920135919050565b80356001600160601b03198116811461160657600080fd5b60008060006060848603121561169057600080fd5b833592506116a060208501611663565b9150604084013590509250925092565b600080600080608085870312156116c657600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156116f557600080fd5b8235915061162e60208401611663565b60006060828403121561171757600080fd5b50919050565b600080600060a0848603121561173257600080fd5b8335925061174260208501611663565b91506117518560408601611705565b90509250925092565b803567ffffffffffffffff8116811461160657600080fd5b60008060006060848603121561178757600080fd5b833592506117976020850161175a565b91506117516040850161175a565b600080608083850312156117b857600080fd5b8235915061162e8460208501611705565b600080604083850312156117dc57600080fd5b8235915060208301356001600160a01b03811681146117fa57600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b600063ffffffff80831681851680830382111561184857634e487b7160e01b600052601160045260246000fd5b01949350505050565b60006020828403121561186357600080fd5b81516004811061187257600080fd5b9392505050565b60008261189657634e487b7160e01b600052601260045260246000fd5b500690565b6000602082840312156118ad57600080fd5b611872826115f2565b6000602082840312156118c857600080fd5b6118728261175a56fea26469706673582212207e53aad72fb4c3298c73e60f03e3909617a4d5db8da1841ba7b9dc8a3b8884af64736f6c63430008090033",
135
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100d35760003560e01c806365951fcf1161008b578063b4e671f411610065578063b4e671f4146101da578063ea2a3dcc146101fa578063f832341d1461021a57600080fd5b806365951fcf1461017a5780639655f02b1461019a578063998b564c146101ba57600080fd5b806335e741c9116100bc57806335e741c91461011a57806345d9969c1461013a5780634fd7d4861461015a57600080fd5b8063041aee99146100d85780631803c09e146100fa575b600080fd5b8180156100e457600080fd5b506100f86100f336600461160b565b61023a565b005b81801561010657600080fd5b506100f8610115366004611637565b6102ab565b81801561012657600080fd5b506100f861013536600461167b565b6103d3565b81801561014657600080fd5b506100f861015536600461160b565b610589565b81801561016657600080fd5b506100f86101753660046116b0565b6105e9565b81801561018657600080fd5b506100f86101953660046116e2565b6107bb565b8180156101a657600080fd5b506100f86101b536600461171d565b6108b0565b8180156101c657600080fd5b506100f86101d5366004611772565b610abe565b8180156101e657600080fd5b506100f86101f53660046117a5565b610c55565b81801561020657600080fd5b506100f86102153660046116e2565b610f4a565b81801561022657600080fd5b506100f86102353660046117c9565b611020565b81547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff83169081029190911783556040519081527f0c96a98792be84d818dd96f4167766ce3fbb8fdbfece805d7c2ec87873797b62906020015b60405180910390a15050565b82546001600160a01b031633146103195760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b60648201526084015b60405180910390fd5b600061032d610328848461114f565b6111f9565b905060016001600160601b031982166000908152600286810160205260409091200154600160801b900460ff16600481111561036b5761036b611805565b146103c35760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610310565b6103cd8482611220565b50505050565b6001600160601b03198216600090815260028085016020526040909120906002820154600160801b900460ff16600481111561041157610411611805565b146104845760405162461bcd60e51b815260206004820152602960248201527f45434453412077616c6c6574206d75737420626520696e204d6f76696e67467560448201527f6e647320737461746500000000000000000000000000000000000000000000006064820152608401610310565b6003810154806104fc5760405162461bcd60e51b815260206004820152602b60248201527f5461726765742077616c6c65747320636f6d6d69746d656e74206e6f7420737560448201527f626d6974746564207965740000000000000000000000000000000000000000006064820152608401610310565b8281146105715760405162461bcd60e51b815260206004820152603160248201527f5461726765742077616c6c65747320646f6e277420636f72726573706f6e642060448201527f746f2074686520636f6d6d69746d656e740000000000000000000000000000006064820152608401610310565b600060018301556105828585611315565b5050505050565b6001820180546bffffffff000000000000000019166801000000000000000063ffffffff8416908102919091179091556040519081527fb9680823827cf58b566fd60a2a37e51011531b53fa90ff8f109d6d94921dde009060200161029f565b83546001600160a01b031633146106525760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610310565b6000610661610328848461114f565b6001600160601b03198116600090815260028701602052604081209192506002820154600160801b900460ff16600481111561069f5761069f611805565b146107125760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610310565b848155600281018054600160801b7fffffffffffffffffffffffffffffff00ffffffff00000000ffffffffffffffff909116680100000000000000004263ffffffff1602171790556001860180546bffffffffffffffffffffffff16600160601b606085901c021790556040516001600160601b031983169086907f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e90600090a3505050505050565b6001600160601b031981166000908152600283810160205260409091200154600160801b900460ff1660018160048111156107f8576107f8611805565b14806108155750600281600481111561081357610813611805565b145b6108875760405162461bcd60e51b815260206004820152603160248201527f45434453412077616c6c6574206d75737420626520696e204c697665206f722060448201527f4d6f76696e6746756e64732073746174650000000000000000000000000000006064820152608401610310565b600181600481111561089b5761089b611805565b14156108ab576108ab8383611220565b505050565b60018301546001600160601b0319838116600160601b90920460601b1614156109415760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c6500000000000000000000000000000000000000006064820152608401610310565b6001600160601b031982166000908152600284016020526040902060016002820154600160801b900460ff16600481111561097e5761097e611805565b146109d65760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610310565b60018401546002820154600091610a069163ffffffff68010000000000000000928390048116929091041661181b565b63ffffffff1642101590508080610a4257508454600160c01b900467ffffffffffffffff16610a368686866113da565b67ffffffffffffffff16105b610ab45760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610310565b6105828585611220565b60008267ffffffffffffffff1611610b3e5760405162461bcd60e51b815260206004820152602160248201527f4d696e696d756d206d7573742062652067726561746572207468616e207a657260448201527f6f000000000000000000000000000000000000000000000000000000000000006064820152608401610310565b8167ffffffffffffffff168167ffffffffffffffff1611610bc75760405162461bcd60e51b815260206004820152602860248201527f4d6178696d756d206d7573742062652067726561746572207468616e2074686560448201527f206d696e696d756d0000000000000000000000000000000000000000000000006064820152608401610310565b825477ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b67ffffffffffffffff84811691820292909217855560018501805467ffffffffffffffff191692841692831790556040805191825260208201929092527f93f75d2a1ad31d60f2381eb935c4b4d8743c9607d7bfaeabeffc62fbf4e21182910160405180910390a1505050565b8154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b158015610cb257600080fd5b505afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea9190611851565b6003811115610cfb57610cfb611805565b14610d6e5760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610310565b6001820154600160601b900460601b6001600160601b0319811615610ea6576000610d9a8483856113da565b6001600160601b0319831660009081526002808701602052604082200154865492935063ffffffff68010000000000000000909104811692610de591600160a01b909104168361181b565b63ffffffff164210159050808015610e135750855467ffffffffffffffff600160c01b909104811690841610155b80610e305750600186015467ffffffffffffffff90811690841610155b610ea25760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610310565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18254604080517f72cc8c6d00000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216916372cc8c6d9160048082019260009290919082900301818387803b158015610f2d57600080fd5b505af1158015610f41573d6000803e3d6000fd5b50505050505050565b6001600160601b031981166000908152600283810160205260409091200154600160801b900460ff166001816004811115610f8757610f87611805565b1480610fa457506002816004811115610fa257610fa2611805565b145b6110165760405162461bcd60e51b815260206004820152603160248201527f45434453412077616c6c6574206d75737420626520696e204c697665206f722060448201527f4d6f76696e6746756e64732073746174650000000000000000000000000000006064820152608401610310565b6108ab838361150d565b6001600160a01b03811661109c5760405162461bcd60e51b815260206004820152602c60248201527f45434453412057616c6c6574205265676973747279206164647265737320636160448201527f6e6e6f74206265207a65726f00000000000000000000000000000000000000006064820152608401610310565b81546001600160a01b03161561111a5760405162461bcd60e51b815260206004820152602960248201527f45434453412057616c6c6574205265676973747279206164647265737320616c60448201527f72656164792073657400000000000000000000000000000000000000000000006064820152608401610310565b81547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0391909116179055565b6060600061115e600284611879565b61118957507f02000000000000000000000000000000000000000000000000000000000000006111ac565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6001600160601b031981166000908152600283016020526040902060018101546112535761124e8383611315565b6112d9565b60028101805463ffffffff4216600160601b027fffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff9091161770020000000000000000000000000000000017905580546040516001600160601b0319841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b60018301546001600160601b0319838116600160601b90920460601b1614156108ab57505060010180546bffffffffffffffffffffffff169055565b6001600160601b03198116600081815260028481016020526040808320918201805470ff0000000000000000000000000000000019167003000000000000000000000000000000001790558154905191939290917f47b159947c3066cb253f60e8f046cfd747411788a545cb189679e3fa1467b28d9190a38254815460405163343bb92760e01b81526001600160a01b039092169163343bb927916113c09160040190815260200190565b600060405180830381600087803b158015610f2d57600080fd5b6001600160601b031982166000908152600284016020526040812060010154801561150557808335611412604086016020870161189b565b61142260608701604088016118b6565b60405160200161148f9392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b60405160208183030381529060405280519060200120146114f25760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610310565b61150260608401604085016118b6565b91505b509392505050565b6001600160601b03198116600081815260028481016020526040808320918201805470ff0000000000000000000000000000000019167004000000000000000000000000000000001790558154905191939290917f9272a280b0f32f70b00ad0b546499c68e3ecc6f7bb7ef43491ec5d7b99bf69ef9190a360018301546001600160601b0319838116600160601b90920460601b1614156115bf576001830180546bffffffffffffffffffffffff1690555b8254815460405163343bb92760e01b81526001600160a01b039092169163343bb927916113c09160040190815260200190565b803563ffffffff8116811461160657600080fd5b919050565b6000806040838503121561161e57600080fd5b8235915061162e602084016115f2565b90509250929050565b60008060006060848603121561164c57600080fd5b505081359360208301359350604090920135919050565b80356001600160601b03198116811461160657600080fd5b60008060006060848603121561169057600080fd5b833592506116a060208501611663565b9150604084013590509250925092565b600080600080608085870312156116c657600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156116f557600080fd5b8235915061162e60208401611663565b60006060828403121561171757600080fd5b50919050565b600080600060a0848603121561173257600080fd5b8335925061174260208501611663565b91506117518560408601611705565b90509250925092565b803567ffffffffffffffff8116811461160657600080fd5b60008060006060848603121561178757600080fd5b833592506117976020850161175a565b91506117516040850161175a565b600080608083850312156117b857600080fd5b8235915061162e8460208501611705565b600080604083850312156117dc57600080fd5b8235915060208301356001600160a01b03811681146117fa57600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b600063ffffffff80831681851680830382111561184857634e487b7160e01b600052601160045260246000fd5b01949350505050565b60006020828403121561186357600080fd5b81516004811061187257600080fd5b9392505050565b60008261189657634e487b7160e01b600052601260045260246000fd5b500690565b6000602082840312156118ad57600080fd5b611872826115f2565b6000602082840312156118c857600080fd5b6118728261175a56fea26469706673582212207e53aad72fb4c3298c73e60f03e3909617a4d5db8da1841ba7b9dc8a3b8884af64736f6c63430008090033",
108
+ "bytecode": "0x610fb261003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80634afbe4c91461005b57806399b0b8471461007d578063c87de7f41461009d578063d079fbb1146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004610d56565b6100dd565b005b81801561008957600080fd5b5061007b610098366004610da0565b610305565b8180156100a957600080fd5b5061007b6100b8366004610df1565b610526565b8180156100c957600080fd5b5061007b6100d8366004610e1d565b61064c565b60028401546001600160a01b0316331461014e5760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b60648201526084015b60405180910390fd5b600061016261015d848461094b565b6109f5565b6bffffffffffffffffffffffff198116600090815260158701602052604081209192506002820154600160a01b900460ff1660058111156101a5576101a5610e4a565b146102185760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610145565b848155600281018054600160a01b63ffffffff42811668010000000000000000027fffffffffffffffffffffff00ffffffffffffffff00000000ffffffffffffffff90931692909217811790925560148881018054606087901c73ffffffffffffffffffffffffffffffffffffffff19909116178082559390930490911691906102a183610e76565b91906101000a81548163ffffffff021916908363ffffffff16021790555050816bffffffffffffffffffffffff1916857f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e60405160405180910390a3505050505050565b601483015460601b6bffffffffffffffffffffffff1990811690831614156103955760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c6500000000000000000000000000000000000000006064820152608401610145565b6bffffffffffffffffffffffff1982166000908152601584016020526040902060016002820154600160a01b900460ff1660058111156103d7576103d7610e4a565b1461042f5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b601384015460028201546000916104639163ffffffff600160a01b9092048216916801000000000000000090910416610e9a565b63ffffffff16421015905080806104a357506013850154640100000000900467ffffffffffffffff16610497868686610a1c565b67ffffffffffffffff16105b6105155760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610145565b61051f8585610b54565b5050505050565b60028301546001600160a01b031633146105925760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610145565b60006105a161015d848461094b565b905060016bffffffffffffffffffffffff1982166000908152601586016020526040902060020154600160a01b900460ff1660058111156105e4576105e4610e4a565b1461063c5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b6106468482610b54565b50505050565b6002820154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b1580156106ac57600080fd5b505afa1580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e49190610ec2565b60038111156106f5576106f5610e4a565b146107685760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610145565b601482015460601b6bffffffffffffffffffffffff198116156108b3576000610792848385610a1c565b6bffffffffffffffffffffffff1983166000908152601586016020526040812060020154601387015492935063ffffffff680100000000000000009091048116926107de911683610e9a565b63ffffffff1642101590508080156108105750601386015467ffffffffffffffff640100000000909104811690841610155b8061083d5750601386015467ffffffffffffffff6c01000000000000000000000000909104811690841610155b6108af5760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610145565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18260020160009054906101000a90046001600160a01b03166001600160a01b03166372cc8c6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561092e57600080fd5b505af1158015610942573d6000803e3d6000fd5b50505050505050565b6060600061095a600284610eea565b61098557507f02000000000000000000000000000000000000000000000000000000000000006109a8565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6bffffffffffffffffffffffff19821660009081526015840160205260408120600101548015610b4c57808335610a596040860160208701610f0c565b610a696060870160408801610f32565b604051602001610ad69392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610b395760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610145565b610b496060840160408501610f32565b91505b509392505050565b6bffffffffffffffffffffffff198116600090815260158301602052604090206001810154610b8c57610b878383610ca8565b610c24565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffffffffffff00ffffffff00000000ffffffffffffffffffffffff909116177402000000000000000000000000000000000000000017905580546040516bffffffffffffffffffffffff19841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601483015460601b6bffffffffffffffffffffffff199081169083161415610c665760148301805473ffffffffffffffffffffffffffffffffffffffff191690555b60148381018054600160a01b900463ffffffff1691610c8483610f5c565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6bffffffffffffffffffffffff198116600081815260158401602052604080822060028101805463ffffffff4216700100000000000000000000000000000000027fffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff9091161774030000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b60008060008060808587031215610d6c57600080fd5b5050823594602084013594506040840135936060013592509050565b600060608284031215610d9a57600080fd5b50919050565b600080600060a08486031215610db557600080fd5b8335925060208401356bffffffffffffffffffffffff1981168114610dd957600080fd5b9150610de88560408601610d88565b90509250925092565b600080600060608486031215610e0657600080fd5b505081359360208301359350604090920135919050565b60008060808385031215610e3057600080fd5b82359150610e418460208501610d88565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681811415610e9057610e90610e60565b6001019392505050565b600063ffffffff808316818516808303821115610eb957610eb9610e60565b01949350505050565b600060208284031215610ed457600080fd5b815160048110610ee357600080fd5b9392505050565b600082610f0757634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215610f1e57600080fd5b813563ffffffff81168114610ee357600080fd5b600060208284031215610f4457600080fd5b813567ffffffffffffffff81168114610ee357600080fd5b600063ffffffff821680610f7257610f72610e60565b600019019291505056fea26469706673582212205952785499a99b0121c9f6c786d30a270c5937e017637df2046413d71290c26364736f6c63430008090033",
109
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80634afbe4c91461005b57806399b0b8471461007d578063c87de7f41461009d578063d079fbb1146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004610d56565b6100dd565b005b81801561008957600080fd5b5061007b610098366004610da0565b610305565b8180156100a957600080fd5b5061007b6100b8366004610df1565b610526565b8180156100c957600080fd5b5061007b6100d8366004610e1d565b61064c565b60028401546001600160a01b0316331461014e5760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b60648201526084015b60405180910390fd5b600061016261015d848461094b565b6109f5565b6bffffffffffffffffffffffff198116600090815260158701602052604081209192506002820154600160a01b900460ff1660058111156101a5576101a5610e4a565b146102185760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610145565b848155600281018054600160a01b63ffffffff42811668010000000000000000027fffffffffffffffffffffff00ffffffffffffffff00000000ffffffffffffffff90931692909217811790925560148881018054606087901c73ffffffffffffffffffffffffffffffffffffffff19909116178082559390930490911691906102a183610e76565b91906101000a81548163ffffffff021916908363ffffffff16021790555050816bffffffffffffffffffffffff1916857f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e60405160405180910390a3505050505050565b601483015460601b6bffffffffffffffffffffffff1990811690831614156103955760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c6500000000000000000000000000000000000000006064820152608401610145565b6bffffffffffffffffffffffff1982166000908152601584016020526040902060016002820154600160a01b900460ff1660058111156103d7576103d7610e4a565b1461042f5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b601384015460028201546000916104639163ffffffff600160a01b9092048216916801000000000000000090910416610e9a565b63ffffffff16421015905080806104a357506013850154640100000000900467ffffffffffffffff16610497868686610a1c565b67ffffffffffffffff16105b6105155760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610145565b61051f8585610b54565b5050505050565b60028301546001600160a01b031633146105925760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610145565b60006105a161015d848461094b565b905060016bffffffffffffffffffffffff1982166000908152601586016020526040902060020154600160a01b900460ff1660058111156105e4576105e4610e4a565b1461063c5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b6106468482610b54565b50505050565b6002820154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b1580156106ac57600080fd5b505afa1580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e49190610ec2565b60038111156106f5576106f5610e4a565b146107685760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610145565b601482015460601b6bffffffffffffffffffffffff198116156108b3576000610792848385610a1c565b6bffffffffffffffffffffffff1983166000908152601586016020526040812060020154601387015492935063ffffffff680100000000000000009091048116926107de911683610e9a565b63ffffffff1642101590508080156108105750601386015467ffffffffffffffff640100000000909104811690841610155b8061083d5750601386015467ffffffffffffffff6c01000000000000000000000000909104811690841610155b6108af5760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610145565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18260020160009054906101000a90046001600160a01b03166001600160a01b03166372cc8c6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561092e57600080fd5b505af1158015610942573d6000803e3d6000fd5b50505050505050565b6060600061095a600284610eea565b61098557507f02000000000000000000000000000000000000000000000000000000000000006109a8565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6bffffffffffffffffffffffff19821660009081526015840160205260408120600101548015610b4c57808335610a596040860160208701610f0c565b610a696060870160408801610f32565b604051602001610ad69392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610b395760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610145565b610b496060840160408501610f32565b91505b509392505050565b6bffffffffffffffffffffffff198116600090815260158301602052604090206001810154610b8c57610b878383610ca8565b610c24565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffffffffffff00ffffffff00000000ffffffffffffffffffffffff909116177402000000000000000000000000000000000000000017905580546040516bffffffffffffffffffffffff19841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601483015460601b6bffffffffffffffffffffffff199081169083161415610c665760148301805473ffffffffffffffffffffffffffffffffffffffff191690555b60148381018054600160a01b900463ffffffff1691610c8483610f5c565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6bffffffffffffffffffffffff198116600081815260158401602052604080822060028101805463ffffffff4216700100000000000000000000000000000000027fffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff9091161774030000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b60008060008060808587031215610d6c57600080fd5b5050823594602084013594506040840135936060013592509050565b600060608284031215610d9a57600080fd5b50919050565b600080600060a08486031215610db557600080fd5b8335925060208401356bffffffffffffffffffffffff1981168114610dd957600080fd5b9150610de88560408601610d88565b90509250925092565b600080600060608486031215610e0657600080fd5b505081359360208301359350604090920135919050565b60008060808385031215610e3057600080fd5b82359150610e418460208501610d88565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681811415610e9057610e90610e60565b6001019392505050565b600063ffffffff808316818516808303821115610eb957610eb9610e60565b01949350505050565b600060208284031215610ed457600080fd5b815160048110610ee357600080fd5b9392505050565b600082610f0757634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215610f1e57600080fd5b813563ffffffff81168114610ee357600080fd5b600060208284031215610f4457600080fd5b813567ffffffffffffffff81168114610ee357600080fd5b600063ffffffff821680610f7257610f72610e60565b600019019291505056fea26469706673582212205952785499a99b0121c9f6c786d30a270c5937e017637df2046413d71290c26364736f6c63430008090033",
136
110
  "linkReferences": {},
137
111
  "deployedLinkReferences": {}
138
112
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/3897cfda8663993459ea8ae2e7c2a99e.json"
3
+ "buildInfo": "../../../build-info/d1177ad948c90274b8487bcd633aa8a4.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/3897cfda8663993459ea8ae2e7c2a99e.json"
3
+ "buildInfo": "../../../build-info/d1177ad948c90274b8487bcd633aa8a4.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/3897cfda8663993459ea8ae2e7c2a99e.json"
3
+ "buildInfo": "../../../build-info/d1177ad948c90274b8487bcd633aa8a4.json"
4
4
  }
@@ -18,11 +18,13 @@ pragma solidity ^0.8.9;
18
18
  import {BTCUtils} from "@keep-network/bitcoin-spv-sol/contracts/BTCUtils.sol";
19
19
  import {ValidateSPV} from "@keep-network/bitcoin-spv-sol/contracts/ValidateSPV.sol";
20
20
 
21
+ import "./BridgeState.sol";
22
+
21
23
  /// @title Bitcoin transaction
22
24
  /// @notice Allows to reference Bitcoin raw transaction in Solidity.
23
25
  /// @dev See https://developer.bitcoin.org/reference/transactions.html#raw-transaction-format
24
26
  ///
25
- /// Raw Bitcon transaction data:
27
+ /// Raw Bitcoin transaction data:
26
28
  ///
27
29
  /// | Bytes | Name | BTC type | Description |
28
30
  /// |--------|--------------|------------------------|---------------------------|
@@ -80,12 +82,12 @@ library BitcoinTx {
80
82
  /// @notice Represents Bitcoin transaction data.
81
83
  struct Info {
82
84
  /// @notice Bitcoin transaction version
83
- /// @dev `version` from raw Bitcon transaction data.
85
+ /// @dev `version` from raw Bitcoin transaction data.
84
86
  /// Encoded as 4-bytes signed integer, little endian.
85
87
  bytes4 version;
86
88
  /// @notice All Bitcoin transaction inputs, prepended by the number of
87
89
  /// transaction inputs.
88
- /// @dev `tx_in_count | tx_in` from raw Bitcon transaction data.
90
+ /// @dev `tx_in_count | tx_in` from raw Bitcoin transaction data.
89
91
  ///
90
92
  /// The number of transaction inputs encoded as compactSize
91
93
  /// unsigned integer, little-endian.
@@ -120,17 +122,6 @@ library BitcoinTx {
120
122
  bytes bitcoinHeaders;
121
123
  }
122
124
 
123
- /// @notice Determines the difficulty context for a Bitcoin SPV proof.
124
- struct ProofDifficulty {
125
- /// @notice Difficulty of the current epoch.
126
- uint256 currentEpochDifficulty;
127
- /// @notice Difficulty of the previous epoch.
128
- uint256 previousEpochDifficulty;
129
- /// @notice The number of confirmations on the Bitcoin chain required
130
- /// to successfully evaluate an SPV proof.
131
- uint256 difficultyFactor;
132
- }
133
-
134
125
  /// @notice Represents info about an unspent transaction output.
135
126
  struct UTXO {
136
127
  /// @notice Hash of the transaction the output belongs to.
@@ -156,12 +147,11 @@ library BitcoinTx {
156
147
  /// Reverts in case the validation or proof verification fail.
157
148
  /// @param txInfo Bitcoin transaction data
158
149
  /// @param proof Bitcoin proof data
159
- /// @param proofDifficulty Bitcoin proof difficulty context.
160
150
  /// @return txHash Proven 32-byte transaction hash.
161
151
  function validateProof(
152
+ BridgeState.Storage storage self,
162
153
  Info calldata txInfo,
163
- Proof calldata proof,
164
- ProofDifficulty memory proofDifficulty
154
+ Proof calldata proof
165
155
  ) internal view returns (bytes32 txHash) {
166
156
  require(
167
157
  txInfo.inputVector.validateVin(),
@@ -190,7 +180,7 @@ library BitcoinTx {
190
180
  "Tx merkle proof is not valid for provided header and tx hash"
191
181
  );
192
182
 
193
- evaluateProofDifficulty(proof.bitcoinHeaders, proofDifficulty);
183
+ evaluateProofDifficulty(self, proof.bitcoinHeaders);
194
184
 
195
185
  return txHash;
196
186
  }
@@ -200,20 +190,23 @@ library BitcoinTx {
200
190
  /// Reverts in case the evaluation fails.
201
191
  /// @param bitcoinHeaders Bitcoin headers chain being part of the SPV
202
192
  /// proof. Used to extract the observed proof difficulty
203
- /// @param proofDifficulty Bitcoin proof difficulty context.
204
193
  function evaluateProofDifficulty(
205
- bytes memory bitcoinHeaders,
206
- ProofDifficulty memory proofDifficulty
194
+ BridgeState.Storage storage self,
195
+ bytes memory bitcoinHeaders
207
196
  ) internal view {
197
+ IRelay relay = self.relay;
198
+ uint256 currentEpochDifficulty = relay.getCurrentEpochDifficulty();
199
+ uint256 previousEpochDifficulty = relay.getPrevEpochDifficulty();
200
+
208
201
  uint256 requestedDiff = 0;
209
202
  uint256 firstHeaderDiff = bitcoinHeaders
210
203
  .extractTarget()
211
204
  .calculateDifficulty();
212
205
 
213
- if (firstHeaderDiff == proofDifficulty.currentEpochDifficulty) {
214
- requestedDiff = proofDifficulty.currentEpochDifficulty;
215
- } else if (firstHeaderDiff == proofDifficulty.previousEpochDifficulty) {
216
- requestedDiff = proofDifficulty.previousEpochDifficulty;
206
+ if (firstHeaderDiff == currentEpochDifficulty) {
207
+ requestedDiff = currentEpochDifficulty;
208
+ } else if (firstHeaderDiff == previousEpochDifficulty) {
209
+ requestedDiff = previousEpochDifficulty;
217
210
  } else {
218
211
  revert("Not at current or previous difficulty");
219
212
  }
@@ -234,7 +227,7 @@ library BitcoinTx {
234
227
  );
235
228
 
236
229
  require(
237
- observedDiff >= requestedDiff * proofDifficulty.difficultyFactor,
230
+ observedDiff >= requestedDiff * self.txProofDifficultyFactor,
238
231
  "Insufficient accumulated difficulty in header chain"
239
232
  );
240
233
  }