@keep-network/tbtc-v2 1.3.0 → 1.3.1

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 (75) hide show
  1. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  2. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  3. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
  4. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  5. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  6. package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
  7. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
  8. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
  9. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
  10. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
  11. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
  12. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
  13. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
  14. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
  15. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
  16. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
  17. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  18. package/build/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.dbg.json +1 -1
  19. package/build/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.dbg.json +1 -1
  20. package/build/contracts/bridge/WalletCoordinator.sol/WalletCoordinator.dbg.json +1 -1
  21. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
  22. package/build/contracts/l2/L2TBTC.sol/L2TBTC.dbg.json +1 -1
  23. package/build/contracts/l2/L2WormholeGateway.sol/IWormholeTokenBridge.dbg.json +1 -1
  24. package/build/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.dbg.json +1 -1
  25. package/build/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.json +2 -2
  26. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
  27. package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
  28. package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
  29. package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
  30. package/build/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.dbg.json +1 -1
  31. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  32. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
  33. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  34. package/build/contracts/vault/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.dbg.json +1 -1
  35. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  36. package/contracts/l2/L2WormholeGateway.sol +22 -4
  37. package/export/artifacts/@keep-network/bitcoin-spv-sol/contracts/BTCUtils.sol/BTCUtils.json +20 -20
  38. package/export/artifacts/@keep-network/ecdsa/contracts/EcdsaDkgValidator.sol/EcdsaDkgValidator.json +2010 -2010
  39. package/export/artifacts/@keep-network/ecdsa/contracts/WalletRegistry.sol/WalletRegistry.json +245 -245
  40. package/export/artifacts/@keep-network/ecdsa/contracts/libraries/EcdsaDkg.sol/EcdsaDkg.json +22 -22
  41. package/export/artifacts/@keep-network/ecdsa/contracts/libraries/EcdsaInactivity.sol/EcdsaInactivity.json +1859 -1859
  42. package/export/artifacts/@keep-network/random-beacon/contracts/ReimbursementPool.sol/ReimbursementPool.json +598 -598
  43. package/export/artifacts/@keep-network/sortition-pools/contracts/Chaosnet.sol/Chaosnet.json +527 -527
  44. package/export/artifacts/@keep-network/sortition-pools/contracts/Rewards.sol/Rewards.json +39 -39
  45. package/export/artifacts/@keep-network/sortition-pools/contracts/SortitionPool.sol/SortitionPool.json +2662 -2662
  46. package/export/artifacts/@keep-network/sortition-pools/contracts/SortitionTree.sol/SortitionTree.json +491 -491
  47. package/export/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +614 -614
  48. package/export/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +639 -639
  49. package/export/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +1079 -1079
  50. package/export/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json +1945 -1945
  51. package/export/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.json +697 -697
  52. package/export/artifacts/@thesis/solidity-contracts/contracts/token/ERC20WithPermit.sol/ERC20WithPermit.json +2613 -2613
  53. package/export/artifacts/@thesis/solidity-contracts/contracts/token/MisfundRecovery.sol/MisfundRecovery.json +778 -778
  54. package/export/artifacts/contracts/bank/Bank.sol/Bank.json +1949 -1949
  55. package/export/artifacts/contracts/bridge/Bridge.sol/Bridge.json +7381 -7381
  56. package/export/artifacts/contracts/bridge/VendingMachine.sol/VendingMachine.json +1359 -1359
  57. package/export/artifacts/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.json +1029 -1029
  58. package/export/artifacts/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.json +1181 -1181
  59. package/export/artifacts/contracts/bridge/WalletCoordinator.sol/WalletCoordinator.json +4422 -4422
  60. package/export/artifacts/contracts/l2/L2TBTC.sol/L2TBTC.json +3156 -3156
  61. package/export/artifacts/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.json +3143 -2595
  62. package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +2454 -2454
  63. package/export/artifacts/contracts/relay/LightRelay.sol/LightRelay.json +1941 -1941
  64. package/export/artifacts/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.json +1044 -1044
  65. package/export/artifacts/contracts/token/TBTC.sol/TBTC.json +2949 -2949
  66. package/export/artifacts/contracts/vault/DonationVault.sol/DonationVault.json +866 -866
  67. package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +3525 -3525
  68. package/export/deploy/37_transfer_light_relay_maintainer_proxy_ownership.js +60 -0
  69. package/export/deploy/38_authorize_light_relay_maintainer_proxy_in_reimbursement_pool.js +70 -0
  70. package/export/deploy/39_authorize_light_relay_maintainer_proxy_in_light_relay.js +63 -0
  71. package/export/typechain/factories/L2WormholeGateway__factory.js +1 -1
  72. package/export/typechain/factories/WalletCoordinator__factory.js +1 -21
  73. package/export/typechain/factories/WalletRegistry__factory.js +1 -1
  74. package/export/typechain/factories/WormholeBridgeStub__factory.js +1 -1
  75. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/27cc00f982604c703f93f656ecec771f.json"
3
+ "buildInfo": "../../../build-info/6bd0b2a66900b2f91cd48b286428528d.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -423,8 +423,8 @@
423
423
  "type": "function"
424
424
  }
425
425
  ],
