@keep-network/tbtc-v2 0.1.1-dev.73 → 0.1.1-dev.76

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 (76) hide show
  1. package/artifacts/Bank.json +13 -13
  2. package/artifacts/Bridge.json +90 -2
  3. package/artifacts/DefaultProxyAdmin.json +5 -5
  4. package/artifacts/Deposit.json +7 -7
  5. package/artifacts/DepositSweep.json +7 -7
  6. package/artifacts/EcdsaDkgValidator.json +9 -9
  7. package/artifacts/EcdsaInactivity.json +8 -8
  8. package/artifacts/Fraud.json +7 -7
  9. package/artifacts/KeepRegistry.json +1 -1
  10. package/artifacts/KeepStake.json +2 -2
  11. package/artifacts/KeepToken.json +2 -2
  12. package/artifacts/KeepTokenStaking.json +1 -1
  13. package/artifacts/MovingFunds.json +10 -10
  14. package/artifacts/NuCypherStakingEscrow.json +1 -1
  15. package/artifacts/NuCypherToken.json +2 -2
  16. package/artifacts/RandomBeaconStub.json +5 -5
  17. package/artifacts/Redemption.json +7 -7
  18. package/artifacts/ReimbursementPool.json +5 -5
  19. package/artifacts/Relay.json +9 -9
  20. package/artifacts/SortitionPool.json +9 -9
  21. package/artifacts/T.json +2 -2
  22. package/artifacts/TBTC.json +17 -17
  23. package/artifacts/TBTCToken.json +15 -15
  24. package/artifacts/TokenStaking.json +1 -1
  25. package/artifacts/TokenholderGovernor.json +9 -9
  26. package/artifacts/TokenholderTimelock.json +8 -8
  27. package/artifacts/VendingMachine.json +18 -18
  28. package/artifacts/VendingMachineKeep.json +1 -1
  29. package/artifacts/VendingMachineNuCypher.json +1 -1
  30. package/artifacts/WalletRegistry.json +17 -17
  31. package/artifacts/WalletRegistry_Implementation.json +73 -73
  32. package/artifacts/WalletRegistry_Proxy.json +17 -17
  33. package/artifacts/Wallets.json +9 -9
  34. package/artifacts/solcInputs/{6b8b6752e7756c1730fe99037bcdde62.json → 49c80d59bf0ae61f27a8bb5db19af68a.json} +67 -64
  35. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  36. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  37. package/build/contracts/bank/Bank.sol/Bank.json +2 -2
  38. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  39. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +2 -2
  40. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  41. package/build/contracts/bridge/Bridge.sol/Bridge.json +58 -42
  42. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
  43. package/build/contracts/bridge/BridgeState.sol/BridgeState.json +8 -2
  44. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
  45. package/build/contracts/bridge/Deposit.sol/Deposit.json +2 -2
  46. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
  47. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.json +2 -2
  48. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
  49. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
  50. package/build/contracts/bridge/Fraud.sol/Fraud.json +2 -2
  51. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
  52. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
  53. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
  54. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.json +2 -2
  55. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
  56. package/build/contracts/bridge/Redemption.sol/OutboundTx.json +2 -2
  57. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
  58. package/build/contracts/bridge/Redemption.sol/Redemption.json +2 -2
  59. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  60. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.json +2 -2
  61. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
  62. package/build/contracts/bridge/Wallets.sol/Wallets.json +2 -2
  63. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  64. package/build/contracts/token/TBTC.sol/TBTC.json +2 -2
  65. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
  66. package/build/contracts/vault/DonationVault.sol/DonationVault.json +2 -2
  67. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  68. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  69. package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +2 -2
  70. package/contracts/bridge/Bridge.sol +31 -10
  71. package/contracts/bridge/BridgeState.sol +33 -7
  72. package/contracts/bridge/MovingFunds.sol +10 -1
  73. package/contracts/bridge/Redemption.sol +1 -0
  74. package/deploy/09_transfer_proxy_admin_ownership.ts +2 -2
  75. package/export.json +13 -0
  76. package/package.json +5 -5
@@ -526,8 +526,8 @@
526
526
  "type": "function"
527
527
  }
528
528
  ],
