0 txs
0 calls
constructor
constructor(address _owner, address _voter, address _feeDistributor, address _claimer)
functions
balanceOf
viewfunction balanceOf(uint256 tokenId) view returns (uint256)
balanceOfAt
viewfunction balanceOfAt(uint256 tokenId, uint256 _timestamp) view returns (uint256)
balanceOfOwner
viewfunction balanceOfOwner(address _owner) view returns (uint256)
balanceOfOwnerAt
viewfunction balanceOfOwnerAt(address _owner, uint256 _timestamp) view returns (uint256)
claimer
viewfunction claimer() view returns (address)
earned
viewfunction earned(address _owner, address _token) view returns (uint256)
earned
viewfunction earned(uint256 tokenId, address _token) view returns (uint256)
feeDistributor
viewfunction feeDistributor() view returns (address)
firstBribeTimestamp
viewfunction firstBribeTimestamp() view returns (uint256)
getEpochStart
viewfunction getEpochStart() view returns (uint256)
getNextEpochStart
viewfunction getNextEpochStart() view returns (uint256)
isRewardToken
viewfunction isRewardToken(address) view returns (bool)
minter
viewfunction minter() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
PRECISION
viewfunction PRECISION() view returns (uint256)
rewardData
viewfunction rewardData(address, uint256) view returns (uint256 periodFinish, uint256 incentivesAmount, uint256 feesAmount, uint256 rewardsPerEpoch, uint256 lastUpdateTime)
rewardPerToken
viewfunction rewardPerToken(address _token, uint256 _timestmap) view returns (uint256)
rewardsListLength
viewfunction rewardsListLength() view returns (uint256)
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalSupplyAt
viewfunction totalSupplyAt(uint256 _timestamp) view returns (uint256)
userRewardPerTokenPaid
viewfunction userRewardPerTokenPaid(address, address) view returns (uint256)
userTimestamp
viewfunction userTimestamp(address, address) view returns (uint256)
ve
viewfunction ve() view returns (address)
version
viewfunction version() view returns (string)
voter
viewfunction voter() view returns (address)
votingIncentivesFactory
viewfunction votingIncentivesFactory() view returns (address)
WEEK
viewfunction WEEK() view returns (uint256)
addReward
nonpayablefunction addReward(address _token)
addRewards
nonpayablefunction addRewards(address[] _tokens)
deposit
nonpayablefunction deposit(uint256 amount, uint256 tokenId)
emergencyRecoverERC20
nonpayablefunction emergencyRecoverERC20(address tokenAddress, uint256 tokenAmount)
getReward
nonpayablefunction getReward(address[] tokens)
getReward
nonpayablefunction getReward(uint256 tokenId, address[] tokens)
getRewardForAddress
nonpayablefunction getRewardForAddress(address _owner, address[] tokens)
getRewardForOwner
nonpayablefunction getRewardForOwner(uint256 tokenId, address[] tokens)
notifyRewardAmount
nonpayablefunction notifyRewardAmount(address _token, uint256 reward)
notifyRewardAmountForMultipleEpoch
nonpayablefunction notifyRewardAmountForMultipleEpoch(address _token, uint256[] _rewards)
pause
nonpayablefunction pause(bool status)
recoverERC20AndUpdateLastIncetive
nonpayablefunction recoverERC20AndUpdateLastIncetive(address _token, uint256 tokenAmount)
removeReward
nonpayablefunction removeReward(address _token)
removeRewards
nonpayablefunction removeRewards(address[] _tokens)
setClaimer
nonpayablefunction setClaimer(address _claimer)
setMinter
nonpayablefunction setMinter(address _minter)
setOwner
nonpayablefunction setOwner(address _owner)
setVoter
nonpayablefunction setVoter(address _voter)
withdraw
nonpayablefunction withdraw(uint256 amount, uint256 tokenId)
events
Paused
event Paused(address account)
Recovered
event Recovered(address token, uint256 amount)
RewardAdded
event RewardAdded(address rewardToken, uint256 reward, uint256 startTimestamp)
RewardPaid
event RewardPaid(address indexed user, address indexed rewardsToken, uint256 reward)
SetClaimer
event SetClaimer(address indexed claimer)
SetMinter
event SetMinter(address indexed minter)
SetOwner
event SetOwner(address indexed owner)
SetVoter
event SetVoter(address indexed voter)
Staked
event Staked(uint256 indexed tokenId, uint256 amount)
Unpaused
event Unpaused(address account)
Withdrawn
event Withdrawn(uint256 indexed tokenId, uint256 amount)
errors
AddressZero
error AddressZero()
NotClaimer
error NotClaimer()
NotVoter
error NotVoter()
creation bytecode
0x60806040523480156200001157600080fd5b50604051620036b4380380620036b4833981016040819052620000349162000299565b60016000819055805460ff19169055336200006257604051639fabe1c160e01b815260040160405180910390fd5b6001600160a01b0383166200008a57604051639fabe1c160e01b815260040160405180910390fd5b6001600160a01b038416620000b257604051639fabe1c160e01b815260040160405180910390fd5b6001600160a01b038116620000da57604051639fabe1c160e01b815260040160405180910390fd5b6000836001600160a01b0316631f8507166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001419190620002f6565b90506001600160a01b0381166200016b57604051639fabe1c160e01b815260040160405180910390fd5b6000846001600160a01b031663075461726040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d29190620002f6565b90506001600160a01b038116620001fc57604051639fabe1c160e01b815260040160405180910390fd5b600480546001600160a01b03199081166001600160a01b0397881617909155600580543390831617905560098054821693871693909317909255600a80548316918616919091179055600680548216938516939093179092556007805483169484169490941790935560088054909116929091169190911790556200031b565b80516001600160a01b03811681146200029457600080fd5b919050565b60008060008060808587031215620002b057600080fd5b620002bb856200027c565b9350620002cb602086016200027c565b9250620002db604086016200027c565b9150620002eb606086016200027c565b905092959194509250565b6000602082840312156200030957600080fd5b62000314826200027c565b9392505050565b613389806200032b6000396000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c806380e336e4116101a7578063b5fd73f8116100ee578063e2bbb15811610097578063f4359ce511610071578063f4359ce514610778578063f5f8d36514610782578063fca3b5aa1461079557600080fd5b8063e2bbb1581461074a578063e39c08fc1461075d578063e68863961461077057600080fd5b8063cdfb5832116100c8578063cdfb583214610711578063d379be2314610724578063db0ea9841461073757600080fd5b8063b5fd73f8146106c8578063b66503cf146106eb578063c66130d7146106fe57600080fd5b8063a4a3e03511610150578063a7852afa1161012a578063a7852afa1461066e578063aaf5eb6814610681578063ae2055361461069257600080fd5b8063a4a3e03514610640578063a4d5e67c14610648578063a55163131461065b57600080fd5b8063981b24d011610181578063981b24d0146105fa5780639c9b2e211461061a5780639cc7f7081461062d57600080fd5b806380e336e4146105c1578063853c8aeb146105d45780638da5cb5b146105e757600080fd5b806346c96aac1161026b578063613ec91411610214578063731b8f72116101ee578063731b8f72146105705780637bb7bed11461059b5780637fd7d062146105ae57600080fd5b8063613ec9141461052a57806365c5f94a1461053d5780637035ab981461054557600080fd5b806355288eea1161024557806355288eea146104f757806357bc5614146105005780635c975abb1461051357600080fd5b806346c96aac146104885780634bc2a6571461049b57806354fd4d50146104ae57600080fd5b806318160ddd116102cd5780632cd7bfcb116102a75780632cd7bfcb146103f25780633817486214610405578063441a3e701461047557600080fd5b806318160ddd146103b65780631f850716146103cc578063211dc32d146103df57600080fd5b80630ccb4851116102fe5780630ccb48511461037d5780630d43e8ad1461039057806313af4035146103a357600080fd5b80630125bb321461032557806302329a291461033a578063075461721461034d575b600080fd5b610338610333366004612fd0565b6107a8565b005b61033861034836600461300a565b6108e8565b600a54610360906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600554610360906001600160a01b031681565b600654610360906001600160a01b031681565b6103386103b1366004613027565b610967565b6103be610a2b565b604051908152602001610374565b600954610360906001600160a01b031681565b6103be6103ed366004613044565b610aba565b6103386104003660046130c2565b610b78565b61044d610413366004612fd0565b600f602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610374565b610338610483366004613104565b610c60565b600454610360906001600160a01b031681565b6103386104a9366004613027565b610f11565b6104ea6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610374919061314a565b6103be60025481565b6103be61050e366004612fd0565b610fd5565b60015460ff165b6040519015158152602001610374565b6103386105383660046130c2565b610fe8565b6103be6110cb565b6103be610553366004613044565b600b60209081526000928352604080842090915290825290205481565b6103be61057e366004613044565b600c60209081526000928352604080842090915290825290205481565b6103606105a936600461317d565b611157565b6103386105bc3660046130c2565b611181565b6103386105cf366004613196565b611281565b6103be6105e2366004613104565b611457565b600754610360906001600160a01b031681565b6103be61060836600461317d565b6000908152600d602052604090205490565b610338610628366004613027565b6114f5565b6103be61063b36600461317d565b611565565b6103be61167e565b610338610656366004613027565b6116ec565b610338610669366004612fd0565b61175c565b61033861067c3660046131eb565b611985565b6103be69d3c21bcecceda100000081565b6103be6106a0366004612fd0565b6001600160a01b03919091166000908152600e60209081526040808320938352929052205490565b61051a6106d6366004613027565b60106020526000908152604090205460ff1681565b6103386106f9366004612fd0565b611b18565b6103be61070c366004613027565b611c3e565b61033861071f366004613027565b611ce5565b600854610360906001600160a01b031681565b610338610745366004613196565b611e4a565b610338610758366004613104565b611f74565b6103be61076b36600461321e565b612174565b6003546103be565b6103be62093a8081565b6103386107903660046131eb565b6122a4565b6103386107a3366004613027565b612488565b6007546001600160a01b03163314806107cb57506005546001600160a01b031633145b6108145760405162461bcd60e51b81526020600482015260156024820152747065726d697373696f6e2069732064656e6965642160581b60448201526064015b60405180910390fd5b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610858573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087c9190613243565b81111561088857600080fd5b6007546108a2906001600160a01b0384811691168361254c565b604080516001600160a01b0384168152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28910160405180910390a15050565b6007546001600160a01b031633148061090b57506005546001600160a01b031633145b61094f5760405162461bcd60e51b81526020600482015260156024820152747065726d697373696f6e2069732064656e6965642160581b604482015260640161080b565b8061095f5761095c6125dc565b50565b61095c61262e565b6007546001600160a01b031633148061098a57506005546001600160a01b031633145b6109ce5760405162461bcd60e51b81526020600482015260156024820152747065726d697373696f6e2069732064656e6965642160581b604482015260640161080b565b6001600160a01b0381166109e157600080fd5b600780546001600160a01b0319166001600160a01b0383169081179091556040517f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb590600090a250565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663d13996086040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190613243565b6000908152600d602052604090205492915050565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663d13996086040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b349190613243565b6001600160a01b038086166000908152600c60209081526040808320938816835292905290812054919250610b6b83838789612669565b5093505050505b92915050565b6007546001600160a01b0316331480610b9b57506005546001600160a01b031633145b610bdf5760405162461bcd60e51b81526020600482015260156024820152747065726d697373696f6e2069732064656e6965642160581b604482015260640161080b565b80610c195760405162461bcd60e51b815260206004820152600a6024820152690ac927440d8cadccee8d60b31b604482015260640161080b565b60005b81811015610c5b57610c53838383818110610c3957610c3961325c565b9050602002016020810190610c4e9190613027565b6126e3565b600101610c1c565b505050565b610c6861272d565b610c70612786565b600a5460408051631a2732c160e31b815290516000926001600160a01b03169163d13996089160048083019260209291908290030181865afa158015610cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cde9190613243565b6009546040516331a9108f60e11b8152600481018590529192506000916001600160a01b0390911690636352211e90602401602060405180830381865afa158015610d2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d519190613272565b905060008411610da35760405162461bcd60e51b815260206004820152600e60248201527f56493a2077697468647261772030000000000000000000000000000000000000604482015260640161080b565b6004546001600160a01b03163314610dfd5760405162461bcd60e51b815260206004820152600a60248201527f56493a2021766f74657200000000000000000000000000000000000000000000604482015260640161080b565b6001600160a01b0381166000908152600e60209081526040808320858452909152902054841115610e705760405162461bcd60e51b815260206004820152601160248201527f56493a2021757365722062616c616e6365000000000000000000000000000000604482015260640161080b565b6000828152600d602052604081208054869290610e8e9084906132a5565b90915550506001600160a01b0381166000908152600e6020908152604080832085845290915281208054869290610ec69084906132a5565b909155505060405184815283907f0c875c8d391179c5cf7ad8303d268efd50b8beb78b671f85cd54bfb91eb8ef40906020015b60405180910390a25050610f0d6001600055565b5050565b6007546001600160a01b0316331480610f3457506005546001600160a01b031633145b610f785760405162461bcd60e51b81526020600482015260156024820152747065726d697373696f6e2069732064656e6965642160581b604482015260640161080b565b6001600160a01b038116610f8b57600080fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517fc6ff127433b785c51da9ae4088ee184c909b1a55b9afd82ae6c64224d3bc15d290600090a250565b6000610fe183836127db565b9392505050565b6007546001600160a01b031633148061100b57506005546001600160a01b031633145b61104f5760405162461bcd60e51b81526020600482015260156024820152747065726d697373696f6e2069732064656e6965642160581b604482015260640161080b565b806110895760405162461bcd60e51b815260206004820152600a6024820152690ac927440d8cadccee8d60b31b604482015260640161080b565b60005b81811015610c5b576110c38383838181106110a9576110a961325c565b90506020020160208101906110be9190613027565b612849565b60010161108c565b600062093a80600a60009054906101000a90046001600160a01b03166001600160a01b031663d13996086040518163ffffffff1660e01b8152600401602060405180830381865afa158015611124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111489190613243565b61115291906132b8565b905090565b6003818154811061116757600080fd5b6000918252602090912001546001600160a01b0316905081565b61118961272d565b611191612786565b60008033815b848110156112735760008686838181106111b3576111b361325c565b90506020020160208101906111c89190613027565b90506111d483826128e5565b955093508315611240576111f26001600160a01b038216848661254c565b806001600160a01b0316836001600160a01b03167f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e8660405161123791815260200190565b60405180910390a35b6001600160a01b038084166000908152600c60209081526040808320949093168252929092529020849055600101611197565b50505050610f0d6001600055565b61128961272d565b611291612786565b6001600160a01b03831660009081526010602052604090205460ff166112f95760405162461bcd60e51b815260206004820152601960248201527f72657761726420746f6b656e206e6f7420766572696669656400000000000000604482015260640161080b565b600a5460408051631a2732c160e31b815290516000926001600160a01b03169163d13996089160048083019260209291908290030181865afa158015611343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113679190613243565b9050600080835b808310156113e4578585848181106113885761138861325c565b905060200201358261139a91906132b8565b91506113d9878787868181106113b2576113b261325c565b905060200201358562093a806113c891906132cb565b6113d290886132b8565b60006129a4565b60019092019161136e565b600082116114345760405162461bcd60e51b815260206004820152600c60248201527f7a65726f20726577617264730000000000000000000000000000000000000000604482015260640161080b565b6114496001600160a01b038816333085612b22565b50505050610c5b6001600055565b6009546040516331a9108f60e11b81526004810184905260009182916001600160a01b0390911690636352211e90602401602060405180830381865afa1580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c99190613272565b6001600160a01b03166000908152600e6020908152604080832086845290915290205491505092915050565b6007546001600160a01b031633148061151857506005546001600160a01b031633145b61155c5760405162461bcd60e51b81526020600482015260156024820152747065726d697373696f6e2069732064656e6965642160581b604482015260640161080b565b61095c81612849565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663d13996086040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df9190613243565b6009546040516331a9108f60e11b8152600481018690529192506000916001600160a01b0390911690636352211e90602401602060405180830381865afa15801561162e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116529190613272565b6001600160a01b03166000908152600e6020908152604080832094835293905291909120549392505050565b600a5460408051631a2732c160e31b815290516000926001600160a01b03169163d13996089160048083019260209291908290030181865afa1580156116c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111529190613243565b6007546001600160a01b031633148061170f57506005546001600160a01b031633145b6117535760405162461bcd60e51b81526020600482015260156024820152747065726d697373696f6e2069732064656e6965642160581b604482015260640161080b565b61095c816126e3565b6007546001600160a01b031633148061177f57506005546001600160a01b031633145b6117c35760405162461bcd60e51b81526020600482015260156024820152747065726d697373696f6e2069732064656e6965642160581b604482015260640161080b565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182b9190613243565b81111561183757600080fd5b600a5460408051631a2732c160e31b815290516000926001600160a01b03169163d13996089160048083019260209291908290030181865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190613243565b6001600160a01b0384166000908152600f602090815260408083208484529091528120600101805492935084929091906118e09084906132a5565b90915550506001600160a01b0383166000908152600f602090815260408083208484529091528120600301805484929061191b9084906132a5565b90915550506001600160a01b0383166000818152600f6020908152604080832085845282529182902042600490910155815192835282018490527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28910160405180910390a1505050565b61198d61272d565b611995612786565b6008546001600160a01b031633146119c0576040516312aa60cd60e31b815260040160405180910390fd5b6009546040516331a9108f60e11b8152600481018590526000918291829182916001600160a01b0390911690636352211e90602401602060405180830381865afa158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a369190613272565b90505b84821015611449576000868684818110611a5557611a5561325c565b9050602002016020810190611a6a9190613027565b9050611a7682826128e5565b955093508315611ae257611a946001600160a01b038216838661254c565b806001600160a01b0316826001600160a01b03167f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e86604051611ad991815260200190565b60405180910390a35b6001600160a01b038083166000908152600c60209081526040808320949093168252929092529020849055600190910190611a39565b611b2061272d565b611b28612786565b6001600160a01b03821660009081526010602052604090205460ff16611b905760405162461bcd60e51b815260206004820152601960248201527f72657761726420746f6b656e206e6f7420766572696669656400000000000000604482015260640161080b565b600a5460408051631a2732c160e31b815290516000926001600160a01b03169163d13996089160048083019260209291908290030181865afa158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe9190613243565b600654909150611c1e908490849084906001600160a01b031633146129a4565b611c336001600160a01b038416333085612b22565b50610f0d6001600055565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663d13996086040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb89190613243565b6001600160a01b039093166000908152600e60209081526040808320958352949052929092205492915050565b6007546001600160a01b0316331480611d0857506005546001600160a01b031633145b611d4c5760405162461bcd60e51b81526020600482015260156024820152747065726d697373696f6e2069732064656e6965642160581b604482015260640161080b565b6001600160a01b038116611da25760405162461bcd60e51b815260206004820152600960248201527f7a65726f20616464720000000000000000000000000000000000000000000000604482015260640161080b565b6008546001600160a01b0390811690821603611e005760405162461bcd60e51b815260206004820152600960248201527f73616d6520616464720000000000000000000000000000000000000000000000604482015260640161080b565b600880546001600160a01b0319166001600160a01b0383169081179091556040517fdfe91dcad2adcb1ecd18d2e830b469081211d6743c1e2dfa893836431fb7879490600090a250565b611e5261272d565b611e5a612786565b6008546001600160a01b03163314611e85576040516312aa60cd60e31b815260040160405180910390fd5b60008060005b83811015611f67576000858583818110611ea757611ea761325c565b9050602002016020810190611ebc9190613027565b9050611ec887826128e5565b945092508215611f3457611ee66001600160a01b038216888561254c565b806001600160a01b0316876001600160a01b03167f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e85604051611f2b91815260200190565b60405180910390a35b6001600160a01b038088166000908152600c60209081526040808320949093168252929092529020839055600101611e8b565b505050610c5b6001600055565b611f7c61272d565b611f84612786565b60008211611fd45760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015260640161080b565b6004546001600160a01b03163314611fff5760405163c18384c160e01b815260040160405180910390fd5b600a5460408051631a2732c160e31b815290516000926001600160a01b03169163d13996089160048083019260209291908290030181865afa158015612049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206d9190613243565b6009546040516331a9108f60e11b8152600481018590529192506000916001600160a01b0390911690636352211e90602401602060405180830381865afa1580156120bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e09190613272565b905083600d6000848152602001908152602001600020600082825461210591906132b8565b90915550506001600160a01b0381166000908152600e602090815260408083208584529091528120805486929061213d9084906132b8565b909155505060405184815283907f925435fa7e37e5d9555bb18ce0d62bb9627d0846942e58e5291e9a2dded462ed90602001610ef9565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663d13996086040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ee9190613243565b6009546040516331a9108f60e11b8152600481018790529192506000916001600160a01b0390911690636352211e90602401602060405180830381865afa15801561223d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122619190613272565b6001600160a01b038082166000908152600c6020908152604080832093891683529290529081205491925061229884838886612669565b50979650505050505050565b6122ac61272d565b6122b4612786565b60095460405163430c208160e01b8152336004820152602481018590526001600160a01b039091169063430c208190604401602060405180830381865afa158015612303573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232791906132e2565b61233057600080fd5b6009546040516331a9108f60e11b8152600481018590526000918291829182916001600160a01b0390911690636352211e90602401602060405180830381865afa158015612382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a69190613272565b90505b848210156114495760008686848181106123c5576123c561325c565b90506020020160208101906123da9190613027565b90506123e682826128e5565b955093508315612452576124046001600160a01b038216838661254c565b806001600160a01b0316826001600160a01b03167f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e8660405161244991815260200190565b60405180910390a35b6001600160a01b038083166000908152600c602090815260408083209490931682529290925290208490556001909101906123a9565b6007546001600160a01b03163314806124ab57506005546001600160a01b031633145b6124ef5760405162461bcd60e51b81526020600482015260156024820152747065726d697373696f6e2069732064656e6965642160581b604482015260640161080b565b6001600160a01b03811661250257600080fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fcec52196e972044edde8689a1b608e459c5946b7f3e5c8cd3d6d8e126d422e1c90600090a250565b6040516001600160a01b038316602482015260448101829052610c5b90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612b60565b6125e4612c45565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b612636612786565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612611565b60008060008587036126825760008692509250506126da565b6002548610156126925760025495505b60005b60348110156126d3578787146126d3576126b0858789612c97565b6126ba90836132b8565b91506126c962093a80886132b8565b9650600101612695565b5091508490505b94509492505050565b6001600160a01b03811660009081526010602052604090205460ff161561095c576001600160a01b0381166000908152601060205260409020805460ff1916905561095c81612d06565b60026000540361277f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161080b565b6002600055565b60015460ff16156127d95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161080b565b565b6000818152600d602052604081205481036127f857506000610b72565b6000828152600d60209081526040808320546001600160a01b0387168452600f83528184208685529092529091206003015461283f9069d3c21bcecceda1000000906132cb565b610fe191906132ff565b6001600160a01b03811660009081526010602052604090205460ff1615801561287a57506001600160a01b03811615155b1561095c576001600160a01b03166000818152601060205260408120805460ff191660019081179091556003805491820181559091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055565b6000806000600a60009054906101000a90046001600160a01b03166001600160a01b031663d13996086040518163ffffffff1660e01b8152600401602060405180830381865afa15801561293d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129619190613243565b6001600160a01b038087166000908152600c602090815260408083209389168352929052205490915061299682828789612669565b9350935050505b9250929050565b6002546000036129b45760028290555b806129fa576001600160a01b0384166000908152600f60209081526040808320858452909152812060010180548592906129ef9084906132b8565b925050819055612a37565b6001600160a01b0384166000908152600f6020908152604080832085845290915281206002018054859290612a309084906132b8565b9250508190555b506001600160a01b0384166000908152600f6020908152604080832085845290915281206003018054859290612a6e9084906132b8565b90915550506001600160a01b0384166000908152600f602090815260408083208584529091529020426004909101556001612aac62093a80846132b8565b612ab691906132a5565b6001600160a01b0385166000818152600f602090815260408083208784528252918290209390935580519182529181018590529081018390527f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec84749060600160405180910390a150505050565b6040516001600160a01b0380851660248301528316604482015260648101829052612b5a9085906323b872dd60e01b90608401612578565b50505050565b6000612bb5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e149092919063ffffffff16565b805190915015610c5b5780806020019051810190612bd391906132e2565b610c5b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161080b565b60015460ff166127d95760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161080b565b6001600160a01b0383166000908152600e60209081526040808320848452909152812054808203612ccc576000915050610fe1565b6000612cd885856127db565b9050600069d3c21bcecceda1000000612cf184846132cb565b612cfb91906132ff565b9350610fe192505050565b60035460005b81811015610c5b57826001600160a01b031660038281548110612d3157612d3161325c565b6000918252602090912001546001600160a01b031603612e0c57612d566001836132a5565b8114612dd4576003612d696001846132a5565b81548110612d7957612d7961325c565b600091825260209091200154600380546001600160a01b039092169183908110612da557612da561325c565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6003805480612de557612de5613321565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b600101612d0c565b6060612e238484600085612e2b565b949350505050565b606082471015612ea35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161080b565b600080866001600160a01b03168587604051612ebf9190613337565b60006040518083038185875af1925050503d8060008114612efc576040519150601f19603f3d011682016040523d82523d6000602084013e612f01565b606091505b5091509150612f1287838387612f1d565b979650505050505050565b60608315612f8c578251600003612f85576001600160a01b0385163b612f855760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161080b565b5081612e23565b612e238383815115612fa15781518083602001fd5b8060405162461bcd60e51b815260040161080b919061314a565b6001600160a01b038116811461095c57600080fd5b60008060408385031215612fe357600080fd5b8235612fee81612fbb565b946020939093013593505050565b801515811461095c57600080fd5b60006020828403121561301c57600080fd5b8135610fe181612ffc565b60006020828403121561303957600080fd5b8135610fe181612fbb565b6000806040838503121561305757600080fd5b823561306281612fbb565b9150602083013561307281612fbb565b809150509250929050565b60008083601f84011261308f57600080fd5b50813567ffffffffffffffff8111156130a757600080fd5b6020830191508360208260051b850101111561299d57600080fd5b600080602083850312156130d557600080fd5b823567ffffffffffffffff8111156130ec57600080fd5b6130f88582860161307d565b90969095509350505050565b6000806040838503121561311757600080fd5b50508035926020909101359150565b60005b83811015613141578181015183820152602001613129565b50506000910152565b6020815260008251806020840152613169816040850160208701613126565b601f01601f19169190910160400192915050565b60006020828403121561318f57600080fd5b5035919050565b6000806000604084860312156131ab57600080fd5b83356131b681612fbb565b9250602084013567ffffffffffffffff8111156131d257600080fd5b6131de8682870161307d565b9497909650939450505050565b60008060006040848603121561320057600080fd5b83359250602084013567ffffffffffffffff8111156131d257600080fd5b6000806040838503121561323157600080fd5b82359150602083013561307281612fbb565b60006020828403121561325557600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561328457600080fd5b8151610fe181612fbb565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b7257610b7261328f565b80820180821115610b7257610b7261328f565b8082028115828204841417610b7257610b7261328f565b6000602082840312156132f457600080fd5b8151610fe181612ffc565b60008261331c57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fd5b60008251613349818460208701613126565b919091019291505056fea2646970667358221220c1b9cd571e56fd0804500353c94190888534ddde9d2ae97408a87d2814af928364736f6c6343000816003300000000000000000000000082f144accf4779ca8c49928be28fac5fa157d2180000000000000000000000008fbb1ecebb9e9839bc0de00b9c4c585cabdd04620000000000000000000000001ff2ed448802bede3344bb67eea4e206bcd7abec000000000000000000000000d2d64e094d37dd7d7759603fb9ed6b2306d1e5b2