0 txs
163.4k calls
constructor
constructor()
functions
allRewarders
viewfunction allRewarders(uint256) view returns (address)
allStakingTokens
viewfunction allStakingTokens(uint256) view returns (address)
calculateShare
viewfunction calculateShare(address rewarder, address user) view returns (uint256)
calculateTotalShare
viewfunction calculateTotalShare(address rewarder) view returns (uint256)
compounder
viewfunction compounder() view returns (address)
dp
viewfunction dp() view returns (address)
dragonPointRewarder
viewfunction dragonPointRewarder() view returns (address)
esHmx
viewfunction esHmx() view returns (address)
getAccumulatedLockedReward
viewfunction getAccumulatedLockedReward(address user, address[] rewards, bool isOnlyClaimAble) view returns (address[], uint256[])
getAllRewarders
viewfunction getAllRewarders() view returns (address[])
getAllStakingTokens
viewfunction getAllStakingTokens() view returns (address[])
getRewarderStakingTokens
viewfunction getRewarderStakingTokens(address rewarder) view returns (address[])
getStakingTokenRewarders
viewfunction getStakingTokenRewarders(address stakingToken) view returns (address[])
getTotalShareInFdxFromAllStakings
viewfunction getTotalShareInFdxFromAllStakings(address user) view returns (uint256)
getUserLockedRewards
viewfunction getUserLockedRewards(address account) view returns (tuple[])
getUserTokenAmount
viewfunction getUserTokenAmount(address stakingToken, address account) view returns (uint256)
isCompounder
viewfunction isCompounder(address compounder) view returns (bool isAllowed)
isRewarder
viewfunction isRewarder(address) view returns (bool)
isStakingLHMX
viewfunction isStakingLHMX(address) view returns (bool)
isStakingToken
viewfunction isStakingToken(address) view returns (bool)
lhmx
viewfunction lhmx() view returns (address)
owner
viewfunction owner() view returns (address)
rewarderStakingTokens
viewfunction rewarderStakingTokens(address, uint256) view returns (address)
stakingLocker
viewfunction stakingLocker() view returns (address)
stakingPaused
viewfunction stakingPaused() view returns (bool)
stakingTokenRewarders
viewfunction stakingTokenRewarders(address, uint256) view returns (address)
stFdxLpMintRewarder
viewfunction stFdxLpMintRewarder() view returns (address)
stFdxLpStaking
viewfunction stFdxLpStaking() view returns (address)
userLockedRewards
viewfunction userLockedRewards(address, uint256) view returns (address account, address reward, uint256 amount, uint256 endRewardLockTimestamp)
userLockedRewardsStartIndex
viewfunction userLockedRewardsStartIndex(address) view returns (uint256)
userTokenAmount
viewfunction userTokenAmount(address, address) view returns (uint256)
vester
viewfunction vester() view returns (address)
addRewarder
nonpayablefunction addRewarder(address newRewarder, address[] newStakingToken)
addStakingToken
nonpayablefunction addStakingToken(address newStakingToken, address[] newRewarders)
claimLockedReward
nonpayablefunction claimLockedReward(address user)
deposit
nonpayablefunction deposit(address account, address token, uint256 amount)
harvest
nonpayablefunction harvest(address[] rewarders)
harvestToCompounder
nonpayablefunction harvestToCompounder(address user, address[] _rewarders)
initialize
nonpayablefunction initialize(address lhmx_, address dp_, address esHmx_, address vester_)
processDragonPointAfterWithdraw
nonpayablefunction processDragonPointAfterWithdraw(address user, uint256 shareBefore, uint256 shareAfter)
processDragonPointBeforeWithdraw
nonpayablefunction processDragonPointBeforeWithdraw(address user)
removeRewarderFoStakingTokenByIndex
nonpayablefunction removeRewarderFoStakingTokenByIndex(uint256 removeRewarderIndex, address stakingToken)
renounceOwnership
nonpayablefunction renounceOwnership()
setAllRewarders
nonpayablefunction setAllRewarders(address[] _allRewarders)
setAllStakingTokens
nonpayablefunction setAllStakingTokens(address[] _allStakingTokens)
setCompounder
nonpayablefunction setCompounder(address _compounder)
setDragonPoint
nonpayablefunction setDragonPoint(address _dp)
setDragonPointRewarder
nonpayablefunction setDragonPointRewarder(address rewarder)
setIsCompounders
nonpayablefunction setIsCompounders(address[] compounders, bool[] isAllowed)
setStakingLocker
nonpayablefunction setStakingLocker(address _stakingLocker, address _tokenWithCooldown)
setStakingPaused
nonpayablefunction setStakingPaused(bool _stakingPaused)
setStFdxLpMintRewarder
nonpayablefunction setStFdxLpMintRewarder(address rewarder)
setStFdxLpStaking
nonpayablefunction setStFdxLpStaking(address _stFdxLpStaking)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
vestEsFdx
nonpayablefunction vestEsFdx(uint256 amount, uint256 duration)
vestEsHmx
nonpayablefunction vestEsHmx(uint256 amount, uint256 duration)
withdraw
nonpayablefunction withdraw(address stakingToken, uint256 amount)
events
Initialized
event Initialized(uint8 version)
LogAddLockedReward
event LogAddLockedReward(address indexed account, address reward, uint256 amount, uint256 endRewardLockTimestamp)
LogAddRewarder
event LogAddRewarder(address newRewarder, address[] newTokens)
LogAddStakingToken
event LogAddStakingToken(address newToken, address[] newRewarders)
LogDeposit
event LogDeposit(address indexed caller, address indexed user, address token, uint256 amount)
LogSetAllRewarders
event LogSetAllRewarders(address[] oldRewarders, address[] newRewarders)
LogSetAllStakingTokens
event LogSetAllStakingTokens(address[] oldStakingTokens, address[] newStakingTokens)
LogSetCompounder
event LogSetCompounder(address oldCompounder, address newCompounder)
LogSetIsCompounder
event LogSetIsCompounder(address compounder, bool isCompounder)
LogSetStakingLocker
event LogSetStakingLocker(address oldStakingLocker, address newStakingLocker)
LogWithdraw
event LogWithdraw(address indexed caller, address token, uint256 amount)
LogWithdrawWithCooldown
event LogWithdrawWithCooldown(address indexed caller, address token, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
FDXStaking_Paused
error FDXStaking_Paused()
HMXStaking_BadDecimals
error HMXStaking_BadDecimals()
HMXStaking_DragonPointWithdrawForbid
error HMXStaking_DragonPointWithdrawForbid()
HMXStaking_InconsistentLength
error HMXStaking_InconsistentLength()
HMXStaking_InsufficientTokenAmount
error HMXStaking_InsufficientTokenAmount()
HMXStaking_InvalidTokenAmount
error HMXStaking_InvalidTokenAmount()
HMXStaking_NotCompounder
error HMXStaking_NotCompounder()
HMXStaking_NotRewarder
error HMXStaking_NotRewarder()
HMXStaking_OnlyLHMXStakingTokenAllowed
error HMXStaking_OnlyLHMXStakingTokenAllowed()
HMXStaking_RemainUnclaimReward
error HMXStaking_RemainUnclaimReward()
HMXStaking_UnknownStakingToken
error HMXStaking_UnknownStakingToken()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61386a80620000f46000396000f3fe608060405234801561001057600080fd5b50600436106102935760003560e01c806309d180751461029857806314f3f657146102ad57806315b31bbb146102c057806316dcae17146102d35780631f1a675d146102fc57806322e03ab314610335578063240c8bf414610355578063245a066e1461038857806328c63104146103ab5780632957c377146103cb57806329da27f2146103de57806335e9c0fc1461041c57806336a8e0971461043d57806340034688146104605780634385195d146104735780634ba45a40146104865780634ff0df291461049957806353e649f7146104ac5780635422e780146104bf5780635578abaf146104d25780635fd9848a146104e55780636a13d34c146104f8578063715018a61461050b5780637266c0e3146105135780638340f5491461052657806383a44192146105395780638c8394f41461054c5780638da5cb5b1461055f5780638e478cab146105675780639334a8411461058a57806393eb049d1461059d578063946b45f7146105b057806396120100146105c35780639650e3b7146105cb5780639d074cc0146105de578063b06cb1fc146105f1578063b0fcc5c014610604578063bbb781cc14610624578063c7803a7114610638578063c89d34601461064b578063c9e0f27e1461065e578063cb852f9414610671578063d2f03d371461065e578063dad5fda314610684578063e00e073214610697578063e39067e1146106aa578063f18c6338146106bd578063f2a9d510146106d0578063f2fde38b146106e3578063f3603cca146106f6578063f3fef3a314610709578063f5bcf0531461071c578063f664f0ff1461072f578063f8c8765e14610742578063fa28bd2914610755578063fa2cc3c01461075d578063fee88cb614610770575b600080fd5b6102ab6102a6366004612fdd565b610783565b005b6102ab6102bb3660046130eb565b610860565b6102ab6102ce366004613146565b610964565b6102e66102e1366004613163565b61098a565b6040516102f3919061317e565b60405180910390f35b61032761030a366004612fdd565b606560209081526000928352604080842090915290825290205481565b6040519081526020016102f3565b610348610343366004613163565b610a2f565b6040516102f39190613232565b610378610363366004613163565b60666020526000908152604090205460ff1681565b60405190151581526020016102f3565b610378610396366004613163565b60766020526000908152604090205460ff1681565b6103be6103b9366004613245565b610aa5565b6040516102f3919061325e565b6102ab6103d9366004613272565b610acf565b6103f16103ec366004613295565b610d9a565b604080516001600160a01b0395861681529490931660208501529183015260608201526080016102f3565b61042f61042a3660046132bf565b610dec565b6040516102f3929190613320565b61037861044b366004613163565b60686020526000908152604090205460ff1681565b6102ab61046e3660046130eb565b610f6d565b6102ab610481366004613163565b611084565b610327610494366004612fdd565b6110ae565b6078546103be906001600160a01b031681565b6102ab6104ba366004613377565b6110db565b6102ab6104cd366004613377565b611134565b6103be6104e0366004613245565b611189565b6075546103be906001600160a01b031681565b610348610506366004613163565b611199565b6102ab61120d565b6102ab6105213660046133ab565b611221565b6102ab61053436600461346e565b61134f565b6102ab610547366004613163565b61135b565b6102ab61055a366004613163565b6114e4565b6103be61150e565b610378610575366004613163565b60676020526000908152604090205460ff1681565b6102ab610598366004613163565b61151d565b6071546103be906001600160a01b031681565b6103276105be366004613163565b611547565b610348611659565b6103be6105d9366004613295565b6116bb565b6072546103be906001600160a01b031681565b6102ab6105ff3660046134aa565b6116f3565b610327610612366004613163565b606c6020526000908152604090205481565b60785461037890600160a01b900460ff1681565b6103be610646366004613295565b611731565b6102ab610659366004613377565b61174d565b6102ab61066c3660046134dd565b61175b565b606d546103be906001600160a01b031681565b6074546103be906001600160a01b031681565b6102ab6106a5366004613163565b611765565b6103276106b8366004613163565b6117d6565b6102ab6106cb366004613163565b6118fa565b6102ab6106de366004613163565b61192d565b6102ab6106f1366004613163565b611957565b6102ab6107043660046130eb565b6119cd565b6102ab610717366004613295565b611a08565b6073546103be906001600160a01b031681565b6077546103be906001600160a01b031681565b6102ab6107503660046134ff565b611a91565b610348611e34565b606e546103be906001600160a01b031681565b61032761077e366004612fdd565b611e94565b61078b611ea7565b6075546040517f99050ed89563dab5a9f99ac926c7d3780b183b901a0fd50b3596cf7e81aacd31916107ca916001600160a01b03909116908590613553565b60405180910390a1607580546001600160a01b0319166001600160a01b0384811691821790925560405163095ea7b360e01b81529183169163095ea7b391610818916000199060040161356d565b6020604051808303816000875af1158015610837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085b9190613586565b505050565b610868611ea7565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ca91906135a3565b60ff166012146108ed57604051631a6368a360e11b815260040160405180910390fd5b805160005b8181101561095e5761091d84848381518110610910576109106135c6565b6020026020010151611f06565b7f1fd51fff8f08d576e50909493de7b68ddab4c9f5b882bcb129598fdc9588494a848460405161094e9291906135dc565b60405180910390a16001016108f2565b50505050565b61096c611ea7565b60788054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b0381166000908152606b60209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610a24576000848152602090819020604080516080810182526004860290920180546001600160a01b0390811684526001808301549091168486015260028201549284019290925260030154606083015290835290920191016109c2565b505050509050919050565b6001600160a01b0381166000908152606a6020908152604091829020805483518184028101840190945280845260609392830182828015610a9957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a7b575b50505050509050919050565b60708181548110610ab557600080fd5b6000918252602090912001546001600160a01b0316905081565b610ad7611ea7565b6001600160a01b0381166000908152606960205260408120805484908110610b0157610b016135c6565b60009182526020808320909101546001600160a01b03858116845260699092526040909220805491909216925090610b3a600183613616565b81548110610b4a57610b4a6135c6565b60009182526020808320909101546001600160a01b03868116845260699092526040909220805491909216919086908110610b8757610b876135c6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152606990915260409020805480610bcc57610bcc613629565b600082815260209020810160001990810180546001600160a01b03191690550190556001819003610c18576001600160a01b0383166000908152606860205260409020805460ff191690555b506001600160a01b0381166000908152606a6020526040812054905b81811015610d93576001600160a01b038381166000908152606a6020526040902080549186169183908110610c6b57610c6b6135c6565b6000918252602090912001546001600160a01b031603610d8b576001600160a01b0383166000908152606a60205260409020610ca8600184613616565b81548110610cb857610cb86135c6565b60009182526020808320909101546001600160a01b038681168452606a9092526040909220805491909216919083908110610cf557610cf56135c6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152606a90915260409020805480610d3a57610d3a613629565b600082815260209020810160001990810180546001600160a01b03191690550190556001829003610d86576001600160a01b0383166000908152606760205260409020805460ff191690555b610d93565b600101610c34565b5050505050565b606b6020528160005260406000208181548110610db657600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831695509116925084565b6001600160a01b0383166000908152606b6020526040812083516060928392916001600160401b03811115610e2357610e23613010565b604051908082528060200260200182016040528015610e4c578160200160208202803683370190505b506001600160a01b0388166000908152606c60205260409020549091505b8254811015610f6157858015610ea2575042838281548110610e8e57610e8e6135c6565b906000526020600020906004020160030154115b610f615760005b8751821015610f5857878181518110610ec457610ec46135c6565b60200260200101516001600160a01b0316848381548110610ee757610ee76135c6565b60009182526020909120600160049092020101546001600160a01b031603610f5057838281548110610f1b57610f1b6135c6565b906000526020600020906004020160020154838281518110610f3f57610f3f6135c6565b602002602001018181525050610f58565b600101610ea9565b50600101610e6a565b50949694955050505050565b610f75611ea7565b805160005b8181101561095e57828181518110610f9457610f946135c6565b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffd91906135a3565b60ff1660121461102057604051631a6368a360e11b815260040160405180910390fd5b611043838281518110611035576110356135c6565b602002602001015185611f06565b7f9f0227eed801aebc847b45b17394f574656b88e61a4ae74e3ccada325fc7ecb884846040516110749291906135dc565b60405180910390a1600101610f7a565b61108c611ea7565b607280546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038083166000908152606560209081526040808320938516835292905220545b92915050565b6110e3611ea7565b7f09e93d1c0fcd1185f1b7ff6cde30be3b32e8c5efce11a855840a5e073007122960708260405161111592919061363f565b60405180910390a18051611130906070906020840190612f47565b5050565b61113c611ea7565b7f861868f6d835ac4dc46671215abc65913e7171e156e62531909be9b8105e2c23606f8260405161116e92919061363f565b60405180910390a1805161113090606f906020840190612f47565b606f8181548110610ab557600080fd5b6001600160a01b038116600090815260696020908152604091829020805483518184028101840190945280845260609392830182828015610a99576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a7b5750505050509050919050565b611215611ea7565b61121f6000612000565b565b611229611ea7565b81518151811461124c5760405163daa7535360e01b815260040160405180910390fd5b60005b8181101561095e57828181518110611269576112696135c6565b602002602001015160766000868481518110611287576112876135c6565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa0314d38ce270042e817a3ba42d57958f6737517da4a930fa462ab25156445e08482815181106112f9576112f96135c6565b6020026020010151848381518110611313576113136135c6565b602002602001015160405161133f9291906001600160a01b039290921682521515602082015260400190565b60405180910390a160010161124f565b61085b33848484612052565b6001600160a01b0381166000908152606b602090815260408083208054606c9093529220545b8181101561095e574283828154811061139c5761139c6135c6565b90600052602060002090600402016003015411156113d4576001600160a01b0384166000908152606c6020526040902081905561095e565b6114628382815481106113e9576113e96135c6565b600091825260209091206004909102015484546001600160a01b039091169085908490811061141a5761141a6135c6565b90600052602060002090600402016002015485848154811061143e5761143e6135c6565b60009182526020909120600160049092020101546001600160a01b0316919061220a565b828181548110611474576114746135c6565b60009182526020822060049091020180546001600160a01b0319908116825560018083018054909216909155600282018390556003909101919091556114ba9083613616565b81036114dc576001600160a01b0384166000908152606c602052604090208290555b600101611381565b6114ec611ea7565b607180546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031690565b611525611ea7565b607780546001600160a01b0319166001600160a01b0392909216919091179055565b6072546000908190611562906001600160a01b031684612260565b607754607854604051637f74465b60e11b81529293506000926001600160a01b039283169263140f403692169063fee88cb6906115a59085908a90600401613553565b602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e691906136a7565b6040518263ffffffff1660e01b815260040161160491815260200190565b602060405180830381865afa158015611621573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164591906136a7565b905061165181836136c0565b949350505050565b606060708054806020026020016040519081016040528092919081815260200182805480156116b157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611693575b5050505050905090565b606a60205281600052604060002081815481106116d757600080fd5b6000918252602090912001546001600160a01b03169150829050565b6078546001600160a01b031633146117265760405162461bcd60e51b815260040161171d906136d3565b60405180910390fd5b61085b838383612362565b606960205281600052604060002081815481106116d757600080fd5b61175833338361257b565b50565b6111308282612691565b61176d611ea7565b606e546040517fe97abd239615891a24b2f6413d269045fc0b00aaeaa38a6113143c8f53bf6f92916117ac916001600160a01b03909116908490613553565b60405180910390a1606e80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152606a602090815260408083208054825181850281018501909352808352849383018282801561183d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161181f575b505050505090506000808251905060005b818110156118f057838181518110611868576118686135c6565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161189b919061325e565b602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc91906136a7565b6118e690846136c0565b925060010161184e565b5090949350505050565b6078546001600160a01b031633146119245760405162461bcd60e51b815260040161171d906136d3565b61175881612774565b611935611ea7565b607880546001600160a01b0319166001600160a01b0392909216919091179055565b61195f611ea7565b6001600160a01b0381166119c45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161171d565b61175881612000565b3360009081526076602052604090205460ff166119fd57604051633d964cab60e21b815260040160405180910390fd5b61113082338361257b565b80600003611a295760405163ca54780f60e01b815260040160405180910390fd5b6071546001600160a01b0390811690831603611a58576040516308cba0bb60e21b815260040160405180910390fd5b611a6133612774565b6000611a6c33611547565b9050611a79833384612871565b6000611a8433611547565b905061095e338383612362565b600054610100900460ff1615808015611ab15750600054600160ff909116105b80611ad25750611ac030612bbc565b158015611ad2575060005460ff166001145b611b355760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161171d565b6000805460ff191660011790558015611b58576000805461ff0019166101001790555b611b60612bcb565b606d80546001600160a01b038088166001600160a01b03199283168117909355607180548883169084161790556073805487831690841617905560748054918616919092161790556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa158015611be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0791906135a3565b50607160009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f91906135a3565b50607360009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf791906135a3565b506074546040516301c8825160e21b81526001600160a01b0390911690630722094490611d2890309060040161325e565b6020604051808303816000875af1158015611d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6b91906136a7565b5060735460745460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392611da4929116906000199060040161356d565b6020604051808303816000875af1158015611dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de79190613586565b508015610d93576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6060606f8054806020026020016040519081016040528092919081815260200182805480156116b1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611693575050505050905090565b6000611ea08383612260565b9392505050565b33611eb061150e565b6001600160a01b03161461121f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161171d565b611f108282612bfa565b611f53576001600160a01b0382811660009081526069602090815260408220805460018101825590835291200180546001600160a01b0319169183169190911790555b611f5d8282612c84565b611fa0576001600160a01b038181166000908152606a602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b038083166000908152606860209081526040808320805460ff19166001179055928416825260679052205460ff16611130576001600160a01b0381166000908152606760205260409020805460ff191660011790555050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607854600160a01b900460ff161561207d576040516376d32acb60e11b815260040160405180910390fd5b6001600160a01b03821660009081526068602052604090205460ff166120b6576040516341d8009b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152606960205260408120905b8154811015612163578181815481106120eb576120eb6135c6565b600091825260209091200154604051630afe546360e21b81526001600160a01b0390911690632bf9518c90612126908890879060040161356d565b600060405180830381600087803b15801561214057600080fd5b505af1158015612154573d6000803e3d6000fd5b505050508060010190506120d0565b506001600160a01b0380841660009081526065602090815260408083209388168352929052908120805484929061219b9084906136c0565b909155506121b690506001600160a01b038416863085612d03565b836001600160a01b0316856001600160a01b03167f74a806d614cb397aefa0c403ef3fd5585636fd7dcd944f1ee93034a1694fd4ea85856040516121fb92919061356d565b60405180910390a35050505050565b61085b8363a9059cbb60e01b848460405160240161222992919061356d565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612d24565b6001600160a01b0382166000908152606a60209081526040808320805482518185028101850190935280835284938301828280156122c757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116122a9575b505050505090506000808251905060005b8181101561235757606560008583815181106122f6576122f66135c6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020548361234d91906136c0565b92506001016122d8565b509095945050505050565b6071546040516370a0823160e01b81526000916001600160a01b0316906370a082319061239390879060040161325e565b602060405180830381865afa1580156123b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d491906136a7565b905060008084116123e65760006123fb565b836123f18484613719565b6123fb9190613730565b905060006124098284613616565b9050801561247d576071546001600160a01b0316639dc29fac8761242d8587613616565b6040518363ffffffff1660e01b815260040161244a92919061356d565b600060405180830381600087803b15801561246457600080fd5b505af1158015612478573d6000803e3d6000fd5b505050505b6071546040516370a0823160e01b81526000916001600160a01b0316906370a08231906124ae908a9060040161325e565b602060405180830381865afa1580156124cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ef91906136a7565b1115612573576071546040516370a0823160e01b815261257391889182916001600160a01b03169081906370a082319061252d90859060040161325e565b602060405180830381865afa15801561254a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256e91906136a7565b612052565b505050505050565b607854600160a01b900460ff16156125a6576040516376d32acb60e11b815260040160405180910390fd5b805160005b81811015610d9357606760008483815181106125c9576125c96135c6565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661260d576040516372b430fd60e11b815260040160405180910390fd5b82818151811061261f5761261f6135c6565b60200260200101516001600160a01b031663cb75a6c286866040518363ffffffff1660e01b8152600401612654929190613553565b600060405180830381600087803b15801561266e57600080fd5b505af1158015612682573d6000803e3d6000fd5b505050508060010190506125ab565b6073546001600160a01b031660009081526065602090815260408083203384529091529020548211806126c2575081155b156126e05760405163ca54780f60e01b815260040160405180910390fd5b6073546126f6906001600160a01b031683611a08565b60735461270e906001600160a01b0316333085612d03565b60745460405162416c7560e91b815233600482015260248101849052604481018390526001600160a01b03909116906382d8ea0090606401600060405180830381600087803b15801561276057600080fd5b505af1158015612573573d6000803e3d6000fd5b6072546040516365bad36160e11b81526001600160a01b039091169063cb75a6c2906127a69084908190600401613553565b600060405180830381600087803b1580156127c057600080fd5b505af11580156127d4573d6000803e3d6000fd5b50506077546040516365bad36160e11b81526001600160a01b03909116925063cb75a6c2915061280a9084908190600401613553565b600060405180830381600087803b15801561282457600080fd5b505af1158015612838573d6000803e3d6000fd5b50506071546001600160a01b03908116600081815260656020908152604080832094881683529390529190912054611758935090915083905b607854600160a01b900460ff161561289c576040516376d32acb60e11b815260040160405180910390fd5b6001600160a01b03831660009081526068602052604090205460ff166128d5576040516341d8009b60e01b815260040160405180910390fd5b6001600160a01b0380841660009081526065602090815260408083209386168352929052205481111561291b576040516338d9ab4f60e21b815260040160405180910390fd5b6001600160a01b038316600090815260696020526040812054905b818110156129e4576001600160a01b0385166000908152606960205260408120805483908110612968576129686135c6565b60009182526020909120015460405163ccad973d60e01b81526001600160a01b039091169150819063ccad973d906129a6908890889060040161356d565b600060405180830381600087803b1580156129c057600080fd5b505af11580156129d4573d6000803e3d6000fd5b5050505081600101915050612936565b506001600160a01b03808516600090815260656020908152604080832093871683529290529081208054849290612a1c908490613616565b90915550506075546001600160a01b031615801590612aac5750607554604051635d5cd56b60e11b81526000916001600160a01b03169063bab9aad690612a6790889060040161325e565b6020604051808303816000875af1158015612a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aaa91906136a7565b115b15612b5f576075546040516307750c9f60e41b81526001600160a01b0390911690637750c9f090612ae590869088908790600401613752565b600060405180830381600087803b158015612aff57600080fd5b505af1158015612b13573d6000803e3d6000fd5b50505050826001600160a01b03167f2fc1f18596034cb2ddb006d08dcf975a7db7a5439e0fe69f180e4916d3f42eeb8584604051612b5292919061356d565b60405180910390a261095e565b612b736001600160a01b038516848461220a565b826001600160a01b03167f9207361cc2a04b9c7a06691df1eb87c6a63957ae88bf01d0d18c81e3d12720998584604051612bae92919061356d565b60405180910390a250505050565b6001600160a01b03163b151590565b600054610100900460ff16612bf25760405162461bcd60e51b815260040161171d90613776565b61121f612df6565b6001600160a01b038216600090815260696020526040812054815b81811015612c79576001600160a01b03858116600090815260696020526040902080549186169183908110612c4c57612c4c6135c6565b6000918252602090912001546001600160a01b031603612c71576001925050506110d5565b600101612c15565b506000949350505050565b6001600160a01b0381166000908152606a6020526040812054815b81811015612c79576001600160a01b038481166000908152606a6020526040902080549187169183908110612cd657612cd66135c6565b6000918252602090912001546001600160a01b031603612cfb576001925050506110d5565b600101612c9f565b61095e846323b872dd60e01b85858560405160240161222993929190613752565b6000612d79826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e269092919063ffffffff16565b80519091501561085b5780806020019051810190612d979190613586565b61085b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161171d565b600054610100900460ff16612e1d5760405162461bcd60e51b815260040161171d90613776565b61121f33612000565b6060611651848460008585600080866001600160a01b03168587604051612e4d91906137e5565b60006040518083038185875af1925050503d8060008114612e8a576040519150601f19603f3d011682016040523d82523d6000602084013e612e8f565b606091505b5091509150612ea087838387612eab565b979650505050505050565b60608315612f18578251600003612f1157612ec585612bbc565b612f115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161171d565b5081611651565b6116518383815115612f2d5781518083602001fd5b8060405162461bcd60e51b815260040161171d9190613801565b828054828255906000526020600020908101928215612f9c579160200282015b82811115612f9c57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612f67565b50612fa8929150612fac565b5090565b5b80821115612fa85760008155600101612fad565b80356001600160a01b0381168114612fd857600080fd5b919050565b60008060408385031215612ff057600080fd5b612ff983612fc1565b915061300760208401612fc1565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561304e5761304e613010565b604052919050565b60006001600160401b0382111561306f5761306f613010565b5060051b60200190565b600082601f83011261308a57600080fd5b8135602061309f61309a83613056565b613026565b82815260059290921b840181019181810190868411156130be57600080fd5b8286015b848110156130e0576130d381612fc1565b83529183019183016130c2565b509695505050505050565b600080604083850312156130fe57600080fd5b61310783612fc1565b915060208301356001600160401b0381111561312257600080fd5b61312e85828601613079565b9150509250929050565b801515811461175857600080fd5b60006020828403121561315857600080fd5b8135611ea081613138565b60006020828403121561317557600080fd5b611ea082612fc1565b602080825282518282018190526000919060409081850190868401855b828110156131e157815180516001600160a01b0390811686528782015116878601528581015186860152606090810151908501526080909301929085019060010161319b565b5091979650505050505050565b600081518084526020808501945080840160005b838110156132275781516001600160a01b031687529582019590820190600101613202565b509495945050505050565b602081526000611ea060208301846131ee565b60006020828403121561325757600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561328557600080fd5b8235915061300760208401612fc1565b600080604083850312156132a857600080fd5b6132b183612fc1565b946020939093013593505050565b6000806000606084860312156132d457600080fd5b6132dd84612fc1565b925060208401356001600160401b038111156132f857600080fd5b61330486828701613079565b925050604084013561331581613138565b809150509250925092565b60408152600061333360408301856131ee565b82810360208481019190915284518083528582019282019060005b8181101561336a5784518352938301939183019160010161334e565b5090979650505050505050565b60006020828403121561338957600080fd5b81356001600160401b0381111561339f57600080fd5b61165184828501613079565b600080604083850312156133be57600080fd5b82356001600160401b03808211156133d557600080fd5b6133e186838701613079565b93506020915081850135818111156133f857600080fd5b85019050601f8101861361340b57600080fd5b803561341961309a82613056565b81815260059190911b8201830190838101908883111561343857600080fd5b928401925b8284101561345f57833561345081613138565b8252928401929084019061343d565b80955050505050509250929050565b60008060006060848603121561348357600080fd5b61348c84612fc1565b925061349a60208501612fc1565b9150604084013590509250925092565b6000806000606084860312156134bf57600080fd5b6134c884612fc1565b95602085013595506040909401359392505050565b600080604083850312156134f057600080fd5b50508035926020909101359150565b6000806000806080858703121561351557600080fd5b61351e85612fc1565b935061352c60208601612fc1565b925061353a60408601612fc1565b915061354860608601612fc1565b905092959194509250565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561359857600080fd5b8151611ea081613138565b6000602082840312156135b557600080fd5b815160ff81168114611ea057600080fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0383168152604060208201819052600090611651908301846131ee565b634e487b7160e01b600052601160045260246000fd5b818103818111156110d5576110d5613600565b634e487b7160e01b600052603160045260246000fd5b6000604082016040835280855480835260608501915086600052602092508260002060005b828110156136895781546001600160a01b031684529284019260019182019101613664565b5050508381038285015261369d81866131ee565b9695505050505050565b6000602082840312156136b957600080fd5b5051919050565b808201808211156110d5576110d5613600565b60208082526026908201527f43616c6c6572206d7573742062652053744664784c705374616b696e6720436f6040820152651b9d1c9858dd60d21b606082015260800190565b80820281158282048414176110d5576110d5613600565b60008261374d57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b838110156137dc5781810151838201526020016137c4565b50506000910152565b600082516137f78184602087016137c1565b9190910192915050565b60208152600082518060208401526138208160408501602087016137c1565b601f01601f1916919091016040019291505056fea264697066735822122007de1fc7a5be03e5a50fe7308dd642246360b996335cce32dbb306fb13905d8c64736f6c63430008120033