529
- "bytecode": "0x60c06040523480156200001157600080fd5b50604051806040016040528060078152602001663a212a21903b1960c91b815250604051806040016040528060048152602001637442544360e01b8152506200006962000063620000af60201b60201c565b620000b3565b81516200007e906005906020850190620001b4565b50805162000094906006906020840190620001b4565b5046608052620000a362000103565b60a052506200033b9050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600560405162000137919062000297565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b828054620001c2906200025a565b90600052602060002090601f016020900481019282620001e6576000855562000231565b82601f106200020157805160ff191683800117855562000231565b8280016001018555821562000231579182015b828111156200023157825182559160200191906001019062000214565b506200023f92915062000243565b5090565b5b808211156200023f576000815560010162000244565b600181811c908216806200026f57607f821691505b602082108114156200029157634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620002b457607f831692505b6020808410821415620002d557634e487b7160e01b86526022600452602486fd5b818015620002ec5760018114620002fe576200032d565b60ff198616895284890196506200032d565b60008a81526020902060005b86811015620003255781548b8201529085019083016200030a565b505084890196505b509498975050505050505050565b60805160a051611b9f6200036f6000396000818161034901526105fa0152600081816102d901526105d10152611b9f6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c8063715018a6116100e3578063b4f94b2e1161008c578063dd62ed3e11610066578063dd62ed3e14610391578063f2fde38b146103bc578063fc4e51f6146103cf57600080fd5b8063b4f94b2e14610344578063cae9ca511461036b578063d505accf1461037e57600080fd5b80638da5cb5b116100bd5780638da5cb5b1461030e57806395d89b4114610329578063a9059cbb1461033157600080fd5b8063715018a6146102cc578063771da5c5146102d457806379cc6790146102fb57600080fd5b8063313ce5671161014557806342966c681161011f57806342966c681461027957806370a082311461028c57806370ae92d2146102ac57600080fd5b8063313ce567146102445780633644e5151461025e57806340c10f191461026657600080fd5b806318160ddd1161017657806318160ddd146101f357806323b872dd1461020a57806330adf81f1461021d57600080fd5b806306fdde031461019d578063095ea7b3146101bb5780631171bda9146101de575b600080fd5b6101a56103e2565b6040516101b29190611667565b60405180910390f35b6101ce6101c936600461168f565b610470565b60405190151581526020016101b2565b6101f16101ec3660046116bb565b610486565b005b6101fc60045481565b6040519081526020016101b2565b6101ce6102183660046116bb565b6104fe565b6101fc7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61024c601281565b60405160ff90911681526020016101b2565b6101fc6105cd565b6101f161027436600461168f565b610629565b6101f16102873660046116fc565b610762565b6101fc61029a366004611715565b60016020526000908152604090205481565b6101fc6102ba366004611715565b60036020526000908152604090205481565b6101f161076f565b6101fc7f000000000000000000000000000000000000000000000000000000000000000081565b6101f161030936600461168f565b6107d5565b6000546040516001600160a01b0390911681526020016101b2565b6101a561086b565b6101ce61033f36600461168f565b610878565b6101fc7f000000000000000000000000000000000000000000000000000000000000000081565b6101ce610379366004611748565b610885565b6101f161038c366004611815565b610926565b6101fc61039f36600461188c565b600260209081526000928352604080842090915290825290205481565b6101f16103ca366004611715565b610c36565b6101f16103dd3660046118c5565b610d15565b600580546103ef90611964565b80601f016020809104026020016040519081016040528092919081815260200182805461041b90611964565b80156104685780601f1061043d57610100808354040283529160200191610468565b820191906000526020600020905b81548152906001019060200180831161044b57829003601f168201915b505050505081565b600061047d338484610dea565b50600192915050565b6000546001600160a01b031633146104e55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6104f96001600160a01b0384168383610ef8565b505050565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001981146105b557828110156105a15760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016104dc565b6105b585336105b086856119b5565b610dea565b6105c0858585610f78565b60019150505b9392505050565b60007f000000000000000000000000000000000000000000000000000000000000000046141561061c57507f000000000000000000000000000000000000000000000000000000000000000090565b610624611180565b905090565b6000546001600160a01b031633146106835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6001600160a01b0382166106d95760405162461bcd60e51b815260206004820152601860248201527f4d696e7420746f20746865207a65726f2061646472657373000000000000000060448201526064016104dc565b80600460008282546106eb91906119cc565b90915550506001600160a01b038216600090815260016020526040812080548392906107189084906119cc565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b61076c338261124b565b50565b6000546001600160a01b031633146107c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6107d3600061132f565b565b6001600160a01b0382166000908152600260209081526040808320338452909152902054600019811461086157818110156108525760405162461bcd60e51b815260206004820152601d60248201527f4275726e20616d6f756e74206578636565647320616c6c6f77616e636500000060448201526064016104dc565b61086183336105b085856119b5565b6104f9838361124b565b600680546103ef90611964565b600061047d338484610f78565b60006108918484610470565b1561091c576040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638f4ffcb1906108e19033908790309088906004016119e4565b600060405180830381600087803b1580156108fb57600080fd5b505af115801561090f573d6000803e3d6000fd5b50505050600190506105c6565b5060009392505050565b428410156109765760405162461bcd60e51b815260206004820152601260248201527f5065726d697373696f6e2065787069726564000000000000000000000000000060448201526064016104dc565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08111156109e65760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964207369676e6174757265202773272076616c7565000000000060448201526064016104dc565b8260ff16601b14806109fb57508260ff16601c145b610a475760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964207369676e6174757265202776272076616c7565000000000060448201526064016104dc565b6000610a516105cd565b6001600160a01b038916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c92909190610a9f83611a20565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001610b339291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610b9e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610bd45750886001600160a01b0316816001600160a01b0316145b610c205760405162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e617475726500000000000000000000000000000060448201526064016104dc565b610c2b898989610dea565b505050505050505050565b6000546001600160a01b03163314610c905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6001600160a01b038116610d0c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104dc565b61076c8161132f565b6000546001600160a01b03163314610d6f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde90610dbc9030908890889088908890600401611a3b565b600060405180830381600087803b158015610dd657600080fd5b505af1158015610c2b573d6000803e3d6000fd5b6001600160a01b038316610e405760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f206164647265737300000060448201526064016104dc565b6001600160a01b038216610e965760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f2061646472657373000000000060448201526064016104dc565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f9908490611397565b6001600160a01b038316610fce5760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016104dc565b6001600160a01b0382166110245760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016104dc565b6001600160a01b03821630141561107d5760405162461bcd60e51b815260206004820152601d60248201527f5472616e7366657220746f2074686520746f6b656e206164647265737300000060448201526064016104dc565b6001600160a01b038316600090815260016020526040902054818110156110e65760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e63650060448201526064016104dc565b6110f082826119b5565b6001600160a01b0380861660009081526001602052604080822093909355908516815290812080548492906111269084906119cc565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161117291815260200190565b60405180910390a350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60056040516111b29190611a8f565b604080519182900382208282018252600183527f31000000000000000000000000000000000000000000000000000000000000006020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b038216600090815260016020526040902054818110156112b45760405162461bcd60e51b815260206004820152601b60248201527f4275726e20616d6f756e7420657863656564732062616c616e6365000000000060448201526064016104dc565b6112be82826119b5565b6001600160a01b038416600090815260016020526040812091909155600480548492906112ec9084906119b5565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610eeb565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006113ec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661147c9092919063ffffffff16565b8051909150156104f9578080602001905181019061140a9190611b2b565b6104f95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104dc565b606061148b8484600085611493565b949350505050565b60608247101561150b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016104dc565b843b6115595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104dc565b600080866001600160a01b031685876040516115759190611b4d565b60006040518083038185875af1925050503d80600081146115b2576040519150601f19603f3d011682016040523d82523d6000602084013e6115b7565b606091505b50915091506115c78282866115d2565b979650505050505050565b606083156115e15750816105c6565b8251156115f15782518084602001fd5b8160405162461bcd60e51b81526004016104dc9190611667565b60005b8381101561162657818101518382015260200161160e565b83811115611635576000848401525b50505050565b6000815180845261165381602086016020860161160b565b601f01601f19169290920160200192915050565b6020815260006105c6602083018461163b565b6001600160a01b038116811461076c57600080fd5b600080604083850312156116a257600080fd5b82356116ad8161167a565b946020939093013593505050565b6000806000606084860312156116d057600080fd5b83356116db8161167a565b925060208401356116eb8161167a565b929592945050506040919091013590565b60006020828403121561170e57600080fd5b5035919050565b60006020828403121561172757600080fd5b81356105c68161167a565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561175d57600080fd5b83356117688161167a565b925060208401359150604084013567ffffffffffffffff8082111561178c57600080fd5b818601915086601f8301126117a057600080fd5b8135818111156117b2576117b2611732565b604051601f8201601f19908116603f011681019083821181831017156117da576117da611732565b816040528281528960208487010111156117f357600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080600080600080600060e0888a03121561183057600080fd5b873561183b8161167a565b9650602088013561184b8161167a565b95506040880135945060608801359350608088013560ff8116811461186f57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561189f57600080fd5b82356118aa8161167a565b915060208301356118ba8161167a565b809150509250929050565b6000806000806000608086880312156118dd57600080fd5b85356118e88161167a565b945060208601356118f88161167a565b935060408601359250606086013567ffffffffffffffff8082111561191c57600080fd5b818801915088601f83011261193057600080fd5b81358181111561193f57600080fd5b89602082850101111561195157600080fd5b9699959850939650602001949392505050565b600181811c9082168061197857607f821691505b6020821081141561199957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156119c7576119c761199f565b500390565b600082198211156119df576119df61199f565b500190565b60006001600160a01b03808716835285602084015280851660408401525060806060830152611a16608083018461163b565b9695505050505050565b6000600019821415611a3457611a3461199f565b5060010190565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600080835481600182811c915080831680611aab57607f831692505b6020808410821415611acb57634e487b7160e01b86526022600452602486fd5b818015611adf5760018114611af057611b1d565b60ff19861689528489019650611b1d565b60008a81526020902060005b86811015611b155781548b820152908501908301611afc565b505084890196505b509498975050505050505050565b600060208284031215611b3d57600080fd5b815180151581146105c657600080fd5b60008251611b5f81846020870161160b565b919091019291505056fea264697066735822122015aa14a90768c9a31ae2481c3bae0e01c7b4bca70d7462b79f0f8063c003ff0664736f6c63430008090033",
530
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101985760003560e01c8063715018a6116100e3578063b4f94b2e1161008c578063dd62ed3e11610066578063dd62ed3e14610391578063f2fde38b146103bc578063fc4e51f6146103cf57600080fd5b8063b4f94b2e14610344578063cae9ca511461036b578063d505accf1461037e57600080fd5b80638da5cb5b116100bd5780638da5cb5b1461030e57806395d89b4114610329578063a9059cbb1461033157600080fd5b8063715018a6146102cc578063771da5c5146102d457806379cc6790146102fb57600080fd5b8063313ce5671161014557806342966c681161011f57806342966c681461027957806370a082311461028c57806370ae92d2146102ac57600080fd5b8063313ce567146102445780633644e5151461025e57806340c10f191461026657600080fd5b806318160ddd1161017657806318160ddd146101f357806323b872dd1461020a57806330adf81f1461021d57600080fd5b806306fdde031461019d578063095ea7b3146101bb5780631171bda9146101de575b600080fd5b6101a56103e2565b6040516101b29190611667565b60405180910390f35b6101ce6101c936600461168f565b610470565b60405190151581526020016101b2565b6101f16101ec3660046116bb565b610486565b005b6101fc60045481565b6040519081526020016101b2565b6101ce6102183660046116bb565b6104fe565b6101fc7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61024c601281565b60405160ff90911681526020016101b2565b6101fc6105cd565b6101f161027436600461168f565b610629565b6101f16102873660046116fc565b610762565b6101fc61029a366004611715565b60016020526000908152604090205481565b6101fc6102ba366004611715565b60036020526000908152604090205481565b6101f161076f565b6101fc7f000000000000000000000000000000000000000000000000000000000000000081565b6101f161030936600461168f565b6107d5565b6000546040516001600160a01b0390911681526020016101b2565b6101a561086b565b6101ce61033f36600461168f565b610878565b6101fc7f000000000000000000000000000000000000000000000000000000000000000081565b6101ce610379366004611748565b610885565b6101f161038c366004611815565b610926565b6101fc61039f36600461188c565b600260209081526000928352604080842090915290825290205481565b6101f16103ca366004611715565b610c36565b6101f16103dd3660046118c5565b610d15565b600580546103ef90611964565b80601f016020809104026020016040519081016040528092919081815260200182805461041b90611964565b80156104685780601f1061043d57610100808354040283529160200191610468565b820191906000526020600020905b81548152906001019060200180831161044b57829003601f168201915b505050505081565b600061047d338484610dea565b50600192915050565b6000546001600160a01b031633146104e55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6104f96001600160a01b0384168383610ef8565b505050565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001981146105b557828110156105a15760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016104dc565b6105b585336105b086856119b5565b610dea565b6105c0858585610f78565b60019150505b9392505050565b60007f000000000000000000000000000000000000000000000000000000000000000046141561061c57507f000000000000000000000000000000000000000000000000000000000000000090565b610624611180565b905090565b6000546001600160a01b031633146106835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6001600160a01b0382166106d95760405162461bcd60e51b815260206004820152601860248201527f4d696e7420746f20746865207a65726f2061646472657373000000000000000060448201526064016104dc565b80600460008282546106eb91906119cc565b90915550506001600160a01b038216600090815260016020526040812080548392906107189084906119cc565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b61076c338261124b565b50565b6000546001600160a01b031633146107c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6107d3600061132f565b565b6001600160a01b0382166000908152600260209081526040808320338452909152902054600019811461086157818110156108525760405162461bcd60e51b815260206004820152601d60248201527f4275726e20616d6f756e74206578636565647320616c6c6f77616e636500000060448201526064016104dc565b61086183336105b085856119b5565b6104f9838361124b565b600680546103ef90611964565b600061047d338484610f78565b60006108918484610470565b1561091c576040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638f4ffcb1906108e19033908790309088906004016119e4565b600060405180830381600087803b1580156108fb57600080fd5b505af115801561090f573d6000803e3d6000fd5b50505050600190506105c6565b5060009392505050565b428410156109765760405162461bcd60e51b815260206004820152601260248201527f5065726d697373696f6e2065787069726564000000000000000000000000000060448201526064016104dc565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08111156109e65760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964207369676e6174757265202773272076616c7565000000000060448201526064016104dc565b8260ff16601b14806109fb57508260ff16601c145b610a475760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964207369676e6174757265202776272076616c7565000000000060448201526064016104dc565b6000610a516105cd565b6001600160a01b038916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c92909190610a9f83611a20565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001610b339291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610b9e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610bd45750886001600160a01b0316816001600160a01b0316145b610c205760405162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e617475726500000000000000000000000000000060448201526064016104dc565b610c2b898989610dea565b505050505050505050565b6000546001600160a01b03163314610c905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6001600160a01b038116610d0c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104dc565b61076c8161132f565b6000546001600160a01b03163314610d6f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde90610dbc9030908890889088908890600401611a3b565b600060405180830381600087803b158015610dd657600080fd5b505af1158015610c2b573d6000803e3d6000fd5b6001600160a01b038316610e405760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f206164647265737300000060448201526064016104dc565b6001600160a01b038216610e965760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f2061646472657373000000000060448201526064016104dc565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f9908490611397565b6001600160a01b038316610fce5760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016104dc565b6001600160a01b0382166110245760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016104dc565b6001600160a01b03821630141561107d5760405162461bcd60e51b815260206004820152601d60248201527f5472616e7366657220746f2074686520746f6b656e206164647265737300000060448201526064016104dc565b6001600160a01b038316600090815260016020526040902054818110156110e65760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e63650060448201526064016104dc565b6110f082826119b5565b6001600160a01b0380861660009081526001602052604080822093909355908516815290812080548492906111269084906119cc565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161117291815260200190565b60405180910390a350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60056040516111b29190611a8f565b604080519182900382208282018252600183527f31000000000000000000000000000000000000000000000000000000000000006020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b038216600090815260016020526040902054818110156112b45760405162461bcd60e51b815260206004820152601b60248201527f4275726e20616d6f756e7420657863656564732062616c616e6365000000000060448201526064016104dc565b6112be82826119b5565b6001600160a01b038416600090815260016020526040812091909155600480548492906112ec9084906119b5565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610eeb565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006113ec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661147c9092919063ffffffff16565b8051909150156104f9578080602001905181019061140a9190611b2b565b6104f95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104dc565b606061148b8484600085611493565b949350505050565b60608247101561150b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016104dc565b843b6115595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104dc565b600080866001600160a01b031685876040516115759190611b4d565b60006040518083038185875af1925050503d80600081146115b2576040519150601f19603f3d011682016040523d82523d6000602084013e6115b7565b606091505b50915091506115c78282866115d2565b979650505050505050565b606083156115e15750816105c6565b8251156115f15782518084602001fd5b8160405162461bcd60e51b81526004016104dc9190611667565b60005b8381101561162657818101518382015260200161160e565b83811115611635576000848401525b50505050565b6000815180845261165381602086016020860161160b565b601f01601f19169290920160200192915050565b6020815260006105c6602083018461163b565b6001600160a01b038116811461076c57600080fd5b600080604083850312156116a257600080fd5b82356116ad8161167a565b946020939093013593505050565b6000806000606084860312156116d057600080fd5b83356116db8161167a565b925060208401356116eb8161167a565b929592945050506040919091013590565b60006020828403121561170e57600080fd5b5035919050565b60006020828403121561172757600080fd5b81356105c68161167a565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561175d57600080fd5b83356117688161167a565b925060208401359150604084013567ffffffffffffffff8082111561178c57600080fd5b818601915086601f8301126117a057600080fd5b8135818111156117b2576117b2611732565b604051601f8201601f19908116603f011681019083821181831017156117da576117da611732565b816040528281528960208487010111156117f357600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080600080600080600060e0888a03121561183057600080fd5b873561183b8161167a565b9650602088013561184b8161167a565b95506040880135945060608801359350608088013560ff8116811461186f57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561189f57600080fd5b82356118aa8161167a565b915060208301356118ba8161167a565b809150509250929050565b6000806000806000608086880312156118dd57600080fd5b85356118e88161167a565b945060208601356118f88161167a565b935060408601359250606086013567ffffffffffffffff8082111561191c57600080fd5b818801915088601f83011261193057600080fd5b81358181111561193f57600080fd5b89602082850101111561195157600080fd5b9699959850939650602001949392505050565b600181811c9082168061197857607f821691505b6020821081141561199957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156119c7576119c761199f565b500390565b600082198211156119df576119df61199f565b500190565b60006001600160a01b03808716835285602084015280851660408401525060806060830152611a16608083018461163b565b9695505050505050565b6000600019821415611a3457611a3461199f565b5060010190565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600080835481600182811c915080831680611aab57607f831692505b6020808410821415611acb57634e487b7160e01b86526022600452602486fd5b818015611adf5760018114611af057611b1d565b60ff19861689528489019650611b1d565b60008a81526020902060005b86811015611b155781548b820152908501908301611afc565b505084890196505b509498975050505050505050565b600060208284031215611b3d57600080fd5b815180151581146105c657600080fd5b60008251611b5f81846020870161160b565b919091019291505056fea264697066735822122015aa14a90768c9a31ae2481c3bae0e01c7b4bca70d7462b79f0f8063c003ff0664736f6c63430008090033",
529
+ "bytecode": "0x60c06040523480156200001157600080fd5b50604051806040016040528060078152602001663a212a21903b1960c91b815250604051806040016040528060048152602001637442544360e01b8152506200006962000063620000af60201b60201c565b620000b3565b81516200007e906005906020850190620001b4565b50805162000094906006906020840190620001b4565b5046608052620000a362000103565b60a052506200033b9050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600560405162000137919062000297565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b828054620001c2906200025a565b90600052602060002090601f016020900481019282620001e6576000855562000231565b82601f106200020157805160ff191683800117855562000231565b8280016001018555821562000231579182015b828111156200023157825182559160200191906001019062000214565b506200023f92915062000243565b5090565b5b808211156200023f576000815560010162000244565b600181811c908216806200026f57607f821691505b602082108114156200029157634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620002b457607f831692505b6020808410821415620002d557634e487b7160e01b86526022600452602486fd5b818015620002ec5760018114620002fe576200032d565b60ff198616895284890196506200032d565b60008a81526020902060005b86811015620003255781548b8201529085019083016200030a565b505084890196505b509498975050505050505050565b60805160a051611ba86200036f6000396000818161034901526105fa0152600081816102d901526105d10152611ba86000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c8063715018a6116100e3578063b4f94b2e1161008c578063dd62ed3e11610066578063dd62ed3e14610391578063f2fde38b146103bc578063fc4e51f6146103cf57600080fd5b8063b4f94b2e14610344578063cae9ca511461036b578063d505accf1461037e57600080fd5b80638da5cb5b116100bd5780638da5cb5b1461030e57806395d89b4114610329578063a9059cbb1461033157600080fd5b8063715018a6146102cc578063771da5c5146102d457806379cc6790146102fb57600080fd5b8063313ce5671161014557806342966c681161011f57806342966c681461027957806370a082311461028c57806370ae92d2146102ac57600080fd5b8063313ce567146102445780633644e5151461025e57806340c10f191461026657600080fd5b806318160ddd1161017657806318160ddd146101f357806323b872dd1461020a57806330adf81f1461021d57600080fd5b806306fdde031461019d578063095ea7b3146101bb5780631171bda9146101de575b600080fd5b6101a56103e2565b6040516101b29190611670565b60405180910390f35b6101ce6101c9366004611698565b610470565b60405190151581526020016101b2565b6101f16101ec3660046116c4565b610486565b005b6101fc60045481565b6040519081526020016101b2565b6101ce6102183660046116c4565b6104fe565b6101fc7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61024c601281565b60405160ff90911681526020016101b2565b6101fc6105cd565b6101f1610274366004611698565b610629565b6101f1610287366004611705565b610762565b6101fc61029a36600461171e565b60016020526000908152604090205481565b6101fc6102ba36600461171e565b60036020526000908152604090205481565b6101f161076f565b6101fc7f000000000000000000000000000000000000000000000000000000000000000081565b6101f1610309366004611698565b6107d5565b6000546040516001600160a01b0390911681526020016101b2565b6101a561086b565b6101ce61033f366004611698565b610878565b6101fc7f000000000000000000000000000000000000000000000000000000000000000081565b6101ce610379366004611751565b610885565b6101f161038c36600461181e565b610926565b6101fc61039f366004611895565b600260209081526000928352604080842090915290825290205481565b6101f16103ca36600461171e565b610c36565b6101f16103dd3660046118ce565b610d15565b600580546103ef9061196d565b80601f016020809104026020016040519081016040528092919081815260200182805461041b9061196d565b80156104685780601f1061043d57610100808354040283529160200191610468565b820191906000526020600020905b81548152906001019060200180831161044b57829003601f168201915b505050505081565b600061047d338484610dea565b50600192915050565b6000546001600160a01b031633146104e55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6104f96001600160a01b0384168383610ef8565b505050565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001981146105b557828110156105a15760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016104dc565b6105b585336105b086856119be565b610dea565b6105c0858585610f78565b60019150505b9392505050565b60007f000000000000000000000000000000000000000000000000000000000000000046141561061c57507f000000000000000000000000000000000000000000000000000000000000000090565b610624611180565b905090565b6000546001600160a01b031633146106835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6001600160a01b0382166106d95760405162461bcd60e51b815260206004820152601860248201527f4d696e7420746f20746865207a65726f2061646472657373000000000000000060448201526064016104dc565b80600460008282546106eb91906119d5565b90915550506001600160a01b038216600090815260016020526040812080548392906107189084906119d5565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b61076c338261124b565b50565b6000546001600160a01b031633146107c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6107d3600061132f565b565b6001600160a01b0382166000908152600260209081526040808320338452909152902054600019811461086157818110156108525760405162461bcd60e51b815260206004820152601d60248201527f4275726e20616d6f756e74206578636565647320616c6c6f77616e636500000060448201526064016104dc565b61086183336105b085856119be565b6104f9838361124b565b600680546103ef9061196d565b600061047d338484610f78565b60006108918484610470565b1561091c576040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638f4ffcb1906108e19033908790309088906004016119ed565b600060405180830381600087803b1580156108fb57600080fd5b505af115801561090f573d6000803e3d6000fd5b50505050600190506105c6565b5060009392505050565b428410156109765760405162461bcd60e51b815260206004820152601260248201527f5065726d697373696f6e2065787069726564000000000000000000000000000060448201526064016104dc565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08111156109e65760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964207369676e6174757265202773272076616c7565000000000060448201526064016104dc565b8260ff16601b14806109fb57508260ff16601c145b610a475760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964207369676e6174757265202776272076616c7565000000000060448201526064016104dc565b6000610a516105cd565b6001600160a01b038916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c92909190610a9f83611a29565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001610b339291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610b9e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610bd45750886001600160a01b0316816001600160a01b0316145b610c205760405162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e617475726500000000000000000000000000000060448201526064016104dc565b610c2b898989610dea565b505050505050505050565b6000546001600160a01b03163314610c905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6001600160a01b038116610d0c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104dc565b61076c8161132f565b6000546001600160a01b03163314610d6f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde90610dbc9030908890889088908890600401611a44565b600060405180830381600087803b158015610dd657600080fd5b505af1158015610c2b573d6000803e3d6000fd5b6001600160a01b038316610e405760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f206164647265737300000060448201526064016104dc565b6001600160a01b038216610e965760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f2061646472657373000000000060448201526064016104dc565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f9908490611397565b6001600160a01b038316610fce5760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016104dc565b6001600160a01b0382166110245760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016104dc565b6001600160a01b03821630141561107d5760405162461bcd60e51b815260206004820152601d60248201527f5472616e7366657220746f2074686520746f6b656e206164647265737300000060448201526064016104dc565b6001600160a01b038316600090815260016020526040902054818110156110e65760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e63650060448201526064016104dc565b6110f082826119be565b6001600160a01b0380861660009081526001602052604080822093909355908516815290812080548492906111269084906119d5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161117291815260200190565b60405180910390a350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60056040516111b29190611a98565b604080519182900382208282018252600183527f31000000000000000000000000000000000000000000000000000000000000006020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b038216600090815260016020526040902054818110156112b45760405162461bcd60e51b815260206004820152601b60248201527f4275726e20616d6f756e7420657863656564732062616c616e6365000000000060448201526064016104dc565b6112be82826119be565b6001600160a01b038416600090815260016020526040812091909155600480548492906112ec9084906119be565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610eeb565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006113ec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661147c9092919063ffffffff16565b8051909150156104f9578080602001905181019061140a9190611b34565b6104f95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104dc565b606061148b8484600085611493565b949350505050565b60608247101561150b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016104dc565b6001600160a01b0385163b6115625760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104dc565b600080866001600160a01b0316858760405161157e9190611b56565b60006040518083038185875af1925050503d80600081146115bb576040519150601f19603f3d011682016040523d82523d6000602084013e6115c0565b606091505b50915091506115d08282866115db565b979650505050505050565b606083156115ea5750816105c6565b8251156115fa5782518084602001fd5b8160405162461bcd60e51b81526004016104dc9190611670565b60005b8381101561162f578181015183820152602001611617565b8381111561163e576000848401525b50505050565b6000815180845261165c816020860160208601611614565b601f01601f19169290920160200192915050565b6020815260006105c66020830184611644565b6001600160a01b038116811461076c57600080fd5b600080604083850312156116ab57600080fd5b82356116b681611683565b946020939093013593505050565b6000806000606084860312156116d957600080fd5b83356116e481611683565b925060208401356116f481611683565b929592945050506040919091013590565b60006020828403121561171757600080fd5b5035919050565b60006020828403121561173057600080fd5b81356105c681611683565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561176657600080fd5b833561177181611683565b925060208401359150604084013567ffffffffffffffff8082111561179557600080fd5b818601915086601f8301126117a957600080fd5b8135818111156117bb576117bb61173b565b604051601f8201601f19908116603f011681019083821181831017156117e3576117e361173b565b816040528281528960208487010111156117fc57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080600080600080600060e0888a03121561183957600080fd5b873561184481611683565b9650602088013561185481611683565b95506040880135945060608801359350608088013560ff8116811461187857600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156118a857600080fd5b82356118b381611683565b915060208301356118c381611683565b809150509250929050565b6000806000806000608086880312156118e657600080fd5b85356118f181611683565b9450602086013561190181611683565b935060408601359250606086013567ffffffffffffffff8082111561192557600080fd5b818801915088601f83011261193957600080fd5b81358181111561194857600080fd5b89602082850101111561195a57600080fd5b9699959850939650602001949392505050565b600181811c9082168061198157607f821691505b602082108114156119a257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156119d0576119d06119a8565b500390565b600082198211156119e8576119e86119a8565b500190565b60006001600160a01b03808716835285602084015280851660408401525060806060830152611a1f6080830184611644565b9695505050505050565b6000600019821415611a3d57611a3d6119a8565b5060010190565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600080835481600182811c915080831680611ab457607f831692505b6020808410821415611ad457634e487b7160e01b86526022600452602486fd5b818015611ae85760018114611af957611b26565b60ff19861689528489019650611b26565b60008a81526020902060005b86811015611b1e5781548b820152908501908301611b05565b505084890196505b509498975050505050505050565b600060208284031215611b4657600080fd5b815180151581146105c657600080fd5b60008251611b68818460208701611614565b919091019291505056fea26469706673582212200696cd3256db0b36223a5700e6cea3fffa743482f615567d8b7e36aa30fb943a64736f6c63430008090033",
530
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101985760003560e01c8063715018a6116100e3578063b4f94b2e1161008c578063dd62ed3e11610066578063dd62ed3e14610391578063f2fde38b146103bc578063fc4e51f6146103cf57600080fd5b8063b4f94b2e14610344578063cae9ca511461036b578063d505accf1461037e57600080fd5b80638da5cb5b116100bd5780638da5cb5b1461030e57806395d89b4114610329578063a9059cbb1461033157600080fd5b8063715018a6146102cc578063771da5c5146102d457806379cc6790146102fb57600080fd5b8063313ce5671161014557806342966c681161011f57806342966c681461027957806370a082311461028c57806370ae92d2146102ac57600080fd5b8063313ce567146102445780633644e5151461025e57806340c10f191461026657600080fd5b806318160ddd1161017657806318160ddd146101f357806323b872dd1461020a57806330adf81f1461021d57600080fd5b806306fdde031461019d578063095ea7b3146101bb5780631171bda9146101de575b600080fd5b6101a56103e2565b6040516101b29190611670565b60405180910390f35b6101ce6101c9366004611698565b610470565b60405190151581526020016101b2565b6101f16101ec3660046116c4565b610486565b005b6101fc60045481565b6040519081526020016101b2565b6101ce6102183660046116c4565b6104fe565b6101fc7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61024c601281565b60405160ff90911681526020016101b2565b6101fc6105cd565b6101f1610274366004611698565b610629565b6101f1610287366004611705565b610762565b6101fc61029a36600461171e565b60016020526000908152604090205481565b6101fc6102ba36600461171e565b60036020526000908152604090205481565b6101f161076f565b6101fc7f000000000000000000000000000000000000000000000000000000000000000081565b6101f1610309366004611698565b6107d5565b6000546040516001600160a01b0390911681526020016101b2565b6101a561086b565b6101ce61033f366004611698565b610878565b6101fc7f000000000000000000000000000000000000000000000000000000000000000081565b6101ce610379366004611751565b610885565b6101f161038c36600461181e565b610926565b6101fc61039f366004611895565b600260209081526000928352604080842090915290825290205481565b6101f16103ca36600461171e565b610c36565b6101f16103dd3660046118ce565b610d15565b600580546103ef9061196d565b80601f016020809104026020016040519081016040528092919081815260200182805461041b9061196d565b80156104685780601f1061043d57610100808354040283529160200191610468565b820191906000526020600020905b81548152906001019060200180831161044b57829003601f168201915b505050505081565b600061047d338484610dea565b50600192915050565b6000546001600160a01b031633146104e55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6104f96001600160a01b0384168383610ef8565b505050565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001981146105b557828110156105a15760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016104dc565b6105b585336105b086856119be565b610dea565b6105c0858585610f78565b60019150505b9392505050565b60007f000000000000000000000000000000000000000000000000000000000000000046141561061c57507f000000000000000000000000000000000000000000000000000000000000000090565b610624611180565b905090565b6000546001600160a01b031633146106835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6001600160a01b0382166106d95760405162461bcd60e51b815260206004820152601860248201527f4d696e7420746f20746865207a65726f2061646472657373000000000000000060448201526064016104dc565b80600460008282546106eb91906119d5565b90915550506001600160a01b038216600090815260016020526040812080548392906107189084906119d5565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b61076c338261124b565b50565b6000546001600160a01b031633146107c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6107d3600061132f565b565b6001600160a01b0382166000908152600260209081526040808320338452909152902054600019811461086157818110156108525760405162461bcd60e51b815260206004820152601d60248201527f4275726e20616d6f756e74206578636565647320616c6c6f77616e636500000060448201526064016104dc565b61086183336105b085856119be565b6104f9838361124b565b600680546103ef9061196d565b600061047d338484610f78565b60006108918484610470565b1561091c576040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638f4ffcb1906108e19033908790309088906004016119ed565b600060405180830381600087803b1580156108fb57600080fd5b505af115801561090f573d6000803e3d6000fd5b50505050600190506105c6565b5060009392505050565b428410156109765760405162461bcd60e51b815260206004820152601260248201527f5065726d697373696f6e2065787069726564000000000000000000000000000060448201526064016104dc565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08111156109e65760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964207369676e6174757265202773272076616c7565000000000060448201526064016104dc565b8260ff16601b14806109fb57508260ff16601c145b610a475760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964207369676e6174757265202776272076616c7565000000000060448201526064016104dc565b6000610a516105cd565b6001600160a01b038916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c92909190610a9f83611a29565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001610b339291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610b9e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610bd45750886001600160a01b0316816001600160a01b0316145b610c205760405162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e617475726500000000000000000000000000000060448201526064016104dc565b610c2b898989610dea565b505050505050505050565b6000546001600160a01b03163314610c905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6001600160a01b038116610d0c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104dc565b61076c8161132f565b6000546001600160a01b03163314610d6f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde90610dbc9030908890889088908890600401611a44565b600060405180830381600087803b158015610dd657600080fd5b505af1158015610c2b573d6000803e3d6000fd5b6001600160a01b038316610e405760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f206164647265737300000060448201526064016104dc565b6001600160a01b038216610e965760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f2061646472657373000000000060448201526064016104dc565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f9908490611397565b6001600160a01b038316610fce5760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016104dc565b6001600160a01b0382166110245760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016104dc565b6001600160a01b03821630141561107d5760405162461bcd60e51b815260206004820152601d60248201527f5472616e7366657220746f2074686520746f6b656e206164647265737300000060448201526064016104dc565b6001600160a01b038316600090815260016020526040902054818110156110e65760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e63650060448201526064016104dc565b6110f082826119be565b6001600160a01b0380861660009081526001602052604080822093909355908516815290812080548492906111269084906119d5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161117291815260200190565b60405180910390a350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60056040516111b29190611a98565b604080519182900382208282018252600183527f31000000000000000000000000000000000000000000000000000000000000006020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b038216600090815260016020526040902054818110156112b45760405162461bcd60e51b815260206004820152601b60248201527f4275726e20616d6f756e7420657863656564732062616c616e6365000000000060448201526064016104dc565b6112be82826119be565b6001600160a01b038416600090815260016020526040812091909155600480548492906112ec9084906119be565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610eeb565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006113ec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661147c9092919063ffffffff16565b8051909150156104f9578080602001905181019061140a9190611b34565b6104f95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104dc565b606061148b8484600085611493565b949350505050565b60608247101561150b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016104dc565b6001600160a01b0385163b6115625760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104dc565b600080866001600160a01b0316858760405161157e9190611b56565b60006040518083038185875af1925050503d80600081146115bb576040519150601f19603f3d011682016040523d82523d6000602084013e6115c0565b606091505b50915091506115d08282866115db565b979650505050505050565b606083156115ea5750816105c6565b8251156115fa5782518084602001fd5b8160405162461bcd60e51b81526004016104dc9190611670565b60005b8381101561162f578181015183820152602001611617565b8381111561163e576000848401525b50505050565b6000815180845261165c816020860160208601611614565b601f01601f19169290920160200192915050565b6020815260006105c66020830184611644565b6001600160a01b038116811461076c57600080fd5b600080604083850312156116ab57600080fd5b82356116b681611683565b946020939093013593505050565b6000806000606084860312156116d957600080fd5b83356116e481611683565b925060208401356116f481611683565b929592945050506040919091013590565b60006020828403121561171757600080fd5b5035919050565b60006020828403121561173057600080fd5b81356105c681611683565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561176657600080fd5b833561177181611683565b925060208401359150604084013567ffffffffffffffff8082111561179557600080fd5b818601915086601f8301126117a957600080fd5b8135818111156117bb576117bb61173b565b604051601f8201601f19908116603f011681019083821181831017156117e3576117e361173b565b816040528281528960208487010111156117fc57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080600080600080600060e0888a03121561183957600080fd5b873561184481611683565b9650602088013561185481611683565b95506040880135945060608801359350608088013560ff8116811461187857600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156118a857600080fd5b82356118b381611683565b915060208301356118c381611683565b809150509250929050565b6000806000806000608086880312156118e657600080fd5b85356118f181611683565b9450602086013561190181611683565b935060408601359250606086013567ffffffffffffffff8082111561192557600080fd5b818801915088601f83011261193957600080fd5b81358181111561194857600080fd5b89602082850101111561195a57600080fd5b9699959850939650602001949392505050565b600181811c9082168061198157607f821691505b602082108114156119a257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156119d0576119d06119a8565b500390565b600082198211156119e8576119e86119a8565b500190565b60006001600160a01b03808716835285602084015280851660408401525060806060830152611a1f6080830184611644565b9695505050505050565b6000600019821415611a3d57611a3d6119a8565b5060010190565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600080835481600182811c915080831680611ab457607f831692505b6020808410821415611ad457634e487b7160e01b86526022600452602486fd5b818015611ae85760018114611af957611b26565b60ff19861689528489019650611b26565b60008a81526020902060005b86811015611b1e5781548b820152908501908301611b05565b505084890196505b509498975050505050505050565b600060208284031215611b4657600080fd5b815180151581146105c657600080fd5b60008251611b68818460208701611614565b919091019291505056fea26469706673582212200696cd3256db0b36223a5700e6cea3fffa743482f615567d8b7e36aa30fb943a64736f6c63430008090033",
531
531
  "linkReferences": {},
