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,365 lines 62.1 kB
{ "_format": "hh-sol-artifact-1", "contractName": "Keep3rJobFundableCreditsForTest", "sourceName": "solidity/for-test/peripherals/jobs/Keep3rJobFundableCreditsForTest.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": "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": "InsufficientJobTokenCredits", "type": "error" }, { "inputs": [], "name": "JobDisputed", "type": "error" }, { "inputs": [], "name": "JobTokenCreditsLocked", "type": "error" }, { "inputs": [], "name": "JobUnavailable", "type": "error" }, { "inputs": [], "name": "MinRewardPeriod", "type": "error" }, { "inputs": [], "name": "NoGovernanceZeroAddress", "type": "error" }, { "inputs": [], "name": "OnlyDisputer", "type": "error" }, { "inputs": [], "name": "OnlyGovernance", "type": "error" }, { "inputs": [], "name": "OnlyJobOwner", "type": "error" }, { "inputs": [], "name": "OnlyPendingGovernance", "type": "error" }, { "inputs": [], "name": "OnlyPendingJobOwner", "type": "error" }, { "inputs": [], "name": "OnlySlasher", "type": "error" }, { "inputs": [], "name": "SlasherExistent", "type": "error" }, { "inputs": [], "name": "SlasherUnexistent", "type": "error" }, { "inputs": [], "name": "TokenUnallowed", "type": "error" }, { "inputs": [], "name": "UnbondsLocked", "type": "error" }, { "inputs": [], "name": "UnbondsUnexistent", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "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": 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": true, "internalType": "address", "name": "_job", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "JobOwnershipAssent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_job", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_pendingOwner", "type": "address" } ], "name": "JobOwnershipChange", "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": 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": 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": true, "internalType": "address", "name": "_job", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_token", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_provider", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "TokenCreditAddition", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_job", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_token", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "TokenCreditWithdrawal", "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" }, { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" } ], "name": "acceptJobOwnership", "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": "_job", "type": "address" }, { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "addTokenCreditsToJob", "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": "_job", "type": "address" }, { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "changeJobOwnership", "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": "_job", "type": "address" }, { "internalType": "address", "name": "_token", "type": "address" } ], "name": "isJobToken", "outputs": [ { "internalType": "bool", "name": "_contains", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "jobOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "jobPendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "jobTokenCreditsAddedAt", "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": [], "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": "_job", "type": "address" }, { "internalType": "address", "name": "_jobOwner", "type": "address" } ], "name": "setJob", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" }, { "internalType": "address", "name": "_token", "type": "address" } ], "name": "setJobToken", "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": "_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": "", "type": "address" } ], "name": "slashers", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unbondTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" }, { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "withdrawTokenCreditsFromJob", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "workCompleted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040526203f480601f55621275006020556729a2241af62c000060215562069780602255622cd300602355601e6024553480156200003e57600080fd5b506040516200227d3803806200227d8339810160408190526200006191620001c4565b6001600055838383833380806200008a5760405162b293ed60e81b815260040160405180910390fd5b601780546001600160a01b03199081166001600160a01b0393841617909155601d80548216888416178155601b80548316888516179055601c80548316878516179055601e8054831686851690811782556000818152600e602052604090819020805490951690911790935590549054915163696a437b60e01b81529183166004830152909116915063696a437b9060240160206040518083038186803b1580156200013557600080fd5b505afa1580156200014a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000170919062000221565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055506200024c95505050505050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b60008060008060808587031215620001db57600080fd5b620001e685620001a7565b9350620001f660208601620001a7565b92506200020660408601620001a7565b91506200021660608601620001a7565b905092959194509250565b6000602082840312156200023457600080fd5b815180151581146200024557600080fd5b9392505050565b612021806200025c6000396000f3fe608060405234801561001057600080fd5b506004361061028c5760003560e01c806398e90a0f1161015d578063cb54694d116100c9578063cb54694d14610675578063cd22af1b14610688578063d55995fe146106b3578063ddca3f43146106c6578063e01f857c146106cf578063e326ac43146106e2578063ebbb619414610702578063ec00cdfc14610715578063f0f346b914610728578063f11a1d1a1461073b578063f39c38a01461074e578063f4b5cd3b14610761578063fc253d2b1461077457600080fd5b806398e90a0f146105225780639d5c33d81461054b578063a39744b51461055e578063a7d2e78414610589578063aac6aa9c14610592578063ab033ea9146105a5578063b0103b1a146105b8578063b2392233146105db578063b440027f146105ee578063b7e7734014610619578063b87fcbff1461062c578063c7ae40d01461064f578063cb4be2bb1461066257600080fd5b80635ebe23f0116101fc5780635ebe23f01461042c578063633fb68f1461043557806363f2e2f51461043e57806368a9f19c1461045157806369fe0e2d1461046457806372da828a14610477578063768b5d901461048a5780637b40c913146104935780637c8fce23146104a6578063878c723e146104bb5780638cb22b76146104e45780638fe204dd14610507578063951dc22c1461051a57600080fd5b806307b435c21461029157806315006b82146102cf578063160e1e31146102fa578063168f92e71461030f5780631b44555e1461033a5780631ef94b911461035a57806321040b011461037a578063238efcbc146103a5578063274a8db4146103ad578063575288bf146103e0578063594a3a93146103f357806359a2255e146104065780635aa6e67514610419575b600080fd5b6102bc61029f366004611d16565b601260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6102bc6102dd366004611d16565b601060209081526000928352604080842090915290825290205481565b61030d610308366004611cfb565b61077d565b005b6102bc61031d366004611d16565b600960209081526000928352604080842090915290825290205481565b6102bc610348366004611cfb565b60056020526000908152604090205481565b601b5461036d906001600160a01b031681565b6040516102c69190611e42565b6102bc610388366004611d16565b601360209081526000928352604080842090915290825290205481565b61030d6108e3565b6103d06103bb366004611cfb565b601a6020526000908152604090205460ff1681565b60405190151581526020016102c6565b61030d6103ee366004611d49565b61096f565b61030d610401366004611d16565b610c3b565b61030d610414366004611cfb565b610ce0565b60175461036d906001600160a01b031681565b6102bc601f5481565b6102bc60215481565b6103d061044c366004611d16565b610d92565b61030d61045f366004611cfb565b610dbb565b61030d610472366004611df4565b610e73565b61030d610485366004611cfb565b610ed3565b6102bc60225481565b601e5461036d906001600160a01b031681565b6104ae610f70565b6040516102c69190611e56565b61036d6104c9366004611cfb565b6001602052600090815260409020546001600160a01b031681565b6103d06104f2366004611cfb565b60146020526000908152604090205460ff1681565b61030d610515366004611df4565b610f81565b6104ae610fdf565b61036d610530366004611cfb565b6002602052600090815260409020546001600160a01b031681565b61030d610559366004611cfb565b610feb565b6102bc61056c366004611d16565b600860209081526000928352604080842090915290825290205481565b6102bc60205481565b61030d6105a0366004611cfb565b6110a3565b61030d6105b3366004611cfb565b611157565b6103d06105c6366004611cfb565b60076020526000908152604090205460ff1681565b61030d6105e9366004611df4565b6111cd565b6102bc6105fc366004611d16565b602560209081526000928352604080842090915290825290205481565b61030d610627366004611df4565b61122d565b6103d061063a366004611cfb565b60196020526000908152604090205460ff1681565b601c5461036d906001600160a01b031681565b61030d610670366004611cfb565b61128d565b61030d610683366004611df4565b61132a565b6102bc610696366004611d16565b601160209081526000928352604080842090915290825290205481565b61030d6106c1366004611d85565b6113ae565b6102bc60245481565b61030d6106dd366004611d16565b6115e5565b6102bc6106f0366004611cfb565b60066020526000908152604090205481565b61030d610710366004611df4565b61160c565b61030d610723366004611cfb565b61166c565b61030d610736366004611cfb565b611709565b601d5461036d906001600160a01b031681565b60185461036d906001600160a01b031681565b61030d61076f366004611d16565b6117bd565b6102bc60235481565b6017546001600160a01b031633146107a8576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166107cf5760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038084166001600160a01b031992831681179093556000838152600e6020526040908190208054909316909317909155601d54915163696a437b60e01b815291169063696a437b90610830908490600401611e42565b60206040518083038186803b15801561084857600080fd5b505afa15801561085c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108809190611dd2565b6001600160a01b0382166000908152600f602052604090819020805460ff191692151592909217909155517f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa906108d8908390611e42565b60405180910390a150565b6018546001600160a01b0316331461090e57604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b69161096591611e42565b60405180910390a1565b6002600054141561099b5760405162461bcd60e51b815260040161099290611ed6565b60405180910390fd5b60026000556109ab6015846117f7565b6109c857604051636211d34960e01b815260040160405180910390fd5b601b546001600160a01b03838116911614156109f65760405162822d9760e71b815260040160405180910390fd5b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190610a25903090600401611e42565b60206040518083038186803b158015610a3d57600080fd5b505afa158015610a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a759190611e0d565b9050610a8c6001600160a01b03841633308561181f565b600081846001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610abb9190611e42565b60206040518083038186803b158015610ad357600080fd5b505afa158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0b9190611e0d565b610b159190611f66565b9050600061271060245483610b2a9190611f47565b610b349190611f25565b9050610b408183611f66565b6001600160a01b038088166000908152600960209081526040808320938a1683529290529081208054909190610b77908490611f0d565b90915550506001600160a01b0380871660009081526025602090815260408083208985168085529252909120429055601754610bb4921683611890565b6001600160a01b0386166000908152600c60205260409020610bd690866118c0565b50336001600160a01b0316856001600160a01b0316876001600160a01b03167fec1a37d4a331a5059081e0fb5da1735e7890900cd215a4fb1e9f2779fd7b83eb85604051610c2691815260200190565b60405180910390a45050600160005550505050565b6001600160a01b038281166000908152600160205260409020548391163314610c7757604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b038181166000908152600260205260409020548291163314610d1c5760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6001600160a01b0382166000908152600c60205260408120610db490836117f7565b9392505050565b6017546001600160a01b03163314610de6576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff1615610e205760405163546da66560e11b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19166001179055517f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b906108d8908390611e42565b6017546001600160a01b03163314610e9e576040516354348f0360e01b815260040160405180910390fd5b60248190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d906020016108d8565b6017546001600160a01b03163314610efe576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610f255760405163d92e233d60e01b815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383161790556040517f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b0906108d8908390611e42565b6060610f7c60156118d5565b905090565b6017546001600160a01b03163314610fac576040516354348f0360e01b815260040160405180910390fd5b60208181556040518281527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee291016108d8565b6060610f7c60036118d5565b6017546001600160a01b03163314611016576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff16156110505760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19166001179055517f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f906108d8908390611e42565b6017546001600160a01b031633146110ce576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff16611107576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19169055517f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d025906108d8908390611e42565b6017546001600160a01b03163314611182576040516354348f0360e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383161790556040517fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f906108d8908390611e42565b6017546001600160a01b031633146111f8576040516354348f0360e01b815260040160405180910390fd5b60238190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb69906020016108d8565b6017546001600160a01b03163314611258576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b43906020016108d8565b6017546001600160a01b031633146112b8576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166112df5760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383161790556040517feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae250906108d8908390611e42565b6017546001600160a01b03163314611355576040516354348f0360e01b815260040160405180910390fd5b6201518081101561137957604051633f384aad60e21b815260040160405180910390fd5b60228190556040518181527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d9906020016108d8565b600260005414156113d15760405162461bcd60e51b815260040161099290611ed6565b600260009081556001600160a01b0385811682526001602052604090912054859116331461141257604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b0380861660009081526025602090815260408083209388168352929052205461144490603c90611f0d565b421161146357604051631e0b407560e01b815260040160405180910390fd5b6001600160a01b038086166000908152600960209081526040808320938816835292905220548311156114a95760405163024ae82d60e61b815260040160405180910390fd5b6001600160a01b03851660009081526007602052604090205460ff16156114e35760405163ad2fdf3b60e01b815260040160405180910390fd5b6001600160a01b0380861660009081526009602090815260408083209388168352929052908120805485929061151a908490611f66565b9091555061153490506001600160a01b0385168385611890565b6001600160a01b03808616600090815260096020908152604080832093881683529290522054611582576001600160a01b0385166000908152600c6020526040902061158090856118e2565b505b816001600160a01b0316846001600160a01b0316866001600160a01b03167f53e982dd9ec088d634c74c98fbbc161f808b4b6469a26c657120b9a31cb34bfe866040516115d191815260200190565b60405180910390a450506001600055505050565b6001600160a01b0382166000908152600c6020526040902061160790826118c0565b505050565b6017546001600160a01b03163314611637576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e7906020016108d8565b6017546001600160a01b03163314611697576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166116be5760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383161790556040517f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf906108d8908390611e42565b6017546001600160a01b03163314611734576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff1661176d57604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19169055517f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e906108d8908390611e42565b6117c86015836118c0565b506001600160a01b03918216600090815260016020526040902080546001600160a01b03191691909216179055565b6001600160a01b03811660009081526001830160205260408120541515610db4565b92915050565b6040516001600160a01b038085166024830152831660448201526064810182905261188a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118f7565b50505050565b6040516001600160a01b03831660248201526044810182905261160790849063a9059cbb60e01b90606401611853565b6000610db4836001600160a01b0384166119c9565b60606000610db483611a18565b6000610db4836001600160a01b038416611a74565b600061194c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b679092919063ffffffff16565b805190915015611607578080602001905181019061196a9190611dd2565b6116075760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610992565b6000818152600183016020526040812054611a1057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611819565b506000611819565b606081600001805480602002602001604051908101604052809291908181526020018280548015611a6857602002820191906000526020600020905b815481526020019060010190808311611a54575b50505050509050919050565b60008181526001830160205260408120548015611b5d576000611a98600183611f66565b8554909150600090611aac90600190611f66565b9050818114611b11576000866000018281548110611acc57611acc611fd5565b9060005260206000200154905080876000018481548110611aef57611aef611fd5565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b2257611b22611fbf565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611819565b6000915050611819565b6060611b768484600085611b7e565b949350505050565b606082471015611bdf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610992565b843b611c2d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610992565b600080866001600160a01b03168587604051611c499190611e26565b60006040518083038185875af1925050503d8060008114611c86576040519150601f19603f3d011682016040523d82523d6000602084013e611c8b565b606091505b5091509150611c9b828286611ca6565b979650505050505050565b60608315611cb5575081610db4565b825115611cc55782518084602001fd5b8160405162461bcd60e51b81526004016109929190611ea3565b80356001600160a01b0381168114611cf657600080fd5b919050565b600060208284031215611d0d57600080fd5b610db482611cdf565b60008060408385031215611d2957600080fd5b611d3283611cdf565b9150611d4060208401611cdf565b90509250929050565b600080600060608486031215611d5e57600080fd5b611d6784611cdf565b9250611d7560208501611cdf565b9150604084013590509250925092565b60008060008060808587031215611d9b57600080fd5b611da485611cdf565b9350611db260208601611cdf565b925060408501359150611dc760608601611cdf565b905092959194509250565b600060208284031215611de457600080fd5b81518015158114610db457600080fd5b600060208284031215611e0657600080fd5b5035919050565b600060208284031215611e1f57600080fd5b5051919050565b60008251611e38818460208701611f7d565b9190910192915050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b81811015611e975783516001600160a01b031683529284019291840191600101611e72565b50909695505050505050565b6020815260008251806020840152611ec2816040850160208701611f7d565b601f01601f19169190910160400192915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60008219821115611f2057611f20611fa9565b500190565b600082611f4257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f6157611f61611fa9565b500290565b600082821015611f7857611f78611fa9565b500390565b60005b83811015611f98578181015183820152602001611f80565b8381111561188a5750506000910152565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212200cf8ca9a7d86dd925c1315a9b201506e52382127bc9203bcc3407a48328b417964736f6c63430008070033", "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061028c5760003560e01c806398e90a0f1161015d578063cb54694d116100c9578063cb54694d14610675578063cd22af1b14610688578063d55995fe146106b3578063ddca3f43146106c6578063e01f857c146106cf578063e326ac43146106e2578063ebbb619414610702578063ec00cdfc14610715578063f0f346b914610728578063f11a1d1a1461073b578063f39c38a01461074e578063f4b5cd3b14610761578063fc253d2b1461077457600080fd5b806398e90a0f146105225780639d5c33d81461054b578063a39744b51461055e578063a7d2e78414610589578063aac6aa9c14610592578063ab033ea9146105a5578063b0103b1a146105b8578063b2392233146105db578063b440027f146105ee578063b7e7734014610619578063b87fcbff1461062c578063c7ae40d01461064f578063cb4be2bb1461066257600080fd5b80635ebe23f0116101fc5780635ebe23f01461042c578063633fb68f1461043557806363f2e2f51461043e57806368a9f19c1461045157806369fe0e2d1461046457806372da828a14610477578063768b5d901461048a5780637b40c913146104935780637c8fce23146104a6578063878c723e146104bb5780638cb22b76146104e45780638fe204dd14610507578063951dc22c1461051a57600080fd5b806307b435c21461029157806315006b82146102cf578063160e1e31146102fa578063168f92e71461030f5780631b44555e1461033a5780631ef94b911461035a57806321040b011461037a578063238efcbc146103a5578063274a8db4146103ad578063575288bf146103e0578063594a3a93146103f357806359a2255e146104065780635aa6e67514610419575b600080fd5b6102bc61029f366004611d16565b601260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6102bc6102dd366004611d16565b601060209081526000928352604080842090915290825290205481565b61030d610308366004611cfb565b61077d565b005b6102bc61031d366004611d16565b600960209081526000928352604080842090915290825290205481565b6102bc610348366004611cfb565b60056020526000908152604090205481565b601b5461036d906001600160a01b031681565b6040516102c69190611e42565b6102bc610388366004611d16565b601360209081526000928352604080842090915290825290205481565b61030d6108e3565b6103d06103bb366004611cfb565b601a6020526000908152604090205460ff1681565b60405190151581526020016102c6565b61030d6103ee366004611d49565b61096f565b61030d610401366004611d16565b610c3b565b61030d610414366004611cfb565b610ce0565b60175461036d906001600160a01b031681565b6102bc601f5481565b6102bc60215481565b6103d061044c366004611d16565b610d92565b61030d61045f366004611cfb565b610dbb565b61030d610472366004611df4565b610e73565b61030d610485366004611cfb565b610ed3565b6102bc60225481565b601e5461036d906001600160a01b031681565b6104ae610f70565b6040516102c69190611e56565b61036d6104c9366004611cfb565b6001602052600090815260409020546001600160a01b031681565b6103d06104f2366004611cfb565b60146020526000908152604090205460ff1681565b61030d610515366004611df4565b610f81565b6104ae610fdf565b61036d610530366004611cfb565b6002602052600090815260409020546001600160a01b031681565b61030d610559366004611cfb565b610feb565b6102bc61056c366004611d16565b600860209081526000928352604080842090915290825290205481565b6102bc60205481565b61030d6105a0366004611cfb565b6110a3565b61030d6105b3366004611cfb565b611157565b6103d06105c6366004611cfb565b60076020526000908152604090205460ff1681565b61030d6105e9366004611df4565b6111cd565b6102bc6105fc366004611d16565b602560209081526000928352604080842090915290825290205481565b61030d610627366004611df4565b61122d565b6103d061063a366004611cfb565b60196020526000908152604090205460ff1681565b601c5461036d906001600160a01b031681565b61030d610670366004611cfb565b61128d565b61030d610683366004611df4565b61132a565b6102bc610696366004611d16565b601160209081526000928352604080842090915290825290205481565b61030d6106c1366004611d85565b6113ae565b6102bc60245481565b61030d6106dd366004611d16565b6115e5565b6102bc6106f0366004611cfb565b60066020526000908152604090205481565b61030d610710366004611df4565b61160c565b61030d610723366004611cfb565b61166c565b61030d610736366004611cfb565b611709565b601d5461036d906001600160a01b031681565b60185461036d906001600160a01b031681565b61030d61076f366004611d16565b6117bd565b6102bc60235481565b6017546001600160a01b031633146107a8576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166107cf5760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038084166001600160a01b031992831681179093556000838152600e6020526040908190208054909316909317909155601d54915163696a437b60e01b815291169063696a437b90610830908490600401611e42565b60206040518083038186803b15801561084857600080fd5b505afa15801561085c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108809190611dd2565b6001600160a01b0382166000908152600f602052604090819020805460ff1916921515929092179091