426
- "bytecode": "0x608060405234801561001057600080fd5b50611db7806100206000396000f3fe60806040526004361061010e5760003560e01c80638da5cb5b116100a5578063e1308b3311610074578063f2fde38b11610059578063f2fde38b146102f1578063f4734b0c14610311578063f69785f31461033157600080fd5b8063e1308b33146102b1578063e78cea92146102d157600080fd5b80638da5cb5b1461021f578063b4ccd8681461023d578063c0c53b8b1461026a578063ca05f9851461028a57600080fd5b806349072f12116100e157806349072f12146101b45780635d21a596146101ca578063715018a6146101ea57806375b1beaa146101ff57600080fd5b80630b575fe6146101135780632d3802421461014e578063363da98e1461017257806344949c9214610194575b600080fd5b34801561011f57600080fd5b5061013161012e366004611807565b90565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015a57600080fd5b50610164609c5481565b604051908152602001610145565b34801561017e57600080fd5b5061019261018d366004611807565b61035d565b005b3480156101a057600080fd5b506101926101af366004611807565b6103a0565b3480156101c057600080fd5b50610164609b5481565b3480156101d657600080fd5b506101926101e5366004611820565b6104d3565b3480156101f657600080fd5b506101926108a0565b34801561020b57600080fd5b5061019261021a3660046118a2565b6108b4565b34801561022b57600080fd5b506033546001600160a01b0316610131565b34801561024957600080fd5b506101646102583660046118ce565b609a6020526000908152604090205481565b34801561027657600080fd5b50610192610285366004611907565b61090f565b34801561029657600080fd5b506101646102a5366004611952565b6001600160a01b031690565b3480156102bd57600080fd5b50609954610131906001600160a01b031681565b3480156102dd57600080fd5b50609754610131906001600160a01b031681565b3480156102fd57600080fd5b5061019261030c366004611952565b610bca565b34801561031d57600080fd5b50609854610131906001600160a01b031681565b61034461033f36600461196f565b610c5a565b60405167ffffffffffffffff9091168152602001610145565b610365611050565b609b8190556040518181527f876c61ade8d7fbb62356eefa0f1cb0d6d95fc5269dbe8d0d636051daa88d73999060200160405180910390a150565b609b5481609c546103b191906119e4565b11156104045760405162461bcd60e51b815260206004820152601660248201527f4d696e74696e67206c696d69742065786365656465640000000000000000000060448201526064015b60405180910390fd5b60408051338152602081018390527ff7f6725b273ddbe730c152e645cb3a946dd37dbc34344ba45f20975ff85aeb92910160405180910390a180609c600082825461044f91906119e4565b909155505060985461046c906001600160a01b03163330846110aa565b6099546040516340c10f1960e01b8152336004820152602481018390526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156104b857600080fd5b505af11580156104cc573d6000803e3d6000fd5b5050505050565b6098546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561051c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054091906119fd565b6097546040517fc3f511c10000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b039091169063c3f511c1906105919087908790600401611a16565b6000604051808303816000875af11580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190611b31565b6098546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a91906119fd565b905060006106588483611b66565b9050600081116106aa5760405162461bcd60e51b815260206004820152601360248201527f4e6f2074425443207472616e736665727265640000000000000000000000000060448201526064016103fb565b6097546040517fea63738d00000000000000000000000000000000000000000000000000000000815260009161074c916001600160a01b039091169063ea63738d906106fa908890600401611ba5565b600060405180830381865afa158015610717573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073f9190810190611bd9565b60e0015161012e90611ca2565b90506001600160a01b0381166107a45760405162461bcd60e51b815260206004820152601860248201527f307830207265636569766572206e6f7420616c6c6f776564000000000000000060448201526064016103fb565b609b5482609c546107b591906119e4565b11156107d7576098546107d2906001600160a01b0316828461115b565b610855565b81609c60008282546107e991906119e4565b90915550506099546040516340c10f1960e01b81526001600160a01b03838116600483015260248201859052909116906340c10f1990604401600060405180830381600087803b15801561083c57600080fd5b505af1158015610850573d6000803e3d6000fd5b505050505b604080516001600160a01b0383168152602081018490527fc7f080a0d33152d54d5972f0bac2d7984089c4849e2af42bca1a572728d339d7910160405180910390a150505050505050565b6108a8611050565b6108b260006111a9565b565b6108bc611050565b61ffff82166000818152609a6020908152604091829020849055815192835282018390527f1b29e2aa7a790fb04e7d6d73bf7ca63e2b4b1ffe0354fe94b4739c91f1a15359910160405180910390a15050565b600054610100900460ff161580801561092f5750600054600160ff909116105b806109495750303b158015610949575060005460ff166001145b6109bb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103fb565b6000805460ff1916600117905580156109de576000805461ff0019166101001790555b6109e6611208565b6109ee61127b565b6001600160a01b038416610a6a5760405162461bcd60e51b815260206004820152602760248201527f576f726d686f6c65206272696467652061646472657373206d757374206e6f7460448201527f206265203078300000000000000000000000000000000000000000000000000060648201526084016103fb565b6001600160a01b038316610acc5760405162461bcd60e51b8152602060048201526024808201527f42726964676520746f6b656e2061646472657373206d757374206e6f742062656044820152630203078360e41b60648201526084016103fb565b6001600160a01b038216610b2e5760405162461bcd60e51b8152602060048201526024808201527f4c325442544320746f6b656e2061646472657373206d757374206e6f742062656044820152630203078360e41b60648201526084016103fb565b609780546001600160a01b0380871673ffffffffffffffffffffffffffffffffffffffff1992831617909255609880548684169083161790556099805492851692909116919091179055600019609b558015610bc4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610bd2611050565b6001600160a01b038116610c4e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103fb565b610c57816111a9565b50565b6000610c646112ee565b6098546040516370a0823160e01b815230600482015287916001600160a01b0316906370a0823190602401602060405180830381865afa158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd091906119fd565b1015610d445760405162461bcd60e51b815260206004820152603160248201527f4e6f7420656e6f75676820776f726d686f6c65207442544320696e207468652060448201527f6761746577617920746f2062726964676500000000000000000000000000000060648201526084016103fb565b83610d915760405162461bcd60e51b815260206004820152601960248201527f30783020726563697069656e74206e6f7420616c6c6f7765640000000000000060448201526064016103fb565b85600003610de15760405162461bcd60e51b815260206004820152601460248201527f416d6f756e74206d757374206e6f74206265203000000000000000000000000060448201526064016103fb565b61ffff85166000818152609a60209081526040918290205482518a815291820193909352908101829052606081018690526080810185905263ffffffff841660a08201527ffcdb8efef11d13bb0ebc515477ece314fdac305aeba3d6d9d371838bbe2435cf9060c00160405180910390a186609c6000828254610e649190611b66565b90915550506099546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018990526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610ece57600080fd5b505af1158015610ee2573d6000803e3d6000fd5b5050609754609854610f0393506001600160a01b0390811692501689611347565b80610fc9576097546098546040517f0f5287b00000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018a905261ffff89166044820152606481018890526084810187905263ffffffff861660a4820152911690630f5287b090349060c4015b60206040518083038185885af1158015610f9c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fc19190611cc9565b91505061103d565b6097546098546040805160208082018a905282518083039091018152818301928390527fc5a5ebda000000000000000000000000000000000000000000000000000000009092526001600160a01b039384169363c5a5ebda933493610f7e9392909116918d918d9189918c91604401611cf3565b6110476001606555565b95945050505050565b6033546001600160a01b031633146108b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103fb565b6040516001600160a01b0380851660248301528316604482015260648101829052610bc49085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261149c565b6040516001600160a01b0383166024820152604481018290526111a49084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016110f7565b505050565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166112735760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b6108b2611581565b600054610100900460ff166112e65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b6108b26115f5565b6002606554036113405760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103fb565b6002606555565b8015806113da57506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156113b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d891906119fd565b155b61144c5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016103fb565b6040516001600160a01b0383166024820152604481018290526111a49084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016110f7565b6001606555565b60006114f1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116609092919063ffffffff16565b8051909150156111a4578080602001905181019061150f9190611d43565b6111a45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103fb565b600054610100900460ff166115ec5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b6108b2336111a9565b600054610100900460ff166114955760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b606061166f8484600085611677565b949350505050565b6060824710156116ef5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103fb565b600080866001600160a01b0316858760405161170b9190611d65565b60006040518083038185875af1925050503d8060008114611748576040519150601f19603f3d011682016040523d82523d6000602084013e61174d565b606091505b509150915061175e87838387611769565b979650505050505050565b606083156117d85782516000036117d1576001600160a01b0385163b6117d15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103fb565b508161166f565b61166f83838151156117ed5781518083602001fd5b8060405162461bcd60e51b81526004016103fb9190611ba5565b60006020828403121561181957600080fd5b5035919050565b6000806020838503121561183357600080fd5b823567ffffffffffffffff8082111561184b57600080fd5b818501915085601f83011261185f57600080fd5b81358181111561186e57600080fd5b86602082850101111561188057600080fd5b60209290920196919550909350505050565b61ffff81168114610c5757600080fd5b600080604083850312156118b557600080fd5b82356118c081611892565b946020939093013593505050565b6000602082840312156118e057600080fd5b81356118eb81611892565b9392505050565b6001600160a01b0381168114610c5757600080fd5b60008060006060848603121561191c57600080fd5b8335611927816118f2565b92506020840135611937816118f2565b91506040840135611947816118f2565b809150509250925092565b60006020828403121561196457600080fd5b81356118eb816118f2565b600080600080600060a0868803121561198757600080fd5b85359450602086013561199981611892565b93506040860135925060608601359150608086013563ffffffff811681146119c057600080fd5b809150509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156119f7576119f76119ce565b92915050565b600060208284031215611a0f57600080fd5b5051919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715611a7f57611a7f611a45565b60405290565b60005b83811015611aa0578181015183820152602001611a88565b50506000910152565b600082601f830112611aba57600080fd5b815167ffffffffffffffff80821115611ad557611ad5611a45565b604051601f8301601f19908116603f01168101908282118183101715611afd57611afd611a45565b81604052838152866020858801011115611b1657600080fd5b611b27846020830160208901611a85565b9695505050505050565b600060208284031215611b4357600080fd5b815167ffffffffffffffff811115611b5a57600080fd5b61166f84828501611aa9565b818103818111156119f7576119f76119ce565b60008151808452611b91816020860160208601611a85565b601f01601f19169290920160200192915050565b6020815260006118eb6020830184611b79565b805160ff81168114611bc957600080fd5b919050565b8051611bc981611892565b600060208284031215611beb57600080fd5b815167ffffffffffffffff80821115611c0357600080fd5b908301906101008286031215611c1857600080fd5b611c20611a5b565b611c2983611bb8565b81526020830151602082015260408301516040820152611c4b60608401611bce565b606082015260808301516080820152611c6660a08401611bce565b60a082015260c083015160c082015260e083015182811115611c8757600080fd5b611c9387828601611aa9565b60e08301525095945050505050565b80516020808301519190811015611cc3576000198160200360031b1b821691505b50919050565b600060208284031215611cdb57600080fd5b815167ffffffffffffffff811681146118eb57600080fd5b6001600160a01b038716815285602082015261ffff8516604082015283606082015263ffffffff8316608082015260c060a08201526000611d3760c0830184611b79565b98975050505050505050565b600060208284031215611d5557600080fd5b815180151581146118eb57600080fd5b60008251611d77818460208701611a85565b919091019291505056fea26469706673582212202cd4d2b50073315070b38ba165fde50c94297c2b2d1ad8f4fb7c3abaf842b3f664736f6c63430008110033",
427
- "deployedBytecode": "0x60806040526004361061010e5760003560e01c80638da5cb5b116100a5578063e1308b3311610074578063f2fde38b11610059578063f2fde38b146102f1578063f4734b0c14610311578063f69785f31461033157600080fd5b8063e1308b33146102b1578063e78cea92146102d157600080fd5b80638da5cb5b1461021f578063b4ccd8681461023d578063c0c53b8b1461026a578063ca05f9851461028a57600080fd5b806349072f12116100e157806349072f12146101b45780635d21a596146101ca578063715018a6146101ea57806375b1beaa146101ff57600080fd5b80630b575fe6146101135780632d3802421461014e578063363da98e1461017257806344949c9214610194575b600080fd5b34801561011f57600080fd5b5061013161012e366004611807565b90565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015a57600080fd5b50610164609c5481565b604051908152602001610145565b34801561017e57600080fd5b5061019261018d366004611807565b61035d565b005b3480156101a057600080fd5b506101926101af366004611807565b6103a0565b3480156101c057600080fd5b50610164609b5481565b3480156101d657600080fd5b506101926101e5366004611820565b6104d3565b3480156101f657600080fd5b506101926108a0565b34801561020b57600080fd5b5061019261021a3660046118a2565b6108b4565b34801561022b57600080fd5b506033546001600160a01b0316610131565b34801561024957600080fd5b506101646102583660046118ce565b609a6020526000908152604090205481565b34801561027657600080fd5b50610192610285366004611907565b61090f565b34801561029657600080fd5b506101646102a5366004611952565b6001600160a01b031690565b3480156102bd57600080fd5b50609954610131906001600160a01b031681565b3480156102dd57600080fd5b50609754610131906001600160a01b031681565b3480156102fd57600080fd5b5061019261030c366004611952565b610bca565b34801561031d57600080fd5b50609854610131906001600160a01b031681565b61034461033f36600461196f565b610c5a565b60405167ffffffffffffffff9091168152602001610145565b610365611050565b609b8190556040518181527f876c61ade8d7fbb62356eefa0f1cb0d6d95fc5269dbe8d0d636051daa88d73999060200160405180910390a150565b609b5481609c546103b191906119e4565b11156104045760405162461bcd60e51b815260206004820152601660248201527f4d696e74696e67206c696d69742065786365656465640000000000000000000060448201526064015b60405180910390fd5b60408051338152602081018390527ff7f6725b273ddbe730c152e645cb3a946dd37dbc34344ba45f20975ff85aeb92910160405180910390a180609c600082825461044f91906119e4565b909155505060985461046c906001600160a01b03163330846110aa565b6099546040516340c10f1960e01b8152336004820152602481018390526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156104b857600080fd5b505af11580156104cc573d6000803e3d6000fd5b5050505050565b6098546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561051c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054091906119fd565b6097546040517fc3f511c10000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b039091169063c3f511c1906105919087908790600401611a16565b6000604051808303816000875af11580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190611b31565b6098546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a91906119fd565b905060006106588483611b66565b9050600081116106aa5760405162461bcd60e51b815260206004820152601360248201527f4e6f2074425443207472616e736665727265640000000000000000000000000060448201526064016103fb565b6097546040517fea63738d00000000000000000000000000000000000000000000000000000000815260009161074c916001600160a01b039091169063ea63738d906106fa908890600401611ba5565b600060405180830381865afa158015610717573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073f9190810190611bd9565b60e0015161012e90611ca2565b90506001600160a01b0381166107a45760405162461bcd60e51b815260206004820152601860248201527f307830207265636569766572206e6f7420616c6c6f776564000000000000000060448201526064016103fb565b609b5482609c546107b591906119e4565b11156107d7576098546107d2906001600160a01b0316828461115b565b610855565b81609c60008282546107e991906119e4565b90915550506099546040516340c10f1960e01b81526001600160a01b03838116600483015260248201859052909116906340c10f1990604401600060405180830381600087803b15801561083c57600080fd5b505af1158015610850573d6000803e3d6000fd5b505050505b604080516001600160a01b0383168152602081018490527fc7f080a0d33152d54d5972f0bac2d7984089c4849e2af42bca1a572728d339d7910160405180910390a150505050505050565b6108a8611050565b6108b260006111a9565b565b6108bc611050565b61ffff82166000818152609a6020908152604091829020849055815192835282018390527f1b29e2aa7a790fb04e7d6d73bf7ca63e2b4b1ffe0354fe94b4739c91f1a15359910160405180910390a15050565b600054610100900460ff161580801561092f5750600054600160ff909116105b806109495750303b158015610949575060005460ff166001145b6109bb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103fb565b6000805460ff1916600117905580156109de576000805461ff0019166101001790555b6109e6611208565b6109ee61127b565b6001600160a01b038416610a6a5760405162461bcd60e51b815260206004820152602760248201527f576f726d686f6c65206272696467652061646472657373206d757374206e6f7460448201527f206265203078300000000000000000000000000000000000000000000000000060648201526084016103fb565b6001600160a01b038316610acc5760405162461bcd60e51b8152602060048201526024808201527f42726964676520746f6b656e2061646472657373206d757374206e6f742062656044820152630203078360e41b60648201526084016103fb565b6001600160a01b038216610b2e5760405162461bcd60e51b8152602060048201526024808201527f4c325442544320746f6b656e2061646472657373206d757374206e6f742062656044820152630203078360e41b60648201526084016103fb565b609780546001600160a01b0380871673ffffffffffffffffffffffffffffffffffffffff1992831617909255609880548684169083161790556099805492851692909116919091179055600019609b558015610bc4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610bd2611050565b6001600160a01b038116610c4e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103fb565b610c57816111a9565b50565b6000610c646112ee565b6098546040516370a0823160e01b815230600482015287916001600160a01b0316906370a0823190602401602060405180830381865afa158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd091906119fd565b1015610d445760405162461bcd60e51b815260206004820152603160248201527f4e6f7420656e6f75676820776f726d686f6c65207442544320696e207468652060448201527f6761746577617920746f2062726964676500000000000000000000000000000060648201526084016103fb565b83610d915760405162461bcd60e51b815260206004820152601960248201527f30783020726563697069656e74206e6f7420616c6c6f7765640000000000000060448201526064016103fb565b85600003610de15760405162461bcd60e51b815260206004820152601460248201527f416d6f756e74206d757374206e6f74206265203000000000000000000000000060448201526064016103fb565b61ffff85166000818152609a60209081526040918290205482518a815291820193909352908101829052606081018690526080810185905263ffffffff841660a08201527ffcdb8efef11d13bb0ebc515477ece314fdac305aeba3d6d9d371838bbe2435cf9060c00160405180910390a186609c6000828254610e649190611b66565b90915550506099546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018990526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610ece57600080fd5b505af1158015610ee2573d6000803e3d6000fd5b5050609754609854610f0393506001600160a01b0390811692501689611347565b80610fc9576097546098546040517f0f5287b00000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018a905261ffff89166044820152606481018890526084810187905263ffffffff861660a4820152911690630f5287b090349060c4015b60206040518083038185885af1158015610f9c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fc19190611cc9565b91505061103d565b6097546098546040805160208082018a905282518083039091018152818301928390527fc5a5ebda000000000000000000000000000000000000000000000000000000009092526001600160a01b039384169363c5a5ebda933493610f7e9392909116918d918d9189918c91604401611cf3565b6110476001606555565b95945050505050565b6033546001600160a01b031633146108b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103fb565b6040516001600160a01b0380851660248301528316604482015260648101829052610bc49085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261149c565b6040516001600160a01b0383166024820152604481018290526111a49084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016110f7565b505050565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166112735760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b6108b2611581565b600054610100900460ff166112e65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b6108b26115f5565b6002606554036113405760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103fb565b6002606555565b8015806113da57506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156113b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d891906119fd565b155b61144c5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016103fb565b6040516001600160a01b0383166024820152604481018290526111a49084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016110f7565b6001606555565b60006114f1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116609092919063ffffffff16565b8051909150156111a4578080602001905181019061150f9190611d43565b6111a45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103fb565b600054610100900460ff166115ec5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b6108b2336111a9565b600054610100900460ff166114955760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b606061166f8484600085611677565b949350505050565b6060824710156116ef5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103fb565b600080866001600160a01b0316858760405161170b9190611d65565b60006040518083038185875af1925050503d8060008114611748576040519150601f19603f3d011682016040523d82523d6000602084013e61174d565b606091505b509150915061175e87838387611769565b979650505050505050565b606083156117d85782516000036117d1576001600160a01b0385163b6117d15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103fb565b508161166f565b61166f83838151156117ed5781518083602001fd5b8060405162461bcd60e51b81526004016103fb9190611ba5565b60006020828403121561181957600080fd5b5035919050565b6000806020838503121561183357600080fd5b823567ffffffffffffffff8082111561184b57600080fd5b818501915085601f83011261185f57600080fd5b81358181111561186e57600080fd5b86602082850101111561188057600080fd5b60209290920196919550909350505050565b61ffff81168114610c5757600080fd5b600080604083850312156118b557600080fd5b82356118c081611892565b946020939093013593505050565b6000602082840312156118e057600080fd5b81356118eb81611892565b9392505050565b6001600160a01b0381168114610c5757600080fd5b60008060006060848603121561191c57600080fd5b8335611927816118f2565b92506020840135611937816118f2565b91506040840135611947816118f2565b809150509250925092565b60006020828403121561196457600080fd5b81356118eb816118f2565b600080600080600060a0868803121561198757600080fd5b85359450602086013561199981611892565b93506040860135925060608601359150608086013563ffffffff811681146119c057600080fd5b809150509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156119f7576119f76119ce565b92915050565b600060208284031215611a0f57600080fd5b5051919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715611a7f57611a7f611a45565b60405290565b60005b83811015611aa0578181015183820152602001611a88565b50506000910152565b600082601f830112611aba57600080fd5b815167ffffffffffffffff80821115611ad557611ad5611a45565b604051601f8301601f19908116603f01168101908282118183101715611afd57611afd611a45565b81604052838152866020858801011115611b1657600080fd5b611b27846020830160208901611a85565b9695505050505050565b600060208284031215611b4357600080fd5b815167ffffffffffffffff811115611b5a57600080fd5b61166f84828501611aa9565b818103818111156119f7576119f76119ce565b60008151808452611b91816020860160208601611a85565b601f01601f19169290920160200192915050565b6020815260006118eb6020830184611b79565b805160ff81168114611bc957600080fd5b919050565b8051611bc981611892565b600060208284031215611beb57600080fd5b815167ffffffffffffffff80821115611c0357600080fd5b908301906101008286031215611c1857600080fd5b611c20611a5b565b611c2983611bb8565b81526020830151602082015260408301516040820152611c4b60608401611bce565b606082015260808301516080820152611c6660a08401611bce565b60a082015260c083015160c082015260e083015182811115611c8757600080fd5b611c9387828601611aa9565b60e08301525095945050505050565b80516020808301519190811015611cc3576000198160200360031b1b821691505b50919050565b600060208284031215611cdb57600080fd5b815167ffffffffffffffff811681146118eb57600080fd5b6001600160a01b038716815285602082015261ffff8516604082015283606082015263ffffffff8316608082015260c060a08201526000611d3760c0830184611b79565b98975050505050505050565b600060208284031215611d5557600080fd5b815180151581146118eb57600080fd5b60008251611d77818460208701611a85565b919091019291505056fea26469706673582212202cd4d2b50073315070b38ba165fde50c94297c2b2d1ad8f4fb7c3abaf842b3f664736f6c63430008110033",
426
+ "bytecode": "0x608060405234801561001057600080fd5b50611e6d806100206000396000f3fe60806040526004361061010e5760003560e01c80638da5cb5b116100a5578063e1308b3311610074578063f2fde38b11610059578063f2fde38b146102f1578063f4734b0c14610311578063f69785f31461033157600080fd5b8063e1308b33146102b1578063e78cea92146102d157600080fd5b80638da5cb5b1461021f578063b4ccd8681461023d578063c0c53b8b1461026a578063ca05f9851461028a57600080fd5b806349072f12116100e157806349072f12146101b45780635d21a596146101ca578063715018a6146101ea57806375b1beaa146101ff57600080fd5b80630b575fe6146101135780632d3802421461014e578063363da98e1461017257806344949c9214610194575b600080fd5b34801561011f57600080fd5b5061013161012e36600461188a565b90565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015a57600080fd5b50610164609c5481565b604051908152602001610145565b34801561017e57600080fd5b5061019261018d36600461188a565b61035d565b005b3480156101a057600080fd5b506101926101af36600461188a565b6103a0565b3480156101c057600080fd5b50610164609b5481565b3480156101d657600080fd5b506101926101e53660046118a3565b6104d3565b3480156101f657600080fd5b506101926108a0565b34801561020b57600080fd5b5061019261021a366004611925565b6108b4565b34801561022b57600080fd5b506033546001600160a01b0316610131565b34801561024957600080fd5b50610164610258366004611951565b609a6020526000908152604090205481565b34801561027657600080fd5b5061019261028536600461198a565b61090f565b34801561029657600080fd5b506101646102a53660046119d5565b6001600160a01b031690565b3480156102bd57600080fd5b50609954610131906001600160a01b031681565b3480156102dd57600080fd5b50609754610131906001600160a01b031681565b3480156102fd57600080fd5b5061019261030c3660046119d5565b610bca565b34801561031d57600080fd5b50609854610131906001600160a01b031681565b61034461033f3660046119f2565b610c5a565b60405167ffffffffffffffff9091168152602001610145565b6103656110ab565b609b8190556040518181527f876c61ade8d7fbb62356eefa0f1cb0d6d95fc5269dbe8d0d636051daa88d73999060200160405180910390a150565b609b5481609c546103b19190611a67565b11156104045760405162461bcd60e51b815260206004820152601660248201527f4d696e74696e67206c696d69742065786365656465640000000000000000000060448201526064015b60405180910390fd5b60408051338152602081018390527ff7f6725b273ddbe730c152e645cb3a946dd37dbc34344ba45f20975ff85aeb92910160405180910390a180609c600082825461044f9190611a67565b909155505060985461046c906001600160a01b0316333084611105565b6099546040516340c10f1960e01b8152336004820152602481018390526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156104b857600080fd5b505af11580156104cc573d6000803e3d6000fd5b5050505050565b6098546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561051c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105409190611a7a565b6097546040517fc3f511c10000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b039091169063c3f511c1906105919087908790600401611a93565b6000604051808303816000875af11580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190611bae565b6098546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a9190611a7a565b905060006106588483611be3565b9050600081116106aa5760405162461bcd60e51b815260206004820152601360248201527f4e6f2074425443207472616e736665727265640000000000000000000000000060448201526064016103fb565b6097546040517fea63738d00000000000000000000000000000000000000000000000000000000815260009161074c916001600160a01b039091169063ea63738d906106fa908890600401611c22565b600060405180830381865afa158015610717573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073f9190810190611c56565b60e0015161012e90611d1f565b90506001600160a01b0381166107a45760405162461bcd60e51b815260206004820152601860248201527f307830207265636569766572206e6f7420616c6c6f776564000000000000000060448201526064016103fb565b609b5482609c546107b59190611a67565b11156107d7576098546107d2906001600160a01b031682846111b6565b610855565b81609c60008282546107e99190611a67565b90915550506099546040516340c10f1960e01b81526001600160a01b03838116600483015260248201859052909116906340c10f1990604401600060405180830381600087803b15801561083c57600080fd5b505af1158015610850573d6000803e3d6000fd5b505050505b604080516001600160a01b0383168152602081018490527fc7f080a0d33152d54d5972f0bac2d7984089c4849e2af42bca1a572728d339d7910160405180910390a150505050505050565b6108a86110ab565b6108b26000611204565b565b6108bc6110ab565b61ffff82166000818152609a6020908152604091829020849055815192835282018390527f1b29e2aa7a790fb04e7d6d73bf7ca63e2b4b1ffe0354fe94b4739c91f1a15359910160405180910390a15050565b600054610100900460ff161580801561092f5750600054600160ff909116105b806109495750303b158015610949575060005460ff166001145b6109bb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103fb565b6000805460ff1916600117905580156109de576000805461ff0019166101001790555b6109e6611263565b6109ee6112d6565b6001600160a01b038416610a6a5760405162461bcd60e51b815260206004820152602760248201527f576f726d686f6c65206272696467652061646472657373206d757374206e6f7460448201527f206265203078300000000000000000000000000000000000000000000000000060648201526084016103fb565b6001600160a01b038316610acc5760405162461bcd60e51b8152602060048201526024808201527f42726964676520746f6b656e2061646472657373206d757374206e6f742062656044820152630203078360e41b60648201526084016103fb565b6001600160a01b038216610b2e5760405162461bcd60e51b8152602060048201526024808201527f4c325442544320746f6b656e2061646472657373206d757374206e6f742062656044820152630203078360e41b60648201526084016103fb565b609780546001600160a01b0380871673ffffffffffffffffffffffffffffffffffffffff1992831617909255609880548684169083161790556099805492851692909116919091179055600019609b558015610bc4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610bd26110ab565b6001600160a01b038116610c4e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103fb565b610c5781611204565b50565b6000610c64611349565b83610cb15760405162461bcd60e51b815260206004820152601960248201527f30783020726563697069656e74206e6f7420616c6c6f7765640000000000000060448201526064016103fb565b85600003610d015760405162461bcd60e51b815260206004820152601460248201527f416d6f756e74206d757374206e6f74206265203000000000000000000000000060448201526064016103fb565b610d0a866113a2565b955085600003610d5c5760405162461bcd60e51b815260206004820152601860248201527f416d6f756e7420746f6f206c6f7720746f20627269646765000000000000000060448201526064016103fb565b6098546040516370a0823160e01b815230600482015287916001600160a01b0316906370a0823190602401602060405180830381865afa158015610da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc89190611a7a565b1015610e3c5760405162461bcd60e51b815260206004820152603160248201527f4e6f7420656e6f75676820776f726d686f6c65207442544320696e207468652060448201527f6761746577617920746f2062726964676500000000000000000000000000000060648201526084016103fb565b61ffff85166000818152609a60209081526040918290205482518a815291820193909352908101829052606081018690526080810185905263ffffffff841660a08201527ffcdb8efef11d13bb0ebc515477ece314fdac305aeba3d6d9d371838bbe2435cf9060c00160405180910390a186609c6000828254610ebf9190611be3565b90915550506099546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018990526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610f2957600080fd5b505af1158015610f3d573d6000803e3d6000fd5b5050609754609854610f5e93506001600160a01b03908116925016896113ca565b80611024576097546098546040517f0f5287b00000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018a905261ffff89166044820152606481018890526084810187905263ffffffff861660a4820152911690630f5287b090349060c4015b60206040518083038185885af1158015610ff7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061101c9190611d46565b915050611098565b6097546098546040805160208082018a905282518083039091018152818301928390527fc5a5ebda000000000000000000000000000000000000000000000000000000009092526001600160a01b039384169363c5a5ebda933493610fd99392909116918d918d9189918c91604401611d70565b6110a26001606555565b95945050505050565b6033546001600160a01b031633146108b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103fb565b6040516001600160a01b0380851660248301528316604482015260648101829052610bc49085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261151f565b6040516001600160a01b0383166024820152604481018290526111ff9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611152565b505050565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166112ce5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b6108b2611604565b600054610100900460ff166113415760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b6108b2611678565b60026065540361139b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103fb565b6002606555565b60006113b36402540be40083611dc0565b91506113c46402540be40083611de2565b92915050565b80158061145d57506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145b9190611a7a565b155b6114cf5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016103fb565b6040516001600160a01b0383166024820152604481018290526111ff9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401611152565b6001606555565b6000611574826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116e39092919063ffffffff16565b8051909150156111ff57808060200190518101906115929190611df9565b6111ff5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103fb565b600054610100900460ff1661166f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b6108b233611204565b600054610100900460ff166115185760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b60606116f284846000856116fa565b949350505050565b6060824710156117725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103fb565b600080866001600160a01b0316858760405161178e9190611e1b565b60006040518083038185875af1925050503d80600081146117cb576040519150601f19603f3d011682016040523d82523d6000602084013e6117d0565b606091505b50915091506117e1878383876117ec565b979650505050505050565b6060831561185b578251600003611854576001600160a01b0385163b6118545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103fb565b50816116f2565b6116f283838151156118705781518083602001fd5b8060405162461bcd60e51b81526004016103fb9190611c22565b60006020828403121561189c57600080fd5b5035919050565b600080602083850312156118b657600080fd5b823567ffffffffffffffff808211156118ce57600080fd5b818501915085601f8301126118e257600080fd5b8135818111156118f157600080fd5b86602082850101111561190357600080fd5b60209290920196919550909350505050565b61ffff81168114610c5757600080fd5b6000806040838503121561193857600080fd5b823561194381611915565b946020939093013593505050565b60006020828403121561196357600080fd5b813561196e81611915565b9392505050565b6001600160a01b0381168114610c5757600080fd5b60008060006060848603121561199f57600080fd5b83356119aa81611975565b925060208401356119ba81611975565b915060408401356119ca81611975565b809150509250925092565b6000602082840312156119e757600080fd5b813561196e81611975565b600080600080600060a08688031215611a0a57600080fd5b853594506020860135611a1c81611915565b93506040860135925060608601359150608086013563ffffffff81168114611a4357600080fd5b809150509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156113c4576113c4611a51565b600060208284031215611a8c57600080fd5b5051919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715611afc57611afc611ac2565b60405290565b60005b83811015611b1d578181015183820152602001611b05565b50506000910152565b600082601f830112611b3757600080fd5b815167ffffffffffffffff80821115611b5257611b52611ac2565b604051601f8301601f19908116603f01168101908282118183101715611b7a57611b7a611ac2565b81604052838152866020858801011115611b9357600080fd5b611ba4846020830160208901611b02565b9695505050505050565b600060208284031215611bc057600080fd5b815167ffffffffffffffff811115611bd757600080fd5b6116f284828501611b26565b818103818111156113c4576113c4611a51565b60008151808452611c0e816020860160208601611b02565b601f01601f19169290920160200192915050565b60208152600061196e6020830184611bf6565b805160ff81168114611c4657600080fd5b919050565b8051611c4681611915565b600060208284031215611c6857600080fd5b815167ffffffffffffffff80821115611c8057600080fd5b908301906101008286031215611c9557600080fd5b611c9d611ad8565b611ca683611c35565b81526020830151602082015260408301516040820152611cc860608401611c4b565b606082015260808301516080820152611ce360a08401611c4b565b60a082015260c083015160c082015260e083015182811115611d0457600080fd5b611d1087828601611b26565b60e08301525095945050505050565b80516020808301519190811015611d40576000198160200360031b1b821691505b50919050565b600060208284031215611d5857600080fd5b815167ffffffffffffffff8116811461196e57600080fd5b6001600160a01b038716815285602082015261ffff8516604082015283606082015263ffffffff8316608082015260c060a08201526000611db460c0830184611bf6565b98975050505050505050565b600082611ddd57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176113c4576113c4611a51565b600060208284031215611e0b57600080fd5b8151801515811461196e57600080fd5b60008251611e2d818460208701611b02565b919091019291505056fea26469706673582212203fcf6da3edc8eecb75051e8952eff919f1a9ccbf1e1cb6683ec8af46d847e39a64736f6c63430008110033",
427
+ "deployedBytecode": "0x60806040526004361061010e5760003560e01c80638da5cb5b116100a5578063e1308b3311610074578063f2fde38b11610059578063f2fde38b146102f1578063f4734b0c14610311578063f69785f31461033157600080fd5b8063e1308b33146102b1578063e78cea92146102d157600080fd5b80638da5cb5b1461021f578063b4ccd8681461023d578063c0c53b8b1461026a578063ca05f9851461028a57600080fd5b806349072f12116100e157806349072f12146101b45780635d21a596146101ca578063715018a6146101ea57806375b1beaa146101ff57600080fd5b80630b575fe6146101135780632d3802421461014e578063363da98e1461017257806344949c9214610194575b600080fd5b34801561011f57600080fd5b5061013161012e36600461188a565b90565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015a57600080fd5b50610164609c5481565b604051908152602001610145565b34801561017e57600080fd5b5061019261018d36600461188a565b61035d565b005b3480156101a057600080fd5b506101926101af36600461188a565b6103a0565b3480156101c057600080fd5b50610164609b5481565b3480156101d657600080fd5b506101926101e53660046118a3565b6104d3565b3480156101f657600080fd5b506101926108a0565b34801561020b57600080fd5b5061019261021a366004611925565b6108b4565b34801561022b57600080fd5b506033546001600160a01b0316610131565b34801561024957600080fd5b50610164610258366004611951565b609a6020526000908152604090205481565b34801561027657600080fd5b5061019261028536600461198a565b61090f565b34801561029657600080fd5b506101646102a53660046119d5565b6001600160a01b031690565b3480156102bd57600080fd5b50609954610131906001600160a01b031681565b3480156102dd57600080fd5b50609754610131906001600160a01b031681565b3480156102fd57600080fd5b5061019261030c3660046119d5565b610bca565b34801561031d57600080fd5b50609854610131906001600160a01b031681565b61034461033f3660046119f2565b610c5a565b60405167ffffffffffffffff9091168152602001610145565b6103656110ab565b609b8190556040518181527f876c61ade8d7fbb62356eefa0f1cb0d6d95fc5269dbe8d0d636051daa88d73999060200160405180910390a150565b609b5481609c546103b19190611a67565b11156104045760405162461bcd60e51b815260206004820152601660248201527f4d696e74696e67206c696d69742065786365656465640000000000000000000060448201526064015b60405180910390fd5b60408051338152602081018390527ff7f6725b273ddbe730c152e645cb3a946dd37dbc34344ba45f20975ff85aeb92910160405180910390a180609c600082825461044f9190611a67565b909155505060985461046c906001600160a01b0316333084611105565b6099546040516340c10f1960e01b8152336004820152602481018390526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156104b857600080fd5b505af11580156104cc573d6000803e3d6000fd5b5050505050565b6098546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561051c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105409190611a7a565b6097546040517fc3f511c10000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b039091169063c3f511c1906105919087908790600401611a93565b6000604051808303816000875af11580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190611bae565b6098546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a9190611a7a565b905060006106588483611be3565b9050600081116106aa5760405162461bcd60e51b815260206004820152601360248201527f4e6f2074425443207472616e736665727265640000000000000000000000000060448201526064016103fb565b6097546040517fea63738d00000000000000000000000000000000000000000000000000000000815260009161074c916001600160a01b039091169063ea63738d906106fa908890600401611c22565b600060405180830381865afa158015610717573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073f9190810190611c56565b60e0015161012e90611d1f565b90506001600160a01b0381166107a45760405162461bcd60e51b815260206004820152601860248201527f307830207265636569766572206e6f7420616c6c6f776564000000000000000060448201526064016103fb565b609b5482609c546107b59190611a67565b11156107d7576098546107d2906001600160a01b031682846111b6565b610855565b81609c60008282546107e99190611a67565b90915550506099546040516340c10f1960e01b81526001600160a01b03838116600483015260248201859052909116906340c10f1990604401600060405180830381600087803b15801561083c57600080fd5b505af1158015610850573d6000803e3d6000fd5b505050505b604080516001600160a01b0383168152602081018490527fc7f080a0d33152d54d5972f0bac2d7984089c4849e2af42bca1a572728d339d7910160405180910390a150505050505050565b6108a86110ab565b6108b26000611204565b565b6108bc6110ab565b61ffff82166000818152609a6020908152604091829020849055815192835282018390527f1b29e2aa7a790fb04e7d6d73bf7ca63e2b4b1ffe0354fe94b4739c91f1a15359910160405180910390a15050565b600054610100900460ff161580801561092f5750600054600160ff909116105b806109495750303b158015610949575060005460ff166001145b6109bb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103fb565b6000805460ff1916600117905580156109de576000805461ff0019166101001790555b6109e6611263565b6109ee6112d6565b6001600160a01b038416610a6a5760405162461bcd60e51b815260206004820152602760248201527f576f726d686f6c65206272696467652061646472657373206d757374206e6f7460448201527f206265203078300000000000000000000000000000000000000000000000000060648201526084016103fb565b6001600160a01b038316610acc5760405162461bcd60e51b8152602060048201526024808201527f42726964676520746f6b656e2061646472657373206d757374206e6f742062656044820152630203078360e41b60648201526084016103fb565b6001600160a01b038216610b2e5760405162461bcd60e51b8152602060048201526024808201527f4c325442544320746f6b656e2061646472657373206d757374206e6f742062656044820152630203078360e41b60648201526084016103fb565b609780546001600160a01b0380871673ffffffffffffffffffffffffffffffffffffffff1992831617909255609880548684169083161790556099805492851692909116919091179055600019609b558015610bc4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610bd26110ab565b6001600160a01b038116610c4e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103fb565b610c5781611204565b50565b6000610c64611349565b83610cb15760405162461bcd60e51b815260206004820152601960248201527f30783020726563697069656e74206e6f7420616c6c6f7765640000000000000060448201526064016103fb565b85600003610d015760405162461bcd60e51b815260206004820152601460248201527f416d6f756e74206d757374206e6f74206265203000000000000000000000000060448201526064016103fb565b610d0a866113a2565b955085600003610d5c5760405162461bcd60e51b815260206004820152601860248201527f416d6f756e7420746f6f206c6f7720746f20627269646765000000000000000060448201526064016103fb565b6098546040516370a0823160e01b815230600482015287916001600160a01b0316906370a0823190602401602060405180830381865afa158015610da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc89190611a7a565b1015610e3c5760405162461bcd60e51b815260206004820152603160248201527f4e6f7420656e6f75676820776f726d686f6c65207442544320696e207468652060448201527f6761746577617920746f2062726964676500000000000000000000000000000060648201526084016103fb565b61ffff85166000818152609a60209081526040918290205482518a815291820193909352908101829052606081018690526080810185905263ffffffff841660a08201527ffcdb8efef11d13bb0ebc515477ece314fdac305aeba3d6d9d371838bbe2435cf9060c00160405180910390a186609c6000828254610ebf9190611be3565b90915550506099546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018990526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610f2957600080fd5b505af1158015610f3d573d6000803e3d6000fd5b5050609754609854610f5e93506001600160a01b03908116925016896113ca565b80611024576097546098546040517f0f5287b00000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018a905261ffff89166044820152606481018890526084810187905263ffffffff861660a4820152911690630f5287b090349060c4015b60206040518083038185885af1158015610ff7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061101c9190611d46565b915050611098565b6097546098546040805160208082018a905282518083039091018152818301928390527fc5a5ebda000000000000000000000000000000000000000000000000000000009092526001600160a01b039384169363c5a5ebda933493610fd99392909116918d918d9189918c91604401611d70565b6110a26001606555565b95945050505050565b6033546001600160a01b031633146108b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103fb565b6040516001600160a01b0380851660248301528316604482015260648101829052610bc49085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261151f565b6040516001600160a01b0383166024820152604481018290526111ff9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611152565b505050565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166112ce5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b6108b2611604565b600054610100900460ff166113415760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b6108b2611678565b60026065540361139b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103fb565b6002606555565b60006113b36402540be40083611dc0565b91506113c46402540be40083611de2565b92915050565b80158061145d57506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145b9190611a7a565b155b6114cf5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016103fb565b6040516001600160a01b0383166024820152604481018290526111ff9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401611152565b6001606555565b6000611574826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116e39092919063ffffffff16565b8051909150156111ff57808060200190518101906115929190611df9565b6111ff5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103fb565b600054610100900460ff1661166f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b6108b233611204565b600054610100900460ff166115185760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fb565b60606116f284846000856116fa565b949350505050565b6060824710156117725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103fb565b600080866001600160a01b0316858760405161178e9190611e1b565b60006040518083038185875af1925050503d80600081146117cb576040519150601f19603f3d011682016040523d82523d6000602084013e6117d0565b606091505b50915091506117e1878383876117ec565b979650505050505050565b6060831561185b578251600003611854576001600160a01b0385163b6118545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103fb565b50816116f2565b6116f283838151156118705781518083602001fd5b8060405162461bcd60e51b81526004016103fb9190611c22565b60006020828403121561189c57600080fd5b5035919050565b600080602083850312156118b657600080fd5b823567ffffffffffffffff808211156118ce57600080fd5b818501915085601f8301126118e257600080fd5b8135818111156118f157600080fd5b86602082850101111561190357600080fd5b60209290920196919550909350505050565b61ffff81168114610c5757600080fd5b6000806040838503121561193857600080fd5b823561194381611915565b946020939093013593505050565b60006020828403121561196357600080fd5b813561196e81611915565b9392505050565b6001600160a01b0381168114610c5757600080fd5b60008060006060848603121561199f57600080fd5b83356119aa81611975565b925060208401356119ba81611975565b915060408401356119ca81611975565b809150509250925092565b6000602082840312156119e757600080fd5b813561196e81611975565b600080600080600060a08688031215611a0a57600080fd5b853594506020860135611a1c81611915565b93506040860135925060608601359150608086013563ffffffff81168114611a4357600080fd5b809150509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156113c4576113c4611a51565b600060208284031215611a8c57600080fd5b5051919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715611afc57611afc611ac2565b60405290565b60005b83811015611b1d578181015183820152602001611b05565b50506000910152565b600082601f830112611b3757600080fd5b815167ffffffffffffffff80821115611b5257611b52611ac2565b604051601f8301601f19908116603f01168101908282118183101715611b7a57611b7a611ac2565b81604052838152866020858801011115611b9357600080fd5b611ba4846020830160208901611b02565b9695505050505050565b600060208284031215611bc057600080fd5b815167ffffffffffffffff811115611bd757600080fd5b6116f284828501611b26565b818103818111156113c4576113c4611a51565b60008151808452611c0e816020860160208601611b02565b601f01601f19169290920160200192915050565b60208152600061196e6020830184611bf6565b805160ff81168114611c4657600080fd5b919050565b8051611c4681611915565b600060208284031215611c6857600080fd5b815167ffffffffffffffff80821115611c8057600080fd5b908301906101008286031215611c9557600080fd5b611c9d611ad8565b611ca683611c35565b81526020830151602082015260408301516040820152611cc860608401611c4b565b606082015260808301516080820152611ce360a08401611c4b565b60a082015260c083015160c082015260e083015182811115611d0457600080fd5b611d1087828601611b26565b60e08301525095945050505050565b80516020808301519190811015611d40576000198160200360031b1b821691505b50919050565b600060208284031215611d5857600080fd5b815167ffffffffffffffff8116811461196e57600080fd5b6001600160a01b038716815285602082015261ffff8516604082015283606082015263ffffffff8316608082015260c060a08201526000611db460c0830184611bf6565b98975050505050505050565b600082611ddd57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176113c4576113c4611a51565b600060208284031215611e0b57600080fd5b8151801515811461196e57600080fd5b60008251611e2d818460208701611b02565b919091019291505056fea26469706673582212203fcf6da3edc8eecb75051e8952eff919f1a9ccbf1e1cb6683ec8af46d847e39a64736f6c63430008110033",
428
428
  "linkReferences": {},