532
532
  "deployedLinkReferences": {}
533
533
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/f73f85c177b278c7084b5fa72288b9fd.json"
3
+ "buildInfo": "../../../build-info/c9ab4c6393c7a894330d3af2b5aa3289.json"
4
4
  }
@@ -96,8 +96,8 @@
96
96
  "type": "function"
97
97
  }
98
98
  ],
99
- "bytecode": "0x608060405234801561001057600080fd5b5060405161096138038061096183398101604081905261002f916100ae565b6001600160a01b0381166100895760405162461bcd60e51b815260206004820181905260248201527f42616e6b2063616e206e6f7420626520746865207a65726f2061646472657373604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100de565b6000602082840312156100c057600080fd5b81516001600160a01b03811681146100d757600080fd5b9392505050565b610874806100ed6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063461c637314610051578063537941371461006657806376cdb03b14610079578063f14faf6f146100a8575b600080fd5b61006461005f3660046106d9565b6100bb565b005b610064610074366004610761565b610294565b60005461008c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100646100b636600461078b565b6104d5565b6000546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b0000000000000000000060448201526064015b60405180910390fd5b826101675760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610111565b6000805b8481101561022e57838382818110610185576101856107a4565b905060200201358261019791906107d0565b91507f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c528686838181106101cc576101cc6107a4565b90506020020160208101906101e191906107e8565b8585848181106101f3576101f36107a4565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a1806102268161080a565b91505061016b565b5060005460405163392aee4360e01b8152600481018390526001600160a01b039091169063392aee4390602401600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b031633146102ee5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610111565b6000546040516370a0823160e01b81526001600160a01b038481166004830152839216906370a082319060240160206040518083038186803b15801561033357600080fd5b505afa158015610347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036b9190610825565b10156103c45760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610111565b604080516001600160a01b0384168152602081018390527f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c52910160405180910390a1600054604051631f1b6d2760e21b81526001600160a01b0384811660048301523060248301526044820184905290911690637c6db49c90606401600060405180830381600087803b15801561045a57600080fd5b505af115801561046e573d6000803e3d6000fd5b505060005460405163392aee4360e01b8152600481018590526001600160a01b03909116925063392aee4391506024015b600060405180830381600087803b1580156104b957600080fd5b505af11580156104cd573d6000803e3d6000fd5b505050505050565b6000546040516370a0823160e01b815233600482018190529183916001600160a01b03909116906370a082319060240160206040518083038186803b15801561051d57600080fd5b505afa158015610531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105559190610825565b10156105ae5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610111565b604080516001600160a01b0383168152602081018490527f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c52910160405180910390a1600054604051631f1b6d2760e21b81526001600160a01b0383811660048301523060248301526044820185905290911690637c6db49c90606401600060405180830381600087803b15801561064457600080fd5b505af1158015610658573d6000803e3d6000fd5b505060005460405163392aee4360e01b8152600481018690526001600160a01b03909116925063392aee43915060240161049f565b60008083601f84011261069f57600080fd5b50813567ffffffffffffffff8111156106b757600080fd5b6020830191508360208260051b85010111156106d257600080fd5b9250929050565b600080600080604085870312156106ef57600080fd5b843567ffffffffffffffff8082111561070757600080fd5b6107138883890161068d565b9096509450602087013591508082111561072c57600080fd5b506107398782880161068d565b95989497509550505050565b80356001600160a01b038116811461075c57600080fd5b919050565b6000806040838503121561077457600080fd5b61077d83610745565b946020939093013593505050565b60006020828403121561079d57600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156107e3576107e36107ba565b500190565b6000602082840312156107fa57600080fd5b61080382610745565b9392505050565b600060001982141561081e5761081e6107ba565b5060010190565b60006020828403121561083757600080fd5b505191905056fea264697066735822122008c08568f7cabf038d3fc0593a6009bf3430c87fe95225feb96274f3e78aae7364736f6c63430008090033",
100
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063461c637314610051578063537941371461006657806376cdb03b14610079578063f14faf6f146100a8575b600080fd5b61006461005f3660046106d9565b6100bb565b005b610064610074366004610761565b610294565b60005461008c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100646100b636600461078b565b6104d5565b6000546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b0000000000000000000060448201526064015b60405180910390fd5b826101675760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610111565b6000805b8481101561022e57838382818110610185576101856107a4565b905060200201358261019791906107d0565b91507f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c528686838181106101cc576101cc6107a4565b90506020020160208101906101e191906107e8565b8585848181106101f3576101f36107a4565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a1806102268161080a565b91505061016b565b5060005460405163392aee4360e01b8152600481018390526001600160a01b039091169063392aee4390602401600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b031633146102ee5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610111565b6000546040516370a0823160e01b81526001600160a01b038481166004830152839216906370a082319060240160206040518083038186803b15801561033357600080fd5b505afa158015610347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036b9190610825565b10156103c45760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610111565b604080516001600160a01b0384168152602081018390527f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c52910160405180910390a1600054604051631f1b6d2760e21b81526001600160a01b0384811660048301523060248301526044820184905290911690637c6db49c90606401600060405180830381600087803b15801561045a57600080fd5b505af115801561046e573d6000803e3d6000fd5b505060005460405163392aee4360e01b8152600481018590526001600160a01b03909116925063392aee4391506024015b600060405180830381600087803b1580156104b957600080fd5b505af11580156104cd573d6000803e3d6000fd5b505050505050565b6000546040516370a0823160e01b815233600482018190529183916001600160a01b03909116906370a082319060240160206040518083038186803b15801561051d57600080fd5b505afa158015610531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105559190610825565b10156105ae5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610111565b604080516001600160a01b0383168152602081018490527f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c52910160405180910390a1600054604051631f1b6d2760e21b81526001600160a01b0383811660048301523060248301526044820185905290911690637c6db49c90606401600060405180830381600087803b15801561064457600080fd5b505af1158015610658573d6000803e3d6000fd5b505060005460405163392aee4360e01b8152600481018690526001600160a01b03909116925063392aee43915060240161049f565b60008083601f84011261069f57600080fd5b50813567ffffffffffffffff8111156106b757600080fd5b6020830191508360208260051b85010111156106d257600080fd5b9250929050565b600080600080604085870312156106ef57600080fd5b843567ffffffffffffffff8082111561070757600080fd5b6107138883890161068d565b9096509450602087013591508082111561072c57600080fd5b506107398782880161068d565b95989497509550505050565b80356001600160a01b038116811461075c57600080fd5b919050565b6000806040838503121561077457600080fd5b61077d83610745565b946020939093013593505050565b60006020828403121561079d57600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156107e3576107e36107ba565b500190565b6000602082840312156107fa57600080fd5b61080382610745565b9392505050565b600060001982141561081e5761081e6107ba565b5060010190565b60006020828403121561083757600080fd5b505191905056fea264697066735822122008c08568f7cabf038d3fc0593a6009bf3430c87fe95225feb96274f3e78aae7364736f6c63430008090033",
99
+ "bytecode": "0x608060405234801561001057600080fd5b5060405161096138038061096183398101604081905261002f916100ae565b6001600160a01b0381166100895760405162461bcd60e51b815260206004820181905260248201527f42616e6b2063616e206e6f7420626520746865207a65726f2061646472657373604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100de565b6000602082840312156100c057600080fd5b81516001600160a01b03811681146100d757600080fd5b9392505050565b610874806100ed6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063461c637314610051578063537941371461006657806376cdb03b14610079578063f14faf6f146100a8575b600080fd5b61006461005f3660046106d9565b6100bb565b005b610064610074366004610761565b610294565b60005461008c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100646100b636600461078b565b6104d5565b6000546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b0000000000000000000060448201526064015b60405180910390fd5b826101675760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610111565b6000805b8481101561022e57838382818110610185576101856107a4565b905060200201358261019791906107d0565b91507f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c528686838181106101cc576101cc6107a4565b90506020020160208101906101e191906107e8565b8585848181106101f3576101f36107a4565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a1806102268161080a565b91505061016b565b5060005460405163392aee4360e01b8152600481018390526001600160a01b039091169063392aee4390602401600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b031633146102ee5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610111565b6000546040516370a0823160e01b81526001600160a01b038481166004830152839216906370a082319060240160206040518083038186803b15801561033357600080fd5b505afa158015610347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036b9190610825565b10156103c45760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610111565b604080516001600160a01b0384168152602081018390527f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c52910160405180910390a1600054604051631f1b6d2760e21b81526001600160a01b0384811660048301523060248301526044820184905290911690637c6db49c90606401600060405180830381600087803b15801561045a57600080fd5b505af115801561046e573d6000803e3d6000fd5b505060005460405163392aee4360e01b8152600481018590526001600160a01b03909116925063392aee4391506024015b600060405180830381600087803b1580156104b957600080fd5b505af11580156104cd573d6000803e3d6000fd5b505050505050565b6000546040516370a0823160e01b815233600482018190529183916001600160a01b03909116906370a082319060240160206040518083038186803b15801561051d57600080fd5b505afa158015610531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105559190610825565b10156105ae5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610111565b604080516001600160a01b0383168152602081018490527f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c52910160405180910390a1600054604051631f1b6d2760e21b81526001600160a01b0383811660048301523060248301526044820185905290911690637c6db49c90606401600060405180830381600087803b15801561064457600080fd5b505af1158015610658573d6000803e3d6000fd5b505060005460405163392aee4360e01b8152600481018690526001600160a01b03909116925063392aee43915060240161049f565b60008083601f84011261069f57600080fd5b50813567ffffffffffffffff8111156106b757600080fd5b6020830191508360208260051b85010111156106d257600080fd5b9250929050565b600080600080604085870312156106ef57600080fd5b843567ffffffffffffffff8082111561070757600080fd5b6107138883890161068d565b9096509450602087013591508082111561072c57600080fd5b506107398782880161068d565b95989497509550505050565b80356001600160a01b038116811461075c57600080fd5b919050565b6000806040838503121561077457600080fd5b61077d83610745565b946020939093013593505050565b60006020828403121561079d57600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156107e3576107e36107ba565b500190565b6000602082840312156107fa57600080fd5b61080382610745565b9392505050565b600060001982141561081e5761081e6107ba565b5060010190565b60006020828403121561083757600080fd5b505191905056fea26469706673582212202d6bf409d06ffccc2606dfe25dfa490a22315237cb7e494a4ca980db4bea40ce64736f6c63430008090033",
100
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063461c637314610051578063537941371461006657806376cdb03b14610079578063f14faf6f146100a8575b600080fd5b61006461005f3660046106d9565b6100bb565b005b610064610074366004610761565b610294565b60005461008c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100646100b636600461078b565b6104d5565b6000546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b0000000000000000000060448201526064015b60405180910390fd5b826101675760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610111565b6000805b8481101561022e57838382818110610185576101856107a4565b905060200201358261019791906107d0565b91507f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c528686838181106101cc576101cc6107a4565b90506020020160208101906101e191906107e8565b8585848181106101f3576101f36107a4565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a1806102268161080a565b91505061016b565b5060005460405163392aee4360e01b8152600481018390526001600160a01b039091169063392aee4390602401600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b031633146102ee5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610111565b6000546040516370a0823160e01b81526001600160a01b038481166004830152839216906370a082319060240160206040518083038186803b15801561033357600080fd5b505afa158015610347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036b9190610825565b10156103c45760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610111565b604080516001600160a01b0384168152602081018390527f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c52910160405180910390a1600054604051631f1b6d2760e21b81526001600160a01b0384811660048301523060248301526044820184905290911690637c6db49c90606401600060405180830381600087803b15801561045a57600080fd5b505af115801561046e573d6000803e3d6000fd5b505060005460405163392aee4360e01b8152600481018590526001600160a01b03909116925063392aee4391506024015b600060405180830381600087803b1580156104b957600080fd5b505af11580156104cd573d6000803e3d6000fd5b505050505050565b6000546040516370a0823160e01b815233600482018190529183916001600160a01b03909116906370a082319060240160206040518083038186803b15801561051d57600080fd5b505afa158015610531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105559190610825565b10156105ae5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610111565b604080516001600160a01b0383168152602081018490527f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c52910160405180910390a1600054604051631f1b6d2760e21b81526001600160a01b0383811660048301523060248301526044820185905290911690637c6db49c90606401600060405180830381600087803b15801561064457600080fd5b505af1158015610658573d6000803e3d6000fd5b505060005460405163392aee4360e01b8152600481018690526001600160a01b03909116925063392aee43915060240161049f565b60008083601f84011261069f57600080fd5b50813567ffffffffffffffff8111156106b757600080fd5b6020830191508360208260051b85010111156106d257600080fd5b9250929050565b600080600080604085870312156106ef57600080fd5b843567ffffffffffffffff8082111561070757600080fd5b6107138883890161068d565b9096509450602087013591508082111561072c57600080fd5b506107398782880161068d565b95989497509550505050565b80356001600160a01b038116811461075c57600080fd5b919050565b6000806040838503121561077457600080fd5b61077d83610745565b946020939093013593505050565b60006020828403121561079d57600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156107e3576107e36107ba565b500190565b6000602082840312156107fa57600080fd5b61080382610745565b9392505050565b600060001982141561081e5761081e6107ba565b5060010190565b60006020828403121561083757600080fd5b505191905056fea26469706673582212202d6bf409d06ffccc2606dfe25dfa490a22315237cb7e494a4ca980db4bea40ce64736f6c63430008090033",
101
101
  "linkReferences": {},
