@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,173 lines • 56.1 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "Keep3rKeeperFundableForTest",
"sourceName": "solidity/for-test/peripherals/keepers/Keep3rKeeperFundableForTest.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": "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": "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": 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": 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": 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": "",
"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": "_keeper",
"type": "address"
}
],
"name": "isKeeper",
"outputs": [
{
"internalType": "bool",
"name": "",
"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": [],
"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"
}
],
"name": "setJob",
"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": [
{
"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": "0x60806040526203f480601d5562127500601e556729a2241af62c0000601f5562069780602055622cd300602155601e6022553480156200003e57600080fd5b50604051620020ba380380620020ba8339810160408190526200006191620001c4565b6001600055838383833380806200008a5760405162b293ed60e81b815260040160405180910390fd5b601580546001600160a01b03199081166001600160a01b0393841617909155601b80548216888416178155601980548316888516179055601a80548316878516179055601c8054831686851690811782556000818152600c602052604090819020805490951690911790935590549054915163696a437b60e01b81529183166004830152909116915063696a437b9060240160206040518083038186803b1580156200013557600080fd5b505afa1580156200014a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000170919062000221565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055506200024c95505050505050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b60008060008060808587031215620001db57600080fd5b620001e685620001a7565b9350620001f660208601620001a7565b92506200020660408601620001a7565b91506200021660608601620001a7565b905092959194509250565b6000602082840312156200023457600080fd5b815180151581146200024557600080fd5b9392505050565b611e5e806200025c6000396000f3fe608060405234801561001057600080fd5b50600436106102605760003560e01c80639d5c33d811610147578063c7ae40d0116100be578063c7ae40d0146105cc578063cb4be2bb146105df578063cb54694d146105f2578063cd22af1b14610605578063ddca3f4314610630578063e326ac4314610639578063ebbb619414610659578063ec00cdfc1461066c578063f0f346b91461067f578063f11a1d1a14610692578063f39c38a0146106a5578063fc253d2b146106b857600080fd5b80639d5c33d8146104ba578063a39744b5146104cd578063a515366a146104f8578063a5d059ca1461050b578063a662031b1461051e578063a7d2e78414610531578063aac6aa9c1461053a578063ab033ea91461054d578063b0103b1a14610560578063b239223314610583578063b7e7734014610596578063b87fcbff146105a957600080fd5b80635ebe23f0116101db5780635ebe23f0146103ed578063633fb68f146103f657806368a9f19c146103ff57806369fe0e2d146104125780636ba42aaa1461042557806372da828a14610438578063768b5d901461044b5780637b40c913146104545780637c8fce23146104675780638cb22b761461047c5780638fe204dd1461049f578063951dc22c146104b257600080fd5b806307b435c21461026557806315006b82146102a3578063160e1e31146102ce578063168f92e7146102e35780631b44555e1461030e5780631c5a9d9c1461032e5780631ef94b911461034157806321040b0114610361578063238efcbc1461038c578063274a8db41461039457806351cff8d9146103c75780635aa6e675146103da575b600080fd5b610290610273366004611c1f565b601060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6102906102b1366004611c1f565b600e60209081526000928352604080842090915290825290205481565b6102e16102dc366004611c04565b6106c1565b005b6102906102f1366004611c1f565b600760209081526000928352604080842090915290825290205481565b61029061031c366004611c04565b60036020526000908152604090205481565b6102e161033c366004611c04565b610827565b601954610354906001600160a01b031681565b60405161029a9190611cec565b61029061036f366004611c1f565b601160209081526000928352604080842090915290825290205481565b6102e1610960565b6103b76103a2366004611c04565b60186020526000908152604090205460ff1681565b604051901515815260200161029a565b6102e16103d5366004611c04565b6109ec565b601554610354906001600160a01b031681565b610290601d5481565b610290601f5481565b6102e161040d366004611c04565b610bf5565b6102e1610420366004611c9e565b610cad565b6103b7610433366004611c04565b610d0d565b6102e1610446366004611c04565b610d20565b61029060205481565b601c54610354906001600160a01b031681565b61046f610dbd565b60405161029a9190611d00565b6103b761048a366004611c04565b60126020526000908152604090205460ff1681565b6102e16104ad366004611c9e565b610dce565b61046f610e2e565b6102e16104c8366004611c04565b610e3a565b6102906104db366004611c1f565b600660209081526000928352604080842090915290825290205481565b6102e1610506366004611c52565b610ef2565b6102e1610519366004611c52565b611153565b6102e161052c366004611c04565b611226565b610290601e5481565b6102e1610548366004611c04565b611235565b6102e161055b366004611c04565b6112e9565b6103b761056e366004611c04565b60056020526000908152604090205460ff1681565b6102e1610591366004611c9e565b61135f565b6102e16105a4366004611c9e565b6113bf565b6103b76105b7366004611c04565b60176020526000908152604090205460ff1681565b601a54610354906001600160a01b031681565b6102e16105ed366004611c04565b61141f565b6102e1610600366004611c9e565b6114bc565b610290610613366004611c1f565b600f60209081526000928352604080842090915290825290205481565b61029060225481565b610290610647366004611c04565b60046020526000908152604090205481565b6102e1610667366004611c9e565b61153e565b6102e161067a366004611c04565b61159e565b6102e161068d366004611c04565b61163b565b601b54610354906001600160a01b031681565b601654610354906001600160a01b031681565b61029060215481565b6015546001600160a01b031633146106ec576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166107135760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b038084166001600160a01b031992831681179093556000838152600c6020526040908190208054909316909317909155601b54915163696a437b60e01b815291169063696a437b90610774908490600401611cec565b60206040518083038186803b15801561078c57600080fd5b505afa1580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c49190611c7c565b6001600160a01b0382166000908152600d602052604090819020805460ff191692151592909217909155517f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa9061081c908390611cec565b60405180910390a150565b3360009081526005602052604090205460ff1615610858576040516362e6201d60e01b815260040160405180910390fd5b336000908152600f602090815260408083206001600160a01b038516845290915290205461089957604051636258f48160e01b815260040160405180910390fd5b336000908152600f602090815260408083206001600160a01b038516845290915290205442116108dc57604051630fd0eeef60e11b815260040160405180910390fd5b336000818152600f602090815260408083206001600160a01b038616845290915281208190559061090d90836116ef565b9050816001600160a01b0316336001600160a01b03167f3673530133b6da67e9854f605b0cfa7bb9798cd33c18036dfc10d8da7c4d4a758360405161095491815260200190565b60405180910390a35050565b6016546001600160a01b0316331461098b57604051637ef5703160e11b815260040160405180910390fd5b60168054601580546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b6916109e291611cec565b60405180910390a1565b60026000541415610a185760405162461bcd60e51b8152600401610a0f90611d80565b60405180910390fd5b600260009081553381526011602090815260408083206001600160a01b0385168452909152902054610a5d5760405163184c088160e21b815260040160405180910390fd5b3360009081526010602090815260408083206001600160a01b03851684529091529020544211610aa0576040516327cfdcb760e01b815260040160405180910390fd5b3360009081526005602052604090205460ff1615610ad1576040516362e6201d60e01b815260040160405180910390fd5b3360009081526011602090815260408083206001600160a01b0385811680865291909352922054601954909291161415610b6457601a5460405163140e25ad60e31b8152600481018390526001600160a01b039091169063a0712d6890602401600060405180830381600087803b158015610b4b57600080fd5b505af1158015610b5f573d6000803e3d6000fd5b505050505b3360008181526011602090815260408083206001600160a01b03871680855290835281842084905584845260108352818420818552909252822091909155610bac9183611806565b6040518181526001600160a01b0383169033907f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63989060200160405180910390a350506001600055565b6015546001600160a01b03163314610c20576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090205460ff1615610c5a5760405163546da66560e11b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090819020805460ff19166001179055517f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b9061081c908390611cec565b6015546001600160a01b03163314610cd8576040516354348f0360e01b815260040160405180910390fd5b60228190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d9060200161081c565b6000610d1a60018361186e565b92915050565b6015546001600160a01b03163314610d4b576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610d725760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383161790556040517f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b09061081c908390611cec565b6060610dc96013611893565b905090565b6015546001600160a01b03163314610df9576040516354348f0360e01b815260040160405180910390fd5b601e8190556040518181527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee29060200161081c565b6060610dc96001611893565b6015546001600160a01b03163314610e65576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090205460ff1615610e9f5760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090819020805460ff19166001179055517f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f9061081c908390611cec565b60026000541415610f155760405162461bcd60e51b8152600401610a0f90611d80565b600260009081553381526005602052604090205460ff1615610f4a576040516362e6201d60e01b815260040160405180910390fd5b610f5560133361186e565b15610f735760405163d7229c4360e01b815260040160405180910390fd5b601d54610f809042611db7565b336000908152600f602090815260408083206001600160a01b03871680855292528083209390935591516370a0823160e01b81529091906370a0823190610fcb903090600401611cec565b60206040518083038186803b158015610fe357600080fd5b505afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190611cb7565b90506110326001600160a01b0384163330856118a0565b6040516370a0823160e01b815281906001600160a01b038516906370a0823190611060903090600401611cec565b60206040518083038186803b15801561107857600080fd5b505afa15801561108c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b09190611cb7565b6110ba9190611dcf565b336000908152601260209081526040808320805460ff19166001179055600e82528083206001600160a01b0388168452909152812080549294508492909190611104908490611db7565b90915550506040518281526001600160a01b0384169033907fa7e66869262026842e8d81f5e6806cdc8d846e27c824e2e22f4fe51442771b349060200160405180910390a35050600160005550565b601e546111609042611db7565b3360008181526010602090815260408083206001600160a01b038816808552908352818420959095559282526006815282822093825292909252812080548392906111ac908490611dcf565b90915550503360009081526011602090815260408083206001600160a01b0386168452909152812080548392906111e4908490611db7565b90915550506040518181526001600160a01b0383169033907f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de90602001610954565b6112316013826118de565b5050565b6015546001600160a01b03163314611260576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090205460ff16611299576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090819020805460ff19169055517f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d0259061081c908390611cec565b6015546001600160a01b03163314611314576040516354348f0360e01b815260040160405180910390fd5b601680546001600160a01b0319166001600160a01b0383161790556040517fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f9061081c908390611cec565b6015546001600160a01b0316331461138a576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb699060200161081c565b6015546001600160a01b031633146113ea576040516354348f0360e01b815260040160405180910390fd5b601d8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b439060200161081c565b6015546001600160a01b0316331461144a576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166114715760405163d92e233d60e01b815260040160405180910390fd5b601a80546001600160a01b0319166001600160a01b0383161790556040517feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae2509061081c908390611cec565b6015546001600160a01b031633146114e7576040516354348f0360e01b815260040160405180910390fd5b6201518081101561150b57604051633f384aad60e21b815260040160405180910390fd5b60208181556040518281527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d9910161081c565b6015546001600160a01b03163314611569576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e79060200161081c565b6015546001600160a01b031633146115c9576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166115f05760405163d92e233d60e01b815260040160405180910390fd5b601980546001600160a01b0319166001600160a01b0383161790556040517f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf9061081c908390611cec565b6015546001600160a01b03163314611666576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090205460ff1661169f57604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090819020805460ff19169055517f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e9061081c908390611cec565b6001600160a01b038216600090815260046020526040812054611728576001600160a01b03831660009081526004602052604090204290555b6117336001846118de565b50506001600160a01b038083166000818152600e6020908152604080832094861680845294825280832080549084905593835260068252808320948352939052918220805491928392611787908490611db7565b90915550506019546001600160a01b0383811691161415610d1a57601954604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b1580156117e857600080fd5b505af11580156117fc573d6000803e3d6000fd5b5050505092915050565b6040516001600160a01b03831660248201526044810182905261186990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118f3565b505050565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b6060600061188c836119c5565b6040516001600160a01b03808516602483015283166044820152606481018290526118d89085906323b872dd60e01b90608401611832565b50505050565b600061188c836001600160a01b038416611a21565b6000611948826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a709092919063ffffffff16565b80519091501561186957808060200190518101906119669190611c7c565b6118695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a0f565b606081600001805480602002602001604051908101604052809291908181526020018280548015611a1557602002820191906000526020600020905b815481526020019060010190808311611a01575b50505050509050919050565b6000818152600183016020526040812054611a6857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d1a565b506000610d1a565b6060611a7f8484600085611a87565b949350505050565b606082471015611ae85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a0f565b843b611b365760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a0f565b600080866001600160a01b03168587604051611b529190611cd0565b60006040518083038185875af1925050503d8060008114611b8f576040519150601f19603f3d011682016040523d82523d6000602084013e611b94565b606091505b5091509150611ba4828286611baf565b979650505050505050565b60608315611bbe57508161188c565b825115611bce5782518084602001fd5b8160405162461bcd60e51b8152600401610a0f9190611d4d565b80356001600160a01b0381168114611bff57600080fd5b919050565b600060208284031215611c1657600080fd5b61188c82611be8565b60008060408385031215611c3257600080fd5b611c3b83611be8565b9150611c4960208401611be8565b90509250929050565b60008060408385031215611c6557600080fd5b611c6e83611be8565b946020939093013593505050565b600060208284031215611c8e57600080fd5b8151801515811461188c57600080fd5b600060208284031215611cb057600080fd5b5035919050565b600060208284031215611cc957600080fd5b5051919050565b60008251611ce2818460208701611de6565b9190910192915050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b81811015611d415783516001600160a01b031683529284019291840191600101611d1c565b50909695505050505050565b6020815260008251806020840152611d6c816040850160208701611de6565b601f01601f19169190910160400192915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60008219821115611dca57611dca611e12565b500190565b600082821015611de157611de1611e12565b500390565b60005b83811015611e01578181015183820152602001611de9565b838111156118d85750506000910152565b634e487b7160e01b600052601160045260246000fdfea26469706673582212209c3039ca21025b3350c30ed3a48d59b32e8c69eab69919f6ffaa5effe99a3c1f64736f6c63430008070033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102605760003560e01c80639d5c33d811610147578063c7ae40d0116100be578063c7ae40d0146105cc578063cb4be2bb146105df578063cb54694d146105f2578063cd22af1b14610605578063ddca3f4314610630578063e326ac4314610639578063ebbb619414610659578063ec00cdfc1461066c578063f0f346b91461067f578063f11a1d1a14610692578063f39c38a0146106a5578063fc253d2b146106b857600080fd5b80639d5c33d8146104ba578063a39744b5146104cd578063a515366a146104f8578063a5d059ca1461050b578063a662031b1461051e578063a7d2e78414610531578063aac6aa9c1461053a578063ab033ea91461054d578063b0103b1a14610560578063b239223314610583578063b7e7734014610596578063b87fcbff146105a957600080fd5b80635ebe23f0116101db5780635ebe23f0146103ed578063633fb68f146103f657806368a9f19c146103ff57806369fe0e2d146104125780636ba42aaa1461042557806372da828a14610438578063768b5d901461044b5780637b40c913146104545780637c8fce23146104675780638cb22b761461047c5780638fe204dd1461049f578063951dc22c146104b257600080fd5b806307b435c21461026557806315006b82146102a3578063160e1e31146102ce578063168f92e7146102e35780631b44555e1461030e5780631c5a9d9c1461032e5780631ef94b911461034157806321040b0114610361578063238efcbc1461038c578063274a8db41461039457806351cff8d9146103c75780635aa6e675146103da575b600080fd5b610290610273366004611c1f565b601060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6102906102b1366004611c1f565b600e60209081526000928352604080842090915290825290205481565b6102e16102dc366004611c04565b6106c1565b005b6102906102f1366004611c1f565b600760209081526000928352604080842090915290825290205481565b61029061031c366004611c04565b60036020526000908152604090205481565b6102e161033c366004611c04565b610827565b601954610354906001600160a01b031681565b60405161029a9190611cec565b61029061036f366004611c1f565b601160209081526000928352604080842090915290825290205481565b6102e1610960565b6103b76103a2366004611c04565b60186020526000908152604090205460ff1681565b604051901515815260200161029a565b6102e16103d5366004611c04565b6109ec565b601554610354906001600160a01b031681565b610290601d5481565b610290601f5481565b6102e161040d366004611c04565b610bf5565b6102e1610420366004611c9e565b610cad565b6103b7610433366004611c04565b610d0d565b6102e1610446366004611c04565b610d20565b61029060205481565b601c54610354906001600160a01b031681565b61046f610dbd565b60405161029a9190611d00565b6103b761048a366004611c04565b60126020526000908152604090205460ff1681565b6102e16104ad366004611c9e565b610dce565b61046f610e2e565b6102e16104c8366004611c04565b610e3a565b6102906104db366004611c1f565b600660209081526000928352604080842090915290825290205481565b6102e1610506366004611c52565b610ef2565b6102e1610519366004611c52565b611153565b6102e161052c366004611c04565b611226565b610290601e5481565b6102e1610548366004611c04565b611235565b6102e161055b366004611c04565b6112e9565b6103b761056e366004611c04565b60056020526000908152604090205460ff1681565b6102e1610591366004611c9e565b61135f565b6102e16105a4366004611c9e565b6113bf565b6103b76105b7366004611c04565b60176020526000908152604090205460ff1681565b601a54610354906001600160a01b031681565b6102e16105ed366004611c04565b61141f565b6102e1610600366004611c9e565b6114bc565b610290610613366004611c1f565b600f60209081526000928352604080842090915290825290205481565b61029060225481565b610290610647366004611c04565b60046020526000908152604090205481565b6102e1610667366004611c9e565b61153e565b6102e161067a366004611c04565b61159e565b6102e161068d366004611c04565b61163b565b601b54610354906001600160a01b031681565b601654610354906001600160a01b031681565b61029060215481565b6015546001600160a01b031633146106ec576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166107135760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b038084166001600160a01b031992831681179093556000838152600c6020526040908190208054909316909317909155601b54915163696a437b60e01b815291169063696a437b90610774908490600401611cec565b60206040518083038186803b15801561078c57600080fd5b505afa1580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c49190611c7c565b6001600160a01b0382166000908152600d602052604090819020805460ff191692151592909217909155517f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa9061081c908390611cec565b60405180910390a150565b3360009081526005602052604090205460ff1615610858576040516362e6201d60e01b815260040160405180910390fd5b336000908152600f602090815260408083206001600160a01b038516845290915290205461089957604051636258f48160e01b815260040160405180910390fd5b336000908152600f602090815260408083206001600160a01b038516845290915290205442116108dc57604051630fd0eeef60e11b815260040160405180910390fd5b336000818152600f602090815260408083206001600160a01b038616845290915281208190559061090d90836116ef565b9050816001600160a01b0316336001600160a01b03167f3673530133b6da67e9854f605b0cfa7bb9798cd33c18036dfc10d8da7c4d4a758360405161095491815260200190565b60405180910390a35050565b6016546001600160a01b0316331461098b57604051637ef5703160e11b815260040160405180910390fd5b60168054601580546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b6916109e291611cec565b60405180910390a1565b60026000541415610a185760405162461bcd60e51b8152600401610a0f90611d80565b60405180910390fd5b600260009081553381526011602090815260408083206001600160a01b0385168452909152902054610a5d5760405163184c088160e21b815260040160405180910390fd5b3360009081526010602090815260408083206001600160a01b03851684529091529020544211610aa0576040516327cfdcb760e01b815260040160405180910390fd5b3360009081526005602052604090205460ff1615610ad1576040516362e6201d60e01b815260040160405180910390fd5b3360009081526011602090815260408083206001600160a01b0385811680865291909352922054601954909291161415610b6457601a5460405163140e25ad60e31b8152600481018390526001600160a01b039091169063a0712d6890602401600060405180830381600087803b158015610b4b57600080fd5b505af1158015610b5f573d6000803e3d6000fd5b505050505b3360008181526011602090815260408083206001600160a01b03871680855290835281842084905584845260108352818420818552909252822091909155610bac9183611806565b6040518181526001600160a01b0383169033907f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63989060200160405180910390a350506001600055565b6015546001600160a01b03163314610c20576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090205460ff1615610c5a5760405163546da66560e11b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090819020805460ff19166001179055517f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b9061081c908390611cec565b6015546001600160a01b03163314610cd8576040516354348f0360e01b815260040160405180910390fd5b60228190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d9060200161081c565b6000610d1a60018361186e565b92915050565b6015546001600160a01b03163314610d4b576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610d725760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383161790556040517f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b09061081c908390611cec565b6060610dc96013611893565b905090565b6015546001600160a01b03163314610df9576040516354348f0360e01b815260040160405180910390fd5b601e8190556040518181527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee29060200161081c565b6060610dc96001611893565b6015546001600160a01b03163314610e65576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090205460ff1615610e9f5760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090819020805460ff19166001179055517f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f9061081c908390611cec565b60026000541415610f155760405162461bcd60e51b8152600401610a0f90611d80565b600260009081553381526005602052604090205460ff1615610f4a576040516362e6201d60e01b815260040160405180910390fd5b610f5560133361186e565b15610f735760405163d7229c4360e01b815260040160405180910390fd5b601d54610f809042611db7565b336000908152600f602090815260408083206001600160a01b03871680855292528083209390935591516370a0823160e01b81529091906370a0823190610fcb903090600401611cec565b60206040518083038186803b158015610fe357600080fd5b505afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190611cb7565b90506110326001600160a01b0384163330856118a0565b6040516370a0823160e01b815281906001600160a01b038516906370a0823190611060903090600401611cec565b60206040518083038186803b15801561107857600080fd5b505afa15801561108c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b09190611cb7565b6110ba9190611dcf565b336000908152601260209081526040808320805460ff19166001179055600e82528083206001600160a01b0388168452909152812080549294508492909190611104908490611db7565b90915550506040518281526001600160a01b0384169033907fa7e66869262026842e8d81f5e6806cdc8d846e27c824e2e22f4fe51442771b349060200160405180910390a35050600160005550565b601e546111609042611db7565b3360008181526010602090815260408083206001600160a01b038816808552908352818420959095559282526006815282822093825292909252812080548392906111ac908490611dcf565b90915550503360009081526011602090815260408083206001600160a01b0386168452909152812080548392906111e4908490611db7565b90915550506040518181526001600160a01b0383169033907f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de90602001610954565b6112316013826118de565b5050565b6015546001600160a01b03163314611260576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090205460ff166112995760