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,391 lines • 63.5 kB
JSON
{
"_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": "BASE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_REWARD_PERIOD_TIME",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"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": "0x60806040526203f480601f55621275006020556729a2241af62c000060215562069780602255622cd300602355601e6024553480156200003e57600080fd5b506040516200235e3803806200235e8339810160408190526200006191620001c4565b6001600055838383833380806200008a5760405162b293ed60e81b815260040160405180910390fd5b601780546001600160a01b03199081166001600160a01b0393841617909155601d80548216888416178155601b80548316888516179055601c80548316878516179055601e8054831686851690811782556000818152600e602052604090819020805490951690911790935590549054915163696a437b60e01b81529183166004830152909116915063696a437b9060240160206040518083038186803b1580156200013557600080fd5b505afa1580156200014a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000170919062000221565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055506200024c95505050505050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b60008060008060808587031215620001db57600080fd5b620001e685620001a7565b9350620001f660208601620001a7565b92506200020660408601620001a7565b91506200021660608601620001a7565b905092959194509250565b6000602082840312156200023457600080fd5b815180151581146200024557600080fd5b9392505050565b612102806200025c6000396000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c806398e90a0f116101b8578063cb54694d11610104578063ec00cdfc116100a2578063f11a1d1a1161007c578063f11a1d1a1461080f578063f39c38a014610822578063f4b5cd3b14610835578063fc253d2b1461084857600080fd5b8063ec00cdfc146107e0578063ec342ad0146107f3578063f0f346b9146107fc57600080fd5b8063ddca3f43116100de578063ddca3f4314610791578063e01f857c1461079a578063e326ac43146107ad578063ebbb6194146107cd57600080fd5b8063cb54694d14610740578063cd22af1b14610753578063d55995fe1461077e57600080fd5b8063b0103b1a11610171578063b7e773401161014b578063b7e77340146106e4578063b87fcbff146106f7578063c7ae40d01461071a578063cb4be2bb1461072d57600080fd5b8063b0103b1a14610683578063b2392233146106a6578063b440027f146106b957600080fd5b806398e90a0f146105ed5780639d5c33d814610616578063a39744b514610629578063a7d2e78414610654578063aac6aa9c1461065d578063ab033ea91461067057600080fd5b80635aa6e67511610292578063768b5d9011610230578063878c723e1161020a578063878c723e146105865780638cb22b76146105af5780638fe204dd146105d2578063951dc22c146105e557600080fd5b8063768b5d90146105555780637b40c9131461055e5780637c8fce231461057157600080fd5b806363f2e2f51161026c57806363f2e2f51461050957806368a9f19c1461051c57806369fe0e2d1461052f57806372da828a1461054257600080fd5b80635aa6e675146104e45780635ebe23f0146104f7578063633fb68f1461050057600080fd5b806321040b01116102ff578063461411bc116102d9578063461411bc146104a1578063575288bf146104ab578063594a3a93146104be57806359a2255e146104d157600080fd5b806321040b011461043b578063238efcbc14610466578063274a8db41461046e57600080fd5b806307b435c21461034757806315006b8214610385578063160e1e31146103b0578063168f92e7146103c55780631b44555e146103f05780631ef94b9114610410575b600080fd5b610372610355366004611e42565b601260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b610372610393366004611e42565b601060209081526000928352604080842090915290825290205481565b6103c36103be366004611e27565b610851565b005b6103726103d3366004611e42565b600960209081526000928352604080842090915290825290205481565b6103726103fe366004611e27565b60056020526000908152604090205481565b601b54610423906001600160a01b031681565b6040516001600160a01b03909116815260200161037c565b610372610449366004611e42565b601360209081526000928352604080842090915290825290205481565b6103c36109ae565b61049161047c366004611e27565b601a6020526000908152604090205460ff1681565b604051901515815260200161037c565b6103726201518081565b6103c36104b9366004611e75565b610a37565b6103c36104cc366004611e42565b610d27565b6103c36104df366004611e27565b610dcc565b601754610423906001600160a01b031681565b610372601f5481565b61037260215481565b610491610517366004611e42565b610e7e565b6103c361052a366004611e27565b610ea7565b6103c361053d366004611f20565b610f60565b6103c3610550366004611e27565b610fc0565b61037260225481565b601e54610423906001600160a01b031681565b610579611060565b60405161037c9190611f6e565b610423610594366004611e27565b6001602052600090815260409020546001600160a01b031681565b6104916105bd366004611e27565b60146020526000908152604090205460ff1681565b6103c36105e0366004611f20565b611071565b6105796110cf565b6104236105fb366004611e27565b6002602052600090815260409020546001600160a01b031681565b6103c3610624366004611e27565b6110db565b610372610637366004611e42565b600860209081526000928352604080842090915290825290205481565b61037260205481565b6103c361066b366004611e27565b611194565b6103c361067e366004611e27565b611249565b610491610691366004611e27565b60076020526000908152604090205460ff1681565b6103c36106b4366004611f20565b6112c2565b6103726106c7366004611e42565b602560209081526000928352604080842090915290825290205481565b6103c36106f2366004611f20565b611322565b610491610705366004611e27565b60196020526000908152604090205460ff1681565b601c54610423906001600160a01b031681565b6103c361073b366004611e27565b611382565b6103c361074e366004611f20565b611422565b610372610761366004611e42565b601160209081526000928352604080842090915290825290205481565b6103c361078c366004611eb1565b6114a6565b61037260245481565b6103c36107a8366004611e42565b61170d565b6103726107bb366004611e27565b60066020526000908152604090205481565b6103c36107db366004611f20565b611734565b6103c36107ee366004611e27565b611794565b61037261271081565b6103c361080a366004611e27565b611834565b601d54610423906001600160a01b031681565b601854610423906001600160a01b031681565b6103c3610843366004611e42565b6118e9565b61037260235481565b6017546001600160a01b0316331461087c576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166108a35760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038381166001600160a01b031992831681179093556000838152600e60205260409081902080549093168417909255601d54915163696a437b60e01b81526004810193909352169063696a437b9060240160206040518083038186803b15801561091757600080fd5b505afa15801561092b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094f9190611efe565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191694151594909417909355519081527f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa91015b60405180910390a150565b6018546001600160a01b031633146109d957604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b69060200160405180910390a1565b60026000541415610a8f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600055610a9f601584611923565b610abc57604051636211d34960e01b815260040160405180910390fd5b601b546001600160a01b0383811691161415610aea5760405162822d9760e71b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015610b2c57600080fd5b505afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b649190611f39565b9050610b7b6001600160a01b03841633308561194b565b6040516370a0823160e01b815230600482015260009082906001600160a01b038616906370a082319060240160206040518083038186803b158015610bbf57600080fd5b505afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190611f39565b610c019190612047565b9050600061271060245483610c169190612028565b610c209190612006565b9050610c2c8183612047565b6001600160a01b038088166000908152600960209081526040808320938a1683529290529081208054909190610c63908490611fee565b90915550506001600160a01b0380871660009081526025602090815260408083208985168085529252909120429055601754610ca09216836119bc565b6001600160a01b0386166000908152600c60205260409020610cc290866119ec565b50336001600160a01b0316856001600160a01b0316876001600160a01b03167fec1a37d4a331a5059081e0fb5da1735e7890900cd215a4fb1e9f2779fd7b83eb85604051610d1291815260200190565b60405180910390a45050600160005550505050565b6001600160a01b038281166000908152600160205260409020548391163314610d6357604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b038181166000908152600260205260409020548291163314610e085760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6001600160a01b0382166000908152600c60205260408120610ea09083611923565b9392505050565b6017546001600160a01b03163314610ed2576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff1615610f0c5760405163546da66560e11b815260040160405180910390fd5b6001600160a01b038116600081815260196020908152604091829020805460ff1916600117905590519182527f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b91016109a3565b6017546001600160a01b03163314610f8b576040516354348f0360e01b815260040160405180910390fd5b60248190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d906020016109a3565b6017546001600160a01b03163314610feb576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166110125760405163d92e233d60e01b815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383169081179091556040519081527f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b0906020016109a3565b606061106c6015611a01565b905090565b6017546001600160a01b0316331461109c576040516354348f0360e01b815260040160405180910390fd5b60208181556040518281527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee291016109a3565b606061106c6003611a01565b6017546001600160a01b03163314611106576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff16156111405760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b0381166000818152601a6020908152604091829020805460ff1916600117905590519182527f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f91016109a3565b6017546001600160a01b031633146111bf576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff166111f8576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b038116600081815260196020908152604091829020805460ff1916905590519182527f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d02591016109a3565b6017546001600160a01b03163314611274576040516354348f0360e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383169081179091556040519081527fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f906020016109a3565b6017546001600160a01b031633146112ed576040516354348f0360e01b815260040160405180910390fd5b60238190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb69906020016109a3565b6017546001600160a01b0316331461134d576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b43906020016109a3565b6017546001600160a01b031633146113ad576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166113d45760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383169081179091556040519081527feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae250906020016109a3565b6017546001600160a01b0316331461144d576040516354348f0360e01b815260040160405180910390fd5b6201518081101561147157604051633f384aad60e21b815260040160405180910390fd5b60228190556040518181527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d9906020016109a3565b600260005414156114f95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a86565b600260009081556001600160a01b0385811682526001602052604090912054859116331461153a57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b0380861660009081526025602090815260408083209388168352929052205461156c90603c90611fee565b421161158b57604051631e0b407560e01b815260040160405180910390fd5b6001600160a01b038086166000908152600960209081526040808320938816835292905220548311156115d15760405163024ae82d60e61b815260040160405180910390fd5b6001600160a01b03851660009081526007602052604090205460ff161561160b5760405163ad2fdf3b60e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290529081208054859290611642908490612047565b9091555061165c90506001600160a01b03851683856119bc565b6001600160a01b038086166000908152600960209081526040808320938816835292905220546116aa576001600160a01b0385166000908152600c602052604090206116a89085611a0e565b505b816001600160a01b0316846001600160a01b0316866001600160a01b03167f53e982dd9ec088d634c74c98fbbc161f808b4b6469a26c657120b9a31cb34bfe866040516116f991815260200190565b60405180910390a450506001600055505050565b6001600160a01b0382166000908152600c6020526040902061172f90826119ec565b505050565b6017546001600160a01b0316331461175f576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e7906020016109a3565b6017546001600160a01b031633146117bf576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166117e65760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf906020016109a3565b6017546001600160a01b0316331461185f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff1661189857604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b0381166000818152601a6020908152604091829020805460ff1916905590519182527f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e91016109a3565b6118f46015836119ec565b506001600160a01b03918216600090815260016020526040902080546001600160a01b03191691909216179055565b6001600160a01b03811660009081526001830160205260408120541515610ea0565b92915050565b6040516001600160a01b03808516602483015283166044820152606481018290526119b69085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611a23565b50505050565b6040516001600160a01b03831660248201526044810182905261172f90849063a9059cbb60e01b9060640161197f565b6000610ea0836001600160a01b038416611af5565b60606000610ea083611b44565b6000610ea0836001600160a01b038416611ba0565b6000611a78826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611c939092919063ffffffff16565b80519091501561172f5780806020019051810190611a969190611efe565b61172f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a86565b6000818152600183016020526040812054611b3c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611945565b506000611945565b606081600001805480602002602001604051908101604052809291908181526020018280548015611b9457602002820191906000526020600020905b815481526020019060010190808311611b80575b50505050509050919050565b60008181526001830160205260408120548015611c89576000611bc4600183612047565b8554909150600090611bd890600190612047565b9050818114611c3d576000866000018281548110611bf857611bf86120b6565b9060005260206000200154905080876000018481548110611c1b57611c1b6120b6565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611c4e57611c4e6120a0565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611945565b6000915050611945565b6060611ca28484600085611caa565b949350505050565b606082471015611d0b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a86565b843b611d595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a86565b600080866001600160a01b03168587604051611d759190611f52565b60006040518083038185875af1925050503d8060008114611db2576040519150601f19603f3d011682016040523d82523d6000602084013e611db7565b606091505b5091509150611dc7828286611dd2565b979650505050505050565b60608315611de1575081610ea0565b825115611df15782518084602001fd5b8160405162461bcd60e51b8152600401610a869190611fbb565b80356001600160a01b0381168114611e2257600080fd5b919050565b600060208284031215611e3957600080fd5b610ea082611e0b565b60008060408385031215611e5557600080fd5b611e5e83611e0b565b9150611e6c60208401611e0b565b90509250929050565b600080600060608486031215611e8a57600080fd5b611e9384611e0b565b9250611ea160208501611e0b565b9150604084013590509250925092565b60008060008060808587031215611ec757600080fd5b611ed085611e0b565b9350611ede60208601611e0b565b925060408501359150611ef360608601611e0b565b905092959194509250565b600060208284031215611f1057600080fd5b81518015158114610ea057600080fd5b600060208284031215611f3257600080fd5b5035919050565b600060208284031215611f4b57600080fd5b5051919050565b60008251611f6481846020870161205e565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015611faf5783516001600160a01b031683529284019291840191600101611f8a565b50909695505050505050565b6020815260008251806020840152611fda81604085016020870161205e565b601f01601f19169190910160400192915050565b600082198211156120015761200161208a565b500190565b60008261202357634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156120425761204261208a565b500290565b6000828210156120595761205961208a565b500390565b60005b83811015612079578181015183820152602001612061565b838111156119b65750506000910152565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122061bb54aafc2c468d9409ee08df251f7f487029582ed5f81423ecde639709c9a064736f6c63430008070033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103425760003560e01c806398e90a0f116101b8578063cb54694d11610104578063ec00cdfc116100a2578063f11a1d1a1161007c578063f11a1d1a1461080f578063f39c38a014610822578063f4b5cd3b14610835578063fc253d2b1461084857600080fd5b8063ec00cdfc146107e0578063ec342ad0146107f3578063f0f346b9146107fc57600080fd5b8063ddca3f43116100de578063ddca3f4314610791578063e01f857c1461079a578063e326ac43146107ad578063ebbb6194146107cd57600080fd5b8063cb54694d14610740578063cd22af1b14610753578063d55995fe1461077e57600080fd5b8063b0103b1a11610171578063b7e773401161014b578063b7e77340146106e4578063b87fcbff146106f7578063c7ae40d01461071a578063cb4be2bb1461072d57600080fd5b8063b0103b1a14610683578063b2392233146106a6578063b440027f146106b957600080fd5b806398e90a0f146105ed5780639d5c33d814610616578063a39744b514610629578063a7d2e78414610654578063aac6aa9c1461065d578063ab033ea91461067057600080fd5b80635aa6e67511610292578063768b5d9011610230578063878c723e1161020a578063878c723e146105865780638cb22b76146105af5780638fe204dd146105d2578063951dc22c146105e557600080fd5b8063768b5d90146105555780637b40c9131461055e5780637c8fce231461057157600080fd5b806363f2e2f51161026c57806363f2e2f51461050957806368a9f19c1461051c57806369fe0e2d1461052f57806372da828a1461054257600080fd5b80635aa6e675146104e45780635ebe23f0146104f7578063633fb68f1461050057600080fd5b806321040b01116102ff578063461411bc116102d9578063461411bc146104a1578063575288bf146104ab578063594a3a93146104be57806359a2255e146104d157600080fd5b806321040b011461043b578063238efcbc14610466578063274a8db41461046e57600080fd5b806307b435c21461034757806315006b8214610385578063160e1e31146103b0578063168f92e7146103c55780631b44555e146103f05780631ef94b9114610410575b600080fd5b610372610355366004611e42565b601260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b610372610393366004611e42565b601060209081526000928352604080842090915290825290205481565b6103c36103be366004611e27565b610851565b005b6103726103d3366004611e42565b600960209081526000928352604080842090915290825290205481565b6103726103fe366004611e27565b60056020526000908152604090205481565b601b54610423906001600160a01b031681565b6040516001600160a01b03909116815260200161037c565b610372610449366004611e42565b601360209081526000928352604080842090915290825290205481565b6103c36109ae565b61049161047c366004611e27565b601a6020526000908152604090205460ff1681565b604051901515815260200161037c565b6103726201518081565b6103c36104b9366004611e75565b610a37565b6103c36104cc366004611e42565b610d27565b6103c36104df366004611e27565b610dcc565b601754610423906001600160a01b031681565b610372601f5481565b61037260215481565b610491610517366004611e42565b610e7e565b6103c361052a366004611e27565b610ea7565b6103c361053d366004611f20565b610f60565b6103c3610550366004611e27565b610fc0565b61037260225481565b601e54610423906001600160a01b031681565b610579611060565b60405161037c9190611f6e565b610423610594366004611e27565b6001602052600090815260409020546001600160a01b031681565b6104916105bd366004611e27565b60146020526000908152604090205460ff1681565b6103c36105e0366004611f20565b611071565b6105796110cf565b6104236105fb366004611e27565b6002602052600090815260409020546001600160a01b031681565b6103c3610624366004611e27565b6110db565b610372610637366004611e42565b600860209081526000928352604080842090915290825290205481565b61037260205481565b6103c361066b366004611e27565b611194565b6103c361067e366004611e27565b611249565b610491610691366004611e27565b60076020526000908152604090205460ff1681565b6103c36106b4366004611f20565b6112c2565b6103726106c7366004611e42565b