102
102
  "deployedLinkReferences": {}
103
103
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/f73f85c177b278c7084b5fa72288b9fd.json"
3
+ "buildInfo": "../../../build-info/c9ab4c6393c7a894330d3af2b5aa3289.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/f73f85c177b278c7084b5fa72288b9fd.json"
3
+ "buildInfo": "../../../build-info/c9ab4c6393c7a894330d3af2b5aa3289.json"
4
4
  }
@@ -270,8 +270,8 @@
270
270
  "type": "function"
271
271
  }
272
272
  ],
273
- "bytecode": "0x608060405234801561001057600080fd5b5060405161108e38038061108e83398101604081905261002f916101a8565b6001600160a01b03821661008a5760405162461bcd60e51b815260206004820181905260248201527f42616e6b2063616e206e6f7420626520746865207a65726f206164647265737360448201526064015b60405180910390fd5b6001600160a01b0381166100ef5760405162461bcd60e51b815260206004820152602660248201527f5442544320746f6b656e2063616e206e6f7420626520746865207a65726f206160448201526564647265737360d01b6064820152608401610081565b603280546001600160a01b038085166001600160a01b03199283161790925560338054928416929091169190911790556101283361012f565b50506101e2565b600080546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80910160405180910390a15050565b6001600160a01b03811681146101a557600080fd5b50565b600080604083850312156101bb57600080fd5b82516101c681610190565b60208401519092506101d781610190565b809150509250929050565b610e9d806101f16000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80638f4ffcb111610081578063db006a751161005b578063db006a7514610184578063e5d3d71414610197578063fc4e51f6146101aa57600080fd5b80638f4ffcb11461014b578063a0712d681461015e578063d38bfff41461017157600080fd5b806353794137116100b257806353794137146100f65780635aa6e6751461010957806376cdb03b1461013857600080fd5b80631171bda9146100ce578063461c6373146100e3575b600080fd5b6100e16100dc366004610b4e565b6101bd565b005b6100e16100f1366004610bdb565b6102a8565b6100e1610104366004610c47565b6103bb565b60005461011c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60325461011c906001600160a01b031681565b6100e1610159366004610cb5565b610566565b6100e161016c366004610d28565b610625565b6100e161017f366004610d41565b610747565b6100e1610192366004610d28565b610829565b60335461011c906001600160a01b031681565b6100e16101b8366004610d65565b610833565b6000546001600160a01b0316331461021c5760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f742074686520676f7665726e616e63650000000060448201526064015b60405180910390fd5b6033546040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015284811660248301526044820184905290911690631171bda990606401600060405180830381600087803b15801561028b57600080fd5b505af115801561029f573d6000803e3d6000fd5b50505050505050565b6032546001600160a01b031633146103025760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610213565b8261034f5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610213565b60005b838110156103b4576103a285858381811061036f5761036f610dbb565b90506020020160208101906103849190610d41565b84848481811061039657610396610dbb565b90506020020135610917565b806103ac81610dd1565b915050610352565b5050505050565b6032546001600160a01b031633146104155760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610213565b6032546040516370a0823160e01b81526001600160a01b038481166004830152839216906370a082319060240160206040518083038186803b15801561045a57600080fd5b505afa15801561046e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104929190610dfa565b10156104eb5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610213565b6104f58282610917565b603254604051631f1b6d2760e21b81526001600160a01b0384811660048301523060248301526044820184905290911690637c6db49c906064015b600060405180830381600087803b15801561054a57600080fd5b505af115801561055e573d6000803e3d6000fd5b505050505050565b6033546001600160a01b038481169116146105c35760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610213565b336001600160a01b0384161461061b5760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610213565b6103b485856109ac565b6032546040516370a0823160e01b815233600482018190529183916001600160a01b03909116906370a082319060240160206040518083038186803b15801561066d57600080fd5b505afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190610dfa565b10156106fe5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610213565b6107088183610917565b603254604051631f1b6d2760e21b81526001600160a01b0383811660048301523060248301526044820185905290911690637c6db49c90606401610530565b6000546001600160a01b031633146107a15760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f742074686520676f7665726e616e6365000000006044820152606401610213565b6001600160a01b03811661081d5760405162461bcd60e51b815260206004820152602260248201527f4e657720676f7665726e616e636520697320746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610213565b61082681610ac0565b50565b61082633826109ac565b6000546001600160a01b0316331461088d5760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f742074686520676f7665726e616e6365000000006044820152606401610213565b6033546040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fc4e51f6906108de9088908890889088908890600401610e13565b600060405180830381600087803b1580156108f857600080fd5b505af115801561090c573d6000803e3d6000fd5b505050505050505050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8260405161095291815260200190565b60405180910390a26033546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015260248201849052909116906340c10f1990604401610530565b816001600160a01b03167f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b9369826040516109e791815260200190565b60405180910390a26033546040517f79cc67900000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015260248201849052909116906379cc679090604401600060405180830381600087803b158015610a5657600080fd5b505af1158015610a6a573d6000803e3d6000fd5b50506032546040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905290911692506356a6d9ef9150604401610530565b600080546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80910160405180910390a15050565b6001600160a01b038116811461082657600080fd5b600080600060608486031215610b6357600080fd5b8335610b6e81610b39565b92506020840135610b7e81610b39565b929592945050506040919091013590565b60008083601f840112610ba157600080fd5b50813567ffffffffffffffff811115610bb957600080fd5b6020830191508360208260051b8501011115610bd457600080fd5b9250929050565b60008060008060408587031215610bf157600080fd5b843567ffffffffffffffff80821115610c0957600080fd5b610c1588838901610b8f565b90965094506020870135915080821115610c2e57600080fd5b50610c3b87828801610b8f565b95989497509550505050565b60008060408385031215610c5a57600080fd5b8235610c6581610b39565b946020939093013593505050565b60008083601f840112610c8557600080fd5b50813567ffffffffffffffff811115610c9d57600080fd5b602083019150836020828501011115610bd457600080fd5b600080600080600060808688031215610ccd57600080fd5b8535610cd881610b39565b9450602086013593506040860135610cef81610b39565b9250606086013567ffffffffffffffff811115610d0b57600080fd5b610d1788828901610c73565b969995985093965092949392505050565b600060208284031215610d3a57600080fd5b5035919050565b600060208284031215610d5357600080fd5b8135610d5e81610b39565b9392505050565b600080600080600060808688031215610d7d57600080fd5b8535610d8881610b39565b94506020860135610d9881610b39565b935060408601359250606086013567ffffffffffffffff811115610d0b57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000600019821415610df357634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610e0c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f8501168301019050969550505050505056fea2646970667358221220d71b30d1cb499e634e58e92d0bb27d7c2947a8042191437f06695657a22b376964736f6c63430008090033",
274
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80638f4ffcb111610081578063db006a751161005b578063db006a7514610184578063e5d3d71414610197578063fc4e51f6146101aa57600080fd5b80638f4ffcb11461014b578063a0712d681461015e578063d38bfff41461017157600080fd5b806353794137116100b257806353794137146100f65780635aa6e6751461010957806376cdb03b1461013857600080fd5b80631171bda9146100ce578063461c6373146100e3575b600080fd5b6100e16100dc366004610b4e565b6101bd565b005b6100e16100f1366004610bdb565b6102a8565b6100e1610104366004610c47565b6103bb565b60005461011c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60325461011c906001600160a01b031681565b6100e1610159366004610cb5565b610566565b6100e161016c366004610d28565b610625565b6100e161017f366004610d41565b610747565b6100e1610192366004610d28565b610829565b60335461011c906001600160a01b031681565b6100e16101b8366004610d65565b610833565b6000546001600160a01b0316331461021c5760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f742074686520676f7665726e616e63650000000060448201526064015b60405180910390fd5b6033546040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015284811660248301526044820184905290911690631171bda990606401600060405180830381600087803b15801561028b57600080fd5b505af115801561029f573d6000803e3d6000fd5b50505050505050565b6032546001600160a01b031633146103025760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610213565b8261034f5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610213565b60005b838110156103b4576103a285858381811061036f5761036f610dbb565b90506020020160208101906103849190610d41565b84848481811061039657610396610dbb565b90506020020135610917565b806103ac81610dd1565b915050610352565b5050505050565b6032546001600160a01b031633146104155760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610213565b6032546040516370a0823160e01b81526001600160a01b038481166004830152839216906370a082319060240160206040518083038186803b15801561045a57600080fd5b505afa15801561046e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104929190610dfa565b10156104eb5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610213565b6104f58282610917565b603254604051631f1b6d2760e21b81526001600160a01b0384811660048301523060248301526044820184905290911690637c6db49c906064015b600060405180830381600087803b15801561054a57600080fd5b505af115801561055e573d6000803e3d6000fd5b505050505050565b6033546001600160a01b038481169116146105c35760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610213565b336001600160a01b0384161461061b5760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610213565b6103b485856109ac565b6032546040516370a0823160e01b815233600482018190529183916001600160a01b03909116906370a082319060240160206040518083038186803b15801561066d57600080fd5b505afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190610dfa565b10156106fe5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610213565b6107088183610917565b603254604051631f1b6d2760e21b81526001600160a01b0383811660048301523060248301526044820185905290911690637c6db49c90606401610530565b6000546001600160a01b031633146107a15760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f742074686520676f7665726e616e6365000000006044820152606401610213565b6001600160a01b03811661081d5760405162461bcd60e51b815260206004820152602260248201527f4e657720676f7665726e616e636520697320746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610213565b61082681610ac0565b50565b61082633826109ac565b6000546001600160a01b0316331461088d5760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f742074686520676f7665726e616e6365000000006044820152606401610213565b6033546040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fc4e51f6906108de9088908890889088908890600401610e13565b600060405180830381600087803b1580156108f857600080fd5b505af115801561090c573d6000803e3d6000fd5b505050505050505050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8260405161095291815260200190565b60405180910390a26033546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015260248201849052909116906340c10f1990604401610530565b816001600160a01b03167f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b9369826040516109e791815260200190565b60405180910390a26033546040517f79cc67900000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015260248201849052909116906379cc679090604401600060405180830381600087803b158015610a5657600080fd5b505af1158015610a6a573d6000803e3d6000fd5b50506032546040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905290911692506356a6d9ef9150604401610530565b600080546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80910160405180910390a15050565b6001600160a01b038116811461082657600080fd5b600080600060608486031215610b6357600080fd5b8335610b6e81610b39565b92506020840135610b7e81610b39565b929592945050506040919091013590565b60008083601f840112610ba157600080fd5b50813567ffffffffffffffff811115610bb957600080fd5b6020830191508360208260051b8501011115610bd457600080fd5b9250929050565b60008060008060408587031215610bf157600080fd5b843567ffffffffffffffff80821115610c0957600080fd5b610c1588838901610b8f565b90965094506020870135915080821115610c2e57600080fd5b50610c3b87828801610b8f565b95989497509550505050565b60008060408385031215610c5a57600080fd5b8235610c6581610b39565b946020939093013593505050565b60008083601f840112610c8557600080fd5b50813567ffffffffffffffff811115610c9d57600080fd5b602083019150836020828501011115610bd457600080fd5b600080600080600060808688031215610ccd57600080fd5b8535610cd881610b39565b9450602086013593506040860135610cef81610b39565b9250606086013567ffffffffffffffff811115610d0b57600080fd5b610d1788828901610c73565b969995985093965092949392505050565b600060208284031215610d3a57600080fd5b5035919050565b600060208284031215610d5357600080fd5b8135610d5e81610b39565b9392505050565b600080600080600060808688031215610d7d57600080fd5b8535610d8881610b39565b94506020860135610d9881610b39565b935060408601359250606086013567ffffffffffffffff811115610d0b57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000600019821415610df357634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610e0c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f8501168301019050969550505050505056fea2646970667358221220d71b30d1cb499e634e58e92d0bb27d7c2947a8042191437f06695657a22b376964736f6c63430008090033",
273
+ "bytecode": "0x608060405234801561001057600080fd5b5060405161108e38038061108e83398101604081905261002f916101a8565b6001600160a01b03821661008a5760405162461bcd60e51b815260206004820181905260248201527f42616e6b2063616e206e6f7420626520746865207a65726f206164647265737360448201526064015b60405180910390fd5b6001600160a01b0381166100ef5760405162461bcd60e51b815260206004820152602660248201527f5442544320746f6b656e2063616e206e6f7420626520746865207a65726f206160448201526564647265737360d01b6064820152608401610081565b603280546001600160a01b038085166001600160a01b03199283161790925560338054928416929091169190911790556101283361012f565b50506101e2565b600080546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80910160405180910390a15050565b6001600160a01b03811681146101a557600080fd5b50565b600080604083850312156101bb57600080fd5b82516101c681610190565b60208401519092506101d781610190565b809150509250929050565b610e9d806101f16000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80638f4ffcb111610081578063db006a751161005b578063db006a7514610184578063e5d3d71414610197578063fc4e51f6146101aa57600080fd5b80638f4ffcb11461014b578063a0712d681461015e578063d38bfff41461017157600080fd5b806353794137116100b257806353794137146100f65780635aa6e6751461010957806376cdb03b1461013857600080fd5b80631171bda9146100ce578063461c6373146100e3575b600080fd5b6100e16100dc366004610b4e565b6101bd565b005b6100e16100f1366004610bdb565b6102a8565b6100e1610104366004610c47565b6103bb565b60005461011c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60325461011c906001600160a01b031681565b6100e1610159366004610cb5565b610566565b6100e161016c366004610d28565b610625565b6100e161017f366004610d41565b610747565b6100e1610192366004610d28565b610829565b60335461011c906001600160a01b031681565b6100e16101b8366004610d65565b610833565b6000546001600160a01b0316331461021c5760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f742074686520676f7665726e616e63650000000060448201526064015b60405180910390fd5b6033546040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015284811660248301526044820184905290911690631171bda990606401600060405180830381600087803b15801561028b57600080fd5b505af115801561029f573d6000803e3d6000fd5b50505050505050565b6032546001600160a01b031633146103025760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610213565b8261034f5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610213565b60005b838110156103b4576103a285858381811061036f5761036f610dbb565b90506020020160208101906103849190610d41565b84848481811061039657610396610dbb565b90506020020135610917565b806103ac81610dd1565b915050610352565b5050505050565b6032546001600160a01b031633146104155760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610213565b6032546040516370a0823160e01b81526001600160a01b038481166004830152839216906370a082319060240160206040518083038186803b15801561045a57600080fd5b505afa15801561046e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104929190610dfa565b10156104eb5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610213565b6104f58282610917565b603254604051631f1b6d2760e21b81526001600160a01b0384811660048301523060248301526044820184905290911690637c6db49c906064015b600060405180830381600087803b15801561054a57600080fd5b505af115801561055e573d6000803e3d6000fd5b505050505050565b6033546001600160a01b038481169116146105c35760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610213565b336001600160a01b0384161461061b5760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610213565b6103b485856109ac565b6032546040516370a0823160e01b815233600482018190529183916001600160a01b03909116906370a082319060240160206040518083038186803b15801561066d57600080fd5b505afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190610dfa565b10156106fe5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610213565b6107088183610917565b603254604051631f1b6d2760e21b81526001600160a01b0383811660048301523060248301526044820185905290911690637c6db49c90606401610530565b6000546001600160a01b031633146107a15760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f742074686520676f7665726e616e6365000000006044820152606401610213565b6001600160a01b03811661081d5760405162461bcd60e51b815260206004820152602260248201527f4e657720676f7665726e616e636520697320746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610213565b61082681610ac0565b50565b61082633826109ac565b6000546001600160a01b0316331461088d5760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f742074686520676f7665726e616e6365000000006044820152606401610213565b6033546040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fc4e51f6906108de9088908890889088908890600401610e13565b600060405180830381600087803b1580156108f857600080fd5b505af115801561090c573d6000803e3d6000fd5b505050505050505050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8260405161095291815260200190565b60405180910390a26033546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015260248201849052909116906340c10f1990604401610530565b816001600160a01b03167f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b9369826040516109e791815260200190565b60405180910390a26033546040517f79cc67900000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015260248201849052909116906379cc679090604401600060405180830381600087803b158015610a5657600080fd5b505af1158015610a6a573d6000803e3d6000fd5b50506032546040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905290911692506356a6d9ef9150604401610530565b600080546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80910160405180910390a15050565b6001600160a01b038116811461082657600080fd5b600080600060608486031215610b6357600080fd5b8335610b6e81610b39565b92506020840135610b7e81610b39565b929592945050506040919091013590565b60008083601f840112610ba157600080fd5b50813567ffffffffffffffff811115610bb957600080fd5b6020830191508360208260051b8501011115610bd457600080fd5b9250929050565b60008060008060408587031215610bf157600080fd5b843567ffffffffffffffff80821115610c0957600080fd5b610c1588838901610b8f565b90965094506020870135915080821115610c2e57600080fd5b50610c3b87828801610b8f565b95989497509550505050565b60008060408385031215610c5a57600080fd5b8235610c6581610b39565b946020939093013593505050565b60008083601f840112610c8557600080fd5b50813567ffffffffffffffff811115610c9d57600080fd5b602083019150836020828501011115610bd457600080fd5b600080600080600060808688031215610ccd57600080fd5b8535610cd881610b39565b9450602086013593506040860135610cef81610b39565b9250606086013567ffffffffffffffff811115610d0b57600080fd5b610d1788828901610c73565b969995985093965092949392505050565b600060208284031215610d3a57600080fd5b5035919050565b600060208284031215610d5357600080fd5b8135610d5e81610b39565b9392505050565b600080600080600060808688031215610d7d57600080fd5b8535610d8881610b39565b94506020860135610d9881610b39565b935060408601359250606086013567ffffffffffffffff811115610d0b57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000600019821415610df357634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610e0c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f8501168301019050969550505050505056fea2646970667358221220c3faaf275fd556461e80831cdb96300ab8f282188592dba4e6a3ffa202915d3b64736f6c63430008090033",
274
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80638f4ffcb111610081578063db006a751161005b578063db006a7514610184578063e5d3d71414610197578063fc4e51f6146101aa57600080fd5b80638f4ffcb11461014b578063a0712d681461015e578063d38bfff41461017157600080fd5b806353794137116100b257806353794137146100f65780635aa6e6751461010957806376cdb03b1461013857600080fd5b80631171bda9146100ce578063461c6373146100e3575b600080fd5b6100e16100dc366004610b4e565b6101bd565b005b6100e16100f1366004610bdb565b6102a8565b6100e1610104366004610c47565b6103bb565b60005461011c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60325461011c906001600160a01b031681565b6100e1610159366004610cb5565b610566565b6100e161016c366004610d28565b610625565b6100e161017f366004610d41565b610747565b6100e1610192366004610d28565b610829565b60335461011c906001600160a01b031681565b6100e16101b8366004610d65565b610833565b6000546001600160a01b0316331461021c5760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f742074686520676f7665726e616e63650000000060448201526064015b60405180910390fd5b6033546040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015284811660248301526044820184905290911690631171bda990606401600060405180830381600087803b15801561028b57600080fd5b505af115801561029f573d6000803e3d6000fd5b50505050505050565b6032546001600160a01b031633146103025760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610213565b8261034f5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610213565b60005b838110156103b4576103a285858381811061036f5761036f610dbb565b90506020020160208101906103849190610d41565b84848481811061039657610396610dbb565b90506020020135610917565b806103ac81610dd1565b915050610352565b5050505050565b6032546001600160a01b031633146104155760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610213565b6032546040516370a0823160e01b81526001600160a01b038481166004830152839216906370a082319060240160206040518083038186803b15801561045a57600080fd5b505afa15801561046e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104929190610dfa565b10156104eb5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610213565b6104f58282610917565b603254604051631f1b6d2760e21b81526001600160a01b0384811660048301523060248301526044820184905290911690637c6db49c906064015b600060405180830381600087803b15801561054a57600080fd5b505af115801561055e573d6000803e3d6000fd5b505050505050565b6033546001600160a01b038481169116146105c35760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610213565b336001600160a01b0384161461061b5760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610213565b6103b485856109ac565b6032546040516370a0823160e01b815233600482018190529183916001600160a01b03909116906370a082319060240160206040518083038186803b15801561066d57600080fd5b505afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190610dfa565b10156106fe5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610213565b6107088183610917565b603254604051631f1b6d2760e21b81526001600160a01b0383811660048301523060248301526044820185905290911690637c6db49c90606401610530565b6000546001600160a01b031633146107a15760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f742074686520676f7665726e616e6365000000006044820152606401610213565b6001600160a01b03811661081d5760405162461bcd60e51b815260206004820152602260248201527f4e657720676f7665726e616e636520697320746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610213565b61082681610ac0565b50565b61082633826109ac565b6000546001600160a01b0316331461088d5760405162461bcd60e51b815260206004820152601c60248201527f43616c6c6572206973206e6f742074686520676f7665726e616e6365000000006044820152606401610213565b6033546040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fc4e51f6906108de9088908890889088908890600401610e13565b600060405180830381600087803b1580156108f857600080fd5b505af115801561090c573d6000803e3d6000fd5b505050505050505050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8260405161095291815260200190565b60405180910390a26033546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015260248201849052909116906340c10f1990604401610530565b816001600160a01b03167f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b9369826040516109e791815260200190565b60405180910390a26033546040517f79cc67900000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015260248201849052909116906379cc679090604401600060405180830381600087803b158015610a5657600080fd5b505af1158015610a6a573d6000803e3d6000fd5b50506032546040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905290911692506356a6d9ef9150604401610530565b600080546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80910160405180910390a15050565b6001600160a01b038116811461082657600080fd5b600080600060608486031215610b6357600080fd5b8335610b6e81610b39565b92506020840135610b7e81610b39565b929592945050506040919091013590565b60008083601f840112610ba157600080fd5b50813567ffffffffffffffff811115610bb957600080fd5b6020830191508360208260051b8501011115610bd457600080fd5b9250929050565b60008060008060408587031215610bf157600080fd5b843567ffffffffffffffff80821115610c0957600080fd5b610c1588838901610b8f565b90965094506020870135915080821115610c2e57600080fd5b50610c3b87828801610b8f565b95989497509550505050565b60008060408385031215610c5a57600080fd5b8235610c6581610b39565b946020939093013593505050565b60008083601f840112610c8557600080fd5b50813567ffffffffffffffff811115610c9d57600080fd5b602083019150836020828501011115610bd457600080fd5b600080600080600060808688031215610ccd57600080fd5b8535610cd881610b39565b9450602086013593506040860135610cef81610b39565b9250606086013567ffffffffffffffff811115610d0b57600080fd5b610d1788828901610c73565b969995985093965092949392505050565b600060208284031215610d3a57600080fd5b5035919050565b600060208284031215610d5357600080fd5b8135610d5e81610b39565b9392505050565b600080600080600060808688031215610d7d57600080fd5b8535610d8881610b39565b94506020860135610d9881610b39565b935060408601359250606086013567ffffffffffffffff811115610d0b57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000600019821415610df357634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610e0c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f8501168301019050969550505050505056fea2646970667358221220c3faaf275fd556461e80831cdb96300ab8f282188592dba4e6a3ffa202915d3b64736f6c63430008090033",
275
275
  "linkReferences": {},
