UNPKG

@defi-wonderland/keep3r-v2

Version:

The Keep3r Network is a decentralized network for projects that need external devops, and for external teams to find keeper jobs

1,360 lines 66.9 kB
{ "_format": "hh-sol-artifact-1", "contractName": "Keep3rKeeperDisputableForTest", "sourceName": "solidity/for-test/peripherals/keepers/Keep3rKeeperDisputableForTest.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "_kph", "type": "address" }, { "internalType": "address", "name": "_keep3rV1", "type": "address" }, { "internalType": "address", "name": "_keep3rV1Proxy", "type": "address" }, { "internalType": "address", "name": "_kp3rWethPool", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyAJob", "type": "error" }, { "inputs": [], "name": "AlreadyDisputed", "type": "error" }, { "inputs": [], "name": "BondsLocked", "type": "error" }, { "inputs": [], "name": "BondsUnexistent", "type": "error" }, { "inputs": [], "name": "Disputed", "type": "error" }, { "inputs": [], "name": "DisputerExistent", "type": "error" }, { "inputs": [], "name": "DisputerUnexistent", "type": "error" }, { "inputs": [], "name": "JobDisputed", "type": "error" }, { "inputs": [], "name": "JobUnavailable", "type": "error" }, { "inputs": [], "name": "MinRewardPeriod", "type": "error" }, { "inputs": [], "name": "NoGovernanceZeroAddress", "type": "error" }, { "inputs": [], "name": "NotDisputed", "type": "error" }, { "inputs": [], "name": "OnlyDisputer", "type": "error" }, { "inputs": [], "name": "OnlyGovernance", "type": "error" }, { "inputs": [], "name": "OnlyPendingGovernance", "type": "error" }, { "inputs": [], "name": "OnlySlasher", "type": "error" }, { "inputs": [], "name": "SlasherExistent", "type": "error" }, { "inputs": [], "name": "SlasherUnexistent", "type": "error" }, { "inputs": [], "name": "UnbondsLocked", "type": "error" }, { "inputs": [], "name": "UnbondsUnexistent", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_keeper", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_bond", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Activation", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_bondTime", "type": "uint256" } ], "name": "BondTimeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_keeper", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_bonding", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Bonding", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_jobOrKeeper", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "Dispute", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "DisputerAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "DisputerRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_fee", "type": "uint256" } ], "name": "FeeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_pendingGovernance", "type": "address" } ], "name": "GovernanceProposal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_governance", "type": "address" } ], "name": "GovernanceSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_inflationPeriod", "type": "uint256" } ], "name": "InflationPeriodChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_keep3rHelper", "type": "address" } ], "name": "Keep3rHelperChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_keep3rV1", "type": "address" } ], "name": "Keep3rV1Change", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_keep3rV1Proxy", "type": "address" } ], "name": "Keep3rV1ProxyChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_keeper", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "KeeperRevoke", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_keeper", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_slasher", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "KeeperSlash", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_kp3rWethPool", "type": "address" } ], "name": "Kp3rWethPoolChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_liquidityMinimum", "type": "uint256" } ], "name": "LiquidityMinimumChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_jobOrKeeper", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_resolver", "type": "address" } ], "name": "Resolve", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_rewardPeriodTime", "type": "uint256" } ], "name": "RewardPeriodTimeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "SlasherAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "SlasherRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_unbondTime", "type": "uint256" } ], "name": "UnbondTimeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_keeperOrJob", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_unbonding", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Unbonding", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_keeper", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_bond", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Withdrawal", "type": "event" }, { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bonding", "type": "address" } ], "name": "activate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "addDisputer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "addSlasher", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bonding", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "bond", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "bondTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "bonds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "canActivateAfter", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "canWithdrawAfter", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_jobOrKeeper", "type": "address" } ], "name": "dispute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "disputers", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "disputes", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "firstSeen", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "governance", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "hasBonded", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "inflationPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bonded", "type": "address" }, { "internalType": "address", "name": "_keeper", "type": "address" }, { "internalType": "uint256", "name": "_bondAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_unbondAmount", "type": "uint256" } ], "name": "internalSlash", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "isKeeper", "outputs": [ { "internalType": "bool", "name": "_isKeeper", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "jobTokenCredits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "jobs", "outputs": [ { "internalType": "address[]", "name": "_list", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keep3rHelper", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keep3rV1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keep3rV1Proxy", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keepers", "outputs": [ { "internalType": "address[]", "name": "_list", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "kp3rWethPool", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidityMinimum", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "pendingBonds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingGovernance", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "pendingUnbonds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "removeDisputer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "removeSlasher", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_jobOrKeeper", "type": "address" } ], "name": "resolve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keeper", "type": "address" } ], "name": "revoke", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardPeriodTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_bondTime", "type": "uint256" } ], "name": "setBondTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fee", "type": "uint256" } ], "name": "setFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_governance", "type": "address" } ], "name": "setGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_inflationPeriod", "type": "uint256" } ], "name": "setInflationPeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keep3rHelper", "type": "address" } ], "name": "setKeep3rHelper", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keep3rV1", "type": "address" } ], "name": "setKeep3rV1", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keep3rV1Proxy", "type": "address" } ], "name": "setKeep3rV1Proxy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keeper", "type": "address" } ], "name": "setKeeper", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_kp3rWethPool", "type": "address" } ], "name": "setKp3rWethPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_liquidityMinimum", "type": "uint256" } ], "name": "setLiquidityMinimum", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rewardPeriodTime", "type": "uint256" } ], "name": "setRewardPeriodTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_unbondTime", "type": "uint256" } ], "name": "setUnbondTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keeper", "type": "address" }, { "internalType": "address", "name": "_bonded", "type": "address" }, { "internalType": "uint256", "name": "_bondAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_unbondAmount", "type": "uint256" } ], "name": "slash", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "slashers", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bonding", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "unbond", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unbondTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bonding", "type": "address" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "workCompleted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040526203f480601d5562127500601e556729a2241af62c0000601f5562069780602055622cd300602155601e6022553480156200003e57600080fd5b506040516200275d3803806200275d8339810160408190526200006191620001c4565b6001600055838383833380806200008a5760405162b293ed60e81b815260040160405180910390fd5b601580546001600160a01b03199081166001600160a01b0393841617909155601b80548216888416178155601980548316888516179055601a80548316878516179055601c8054831686851690811782556000818152600c602052604090819020805490951690911790935590549054915163696a437b60e01b81529183166004830152909116915063696a437b9060240160206040518083038186803b1580156200013557600080fd5b505afa1580156200014a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000170919062000221565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055506200024c95505050505050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b60008060008060808587031215620001db57600080fd5b620001e685620001a7565b9350620001f660208601620001a7565b92506200020660408601620001a7565b91506200021660608601620001a7565b905092959194509250565b6000602082840312156200023457600080fd5b815180151581146200024557600080fd5b9392505050565b612501806200025c6000396000f3fe608060405234801561001057600080fd5b50600436106102975760003560e01c80638fe204dd11610168578063c20297f0116100d4578063c20297f01461063c578063c7ae40d01461064f578063cb4be2bb14610662578063cb54694d14610675578063cd22af1b14610688578063ddca3f43146106b3578063e326ac43146106bc578063ebbb6194146106dc578063ec00cdfc146106ef578063f0f346b914610702578063f11a1d1a14610715578063f39c38a014610728578063f75f9f7b1461073b578063fc253d2b1461074e57600080fd5b80638fe204dd14610522578063951dc22c146105355780639d5c33d81461053d578063a39744b514610550578063a515366a1461057b578063a5d059ca1461058e578063a7d2e784146105a1578063aac6aa9c146105aa578063ab033ea9146105bd578063b0103b1a146105d0578063b2392233146105f3578063b7e7734014610606578063b87fcbff1461061957600080fd5b80635ebe23f0116102075780635ebe23f014610437578063633fb68f1461044057806368a9f19c1461044957806369fe0e2d1461045c5780636ba42aaa1461046f57806372da828a14610482578063748747e61461049557806374a8f103146104a857806375b9a542146104bb578063768b5d90146104ce5780637b40c913146104d75780637c8fce23146104ea5780638cb22b76146104ff57600080fd5b806307b435c21461029c57806315006b82146102da578063160e1e3114610305578063168f92e71461031a5780631b44555e146103455780631c5a9d9c146103655780631ef94b911461037857806321040b0114610398578063238efcbc146103c3578063274a8db4146103cb57806351cff8d9146103fe57806355ea6c47146104115780635aa6e67514610424575b600080fd5b6102c76102aa36600461223b565b601060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6102c76102e836600461223b565b600e60209081526000928352604080842090915290825290205481565b610318610313366004612220565b610757565b005b6102c761032836600461223b565b600760209081526000928352604080842090915290825290205481565b6102c7610353366004612220565b60036020526000908152604090205481565b610318610373366004612220565b6108bd565b60195461038b906001600160a01b031681565b6040516102d1919061234a565b6102c76103a636600461223b565b601160209081526000928352604080842090915290825290205481565b6103186109f6565b6103ee6103d9366004612220565b60186020526000908152604090205460ff1681565b60405190151581526020016102d1565b61031861040c366004612220565b610a82565b61031861041f366004612220565b610c8b565b60155461038b906001600160a01b031681565b6102c7601d5481565b6102c7601f5481565b610318610457366004612220565b610d3f565b61031861046a3660046122fc565b610df7565b6103ee61047d366004612220565b610e57565b610318610490366004612220565b610e6a565b6103186104a3366004612220565b610f07565b6103186104b6366004612220565b610f16565b6103186104c936600461226e565b611011565b6102c760205481565b601c5461038b906001600160a01b031681565b6104f2611023565b6040516102d19190612377565b6103ee61050d366004612220565b60126020526000908152604090205460ff1681565b6103186105303660046122fc565b611034565b6104f2611094565b61031861054b366004612220565b6110a0565b6102c761055e36600461223b565b600660209081526000928352604080842090915290825290205481565b6103186105893660046122b0565b611158565b61031861059c3660046122b0565b6113b9565b6102c7601e5481565b6103186105b8366004612220565b61148c565b6103186105cb366004612220565b611540565b6103ee6105de366004612220565b60056020526000908152604090205460ff1681565b6103186106013660046122fc565b6115b6565b6103186106143660046122fc565b611616565b6103ee610627366004612220565b60176020526000908152604090205460ff1681565b61031861064a36600461226e565b611676565b601a5461038b906001600160a01b031681565b610318610670366004612220565b611738565b6103186106833660046122fc565b6117d5565b6102c761069636600461223b565b600f60209081526000928352604080842090915290825290205481565b6102c760225481565b6102c76106ca366004612220565b60046020526000908152604090205481565b6103186106ea3660046122fc565b611857565b6103186106fd366004612220565b6118b7565b610318610710366004612220565b611954565b601b5461038b906001600160a01b031681565b60165461038b906001600160a01b031681565b610318610749366004612220565b611a08565b6102c760215481565b6015546001600160a01b03163314610782576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166107a95760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b038084166001600160a01b031992831681179093556000838152600c6020526040908190208054909316909317909155601b54915163696a437b60e01b815291169063696a437b9061080a90849060040161234a565b60206040518083038186803b15801561082257600080fd5b505afa158015610836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085a91906122da565b6001600160a01b0382166000908152600d602052604090819020805460ff191692151592909217909155517f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa906108b290839061234a565b60405180910390a150565b3360009081526005602052604090205460ff16156108ee576040516362e6201d60e01b815260040160405180910390fd5b336000908152600f602090815260408083206001600160a01b038516845290915290205461092f57604051636258f48160e01b815260040160405180910390fd5b336000908152600f602090815260408083206001600160a01b0385168452909152902054421161097257604051630fd0eeef60e11b815260040160405180910390fd5b336000818152600f602090815260408083206001600160a01b03861684529091528120819055906109a39083611ac0565b9050816001600160a01b0316336001600160a01b03167f3673530133b6da67e9854f605b0cfa7bb9798cd33c18036dfc10d8da7c4d4a75836040516109ea91815260200190565b60405180910390a35050565b6016546001600160a01b03163314610a2157604051637ef5703160e11b815260040160405180910390fd5b60168054601580546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b691610a789161234a565b60405180910390a1565b60026000541415610aae5760405162461bcd60e51b8152600401610aa5906123f7565b60405180910390fd5b600260009081553381526011602090815260408083206001600160a01b0385168452909152902054610af35760405163184c088160e21b815260040160405180910390fd5b3360009081526010602090815260408083206001600160a01b03851684529091529020544211610b36576040516327cfdcb760e01b815260040160405180910390fd5b3360009081526005602052604090205460ff1615610b67576040516362e6201d60e01b815260040160405180910390fd5b3360009081526011602090815260408083206001600160a01b0385811680865291909352922054601954909291161415610bfa57601a5460405163140e25ad60e31b8152600481018390526001600160a01b039091169063a0712d6890602401600060405180830381600087803b158015610be157600080fd5b505af1158015610bf5573d6000803e3d6000fd5b505050505b3360008181526011602090815260408083206001600160a01b03871680855290835281842084905584845260108352818420818552909252822091909155610c429183611bd7565b6040518181526001600160a01b0383169033907f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63989060200160405180910390a350506001600055565b3360009081526018602052604090205460ff16610cbb57604051630942721960e31b815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff16610cf4576040516310cec38560e21b815260040160405180910390fd5b6001600160a01b038116600081815260056020526040808220805460ff19169055513392917fe02b2375d8fb4aef3e5bc5d53bffcf70b6f185c5c93e69dcbe8b6cfc58e837e291a350565b6015546001600160a01b03163314610d6a576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090205460ff1615610da45760405163546da66560e11b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090819020805460ff19166001179055517f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b906108b290839061234a565b6015546001600160a01b03163314610e22576040516354348f0360e01b815260040160405180910390fd5b60228190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d906020016108b2565b6000610e64600183611c32565b92915050565b6015546001600160a01b03163314610e95576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610ebc5760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383161790556040517f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b0906108b290839061234a565b610f12600182611c57565b5050565b3360009081526017602052604090205460ff16610f4657604051637e57b1e160e01b815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff16610f7f576040516310cec38560e21b815260040160405180910390fd5b610f8a600182611c6c565b506019546001600160a01b03808316600081815260066020908152604080832094909516808352938152848220549282526011815284822084835290529290922054610fd892849291611c81565b60405133906001600160a01b038316907f038a17b9b553c0c3fc2ed14b957a5d8420a1666fd2efe5c1b3fe5f23eea61bb390600090a350565b61101d84848484611c81565b50505050565b606061102f6013611dd7565b905090565b6015546001600160a01b0316331461105f576040516354348f0360e01b815260040160405180910390fd5b601e8190556040518181527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee2906020016108b2565b606061102f6001611dd7565b6015546001600160a01b031633146110cb576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090205460ff16156111055760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090819020805460ff19166001179055517f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f906108b290839061234a565b6002600054141561117b5760405162461bcd60e51b8152600401610aa5906123f7565b600260009081553381526005602052604090205460ff16156111b0576040516362e6201d60e01b815260040160405180910390fd5b6111bb601333611c32565b156111d95760405163d7229c4360e01b815260040160405180910390fd5b601d546111e6904261242e565b336000908152600f602090815260408083206001600160a01b03871680855292528083209390935591516370a0823160e01b81529091906370a082319061123190309060040161234a565b60206040518083038186803b15801561124957600080fd5b505afa15801561125d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112819190612315565b90506112986001600160a01b038416333085611de4565b6040516370a0823160e01b815281906001600160a01b038516906370a08231906112c690309060040161234a565b60206040518083038186803b1580156112de57600080fd5b505afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190612315565b6113209190612446565b336000908152601260209081526040808320805460ff19166001179055600e82528083206001600160a01b038816845290915281208054929450849290919061136a90849061242e565b90915550506040518281526001600160a01b0384169033907fa7e66869262026842e8d81f5e6806cdc8d846e27c824e2e22f4fe51442771b349060200160405180910390a35050600160005550565b601e546113c6904261242e565b3360008181526010602090815260408083206001600160a01b03881680855290835281842095909555928252600681528282209382529290925281208054839290611412908490612446565b90915550503360009081526011602090815260408083206001600160a01b03861684529091528120805483929061144a90849061242e565b90915550506040518181526001600160a01b0383169033907f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de906020016109ea565b6015546001600160a01b031633146114b7576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090205460ff166114f0576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090819020805460ff19169055517f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d025906108b290839061234a565b6015546001600160a01b0316331461156b576040516354348f0360e01b815260040160405180910390fd5b601680546001600160a01b0319166001600160a01b0383161790556040517fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f906108b290839061234a565b6015546001600160a01b031633146115e1576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb69906020016108b2565b6015546001600160a01b03163314611641576040516354348f0360e01b815260040160405180910390fd5b601d8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b43906020016108b2565b3360009081526017602052604090205460ff166116a657604051637e57b1e160e01b815260040160405180910390fd5b6001600160a01b03841660009081526005602052604090205460ff166116df576040516310cec38560e21b815260040160405180910390fd5b6116eb84848484611c81565b336001600160a01b0385167f10a73de7ab6e9023aa6e2bc23f7abf4dcef591487e7e55f44c00e34fe60d56db611721848661242e565b60405190815260200160405180910390a350505050565b6015546001600160a01b03163314611763576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811661178a5760405163d92e233d60e01b815260040160405180910390fd5b601a80546001600160a01b0319166001600160a01b0383161790556040517feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae250906108b290839061234a565b6015546001600160a01b03163314611800576040516354348f0360e01b815260040160405180910390fd5b6201518081101561182457604051633f384aad60e21b815260040160405180910390fd5b60208181556040518281527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d991016108b2565b6015546001600160a01b03163314611882576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e7906020016108b2565b6015546001600160a01b031633146118e2576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166119095760405163d92e233d60e01b815260040160405180910390fd5b601980546001600160a01b0319166001600160a01b0383161790556040517f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf906108b290839061234a565b6015546001600160a01b0316331461197f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090205460ff166119b857604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090819020805460ff19169055517f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e906108b290839061234a565b3360009081526018602052604090205460ff16611a3857604051630942721960e31b815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615611a72576040516304ee891b60e11b815260040160405180910390fd5b6001600160a01b038116600081815260056020526040808220805460ff19166001179055513392917f070125a1c0f5202217aae14ec399abfaaa13c2fd98a91d43bd3a897dd4751e8091a350565b6001600160a01b038216600090815260046020526040812054611af9576001600160a01b03831660009081526004602052604090204290555b611b04600184611c57565b50506001600160a01b038083166000818152600e6020908152604080832094861680845294825280832080549084905593835260068252808320948352939052918220805491928392611b5890849061242e565b90915550506019546001600160a01b0383811691161415610e6457601954604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b158015611bb957600080fd5b505af1158015611bcd573d6000803e3d6000fd5b5050505092915050565b611c2d8363a9059cbb60e01b8484604051602401611bf692919061235e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611e1c565b505050565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b6000611c50836001600160a01b038416611eee565b6000611c50836001600160a01b038416611f3d565b6019546001600160a01b03848116911614611d59576015546001600160a01b038085169163a9059cbb9116611cb6848661242e565b6040518363ffffffff1660e01b8152600401611cd392919061235e565b602060405180830381600087803b158015611ced57600080fd5b505af1925050508015611d1d575060408051601f3d908101601f19168201909252611d1a918101906122da565b60015b611d57573d808015611d4b576040519150601f19603f3d011682016040523d82523d6000602084013e611d50565b606091505b5050611d59565b505b6001600160a01b03808516600090815260066020908152604080832093871683529290529081208054849290611d90908490612446565b90915550506001600160a01b03808516600090815260116020908152604080832093871683529290529081208054839290611dcc908490612446565b909155505050505050565b60606000611c5083612030565b6040516001600160a01b038085166024830152831660448201526064810182905261101d9085906323b872dd60e01b90608401611bf6565b6000611e71826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661208c9092919063ffffffff16565b805190915015611c2d5780806020019051810190611e8f91906122da565b611c2d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610aa5565b6000818152600183016020526040812054611f3557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e64565b506000610e64565b60008181526001830160205260408120548015612026576000611f61600183612446565b8554909150600090611f7590600190612446565b9050818114611fda576000866000018281548110611f9557611f956124b5565b9060005260206000200154905080876000018481548110611fb857611fb86124b5565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611feb57611feb61249f565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610e64565b6000915050610e64565b60608160000180548060200260200160405190810160405280929190818152602001828054801561208057602002820191906000526020600020905b81548152602001906001019080831161206c575b50505050509050919050565b606061209b84846000856120a3565b949350505050565b6060824710156121045760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610aa5565b843b6121525760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610aa5565b600080866001600160a01b0316858760405161216e919061232e565b60006040518083038185875af1925050503d80600081146121ab576040519150601f19603f3d011682016040523d82523d6000602084013e6121b0565b606091505b50915091506121c08282866121cb565b979650505050505050565b606083156121da575081611c50565b8251156121ea5782518084602001fd5b8160405162461bcd60e51b8152600401610aa591906123c4565b80356001600160a01b038116811461221b57600080fd5b919050565b60006020828403121561223257600080fd5b611c5082612204565b6000806040838503121561224e57600080fd5b61225783612204565b915061226560208401612204565b90509250929050565b6000806000806080858703121561228457600080fd5b61228d85612204565b935061229b60208601612204565b93969395505050506040820135916060013590565b600080604083850312156122c357600080fd5b6122cc83612204565b946020939093013593505050565b6000602082840312156122ec57600080fd5b81518015158114611c5057600080fd5b60006020828403121561230e57600080fd5b5035919050565b60006020828403121561232757600080fd5b5051919050565b6000825161234081846020870161245d565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156123b85783516001600160a01b031683529284019291840191600101612393565b50909695505050505050565b60208152600082518060208401526123e381604085016020870161245d565b601f01601f19169190910160400192915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000821982111561244157612441612489565b500190565b60008282101561245857612458612489565b500390565b60005b83811015612478578181015183820152602001612460565b8381111561101d5750506000910152565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212203f7865a1ea27897ef10d97169338dc1dd5de459c98e175ddd105a80b0444ad0064736f6c63430008070033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102975760003560e01c80638fe204dd11610168578063c20297f0116100d4578063c20297f01461063c578063c7ae40d01461064f578063cb4be2bb14610662578063cb54694d14610675578063cd22af1b14610688578063ddca3f43146106b3578063e326ac43146106bc578063ebbb6194146106dc578063ec00cdfc146106ef578063f0f346b914610702578063f11a1d1a14610715578063f39c38a014610728578063f75f9f7b1461073b578063fc253d2b1461074e57600080fd5b80638fe204dd14610522578063951dc22c146105355780639d5c33d81461053d578063a39744b514610550578063a515366a1461057b578063a5d059ca1461058e578063a7d2e784146105a1578063aac6aa9c146105aa578063ab033ea9146105bd578063b0103b1a146105d0578063b2392233146105f3578063b7e7734014610606578063b87fcbff1461061957600080fd5b80635ebe23f0116102075780635ebe23f014610437578063633fb68f1461044057806368a9f19c1461044957806369fe0e2d1461045c5780636ba42aaa1461046f57806372da828a14610482578063748747e61461049557806374a8f103146104a857806375b9a542146104bb578063768b5d90146104ce5780637b40c913146104d75780637c8fce23146104ea5780638cb22b76146104ff57600080fd5b806307b435c21461029c57806315006b82146102da578063160e1e3114610305578063168f92e71461031a5780631b44555e146103455780631c5a9d9c146103655780631ef94b911461037857806321040b0114610398578063238efcbc146103c3578063274a8db4146103cb57806351cff8d9146103fe57806355ea6c47146104115780635aa6e67514610424575b600080fd5b6102c76102aa36600461223b565b601060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6102c76102e836600461223b565b600e60209081526000928352604080842090915290825290205481565b610318610313366004612220565b610757565b005b6102c761032836600461223b565b600760209081526000928352604080842090915290825290205481565b6102c7610353366004612220565b60036020526000908152604090205481565b610318610373366004612220565b6108bd565b60195461038b906001600160a01b031681565b6040516102d1919061234a565b6102c76103a636600461223b565b601160209081526000928352604080842090915290825290205481565b6103186109f6565b6103ee6103d9366004612220565b60186020526000908152604090205460ff1681565b60405190151581526020016102d1565b61031861040c366004612220565b610a82565b610318