429
429
  "deployedLinkReferences": {}
430
430
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/27cc00f982604c703f93f656ecec771f.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ef33cd4753745db687642a328f6b9b2e.json"
3
+ "buildInfo": "../../../build-info/225f5956cbaf95916a1f4d1338e3660c.json"
4
4
  }
@@ -192,7 +192,8 @@ contract L2WormholeGateway is
192
192
  /// - The L2WormholeGateway must have at least `amount` of the wormhole
193
193
  /// tBTC.
194
194
  /// - The recipient must not be 0x0.
195
- /// - The amount to transfer must not be 0.
195
+ /// - The amount to transfer must not be 0,
196
+ /// - The amount to transfer must be >= 10^10 (1e18 precision).
196
197
  /// Depending if Wormhole tBTC gateway is registered on the target
197
198
  /// chain, this function uses transfer or transfer with payload over
198
199
  /// the Wormhole bridge.
@@ -210,14 +211,21 @@ contract L2WormholeGateway is
210
211
  uint256 arbiterFee,
211
212
  uint32 nonce
212
213
  ) external payable nonReentrant returns (uint64) {
214
+ require(recipient != bytes32(0), "0x0 recipient not allowed");
215
+ require(amount != 0, "Amount must not be 0");
216
+
217
+ // Normalize the amount to bridge. The dust can not be bridged due to
218
+ // the decimal shift in the Wormhole Bridge contract.
219
+ amount = normalize(amount);
220
+
221
+ // Check again after dropping the dust.
222
+ require(amount != 0, "Amount too low to bridge");
223
+
213
224
  require(
214
225
  bridgeToken.balanceOf(address(this)) >= amount,
215
226
  "Not enough wormhole tBTC in the gateway to bridge"
216
227
  );
217
228
 
218
- require(recipient != bytes32(0), "0x0 recipient not allowed");
219
- require(amount != 0, "Amount must not be 0");
220
-
221
229
  bytes32 gateway = gateways[recipientChain];
222
230
 
223
231
  emit WormholeTbtcSent(
@@ -386,4 +394,14 @@ contract L2WormholeGateway is
386
394
  {
387
395
  return address(uint160(uint256(_address)));
388
396
  }
397
+
398
+ /// @dev Eliminates the dust that cannot be bridged with Wormhole
399
+ /// due to the decimal shift in the Wormhole Bridge contract.
400
+ /// See https://github.com/wormhole-foundation/wormhole/blob/96682bdbeb7c87bfa110eade0554b3d8cbf788d2/ethereum/contracts/bridge/Bridge.sol#L276-L288
401
+ function normalize(uint256 amount) internal pure returns (uint256) {
402
+ // slither-disable-next-line divide-before-multiply
403
+ amount /= 10**10;
404
+ amount *= 10**10;
405
+ return amount;
406
+ }
389
407
  }
@@ -109,32 +109,32 @@
109
109
  {
110
110
  "ast": {
111
111
  "nodeType": "YulBlock",
112
- "src": "0:201:123",
112
+ "src": "0:201:125",
113
113
  "statements": [
114
114
  {
115
115
  "nodeType": "YulBlock",
116
- "src": "6:3:123",
116
+ "src": "6:3:125",
117
117
  "statements": []
118
118
  },
119
119
  {
120
120
  "body": {
121
121
  "nodeType": "YulBlock",
122
- "src": "123:76:123",
122
+ "src": "123:76:125",
123
123
  "statements": [
124
124
  {
125
125
  "nodeType": "YulAssignment",
126
- "src": "133:26:123",
126
+ "src": "133:26:125",
127
127
  "value": {
128
128
  "arguments": [
129
129
  {
130
130
  "name": "headStart",
131
131
  "nodeType": "YulIdentifier",
132
- "src": "145:9:123"
132
+ "src": "145:9:125"
133
133
  },
134
134
  {
135
135
  "kind": "number",
136
136
  "nodeType": "YulLiteral",
137
- "src": "156:2:123",
137
+ "src": "156:2:125",
138
138
  "type": "",
139
139
  "value": "32"
140
140
  }
@@ -142,16 +142,16 @@
142
142
  "functionName": {
143
143
  "name": "add",
144
144
  "nodeType": "YulIdentifier",
145
- "src": "141:3:123"
145
+ "src": "141:3:125"
146
146
  },
147
147
  "nodeType": "YulFunctionCall",
148
- "src": "141:18:123"
148
+ "src": "141:18:125"
149
149
  },
150
150
  "variableNames": [
151
151
  {
152
152
  "name": "tail",
153
153
  "nodeType": "YulIdentifier",
154
- "src": "133:4:123"
154
+ "src": "133:4:125"
155
155
  }
156
156
  ]
157
157
  },
@@ -161,24 +161,24 @@
161
161
  {
162
162
  "name": "headStart",
163
163
  "nodeType": "YulIdentifier",
164
- "src": "175:9:123"
164
+ "src": "175:9:125"
165
165
  },
166
166
  {
167
167
  "name": "value0",
168
168
  "nodeType": "YulIdentifier",
169
- "src": "186:6:123"
169
+ "src": "186:6:125"
170
170
  }
171
171
  ],
172
172
  "functionName": {
173
173
  "name": "mstore",
174
174
  "nodeType": "YulIdentifier",
175
- "src": "168:6:123"
175
+ "src": "168:6:125"
176
176
  },
177
177
  "nodeType": "YulFunctionCall",
178
- "src": "168:25:123"
178
+ "src": "168:25:125"
179
179
  },
180
180
  "nodeType": "YulExpressionStatement",
181
- "src": "168:25:123"
181
+ "src": "168:25:125"
182
182
  }
183
183
  ]
184
184
  },
@@ -188,13 +188,13 @@
188
188
  {
189
189
  "name": "headStart",
190
190
  "nodeType": "YulTypedName",
191
- "src": "92:9:123",
191
+ "src": "92:9:125",
192
192
  "type": ""
193
193
  },
194
194
  {
195
195
  "name": "value0",
196
196
  "nodeType": "YulTypedName",
197
- "src": "103:6:123",
197
+ "src": "103:6:125",
198
198
  "type": ""
199
199
  }
200
200
  ],
@@ -202,16 +202,16 @@
202
202
  {
203
203
  "name": "tail",
204
204
  "nodeType": "YulTypedName",
205
- "src": "114:4:123",
205
+ "src": "114:4:125",
206
206
  "type": ""
207
207
  }
208
208
  ],
209
- "src": "14:185:123"
209
+ "src": "14:185:125"
210
210
  }