276
276
  "deployedLinkReferences": {}
277
277
  }
@@ -16,12 +16,8 @@
16
16
  pragma solidity ^0.8.9;
17
17
 
18
18
  import "@keep-network/random-beacon/contracts/Governable.sol";
19
-
20
19
  import {IWalletOwner as EcdsaWalletOwner} from "@keep-network/ecdsa/contracts/api/IWalletOwner.sol";
21
20
 
22
- // TODO: We used RC version of @openzeppelin/contracts-upgradeable to use `reinitializer`
23
- // in upgrades. We should revisit this part before mainnet deployment and use
24
- // a final release package if it's ready.
25
21
  import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
26
22
 
27
23
  import "./IRelay.sol";
@@ -195,6 +191,7 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
195
191
  event MovingFundsParametersUpdated(
196
192
  uint64 movingFundsTxMaxTotalFee,
197
193
  uint64 movingFundsDustThreshold,
194
+ uint32 movingFundsTimeoutResetDelay,
198
195
  uint32 movingFundsTimeout,
199
196
  uint96 movingFundsTimeoutSlashingAmount,
200
197
  uint256 movingFundsTimeoutNotifierRewardMultiplier,
@@ -255,6 +252,7 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
255
252
  self.txProofDifficultyFactor = _txProofDifficultyFactor;
256
253
 
257
254
  // TODO: Revisit initial values.
255
+ // https://github.com/keep-network/tbtc-v2/issues/258
258
256
  self.depositDustThreshold = 1000000; // 1000000 satoshi = 0.01 BTC
259
257
  self.depositTxMaxFee = 10000; // 10000 satoshi
260
258
  self.depositTreasuryFeeDivisor = 2000; // 1/2000 == 5bps == 0.05% == 0.0005
@@ -266,6 +264,7 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
266
264
  self.redemptionTimeoutNotifierRewardMultiplier = 100; // 100%
267
265
  self.movingFundsTxMaxTotalFee = 10000; // 10000 satoshi
268
266
  self.movingFundsDustThreshold = 20000; // 20000 satoshi
267
+ self.movingFundsTimeoutResetDelay = 6 days;
269
268
  self.movingFundsTimeout = 7 days;
270
269
  self.movingFundsTimeoutSlashingAmount = 10000 * 1e18; // 10000 T
271
270
  self.movingFundsTimeoutNotifierRewardMultiplier = 100; //100%
@@ -598,7 +597,8 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
598
597
  /// - The wallet must be in the MovingFunds state,
599
598
  /// - The target wallets commitment must not be already submitted for
600
599
  /// the given moving funds wallet,
601
- /// - Live wallets count must be zero.
600
+ /// - Live wallets count must be zero,
601
+ /// - The moving funds timeout reset delay must be elapsed.
602
602
  function resetMovingFundsTimeout(bytes20 walletPubKeyHash) external {
603
603
  self.resetMovingFundsTimeout(walletPubKeyHash);
604
604
  }
@@ -1159,10 +1159,17 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
1159
1159
  /// funds transaction.
1160
1160
  /// @param movingFundsDustThreshold New value of the moving funds dust
1161
1161
  /// threshold. It is the minimal satoshi amount that makes sense to
1162
- // be transferred during the moving funds process. Moving funds
1163
- // wallets having their BTC balance below that value can begin
1164
- // closing immediately as transferring such a low value may not be
1165
- // possible due to BTC network fees.
1162
+ /// be transferred during the moving funds process. Moving funds
1163
+ /// wallets having their BTC balance below that value can begin
1164
+ /// closing immediately as transferring such a low value may not be
1165
+ /// possible due to BTC network fees.
1166
+ /// @param movingFundsTimeoutResetDelay New value of the moving funds
1167
+ /// timeout reset delay in seconds. It is the time after which the
1168
+ /// moving funds timeout can be reset in case the target wallet
1169
+ /// commitment cannot be submitted due to a lack of live wallets
1170
+ /// in the system. It is counted from the moment when the wallet
1171
+ /// was requested to move their funds and switched to the MovingFunds
1172
+ /// state or from the moment the timeout was reset the last time.
1166
1173
  /// @param movingFundsTimeout New value of the moving funds timeout in
1167
1174
  /// seconds. It is the time after which the moving funds process can
1168
1175
  /// be reported as timed out. It is counted from the moment when the
@@ -1198,7 +1205,9 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
1198
1205
  /// - Moving funds transaction max total fee must be greater than zero,
1199
1206
  /// - Moving funds dust threshold must be greater than zero and lower
1200
1207
  /// than the redemption dust threshold,
1201
- /// - Moving funds timeout must be greater than zero,
1208
+ /// - Moving funds timeout reset delay must be greater than zero,
1209
+ /// - Moving funds timeout must be greater than the moving funds
1210
+ /// timeout reset delay,
1202
1211
  /// - Moving funds timeout notifier reward multiplier must be in the
1203
1212
  /// range [0, 100],
1204
1213
  /// - Moved funds sweep transaction max total fee must be greater than zero,
@@ -1208,6 +1217,7 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
1208
1217
  function updateMovingFundsParameters(
1209
1218
  uint64 movingFundsTxMaxTotalFee,
1210
1219
  uint64 movingFundsDustThreshold,
1220
+ uint32 movingFundsTimeoutResetDelay,
1211
1221
  uint32 movingFundsTimeout,
1212
1222
  uint96 movingFundsTimeoutSlashingAmount,
1213
1223
  uint256 movingFundsTimeoutNotifierRewardMultiplier,
@@ -1219,6 +1229,7 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
1219
1229
  self.updateMovingFundsParameters(
1220
1230
  movingFundsTxMaxTotalFee,
1221
1231
  movingFundsDustThreshold,
1232
+ movingFundsTimeoutResetDelay,
1222
1233
  movingFundsTimeout,
1223
1234
  movingFundsTimeoutSlashingAmount,
1224
1235
  movingFundsTimeoutNotifierRewardMultiplier,
@@ -1530,6 +1541,14 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
1530
1541
  /// funds wallets having their BTC balance below that value can
1531
1542
  /// begin closing immediately as transferring such a low value may
1532
1543
  /// not be possible due to BTC network fees.
1544
+ /// @return movingFundsTimeoutResetDelay Time after which the moving funds
1545
+ /// timeout can be reset in case the target wallet commitment
1546
+ /// cannot be submitted due to a lack of live wallets in the system.
1547
+ /// It is counted from the moment when the wallet was requested to
1548
+ /// move their funds and switched to the MovingFunds state or from
1549
+ /// the moment the timeout was reset the last time. Value in seconds
1550
+ /// This value should be lower than the value of the
1551
+ /// `movingFundsTimeout`.
1533
1552
  /// @return movingFundsTimeout Time after which the moving funds process
1534
1553
  /// can be reported as timed out. It is counted from the moment
1535
1554
  /// when the wallet was requested to move their funds and switched
@@ -1559,6 +1578,7 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
1559
1578
  returns (
1560
1579
  uint64 movingFundsTxMaxTotalFee,
1561
1580
  uint64 movingFundsDustThreshold,
1581
+ uint32 movingFundsTimeoutResetDelay,
1562
1582
  uint32 movingFundsTimeout,
1563
1583
  uint96 movingFundsTimeoutSlashingAmount,
1564
1584
  uint256 movingFundsTimeoutNotifierRewardMultiplier,
@@ -1570,6 +1590,7 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
1570
1590
  {
1571
1591
  movingFundsTxMaxTotalFee = self.movingFundsTxMaxTotalFee;
1572
1592
  movingFundsDustThreshold = self.movingFundsDustThreshold;
1593
+ movingFundsTimeoutResetDelay = self.movingFundsTimeoutResetDelay;
1573
1594
  movingFundsTimeout = self.movingFundsTimeout;
1574
1595
  movingFundsTimeoutSlashingAmount = self
1575
1596
  .movingFundsTimeoutSlashingAmount;
@@ -91,6 +91,14 @@ library BridgeState {
91
91
  // than `redemptionDustThreshold` in order to prevent redemption requests
92
92
  // with values lower or equal to `movingFundsDustThreshold`.
93
93
  uint64 movingFundsDustThreshold;
94
+ // Time after which the moving funds timeout can be reset in case the
95
+ // target wallet commitment cannot be submitted due to a lack of live
96
+ // wallets in the system. It is counted from the moment when the wallet
97
+ // was requested to move their funds and switched to the MovingFunds
98
+ // state or from the moment the timeout was reset the last time.
99
+ // Value in seconds. This value should be lower than the value
100
+ // of the `movingFundsTimeout`.
101
+ uint32 movingFundsTimeoutResetDelay;
94
102
  // Time after which the moving funds process can be reported as
95
103
  // timed out. It is counted from the moment when the wallet
96
104
  // was requested to move their funds and switched to the MovingFunds
@@ -283,6 +291,7 @@ library BridgeState {
283
291
  event MovingFundsParametersUpdated(
284
292
  uint64 movingFundsTxMaxTotalFee,
285
293
  uint64 movingFundsDustThreshold,
294
+ uint32 movingFundsTimeoutResetDelay,
286
295
  uint32 movingFundsTimeout,
287
296
  uint96 movingFundsTimeoutSlashingAmount,
288
297
  uint256 movingFundsTimeoutNotifierRewardMultiplier,
@@ -471,10 +480,17 @@ library BridgeState {
471
480
  /// funds transaction.
472
481
  /// @param _movingFundsDustThreshold New value of the moving funds dust
473
482
  /// threshold. It is the minimal satoshi amount that makes sense to
474
- // be transferred during the moving funds process. Moving funds
475
- // wallets having their BTC balance below that value can begin
476
- // closing immediately as transferring such a low value may not be
477
- // possible due to BTC network fees.
483
+ /// be transferred during the moving funds process. Moving funds
484
+ /// wallets having their BTC balance below that value can begin
485
+ /// closing immediately as transferring such a low value may not be
486
+ /// possible due to BTC network fees.
487
+ /// @param _movingFundsTimeoutResetDelay New value of the moving funds
488
+ /// timeout reset delay in seconds. It is the time after which the
489
+ /// moving funds timeout can be reset in case the target wallet
490
+ /// commitment cannot be submitted due to a lack of live wallets
491
+ /// in the system. It is counted from the moment when the wallet
492
+ /// was requested to move their funds and switched to the MovingFunds
493
+ /// state or from the moment the timeout was reset the last time.
478
494
  /// @param _movingFundsTimeout New value of the moving funds timeout in
479
495
  /// seconds. It is the time after which the moving funds process can
480
496
  /// be reported as timed out. It is counted from the moment when the
@@ -510,7 +526,9 @@ library BridgeState {
510
526
  /// - Moving funds transaction max total fee must be greater than zero,
511
527
  /// - Moving funds dust threshold must be greater than zero and lower
512
528
  /// than the redemption dust threshold,
513
- /// - Moving funds timeout must be greater than zero,
529
+ /// - Moving funds timeout reset delay must be greater than zero,
530
+ /// - Moving funds timeout must be greater than the moving funds
531
+ /// timeout reset delay,
514
532
  /// - Moving funds timeout notifier reward multiplier must be in the
515
533
  /// range [0, 100],
516
534
  /// - Moved funds sweep transaction max total fee must be greater than zero,
@@ -521,6 +539,7 @@ library BridgeState {
521
539
  Storage storage self,
522
540
  uint64 _movingFundsTxMaxTotalFee,
523
541
  uint64 _movingFundsDustThreshold,
542
+ uint32 _movingFundsTimeoutResetDelay,
524
543
  uint32 _movingFundsTimeout,
525
544
  uint96 _movingFundsTimeoutSlashingAmount,
526
545
  uint256 _movingFundsTimeoutNotifierRewardMultiplier,
@@ -541,8 +560,13 @@ library BridgeState {
541
560
  );
542
561
 
543
562
  require(
544
- _movingFundsTimeout > 0,
545
- "Moving funds timeout must be greater than zero"
563
+ _movingFundsTimeoutResetDelay > 0,
564
+ "Moving funds timeout reset delay must be greater than zero"
565
+ );
566
+
567
+ require(
568
+ _movingFundsTimeout > _movingFundsTimeoutResetDelay,
569
+ "Moving funds timeout must be greater than its reset delay"
546
570
  );
547
571
 
548
572
  require(
@@ -567,6 +591,7 @@ library BridgeState {
567
591
 
568
592
  self.movingFundsTxMaxTotalFee = _movingFundsTxMaxTotalFee;
569
593
  self.movingFundsDustThreshold = _movingFundsDustThreshold;
594
+ self.movingFundsTimeoutResetDelay = _movingFundsTimeoutResetDelay;
570
595
  self.movingFundsTimeout = _movingFundsTimeout;
571
596
  self
572
597
  .movingFundsTimeoutSlashingAmount = _movingFundsTimeoutSlashingAmount;
@@ -582,6 +607,7 @@ library BridgeState {
582
607
  emit MovingFundsParametersUpdated(
583
608
  _movingFundsTxMaxTotalFee,
584
609
  _movingFundsDustThreshold,
610
+ _movingFundsTimeoutResetDelay,
585
611
  _movingFundsTimeout,
586
612
  _movingFundsTimeoutSlashingAmount,
587
613
  _movingFundsTimeoutNotifierRewardMultiplier,
@@ -268,7 +268,8 @@ library MovingFunds {
268
268
  /// - The wallet must be in the MovingFunds state,
269
269
  /// - The target wallets commitment must not be already submitted for
270
270
  /// the given moving funds wallet,
271
- /// - Live wallets count must be zero.
271
+ /// - Live wallets count must be zero,
272
+ /// - The moving funds timeout reset delay must be elapsed.
272
273
  function resetMovingFundsTimeout(
273
274
  BridgeState.Storage storage self,
274
275
  bytes20 walletPubKeyHash
@@ -292,6 +293,14 @@ library MovingFunds {
292
293
 
293
294
  require(self.liveWalletsCount == 0, "Live wallets count must be zero");
294
295
 
296
+ require(
297
+ /* solhint-disable-next-line not-rely-on-time */
298
+ block.timestamp >
299
+ wallet.movingFundsRequestedAt +
300
+ self.movingFundsTimeoutResetDelay,
301
+ "Moving funds timeout cannot be reset yet"
302
+ );
303
+
295
304
  /* solhint-disable-next-line not-rely-on-time */
296
305
  wallet.movingFundsRequestedAt = uint32(block.timestamp);
297
306
 
@@ -608,6 +608,7 @@ library Redemption {
608
608
  // TODO: Check if we can optimize gas costs by adding
609
609
  // `extractValueAt` and `extractHashAt` in `bitcoin-spv-sol`
610
610
  // in order to avoid allocating bytes in memory.
611
+ // https://github.com/keep-network/tbtc-v2/issues/257
611
612
  uint256 outputLength = redemptionTxOutputVector
612
613
  .determineOutputLengthAt(processInfo.outputStartingIndex);
613
614
  bytes memory output = redemptionTxOutputVector.slice(
@@ -2,9 +2,9 @@ import type { HardhatRuntimeEnvironment } from "hardhat/types"
2
2
  import type { DeployFunction } from "hardhat-deploy/types"
3
3
 
4
4
  const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
5
- const { ethers, getNamedAccounts, upgrades, deployments } = hre
5
+ const { ethers, helpers, getNamedAccounts, upgrades, deployments } = hre
6
6
  const { esdm } = await getNamedAccounts()
7
- const { deployer } = await ethers.getNamedSigners()
7
+ const { deployer } = await helpers.signers.getNamedSigners()
8
8
 
9
9
  // TODO: Once a DAO is established we want to switch to ProxyAdminWithDeputy and
10
10
  // use the DAO as the proxy admin owner and ESDM as the deputy. Until then we
package/export.json CHANGED
@@ -15078,6 +15078,11 @@
15078
15078
  "name": "movingFundsDustThreshold",
15079
15079
  "indexed": false
15080
15080
  },
15081
+ {
15082
+ "type": "uint32",
15083
+ "name": "movingFundsTimeoutResetDelay",
15084
+ "indexed": false
15085
+ },
15081
15086
  {
15082
15087
  "type": "uint32",
15083
15088
  "name": "movingFundsTimeout",
@@ -15780,6 +15785,10 @@
15780
15785
  "type": "uint64",
15781
15786
  "name": "movingFundsDustThreshold"
15782
15787
  },
15788
+ {
15789
+ "type": "uint32",
15790
+ "name": "movingFundsTimeoutResetDelay"
15791
+ },
15783
15792
  {
15784
15793
  "type": "uint32",
15785
15794
  "name": "movingFundsTimeout"
@@ -17110,6 +17119,10 @@
17110
17119
  "type": "uint64",
17111
17120
  "name": "movingFundsDustThreshold"
17112
17121
  },
17122
+ {
17123
+ "type": "uint32",
17124
+ "name": "movingFundsTimeoutResetDelay"
17125
+ },
17113
17126
  {
17114
17127
  "type": "uint32",
17115
17128
  "name": "movingFundsTimeout"