211
211
  ]
212
212
  },
213
213
  "contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n}",
214
- "id": 123,
214
+ "id": 125,
215
215
  "language": "Yul",
216
216
  "name": "#utility.yul"
217
217
  }
@@ -219,7 +219,7 @@
219
219
  "immutableReferences": {},
220
220
  "linkReferences": {},
221
221
  "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x51 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x56E04EC EQ PUSH1 0x56 JUMPI DUP1 PUSH4 0x8CC71569 EQ PUSH1 0x71 JUMPI DUP1 PUSH4 0x8DB69E60 EQ PUSH1 0x79 JUMPI DUP1 PUSH4 0xD4258CA7 EQ PUSH1 0x81 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5F PUSH3 0x127500 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x5F PUSH2 0x7E0 DUP2 JUMP JUMPDEST PUSH1 0x5F PUSH1 0x0 NOT DUP2 JUMP JUMPDEST PUSH1 0x5F PUSH28 0xFFFF0000000000000000000000000000000000000000000000000000 DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 0xD8 0x5F GT 0xF6 0x4E 0xD4 0x4F 0xFB 0xA5 SWAP12 0xFC PUSH12 0x4A327F00D51E8E91CA784A04 DUP14 CALLDATACOPY 0x29 0xDB ADD 0xB3 PUSH32 0x64736F6C63430008110033000000000000000000000000000000000000000000 ",
222
- "sourceMap": "175:38691:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;443:62;;485:20;443:62;;;;;168:25:123;;;156:2;141:18;443:62:0;;;;;;;534:53;;583:4;534:53;;616:104;;-1:-1:-1;;616:104:0;;339:97;;378:58;339:97;"
222
+ "sourceMap": "175:38691:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;443:62;;485:20;443:62;;;;;168:25:125;;;156:2;141:18;443:62:0;;;;;;;534:53;;583:4;534:53;;616:104;;-1:-1:-1;;616:104:0;;339:97;;378:58;339:97;"
223
223
  },
224
224
  "gasEstimates": {
225
225
  "creation": {